tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 16.3 kB
Source Map (JSON)
{"version":3,"file":"dropdown-menu.mjs","sources":["../../../components/dropdown/dropdown-menu.tsx"],"sourcesContent":["import { defineComponent, ref, onMounted, h, reactive, withDirectives } from 'vue';\nimport { ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-vue-next';\nimport DropdownItem from './dropdown-item';\n\nimport { DropdownOption } from './type';\nimport props from './props';\nimport TDivider from '../divider';\nimport { useGlobalIcon, usePrefixClass, useTNodeJSX } from '@tdesign/shared-hooks';\n\nimport { TNode } from '../common';\nimport { isFunction } from 'lodash-es';\n\nexport default defineComponent({\n name: 'TDropdownMenu',\n props,\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n const dropdownClass = usePrefixClass('dropdown');\n const dropdownMenuClass = usePrefixClass('dropdown__menu');\n const scrollTopMap = reactive<Record<string, number>>({});\n const itemHeight = ref(null);\n const menuRef = ref<HTMLElement>();\n const panelTopContentRef = ref<HTMLElement>();\n const topContentHeight = ref(0);\n const isOverMaxHeight = ref(false);\n const { ChevronRightIcon } = useGlobalIcon({\n ChevronRightIcon: TdChevronRightIcon,\n });\n\n const handleItemClick = (options: { data: DropdownOption; context: { e: MouseEvent } }) => {\n const { data, context } = options;\n data?.onClick?.(data, context);\n props.onClick?.(data, context);\n };\n\n const handleScroll = (e: MouseEvent, deep: number) => {\n const { scrollTop } = e.target as HTMLElement;\n scrollTopMap[deep] = scrollTop;\n };\n\n onMounted(() => {\n if (menuRef.value) {\n const menuHeight = parseInt(window?.getComputedStyle(menuRef.value).height, 10);\n if (menuHeight >= props.maxHeight) isOverMaxHeight.value = true;\n }\n const dropdownItem = document.querySelector(`.${dropdownClass.value}__item`);\n if (dropdownItem) {\n itemHeight.value = dropdownItem.scrollHeight + 2;\n }\n if (panelTopContentRef.value) {\n topContentHeight.value = panelTopContentRef.value.offsetHeight;\n }\n });\n\n const getContent = (content: string | TNode) => {\n if (isFunction(content)) {\n return content(h);\n }\n return content;\n };\n\n // 处理options渲染的场景\n const renderOptions = (data: Array<DropdownOption>, deep: number) => {\n const arr: Array<unknown> = [];\n let renderContent;\n data.forEach?.((menu, idx) => {\n const optionItem = { ...(menu as DropdownOption) };\n // 子菜单 top = 菜单项偏移(itemHeight * idx) + panelTopContent高度补偿(仅第一级) - 容器滚动距离(currentScrollTop)\n const currentScrollTop = scrollTopMap[deep] || 0;\n const submenuTop = idx * itemHeight.value + (deep === 0 ? topContentHeight.value : 0) - currentScrollTop;\n\n if (optionItem.children) {\n optionItem.children = renderOptions(optionItem.children, deep + 1);\n const item = (\n <DropdownItem\n style={optionItem.style}\n class={[`${dropdownClass.value}__item`, `${dropdownClass.value}__item--suffix`, optionItem.class]}\n value={optionItem.value}\n theme={optionItem.theme}\n active={optionItem.active}\n prefixIcon={optionItem.prefixIcon}\n disabled={optionItem.disabled}\n minColumnWidth={props.minColumnWidth}\n maxColumnWidth={props.maxColumnWidth}\n isSubmenu={true}\n >\n <div class={`${dropdownClass.value}__item-content`}>\n <span class={`${dropdownClass.value}__item-text`}>{getContent(optionItem.content)}</span>\n <ChevronRightIcon class={`${dropdownClass.value}__item-direction`} size=\"16\" />\n </div>\n <div\n class={[\n `${dropdownClass.value}__submenu-wrapper`,\n {\n [`${dropdownClass.value}__submenu-wrapper--${props.direction}`]: props.direction,\n },\n ]}\n style={{\n position: 'absolute',\n top: `${submenuTop}px`,\n }}\n >\n <div\n class={[\n `${dropdownClass.value}__submenu`,\n {\n [`${dropdownClass.value}__submenu--disabled`]: optionItem.disabled,\n },\n ]}\n style={{\n position: 'static',\n maxHeight: `${props.maxHeight}px`,\n }}\n onScroll={(e: MouseEvent) => handleScroll(e, deep + 1)}\n >\n <ul>{optionItem.children}</ul>\n </div>\n </div>\n </DropdownItem>\n );\n\n renderContent = (\n <div key={idx}>\n {Array.isArray(optionItem.directives) && optionItem.directives.length\n ? withDirectives(item, optionItem.directives)\n : item}\n {optionItem.divider ? <TDivider /> : null}\n </div>\n );\n } else {\n const item = (\n <DropdownItem\n style={optionItem.style}\n class={[`${dropdownClass.value}__item`, optionItem.class]}\n value={optionItem.value}\n theme={optionItem.theme}\n active={optionItem.active}\n prefixIcon={optionItem.prefixIcon}\n disabled={optionItem.disabled}\n minColumnWidth={props.minColumnWidth}\n maxColumnWidth={props.maxColumnWidth}\n onClick={\n optionItem.disabled || optionItem.children\n ? () => null\n : (value: string | number | { [key: string]: any }, context: { e: MouseEvent }) =>\n handleItemClick({ data: optionItem, context })\n }\n >\n <span class={`${dropdownClass.value}__item-text`}>{getContent(optionItem.content)}</span>\n </DropdownItem>\n );\n renderContent = (\n <div key={idx}>\n {optionItem.directives ? withDirectives(item, optionItem.directives) : item}\n {optionItem.divider ? <TDivider /> : null}\n </div>\n );\n }\n arr.push(renderContent);\n });\n return arr;\n };\n\n return () => {\n const panelTopContent = renderTNodeJSX('panelTopContent');\n const panelBottomContent = renderTNodeJSX('panelBottomContent');\n\n return (\n <div\n class={[\n dropdownMenuClass.value,\n `${dropdownMenuClass.value}--${props.direction}`,\n {\n [`${dropdownMenuClass.value}--overflow`]: isOverMaxHeight.value,\n },\n ]}\n style={{\n maxHeight: `${props.maxHeight}px`,\n }}\n ref={menuRef}\n onScroll={(e: MouseEvent) => handleScroll(e, 0)}\n >\n {panelTopContent ? (\n <div class={`${dropdownClass.value}__top-content`} ref={panelTopContentRef}>\n {panelTopContent}\n </div>\n ) : null}\n {renderOptions(props.options, 0)}\n {panelBottomContent ? <div class={`${dropdownClass.value}__bottom-content`}>{panelBottomContent}</div> : null}\n </div>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","renderTNodeJSX","useTNodeJSX","dropdownClass","usePrefixClass","dropdownMenuClass","scrollTopMap","reactive","itemHeight","ref","menuRef","panelTopContentRef","topContentHeight","isOverMaxHeight","_useGlobalIcon","useGlobalIcon","ChevronRightIcon","TdChevronRightIcon","handleItemClick","options","_data$onClick","_props2$onClick","data","context","onClick","call","handleScroll","e","deep","scrollTop","target","onMounted","value","_window","menuHeight","parseInt","window","getComputedStyle","height","maxHeight","dropdownItem","document","querySelector","concat","scrollHeight","offsetHeight","getContent","content","isFunction","h","renderOptions","_data$forEach","arr","renderContent","forEach","menu","idx","optionItem","_objectSpread","currentScrollTop","submenuTop","children","item","style","theme","active","prefixIcon","disabled","minColumnWidth","maxColumnWidth","_default","_createVNode","_defineProperty","direction","position","top","onScroll","Array","isArray","directives","length","withDirectives","divider","TDivider","DropdownItem","push","panelTopContent","panelBottomContent"],"mappings":"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"}