import { GroupBase, OptionProps, SingleValueProps, SelectComponentsConfig, components, } from 'react-select'; import { ReactNode } from 'react'; import { Option } from './PortainerSelect'; export function CustomComponents( render: (data: Option) => ReactNode ): SelectComponentsConfig, false, GroupBase>> { return { Option: CustomOption(render), SingleValue: CustomSingleValue(render), }; } function CustomOption(render: (data: Option) => ReactNode) { return function CustomOptionRenderer({ data, ...props }: OptionProps, false, GroupBase>>) { return ( // eslint-disable-next-line react/jsx-props-no-spreading {render(data)} ); }; } function CustomSingleValue( render: (data: Option) => ReactNode ) { return function CustomOptionRenderer({ data, ...props }: SingleValueProps, false, GroupBase>>) { return ( // eslint-disable-next-line react/jsx-props-no-spreading {render(data)} ); }; }