zent
Version:
一套前端设计语言和基于React的实现
100 lines (99 loc) • 3.97 kB
TypeScript
import { Component } from 'react';
import { ICascaderItem, CascaderValue, ICascaderBaseProps, ICascaderChangeMeta, ICascaderLoadMeta, ICascaderMultipleChangeMeta, CascaderSimplifySelectionMode } from './types';
import { IDisabledContext } from '../disabled';
import { TagsTrigger } from './trigger/TagsTrigger';
import { Forest } from './forest';
import { ICascaderTagsProps } from './trigger/Tags';
export { ICascaderTagsProps };
export interface IMenuCascaderCommonProps extends ICascaderBaseProps {
loadOptions?: (selectedOptions: ICascaderItem[] | null, meta: ICascaderLoadMeta) => Promise<void>;
expandTrigger?: 'click' | 'hover';
scrollable?: boolean;
loadChildrenOnScroll?: boolean;
searchable?: boolean;
async?: boolean;
asyncFilter?: (keyword: string, limit: number) => Promise<Array<ICascaderItem[]>>;
filter?: (keyword: string, path: ICascaderItem[]) => boolean;
highlight?: (keyword: string, path: ICascaderItem[]) => React.ReactNode;
limit?: number;
multipleType?: 'normal' | 'checkbox';
maxLine?: number | null;
lineHeight?: number;
}
export interface IMenuCascaderSingleProps extends IMenuCascaderCommonProps {
multiple?: false;
value?: CascaderValue[];
onChange: (value: CascaderValue[], selectedOptions: ICascaderItem[], meta: ICascaderChangeMeta) => void;
changeOnSelect?: boolean;
}
export interface IMenuCascaderMultipleProps extends IMenuCascaderCommonProps {
multiple?: true;
value?: Array<CascaderValue[]>;
onChange: (value: Array<CascaderValue[]>, selectedOptions: Array<ICascaderItem[]>, meta: ICascaderMultipleChangeMeta) => void;
renderTags?: (props: ICascaderTagsProps) => React.ReactNode;
simplifySelection?: boolean;
simplifySelectionMode?: CascaderSimplifySelectionMode;
}
export declare type IMenuCascaderProps = IMenuCascaderMultipleProps | IMenuCascaderSingleProps;
interface IMenuCascaderState {
options: Forest;
activeValue: CascaderValue[];
selectedPaths: Array<ICascaderItem[]>;
visible: boolean;
prevProps: IMenuCascaderProps;
keyword: string;
isSearching: boolean;
searchResultList: Array<ICascaderItem[]>;
loading: string[];
}
export declare class MenuCascader extends Component<IMenuCascaderProps, IMenuCascaderState> {
static defaultProps: {
value: any[];
options: any[];
clearable: boolean;
multiple: boolean;
multipleType: string;
maxLine: any;
lineHeight: number;
expandTrigger: string;
scrollable: boolean;
loadChildrenOnScroll: boolean;
searchable: boolean;
async: boolean;
limit: number;
renderValue: (path: ICascaderItem[]) => string;
filter: (keyword: string, path: ICascaderItem[]) => boolean;
highlight: (keyword: string, path: ICascaderItem[]) => import("react").ReactNode;
simplifySelectionMode: string;
};
constructor(props: IMenuCascaderProps);
tagsTriggerRef: import("react").RefObject<TagsTrigger>;
static contextType: import("react").Context<IDisabledContext>;
context: IDisabledContext;
static getDerivedStateFromProps(props: IMenuCascaderProps, state: IMenuCascaderState): Partial<IMenuCascaderState>;
private get disabled();
private isControlled;
private getVisible;
private setVisible;
private getSelectionMapImpl;
private getSelectionMap;
private getSimplifySelectionMap;
private simplify;
private getSearchResultList;
private onVisibleChange;
private onKeywordChange;
private filterOptions;
private setSearchState;
private onMenuOptionHover;
private onMenuOptionClick;
private onMenuOptionSelect;
private toggleMenuOption;
private onSearchOptionClick;
private toggleSearchOption;
private onClear;
private scrollLoad;
private onRemove;
private renderPopoverContent;
render(): JSX.Element;
}
export default MenuCascader;