{"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  getCurrentInstance,\n  watch,\n  Slots,\n  toRefs,\n  reactive,\n  nextTick,\n  Transition,\n} from 'vue';\nimport props from './submenu-props';\nimport { TdMenuInterface, TdSubMenuInterface, TdMenuItem } from './types';\nimport FakeArrow from '../common-components/fake-arrow';\nimport useRipple from '../hooks/useRipple';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { Popup, PopupPlacement } from '../popup';\nimport { isFunction } from 'lodash-es';\nimport { TdSubmenuProps } from './type';\nimport useCollapseAnimation from '../hooks/useCollapseAnimation';\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    const submenu = inject<TdSubMenuInterface>('TdSubmenu', {});\n    const { setSubPopup, closeParentPopup } = submenu;\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    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      `${classPrefix.value}-menu__item-spacer`,\n      `${classPrefix.value}-menu__item-spacer--${isHead && !isNested.value ? 'bottom' : 'right'}`,\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          const related = e.relatedTarget as HTMLElement;\n          if (loopInPopup(related)) return;\n          handleMouseLeavePopup(e);\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      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      }, 0);\n    };\n\n    const targetInPopup = (el: HTMLElement) => el?.classList.contains(`${classPrefix.value}-menu__popup`);\n    const loopInPopup = (el: HTMLElement): boolean => {\n      if (!el) return false;\n      return targetInPopup(el) || loopInPopup(el.parentElement);\n    };\n\n    const handleMouseLeave = (e: MouseEvent) => {\n      setTimeout(() => {\n        const inPopup = targetInPopup(e.relatedTarget as HTMLElement);\n\n        if (isCursorInPopup.value || inPopup) return;\n        popupVisible.value = false;\n      }, 0);\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        popupVisible.value = false;\n      }\n\n      closeParentPopup?.(e);\n    };\n    const handleEnterPopup = () => {\n      isCursorInPopup.value = true;\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    return () => {\n      let child = null;\n      let events = {};\n\n      if (mode.value === 'popup') {\n        events = {\n          onMouseenter: handleMouseEnter,\n          onMouseleave: handleMouseLeave,\n        };\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        </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","mode","computed","expandType","menuItems","ref","isActive","indexOf","popupVisible","isCursorInPopup","rippleColor","isOpen","_expandValues$value","includes","isNested","popupWrapperRef","subPopupRef","submenuRef","transitionClass","useRipple","classes","concat","_defineProperty","disabled","overlayInnerClassName","_props2$popupProps","popupProps","overlayClassName","_props2$popupProps2","submenuClass","subClass","arrowClass","provide","reactive","addMenuItem","item","push","e","related","relatedTarget","loopInPopup","handleMouseLeavePopup","passSubPopupRefToParent","val","isFunction","handleMouseEnter","setTimeout","nextTick","then","targetInPopup","el","classList","contains","parentElement","handleMouseLeave","inPopup","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","events","onMouseenter","onMouseleave","Object","keys","length","_mergeProps"],"mappings":"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"}