import type { DCloneHTMLElement, DId, DSize } from '../../utils/types';
import type { DFormControl } from '../form';
import type { DSelectItem } from '../select';
import type { AbstractTreeNode, TreeOrigin } from '../tree/abstract-node';
import React from 'react';
import { TREE_NODE_KEY } from '../tree/utils';
export interface DCascaderRef {
updatePosition: () => void;
}
export type DSearchItem = DSelectItem & {
[TREE_NODE_KEY]: AbstractTreeNode;
};
export interface DCascaderItem {
label: string;
value: V;
loading?: boolean;
disabled?: boolean;
children?: DCascaderItem[];
}
export interface DCascaderProps> extends React.HTMLAttributes {
dRef?: {
input?: React.ForwardedRef;
};
dFormControl?: DFormControl;
dList: T[];
dModel?: V | null | V[];
dVisible?: boolean;
dInitialVisible?: boolean;
dPlaceholder?: string;
dSize?: DSize;
dLoading?: boolean;
dSearchable?: boolean;
dSearchValue?: string;
dClearable?: boolean;
dDisabled?: boolean;
dMultiple?: boolean;
dOnlyLeafSelectable?: boolean;
dVirtual?: boolean;
dCustomItem?: (item: T) => React.ReactNode;
dCustomSelected?: (select: T) => string;
dCustomSearch?: {
filter?: (value: string, item: T) => boolean;
sort?: (a: T, b: T) => number;
};
dPopupClassName?: string;
dInputRender?: DCloneHTMLElement>;
onModelChange?: (value: any, item: any) => void;
onVisibleChange?: (visible: boolean) => void;
onSearchValueChange?: (value: string) => void;
onClear?: () => void;
onFirstFocus?: (value: T['value'], item: T) => void;
afterVisibleChange?: (visible: boolean) => void;
}
declare function Cascader>(props: DCascaderProps, ref: React.ForwardedRef): JSX.Element | null;
export declare const DCascader: >(props: DCascaderProps & React.RefAttributes) => ReturnType;
export {};