tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 3.89 kB
Source Map (JSON)
{"version":3,"file":"popup-overflow-content.mjs","sources":["../../../../components/menu/components/popup-overflow-content.tsx"],"sourcesContent":["import { defineComponent, ref, onMounted, onUpdated } from 'vue';\nimport { usePrefixClass } from '@tdesign/shared-hooks';\n\n/**\n * 辅助组件:在\"更多\"弹窗中渲染封装组件的完整内容克隆,\n * 并通过 DOM 操作隐藏前 N 个菜单项(仅显示溢出部分)。\n */\nexport default defineComponent({\n name: 'PopupOverflowContent',\n props: {\n foldIndex: { type: Number, required: true },\n },\n setup(props, ctx) {\n const classPrefix = usePrefixClass();\n const wrapperRef = ref<HTMLElement>();\n\n const hideBeforeFoldIndex = () => {\n if (!wrapperRef.value) return;\n const menuItemClass = `${classPrefix.value}-menu__item`;\n const submenuClass = `${classPrefix.value}-submenu`;\n const items: HTMLElement[] = [];\n\n const collect = (parent: HTMLElement, depth: number) => {\n if (depth > 3) return;\n Array.from(parent.children).forEach((el) => {\n if (!(el instanceof HTMLElement)) return;\n if (el.classList.contains(menuItemClass) || el.classList.contains(submenuClass)) {\n items.push(el);\n } else {\n collect(el, depth + 1);\n }\n });\n };\n\n collect(wrapperRef.value, 0);\n items.forEach((el, index) => {\n el.style.display = index < props.foldIndex ? 'none' : '';\n });\n };\n\n onMounted(hideBeforeFoldIndex);\n onUpdated(hideBeforeFoldIndex);\n\n return () => <div ref={wrapperRef}>{ctx.slots.default?.()}</div>;\n },\n});\n"],"names":["defineComponent","name","props","foldIndex","type","Number","required","setup","ctx","classPrefix","usePrefixClass","wrapperRef","ref","hideBeforeFoldIndex","value","menuItemClass","concat","submenuClass","items","collect","parent","depth","Array","from","children","forEach","el","HTMLElement","classList","contains","push","index","style","display","onMounted","onUpdated","_ctx$slots$default","_ctx$slots","_createVNode","slots","call"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,2BAAeA,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,sBAAA;AACNC,EAAAA,KAAO,EAAA;AACLC,IAAAA,SAAW,EAAA;AAAEC,MAAAA,IAAM,EAAAC,MAAA;AAAQC,MAAAA,UAAU,IAAA;AAAK,KAAA;GAC5C;AACAC,EAAAA,KAAA,WAAAA,KAAAA,CAAML,OAAOM,GAAK,EAAA;AAChB,IAAA,IAAMC,cAAcC,cAAe,EAAA,CAAA;AACnC,IAAA,IAAMC,aAAaC,GAAiB,EAAA,CAAA;AAEpC,IAAA,IAAMC,sBAAsB,SAAtBA,sBAA4B;AAChC,MAAA,IAAI,CAACF,UAAW,CAAAG,KAAA,EAAO,OAAA;AACjB,MAAA,IAAAC,aAAA,GAAAC,EAAAA,CAAAA,MAAA,CAAmBP,WAAY,CAAAK,KAAA,EAAA,aAAA,CAAA,CAAA;AAC/B,MAAA,IAAAG,YAAA,GAAAD,EAAAA,CAAAA,MAAA,CAAkBP,WAAY,CAAAK,KAAA,EAAA,UAAA,CAAA,CAAA;MACpC,IAAMI,QAAuB,EAAC,CAAA;MAExB,IAAAC,QAAA,GAAU,SAAVA,OAAAA,CAAWC,MAAA,EAAqBC,KAAkB,EAAA;QACtD,IAAIA,KAAQ,GAAA,CAAA,EAAG,OAAA;AACfC,QAAAA,KAAA,CAAMC,KAAKH,MAAO,CAAAI,QAAQ,CAAE,CAAAC,OAAA,CAAQ,UAACC,EAAO,EAAA;AAC1C,UAAA,IAAI,EAAEA,EAAc,YAAAC,WAAA,CAAA,EAAc,OAAA;AAC9B,UAAA,IAAAD,EAAA,CAAGE,UAAUC,QAAS,CAAAd,aAAa,KAAKW,EAAG,CAAAE,SAAA,CAAUC,QAAS,CAAAZ,YAAY,CAAG,EAAA;AAC/EC,YAAAA,KAAA,CAAMY,KAAKJ,EAAE,CAAA,CAAA;AACf,WAAO,MAAA;AACGP,YAAAA,QAAA,CAAAO,EAAA,EAAIL,QAAQ,CAAC,CAAA,CAAA;AACvB,WAAA;AACF,SAAC,CAAA,CAAA;OACH,CAAA;AAEQF,MAAAA,QAAA,CAAAR,UAAA,CAAWG,OAAO,CAAC,CAAA,CAAA;AACrBI,MAAAA,KAAA,CAAAO,OAAA,CAAQ,UAACC,EAAA,EAAIK,KAAU,EAAA;AAC3BL,QAAAA,EAAA,CAAGM,KAAM,CAAAC,OAAA,GAAUF,KAAQ,GAAA7B,KAAA,CAAMC,YAAY,MAAS,GAAA,EAAA,CAAA;AACxD,OAAC,CAAA,CAAA;KACH,CAAA;IAEA+B,SAAA,CAAUrB,mBAAmB,CAAA,CAAA;IAC7BsB,SAAA,CAAUtB,mBAAmB,CAAA,CAAA;IAEtB,OAAA,YAAA;MAAA,IAAAuB,kBAAA,EAAAC,UAAA,CAAA;AAAA,MAAA,OAAAC,WAAA,CAAA,KAAA,EAAA;QAAA,KAAgB3B,EAAAA,UAAAA;gCAAa,CAAA0B,UAAA,GAAA7B,GAAI,CAAA+B,KAAA,EAAgB,SAAA,CAAA,MAAA,IAAA,IAAAH,kBAAA,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAAI,IAAA,CAAAH,UAAoB,CAAA,CAAA,CAAA,CAAA;KAA1C,CAAA;AAChB,GAAA;AACF,CAAC,CAAA;;;;"}