UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.68 kB
{"version":3,"file":"menu.vue2.mjs","sources":["../../../../../../packages/components/cascader-panel/src/menu.vue"],"sourcesContent":["<template>\n <el-scrollbar\n :key=\"menuId\"\n tag=\"ul\"\n role=\"menu\"\n :class=\"ns.b()\"\n :wrap-class=\"ns.e('wrap')\"\n :view-class=\"[ns.e('list'), ns.is('empty', isEmpty)]\"\n @mousemove=\"handleMouseMove\"\n @mouseleave=\"clearHoverZone\"\n >\n <el-cascader-node\n v-for=\"node in nodes\"\n :key=\"node.uid\"\n :node=\"node\"\n :menu-id=\"menuId\"\n @expand=\"handleExpand\"\n />\n <div v-if=\"isLoading\" :class=\"ns.e('empty-text')\">\n <el-icon size=\"14\" :class=\"ns.is('loading')\">\n <loading />\n </el-icon>\n {{ t('el.cascader.loading') }}\n </div>\n <div v-else-if=\"isEmpty\" :class=\"ns.e('empty-text')\">\n <slot name=\"empty\">{{ t('el.cascader.noData') }}</slot>\n </div>\n <!-- eslint-disable vue/html-self-closing -->\n <svg\n v-else-if=\"panel?.isHoverMenu\"\n ref=\"hoverZone\"\n :class=\"ns.e('hover-zone')\"\n ></svg>\n <!-- eslint-enable vue/html-self-closing -->\n </el-scrollbar>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { useId, useLocale, useNamespace } from '@element-plus/hooks'\nimport { Loading } from '@element-plus/icons-vue'\nimport ElIcon from '@element-plus/components/icon'\nimport ElCascaderNode from './node.vue'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\n\ndefineOptions({\n name: 'ElCascaderMenu',\n})\n\nconst props = defineProps({\n nodes: {\n type: Array as PropType<CascaderNode[]>,\n required: true,\n },\n index: {\n type: Number,\n required: true,\n },\n})\n\nconst instance = getCurrentInstance()!\nconst ns = useNamespace('cascader-menu')\n\nconst { t } = useLocale()\nconst id = useId()\nlet activeNode: HTMLElement\nlet hoverTimer: number | undefined\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst hoverZone = ref<SVGSVGElement>()\n\nconst isEmpty = computed(() => !props.nodes.length)\nconst isLoading = computed(() => !panel.initialLoaded)\nconst menuId = computed(() => `${id.value}-${props.index}`)\n\nconst handleExpand = (e: MouseEvent) => {\n activeNode = e.target as HTMLElement\n}\n\nconst handleMouseMove = (e: MouseEvent) => {\n if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return\n\n if (activeNode.contains(e.target as HTMLElement)) {\n clearHoverTimer()\n\n const el = instance.vnode.el as HTMLElement\n const { left } = el.getBoundingClientRect()\n const { offsetWidth, offsetHeight } = el\n const startX = e.clientX - left\n const top = activeNode.offsetTop\n const bottom = top + activeNode.offsetHeight\n const scrollTop = el.querySelector(`.${ns.e('wrap')}`)?.scrollTop || 0\n\n hoverZone.value.innerHTML = `\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${top} L${offsetWidth} ${scrollTop} V${top} Z\" />\n <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${startX} ${bottom} L${offsetWidth} ${offsetHeight + scrollTop} V${bottom} Z\" />\n `\n } else if (!hoverTimer) {\n hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold)\n }\n}\n\nconst clearHoverTimer = () => {\n if (!hoverTimer) return\n clearTimeout(hoverTimer)\n hoverTimer = undefined\n}\n\nconst clearHoverZone = () => {\n if (!hoverZone.value) return\n hoverZone.value.innerHTML = ''\n clearHoverTimer()\n}\n</script>\n"],"names":["_createBlock","_unref","_normalizeClass","_createElementBlock","_Fragment","_renderList","ElCascaderNode","_createVNode","_createTextVNode","_renderSlot","_createCommentVNode"],"mappings":"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"}