UNPKG

@layui/layui-vue

Version:

a component library for Vue 3 base on layui-vue

154 lines (153 loc) 3.98 kB
import type { NumberOrString } from "@layui/component/types"; import type { VNode } from "vue"; export type KeysType = (NumberOrString)[]; export interface OriginalTreeData { id?: NumberOrString; title?: NumberOrString; children?: OriginalTreeData[]; disabled?: boolean; checked?: boolean; spread?: boolean; leaf?: boolean; [key: string]: any; } export interface ReplaceFieldsOptions { id: string; title: string; children: string; disabled: string; checked: string; expanded: string; leaf: string; } export type ReplaceFieldsOptionsOptional = Partial<ReplaceFieldsOptions>; export interface TreeData { id: string | number; title: string; children: Array<TreeData>; parent?: string | number; /** * 是否禁止 */ disabled: boolean; /** * 单行是否选中 */ checked: boolean; isIndeterminate: boolean; /** * 是否展开子节点 */ expanded: boolean; loading: boolean; /** * 是否没有子节点 * props.lazy为true时,为false,将有一次注入的机会 */ leaf: boolean; original: OriginalTreeData; slot: string | ((data: OriginalTreeData) => VNode); visible: boolean; [key: string]: any; } export type LoadFunction = (rootNode: OriginalTreeData | undefined, loadedCallback: (data: Array<OriginalTreeData>) => void) => void; export type SearchNodeMethodType = (node: OriginalTreeData, value: string) => boolean; export interface TreeProps { /** * 原始数据 */ data?: OriginalTreeData | Array<OriginalTreeData>; /** * 选中的节点ID数组 */ checkedKeys?: KeysType; /** * 展开的节点ID数组 */ expandKeys?: KeysType; /** * 是否严格遵循父子不互相关联 */ checkStrictly?: boolean | string; /** * 是否显示动画 */ collapseTransition?: boolean; /** * 是否只用图标控制展开与否 */ onlyIconControl?: boolean; /** * 当前选择的节点ID */ selectedKey?: NumberOrString; /** * 是否显示连接线 */ showLine?: boolean; /** * 是否独立使用 */ standalone?: boolean; /** * 是否显示复选框 */ showCheckbox?: boolean; /** * 替换字段 */ replaceFields?: ReplaceFieldsOptionsOptional; /** * 图标是否带边框 * @param iconName 图标名称 * @returns `boolean` */ shouldIconBorder?: (iconName: string) => boolean; /** * 节点图标 */ tailNodeIcon?: string | boolean | ((node: TreeData) => string); /** * 是否默认展开所有节点 */ defaultExpandAll?: boolean; /** * mock数据 */ cacheData?: Array<OriginalTreeData>; /** * 是否懒加载 */ lazy?: boolean; /** * 懒加载函数 */ load?: LoadFunction; /** * 是否在勾选时加载子节点 */ loadOnCheck?: boolean; /** * 搜索节点方法 */ searchNodeMethod?: SearchNodeMethodType; /** * 手风琴模式 */ accordion?: boolean; } export interface TreeNodeProps extends TreeProps { /** * 规范化数据 */ tree: Array<TreeData>; } export interface TreeEmits { (e: "update:selected-key", key: string | number): void; (e: "update:checked-keys", keys: Array<string | number>): void; (e: "update:expand-keys", keys: Array<string | number>): void; (e: "node-click", node: OriginalTreeData): void; (e: "check-change", node: OriginalTreeData, checked: boolean): void; (e: "node-double", event: MouseEvent, node: OriginalTreeData): void; (e: "node-contextmenu", event: MouseEvent, node: OriginalTreeData): void; }