xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 12.7 kB
Source Map (JSON)
{"version":3,"file":"tree-node-model.mjs","sources":["../../../../src/_common/js/tree/tree-node-model.ts"],"sourcesContent":["import isUndefined from 'lodash/isUndefined';\nimport isBoolean from 'lodash/isBoolean';\nimport omit from 'lodash/omit';\nimport get from 'lodash/get';\nimport { TreeNode } from './tree-node';\nimport { OptionData } from '../common';\nimport {\n TreeNodeValue,\n TypeTreeNodeModel,\n TypeTreeNodeData,\n TypeTreeItem,\n} from './types';\nimport log from '../log/log';\n\nexport const nodeKey = '__tdesign_tree-node__';\n\nexport class TreeNodeModel {\n private [nodeKey]: TreeNode;\n\n constructor(node: TreeNode) {\n this[nodeKey] = node;\n }\n\n public get value() {\n const node = this[nodeKey];\n return node.value;\n }\n\n public get label() {\n const node = this[nodeKey];\n return node.label;\n }\n\n public get data() {\n const node = this[nodeKey];\n return node.data;\n }\n\n public get actived() {\n const node = this[nodeKey];\n return node.actived;\n }\n\n public get expanded() {\n const node = this[nodeKey];\n return node.expanded;\n }\n\n public get checked() {\n const node = this[nodeKey];\n return node.checked;\n }\n\n public get indeterminate() {\n const node = this[nodeKey];\n return node.indeterminate;\n }\n\n public get loading() {\n const node = this[nodeKey];\n return node.loading;\n }\n\n /**\n * 获取节点所处层级\n * @return number 节点层级序号\n */\n public getLevel() {\n const node = this[nodeKey];\n return node.getLevel();\n }\n\n /**\n * 获取节点在父节点的子节点列表中的位置\n * - 如果没有父节点,则获取节点在根节点列表的位置\n * @return number 节点位置序号\n */\n public getIndex() {\n const node = this[nodeKey];\n return node.getIndex();\n }\n\n /**\n * 是否为兄弟节点中的第一个节点\n * @return boolean 是否为第一个节点\n */\n public isFirst() {\n const node = this[nodeKey];\n return node.isFirst();\n }\n\n /**\n * 是否为兄弟节点中的最后一个节点\n * @return boolean 是否为最后一个节点\n */\n public isLast() {\n const node = this[nodeKey];\n return node.isLast();\n }\n\n /**\n * 是否为叶子节点,叶子节点没有子节点\n * @return boolean 是否为叶子节点\n */\n public isLeaf() {\n const node = this[nodeKey];\n return node.isLeaf();\n }\n\n /**\n * 在当前节点之前插入节点\n * @param {object} newData 要插入的节点或者数据\n * @return void\n */\n public insertBefore(newData: TypeTreeItem) {\n const node = this[nodeKey];\n return node.insertBefore(newData);\n }\n\n /**\n * 在当前节点之后插入节点\n * @param {object} newData 要插入的节点或者数据\n * @return void\n */\n public insertAfter(newData: TypeTreeItem) {\n const node = this[nodeKey];\n return node.insertAfter(newData);\n }\n\n /**\n * 追加节点数据\n * @param {object | object[]} data 节点数据\n * @return void\n */\n public appendData(data: TypeTreeNodeData | TypeTreeNodeData[]) {\n const node = this[nodeKey];\n return node.append(data);\n }\n\n /**\n * 返回路径节点\n * - 路径节点包含自己在内\n * - 节点顺序与父级节点顺序相反,从根到当前\n * @return TreeNodeModel[] 路径节点数组\n */\n public getPath(): TypeTreeNodeModel[] {\n const node = this[nodeKey];\n const nodes = node.getPath();\n return nodes.map((item: TreeNode) => item.getModel());\n }\n\n /**\n * 获取本节点的父节点\n * @return TreeNodeModel 父节点\n */\n public getParent(): TypeTreeNodeModel {\n const node = this[nodeKey];\n return node.parent?.getModel();\n }\n\n /**\n * 获取所有父级节点\n * - 顺序为从当前到根\n * @return TreeNodeModel[] 父级节点数组\n */\n public getParents(): TypeTreeNodeModel[] {\n const node = this[nodeKey];\n const nodes = node.getParents();\n return nodes.map((item: TreeNode) => item.getModel());\n }\n\n /**\n * 获取本节点的根节点\n * @return TreeNodeModel 根节点\n */\n public getRoot(): TypeTreeNodeModel {\n const node = this[nodeKey];\n const root = node.getRoot();\n return root?.getModel();\n }\n\n /**\n * 获取所有兄弟节点,包含自己在内\n * @return TreeNodeModel[] 兄弟节点数组\n */\n public getSiblings(): TypeTreeNodeModel[] {\n const node = this[nodeKey];\n const nodes = node.getSiblings();\n return nodes.map((item: TreeNode) => item.getModel());\n }\n\n /**\n * 获取当前节点的子节点\n * @param {boolean} deep 是否获取所有深层子节点\n * @return TreeNodeModel[] 子节点数组\n */\n public getChildren(deep?: boolean): boolean | TypeTreeNodeModel[] {\n const node = this[nodeKey];\n let childrenModel: boolean | TypeTreeNodeModel[] = false;\n const { children } = node;\n if (Array.isArray(children)) {\n if (children.length > 0) {\n if (deep) {\n const nodes = node.walk();\n nodes.shift();\n childrenModel = nodes.map((item) => item.getModel());\n } else {\n childrenModel = children.map((item) => item.getModel());\n }\n } else {\n childrenModel = false;\n }\n } else if (isBoolean(children)) {\n childrenModel = children;\n }\n return childrenModel;\n }\n\n /**\n * 移除节点\n * - 提供 value 参数,移除本节点子节点中的节点\n * - 不提供 value 参数,移除自己\n * @param {string} value 目标节点值\n * @return void\n */\n public remove(value?: TreeNodeValue) {\n const node = this[nodeKey];\n if (!value) {\n node.remove();\n return;\n }\n\n const { tree } = node;\n const targetNode = tree.getNode(value);\n if (!targetNode) {\n log.warnOnce('Tree', `\\`${value}\\` is not exist`);\n return;\n }\n\n const parents = targetNode.getParents();\n const parentValues = parents.map((pnode) => (pnode.value));\n if (parentValues.indexOf(node.value) < 0) {\n log.warnOnce('Tree', `\\`${value}\\` is not a childNode of current node`);\n return;\n }\n targetNode.remove();\n }\n\n /**\n * 设置本节点携带的元数据\n * @param {object} data 节点数据\n * @return void\n */\n public setData(data: OptionData) {\n const node = this[nodeKey];\n // 详细细节可见 https://github.com/Tencent/tdesign-common/issues/655\n const _data = omit(data, ['children', 'value', 'label', 'disabled']);\n const { keys } = node.tree.config;\n const dataValue = get(data, keys?.value || 'value');\n const dataLabel = get(data, keys?.label || 'label');\n const dataDisabled = get(data, keys?.disabled || 'disabled');\n if (!isUndefined(dataValue)) _data.value = dataValue;\n if (!isUndefined(dataLabel)) _data.label = dataLabel;\n if (!isUndefined(dataDisabled)) _data.disable = dataDisabled;\n\n Object.assign(node.data, _data);\n Object.assign(node, _data);\n }\n}\n\n// 封装对外暴露的对象\nexport function createNodeModel(node: TreeNode): TypeTreeNodeModel {\n const model = new TreeNodeModel(node);\n return model as TypeTreeNodeModel;\n}\n"],"names":["_classCallCheck","_defineProperty","_createClass","value","childrenModel","isBoolean","omit","get","Object"],"mappings":"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"}