From 1e211cd0d490a95e1339f60b0d020f4ed8a96e3d Mon Sep 17 00:00:00 2001 From: Giedrius Grabauskas Date: Wed, 2 Aug 2017 22:03:24 +0300 Subject: [PATCH] react-select: Fixed renderer handlers return types. (#18574) * Fixed renderer handlers return types. * Added tests to render null or false elements. * Updated tests. * Updated naming. * Created and implemented type `HandlerRendererResult`. --- types/react-select/index.d.ts | 12 +++++++----- types/react-select/react-select-tests.tsx | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) 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} + />; + }); });