import { Autocomplete as MUIAutocomplete, autocompleteClasses as muiAutocompleteClasses, AutocompleteProps as MUIAutocompleteProps, Grow as MUIGrow, outlinedInputClasses as muiOutlinedInputClasses, Paper as MUIPaper, PaperProps as MUIPaperProps, svgIconClasses as muiSvgIconClasses, } from '@mui/material'; import { GREY, TEXT } from '../lib/consts/DEFAULT_THEME'; import OutlinedInputWithLabel from './OutlinedInputWithLabel'; type AutocompleteProps< T, Multiple extends boolean | undefined, DisableClearable extends boolean | undefined, FreeSolo extends boolean | undefined, > = { label: string } & Omit< MUIAutocompleteProps, 'renderInput' > & Partial< Pick< MUIAutocompleteProps, 'renderInput' > >; const GrowPaper = (paperProps: MUIPaperProps): JSX.Element => ( {/* eslint-disable-next-line react/jsx-props-no-spreading */} ); const Autocomplete = < T, Multiple extends boolean | undefined = undefined, DisableClearable extends boolean | undefined = undefined, FreeSolo extends boolean | undefined = undefined, >( autocompleteProps: AutocompleteProps, ): JSX.Element => { const { componentsProps, label, renderInput, sx } = autocompleteProps; const combinedComponentsProps: AutocompleteProps< T, Multiple, DisableClearable, FreeSolo >['componentsProps'] = { paper: { sx: { backgroundColor: TEXT, }, }, ...componentsProps, }; const combinedRenderInput = renderInput ?? (({ fullWidth, InputProps, InputLabelProps, inputProps }) => ( )); const combinedSx = { [`& .${muiOutlinedInputClasses.root} .${muiAutocompleteClasses.endAdornment}`]: { right: `7px`, [`& .${muiSvgIconClasses.root}`]: { color: GREY, }, }, ...sx, }; return ( ); }; export type { AutocompleteProps }; export default Autocomplete;