@@ -19,11 +19,17 @@ export type OptionData = Record<"label" | "value", string>;
1919export interface SearchableInputProps <
2020 D extends DataObject ,
2121 F extends Filter < D > = Filter < D >
22- > extends Omit <
23- ScrollListProps < D , F > ,
24- "id" | "defaultValue" | "onChange" | "defaultData" | "renderList"
25- > ,
26- FormComponentProps < OptionData [ ] > {
22+ > {
23+ store : ScrollListProps < D , F > [ "store" ] ;
24+ translator : ScrollListProps < D , F > [ "translator" ] ;
25+ filter ?: ScrollListProps < D , F > [ "filter" ] ;
26+ value ?: OptionData [ ] ;
27+ onChange ?: ( value : OptionData [ ] ) => void ;
28+ name ?: string ;
29+ required ?: boolean ;
30+ readOnly ?: boolean ;
31+ disabled ?: boolean ;
32+ className ?: string ;
2733 labelKey : keyof D ;
2834 valueKey : keyof D ;
2935 renderList ?: ScrollListProps < D , F > [ "renderList" ] ;
@@ -50,7 +56,7 @@ export class SearchableInput<
5056
5157 value = value . trim ( ) ;
5258
53- this . filter = { ...this . filter , [ labelKey ] : value || undefined } ;
59+ this . filter = { ...this . filter , [ labelKey ] : value || undefined } as F ;
5460
5561 if ( store . downloading < 1 )
5662 if ( value ) {
@@ -72,11 +78,13 @@ export class SearchableInput<
7278 if ( ! this . props . multiple ) this . listShown = false ;
7379 } ;
7480
75- delete = ( index : number ) =>
76- ( this . innerValue = [
77- ...this . value . slice ( 0 , index ) ,
78- ...this . value . slice ( index + 1 ) ,
79- ] ) ;
81+ delete = ( index : number ) => {
82+ const value = this . value || [ ] ;
83+ this . innerValue = [
84+ ...value . slice ( 0 , index ) ,
85+ ...value . slice ( index + 1 ) ,
86+ ] ;
87+ } ;
8088
8189 handleBlur = ( { target, relatedTarget } : FocusEvent < HTMLElement > ) => {
8290 if ( target . parentElement !== relatedTarget ?. parentElement )
@@ -116,7 +124,7 @@ export class SearchableInput<
116124 const { translator, store, labelKey, renderList = this . renderList } =
117125 this . props ;
118126
119- const keyword = filter [ labelKey ] as string ;
127+ const keyword = ( filter ? ( filter as any ) [ labelKey ] : undefined ) as string ;
120128
121129 const needNew = ! store . allItems . some (
122130 ( { [ labelKey ] : label } ) => label === keyword
0 commit comments