@@ -110,29 +110,28 @@ function SingleSelect({
110
110
const handleSelect = ( option : ISelectOption ) => {
111
111
if ( option . disabled ) return
112
112
113
- const originalOption = optionsList . find ( ( opt ) => opt . value === option . value )
113
+ const originalOption = optionsList ?. find (
114
+ ( opt ) => String ( opt ?. value ) === String ( option ?. value )
115
+ )
114
116
115
117
setSelectedOption ( originalOption || option )
116
118
setIsOpen ( false )
117
119
118
120
onChangeSelect ?.( originalOption || option )
119
121
}
120
122
121
- const optionsWithSelected = optionsList . map ( ( opt ) => ( {
123
+ const optionsWithSelected = optionsList ? .map ( ( opt ) => ( {
122
124
...opt ,
123
- selected : opt . value === value
125
+ selected :
126
+ String ( opt ?. value ) === String ( value ) ||
127
+ String ( opt ?. label ) . toLowerCase ( ) === String ( value ) . toLowerCase ( )
124
128
} ) )
125
129
126
130
const getInputLabel = ( ) => {
127
- let inputLabel = label
128
- if ( ! isFilter && ! selectedOption ) return ''
129
- if ( ! selectedOption ) return inputLabel
131
+ if ( ! isFilter && ! selectedOption ) return placeholder || label || ''
132
+ if ( ! selectedOption ) return placeholder || label || ''
130
133
131
- return selectedOption . value === ''
132
- ? inputLabel
133
- : ( inputLabel =
134
- optionsList . find ( ( opt ) => opt . value === selectedOption . value )
135
- ?. label || label )
134
+ return selectedOption . label || selectedOption . value . toString ( )
136
135
}
137
136
138
137
useEffect ( ( ) => {
@@ -149,8 +148,19 @@ function SingleSelect({
149
148
} , [ ] )
150
149
151
150
useEffect ( ( ) => {
152
- const found = optionsList . find ( ( opt ) => opt . value === value )
153
- setSelectedOption ( found || null )
151
+ const found = optionsList ?. find (
152
+ ( opt ) => String ( opt ?. value ) === String ( value )
153
+ )
154
+
155
+ const foundByLabel =
156
+ ! found && value
157
+ ? optionsList ?. find (
158
+ ( opt ) =>
159
+ String ( opt ?. label ) . toLowerCase ( ) === String ( value ) . toLowerCase ( )
160
+ )
161
+ : null
162
+
163
+ setSelectedOption ( found || foundByLabel || null )
154
164
} , [ value , optionsList ] )
155
165
156
166
return (
@@ -224,9 +234,8 @@ function SingleSelect({
224
234
</ Text >
225
235
</ div >
226
236
) }
227
- { optionsWithSelected . map ( ( option ) => {
237
+ { optionsWithSelected ? .map ( ( option ) => {
228
238
const { value, label, disabled } = option
229
-
230
239
return (
231
240
< Flex
232
241
className = { composeClasses (
0 commit comments