{"version":3,"file":"sub-menu.mjs","sources":["../../../../../../packages/components/menu/src/sub-menu.ts"],"sourcesContent":["import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  vShow,\n  watch,\n  withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport BCollapseTransition from '@bigin/components/collapse-transition'\nimport BTooltip from '@bigin/components/tooltip'\nimport { buildProps, iconPropType, isString, throwError } from '@bigin/utils'\nimport { useNamespace } from '@bigin/hooks'\nimport { ActionDown, ActionRight } from '@bigin/icons-vue'\nimport { BIcon } from '@bigin/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\n\nimport type { Placement } from '@bigin/components/popper'\nimport type { CSSProperties, ExtractPropTypes, VNodeArrayChildren } from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n  index: {\n    type: String,\n    required: true,\n  },\n  showTimeout: {\n    type: Number,\n    default: 300,\n  },\n  hideTimeout: {\n    type: Number,\n    default: 300,\n  },\n  popperClass: String,\n  disabled: Boolean,\n  popperAppendToBody: {\n    type: Boolean,\n    default: undefined,\n  },\n  popperOffset: {\n    type: Number,\n    default: 6,\n  },\n  expandCloseIcon: {\n    type: iconPropType,\n  },\n  expandOpenIcon: {\n    type: iconPropType,\n  },\n  collapseCloseIcon: {\n    type: iconPropType,\n  },\n  collapseOpenIcon: {\n    type: iconPropType,\n  },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'BSubMenu'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  props: subMenuProps,\n\n  setup(props, { slots, expose }) {\n    const instance = getCurrentInstance()!\n    const { indexPath, parentMenu } = useMenu(\n      instance,\n      computed(() => props.index)\n    )\n    const nsMenu = useNamespace('menu')\n    const nsSubMenu = useNamespace('sub-menu')\n\n    // inject\n    const rootMenu = inject<MenuProvider>('rootMenu')\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n    const subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`)\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n    const items = ref<MenuProvider['items']>({})\n    const subMenus = ref<MenuProvider['subMenus']>({})\n\n    let timeout: (() => void) | undefined\n    const mouseInChild = ref(false)\n    const verticalTitleRef = ref<HTMLDivElement>()\n    const vPopper = ref<InstanceType<typeof BTooltip> | null>(null)\n\n    // computed\n    const currentPlacement = computed<Placement>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? 'bottom-start'\n        : 'right-start'\n    )\n    const subMenuTitleIcon = computed(() => {\n      return (mode.value === 'horizontal' && isFirstLevel.value) ||\n        (mode.value === 'vertical' && !rootMenu.props.collapse)\n        ? props.expandCloseIcon && props.expandOpenIcon\n          ? opened.value\n            ? props.expandOpenIcon\n            : props.expandCloseIcon\n          : ActionDown\n        : props.collapseCloseIcon && props.collapseOpenIcon\n        ? opened.value\n          ? props.collapseOpenIcon\n          : props.collapseCloseIcon\n        : ActionRight\n    })\n    const isFirstLevel = computed(() => {\n      return subMenu.level === 0\n    })\n    const appendToBody = computed(() => {\n      return props.popperAppendToBody === undefined\n        ? isFirstLevel.value\n        : Boolean(props.popperAppendToBody)\n    })\n    const menuTransitionName = computed(() =>\n      rootMenu.props.collapse\n        ? `${nsMenu.namespace.value}-zoom-in-left`\n        : `${nsMenu.namespace.value}-zoom-in-top`\n    )\n    const fallbackPlacements = computed<Placement[]>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? [\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n            'right-start',\n            'left-start',\n          ]\n        : [\n            'right-start',\n            'left-start',\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n          ]\n    )\n    const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n    const active = computed(() => {\n      let isActive = false\n\n      Object.values(items.value).forEach((item) => {\n        if (item.active) {\n          isActive = true\n        }\n      })\n\n      Object.values(subMenus.value).forEach((subItem) => {\n        if (subItem.active) {\n          isActive = true\n        }\n      })\n\n      return isActive\n    })\n\n    const backgroundColor = computed(() => rootMenu.props.backgroundColor || '')\n    const activeTextColor = computed(() => rootMenu.props.activeTextColor || '')\n    const textColor = computed(() => rootMenu.props.textColor || '')\n    const mode = computed(() => rootMenu.props.mode)\n    const item = reactive({\n      index: props.index,\n      indexPath,\n      active,\n    })\n\n    const titleStyle = computed<CSSProperties>(() => {\n      if (mode.value !== 'horizontal') {\n        return {\n          color: textColor.value,\n        }\n      }\n      return {\n        borderBottomColor: active.value\n          ? rootMenu.props.activeTextColor\n            ? activeTextColor.value\n            : ''\n          : 'transparent',\n        color: active.value ? activeTextColor.value : textColor.value,\n      }\n    })\n\n    // methods\n    const doDestroy = () =>\n      vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n    const handleCollapseToggle = (value: boolean) => {\n      if (!value) {\n        doDestroy()\n      }\n    }\n\n    const handleClick = () => {\n      if (\n        (rootMenu.props.menuTrigger === 'hover' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      )\n        return\n\n      rootMenu.handleSubMenuClick({\n        index: props.index,\n        indexPath: indexPath.value,\n        active: active.value,\n      })\n    }\n\n    const handleMouseenter = (\n      event: MouseEvent | FocusEvent,\n      showTimeout = props.showTimeout\n    ) => {\n      if (event.type === 'focus') {\n        return\n      }\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      ) {\n        return\n      }\n      subMenu.mouseInChild.value = true\n\n      timeout?.()\n      ;({ stop: timeout } = useTimeoutFn(() => {\n        rootMenu.openMenu(props.index, indexPath.value)\n      }, showTimeout))\n\n      if (appendToBody.value) {\n        parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n      }\n    }\n\n    const handleMouseleave = (deepDispatch = false) => {\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n      ) {\n        return\n      }\n      timeout?.()\n      subMenu.mouseInChild.value = false\n      ;({ stop: timeout } = useTimeoutFn(\n        () =>\n          !mouseInChild.value &&\n          rootMenu.closeMenu(props.index, indexPath.value),\n        props.hideTimeout\n      ))\n\n      if (appendToBody.value && deepDispatch) {\n        if (instance.parent?.type.name === 'BSubMenu') {\n          subMenu.handleMouseleave?.(true)\n        }\n      }\n    }\n\n    watch(\n      () => rootMenu.props.collapse,\n      (value) => handleCollapseToggle(Boolean(value))\n    )\n\n    // provide\n    {\n      const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n        subMenus.value[item.index] = item\n      }\n      const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n        delete subMenus.value[item.index]\n      }\n      provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n        addSubMenu,\n        removeSubMenu,\n        handleMouseleave,\n        mouseInChild,\n        level: subMenu.level + 1,\n      })\n    }\n\n    // expose\n    expose({\n      opened,\n    })\n\n    // lifecycle\n    onMounted(() => {\n      rootMenu.addSubMenu(item)\n      subMenu.addSubMenu(item)\n    })\n\n    onBeforeUnmount(() => {\n      subMenu.removeSubMenu(item)\n      rootMenu.removeSubMenu(item)\n    })\n\n    return () => {\n      const titleTag: VNodeArrayChildren = [\n        slots.title?.(),\n        h(\n          BIcon,\n          {\n            class: nsSubMenu.e('icon-arrow'),\n            style: {\n              transform: opened.value\n                ? (props.expandCloseIcon && props.expandOpenIcon) ||\n                  (props.collapseCloseIcon &&\n                    props.collapseOpenIcon &&\n                    rootMenu.props.collapse)\n                  ? 'none'\n                  : 'rotateZ(180deg)'\n                : 'none',\n            },\n          },\n          {\n            default: () =>\n              isString(subMenuTitleIcon.value)\n                ? h(instance.appContext.components[subMenuTitleIcon.value])\n                : h(subMenuTitleIcon.value),\n          }\n        ),\n      ]\n\n      const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n      // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n      // temporarily mark BPopper as any due to type inconsistency.\n      const child = rootMenu.isMenuPopup\n        ? h(\n            // TODO: correct popper's type.\n            BTooltip as any,\n            {\n              ref: vPopper,\n              visible: opened.value,\n              effect: 'light',\n              pure: true,\n              offset: props.popperOffset,\n              showArrow: false,\n              persistent: true,\n              popperClass: props.popperClass,\n              placement: currentPlacement.value,\n              teleported: appendToBody.value,\n              fallbackPlacements: fallbackPlacements.value,\n              transition: menuTransitionName.value,\n              gpuAcceleration: false,\n            },\n            {\n              content: () =>\n                h(\n                  'div',\n                  {\n                    class: [\n                      nsMenu.m(mode.value),\n                      nsMenu.m('popup-container'),\n                      props.popperClass,\n                    ],\n                    onMouseenter: (evt: MouseEvent) =>\n                      handleMouseenter(evt, 100),\n                    onMouseleave: () => handleMouseleave(true),\n                    onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n                  },\n                  [\n                    h(\n                      'ul',\n                      {\n                        class: [\n                          nsMenu.b(),\n                          nsMenu.m('popup'),\n                          nsMenu.m(`popup-${currentPlacement.value}`),\n                        ],\n                        style: ulStyle.value,\n                        dataTestName: 'submenu',\n                      },\n                      [slots.default?.()]\n                    ),\n                  ]\n                ),\n              default: () =>\n                h(\n                  'div',\n                  {\n                    class: nsSubMenu.e('title'),\n                    style: [\n                      titleStyle.value,\n                      { backgroundColor: backgroundColor.value },\n                    ],\n                    onClick: handleClick,\n                  },\n                  titleTag\n                ),\n            }\n          )\n        : h(Fragment, {}, [\n            h(\n              'div',\n              {\n                class: nsSubMenu.e('title'),\n                style: [\n                  titleStyle.value,\n                  { backgroundColor: backgroundColor.value },\n                ],\n                ref: verticalTitleRef,\n                onClick: handleClick,\n              },\n              titleTag\n            ),\n            h(\n              BCollapseTransition,\n              {},\n              {\n                default: () =>\n                  withDirectives(\n                    h(\n                      'ul',\n                      {\n                        role: 'menu',\n                        class: [nsMenu.b(), nsMenu.m('inline')],\n                        style: ulStyle.value,\n                      },\n                      [slots.default?.()]\n                    ),\n                    [[vShow, opened.value]]\n                  ),\n              }\n            ),\n          ])\n\n      return h(\n        'li',\n        {\n          class: [\n            nsSubMenu.b(),\n            nsSubMenu.is('active', active.value),\n            nsSubMenu.is('opened', opened.value),\n            nsSubMenu.is('disabled', props.disabled),\n          ],\n          role: 'menuitem',\n          ariaHaspopup: true,\n          ariaExpanded: opened.value,\n          onMouseenter: handleMouseenter,\n          onMouseleave: () => handleMouseleave(true),\n          onFocus: handleMouseenter,\n        },\n        [child]\n      )\n    }\n  },\n})\n"],"names":["item","BCollapseTransition"],"mappings":"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"}