element-plus
Version:
A Component Library for Vue 3
1 lines • 8.74 kB
Source Map (JSON)
{"version":3,"file":"tree-node.mjs","sources":["../../../../../../packages/components/tree-v2/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n ref=\"node$\"\n :class=\"[\n ns.b('node'),\n ns.is('expanded', expanded),\n ns.is('current', current),\n ns.is('focusable', !disabled),\n ns.is('checked', !disabled && checked),\n getNodeClass(node),\n ]\"\n role=\"treeitem\"\n tabindex=\"-1\"\n :aria-expanded=\"expanded\"\n :aria-disabled=\"disabled\"\n :aria-checked=\"checked\"\n :data-key=\"node?.key\"\n @click.stop=\"handleClick\"\n @contextmenu=\"handleContextMenu\"\n @dragover.prevent\n @dragenter.prevent\n @drop.stop=\"handleDrop\"\n >\n <div\n :class=\"ns.be('node', 'content')\"\n :style=\"{\n paddingLeft: `${(node.level - 1) * indent}px`,\n height: itemSize + 'px',\n }\"\n >\n <el-icon\n v-if=\"icon\"\n :class=\"[\n ns.is('leaf', !!node?.isLeaf),\n ns.is('hidden', hiddenExpandIcon),\n {\n expanded: !node?.isLeaf && expanded,\n },\n ns.be('node', 'expand-icon'),\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <component :is=\"icon\" />\n </el-icon>\n <el-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"checked\"\n :indeterminate=\"indeterminate\"\n :disabled=\"disabled\"\n @change=\"handleCheckChange\"\n @click.stop\n />\n <el-node-content :node=\"{ ...node, expanded }\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElIcon from '@element-plus/components/icon'\nimport { CaretRight } from '@element-plus/icons-vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isFunction, isString } from '@element-plus/utils'\nimport ElNodeContent from './tree-node-content'\nimport {\n NODE_CONTEXTMENU,\n ROOT_TREE_INJECTION_KEY,\n treeNodeEmits,\n treeNodeProps,\n} from './virtual-tree'\n\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\nimport type { TreeNode } from './types'\n\ndefineOptions({\n name: 'ElTreeNode',\n})\n\nconst props = defineProps(treeNodeProps)\nconst emit = defineEmits(treeNodeEmits)\n\nconst tree = inject(ROOT_TREE_INJECTION_KEY)\nconst ns = useNamespace('tree')\n\nconst indent = computed(() => tree?.props.indent ?? 16)\nconst icon = computed(() => tree?.props.icon ?? CaretRight)\n\nconst getNodeClass = (node: TreeNode) => {\n const nodeClassFunc = tree?.props.props.class\n if (!nodeClassFunc) return {}\n\n let className\n if (isFunction(nodeClassFunc)) {\n const { data } = node\n className = nodeClassFunc(data, node)\n } else {\n className = nodeClassFunc\n }\n\n return isString(className) ? { [className]: true } : className\n}\n\nconst handleClick = (e: MouseEvent) => {\n emit('click', props.node, e)\n}\nconst handleDrop = (e: DragEvent) => {\n emit('drop', props.node, e)\n}\nconst handleExpandIconClick = () => {\n emit('toggle', props.node)\n}\nconst handleCheckChange = (value: CheckboxValueType) => {\n emit('check', props.node, value)\n}\n\nconst handleContextMenu = (event: Event) => {\n if (tree?.instance?.vnode?.props?.['onNodeContextmenu']) {\n event.stopPropagation()\n event.preventDefault()\n }\n tree?.ctx.emit(NODE_CONTEXTMENU, event, props.node?.data, props.node)\n}\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","expanded","current","disabled","checked","node","_withModifiers","_createElementVNode","_normalizeStyle","itemSize","_openBlock","_createBlock","hiddenExpandIcon","_resolveDynamicComponent","showCheckbox","indeterminate","_createCommentVNode","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;AA+EA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEP,IAAA,MAAA,IAAA,GAAO,OAAO,uBAAuB,CAAA,CAAA;AACrC,IAAA,MAAA,EAAA,GAAK,aAAa,MAAM,CAAA,CAAA;AAE9B,IAAM,MAAA,MAAA,GAAS,SAAS,MAAA;;AAAM,MAAM,OAAA,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA,CAAM,WAAZ,IAAsB,GAAA,EAAA,GAAA,EAAA,CAAA;AAAA,KAAE,CAAA,CAAA;AACtD,IAAM,MAAA,IAAA,GAAO,SAAS,MAAA;;AAAM,MAAM,OAAA,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA,CAAM,SAAZ,IAAoB,GAAA,EAAA,GAAA,UAAA,CAAA;AAAA,KAAU,CAAA,CAAA;AAEpD,IAAA,MAAA,YAAA,GAAe,CAAC,IAAmB,KAAA;AACjC,MAAA,MAAA,aAAA,GAAgB,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA,CAAM,KAAM,CAAA,KAAA,CAAA;AACpC,MAAA,IAAA,CAAC,aAAA;AAAe,QAAA,OAAO,EAAC,CAAA;AAExB,MAAA,IAAA,SAAA,CAAA;AACA,MAAA,IAAA,UAAA,CAAW,aAAa,CAAG,EAAA;AACvB,QAAA,MAAA,EAAE,MAAS,GAAA,IAAA,CAAA;AACL,QAAA,SAAA,GAAA,aAAA,CAAc,MAAM,IAAI,CAAA,CAAA;AAAA,OAC/B,MAAA;AACO,QAAA,SAAA,GAAA,aAAA,CAAA;AAAA,OACd;AAEO,MAAA,OAAA,SAAS,SAAS,CAAA,GAAI,EAAE,CAAC,SAAA,GAAY,MAAS,GAAA,SAAA,CAAA;AAAA,KACvD,CAAA;AAEM,IAAA,MAAA,WAAA,GAAc,CAAC,CAAkB,KAAA;AAChC,MAAA,IAAA,CAAA,OAAA,EAAS,KAAM,CAAA,IAAA,EAAM,CAAC,CAAA,CAAA;AAAA,KAC7B,CAAA;AACM,IAAA,MAAA,UAAA,GAAa,CAAC,CAAiB,KAAA;AAC9B,MAAA,IAAA,CAAA,MAAA,EAAQ,KAAM,CAAA,IAAA,EAAM,CAAC,CAAA,CAAA;AAAA,KAC5B,CAAA;AACA,IAAA,MAAM,wBAAwB,MAAM;AAC7B,MAAA,IAAA,CAAA,QAAA,EAAU,MAAM,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA;AACM,IAAA,MAAA,iBAAA,GAAoB,CAAC,KAA6B,KAAA;AACjD,MAAA,IAAA,CAAA,OAAA,EAAS,KAAM,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,KACjC,CAAA;AAEM,IAAA,MAAA,iBAAA,GAAoB,CAAC,KAAiB,KAAA;;AAC1C,MAAA,IAAA,CAAI,8CAAM,QAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,UAAhB,IAAuB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,KAAvB,mBAA+B,mBAAsB,CAAA,EAAA;AACvD,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,OACvB;AACM,MAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,GAAA,CAAI,KAAK,gBAAkB,EAAA,KAAA,EAAA,CAAO,WAAM,IAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,MAAM,KAAM,CAAA,IAAA,CAAA,CAAA;AAAA,KAClE,CAAA;;;wBAzHE,EAAAA,kBAAA,CAqDM,KAAA,EAAA;AAAA,QApDJ,GAAI,EAAA,OAAA;AAAA,QACH,OAAKC,cAAA,CAAA;AAAA,UAAUC,SAAG,CAAA,CAAA,CAAC,MAAA,CAAA;AAAA,UAAgBA,MAAA,EAAA,CAAA,CAAG,EAAE,CAAA,UAAA,EAAaC,KAAQ,QAAA,CAAA;AAAA,UAASD,MAAA,EAAA,CAAA,CAAG,EAAE,CAAA,SAAA,EAAYE,KAAO,OAAA,CAAA;AAAA,UAASF,MAAA,EAAA,CAAA,CAAG,GAAE,WAAA,EAAA,CAAeG,KAAQ,QAAA,CAAA;AAAA,UAASH,KAAA,CAAG,EAAA,CAAA,CAAA,EAAA,CAAE,WAAaG,CAAAA,IAAAA,CAAAA,QAAYC,IAAAA,IAAAA,CAAO,OAAA,CAAA;AAAA,UAAS,YAAA,CAAaC,KAAI,IAAA,CAAA;AAAA,SAAA,CAAA;AAAA,QAQ5M,IAAK,EAAA,UAAA;AAAA,QACL,QAAS,EAAA,IAAA;AAAA,QACR,iBAAeJ,IAAAA,CAAAA,QAAAA;AAAAA,QACf,iBAAeE,IAAAA,CAAAA,QAAAA;AAAAA,QACf,gBAAcC,IAAAA,CAAAA,OAAAA;AAAAA,QACd,UAAA,EAAA,CAAUC,EAAM,GAAA,IAAA,CAAA,IAAA,KAANA,IAAM,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA;AAAA,QAChB,OAAK,EAAAC,aAAA,CAAO,WAAW,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,QACvB,aAAa,EAAA,iBAAA;AAAA,QACb,YAAQ,MAAT,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAA,cAAA,MAAA;AAAA,SAAiB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,QAChB,aAAS,MAAV,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAA,cAAA,MAAA;AAAA,SAAkB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA;AAAA,QACjB,MAAI,EAAAA,aAAA,CAAO,UAAU,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,OAAA,EAAA;AAAA,QAEtBC,kBAAA;AAAA,UA8BM,KAAA;AAAA,UAAA;AAAA,YA7BH,KAAA,EAAKR,eAAEC,KAAA,CAAA,EAAA,EAAG,EAAE,CAAA,MAAA,EAAA,SAAA,CAAA,CAAA;AAAA,YACZ,OAAKQ,cAAA,CAAA;AAAA,cAA6BH,aAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,IAAK,CAAA,KAAA,GAAK,KAAQ,MAAM,CAAA,KAAA,CAAA,EAAA,CAAA;AAAA,cAAA,MAAA,EAAsBI,KAAQ,QAAA,GAAA,IAAA;AAAA,aAAA,CAAA;AAAA;;YAMjF,KAAA,KAAA,IAAAC,SAAA,IADRC,WAaU,CAAAX,KAAA,CAAA,MAAA,CAAA,EAAA;AAAA,cAAA,GAAA,EAAA,CAAA;AAAA,cAXP,OAAKD,cAAA,CAAA;AAAA,gBAAcC,KAAA,CAAG,EAAA,CAAA,CAAA,EAAE,CAAA,MAAA,EAAWK,CAAAA,EAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,MAAM,CAAA,CAAA;AAAA,gBAAaL,MAAA,EAAA,CAAA,CAAG,EAAE,CAAA,QAAA,EAAWY,KAAgB,gBAAA,CAAA;AAAA,gBAAA;AAAA,kBAAsCP,UAAAA,EAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAM,WAAUJ,IAAAA,CAAAA,QAAAA;AAAAA,iBAAAA;AAAAA,gBAAiCD,KAAA,CAAA,EAAA,CAAG,CAAA,EAAA,CAAE,QAAA,aAAA,CAAA;AAAA,eAAA,CAAA;AAAA,cAQxL,OAAK,EAAAM,aAAA,CAAO,qBAAqB,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,aAAA,EAAA;AAAA,+BAElC,MAAwB;AAAA,iBAAxBI,WAAA,EAAAC,WAAA,CAAwBE,uBAAR,CAAA,IAAA,CAAI,KAAA,CAAA,CAAA;AAAA,eAAA,CAAA;AAAA;;YAGdC,KAAAA,YAAAA,IAAAA,SAAAA,IADRH,WAOE,CAAAX,KAAA,CAAA,UAAA,CAAA,EAAA;AAAA,cAAA,GAAA,EAAA,CAAA;AAAA,cALC,eAAaI,IAAAA,CAAAA,OAAAA;AAAAA,cACb,eAAeW,IAAAA,CAAAA,aAAAA;AAAAA,cACf,UAAUZ,IAAAA,CAAAA,QAAAA;AAAAA,cACV,QAAQ,EAAA,iBAAA;AAAA,cACR,SAAK,MAAN,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAG,cAAA,MAAA;AAAA,eAAW,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,CAAA,IAAAU,kBAAA,CAAA,MAAA,EAAA,IAAA,CAAA;AAAA,YAEbC,WAAA,CAAiDjB,KAAA,CAAA,aAAA,CAAA,EAAA;AAAA,cAA/B,MAAI,EAAA,GAAOK,KAAI,IAAA,EAAA,QAAA,EAAEJ,KAAQ,QAAA,EAAA;AAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;;;;;;;;;;;"}