@@ -78,20 +78,28 @@ interface MultiSelectCommonProps<T>
7878 * Items that were newly created and not taken from the list will be post-fixed with this string.
7979 */
8080 newItemPostfix ?: string ;
81+ /**
82+ * Intent state of the multi select.
83+ */
84+ intent ?: BlueprintIntent ;
8185 /**
8286 * The input element is displayed with primary color scheme.
87+ * @deprecated (v25) use `intent="primary"` instead.
8388 */
8489 hasStatePrimary ?: boolean ;
8590 /**
8691 * The input element is displayed with success (some type of green) color scheme.
92+ * @deprecated (v25) use `intent="success"` instead.
8793 */
8894 hasStateSuccess ?: boolean ;
8995 /**
90- * The input element is displayed with success (some type of orange) color scheme.
96+ * The input element is displayed with warning (some type of orange) color scheme.
97+ * @deprecated (v25) use `intent="warning"` instead.
9198 */
9299 hasStateWarning ?: boolean ;
93100 /**
94- * The input element is displayed with success (some type of red) color scheme.
101+ * The input element is displayed with danger (some type of red) color scheme.
102+ * @deprecated (v25) use `intent="danger"` instead.
95103 */
96104 hasStateDanger ?: boolean ;
97105 /**
@@ -179,6 +187,7 @@ function MultiSelect<T>({
179187 wrapperProps,
180188 searchPredicate,
181189 limitHeightOpened,
190+ intent,
182191 ...otherMultiSelectProps
183192} : MultiSelectProps < T > ) {
184193 // Options created by a user
@@ -203,19 +212,19 @@ function MultiSelect<T>({
203212 timeoutId ?: number ;
204213 } > ( { } ) ;
205214
206- let intent ;
215+ let stateIntent ;
207216 switch ( true ) {
208217 case hasStatePrimary :
209- intent = BlueprintIntent . PRIMARY ;
218+ stateIntent = BlueprintIntent . PRIMARY ;
210219 break ;
211220 case hasStateSuccess :
212- intent = BlueprintIntent . SUCCESS ;
221+ stateIntent = BlueprintIntent . SUCCESS ;
213222 break ;
214223 case hasStateWarning :
215- intent = BlueprintIntent . WARNING ;
224+ stateIntent = BlueprintIntent . WARNING ;
216225 break ;
217226 case hasStateDanger :
218- intent = BlueprintIntent . DANGER ;
227+ stateIntent = BlueprintIntent . DANGER ;
219228 break ;
220229 default :
221230 break ;
@@ -230,12 +239,11 @@ function MultiSelect<T>({
230239 } , [ items . map ( ( item ) => itemId ( item ) ) . join ( "|" ) ] ) ;
231240
232241 React . useEffect ( ( ) => {
233- onSelection &&
234- onSelection ( {
235- newlySelected : selectedItems . slice ( - 1 ) [ 0 ] ,
236- createdItems : createdItems . current ,
237- selectedItems,
238- } ) ;
242+ onSelection ?.( {
243+ newlySelected : selectedItems . slice ( - 1 ) [ 0 ] ,
244+ createdItems : createdItems . current ,
245+ selectedItems,
246+ } ) ;
239247 } , [
240248 onSelection ,
241249 selectedItems . map ( ( item ) => itemId ( item ) ) . join ( "|" ) ,
@@ -430,7 +438,11 @@ function MultiSelect<T>({
430438 const handleOnKeyDown = ( event : React . KeyboardEvent < HTMLElement > ) => {
431439 if ( event . key === "Tab" && ! ! requestState . current . query ) {
432440 event . preventDefault ( ) ;
433- focusedItem ? onItemSelect ( focusedItem ) : onItemSelect ( createNewItem ( requestState . current . query ) ) ;
441+ if ( focusedItem ) {
442+ onItemSelect ( focusedItem ) ;
443+ } else {
444+ onItemSelect ( createNewItem ( requestState . current . query ) ) ;
445+ }
434446 requestState . current . query = "" ;
435447 setTimeout ( ( ) => inputRef . current ?. focus ( ) ) ;
436448 }
@@ -511,7 +523,7 @@ function MultiSelect<T>({
511523 className : `${ eccgui } -multiselect` + ( className ? ` ${ className } ` : "" ) ,
512524 fill : fullWidth ,
513525 inputRef : inputRef ,
514- intent,
526+ intent : intent || stateIntent ,
515527 addOnBlur : true ,
516528 onKeyDown : handleOnKeyDown ,
517529 onKeyUp : handleOnKeyUp ,
0 commit comments