import * as React from 'react'; import * as PropTypes from 'prop-types'; import { BoxProps } from 'reakit/ts/Box/Box'; import { ButtonProps } from '../Button/Button'; import { PopoverContainerRenderProps } from '../Popover/PopoverContainer'; import { LocalMenuProps, MenuProps } from '../Menu/Menu'; import { MenuButtonProps } from '../Menu/MenuButton'; import { MenuGroupProps } from '../Menu/MenuGroup'; import { LocalMenuItemProps, MenuItemProps } from '../Menu/MenuItem'; import { MenuPopoverProps, LocalMenuPopoverProps } from '../Menu/MenuPopover'; import { SpinnerProps } from '../Spinner/Spinner'; import { TagProps } from '../Tag/Tag'; import { Omit } from '../types'; import { LocalSelectMenuSearchInputProps } from './SelectMenuSearchInput'; export declare type SelectMenuItemObject = { key: string; icon?: LocalMenuItemProps['icon']; isActive?: LocalMenuItemProps['isActive']; isDisabled?: LocalMenuItemProps['isDisabled']; label: string; value?: string | number | boolean | Object; }; export declare type SelectMenuItem = string | SelectMenuItemObject | null; export declare type SelectMenuItems = Array; export declare type LocalSelectMenuProps = Omit & { defaultKey?: string; defaultKeys?: Array; defaultOption?: SelectMenuItem; defaultOptions?: SelectMenuItems; disabled?: boolean; emptyText?: string; filterOptions?: ({ options, searchText }: { options: SelectMenuItems; searchText: string; }) => SelectMenuItems; isDropdown?: boolean; isFullWidth?: boolean; isLoading?: boolean; isMultiSelect?: boolean; isPaginated?: boolean; isRadio?: boolean; isSearchable?: boolean; loadQuery?: Object; loadOptions?({ data, page, searchText }: { data?: Object; page: number; searchText?: string; }): Promise<{ options: SelectMenuItems; }>; onChange?(value: string | SelectMenuItemObject['value'] | null, item: SelectMenuItem, values: SelectMenuItem | SelectMenuItems | null): void; options?: SelectMenuItems; placeholder?: string; popoverProps?: Omit, 'content'>; renderBottomActions?(opts: { isDropdown?: boolean; isMultiSelect?: boolean; onClear(): void; popover?: PopoverContainerRenderProps; selectedOptions: SelectMenuItems; }): React.ReactNode; renderEmpty?(opts: { emptyText?: string; }): React.ReactNode; renderError?(opts: { error?: Object; }): React.ReactNode; renderOption?(option: SelectMenuItem): React.ReactNode; renderTrigger?(opts: { isLoading?: boolean; placeholder?: string; props: any; renderValue: any; selectedOptions: { [key: string]: SelectMenuItem; }; }): React.ReactNode; renderValue?(value: SelectMenuItemObject['value'], values: SelectMenuItemObject['value'][], items: { [key: string]: SelectMenuItem; }): React.ReactNode; searchInputProps?: LocalSelectMenuSearchInputProps; value?: SelectMenuItem | SelectMenuItems; useTags?: boolean; }; export declare type SelectMenuProps = Omit & LocalSelectMenuProps; export declare type SelectMenuState = { blockLoad: boolean; contextKey: string | void; options: SelectMenuItems; page: number; searchText: string; selectedOptions: { [key: string]: SelectMenuItem; }; }; export declare type SelectMenuComponents = { ActionButton: React.FunctionComponent; BottomSection: React.FunctionComponent; Button: React.FunctionComponent; LoadingSpinner: React.FunctionComponent; LoadingItemSpinner: React.FunctionComponent; Group: React.FunctionComponent; Item: React.FunctionComponent; StaticItem: React.FunctionComponent; Popover: React.FunctionComponent; Tag: React.FunctionComponent; TopSection: React.FunctionComponent; Formik: React.FunctionComponent; ReduxForm: React.FunctionComponent; }; export declare const selectMenuPropTypes: { defaultKey: PropTypes.Requireable; defaultKeys: PropTypes.Requireable; defaultOption: PropTypes.Requireable; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>>; defaultOptions: PropTypes.Requireable<(string | PropTypes.InferProps<{ icon: PropTypes.Validator; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>)[]>; disabled: PropTypes.Requireable; emptyText: PropTypes.Requireable; filterOptions: PropTypes.Requireable<(...args: any[]) => any>; isDropdown: PropTypes.Requireable; isFullWidth: PropTypes.Requireable; isLoading: PropTypes.Requireable; isMultiSelect: PropTypes.Requireable; isPaginated: PropTypes.Requireable; isRadio: PropTypes.Requireable; isSearchable: PropTypes.Requireable; loadQuery: PropTypes.Requireable; loadOptions: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; options: PropTypes.Requireable<(string | PropTypes.InferProps<{ icon: PropTypes.Validator; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>)[]>; placeholder: PropTypes.Requireable; popoverProps: PropTypes.Requireable>; renderBottomActions: PropTypes.Requireable<(...args: any[]) => any>; renderEmpty: PropTypes.Requireable<(...args: any[]) => any>; renderError: PropTypes.Requireable<(...args: any[]) => any>; renderOption: PropTypes.Requireable<(...args: any[]) => any>; renderTrigger: PropTypes.Requireable<(...args: any[]) => any>; renderValue: PropTypes.Requireable<(...args: any[]) => any>; searchInputProps: PropTypes.Requireable; a11yId: PropTypes.Requireable; a11yLabel: PropTypes.Requireable; autoComplete: PropTypes.Requireable; autoFocus: PropTypes.Requireable; before: PropTypes.Requireable; children: PropTypes.Requireable; className: PropTypes.Requireable; defaultValue: PropTypes.Requireable; disabled: PropTypes.Requireable; inputProps: PropTypes.Validator>; inputRef: PropTypes.Validator>; isLoading: PropTypes.Requireable; isRequired: PropTypes.Requireable; name: PropTypes.Requireable; size: PropTypes.Validator; mask: PropTypes.Requireable; max: PropTypes.Requireable; maxLength: PropTypes.Requireable; min: PropTypes.Requireable; minLength: PropTypes.Requireable; multiple: PropTypes.Requireable; pattern: PropTypes.Requireable; placeholder: PropTypes.Requireable; readOnly: PropTypes.Requireable; spellCheck: PropTypes.Requireable; step: PropTypes.Requireable; state: PropTypes.Requireable; type: PropTypes.Requireable; value: PropTypes.Requireable; onBlur: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; onFocus: PropTypes.Requireable<(...args: any[]) => any>; }>>; useTags: PropTypes.Requireable; value: PropTypes.Requireable; }; export declare const selectMenuDefaultProps: { defaultKey: any; defaultKeys: any; defaultOption: any; defaultOptions: any; disabled: boolean; emptyText: string; filterOptions: ({ options, searchText }: { options: SelectMenuItem[]; searchText: string; }) => SelectMenuItem[]; isDropdown: boolean; isFullWidth: boolean; isLoading: boolean; isMultiSelect: boolean; isPaginated: boolean; isRadio: boolean; isSearchable: boolean; loadQuery: any; loadOptions: any; onChange: any; options: any[]; placeholder: string; popoverProps: {}; renderBottomActions: (opts: { isDropdown?: boolean; isMultiSelect?: boolean; onClear(): void; popover?: PopoverContainerRenderProps; selectedOptions: SelectMenuItem[]; }) => React.ReactNode; renderEmpty: ({ emptyText }: { emptyText: string; }) => JSX.Element; renderError: () => JSX.Element; renderOption: (option: SelectMenuItem) => React.ReactNode; renderTrigger: (opts: { isLoading?: boolean; placeholder?: string; props: any; renderValue: any; selectedOptions: { [key: string]: SelectMenuItem; }; }) => React.ReactNode; renderValue: (value: string | number | boolean | Object, values: (string | number | boolean | Object)[], items: { [key: string]: SelectMenuItem; }) => React.ReactNode; searchInputProps: {}; useTags: boolean; value: any; }; export declare class SelectMenu extends React.Component { static ActionButton: import("styled-components").StyledComponent, any, {}, never>; static BottomSection: import("styled-components").StyledComponent & React.RefAttributes>, any, {}, never>>, any, {}, never>; static Button: import("styled-components").StyledComponent, any, {}, never>; static LoadingSpinner: import("styled-components").StyledComponent, any, {}, never>; static LoadingItemSpinner: import("styled-components").StyledComponent, any, {}, never>; static Group: import("styled-components").StyledComponent, any, { isDropdown?: boolean; isMultiSelect?: boolean; }, never>; static Item: import("styled-components").StyledComponent, any, {}, never>; static StaticItem: import("styled-components").StyledComponent & React.RefAttributes>, any, {}, never>>, any, import("reakit/ts").FlexProps, never>>, any, {}, never>; static Popover: import("styled-components").StyledComponent, any, {}, never>; static Tag: import("styled-components").StyledComponent, any, {}, never>; static TopSection: import("styled-components").StyledComponent & React.RefAttributes>, any, {}, never>>, any, {}, never>; static propTypes: { defaultKey: PropTypes.Requireable; defaultKeys: PropTypes.Requireable; defaultOption: PropTypes.Requireable; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>>; defaultOptions: PropTypes.Requireable<(string | PropTypes.InferProps<{ icon: PropTypes.Validator; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>)[]>; disabled: PropTypes.Requireable; emptyText: PropTypes.Requireable; filterOptions: PropTypes.Requireable<(...args: any[]) => any>; isDropdown: PropTypes.Requireable; isFullWidth: PropTypes.Requireable; isLoading: PropTypes.Requireable; isMultiSelect: PropTypes.Requireable; isPaginated: PropTypes.Requireable; isRadio: PropTypes.Requireable; isSearchable: PropTypes.Requireable; loadQuery: PropTypes.Requireable; loadOptions: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; options: PropTypes.Requireable<(string | PropTypes.InferProps<{ icon: PropTypes.Validator; isActive: PropTypes.Requireable; isDisabled: PropTypes.Requireable; label: PropTypes.Requireable; value: PropTypes.Requireable; }>)[]>; placeholder: PropTypes.Requireable; popoverProps: PropTypes.Requireable>; renderBottomActions: PropTypes.Requireable<(...args: any[]) => any>; renderEmpty: PropTypes.Requireable<(...args: any[]) => any>; renderError: PropTypes.Requireable<(...args: any[]) => any>; renderOption: PropTypes.Requireable<(...args: any[]) => any>; renderTrigger: PropTypes.Requireable<(...args: any[]) => any>; renderValue: PropTypes.Requireable<(...args: any[]) => any>; searchInputProps: PropTypes.Requireable; a11yId: PropTypes.Requireable; a11yLabel: PropTypes.Requireable; autoComplete: PropTypes.Requireable; autoFocus: PropTypes.Requireable; before: PropTypes.Requireable; children: PropTypes.Requireable; className: PropTypes.Requireable; defaultValue: PropTypes.Requireable; disabled: PropTypes.Requireable; inputProps: PropTypes.Validator>; inputRef: PropTypes.Validator>; isLoading: PropTypes.Requireable; isRequired: PropTypes.Requireable; name: PropTypes.Requireable; size: PropTypes.Validator; mask: PropTypes.Requireable; max: PropTypes.Requireable; maxLength: PropTypes.Requireable; min: PropTypes.Requireable; minLength: PropTypes.Requireable; multiple: PropTypes.Requireable; pattern: PropTypes.Requireable; placeholder: PropTypes.Requireable; readOnly: PropTypes.Requireable; spellCheck: PropTypes.Requireable; step: PropTypes.Requireable; state: PropTypes.Requireable; type: PropTypes.Requireable; value: PropTypes.Requireable; onBlur: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; onFocus: PropTypes.Requireable<(...args: any[]) => any>; }>>; useTags: PropTypes.Requireable; value: PropTypes.Requireable; }; static defaultProps: { defaultKey: any; defaultKeys: any; defaultOption: any; defaultOptions: any; disabled: boolean; emptyText: string; filterOptions: ({ options, searchText }: { options: SelectMenuItem[]; searchText: string; }) => SelectMenuItem[]; isDropdown: boolean; isFullWidth: boolean; isLoading: boolean; isMultiSelect: boolean; isPaginated: boolean; isRadio: boolean; isSearchable: boolean; loadQuery: any; loadOptions: any; onChange: any; options: any[]; placeholder: string; popoverProps: {}; renderBottomActions: (opts: { isDropdown?: boolean; isMultiSelect?: boolean; onClear(): void; popover?: PopoverContainerRenderProps; selectedOptions: SelectMenuItem[]; }) => React.ReactNode; renderEmpty: ({ emptyText }: { emptyText: string; }) => JSX.Element; renderError: () => JSX.Element; renderOption: (option: SelectMenuItem) => React.ReactNode; renderTrigger: (opts: { isLoading?: boolean; placeholder?: string; props: any; renderValue: any; selectedOptions: { [key: string]: SelectMenuItem; }; }) => React.ReactNode; renderValue: (value: string | number | boolean | Object, values: (string | number | boolean | Object)[], items: { [key: string]: SelectMenuItem; }) => React.ReactNode; searchInputProps: {}; useTags: boolean; value: any; }; optionsGroup: React.RefObject; state: { blockLoad: boolean; contextKey: string; options: SelectMenuItem[]; page: number; selectedOptions: { [x: number]: SelectMenuItem; }; searchText: string; }; componentDidUpdate: (prevProps: SelectMenuProps) => void; loadOptions: () => Promise; handleClearSelected: () => void; handleClickOption: (option: SelectMenuItem) => () => void; handleRemoveOption: (option: SelectMenuItem) => () => void; handleScrollOptions: ({ event, isLoading, load }: { event: React.UIEvent; isLoading: boolean; load: () => void; }) => void; handleSearch: any; filterOptions: () => void; render: () => JSX.Element; renderMenu: ({ load, error, isPending, isResolved, isRejected }: { load: any; error: any; isPending: any; isResolved: any; isRejected: any; }) => (popover?: PopoverContainerRenderProps) => JSX.Element; renderTopSection: ({ selectedOptionsValues }: { selectedOptionsValues: SelectMenuItem[]; }) => JSX.Element; renderOptions: ({ error, isLoading, isResolved, isRejected, load }: { error: any; isLoading: boolean; isResolved: boolean; isRejected: boolean; load: () => any; }) => JSX.Element; renderBottomSection: ({ popover, selectedOptionsValues }: { popover?: PopoverContainerRenderProps; selectedOptionsValues: SelectMenuItem[]; }) => JSX.Element; } export default SelectMenu;