element-plus
Version:
A Component Library for Vue 3
1 lines • 26.3 kB
Source Map (JSON)
{"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 nextTick,\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 ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n buildProps,\n definePropType,\n focusElement,\n iconPropType,\n isString,\n isUndefined,\n throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n CSSProperties,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n VNodeArrayChildren,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n /**\n * @description unique identification\n */\n index: {\n type: String,\n required: true,\n },\n /**\n * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n */\n showTimeout: Number,\n /**\n * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n */\n hideTimeout: Number,\n /**\n * @description custom class name for the popup menu\n */\n popperClass: String,\n /**\n * @description custom style for the popup menu\n */\n popperStyle: {\n type: definePropType<string | CSSProperties>([String, Object]),\n },\n /**\n * @description whether the sub-menu is disabled\n */\n disabled: Boolean,\n /**\n * @description whether popup menu is teleported to the body\n */\n teleported: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description offset of the popper (overrides the `popper` of menu)\n */\n popperOffset: Number,\n /**\n * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n */\n expandCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n */\n expandOpenIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n */\n collapseCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n */\n collapseOpenIcon: {\n type: iconPropType,\n },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\nexport type SubMenuPropsPublic = ExtractPublicPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'ElSubMenu'\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>(MENU_INJECTION_KEY)\n if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n const subMenu = inject<SubMenuProvider>(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n )\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<TooltipInstance>()\n\n // computed\n const isFirstLevel = computed(() => subMenu.level === 0)\n const currentPlacement = computed<Placement>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? 'bottom-start'\n : 'right-start'\n )\n const subMenuTitleIcon = computed(() => {\n const isExpandedMode =\n (mode.value === 'horizontal' && isFirstLevel.value) ||\n (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n if (isExpandedMode) {\n if (props.expandCloseIcon && props.expandOpenIcon) {\n return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n }\n return ArrowDown\n } else {\n if (props.collapseCloseIcon && props.collapseOpenIcon) {\n return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n }\n return ArrowRight\n }\n })\n\n const appendToBody = computed(() => {\n const value = props.teleported\n return isUndefined(value) ? isFirstLevel.value : value\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 'right',\n 'right-end',\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 [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n ({ active }) => active\n )\n )\n\n const mode = computed(() => rootMenu.props.mode)\n const persistent = computed(() => rootMenu.props.persistent)\n const item = reactive({\n index: props.index,\n indexPath,\n active,\n })\n\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n const subMenuPopperOffset = computed(\n () => props.popperOffset ?? rootMenu.props.popperOffset\n )\n\n const subMenuPopperClass = computed(\n () => props.popperClass ?? rootMenu.props.popperClass\n )\n\n const subMenuPopperStyle = computed(\n () => props.popperStyle ?? rootMenu.props.popperStyle\n )\n\n const subMenuShowTimeout = computed(\n () => props.showTimeout ?? rootMenu.props.showTimeout\n )\n\n const subMenuHideTimeout = computed(\n () => props.hideTimeout ?? rootMenu.props.hideTimeout\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 = subMenuShowTimeout.value\n ) => {\n if (event.type === 'focus') 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 subMenu.mouseInChild.value = true\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 if (event.type === 'mouseenter' && event.target) {\n nextTick(() => {\n focusElement(event.target as HTMLElement, { preventScroll: true })\n })\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 subMenu.mouseInChild.value = false\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 subMenuHideTimeout.value\n ))\n\n if (appendToBody.value && deepDispatch) {\n subMenu.handleMouseleave?.(true)\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>(`${SUB_MENU_INJECTION_KEY}${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 ElIcon,\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 // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n const child = rootMenu.isMenuPopup\n ? h(\n ElTooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: subMenuPopperOffset.value,\n showArrow: false,\n persistent: persistent.value,\n popperClass: subMenuPopperClass.value,\n popperStyle: subMenuPopperStyle.value,\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 subMenuPopperClass.value,\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 },\n [slots.default?.()]\n ),\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n onClick: handleClick,\n },\n titleTag\n ),\n }\n )\n : h(Fragment, {}, [\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n ref: verticalTitleRef,\n onClick: handleClick,\n },\n titleTag\n ),\n h(\n ElCollapseTransition,\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(),\n onFocus: handleMouseenter,\n },\n [child]\n )\n }\n },\n})\n"],"names":["active","item","_a"],"mappings":"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"}