'use client'; import { useMemo } from 'react'; import { OptionProps, GroupBase, components as ReactSelectComponents, } from 'react-select'; import SelectInput, { OptionType, SelectInputProps } from './SelectInput'; import { cn } from '@/lib/helper'; interface SelectInputCheckboxProps extends Omit< SelectInputProps, 'closeMenuOnSelect' | 'hideSelectedOptions' | 'optionComponent' > { closeMenuOnSelect?: boolean; hideSelectedOptions?: boolean; } const CheckboxOption = < T extends OptionType, IsMulti extends boolean, Group extends GroupBase, >( props: OptionProps ) => { const { isSelected, label, innerRef, innerProps, className } = props; return (
null} className='checkbox checkbox-sm checkbox-primary pointer-events-none' />
); }; const SelectInputCheckbox = ( props: SelectInputCheckboxProps ) => { const { closeMenuOnSelect = false, hideSelectedOptions = false, isMulti = true, className, ...restProps } = props; const customComponents = useMemo(() => { return { Option: CheckboxOption as typeof ReactSelectComponents.Option, }; }, []); return ( {...restProps} isMulti={isMulti} closeMenuOnSelect={closeMenuOnSelect} hideSelectedOptions={hideSelectedOptions} className={{ ...className, select: cn(className?.select, 'select-checkbox'), }} components={customComponents} /> ); }; export default SelectInputCheckbox;