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`.
This commit is contained in:
Giedrius Grabauskas
2017-08-02 22:03:24 +03:00
committed by Sheetal Nandi
parent a0fa31362f
commit 1e211cd0d4
2 changed files with 27 additions and 5 deletions

View File

@@ -20,14 +20,16 @@ declare namespace ReactSelectClass {
class Async extends React.Component<ReactAsyncSelectProps> { }
class AsyncCreatable extends React.Component<ReactAsyncSelectProps & ReactCreatableSelectProps> { }
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<HTMLDivElement>;
@@ -35,8 +37,8 @@ declare namespace ReactSelectClass {
type OnOpenHandler = () => void;
type OnFocusHandler = React.FocusEventHandler<HTMLDivElement>;
type OnBlurHandler = React.FocusEventHandler<HTMLDivElement>;
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<HTMLAnchorElement>) => void;
type IsOptionUniqueHandler = (arg: { option: Option, options: Options, labelKey: string, valueKey: string }) => boolean;
type IsValidNewOptionHandler = (arg: { label: string }) => boolean;

View File

@@ -151,4 +151,24 @@ describe("Examples", () => {
}
}
});
it("Input render with false renderer props", () => {
<ReactSelect
arrowRenderer={props => false}
inputRenderer={props => false}
menuRenderer={props => false}
optionRenderer={props => false}
valueRenderer={props => false}
/>;
});
it("Input render with null renderer props", () => {
<ReactSelect
arrowRenderer={props => null}
inputRenderer={props => null}
menuRenderer={props => null}
optionRenderer={props => null}
valueRenderer={props => null}
/>;
});
});