@spaceone/design-system
Version:
SpaceONE Design System
71 lines (63 loc) • 2.06 kB
text/typescript
export interface TreeNodeState {
expanded?: boolean;
selected?: boolean;
loading?: boolean;
}
export interface TreeNode<T=any> extends TreeNodeState {
_id: string|number;
data: T;
children?: TreeNode<T>[] | boolean;
}
export interface SelectOptions<T=any> {
disabled?: boolean;
validator?: (item: TreeItem<T>) => boolean;
}
export interface EditOptions<T=any> {
disabled?: boolean;
editStartValidator?: (item: TreeNode<T>) => boolean;
validator?: (value: string) => boolean;
invalidText?: string;
dataSetter?: (editText: string, originData: T) => T;
dataGetter?: (data: T) => string;
}
export interface DragOptions<T=any> {
disabled?: boolean;
dragValidator?: (node: TreeNode<T>) => boolean;
dropValidator?: (node: TreeNode<T>) => boolean;
}
export interface TreeItem<T=any> extends TreeNode {
index: number;
level: number;
parent: TreeItem<T>|null;
el?: HTMLElement;
getChildrenNodes: () => TreeItem<T>[];
deleteNode: () => void;
addChild: (data: T) => Promise<TreeItem<T>>;
startEdit: () => void;
finishEdit: () => void;
findChildNode: (id: string|number) => TreeItem<T>|null;
setData: (data: T) => void;
setChildren: (children: T[] | boolean) => Promise<TreeItem<T>[]>;
addChildren: (children: T[]) => Promise<TreeItem<T>[]>;
setSelected: (selected: boolean, force?: boolean) => void;
setLoading: (loading: boolean) => void;
setExpanded: (expanded: boolean) => void;
}
export interface TreeNodeProps<T=any> extends TreeNodeState {
index?: number;
level?: number;
padSize?: string;
disableToggle?: boolean;
selectOptions?: SelectOptions<T>;
editOptions?: EditOptions<T>;
dragOptions?: DragOptions<T>;
parent?: TreeItem<T>;
data?: T;
children?: TreeNodeProps<T>[] | boolean;
getDefaultNode?: (data: T) => TreeNode<T>;
getClassNames?: (item: TreeItem<T>) => string|string[]|object;
}
export interface TreeNodeSlotProps<T=any> {
depth: string;
node: TreeItem<T>;
}