@@ -2,6 +2,7 @@ import classNames from 'classnames';
22import toArray from 'rc-util/lib/Children/toArray' ;
33import KeyCode from 'rc-util/lib/KeyCode' ;
44import * as React from 'react' ;
5+ import TextArea , { TextAreaProps } from 'rc-textarea' ;
56import KeywordTrigger from './KeywordTrigger' ;
67import { MentionsContextProvider } from './MentionsContext' ;
78import Option , { OptionProps } from './Option' ;
@@ -16,10 +17,7 @@ import {
1617 validateSearch as defaultValidateSearch ,
1718} from './util' ;
1819
19- type BaseTextareaAttrs = Omit <
20- React . TextareaHTMLAttributes < HTMLTextAreaElement > ,
21- 'prefix' | 'onChange' | 'onSelect'
22- > ;
20+ type BaseTextareaAttrs = Omit < TextAreaProps , 'prefix' | 'onChange' | 'onSelect' > ;
2321
2422export type Placement = 'top' | 'bottom' ;
2523export type Direction = 'ltr' | 'rtl' ;
@@ -74,10 +72,7 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
7472 rows : 1 ,
7573 } ;
7674
77- public static getDerivedStateFromProps (
78- props : MentionsProps ,
79- prevState : MentionsState ,
80- ) {
75+ public static getDerivedStateFromProps ( props : MentionsProps , prevState : MentionsState ) {
8176 const newState : Partial < MentionsState > = { } ;
8277
8378 if ( 'value' in props && props . value !== prevState . value ) {
@@ -120,9 +115,7 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
120115 }
121116 } ;
122117
123- public onChange : React . ChangeEventHandler < HTMLTextAreaElement > = ( {
124- target : { value } ,
125- } ) => {
118+ public onChange : React . ChangeEventHandler < HTMLTextAreaElement > = ( { target : { value } } ) => {
126119 this . triggerChange ( value ) ;
127120 } ;
128121
@@ -173,23 +166,18 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
173166 const { prefix = '' , onSearch, validateSearch } = this . props ;
174167 const target = event . target as HTMLTextAreaElement ;
175168 const selectionStartText = getBeforeSelectionText ( target ) ;
176- const {
177- location : measureIndex ,
178- prefix : measurePrefix ,
179- } = getLastMeasureIndex ( selectionStartText , prefix ) ;
169+ const { location : measureIndex , prefix : measurePrefix } = getLastMeasureIndex (
170+ selectionStartText ,
171+ prefix ,
172+ ) ;
180173
181174 // Skip if match the white key list
182- if (
183- [ KeyCode . ESC , KeyCode . UP , KeyCode . DOWN , KeyCode . ENTER ] . indexOf ( which ) !==
184- - 1
185- ) {
175+ if ( [ KeyCode . ESC , KeyCode . UP , KeyCode . DOWN , KeyCode . ENTER ] . indexOf ( which ) !== - 1 ) {
186176 return ;
187177 }
188178
189179 if ( measureIndex !== - 1 ) {
190- const measureText = selectionStartText . slice (
191- measureIndex + measurePrefix . length ,
192- ) ;
180+ const measureText = selectionStartText . slice ( measureIndex + measurePrefix . length ) ;
193181 const validateMeasure : boolean = validateSearch ( measureText , this . props ) ;
194182 const matchOption = ! ! this . getOptions ( measureText ) . length ;
195183
@@ -284,8 +272,8 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
284272 } ) ;
285273 } ;
286274
287- public setTextAreaRef = ( element : HTMLTextAreaElement ) => {
288- this . textarea = element ;
275+ public setTextAreaRef = ( element : TextArea ) => {
276+ this . textarea = element ?. resizableTextArea ?. textArea ;
289277 } ;
290278
291279 public setMeasureRef = ( element : HTMLDivElement ) => {
@@ -307,11 +295,7 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
307295 return list ;
308296 } ;
309297
310- public startMeasure (
311- measureText : string ,
312- measurePrefix : string ,
313- measureLocation : number ,
314- ) {
298+ public startMeasure ( measureText : string , measurePrefix : string , measureLocation : number ) {
315299 this . setState ( {
316300 measuring : true ,
317301 measureText,
@@ -341,13 +325,7 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
341325 }
342326
343327 public render ( ) {
344- const {
345- value,
346- measureLocation,
347- measurePrefix,
348- measuring,
349- activeIndex,
350- } = this . state ;
328+ const { value, measureLocation, measurePrefix, measuring, activeIndex } = this . state ;
351329 const {
352330 prefixCls,
353331 placement,
@@ -378,7 +356,7 @@ class Mentions extends React.Component<MentionsProps, MentionsState> {
378356
379357 return (
380358 < div className = { classNames ( prefixCls , className ) } style = { style } >
381- < textarea
359+ < TextArea
382360 autoFocus = { autoFocus }
383361 ref = { this . setTextAreaRef }
384362 value = { value }
0 commit comments