{"version":3,"file":"sub-menu.mjs","sources":["../../../../../../packages/components/menu/src/sub-menu.ts"],"sourcesContent":["import {\r\n  defineComponent,\r\n  computed,\r\n  ref,\r\n  provide,\r\n  inject,\r\n  getCurrentInstance,\r\n  watch,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n  withDirectives,\r\n  Fragment,\r\n  vShow,\r\n  h,\r\n  reactive,\r\n} from 'vue'\r\nimport { useTimeoutFn } from '@vueuse/core'\r\nimport SgCollapseTransition from '@sgui-plus/components/collapse-transition'\r\nimport SgTooltip from '@sgui-plus/components/tooltip'\r\nimport { buildProps } from '@sgui-plus/utils/props'\r\nimport { throwError } from '@sgui-plus/utils/error'\r\nimport { ArrowDown, ArrowRight } from '@sgui-plus/icons-vue'\r\nimport { SgIcon } from '@sgui-plus/components/icon'\r\nimport useMenu from './use-menu'\r\nimport { useMenuCssVar } from './use-menu-css-var'\r\n\r\nimport type { Placement } from '@sgui-plus/components/popper'\r\nimport type { ExtractPropTypes, VNodeArrayChildren } from 'vue'\r\nimport type { MenuProvider, SubMenuProvider } from './types'\r\n\r\nexport const subMenuProps = buildProps({\r\n  tooltipText: String,\r\n  index: {\r\n    type: String,\r\n    required: true,\r\n  },\r\n  disabled: Boolean,\r\n  transfer: {\r\n    type: Boolean,\r\n    default: undefined,\r\n  },\r\n} as const)\r\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\r\n\r\nconst COMPONENT_NAME = 'SgSubMenu'\r\nexport default defineComponent({\r\n  name: COMPONENT_NAME,\r\n  props: subMenuProps,\r\n\r\n  setup(props, { slots, expose }) {\r\n    const instance = getCurrentInstance()! as any\r\n    const { paddingStyle, indexPath, parentMenu } = useMenu(\r\n      instance,\r\n      computed(() => props.index)\r\n    )\r\n\r\n    // inject\r\n    const rootMenu = inject<MenuProvider>('rootMenu')\r\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\r\n\r\n    const subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`)\r\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\r\n\r\n    const items = ref<MenuProvider['items']>({})\r\n    const subMenus = ref<MenuProvider['subMenus']>({})\r\n\r\n    let timeout: (() => void) | undefined\r\n    const mouseInChild = ref(false)\r\n    const verticalTitleRef = ref<HTMLDivElement>()\r\n    const vPopper = ref<InstanceType<typeof SgTooltip> | null>(null)\r\n\r\n    // computed\r\n    const currentPlacement = computed<Placement>(() =>\r\n      mode.value === 'horizontal' && isFirstLevel.value\r\n        ? 'bottom-start'\r\n        : 'right-start'\r\n    )\r\n    const subMenuTitleIcon = computed(() => {\r\n      return (mode.value === 'horizontal' && isFirstLevel.value) ||\r\n        (mode.value === 'vertical' && !rootMenu.props.collapse)\r\n        ? ArrowDown\r\n        : ArrowRight\r\n    })\r\n    const isFirstLevel = computed(() => {\r\n      let isFirstLevel = true\r\n      let parent = instance.parent\r\n      while (parent && parent.type.name !== 'SgMenu') {\r\n        if (['SgSubMenu', 'SgMenuItemGroup'].includes(parent.type.name!)) {\r\n          isFirstLevel = false\r\n          break\r\n        } else {\r\n          parent = parent.parent\r\n        }\r\n      }\r\n      return isFirstLevel\r\n    })\r\n    const appendToBody = computed(() => {\r\n      return props.transfer === undefined\r\n        ? isFirstLevel.value\r\n        : Boolean(props.transfer)\r\n    })\r\n    const menuTransitionName = computed(() =>\r\n      rootMenu.props.collapse ? 'sg-zoom-in-left' : 'sg-zoom-in-top'\r\n    )\r\n    const fallbackPlacements = computed<Placement[]>(() =>\r\n      mode.value === 'horizontal' && isFirstLevel.value\r\n        ? [\r\n            'bottom-start',\r\n            'bottom-end',\r\n            'top-start',\r\n            'top-end',\r\n            'right-start',\r\n            'left-start',\r\n          ]\r\n        : [\r\n            'right-start',\r\n            'left-start',\r\n            'bottom-start',\r\n            'bottom-end',\r\n            'top-start',\r\n            'top-end',\r\n          ]\r\n    )\r\n    const opened = computed(() => rootMenu.openedMenus.includes(props.index))\r\n    const active = computed(() => {\r\n      let isActive = false\r\n\r\n      Object.values(items.value).forEach((item) => {\r\n        if (item.active) {\r\n          isActive = true\r\n        }\r\n      })\r\n\r\n      Object.values(subMenus.value).forEach((subItem) => {\r\n        if (subItem.active) {\r\n          isActive = true\r\n        }\r\n      })\r\n\r\n      return isActive\r\n    })\r\n    const mode = computed(() => rootMenu.props.mode)\r\n    const item = reactive({\r\n      index: props.index,\r\n      indexPath,\r\n      active,\r\n    })\r\n\r\n\r\n    // methods\r\n    const doDestroy = () =>\r\n      vPopper.value?.popperRef?.popperInstanceRef?.destroy()\r\n\r\n    const handleCollapseToggle = (value: boolean) => {\r\n      if (!value) {\r\n        doDestroy()\r\n      }\r\n    }\r\n\r\n    const handleClick = () => {\r\n      if (\r\n        (rootMenu.props.menuTrigger === 'hover' &&\r\n          rootMenu.props.mode === 'horizontal') ||\r\n        (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\r\n        props.disabled\r\n      )\r\n        return\r\n\r\n      rootMenu.handleSubMenuClick({\r\n        index: props.index,\r\n        indexPath: indexPath.value,\r\n        active: active.value,\r\n      })\r\n    }\r\n\r\n    const handleMouseenter = (\r\n      event: MouseEvent | FocusEvent,\r\n    ) => {\r\n      if (event.type === 'focus' && !event.relatedTarget) {\r\n        return\r\n      }\r\n      if (\r\n        (rootMenu.props.menuTrigger === 'click' &&\r\n          rootMenu.props.mode === 'horizontal') ||\r\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\r\n        props.disabled\r\n      ) {\r\n        return\r\n      }\r\n      subMenu.mouseInChild.value = true\r\n\r\n      timeout?.()\r\n      ;({ stop: timeout } = useTimeoutFn(() => {\r\n        rootMenu.openMenu(props.index, indexPath.value)\r\n      }, 300))\r\n\r\n      if (appendToBody.value) {\r\n        parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\r\n      }\r\n    }\r\n\r\n    const handleMouseleave = (deepDispatch = false) => {\r\n      if (\r\n        (rootMenu.props.menuTrigger === 'click' &&\r\n          rootMenu.props.mode === 'horizontal') ||\r\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\r\n      ) {\r\n        return\r\n      }\r\n      timeout?.()\r\n      subMenu.mouseInChild.value = false\r\n      ;({ stop: timeout } = useTimeoutFn(\r\n        () =>\r\n          !mouseInChild.value &&\r\n          rootMenu.closeMenu(props.index, indexPath.value),\r\n       300\r\n      ))\r\n\r\n      if (appendToBody.value && deepDispatch) {\r\n        if (instance.parent?.type.name === 'SgSubMenu') {\r\n          subMenu.handleMouseleave?.(true)\r\n        }\r\n      }\r\n    }\r\n\r\n    watch(\r\n      () => rootMenu.props.collapse,\r\n      (value) => handleCollapseToggle(Boolean(value))\r\n    )\r\n\r\n    // provide\r\n    {\r\n      const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\r\n        subMenus.value[item.index] = item\r\n      }\r\n      const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\r\n        delete subMenus.value[item.index]\r\n      }\r\n      provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\r\n        addSubMenu,\r\n        removeSubMenu,\r\n        handleMouseleave,\r\n        mouseInChild,\r\n      })\r\n    }\r\n\r\n    // expose\r\n    expose({\r\n      opened,\r\n    })\r\n\r\n    // lifecycle\r\n    onMounted(() => {\r\n      rootMenu.addSubMenu(item)\r\n      subMenu.addSubMenu(item)\r\n    })\r\n\r\n    onBeforeUnmount(() => {\r\n      subMenu.removeSubMenu(item)\r\n      rootMenu.removeSubMenu(item)\r\n    })\r\n    let tooltipDisabled = ref(false)\r\n    return () => {\r\n      const titleTag: VNodeArrayChildren = [\r\n        props.tooltipText && !rootMenu.props.collapse && rootMenu.props.mode === 'vertical' ? h(SgTooltip as any,\r\n          {\r\n            disabled: !tooltipDisabled.value,\r\n            theme: 'dark',\r\n            offset: 6,\r\n          },\r\n          {\r\n            content: () =>\r\n              h(\r\n                'div',\r\n                props.tooltipText\r\n              ),\r\n            default: () =>\r\n              h(\r\n                'div',\r\n                {\r\n                  ref: 'content',\r\n                  onMouseenter: () =>{\r\n                    tooltipDisabled.value = instance.refs.content.lastChild.scrollWidth > instance.refs.content.lastChild.offsetWidth\r\n                  },\r\n                  onMouseleave: () =>  { \r\n                    tooltipDisabled.value = false\r\n                  }\r\n                },\r\n                slots.title?.()\r\n              ),\r\n          })  : slots.title?.(),\r\n        h(\r\n          SgIcon,\r\n          {\r\n            class: ['sg-sub-menu__icon-arrow'],\r\n          },\r\n          { default: () => h(subMenuTitleIcon.value) }\r\n        ),\r\n      ]\r\n\r\n      const ulStyle = useMenuCssVar(rootMenu.props)\r\n\r\n      // this render function is only used for bypass `Vue`'s compiler caused patching issue.\r\n      // temporarily mark ElPopper as any due to type inconsistency.\r\n      const child = rootMenu.isMenuPopup\r\n        ? h(\r\n            // TODO: correct popper's type.\r\n            SgTooltip as any,\r\n            {\r\n              ref: vPopper,\r\n              visible: opened.value,\r\n              theme: 'light',\r\n              pure: true,\r\n              offset: 6,\r\n              showArrow: false,\r\n              persistent: true,\r\n              placement: currentPlacement.value,\r\n              transfer: appendToBody.value,\r\n              fallbackPlacements: fallbackPlacements.value,\r\n              transition: menuTransitionName.value,\r\n              gpuAcceleration: false,\r\n            },\r\n            {\r\n              content: () =>\r\n                h(\r\n                  'div',\r\n                  {\r\n                    style: {\r\n                      maxHeight: rootMenu.props.mode === 'vertical' && rootMenu.props.collapse && rootMenu.props.subMenuMaxHeight ? `${rootMenu.props.subMenuMaxHeight}px` : '',\r\n                      overflow: rootMenu.props.mode === 'vertical'  && rootMenu.props.collapse && rootMenu.props.subMenuMaxHeight ? 'hidden scroll' : ''\r\n                    },\r\n                    class: [`sg-menu--${mode.value}`],\r\n                    onMouseenter: (evt: MouseEvent) =>\r\n                      handleMouseenter(evt),\r\n                    onMouseleave: () => handleMouseleave(true),\r\n                    onFocus: (evt: FocusEvent) => handleMouseenter(evt),\r\n                  },\r\n                  [\r\n                    h(\r\n                      'ul',\r\n                      \r\n                      {\r\n                        class: [\r\n                          'sg-menu sg-menu--popup',\r\n                          `sg-menu--popup-${currentPlacement.value}`,\r\n                        ],\r\n                        style: ulStyle.value,\r\n                      },\r\n                      [slots.default?.()]\r\n                    ),\r\n                  ]\r\n                ),\r\n              default: () =>\r\n                h(\r\n                  'div',\r\n                  {\r\n                    class: 'sg-sub-menu__title',\r\n                    style: [\r\n                      paddingStyle.value,\r\n                    ],\r\n                    onClick: handleClick,\r\n                  },\r\n                  titleTag\r\n                ),\r\n            }\r\n          )\r\n        : h(Fragment, {}, [\r\n            h(\r\n              'div',\r\n              {\r\n                class: 'sg-sub-menu__title',\r\n                style: [\r\n                  paddingStyle.value,\r\n                ],\r\n                ref: verticalTitleRef,\r\n                onClick: handleClick,\r\n              },\r\n              titleTag\r\n            ),\r\n            h(\r\n              SgCollapseTransition,\r\n              {},\r\n              {\r\n                default: () =>\r\n                  withDirectives(\r\n                    h(\r\n                      'ul',\r\n                      {\r\n                        role: 'menu',\r\n                        class: 'sg-menu sg-menu--inline',\r\n                        style: ulStyle.value,\r\n                      },\r\n                      [slots.default?.()]\r\n                    ),\r\n                    [[vShow, opened.value]]\r\n                  ),\r\n              }\r\n            ),\r\n          ])\r\n\r\n      return h(\r\n        'li',\r\n        {\r\n          class: [\r\n            'sg-sub-menu',\r\n            {\r\n              'is-active': active.value,\r\n              'is-opened': opened.value,\r\n              'is-disabled': props.disabled,\r\n            },\r\n          ],\r\n          role: 'menuitem',\r\n          ariaHaspopup: true,\r\n          ariaExpanded: opened.value,\r\n          onMouseenter: handleMouseenter,\r\n          onMouseleave: () => handleMouseleave(true),\r\n          onFocus: handleMouseenter,\r\n        },\r\n        [child]\r\n      )\r\n    }\r\n  },\r\n})\r\n"],"names":["SgCollapseTransition"],"mappings":"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"}