UNPKG

tdesign-vue-next

Version:
1 lines 31.3 kB
{"version":3,"file":"submenu.mjs","sources":["../../../components/menu/submenu.tsx"],"sourcesContent":["import {\n defineComponent,\n computed,\n inject,\n ref,\n provide,\n onMounted,\n onBeforeUnmount,\n getCurrentInstance,\n watch,\n Slots,\n toRefs,\n reactive,\n nextTick,\n Transition,\n} from 'vue';\nimport { isFunction } from 'lodash-es';\nimport { useRipple, useContent, useTNodeJSX, usePrefixClass, useCollapseAnimation } from '@tdesign/shared-hooks';\n\nimport props from './submenu-props';\nimport { TdMenuInterface, TdSubMenuInterface, TdMenuItem } from './types';\nimport FakeArrow from '../common-components/fake-arrow';\n\nimport { Popup, PopupPlacement } from '../popup';\n\nimport { TdSubmenuProps } from './type';\n\nexport default defineComponent({\n name: 'TSubmenu',\n props,\n setup(props: TdSubmenuProps, { attrs, slots }) {\n const classPrefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n\n const instance = getCurrentInstance();\n const menu = inject<TdMenuInterface>('TdMenu');\n const { value } = toRefs(props);\n const { theme, activeValues, expandValues, isHead, open } = menu;\n\n const submenu = inject<TdSubMenuInterface>('TdSubmenu', {});\n const { setSubPopup, closeParentPopup, cancelHideTimer } = submenu;\n\n const mode = computed(() => attrs.expandType || menu.mode.value);\n\n const menuItems = ref([]); // 因composition-api的缺陷,不用reactive, 详见:https://github.com/vuejs/composition-api/issues/637\n const isActive = computed(() => activeValues.value.indexOf(props.value) > -1);\n const popupVisible = ref(false);\n const isCursorInPopup = ref(false);\n const rippleColor = computed(() => (theme.value === 'light' ? '#E7E7E7' : '#383838'));\n const isOpen = computed(() => {\n if (mode.value === 'popup') {\n return popupVisible.value;\n }\n return expandValues ? expandValues.value?.includes(props.value) : false;\n });\n const isNested = ref(false); // 是否嵌套\n\n const popupWrapperRef = ref<HTMLElement>();\n const subPopupRef = ref<HTMLElement>();\n const submenuRef = ref<HTMLElement>();\n const transitionClass = usePrefixClass('slide-down');\n useRipple(submenuRef, rippleColor);\n\n // 存储 setTimeout 的 timer ID,用于清除定时器\n const showTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n const hideTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n\n const clearTimers = () => {\n if (showTimer.value !== null) {\n clearTimeout(showTimer.value);\n showTimer.value = null;\n }\n if (hideTimer.value !== null) {\n clearTimeout(hideTimer.value);\n hideTimer.value = null;\n }\n };\n\n const classes = computed(() => [\n `${classPrefix.value}-submenu`,\n {\n [`${classPrefix.value}-is-disabled`]: props.disabled,\n [`${classPrefix.value}-is-opened`]: isOpen.value,\n },\n ]);\n const overlayInnerClassName = computed(() => [\n `${classPrefix.value}-menu__popup`,\n `${classPrefix.value}-is-${isHead ? 'horizontal' : 'vertical'}`,\n {\n [`${classPrefix.value}-is-opened`]: popupVisible.value,\n },\n props.popupProps?.overlayInnerClassName,\n ]);\n const overlayClassName = computed(() => [\n `${classPrefix.value}-menu--${theme.value}`,\n isHead && `${classPrefix.value}-is-head-menu`,\n { [`${classPrefix.value}-menu-is-nested`]: isNested.value },\n props.popupProps?.overlayClassName,\n ]);\n const submenuClass = computed(() => [\n `${classPrefix.value}-menu__item`,\n {\n [`${classPrefix.value}-is-disabled`]: props.disabled,\n [`${classPrefix.value}-is-opened`]: isOpen.value,\n [`${classPrefix.value}-is-active`]: isActive.value,\n },\n ]);\n const subClass = computed(() => [\n `${classPrefix.value}-menu__sub`,\n {\n [`${classPrefix.value}-is-opened`]: isOpen.value,\n },\n ]);\n const arrowClass = computed(() => [\n {\n [`${classPrefix.value}-fake-arrow--active`]: isOpen.value,\n },\n ]);\n\n provide<TdSubMenuInterface>(\n 'TdSubmenu',\n reactive({\n value,\n addMenuItem: (item: TdMenuItem) => {\n menuItems.value.push(item);\n if (submenu) {\n submenu.addMenuItem(item);\n }\n },\n setSubPopup: (ref: HTMLElement) => {\n subPopupRef.value = ref;\n },\n closeParentPopup: (e: MouseEvent) => {\n // 不再检查 relatedTarget,直接触发父级的延迟隐藏\n // 如果鼠标真的停留在父级,父级的 handleEnterPopup 会取消定时器\n // 如果鼠标继续离开,定时器会触发隐藏\n\n clearTimers();\n\n // 设置父级的延迟隐藏\n hideTimer.value = setTimeout(() => {\n popupVisible.value = false;\n hideTimer.value = null;\n }, 100);\n\n // 继续通知上级父级\n if (isFunction(closeParentPopup)) {\n closeParentPopup(e);\n }\n },\n cancelHideTimer: () => {\n // 取消当前级别的隐藏定时器\n if (hideTimer.value !== null) {\n clearTimeout(hideTimer.value);\n hideTimer.value = null;\n }\n // 递归取消所有父级的隐藏定时器\n if (isFunction(cancelHideTimer)) {\n cancelHideTimer();\n }\n },\n }),\n );\n\n const passSubPopupRefToParent = (val: HTMLElement) => {\n if (isFunction(setSubPopup)) {\n setSubPopup(val);\n }\n };\n\n // methods\n const handleMouseEnter = () => {\n if (props.disabled) return;\n\n clearTimers();\n\n // 通知父级取消隐藏定时器\n if (isFunction(cancelHideTimer)) {\n cancelHideTimer();\n }\n\n showTimer.value = setTimeout(() => {\n if (!popupVisible.value) {\n open(props.value);\n\n // popupVisible设置为TRUE之后打开popup,因此需要在nextTick中确保可以拿到ref值\n nextTick().then(() => {\n passSubPopupRefToParent(popupWrapperRef.value);\n });\n }\n popupVisible.value = true;\n showTimer.value = null;\n }, 0);\n };\n\n const targetInPopup = (el: HTMLElement) => el?.classList.contains(`${classPrefix.value}-menu__popup`);\n\n const handleMouseLeave = (e: MouseEvent) => {\n clearTimers();\n\n hideTimer.value = setTimeout(() => {\n const inPopup = targetInPopup(e.relatedTarget as HTMLElement);\n\n if (isCursorInPopup.value || inPopup) return;\n popupVisible.value = false;\n hideTimer.value = null;\n }, 100);\n };\n\n const handleMouseLeavePopup = (e: any) => {\n const { toElement, relatedTarget } = e;\n let target = toElement || relatedTarget;\n\n if (target === subPopupRef.value) return;\n\n const isSubmenu = (el: Element) => el === submenuRef.value;\n while (target !== null && target !== document && !isSubmenu(target)) {\n target = target.parentNode;\n }\n\n isCursorInPopup.value = false;\n\n if (!isSubmenu(target)) {\n clearTimers();\n\n // 使用延迟隐藏,避免在子项之间移动时闪烁\n hideTimer.value = setTimeout(() => {\n popupVisible.value = false;\n hideTimer.value = null;\n }, 100);\n\n // 立即通知父级也开始延迟隐藏\n closeParentPopup?.(e);\n }\n };\n const handleEnterPopup = () => {\n isCursorInPopup.value = true;\n\n // 进入 popup 时清除隐藏定时器\n if (hideTimer.value !== null) {\n clearTimeout(hideTimer.value);\n hideTimer.value = null;\n }\n\n // 通知父级取消隐藏定时器\n if (isFunction(cancelHideTimer)) {\n cancelHideTimer();\n }\n };\n\n const handleSubmenuItemClick = () => {\n if (props.disabled) return;\n open(props.value);\n };\n\n const renderPopup = (triggerElement: Slots[]) => {\n let placement: PopupPlacement = 'right-top';\n if (!isNested.value && isHead) {\n placement = 'bottom-left';\n }\n\n const popupWrapper = (\n <div\n ref={popupWrapperRef}\n class={[\n `${classPrefix.value}-menu__spacer`,\n `${classPrefix.value}-menu__spacer--${!isNested.value && isHead ? 'top' : 'left'}`,\n ]}\n onMouseenter={handleEnterPopup}\n onMouseleave={handleMouseLeavePopup}\n >\n <ul class={`${classPrefix.value}-menu__popup-wrapper`}>{renderContent('default', 'content')}</ul>\n </div>\n );\n\n const slots = {\n content: () => popupWrapper,\n };\n\n const realPopup = (\n <Popup\n {...(props.popupProps ?? {})}\n overlayInnerClassName={[...overlayInnerClassName.value]}\n overlayClassName={[...overlayClassName.value]}\n visible={popupVisible.value}\n placement={placement}\n v-slots={slots}\n >\n <div ref={submenuRef} class={submenuClass.value}>\n {triggerElement}\n </div>\n </Popup>\n );\n\n return realPopup;\n };\n\n const renderHeadSubmenu = () => {\n const icon = renderTNodeJSX('icon');\n const normalSubmenu = [\n <div ref={submenuRef} class={submenuClass.value} onClick={handleSubmenuItemClick}>\n {icon}\n <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>\n </div>,\n <ul style=\"opacity: 0; width: 0; height: 0; overflow: hidden\">{renderContent('default', 'content')}</ul>,\n ];\n\n const needRotate = mode.value === 'popup' && isNested.value;\n\n const triggerElement = [\n icon,\n <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>,\n <FakeArrow\n overlayClassName={/menu/i.test(instance?.parent.proxy.$options.name) ? arrowClass.value : null}\n overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)` }}\n />,\n ];\n\n return mode.value === 'normal' ? normalSubmenu : renderPopup(triggerElement);\n };\n\n const renderSubmenu = () => {\n const hasContent = slots.content || slots.default;\n const icon = renderTNodeJSX('icon');\n const child = renderContent('default', 'content');\n let parent = instance.parent;\n let paddingLeft = 44;\n\n while (parent && parent.type.name !== 'TMenu') {\n if (parent.type.name === 'TSubmenu') {\n paddingLeft += 16;\n }\n parent = parent.parent;\n }\n\n const { beforeEnter, enter, afterEnter, beforeLeave, leave, afterLeave } = useCollapseAnimation();\n\n const needRotate = mode.value === 'popup' && isNested.value;\n\n const normalSubmenu = [\n <div ref={submenuRef} class={submenuClass.value} onClick={handleSubmenuItemClick}>\n {icon}\n <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>\n {hasContent && (\n <FakeArrow\n overlayClassName={arrowClass.value}\n overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)` }}\n />\n )}\n </div>,\n <Transition\n name={transitionClass.value}\n onBeforeEnter={beforeEnter}\n onEnter={enter}\n onAfterEnter={afterEnter}\n onBeforeLeave={beforeLeave}\n onLeave={leave}\n onAfterLeave={afterLeave}\n >\n <ul v-show={isOpen.value} class={subClass.value} style={{ '--padding-left': `${paddingLeft}px` }}>\n {child}\n </ul>\n </Transition>,\n ];\n\n const triggerElement = [\n icon,\n <span class={[`${classPrefix.value}-menu__content`]}>{renderTNodeJSX('title', { silent: true })}</span>,\n <FakeArrow\n overlayClassName={/menu/i.test(parent.proxy.$options.name) ? arrowClass.value : null}\n overlayStyle={{ transform: `rotate(${needRotate ? -90 : 0}deg)`, 'margin-left': 'auto' }}\n />,\n ];\n\n return mode.value === 'normal' ? normalSubmenu : renderPopup(triggerElement);\n };\n\n watch(popupVisible, (visible) => {\n menu.open(props.value, visible ? 'add' : 'remove');\n });\n\n watch(popupWrapperRef, () => {\n // 第一次触发nextTick会取空值,导致subPopupRef拿不到对应的DOM\n passSubPopupRefToParent(popupWrapperRef.value);\n });\n\n onMounted(() => {\n menu?.vMenu?.add({ value: props.value, parent: submenu?.value, vnode: slots.default });\n let node = instance.parent;\n\n while (node && !/^t(head)?menu/i.test(node?.type.name)) {\n if (/submenu/i.test(node?.type.name)) {\n isNested.value = true;\n break;\n }\n node = node?.parent;\n }\n });\n\n // Cleanup timers on unmount to prevent memory leaks\n onBeforeUnmount(() => {\n clearTimers();\n });\n\n return () => {\n let child = null;\n let events = {};\n let virtualChild;\n\n if (mode.value === 'popup') {\n events = {\n onMouseenter: handleMouseEnter,\n onMouseleave: handleMouseLeave,\n };\n // popup模式下且存在多层的特殊封装场景中,需要将子节点挂载进行计算高亮\n if (activeValues.value.length < 2)\n virtualChild = <div style=\"display:none\">{renderContent('default', 'content')}</div>;\n }\n if (Object.keys(slots).length > 0) {\n child = isHead ? renderHeadSubmenu() : renderSubmenu();\n }\n\n return (\n <li class={classes.value} {...events}>\n {child}\n {virtualChild}\n </li>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","attrs","_ref","slots","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","instance","getCurrentInstance","menu","inject","_toRefs","toRefs","value","theme","activeValues","expandValues","isHead","open","submenu","setSubPopup","closeParentPopup","cancelHideTimer","mode","computed","expandType","menuItems","ref","isActive","indexOf","popupVisible","isCursorInPopup","rippleColor","isOpen","_expandValues$value","includes","isNested","popupWrapperRef","subPopupRef","submenuRef","transitionClass","useRipple","showTimer","hideTimer","clearTimers","clearTimeout","classes","concat","_defineProperty","disabled","overlayInnerClassName","_props2$popupProps","popupProps","overlayClassName","_props2$popupProps2","submenuClass","subClass","arrowClass","provide","reactive","addMenuItem","item","push","e","setTimeout","isFunction","passSubPopupRefToParent","val","handleMouseEnter","nextTick","then","targetInPopup","el","classList","contains","handleMouseLeave","inPopup","relatedTarget","handleMouseLeavePopup","toElement","target","isSubmenu","document","parentNode","handleEnterPopup","handleSubmenuItemClick","renderPopup","triggerElement","_props2$popupProps3","placement","popupWrapper","_createVNode","content","realPopup","_toConsumableArray","_objectSpread","_default","renderHeadSubmenu","icon","normalSubmenu","silent","needRotate","test","parent","proxy","$options","transform","renderSubmenu","hasContent","child","paddingLeft","type","_useCollapseAnimation","useCollapseAnimation","beforeEnter","enter","afterEnter","beforeLeave","leave","afterLeave","FakeArrow","Transition","_withDirectives","_vShow","watch","visible","onMounted","_menu$vMenu","vMenu","add","vnode","node","_node","_node2","_node3","onBeforeUnmount","events","virtualChild","onMouseenter","onMouseleave","length","Object","keys","_mergeProps"],"mappings":"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"}