UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 19.3 kB
{"version":3,"file":"tree2.mjs","sources":["../../../../../../packages/components/tree/src/tree.vue"],"sourcesContent":["<template>\n <div\n ref=\"el$\"\n :class=\"[\n ns.b(),\n ns.is('dragging', !!dragState.draggingNode),\n ns.is('drop-not-allow', !dragState.allowDrop),\n ns.is('drop-inner', dragState.dropType === 'inner'),\n { [ns.m('highlight-current')]: highlightCurrent },\n ]\"\n role=\"tree\"\n >\n <el-tree-node\n v-for=\"child in root.childNodes\"\n :key=\"getNodeKey(child)\"\n :node=\"child\"\n :props=\"props\"\n :accordion=\"accordion\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :render-content=\"renderContent\"\n @node-expand=\"handleNodeExpand\"\n />\n <div v-if=\"isEmpty\" :class=\"ns.e('empty-block')\">\n <slot name=\"empty\">\n <span :class=\"ns.e('empty-text')\">\n {{ emptyText ?? t('el.tree.emptyText') }}\n </span>\n </slot>\n </div>\n <div\n v-show=\"dragState.showDropIndicator\"\n ref=\"dropIndicator$\"\n :class=\"ns.e('drop-indicator')\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { formItemContextKey } from '@element-plus/components/form'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport ElTreeNode from './tree-node.vue'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { useDragNodeHandler } from './model/useDragNode'\nimport { useKeydown } from './model/useKeydown'\nimport { ROOT_TREE_INJECTION_KEY } from './tokens'\nimport { treeEmits, treeProps } from './tree'\n\nimport type Node from './model/node'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type { FilterValue, TreeData, TreeKey, TreeNodeData } from './tree.type'\n\nexport default defineComponent({\n name: 'ElTree',\n components: { ElTreeNode },\n props: treeProps,\n emits: treeEmits,\n setup(props, ctx) {\n const { t } = useLocale()\n const ns = useNamespace('tree')\n\n const store = ref<TreeStore>(\n new TreeStore({\n key: props.nodeKey,\n data: props.data,\n lazy: props.lazy,\n props: props.props,\n load: props.load,\n currentNodeKey: props.currentNodeKey,\n checkStrictly: props.checkStrictly,\n checkDescendants: props.checkDescendants,\n defaultCheckedKeys: props.defaultCheckedKeys,\n defaultExpandedKeys: props.defaultExpandedKeys,\n autoExpandParent: props.autoExpandParent,\n defaultExpandAll: props.defaultExpandAll,\n filterNodeMethod: props.filterNodeMethod,\n })\n )\n\n store.value.initialize()\n\n const root = ref<Node>(store.value.root)\n const currentNode = ref<Node | null>(null)\n const el$ = ref<Nullable<HTMLElement>>(null)\n const dropIndicator$ = ref<Nullable<HTMLElement>>(null)\n\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n\n const { dragState } = useDragNodeHandler({\n props,\n ctx,\n el$,\n dropIndicator$,\n store,\n })\n\n useKeydown({ el$ }, store)\n\n const instance = getCurrentInstance()\n\n const isSelectTree = computed(() => {\n let parent = instance?.parent\n while (parent) {\n if (parent.type.name === 'ElTreeSelect') {\n return true\n }\n parent = parent.parent\n }\n return false\n })\n\n const isEmpty = computed(() => {\n const { childNodes } = root.value\n return (\n (!childNodes ||\n childNodes.length === 0 ||\n childNodes.every(({ visible }) => !visible)) &&\n !isSelectTree.value\n )\n })\n\n watch(\n () => props.currentNodeKey,\n (newVal) => {\n store.value.setCurrentNodeKey(newVal ?? null)\n }\n )\n\n watch(\n () => props.defaultCheckedKeys,\n (newVal, oldVal) => {\n if (isEqual(newVal, oldVal)) return\n\n store.value.setDefaultCheckedKey(newVal ?? [])\n }\n )\n\n watch(\n () => props.defaultExpandedKeys,\n (newVal) => {\n store.value.setDefaultExpandedKeys(newVal ?? [])\n }\n )\n\n watch(\n () => props.data,\n (newVal) => {\n store.value.setData(newVal)\n },\n { deep: true }\n )\n\n watch(\n () => props.checkStrictly,\n (newVal) => {\n store.value.checkStrictly = newVal\n }\n )\n\n const filter = (value: FilterValue) => {\n if (!props.filterNodeMethod)\n throw new Error('[Tree] filterNodeMethod is required when filter')\n store.value.filter(value)\n }\n\n const getNodeKey = (node: Node) => {\n return getNodeKeyUtil(props.nodeKey, node.data)\n }\n\n const requireNodeKey = (methodName: string) => {\n if (!props.nodeKey) {\n throw new Error(`[Tree] nodeKey is required in ${methodName}`)\n }\n }\n\n const getNodePath = (data: TreeKey | TreeNodeData) => {\n requireNodeKey('getNodePath')\n\n const node = store.value.getNode(data)\n if (!node) return []\n const path = [node.data]\n let parent = node.parent\n while (parent && parent !== root.value) {\n path.push(parent.data)\n parent = parent.parent\n }\n return path.reverse()\n }\n\n const getCheckedNodes = (\n leafOnly?: boolean,\n includeHalfChecked?: boolean\n ): TreeNodeData[] => {\n return store.value.getCheckedNodes(leafOnly, includeHalfChecked)\n }\n\n const getCheckedKeys = (leafOnly?: boolean): TreeKey[] => {\n return store.value.getCheckedKeys(leafOnly)\n }\n\n const getCurrentNode = () => {\n const currentNode = store.value.getCurrentNode()\n return currentNode ? currentNode.data : null\n }\n\n const getCurrentKey = (): TreeKey | null => {\n requireNodeKey('getCurrentKey')\n\n const currentNode = getCurrentNode()\n return currentNode ? currentNode[props.nodeKey!] : null\n }\n\n const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedNodes')\n\n store.value.setCheckedNodes(nodes, leafOnly)\n }\n\n const setCheckedKeys = (keys: TreeKey[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedKeys')\n\n store.value.setCheckedKeys(keys, leafOnly)\n }\n\n const setChecked = (\n data: TreeKey | TreeNodeData,\n checked: boolean,\n deep: boolean\n ) => {\n store.value.setChecked(data, checked, deep)\n }\n\n const getHalfCheckedNodes = (): TreeNodeData[] => {\n return store.value.getHalfCheckedNodes()\n }\n\n const getHalfCheckedKeys = (): TreeKey[] => {\n return store.value.getHalfCheckedKeys()\n }\n\n const setCurrentNode = (node: Node, shouldAutoExpandParent = true) => {\n requireNodeKey('setCurrentNode')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded(node)\n store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n })\n }\n\n const setCurrentKey = (\n key: TreeKey | null = null,\n shouldAutoExpandParent = true\n ) => {\n requireNodeKey('setCurrentKey')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded()\n store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\n })\n }\n\n const getNode = (data: TreeKey | TreeNodeData): Node => {\n return store.value.getNode(data)\n }\n\n const remove = (data: TreeNodeData | Node) => {\n store.value.remove(data)\n }\n\n const append = (\n data: TreeNodeData,\n parentNode: TreeNodeData | TreeKey | Node\n ) => {\n store.value.append(data, parentNode)\n }\n\n const insertBefore = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertBefore(data, refNode)\n }\n\n const insertAfter = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertAfter(data, refNode)\n }\n\n const handleNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const updateKeyChildren = (key: TreeKey, data: TreeData) => {\n requireNodeKey('updateKeyChild')\n\n store.value.updateChildren(key, data)\n }\n\n provide(ROOT_TREE_INJECTION_KEY, {\n ctx,\n props,\n store,\n root,\n currentNode,\n instance,\n })\n\n provide(formItemContextKey, undefined)\n\n return {\n ns,\n // ref\n store,\n root,\n currentNode,\n dragState,\n el$,\n dropIndicator$,\n\n // computed\n isEmpty,\n\n // methods\n filter,\n getNodeKey,\n getNodePath,\n getCheckedNodes,\n getCheckedKeys,\n getCurrentNode,\n getCurrentKey,\n setCheckedNodes,\n setCheckedKeys,\n setChecked,\n getHalfCheckedNodes,\n getHalfCheckedKeys,\n setCurrentNode,\n setCurrentKey,\n t,\n getNode,\n remove,\n append,\n insertBefore,\n insertAfter,\n handleNodeExpand,\n updateKeyChildren,\n }\n },\n})\n</script>\n"],"names":["getNodeKey","getNodeKeyUtil","currentNode","instance","_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock","_renderSlot","_createElementVNode","_toDisplayString","_withDirectives","_vShow"],"mappings":"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"}