element-plus
Version:
A Component Library for Vue 3
1 lines • 20.8 kB
Source Map (JSON)
{"version":3,"file":"tree.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 <span :class=\"ns.e('empty-text')\">{{\n emptyText ?? t('el.tree.emptyText')\n }}</span>\n </div>\n <div\n v-show=\"dragState.showDropIndicator\"\n ref=\"dropIndicator$\"\n :class=\"ns.e('drop-indicator')\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n provide,\n computed,\n watch,\n getCurrentInstance,\n} from 'vue'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil } 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 type Node from './model/node'\n\nimport type { ComponentInternalInstance, PropType, Component } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type {\n TreeComponentProps,\n TreeNodeData,\n TreeKey,\n TreeData,\n} from './tree.type'\n\nexport default defineComponent({\n name: 'ElTree',\n components: { ElTreeNode },\n props: {\n data: {\n type: Array,\n default: () => [],\n },\n emptyText: {\n type: String,\n },\n renderAfterExpand: {\n type: Boolean,\n default: true,\n },\n nodeKey: String,\n checkStrictly: Boolean,\n defaultExpandAll: Boolean,\n expandOnClickNode: {\n type: Boolean,\n default: true,\n },\n checkOnClickNode: Boolean,\n checkDescendants: {\n type: Boolean,\n default: false,\n },\n autoExpandParent: {\n type: Boolean,\n default: true,\n },\n defaultCheckedKeys: Array as PropType<\n TreeComponentProps['defaultCheckedKeys']\n >,\n defaultExpandedKeys: Array as PropType<\n TreeComponentProps['defaultExpandedKeys']\n >,\n currentNodeKey: [String, Number] as PropType<string | number>,\n renderContent: Function,\n showCheckbox: {\n type: Boolean,\n default: false,\n },\n draggable: {\n type: Boolean,\n default: false,\n },\n allowDrag: Function,\n allowDrop: Function,\n props: {\n type: Object as PropType<TreeComponentProps['props']>,\n default: () => ({\n children: 'children',\n label: 'label',\n disabled: 'disabled',\n }),\n },\n lazy: {\n type: Boolean,\n default: false,\n },\n highlightCurrent: Boolean,\n load: Function as PropType<TreeComponentProps['load']>,\n filterNodeMethod: Function as PropType<\n TreeComponentProps['filterNodeMethod']\n >,\n accordion: Boolean,\n indent: {\n type: Number,\n default: 18,\n },\n icon: [String, Object] as PropType<string | Component>,\n },\n emits: [\n 'check-change',\n 'current-change',\n 'node-click',\n 'node-contextmenu',\n 'node-collapse',\n 'node-expand',\n 'check',\n 'node-drag-start',\n 'node-drag-end',\n 'node-drop',\n 'node-drag-leave',\n 'node-drag-enter',\n 'node-drag-over',\n ],\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)\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 isEmpty = computed(() => {\n const { childNodes } = root.value\n return (\n !childNodes ||\n childNodes.length === 0 ||\n childNodes.every(({ visible }) => !visible)\n )\n })\n\n watch(\n () => props.defaultCheckedKeys,\n (newVal) => {\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) => {\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 getNodePath = (data: TreeKey | TreeNodeData) => {\n if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in getNodePath')\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 = (): TreeNodeData => {\n const currentNode = store.value.getCurrentNode()\n return currentNode ? currentNode.data : null\n }\n\n const getCurrentKey = (): any => {\n if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in getCurrentKey')\n const currentNode = getCurrentNode()\n return currentNode ? currentNode[props.nodeKey] : null\n }\n\n const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in setCheckedNodes')\n store.value.setCheckedNodes(nodes, leafOnly)\n }\n\n const setCheckedKeys = (keys, leafOnly?: boolean) => {\n if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in setCheckedKeys')\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 if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in setCurrentNode')\n store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n }\n\n const setCurrentKey = (key: TreeKey, shouldAutoExpandParent = true) => {\n if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in setCurrentKey')\n store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\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\n ) => {\n store.value.insertBefore(data, refNode)\n }\n\n const insertAfter = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData\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 if (!props.nodeKey)\n throw new Error('[Tree] nodeKey is required in updateKeyChild')\n store.value.updateChildren(key, data)\n }\n\n provide('RootTree', {\n ctx,\n props,\n store,\n root,\n currentNode,\n instance: getCurrentInstance(),\n } as any)\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","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock","_createElementVNode","_toDisplayString","_withDirectives","_vShow"],"mappings":"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"}