UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 18.8 kB
{"version":3,"file":"head-menu.mjs","sources":["../../src/menu/head-menu.tsx"],"sourcesContent":["import {\n defineComponent,\n computed,\n provide,\n ref,\n reactive,\n watch,\n onMounted,\n watchEffect,\n toRefs,\n h,\n VNode,\n Component,\n getCurrentInstance,\n} from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isArray from 'lodash/isArray';\n\nimport log from '../_common/js/log/log';\nimport props from './head-menu-props';\nimport { MenuValue } from './type';\nimport { TdMenuInterface, TdOpenType } from './const';\nimport { Tabs, TabPanel } from '../tabs';\nimport Submenu from './submenu';\nimport VMenu from './v-menu';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\n\nexport default defineComponent({\n name: 'XHeadMenu',\n props: { ...props },\n setup(props, ctx) {\n const classPrefix = usePrefixClass();\n const { proxy } = getCurrentInstance();\n watchEffect(() => {\n if (ctx.slots.options) {\n log.warnOnce('XMenu', '`options` slot is going to be deprecated, please use `operations` for slot instead.');\n }\n });\n const { value, modelValue, expanded } = toRefs(props);\n const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const [expandValues, setExpanded] = useDefaultValue(expanded, props.defaultExpanded, props.onExpand, 'expanded');\n const activeValues = ref([]);\n const theme = computed(() => props.theme);\n const menuClass = computed(() => [\n `${classPrefix.value}-menu`,\n `${classPrefix.value}-head-menu`,\n `${classPrefix.value}-menu--${props.theme}`,\n ]);\n const mode = ref(props.expandType);\n const submenu = reactive([]);\n const vMenu = new VMenu({ isMutex: true, expandValues: expandValues.value });\n\n provide<TdMenuInterface>('TdMenu', {\n mode,\n theme,\n vMenu,\n isHead: true,\n expandValues,\n activeValue,\n activeValues,\n select: (value: MenuValue) => {\n setActiveValue(value);\n },\n open: (value: MenuValue, type: TdOpenType) => {\n const expanded = [...expandValues.value];\n const index = expanded.indexOf(value);\n\n if (mode.value === 'popup') {\n if (type === 'add') {\n if (index === -1) {\n // 可能初始expanded里包含了该value\n expanded.push(value);\n }\n } else if (type === 'remove') {\n expanded.splice(index, 1);\n }\n } else if (mode.value === 'normal' && value !== undefined) {\n expanded.splice(0, 1);\n if (index === -1) {\n expanded.push(value);\n }\n }\n setExpanded(expanded);\n },\n });\n\n // methods\n const handleTabChange = (value: MenuValue) => {\n setActiveValue(value);\n handleClickSubMenuItem(value);\n };\n\n const handleSubmenuExpand = (value: MenuValue) => {\n const ans = vMenu.getChild(value);\n submenu.length = 0;\n submenu.push(...ans);\n };\n\n // watch\n watch(expandValues, (value) => {\n if (mode.value === 'normal') {\n handleSubmenuExpand(value[0]);\n }\n });\n const updateActiveValues = (value: MenuValue) => {\n activeValues.value = vMenu.select(value);\n };\n watch(activeValue, updateActiveValues);\n watch(\n () => props.expandType,\n (value) => {\n mode.value = value;\n },\n );\n\n onMounted(() => {\n activeValues.value = vMenu.select(activeValue.value);\n if (expandValues.value?.length > 0) {\n handleSubmenuExpand(expandValues.value[0]); // 顶部导航只能同时展开一个子菜单\n }\n });\n \n const handleClickSubMenuItem = (value: MenuValue) => {\n const activeMenuItem = submenu.find((v) => v.value === value);\n activeMenuItem.onClick?.({ value });\n const { to, href, replace } = activeMenuItem;\n if (href) {\n window.location.href = activeMenuItem.href;\n }\n const router = activeMenuItem.router || proxy.$root.$router;\n if (to && router) {\n replace ? router.replace(to) : router.push(to);\n }\n };\n // setup返回的render函数中无法访问methods属性中的类容,移动此方法到setup中\n const renderNormalSubmenu = () => {\n if (submenu.length === 0) return null;\n return (\n <ul class={[`${classPrefix.value}-head-menu__submenu`, `${classPrefix.value}-submenu`]}>\n {\n <Tabs value={activeValue.value} onChange={handleTabChange}>\n {submenu.map((item) => (\n <TabPanel value={item.value} label={item.vnode()[0]?.children} />\n ))}\n </Tabs>\n }\n </ul>\n );\n };\n\n const menuRef = ref<HTMLUListElement>();\n const innerRef = ref<HTMLDivElement>();\n const logoRef = ref<HTMLDivElement>();\n const operationRef = ref<HTMLDivElement>();\n\n const getComputedCss = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n getComputedStyle(el)[cssProperty] ?? '';\n\n const getComputedCssValue = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n Number.parseInt(String(getComputedCss(el, cssProperty)), 10);\n\n const calcMenuWidth = () => {\n const menuPaddingLeft = getComputedCssValue(menuRef.value, 'paddingLeft');\n const menuPaddingRight = getComputedCssValue(menuRef.value, 'paddingRight');\n let totalWidth = innerRef.value.clientWidth;\n if (logoRef.value) {\n const logoMarginLeft = getComputedCssValue(logoRef.value, 'marginLeft');\n const logoMarginRight = getComputedCssValue(logoRef.value, 'marginRight');\n totalWidth = totalWidth - logoRef.value.offsetWidth - logoMarginLeft - logoMarginRight;\n }\n\n if (operationRef.value) {\n const operationMarginLeft = getComputedCssValue(operationRef.value, 'marginLeft');\n const operationMarginRight = getComputedCssValue(operationRef.value, 'marginRight');\n totalWidth = totalWidth - operationRef.value.offsetWidth - operationMarginLeft - operationMarginRight;\n }\n\n return totalWidth - menuPaddingLeft - menuPaddingRight;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const formatContent = () => {\n let slot = ctx.slots.default?.() || ctx.slots.content?.() || [];\n\n if (menuRef.value && innerRef.value) {\n const validNodes = Array.from(menuRef.value.childNodes ?? []).filter(\n (item) => item.nodeName !== '#text' || item.nodeValue,\n ) as HTMLElement[];\n\n const menuWidth = calcMenuWidth();\n const menuItemMinWidth = 104;\n\n let remainWidth = menuWidth;\n let sliceIndex = validNodes.length;\n\n for (let index = 0; index < validNodes.length; index++) {\n const element = validNodes[index];\n remainWidth -= element.offsetWidth || 0;\n if (remainWidth < menuItemMinWidth) {\n sliceIndex = index;\n break;\n }\n }\n\n const defaultSlot = slot.slice(0, sliceIndex);\n const subMore = slot.slice(sliceIndex);\n\n if (subMore.length) {\n slot = defaultSlot.concat(\n <Submenu expandType=\"popup\" title={() => <icon-ri-more-line />}>\n {subMore}\n </Submenu>,\n );\n }\n }\n return slot;\n };\n\n const initVMenu = (slots: VNode[], parentValue?: string) => {\n slots.forEach((node) => {\n const nodeValue = node.props?.value;\n if ((node.type as Component)?.name === 'XSubmenu' || (node.type as Component)?.name === 'XMenuItem') {\n vMenu.add({ value: nodeValue, parent: parentValue, vnode: (node.children as any).default, ...node.props });\n }\n if (isFunction((node.children as any)?.default)) {\n initVMenu((node.children as any).default(), nodeValue);\n return;\n }\n if (isArray(node.children)) {\n initVMenu(node.children as VNode[], nodeValue);\n }\n });\n };\n initVMenu(ctx.slots.default?.() || ctx.slots.content?.() || []);\n\n return () => {\n const logo = props.logo?.(h) || ctx.slots.logo?.();\n const operations = props.operations?.(h) || ctx.slots.operations?.() || ctx.slots.options?.();\n\n // TODO: 判断逻辑不够完善 影响封装组件的子菜单样式渲染 暂时先不执行 待调整实现方案\n // const content = formatContent();\n const content = ctx.slots.default?.() || ctx.slots.content?.() || [];\n\n return (\n <div class={menuClass.value}>\n <div class={`${classPrefix.value}-head-menu__inner`} ref={innerRef}>\n {logo && (\n <div class={`${classPrefix.value}-menu__logo`} ref={logoRef}>\n {logo}\n </div>\n )}\n <ul class={`${classPrefix.value}-menu`} ref={menuRef}>\n {content}\n </ul>\n {operations && (\n <div class={`${classPrefix.value}-menu__operations`} ref={operationRef}>\n {operations}\n </div>\n )}\n </div>\n {mode.value === 'normal' && renderNormalSubmenu()}\n </div>\n );\n };\n },\n});\n"],"names":["_isVNode","name","props","setup","watchEffect","log","activeValue","setActiveValue","expandValues","setExpanded","isMutex","mode","theme","vMenu","isHead","activeValues","select","open","expanded","watch","handleSubmenuExpand","onMounted","value","window","replace","_createVNode","remainWidth","sliceIndex","slot","_resolveComponent","slots","parent","isFunction","isArray","initVMenu"],"mappings":"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"}