@@ -31,6 +31,9 @@ export type MultiSelectProps = {
3131 renderItem ?: ( item : MultiSelectItem ) => ReactNode ;
3232 dropdownHeader ?: ReactNode ;
3333 dropdownFooter ?: ReactNode ;
34+ footerClassName ?: string ;
35+ inputClassName ?: string ;
36+ dropdownClassName ?: string ;
3437 emptyState ?: ReactNode ;
3538 emptyMessage ?: string ;
3639 showDropdownFooter ?: boolean ;
@@ -42,6 +45,7 @@ export type MultiSelectProps = {
4245 onSearchChange ?: ( value : string ) => void ;
4346 onOpen ?: ( ) => void ;
4447 onClose ?: ( ) => void ;
48+ searchButtonType ?: "submit" | "button" ;
4549} ;
4650
4751type ValueSet = Set < MultiSelectItem [ "value" ] > ;
@@ -59,6 +63,8 @@ type MultiSelectDropdownProps = {
5963 onDeselectItem ?: ( item : MultiSelectItem ) => void ;
6064 onSelectItem ?: ( item : MultiSelectItem ) => void ;
6165 footer ?: ReactNode ;
66+ footerClassName ?: string ;
67+ dropdownClassName ?: string ;
6268 emptyState ?: ReactNode ;
6369 emptyMessage ?: string ;
6470 groupFn ?: GroupFn ;
@@ -105,6 +111,8 @@ export const MultiSelectDropdown: React.FC<MultiSelectDropdownProps> = ({
105111 onDeselectItem,
106112 isOpen,
107113 footer,
114+ dropdownClassName,
115+ footerClassName,
108116 emptyState,
109117 emptyMessage,
110118 sortFn = sortAlphabetically ,
@@ -155,7 +163,11 @@ export const MultiSelectDropdown: React.FC<MultiSelectDropdownProps> = ({
155163
156164 return (
157165 < FadeInDown isVisible = { isOpen } >
158- < div className = "multi-select__dropdown" role = "listbox" { ...props } >
166+ < div
167+ className = { classNames ( "multi-select__dropdown" , dropdownClassName ) }
168+ role = "listbox"
169+ { ...props }
170+ >
159171 { header ? header : null }
160172 { hasItems
161173 ? groupedItems . map ( ( { group, items } ) => (
@@ -193,7 +205,11 @@ export const MultiSelectDropdown: React.FC<MultiSelectDropdownProps> = ({
193205 ( emptyMessage ? (
194206 < p className = "multi-select__empty-state" > { emptyMessage } </ p >
195207 ) : null ) ) }
196- { footer ? < div className = "multi-select__footer" > { footer } </ div > : null }
208+ { footer ? (
209+ < div className = { classNames ( "multi-select__footer" , footerClassName ) } >
210+ { footer }
211+ </ div >
212+ ) : null }
197213 </ div >
198214 </ FadeInDown >
199215 ) ;
@@ -219,8 +235,12 @@ export const MultiSelect: React.FC<MultiSelectProps> = ({
219235 disabledItems = [ ] ,
220236 dropdownHeader,
221237 dropdownFooter,
238+ footerClassName,
239+ dropdownClassName,
240+ inputClassName,
222241 emptyState,
223242 emptyMessage,
243+ searchButtonType = "submit" ,
224244 showDropdownFooter = true ,
225245 variant = "search" ,
226246 scrollOverflow = false ,
@@ -355,7 +375,8 @@ export const MultiSelect: React.FC<MultiSelectProps> = ({
355375 required = { required }
356376 type = "text"
357377 value = { filter }
358- className = "multi-select__input"
378+ searchButtonType = { searchButtonType }
379+ className = { classNames ( "multi-select__input" , inputClassName ) }
359380 />
360381 ) : (
361382 < button
@@ -414,6 +435,8 @@ export const MultiSelect: React.FC<MultiSelectProps> = ({
414435 onSelectItem = { onSelectItem }
415436 onDeselectItem = { onDeselectItem }
416437 footer = { footer }
438+ footerClassName = { footerClassName }
439+ dropdownClassName = { dropdownClassName }
417440 emptyState = { emptyState }
418441 emptyMessage = { emptyMessage }
419442 sortFn = { isSortedAlphabetically ? sortAlphabetically : ( ) => 0 }
0 commit comments