@innovaccer/design-system
Version:
React components library project for Innovaccer Design System
103 lines (102 loc) • 4.48 kB
TypeScript
import * as React from 'react';
import { DropdownListProps, SelectAll, Selected } from "./DropdownList";
import { OptionSchema } from "./option";
import { BaseProps } from "../../../utils/types";
import { ChangeEvent } from "../../../common.type";
declare type fetchOptionsFunction = (searchTerm: string) => Promise<{
searchTerm?: string;
count: number;
options: OptionSchema[];
}>;
export declare type ErrorType = 'DEFAULT' | 'NO_RECORDS_FOUND' | 'FAILED_TO_FETCH';
export declare type EventType = 'select-option' | 'deselect-option' | 'select-all' | 'deselect-all' | 'clear-all' | 'apply-selected' | 'cancel-selected';
interface ControlledProps {
selected?: OptionSchema[];
onUpdate?: (type: EventType, options?: OptionSchema | OptionSchema[], recentSelected?: OptionSchema[]) => void;
}
interface SyncProps {
options: OptionSchema[];
loading?: boolean;
}
interface AsyncProps {
fetchOptions?: fetchOptionsFunction;
}
interface TriggerProps {
labelLimit?: number;
customLabel?: (selected: number, totalOptions?: number, selectedOptions?: OptionSchema[]) => string;
customTrigger?: (label: string) => React.ReactElement;
}
interface SharedDropdownProps extends DropdownListProps, BaseProps {
name?: string | number;
totalOptions?: number;
closeOnSelect: boolean;
triggerOptions: TriggerProps;
open?: boolean;
staticLimit: number;
searchDebounceDuration: number;
onPopperToggle?: (open: boolean, type?: string) => void;
getLabel?: (label: string) => void;
onChange?: (selected: any[] | any, name?: string | number) => void;
onClose?: (selected: any[], name?: string | number) => void;
tabIndex?: number;
}
declare type SyncDropdownProps = SyncProps & SharedDropdownProps;
declare type AsyncDropdownProps = AsyncProps & SharedDropdownProps;
export declare type UncontrolledDropdownProps = SyncDropdownProps & AsyncDropdownProps;
export declare type ControlledDropdownProps = ControlledProps & SyncDropdownProps & AsyncDropdownProps;
export declare type DropdownProps = ControlledDropdownProps & UncontrolledDropdownProps;
interface DropdownState {
async: boolean;
searchInit: boolean;
options: OptionSchema[];
loading?: boolean;
optionsApplied: boolean;
open?: boolean;
searchTerm: string;
optionsLength: number;
searchedOptionsLength: number;
triggerLabel: string;
selectAll: SelectAll;
selected: OptionSchema[];
tempSelected: OptionSchema[];
previousSelected: OptionSchema[];
scrollIndex?: number;
errorType: ErrorType;
}
export declare class Dropdown extends React.Component<DropdownProps, DropdownState> {
staticLimit: number;
static defaultProps: {
triggerOptions: {};
options: never[];
closeOnSelect: boolean;
staticLimit: number;
searchDebounceDuration: number;
};
constructor(props: DropdownProps);
componentDidMount(): void;
componentDidUpdate(prevProps: DropdownProps, prevState: DropdownState): void;
getDisabledOptions: (options?: OptionSchema[]) => OptionSchema[];
fetchOptionsFunction: (searchTerm: string) => Promise<any>;
getUnSelectedOptions: (options: OptionSchema[], init: boolean) => OptionSchema[];
getSelectedOptions: (options: OptionSchema[], init: boolean) => OptionSchema[];
updateOptions: (init: boolean, async?: boolean | undefined) => void;
updateSearchTerm: (search: string) => void;
updateOnPopperToggle: () => void;
debounceOnClose: import("throttle-debounce").throttle<(values: any, name: any) => void>;
updateTriggerLabel: (selectedArray?: Selected[], totalOptions?: number | undefined) => string;
updateSelectedOptions: (selectedArray: OptionSchema[], isSingleSelect: boolean, isControlled?: boolean | undefined) => void;
isValidOption: (option: OptionSchema) => boolean;
onOptionSelect: (option: OptionSchema) => void;
onSelect: (option: OptionSchema, checked: boolean) => void;
onSelectAll: (event: ChangeEvent) => void;
debounceSearch: import("throttle-debounce").throttle<() => void>;
reload: () => void;
debounceClear: import("throttle-debounce").throttle<() => void>;
onClearOptions: () => void;
onTogglePopper: (type: string) => void;
onCancelOptions: () => void;
onApplyOptions: () => void;
onToggleDropdown: (updatedOpen: boolean, type?: string | undefined) => void;
render(): React.JSX.Element;
}
export default Dropdown;