UNPKG

tdesign-vue-next

Version:
1 lines 34.2 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 ...props,\n expandType: String,\n },\n setup(\n props: TdSubmenuProps & {\n expandType: string;\n },\n { slots },\n ) {\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(() => props.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 handlePlacementChange = ({ placement }: { placement: string }) => {\n const spacerEl = popupWrapperRef.value;\n if (!spacerEl) return;\n\n const prefixClassName = `${classPrefix.value}-menu__spacer`;\n const isBottom = placement.startsWith('bottom');\n const isTop = placement.startsWith('top');\n\n spacerEl.classList.toggle(`${prefixClassName}--bottom`, isBottom);\n spacerEl.classList.toggle(`${prefixClassName}--top`, isTop);\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 {\n [`${classPrefix.value}-menu__spacer--left`]: isNested.value || !isHead,\n },\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 // 合并 popperOptions,保留原有的 modifiers\n const existingModifiers = (props.popupProps?.popperOptions as any)?.modifiers || [];\n const popperOptions = {\n ...props.popupProps?.popperOptions,\n modifiers: [\n {\n name: 'onPlacementChange',\n enabled: true,\n phase: 'main',\n fn: ({ state }: any) => {\n handlePlacementChange({ placement: state.placement });\n },\n },\n ...existingModifiers,\n ],\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 popperOptions={popperOptions}\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","_objectSpread","expandType","String","setup","slots","_ref","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","instance","getCurrentInstance","menu","inject","_toRefs","toRefs","value","theme","activeValues","expandValues","isHead","open","submenu","setSubPopup","closeParentPopup","cancelHideTimer","mode","computed","menuItems","ref","isActive","indexOf","popupVisible","isCursorInPopup","rippleColor","isOpen","_expandValues$value","includes","isNested","popupWrapperRef","subPopupRef","submenuRef","transitionClass","useRipple","showTimer","hideTimer","clearTimers","clearTimeout","handlePlacementChange","_ref2","placement","spacerEl","prefixClassName","concat","isBottom","startsWith","isTop","classList","toggle","classes","_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","contains","handleMouseLeave","inPopup","relatedTarget","handleMouseLeavePopup","toElement","target","isSubmenu","document","parentNode","handleEnterPopup","handleSubmenuItemClick","renderPopup","triggerElement","_props2$popupProps3","_props2$popupProps4","_props2$popupProps5","popupWrapper","_createVNode","content","existingModifiers","popperOptions","modifiers","enabled","phase","fn","_ref0","state","_toConsumableArray","realPopup","_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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"}