import { FC, ReactNode } from 'react'; import { Checkbox as MUICheckbox, FormControl as MUIFormControl, selectClasses as muiSelectClasses, } from '@mui/material'; import InputMessageBox from './InputMessageBox'; import MenuItem from './MenuItem'; import { MessageBoxProps } from './MessageBox'; import OutlinedInput from './OutlinedInput'; import OutlinedInputLabel, { OutlinedInputLabelProps, } from './OutlinedInputLabel'; import Select, { SelectProps } from './Select'; type SelectItem< ValueType = string, DisplayValueType = ValueType | ReactNode, > = { displayValue?: DisplayValueType; value: ValueType; }; type SelectWithLabelOptionalProps = { checkItem?: ((value: string) => boolean) | null; disableItem?: ((value: string) => boolean) | null; hideItem?: ((value: string) => boolean) | null; isCheckableItems?: boolean; isReadOnly?: boolean; inputLabelProps?: Partial; label?: string | null; messageBoxProps?: Partial; selectProps?: Partial; }; type SelectWithLabelProps = SelectWithLabelOptionalProps & { id: string; selectItems: SelectItem[]; }; const SELECT_WITH_LABEL_DEFAULT_PROPS: Required = { checkItem: null, disableItem: null, hideItem: null, isReadOnly: false, isCheckableItems: false, inputLabelProps: {}, label: null, messageBoxProps: {}, selectProps: {}, }; const SelectWithLabel: FC = ({ id, label, selectItems, checkItem, disableItem, hideItem, inputLabelProps, isReadOnly, messageBoxProps, selectProps, isCheckableItems = selectProps?.multiple, }) => ( {label && ( {label} )} ); SelectWithLabel.defaultProps = SELECT_WITH_LABEL_DEFAULT_PROPS; export type { SelectItem, SelectWithLabelProps }; export default SelectWithLabel;