UNPKG

tdesign-vue-next

Version:
1 lines 24.9 kB
{"version":3,"file":"head-menu.mjs","sources":["../../../components/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 { EllipsisIcon } from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\nimport { isArray } from 'lodash-es';\n\nimport log from '@tdesign/common-js/log/log';\nimport props from './head-menu-props';\nimport { MenuValue } from './type';\nimport { TdMenuInterface, TdOpenType } from './types';\nimport { Tabs, TabPanel } from '../tabs';\nimport Submenu from './submenu';\nimport { VMenu } from './utils';\n\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\n\nexport default defineComponent({\n name: 'THeadMenu',\n props,\n setup(props, ctx) {\n const classPrefix = usePrefixClass();\n const { proxy } = getCurrentInstance();\n watchEffect(() => {\n if (ctx.slots.options) {\n log.warnOnce('TMenu', '`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.$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={() => <EllipsisIcon />}>\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 === 'TSubmenu' || (node.type as Component)?.name === 'TMenuItem') {\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":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","setup","ctx","_ctx$slots$default2","_ctx$slots3","_ctx$slots$content2","_ctx$slots4","classPrefix","usePrefixClass","_getCurrentInstance","getCurrentInstance","proxy","watchEffect","slots","options","log","warnOnce","_toRefs","toRefs","value","modelValue","expanded","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","activeValue","setActiveValue","_useDefaultValue","useDefaultValue","defaultExpanded","onExpand","_useDefaultValue2","expandValues","setExpanded","activeValues","ref","theme","computed","menuClass","concat","mode","expandType","submenu","reactive","vMenu","VMenu","isMutex","provide","isHead","select","open","type","_toConsumableArray","index","indexOf","push","splice","handleTabChange","handleClickSubMenuItem","handleSubmenuExpand","ans","getChild","length","apply","watch","updateActiveValues","onMounted","_expandValues$value","_activeMenuItem$onCli","activeMenuItem","find","v","onClick","to","href","replace","window","location","router","$router","renderNormalSubmenu","_slot","_createVNode","map","item","_item$vnode$","TabPanel","vnode","children","_default","menuRef","innerRef","logoRef","operationRef","getComputedCss","el","cssProperty","getComputedStyle","_getComputedStyle$css","getComputedCssValue","Number","parseInt","String","calcMenuWidth","menuPaddingLeft","menuPaddingRight","totalWidth","clientWidth","logoMarginLeft","logoMarginRight","offsetWidth","operationMarginLeft","operationMarginRight","formatContent","_ctx$slots$default","_ctx$slots","_ctx$slots$content","_ctx$slots2","slot","content","_menuRef$value$childN","validNodes","Array","from","childNodes","filter","nodeName","nodeValue","menuWidth","menuItemMinWidth","remainWidth","sliceIndex","element","defaultSlot","slice","subMore","Submenu","title","EllipsisIcon","initVMenu","parentValue","forEach","node","_node$props","_node$type","_node$type2","_node$children","add","_objectSpread","parent","isFunction","isArray","_props2$logo","_ctx$slots$logo","_ctx$slots5","_props2$operations","_ctx$slots$operations","_ctx$slots6","_ctx$slots$options","_ctx$slots7","_ctx$slots$default3","_ctx$slots8","_ctx$slots$content3","_ctx$slots9","logo","h","operations"],"mappings":"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"}