import React, { type ReactNode, Component } from 'react'; import PropTypes from 'prop-types'; import Select, { type DataSourceItem, type ObjectItem } from '../select'; import Tree from '../tree'; import type { Key, TreeSelectProps, TreeSelectState, KeyEntities, DataNode } from './types'; import type { NodeElement } from '../tree/types'; /** * TreeSelect */ declare class TreeSelect extends Component { static propTypes: { prefix: PropTypes.Requireable; pure: PropTypes.Requireable; locale: PropTypes.Requireable; className: PropTypes.Requireable; children: PropTypes.Requireable; size: PropTypes.Requireable; placeholder: PropTypes.Requireable; disabled: PropTypes.Requireable; hasArrow: PropTypes.Requireable; hasBorder: PropTypes.Requireable; hasClear: PropTypes.Requireable; label: PropTypes.Requireable; readOnly: PropTypes.Requireable; autoWidth: PropTypes.Requireable; dataSource: PropTypes.Requireable<(object | null | undefined)[]>; preserveNonExistentValue: PropTypes.Requireable; value: PropTypes.Requireable>; defaultValue: PropTypes.Requireable>; onChange: PropTypes.Requireable<(...args: any[]) => any>; tagInline: PropTypes.Requireable; maxTagPlaceholder: PropTypes.Requireable<(...args: any[]) => any>; autoClearSearch: PropTypes.Requireable; showSearch: PropTypes.Requireable; filterLocal: PropTypes.Requireable; onSearch: PropTypes.Requireable<(...args: any[]) => any>; onSearchClear: PropTypes.Requireable<(...args: any[]) => any>; notFoundContent: PropTypes.Requireable; multiple: PropTypes.Requireable; treeCheckable: PropTypes.Requireable; treeCheckStrictly: PropTypes.Requireable; treeCheckedStrategy: PropTypes.Requireable; treeDefaultExpandAll: PropTypes.Requireable; treeDefaultExpandedKeys: PropTypes.Requireable<(string | null | undefined)[]>; treeLoadData: PropTypes.Requireable<(...args: any[]) => any>; treeProps: PropTypes.Requireable; defaultVisible: PropTypes.Requireable; visible: PropTypes.Requireable; onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>; popupStyle: PropTypes.Requireable; popupClassName: PropTypes.Requireable; popupContainer: PropTypes.Requireable; popupProps: PropTypes.Requireable; followTrigger: PropTypes.Requireable; isPreview: PropTypes.Requireable; renderPreview: PropTypes.Requireable<(...args: any[]) => any>; useVirtual: PropTypes.Requireable; immutable: PropTypes.Requireable; clickToCheck: PropTypes.Requireable; valueRender: PropTypes.Requireable<(...args: any[]) => any>; useDetailValue: PropTypes.Requireable; }; static defaultProps: { prefix: string; pure: boolean; locale: Partial<{ maxTagPlaceholder: string; shortMaxTagPlaceholder: string; }> & { momentLocale?: string | undefined; }; size: string; disabled: boolean; hasArrow: boolean; hasBorder: boolean; hasClear: boolean; autoWidth: boolean; defaultValue: null; onChange: () => void; tagInline: boolean; autoClearSearch: boolean; showSearch: boolean; filterLocal: boolean; onSearch: () => void; onSearchClear: () => void; notFoundContent: string; multiple: boolean; treeCheckable: boolean; treeCheckStrictly: boolean; treeCheckedStrategy: string; treeDefaultExpandAll: boolean; treeDefaultExpandedKeys: never[]; treeProps: {}; defaultVisible: boolean; onVisibleChange: () => void; useVirtual: boolean; /** * TODO * 目前 select/cascade select 是默认支持的,在 2.x 版本中 tree-select 也将默认支持 */ preserveNonExistentValue: boolean; clickToCheck: boolean; }; static displayName: string; tree: InstanceType; select: InstanceType; constructor(props: TreeSelectProps, context?: unknown); static getDerivedStateFromProps(props: TreeSelectProps, state: TreeSelectState): { _k2n: KeyEntities; _p2n: KeyEntities; _v2n: KeyEntities; visible?: boolean | undefined; value?: (string | number | boolean | null | undefined)[] | undefined; searchedValue?: string | undefined; expandedKeys?: string[] | undefined; searchedKeys?: string[] | undefined; retainedKeys?: string[] | undefined; autoExpandParent?: boolean | undefined; mapValueDS?: Record | undefined; }; getKeysByValue(value: TreeSelectState['value']): string[]; getValueByKeys(keys: Key[]): (string | number | boolean | null | undefined)[]; getFullItemPath(item: TreeSelectState['_k2n'][Key]): DataNode[]; getValueForSelect(value: TreeSelectState['value']): any[]; getData(value: TreeSelectState['value'], forSelect?: boolean): ObjectItem[]; getNonExistentValues(): (string | number | boolean | null | undefined)[]; getNonExistentValueKeys(): any[]; saveTreeRef(ref: InstanceType): void; saveSelectRef(ref: InstanceType): void; handleVisibleChange(visible: boolean, type?: string): void; triggerOnChange(value: ObjectItem[] | DataSourceItem[] | ObjectItem['value'] | null, data: ObjectItem[] | ObjectItem | null): void; handleSelect(selectedKeys: Key[], extra: { selected: boolean; }): void; handleCheck(checkedKeys: Key[]): void; handleRemove(removedItem: ObjectItem): void; handleSearch(searchedValue: string): void; handleSearchClear(triggerType: string): void; handleExpand(expandedKeys: Key[]): void; handleKeyDown(e: React.KeyboardEvent): void; handleChange(value: DataSourceItem[] | DataSourceItem, triggerType: string): void; searchNodes(children: ReactNode): NodeElement[]; createNodesByData(data: TreeSelectProps['dataSource'], searching?: boolean): NodeElement[]; renderPopupContent(): React.JSX.Element; renderPreview(data: ObjectItem[] | ObjectItem, others: Omit): React.JSX.Element; /** * TreeSelect 无法直接使用 Select 的 maxTagPlaceholder 逻辑 * Select 的 totalValue 是所有 leaf 节点,TreeSelect 的 totalValue 受 treeCheckedStrategy 和 treeCheckStrictly 影响 * * treeCheckStrictly = true: totalValue 为所有节点 * * treeCheckStrictly = false: 根据 treeCheckedStrategy 判断 * treeCheckedStrategy = 'all': totalValue 为所有节点 * treeCheckedStrategy = 'parent': totalValue 无意义,不返回 * treeCheckedStrategy = 'child': totalValue 为所有 leaf 节点 */ renderMaxTagPlaceholder(value: ObjectItem[], totalValue: ObjectItem[]): React.ReactNode; render(): React.JSX.Element; } declare const _default: typeof TreeSelect; export default _default;