UNPKG

hongluan-ui

Version:
1 lines 3.02 kB
{"version":3,"file":"tree-node.mjs","sources":["../../../../../../packages/components/tree-v2/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n ref=\"node$\"\n class=\"tree-node\"\n :class=\"{\n 'is-expanded': expanded,\n 'is-current': current,\n 'is-focusable': !disabled,\n 'is-checked': !disabled && checked,\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 >\n <div\n class=\"tree-node-content\"\n :style=\"{ paddingLeft: `${(node.level - 1) * indent}px` }\"\n >\n <span\n :class=\"[\n {\n 'is-leaf': node.isLeaf,\n expanded: !node.isLeaf && expanded\n },\n 'tree-node-arrow',\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <slot name=\"icon\" :expanded=\"expanded\" :isLeaf=\"node.isLeaf\">\n <hl-icon>\n <system-caret />\n </hl-icon>\n </slot>\n </span>\n <hl-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"checked\"\n :indeterminate=\"indeterminate\"\n :disabled=\"disabled\"\n @change=\"handleCheckChange\"\n @click.stop\n />\n <node-content :node=\"node\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { SystemCaret } from '@hongluan-ui/components/system-icon'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport HlCheckbox from '@hongluan-ui/components/checkbox'\nimport NodeContent from './tree-node-content'\nimport { ROOT_TREE_INJECTION_KEY, NODE_CONTEXTMENU, treeNodeProps, treeNodeEmits } from './virtual-tree'\nimport type { CheckboxValueType } from '@hongluan-ui/components/checkbox'\n\ndefineOptions({\n name: 'TreeNode',\n})\n\nconst props = defineProps(treeNodeProps)\nconst emit = defineEmits(treeNodeEmits)\n\nconst tree = inject(ROOT_TREE_INJECTION_KEY)\n\nconst indent = computed(() => {\n return tree?.props.indent ?? 16\n})\n\nconst handleClick = (e: MouseEvent) => {\n emit('click', props.node, e)\n}\nconst handleExpandIconClick = () => {\n emit('toggle', props.node)\n}\nconst handleCheckChange = (value: CheckboxValueType) => {\n emit('check', props.node, value)\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":[],"mappings":";;;;;;;;oCA6Dc;AAAA,EACZ,MAAM;AACR;;;;;;;AAKA,UAAM,OAAO,OAAO,uBAAuB;AAE3C,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO;AAAsB;AAG/B;AACE,0BAAoB;AAAO;AAE7B;AACE,+BAAyB;AAAA;AAE3B;AACE;AAA+B;AAEjC;AACE,UAAI,+BAA+B;AACjC,cAAM;AACN;AAAqB;AAEvB;AAAoE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}