You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
40 KiB
1 lines
40 KiB
{"ast":null,"code":"import { defineComponent, getCurrentInstance, ref, computed, watch, watchEffect, provide, reactive, onMounted, h, withDirectives, nextTick } from 'vue';\nimport { useResizeObserver } from '@vueuse/core';\nimport { isNil } from 'lodash-unified';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { More } from '@element-plus/icons-vue';\nimport Menu$1 from './utils/menu-bar.mjs';\nimport ElMenuCollapseTransition from './menu-collapse-transition.mjs';\nimport SubMenu from './sub-menu.mjs';\nimport { useMenuCssVar } from './use-menu-css-var.mjs';\nimport ClickOutside from '../../../directives/click-outside/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { iconPropType } from '../../../utils/vue/icon.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { flattedChildren } from '../../../utils/vue/vnode.mjs';\nimport { isString, isArray, isObject } from '@vue/shared';\nconst menuProps = buildProps({\n mode: {\n type: String,\n values: [\"horizontal\", \"vertical\"],\n default: \"vertical\"\n },\n defaultActive: {\n type: String,\n default: \"\"\n },\n defaultOpeneds: {\n type: definePropType(Array),\n default: () => mutable([])\n },\n uniqueOpened: Boolean,\n router: Boolean,\n menuTrigger: {\n type: String,\n values: [\"hover\", \"click\"],\n default: \"hover\"\n },\n collapse: Boolean,\n backgroundColor: String,\n textColor: String,\n activeTextColor: String,\n closeOnClickOutside: Boolean,\n collapseTransition: {\n type: Boolean,\n default: true\n },\n ellipsis: {\n type: Boolean,\n default: true\n },\n popperOffset: {\n type: Number,\n default: 6\n },\n ellipsisIcon: {\n type: iconPropType,\n default: () => More\n },\n popperEffect: {\n type: definePropType(String),\n default: \"dark\"\n },\n popperClass: String,\n showTimeout: {\n type: Number,\n default: 300\n },\n hideTimeout: {\n type: Number,\n default: 300\n }\n});\nconst checkIndexPath = indexPath => isArray(indexPath) && indexPath.every(path => isString(path));\nconst menuEmits = {\n close: (index, indexPath) => isString(index) && checkIndexPath(indexPath),\n open: (index, indexPath) => isString(index) && checkIndexPath(indexPath),\n select: (index, indexPath, item, routerResult) => isString(index) && checkIndexPath(indexPath) && isObject(item) && (routerResult === void 0 || routerResult instanceof Promise)\n};\nvar Menu = defineComponent({\n name: \"ElMenu\",\n props: menuProps,\n emits: menuEmits,\n setup(props, {\n emit,\n slots,\n expose\n }) {\n const instance = getCurrentInstance();\n const router = instance.appContext.config.globalProperties.$router;\n const menu = ref();\n const nsMenu = useNamespace(\"menu\");\n const nsSubMenu = useNamespace(\"sub-menu\");\n const sliceIndex = ref(-1);\n const openedMenus = ref(props.defaultOpeneds && !props.collapse ? props.defaultOpeneds.slice(0) : []);\n const activeIndex = ref(props.defaultActive);\n const items = ref({});\n const subMenus = ref({});\n const isMenuPopup = computed(() => {\n return props.mode === \"horizontal\" || props.mode === \"vertical\" && props.collapse;\n });\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value];\n if (!activeItem || props.mode === \"horizontal\" || props.collapse) return;\n const indexPath = activeItem.indexPath;\n indexPath.forEach(index => {\n const subMenu = subMenus.value[index];\n subMenu && openMenu(index, subMenu.indexPath);\n });\n };\n const openMenu = (index, indexPath) => {\n if (openedMenus.value.includes(index)) return;\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter(index2 => indexPath.includes(index2));\n }\n openedMenus.value.push(index);\n emit(\"open\", index, indexPath);\n };\n const close = index => {\n const i = openedMenus.value.indexOf(index);\n if (i !== -1) {\n openedMenus.value.splice(i, 1);\n }\n };\n const closeMenu = (index, indexPath) => {\n close(index);\n emit(\"close\", index, indexPath);\n };\n const handleSubMenuClick = ({\n index,\n indexPath\n }) => {\n const isOpened = openedMenus.value.includes(index);\n if (isOpened) {\n closeMenu(index, indexPath);\n } else {\n openMenu(index, indexPath);\n }\n };\n const handleMenuItemClick = menuItem => {\n if (props.mode === \"horizontal\" || props.collapse) {\n openedMenus.value = [];\n }\n const {\n index,\n indexPath\n } = menuItem;\n if (isNil(index) || isNil(indexPath)) return;\n if (props.router && router) {\n const route = menuItem.route || index;\n const routerResult = router.push(route).then(res => {\n if (!res) activeIndex.value = index;\n return res;\n });\n emit(\"select\", index, indexPath, {\n index,\n indexPath,\n route\n }, routerResult);\n } else {\n activeIndex.value = index;\n emit(\"select\", index, indexPath, {\n index,\n indexPath\n });\n }\n };\n const updateActiveIndex = val => {\n const itemsInData = items.value;\n const item = itemsInData[val] || activeIndex.value && itemsInData[activeIndex.value] || itemsInData[props.defaultActive];\n if (item) {\n activeIndex.value = item.index;\n } else {\n activeIndex.value = val;\n }\n };\n const calcMenuItemWidth = menuItem => {\n const computedStyle = getComputedStyle(menuItem);\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10);\n const marginRight = Number.parseInt(computedStyle.marginRight, 10);\n return menuItem.offsetWidth + marginLeft + marginRight || 0;\n };\n const calcSliceIndex = () => {\n var _a, _b;\n if (!menu.value) return -1;\n const items2 = Array.from((_b = (_a = menu.value) == null ? void 0 : _a.childNodes) != null ? _b : []).filter(item => item.nodeName !== \"#text\" || item.nodeValue);\n const moreItemWidth = 64;\n const computedMenuStyle = getComputedStyle(menu.value);\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10);\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10);\n const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight;\n let calcWidth = 0;\n let sliceIndex2 = 0;\n items2.forEach((item, index) => {\n if (item.nodeName === \"#comment\") return;\n calcWidth += calcMenuItemWidth(item);\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex2 = index + 1;\n }\n });\n return sliceIndex2 === items2.length ? -1 : sliceIndex2;\n };\n const getIndexPath = index => subMenus.value[index].indexPath;\n const debounce = (fn, wait = 33.34) => {\n let timmer;\n return () => {\n timmer && clearTimeout(timmer);\n timmer = setTimeout(() => {\n fn();\n }, wait);\n };\n };\n let isFirstTimeRender = true;\n const handleResize = () => {\n if (sliceIndex.value === calcSliceIndex()) return;\n const callback = () => {\n sliceIndex.value = -1;\n nextTick(() => {\n sliceIndex.value = calcSliceIndex();\n });\n };\n isFirstTimeRender ? callback() : debounce(callback)();\n isFirstTimeRender = false;\n };\n watch(() => props.defaultActive, currentActive => {\n if (!items.value[currentActive]) {\n activeIndex.value = \"\";\n }\n updateActiveIndex(currentActive);\n });\n watch(() => props.collapse, value => {\n if (value) openedMenus.value = [];\n });\n watch(items.value, initMenu);\n let resizeStopper;\n watchEffect(() => {\n if (props.mode === \"horizontal\" && props.ellipsis) resizeStopper = useResizeObserver(menu, handleResize).stop;else resizeStopper == null ? void 0 : resizeStopper();\n });\n const mouseInChild = ref(false);\n {\n const addSubMenu = item => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu = item => {\n delete subMenus.value[item.index];\n };\n const addMenuItem = item => {\n items.value[item.index] = item;\n };\n const removeMenuItem = item => {\n delete items.value[item.index];\n };\n provide(\"rootMenu\", reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick\n }));\n provide(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0\n });\n }\n onMounted(() => {\n if (props.mode === \"horizontal\") {\n new Menu$1(instance.vnode.el, nsMenu.namespace.value);\n }\n });\n {\n const open = index => {\n const {\n indexPath\n } = subMenus.value[index];\n indexPath.forEach(i => openMenu(i, indexPath));\n };\n expose({\n open,\n close,\n handleResize\n });\n }\n const ulStyle = useMenuCssVar(props, 0);\n return () => {\n var _a, _b;\n let slot = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) != null ? _b : [];\n const vShowMore = [];\n if (props.mode === \"horizontal\" && menu.value) {\n const originalSlot = flattedChildren(slot);\n const slotDefault = sliceIndex.value === -1 ? originalSlot : originalSlot.slice(0, sliceIndex.value);\n const slotMore = sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value);\n if ((slotMore == null ? void 0 : slotMore.length) && props.ellipsis) {\n slot = slotDefault;\n vShowMore.push(h(SubMenu, {\n index: \"sub-menu-more\",\n class: nsSubMenu.e(\"hide-arrow\"),\n popperOffset: props.popperOffset\n }, {\n title: () => h(ElIcon, {\n class: nsSubMenu.e(\"icon-more\")\n }, {\n default: () => h(props.ellipsisIcon)\n }),\n default: () => slotMore\n }));\n }\n }\n const directives = props.closeOnClickOutside ? [[ClickOutside, () => {\n if (!openedMenus.value.length) return;\n if (!mouseInChild.value) {\n openedMenus.value.forEach(openedMenu => emit(\"close\", openedMenu, getIndexPath(openedMenu)));\n openedMenus.value = [];\n }\n }]] : [];\n const vMenu = withDirectives(h(\"ul\", {\n key: String(props.collapse),\n role: \"menubar\",\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m(\"collapse\")]: props.collapse\n }\n }, [...slot, ...vShowMore]), directives);\n if (props.collapseTransition && props.mode === \"vertical\") {\n return h(ElMenuCollapseTransition, () => vMenu);\n }\n return vMenu;\n };\n }\n});\nexport { Menu as default, menuEmits, menuProps };","map":{"version":3,"names":["menuProps","buildProps","mode","type","String","values","default","defaultActive","defaultOpeneds","definePropType","Array","mutable","uniqueOpened","Boolean","router","menuTrigger","collapse","backgroundColor","textColor","activeTextColor","closeOnClickOutside","collapseTransition","ellipsis","popperOffset","Number","ellipsisIcon","iconPropType","More","popperEffect","popperClass","showTimeout","hideTimeout","checkIndexPath","indexPath","isArray","every","path","isString","menuEmits","close","index","open","select","item","routerResult","isObject","Promise","Menu","defineComponent","name","props","emits","setup","emit","slots","expose","instance","getCurrentInstance","appContext","config","globalProperties","$router","menu","ref","nsMenu","useNamespace","nsSubMenu","sliceIndex","openedMenus","slice","activeIndex","items","subMenus","isMenuPopup","computed","initMenu","activeItem","value","forEach","subMenu","openMenu","includes","filter","index2","push","i","indexOf","splice","closeMenu","handleSubMenuClick","isOpened","handleMenuItemClick","menuItem","isNil","route","then","res","updateActiveIndex","val","itemsInData","calcMenuItemWidth","computedStyle","getComputedStyle","marginLeft","parseInt","marginRight","offsetWidth","calcSliceIndex","_a","_b","items2","from","childNodes","nodeName","nodeValue","moreItemWidth","computedMenuStyle","paddingLeft","paddingRight","menuWidth","clientWidth","calcWidth","sliceIndex2","length","getIndexPath","debounce","fn","wait","timmer","clearTimeout","setTimeout","isFirstTimeRender","handleResize","callback","nextTick","watch","currentActive","resizeStopper","watchEffect","useResizeObserver","stop","mouseInChild","addSubMenu","removeSubMenu","addMenuItem","removeMenuItem","provide","reactive","uid","level","onMounted","Menu$1","vnode","el","namespace","ulStyle","useMenuCssVar","slot","call","vShowMore","originalSlot","flattedChildren","slotDefault","slotMore","h","SubMenu","class","e","title","ElIcon","directives","ClickOutside","openedMenu","vMenu","withDirectives","key","role","style","b","m","ElMenuCollapseTransition"],"sources":["../../../../../../packages/components/menu/src/menu.ts"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n withDirectives,\n} from 'vue'\n\nimport { useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport ElIcon from '@element-plus/components/icon'\nimport { More } from '@element-plus/icons-vue'\nimport {\n buildProps,\n definePropType,\n flattedChildren,\n iconPropType,\n isArray,\n isObject,\n isString,\n mutable,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport Menubar from './utils/menu-bar'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport ElSubMenu from './sub-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport type { PopperEffect } from '@element-plus/components/popper'\n\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type {\n Component,\n DirectiveArguments,\n ExtractPropTypes,\n VNode,\n VNodeArrayChildren,\n} from 'vue'\nimport type { UseResizeObserverReturn } from '@vueuse/core'\n\nexport const menuProps = buildProps({\n /**\n * @description menu display mode\n */\n mode: {\n type: String,\n values: ['horizontal', 'vertical'],\n default: 'vertical',\n },\n /**\n * @description index of active menu on page load\n */\n defaultActive: {\n type: String,\n default: '',\n },\n /**\n * @description array that contains indexes of currently active sub-menus\n */\n defaultOpeneds: {\n type: definePropType<string[]>(Array),\n default: () => mutable([] as const),\n },\n /**\n * @description whether only one sub-menu can be active\n */\n uniqueOpened: Boolean,\n /**\n * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.\n */\n router: Boolean,\n /**\n * @description how sub-menus are triggered, only works when `mode` is 'horizontal'\n */\n menuTrigger: {\n type: String,\n values: ['hover', 'click'],\n default: 'hover',\n },\n /**\n * @description whether the menu is collapsed (available only in vertical mode)\n */\n collapse: Boolean,\n /**\n * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)\n * @deprecated use `--bg-color` instead\n */\n backgroundColor: String,\n /**\n * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)\n * @deprecated use `--text-color` instead\n */\n textColor: String,\n /**\n * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)\n * @deprecated use `--active-color` instead\n */\n activeTextColor: String,\n /**\n * @description optional, whether menu is collapsed when clicking outside\n */\n closeOnClickOutside: Boolean,\n /**\n * @description whether to enable the collapse transition\n */\n collapseTransition: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the menu is ellipsis (available only in horizontal mode)\n */\n ellipsis: {\n type: Boolean,\n default: true,\n },\n /**\n * @description offset of the popper (effective for all submenus)\n */\n popperOffset: {\n type: Number,\n default: 6,\n },\n /**\n * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)\n */\n ellipsisIcon: {\n type: iconPropType,\n default: () => More,\n },\n /**\n * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed\n */\n popperEffect: {\n type: definePropType<PopperEffect>(String),\n default: 'dark',\n },\n /**\n * @description custom class name for all popup menus\n */\n popperClass: String,\n /**\n * @description control timeout for all menus before showing\n */\n showTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description control timeout for all menus before hiding\n */\n hideTimeout: {\n type: Number,\n default: 300,\n },\n} as const)\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n isArray(indexPath) && indexPath.every((path) => isString(path))\n\nexport const menuEmits = {\n close: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n open: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n select: (\n index: string,\n indexPath: string[],\n item: MenuItemClicked,\n routerResult?: Promise<void | NavigationFailure>\n ) =>\n isString(index) &&\n checkIndexPath(indexPath) &&\n isObject(item) &&\n (routerResult === undefined || routerResult instanceof Promise),\n}\nexport type MenuEmits = typeof menuEmits\n\nexport default defineComponent({\n name: 'ElMenu',\n\n props: menuProps,\n emits: menuEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const router = instance.appContext.config.globalProperties.$router as Router\n const menu = ref<HTMLUListElement>()\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n\n // data\n const sliceIndex = ref(-1)\n\n const openedMenus = ref<MenuProvider['openedMenus']>(\n props.defaultOpeneds && !props.collapse\n ? props.defaultOpeneds.slice(0)\n : []\n )\n const activeIndex = ref<MenuProvider['activeIndex']>(props.defaultActive)\n const items = ref<MenuProvider['items']>({})\n const subMenus = ref<MenuProvider['subMenus']>({})\n\n // computed\n const isMenuPopup = computed<MenuProvider['isMenuPopup']>(() => {\n return (\n props.mode === 'horizontal' ||\n (props.mode === 'vertical' && props.collapse)\n )\n })\n\n // methods\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value]\n if (!activeItem || props.mode === 'horizontal' || props.collapse) return\n\n const indexPath = activeItem.indexPath\n\n // 展开该菜单项的路径上所有子菜单\n // expand all subMenus of the menu item\n indexPath.forEach((index) => {\n const subMenu = subMenus.value[index]\n subMenu && openMenu(index, subMenu.indexPath)\n })\n }\n\n const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n if (openedMenus.value.includes(index)) return\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter((index: string) =>\n indexPath.includes(index)\n )\n }\n openedMenus.value.push(index)\n emit('open', index, indexPath)\n }\n\n const close = (index: string) => {\n const i = openedMenus.value.indexOf(index)\n if (i !== -1) {\n openedMenus.value.splice(i, 1)\n }\n }\n\n const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n close(index)\n emit('close', index, indexPath)\n }\n\n const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n index,\n indexPath,\n }) => {\n const isOpened = openedMenus.value.includes(index)\n\n if (isOpened) {\n closeMenu(index, indexPath)\n } else {\n openMenu(index, indexPath)\n }\n }\n\n const handleMenuItemClick: MenuProvider['handleMenuItemClick'] = (\n menuItem\n ) => {\n if (props.mode === 'horizontal' || props.collapse) {\n openedMenus.value = []\n }\n\n const { index, indexPath } = menuItem\n if (isNil(index) || isNil(indexPath)) return\n\n if (props.router && router) {\n const route = menuItem.route || index\n const routerResult = router.push(route).then((res) => {\n if (!res) activeIndex.value = index\n return res\n })\n emit(\n 'select',\n index,\n indexPath,\n { index, indexPath, route },\n routerResult\n )\n } else {\n activeIndex.value = index\n emit('select', index, indexPath, { index, indexPath })\n }\n }\n\n const updateActiveIndex = (val: string) => {\n const itemsInData = items.value\n const item =\n itemsInData[val] ||\n (activeIndex.value && itemsInData[activeIndex.value]) ||\n itemsInData[props.defaultActive]\n\n if (item) {\n activeIndex.value = item.index\n } else {\n activeIndex.value = val\n }\n }\n\n const calcMenuItemWidth = (menuItem: HTMLElement) => {\n const computedStyle = getComputedStyle(menuItem)\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10)\n const marginRight = Number.parseInt(computedStyle.marginRight, 10)\n return menuItem.offsetWidth + marginLeft + marginRight || 0\n }\n\n const calcSliceIndex = () => {\n if (!menu.value) return -1\n const items = Array.from(menu.value?.childNodes ?? []).filter(\n (item) => item.nodeName !== '#text' || item.nodeValue\n ) as HTMLElement[]\n const moreItemWidth = 64\n const computedMenuStyle = getComputedStyle(menu.value!)\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10)\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10)\n const menuWidth = menu.value!.clientWidth - paddingLeft - paddingRight\n let calcWidth = 0\n let sliceIndex = 0\n items.forEach((item, index) => {\n if (item.nodeName === '#comment') return\n calcWidth += calcMenuItemWidth(item)\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex = index + 1\n }\n })\n return sliceIndex === items.length ? -1 : sliceIndex\n }\n\n const getIndexPath = (index: string) => subMenus.value[index].indexPath\n\n // Common computer monitor FPS is 60Hz, which means 60 redraws per second. Calculation formula: 1000ms/60 ≈ 16.67ms, In order to avoid a certain chance of repeated triggering when `resize`, set wait to 16.67 * 2 = 33.34\n const debounce = (fn: () => void, wait = 33.34) => {\n let timmer: ReturnType<typeof setTimeout> | null\n return () => {\n timmer && clearTimeout(timmer)\n timmer = setTimeout(() => {\n fn()\n }, wait)\n }\n }\n\n let isFirstTimeRender = true\n const handleResize = () => {\n if (sliceIndex.value === calcSliceIndex()) return\n const callback = () => {\n sliceIndex.value = -1\n nextTick(() => {\n sliceIndex.value = calcSliceIndex()\n })\n }\n // execute callback directly when first time resize to avoid shaking\n isFirstTimeRender ? callback() : debounce(callback)()\n isFirstTimeRender = false\n }\n\n watch(\n () => props.defaultActive,\n (currentActive) => {\n if (!items.value[currentActive]) {\n activeIndex.value = ''\n }\n updateActiveIndex(currentActive)\n }\n )\n\n watch(\n () => props.collapse,\n (value) => {\n if (value) openedMenus.value = []\n }\n )\n\n watch(items.value, initMenu)\n\n let resizeStopper: UseResizeObserverReturn['stop']\n watchEffect(() => {\n if (props.mode === 'horizontal' && props.ellipsis)\n resizeStopper = useResizeObserver(menu, handleResize).stop\n else resizeStopper?.()\n })\n\n const mouseInChild = ref(false)\n\n // provide\n {\n const addSubMenu: MenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n\n const removeSubMenu: MenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n\n const addMenuItem: MenuProvider['addMenuItem'] = (item) => {\n items.value[item.index] = item\n }\n\n const removeMenuItem: MenuProvider['removeMenuItem'] = (item) => {\n delete items.value[item.index]\n }\n provide<MenuProvider>(\n 'rootMenu',\n reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick,\n })\n )\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0,\n })\n }\n\n // lifecycle\n onMounted(() => {\n if (props.mode === 'horizontal') {\n new Menubar(instance.vnode.el!, nsMenu.namespace.value)\n }\n })\n\n {\n const open = (index: string) => {\n const { indexPath } = subMenus.value[index]\n indexPath.forEach((i) => openMenu(i, indexPath))\n }\n\n expose({\n open,\n close,\n handleResize,\n })\n }\n\n const ulStyle = useMenuCssVar(props, 0)\n\n return () => {\n let slot: VNodeArrayChildren = slots.default?.() ?? []\n const vShowMore: VNode[] = []\n\n if (props.mode === 'horizontal' && menu.value) {\n const originalSlot = flattedChildren(slot) as VNodeArrayChildren\n const slotDefault =\n sliceIndex.value === -1\n ? originalSlot\n : originalSlot.slice(0, sliceIndex.value)\n\n const slotMore =\n sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value)\n\n if (slotMore?.length && props.ellipsis) {\n slot = slotDefault\n vShowMore.push(\n h(\n ElSubMenu,\n {\n index: 'sub-menu-more',\n class: nsSubMenu.e('hide-arrow'),\n popperOffset: props.popperOffset,\n },\n {\n title: () =>\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-more'),\n },\n {\n default: () => h(props.ellipsisIcon as Component),\n }\n ),\n default: () => slotMore,\n }\n )\n )\n }\n }\n\n const directives: DirectiveArguments = props.closeOnClickOutside\n ? [\n [\n vClickoutside,\n () => {\n if (!openedMenus.value.length) return\n\n if (!mouseInChild.value) {\n openedMenus.value.forEach((openedMenu) =>\n emit('close', openedMenu, getIndexPath(openedMenu))\n )\n\n openedMenus.value = []\n }\n },\n ],\n ]\n : []\n\n const vMenu = withDirectives(\n h(\n 'ul',\n {\n key: String(props.collapse),\n role: 'menubar',\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m('collapse')]: props.collapse,\n },\n },\n [...slot, ...vShowMore]\n ),\n directives\n )\n\n if (props.collapseTransition && props.mode === 'vertical') {\n return h(ElMenuCollapseTransition, () => vMenu)\n }\n\n return vMenu\n }\n },\n})\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|