element-plus
Version:
A Component Library for Vue 3
1 lines • 11.8 kB
Source Map (JSON)
{"version":3,"file":"node2.mjs","sources":["../../../../../../packages/components/cascader-panel/src/node.vue"],"sourcesContent":["<template>\n <li\n :id=\"`${menuId}-${node.uid}`\"\n role=\"menuitem\"\n :aria-haspopup=\"!isLeaf\"\n :aria-owns=\"isLeaf ? undefined : menuId\"\n :aria-expanded=\"inExpandingPath\"\n :tabindex=\"expandable ? -1 : undefined\"\n :class=\"[\n ns.b(),\n ns.is('selectable', checkStrictly),\n ns.is('active', node.checked),\n ns.is('disabled', !expandable),\n inExpandingPath && 'in-active-path',\n inCheckedPath && 'in-checked-path',\n ]\"\n @mouseenter=\"handleHoverExpand\"\n @focus=\"handleHoverExpand\"\n @click=\"handleClick\"\n >\n <!-- prefix -->\n <el-checkbox\n v-if=\"multiple && showPrefix\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"isDisabled\"\n @click.stop\n @update:model-value=\"handleSelectCheck\"\n />\n <el-radio\n v-else-if=\"checkStrictly && showPrefix\"\n :model-value=\"checkedNodeId\"\n :label=\"node.uid\"\n :disabled=\"isDisabled\"\n @update:model-value=\"handleSelectCheck\"\n @click.stop\n >\n <!--\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n -->\n <span />\n </el-radio>\n <el-icon v-else-if=\"isLeaf && node.checked\" :class=\"ns.e('prefix')\">\n <check />\n </el-icon>\n\n <!-- content -->\n <node-content :node=\"node\" />\n <!-- postfix -->\n <template v-if=\"!isLeaf\">\n <el-icon v-if=\"node.loading\" :class=\"[ns.is('loading'), ns.e('postfix')]\">\n <loading />\n </el-icon>\n <el-icon v-else :class=\"['arrow-right', ns.e('postfix')]\">\n <arrow-right />\n </el-icon>\n </template>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport ElRadio from '@element-plus/components/radio'\nimport ElIcon from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowRight, Check, Loading } from '@element-plus/icons-vue'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\n\ndefineOptions({\n name: 'ElCascaderNode',\n})\n\nconst props = defineProps({\n node: {\n type: Object as PropType<CascaderNode>,\n required: true,\n },\n menuId: String,\n})\nconst emit = defineEmits(['expand'])\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst ns = useNamespace('cascader-node')\nconst isHoverMenu = computed(() => panel.isHoverMenu)\nconst multiple = computed(() => panel.config.multiple)\nconst checkStrictly = computed(() => panel.config.checkStrictly)\nconst showPrefix = computed(() => panel.config.showPrefix)\nconst checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\nconst isDisabled = computed(() => props.node.isDisabled)\nconst isLeaf = computed(() => props.node.isLeaf)\nconst expandable = computed(\n () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n)\nconst inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n\n// only useful in check-strictly mode\nconst inCheckedPath = computed(\n () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n)\n\nconst isInPath = (node: CascaderNode) => {\n const { level, uid } = props.node\n return node?.pathNodes[level - 1]?.uid === uid\n}\n\nconst doExpand = () => {\n if (inExpandingPath.value) return\n panel.expandNode(props.node)\n}\n\nconst doCheck = (checked: boolean) => {\n const { node } = props\n if (checked === node.checked) return\n panel.handleCheckChange(node, checked)\n}\n\nconst doLoad = () => {\n panel.lazyLoad(props.node, () => {\n if (!isLeaf.value) doExpand()\n })\n}\n\nconst handleHoverExpand = (e: Event) => {\n if (!isHoverMenu.value) return\n handleExpand()\n !isLeaf.value && emit('expand', e)\n}\n\nconst handleExpand = () => {\n const { node } = props\n // do not exclude leaf node because the menus expanded might have to reset\n if (!expandable.value || node.loading) return\n node.loaded ? doExpand() : doLoad()\n}\n\nconst handleClick = () => {\n if (\n isLeaf.value &&\n !isDisabled.value &&\n !checkStrictly.value &&\n !multiple.value\n ) {\n handleCheck(true)\n } else if (\n ((panel.config.checkOnClickNode &&\n (multiple.value || checkStrictly.value)) ||\n (isLeaf.value && panel.config.checkOnClickLeaf)) &&\n !isDisabled.value\n ) {\n handleSelectCheck(!props.node.checked)\n } else if (!isHoverMenu.value) {\n handleExpand()\n }\n}\n\nconst handleSelectCheck = (checked: CheckboxValueType | undefined) => {\n if (checkStrictly.value) {\n doCheck(checked as boolean)\n if (props.node.loaded) {\n doExpand()\n }\n } else {\n handleCheck(checked as boolean)\n }\n}\n\nconst handleCheck = (checked: boolean) => {\n if (!props.node.loaded) {\n doLoad()\n } else {\n doCheck(checked)\n !checkStrictly.value && doExpand()\n }\n}\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createCommentVNode","_createBlock","_withModifiers","_createElementVNode","_createVNode","_openBlock","_Fragment"],"mappings":"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"}