{"version":3,"file":"dropdown-menu.mjs","sources":["../../src/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import { defineComponent, computed, ref, reactive, watch, provide } from 'vue';\nimport { onClickOutside } from '@vueuse/core';\nimport { CaretDownSmallIcon, CaretUpSmallIcon } from 'tdesign-icons-vue-next';\nimport { camelCase, get as lodashGet, isFunction } from 'lodash-es';\nimport config from '../config';\nimport {\n  context as menuContext,\n  DropdownMenuState,\n  DropdownMenuControl,\n  DropdownMenuExpandState,\n  TriggerSource,\n} from './context';\nimport useExpose from '../hooks/useExpose';\nimport { findRelativeRect, findRelativeContainer } from './dom-utils';\nimport { useContent } from '../hooks/tnode';\nimport DropdownMenuProps from './props';\nimport { TdDropdownItemProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-dropdown-menu`,\n  components: { CaretDownSmallIcon, CaretUpSmallIcon },\n  props: {\n    onMenuOpened: Function,\n    onMenuClosed: Function,\n    ...DropdownMenuProps,\n  },\n  emits: ['menuOpened', 'menuClosed'],\n  setup(props, { slots }) {\n    const dropdownMenuClass = usePrefixClass('dropdown-menu');\n\n    const renderContent = useContent();\n\n    // 菜单状态\n    const state = reactive<DropdownMenuState>({\n      activeId: null,\n      barRect: {},\n      childCount: 0,\n      itemsLabel: [],\n    });\n\n    // 子成员处理\n    const menuItems = ref<any>([]);\n    const updateItems = () => {\n      if (slots.default) {\n        const itemName = `${prefix}-dropdown-item`;\n        const children = slots.default();\n        menuItems.value = children.filter((child: any) => {\n          const childTypeName = child?.type?.name;\n          return childTypeName?.includes && childTypeName.includes(itemName);\n        });\n      }\n    };\n    watch(() => slots?.default?.(), updateItems, {\n      deep: true,\n      immediate: true,\n    });\n\n    // 通过 slots.default 子成员，计算标题栏选项\n    const menuTitles = computed(() =>\n      menuItems.value?.map((item: any, index: number) => {\n        const { keys, label, value, modelValue, defaultValue, disabled, options, icon } =\n          item.props as TdDropdownItemProps;\n        const currentValue = value || modelValue || defaultValue;\n        const target = options?.find((item: any) => lodashGet(item, keys?.value ?? 'value') === currentValue);\n        if (state.itemsLabel.length < index + 1) {\n          const targetLabel = (target && lodashGet(target, keys?.label ?? 'label')) || '';\n          const computedLabel = label || targetLabel;\n\n          state.itemsLabel.push(computedLabel);\n\n          return {\n            labelProps: label, // 优先级： label属性 > 选中项\n            label: computedLabel,\n            disabled: disabled !== undefined && disabled !== false,\n            icon,\n          };\n        }\n        return {\n          labelProps: label,\n          label: label || lodashGet(target, keys?.label ?? 'label'),\n          disabled: disabled !== undefined && disabled !== false,\n          icon,\n        };\n      }),\n    );\n\n    // 提供子组件访问\n    provide('dropdownMenuProps', props);\n    provide('dropdownMenuState', state);\n    // 根结点样式\n    const classes = computed(() => [`${dropdownMenuClass.value}`]);\n    // 标题栏结点引用\n    const refBar = ref();\n    const styleBarItem = computed(() => (item: any, idx: number) => [\n      `${dropdownMenuClass.value}__item`,\n      {\n        [`${dropdownMenuClass.value}__item--disabled`]: item.disabled,\n        [`${dropdownMenuClass.value}__item--active`]: idx === state.activeId,\n      },\n    ]);\n    const styleIcon = computed(() => (item: any, idx: number) => [\n      `${dropdownMenuClass.value}__icon`,\n      {\n        [`${dropdownMenuClass.value}__icon--active`]: idx === state.activeId,\n      },\n    ]);\n\n    // 展开对应项目的菜单\n    const expandMenu = (item: any, idx: number) => {\n      const { disabled } = item;\n\n      if (disabled) return;\n\n      if (state.activeId === idx) {\n        // 再次点击时收起\n        collapseMenu();\n        props.onMenuClosed?.({ trigger: 'menu' });\n        return;\n      }\n      props.onMenuOpened?.('menuOpened');\n      state.activeId = idx;\n      state.itemsLabel[idx] = item.label;\n\n      // 获取菜单定位\n      const bar = refBar.value as any;\n      const barRect = findRelativeRect(bar);\n      state.barRect = barRect;\n\n      // 记录展开状态\n      const container = findRelativeContainer(bar) || document.body;\n      menuContext.recordMenuExpanded(container, control, DropdownMenuExpandState.expanded);\n    };\n    const collapseMenu = () => {\n      menuTitles.value.forEach((_item: any, index: number) => {\n        menuTitles.value[index].label = state.itemsLabel[index];\n      });\n      state.activeId = null;\n\n      // 清除已展开状态记录\n      const bar = refBar.value as any;\n      const container = findRelativeContainer(bar) || document.body;\n      menuContext.recordMenuExpanded(container, control, DropdownMenuExpandState.collapsed);\n    };\n\n    // dropdown-menu外面点击触发dropdown下拉框收起\n    onClickOutside(refBar, () => {\n      if (state.activeId === null) return;\n      collapseMenu();\n      props.onMenuClosed?.({ trigger: 'outside' });\n    });\n\n    const control: DropdownMenuControl = {\n      expandMenu,\n      collapseMenu,\n      emitEvents(emit: string, trigger?: TriggerSource) {\n        const eventHandler = props[`on${camelCase(emit)}` as keyof typeof props] as Function;\n        eventHandler?.(trigger);\n      },\n    };\n    // 提供子组件访问\n    provide('dropdownMenuControl', control);\n    useExpose({\n      toggle(idx?: number) {\n        if (idx != null) {\n          const item = menuTitles.value[idx];\n          expandMenu(item, idx);\n        } else {\n          collapseMenu();\n        }\n      },\n    });\n\n    useExpose({\n      expandMenu,\n      collapseMenu,\n    });\n\n    return () => {\n      const defaultSlot = renderContent('default', 'content');\n\n      const renderDropdownItemIcon = (item: any, idx: number) => {\n        const { icon } = item;\n        const isActive = idx === state.activeId; // 面板是否打开\n        const iconClass = [styleIcon.value(item, idx)];\n\n        // 使用自定义图标\n        if (icon) {\n          const isArray = Array.isArray(icon);\n          const isTwoIcons = isArray && icon.length === 2;\n\n          let selectedIcon;\n          if (isTwoIcons) {\n            selectedIcon = isActive ? icon[0] : icon[1];\n          } else {\n            selectedIcon = isArray ? icon[0] : icon;\n          }\n\n          const iconContent = isFunction(selectedIcon) ? selectedIcon() : selectedIcon;\n          return <div class={iconClass}>{iconContent}</div>;\n        }\n\n        return props.direction === 'down' ? (\n          <caret-down-small-icon class={iconClass} />\n        ) : (\n          <caret-up-small-icon class={iconClass} />\n        );\n      };\n\n      return (\n        <div ref={refBar} class={classes.value}>\n          {(menuTitles.value || []).map(\n            (item: { label: any; labelProps: TdDropdownItemProps['label'] }, idx: number) => (\n              <div class={styleBarItem.value(item, idx)} onClick={() => expandMenu(item, idx)}>\n                <div class={`${dropdownMenuClass.value}__title`}>{item.labelProps || item.label}</div>\n                {renderDropdownItemIcon(item, idx)}\n              </div>\n            ),\n          )}\n          {defaultSlot}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","components","CaretDownSmallIcon","CaretUpSmallIcon","props","_objectSpread","onMenuOpened","Function","onMenuClosed","DropdownMenuProps","emits","setup","_ref","slots","dropdownMenuClass","usePrefixClass","renderContent","useContent","state","reactive","activeId","barRect","childCount","itemsLabel","menuItems","ref","updateItems","default","itemName","children","value","filter","child","_child$type","childTypeName","type","includes","watch","_slots$default","call","deep","immediate","menuTitles","computed","_menuItems$value","map","item","index","_keys$label2","_item$props","keys","label","modelValue","defaultValue","disabled","options","icon","currentValue","target","find","lodashGet","_keys$value","length","_keys$label","targetLabel","computedLabel","push","labelProps","provide","classes","concat","refBar","styleBarItem","idx","_defineProperty","styleIcon","expandMenu","_props$onMenuOpened","_props$onMenuClosed","collapseMenu","trigger","bar","findRelativeRect","container","findRelativeContainer","document","body","menuContext","recordMenuExpanded","control","DropdownMenuExpandState","expanded","forEach","_item","collapsed","onClickOutside","_props$onMenuClosed2","emitEvents","emit","eventHandler","camelCase","useExpose","toggle","defaultSlot","renderDropdownItemIcon","isActive","iconClass","isArray","Array","isTwoIcons","selectedIcon","iconContent","isFunction","_createVNode","direction","_resolveComponent","onClick"],"mappings":"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"}