diff --git a/types/react-select/index.d.ts b/types/react-select/index.d.ts index 24ef712a05..abfed81047 100644 --- a/types/react-select/index.d.ts +++ b/types/react-select/index.d.ts @@ -20,14 +20,16 @@ declare namespace ReactSelectClass { class Async extends React.Component { } class AsyncCreatable extends React.Component { } + type HandlerRendererResult = JSX.Element | null | false; + // Handlers type FocusOptionHandler = (option: Option) => void; type SelectValueHandler = (option: Option) => void; - type ArrowRendererHandler = (props: ArrowRendererProps) => JSX.Element; + type ArrowRendererHandler = (props: ArrowRendererProps) => HandlerRendererResult; type FilterOptionHandler = (option: Option, filter: string) => Option; type FilterOptionsHandler = (options: Options, filter: string, currentValues: Options) => Options; - type InputRendererHandler = (props: { [key: string]: any }) => JSX.Element; - type MenuRendererHandler = (props: MenuRendererProps) => JSX.Element; + type InputRendererHandler = (props: { [key: string]: any }) => HandlerRendererResult; + type MenuRendererHandler = (props: MenuRendererProps) => HandlerRendererResult; type OnCloseHandler = () => void; type OnInputChangeHandler = (inputValue: string) => void; type OnInputKeyDownHandler = React.KeyboardEventHandler; @@ -35,8 +37,8 @@ declare namespace ReactSelectClass { type OnOpenHandler = () => void; type OnFocusHandler = React.FocusEventHandler; type OnBlurHandler = React.FocusEventHandler; - type OptionRendererHandler = (option: Option) => JSX.Element; - type ValueRendererHandler = (option: Option) => JSX.Element; + type OptionRendererHandler = (option: Option) => HandlerRendererResult; + type ValueRendererHandler = (option: Option) => HandlerRendererResult; type OnValueClickHandler = (value: string, event: React.MouseEvent) => void; type IsOptionUniqueHandler = (arg: { option: Option, options: Options, labelKey: string, valueKey: string }) => boolean; type IsValidNewOptionHandler = (arg: { label: string }) => boolean; diff --git a/types/react-select/react-select-tests.tsx b/types/react-select/react-select-tests.tsx index 3dd010536f..13d64d32ce 100644 --- a/types/react-select/react-select-tests.tsx +++ b/types/react-select/react-select-tests.tsx @@ -151,4 +151,24 @@ describe("Examples", () => { } } }); + + it("Input render with false renderer props", () => { + false} + inputRenderer={props => false} + menuRenderer={props => false} + optionRenderer={props => false} + valueRenderer={props => false} + />; + }); + + it("Input render with null renderer props", () => { + null} + inputRenderer={props => null} + menuRenderer={props => null} + optionRenderer={props => null} + valueRenderer={props => null} + />; + }); });