UNPKG

vue-admin-core

Version:
95 lines (90 loc) 2.86 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var virtualTree = require('element-plus/es/components/tree-v2/src/virtual-tree'); var _const = require('../../../utils/const.js'); const prefixCls = _const.getPrefixCls("tree-node"); var TreeLine = vue.defineComponent({ name: "VacTreeLine", props: { node: virtualTree.treeNodeProps.node, treeData: { type: Array }, indent: { type: Number, default() { return 16; } } }, setup(props, { slots }) { const lastnodeArr = vue.computed(() => { const lastnodeArr2 = []; let currentNode = props.node; while (currentNode) { let parentNode = currentNode.parent; if (currentNode.level === 1 && !currentNode.parent) { if (!props.treeData || !Array.isArray(props.treeData)) { throw Error("if you using el-tree-v2 (Virtualized Tree) of element-plus,element-tree-line required data."); } parentNode = { children: Array.isArray(props.treeData) ? props.treeData.map((item) => { return { ...item, key: item.id }; }) : [], level: 0, key: "node-0", parent: null }; } if (parentNode) { const index = (parentNode.children || parentNode.childNodes).findIndex((item) => (item.key || item.id) === (currentNode.key || currentNode.id)); lastnodeArr2.unshift(index === (parentNode.children || parentNode.childNodes).length - 1); } currentNode = parentNode; } return lastnodeArr2; }); const lineNodes = vue.computed(() => { const lineNodes2 = []; for (let i = 1; i < props.node.level; i++) { if (lastnodeArr.value[i] && props.node.level - 1 !== i) { continue; } lineNodes2.push(vue.h("span", { class: { [`${prefixCls}-line-var`]: true, "last-node-isLeaf-line": lastnodeArr.value[i] && props.node.level - 1 === i }, style: { left: props.indent * i - 6 + "px" } })); } return lineNodes2; }); return () => { return vue.h("span", { class: `${prefixCls}-label-wrapper` }, [slots.default ? slots.default({ node: props.node, data: props.node.data }) : vue.h("span", { class: "el-tree-node__label" }, [props.node.label]), ...lineNodes.value, props.node.level !== 1 ? vue.h("span", { class: `${prefixCls}-line-hor`, style: { width: "10px", left: (props.node.level - 1) * props.indent - 6 + "px" } }) : null]); }; } }); exports.default = TreeLine; //# sourceMappingURL=TreeLine.js.map