// @strict: true
// @jsx: react
// @skipLibCheck: true
///
import * as React from "react";
interface Props {
value?: Option | T;
onChange?(value: Option | undefined): void;
}
type ExtractValueType = T extends ReactSelectProps ? U : never;
export type ReactSingleSelectProps<
WrappedProps extends ReactSelectProps
> = Overwrite<
Omit,
Props>
>;
export function createReactSingleSelect<
WrappedProps extends ReactSelectProps
>(
WrappedComponent: React.ComponentType
): React.ComponentType> {
return (props) => {
return (
>
{...props}
multi={false}
autosize={false}
value={props.value}
onChange={(value) => {
if (props.onChange) {
props.onChange(value === null ? undefined : value);
}
}}
/>
);
};
}
// Copied from "type-zoo" version 3.4.0
export type Omit = T extends any ? Pick> : never;
export type Overwrite = Omit & U;
// Everything below here copied from "@types/react-select" version 1.3.4
declare class ReactSelectClass extends React.Component> {
focus(): void;
setValue(value: Option): void;
}
export type OptionComponentType = React.ComponentType>;
export type ValueComponentType = React.ComponentType>;
export type HandlerRendererResult = JSX.Element | null | false;
// Handlers
export type FocusOptionHandler = (option: Option) => void;
export type SelectValueHandler = (option: Option) => void;
export type ArrowRendererHandler = (props: ArrowRendererProps) => HandlerRendererResult;
export type ClearRendererHandler = () => HandlerRendererResult;
export type FilterOptionHandler = (option: Option, filter: string) => boolean;
export type FilterOptionsHandler = (options: Options, filter: string, currentValues: Options) => Options;
export type InputRendererHandler = (props: { [key: string]: any }) => HandlerRendererResult;
export type MenuRendererHandler = (props: MenuRendererProps) => HandlerRendererResult;
export type OnCloseHandler = () => void;
export type OnInputChangeHandler = (inputValue: string) => string;
export type OnInputKeyDownHandler = React.KeyboardEventHandler;
export type OnMenuScrollToBottomHandler = () => void;
export type OnOpenHandler = () => void;
export type OnFocusHandler = React.FocusEventHandler;
export type OnBlurHandler = React.FocusEventHandler;
export type OptionRendererHandler = (option: Option) => HandlerRendererResult;
export type ValueRendererHandler = (option: Option, index?: number) => HandlerRendererResult;
export type OnValueClickHandler = (option: Option, event: React.MouseEvent) => void;
export type IsOptionUniqueHandler = (arg: { option: Option, options: Options, labelKey: string, valueKey: string }) => boolean;
export type IsValidNewOptionHandler = (arg: { label: string }) => boolean;
export type NewOptionCreatorHandler = (arg: { label: string, labelKey: string, valueKey: string }) => Option;
export type PromptTextCreatorHandler = (filterText: string) => string;
export type ShouldKeyDownEventCreateNewOptionHandler = (arg: { keyCode: number }) => boolean;
export type OnChangeSingleHandler = OnChangeHandler>;
export type OnChangeMultipleHandler = OnChangeHandler>;
export type OnChangeHandler | Options> = (newValue: TOption | null) => void;
export type OnNewOptionClickHandler = (option: Option) => void;
export type LoadOptionsHandler = LoadOptionsAsyncHandler | LoadOptionsLegacyHandler;
export type LoadOptionsAsyncHandler = (input: string) => Promise>;
export type LoadOptionsLegacyHandler = (input: string, callback: (err: any, result: AutocompleteResult) => void) => void;
export interface AutocompleteResult {
/** The search-results to be displayed */
options: Options;
/**
* Should be set to true, if and only if a longer query with the same prefix
* would return a subset of the results
* If set to true, more specific queries will not be sent to the server.
*/
complete: boolean;
}
export type Options = Array