{"version":3,"file":"dropdown.mjs","sources":["../../src/dropdown/dropdown.tsx"],"sourcesContent":["import { defineComponent, ref, computed } from 'vue';\nimport omit from 'lodash/omit';\nimport isArray from 'lodash/isArray';\nimport Popup, { PopupVisibleChangeContext } from '../popup/index';\nimport DropdownMenu from './dropdown-menu';\nimport { DropdownOption, TdDropdownProps } from './type';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useDropdownOptions from './hooks/useDropdownOptions';\nimport isNumber from 'lodash/isNumber';\n\nexport default defineComponent({\n  name: 'XDropdown',\n  props,\n  setup(props: TdDropdownProps, { attrs }) {\n    const renderTNodeJSX = useTNodeJSX();\n    const COMPONENT_NAME = usePrefixClass('dropdown');\n    const popupElem = ref(null);\n    const isPopupVisible = ref(false);\n\n    const manualCloseTimeout = computed(() => {\n      const delay = props.popupProps?.delay;\n      if (isNumber(delay)) return delay + 10;\n      if (isArray(delay)) return delay[1] + 10 ?? delay[0] + 10;\n      return 160;\n    });\n\n    const handleMenuClick = (data: DropdownOption, context: { e: MouseEvent }) => {\n      if (props.hideAfterItemClick) {\n        setTimeout(() => (isPopupVisible.value = false), manualCloseTimeout.value);\n        props.popupProps?.onVisibleChange?.(false, context);\n        props.popupProps?.['on-visible-change']?.(false, context);\n      }\n\n      props?.onClick?.(data, context);\n    };\n\n    const handleVisibleChange = (visible: boolean, context: PopupVisibleChangeContext) => {\n      isPopupVisible.value = visible;\n\n      props.popupProps?.onVisibleChange?.(visible, context);\n      props.popupProps?.['on-visible-change']?.(visible, context);\n    };\n\n    return () => {\n      const trigger = renderTNodeJSX('default')?.[0];\n      const options = useDropdownOptions(props);\n\n      const popupParams = {\n        ...attrs,\n        disabled: props.disabled,\n        placement: props.placement,\n        trigger: props.trigger,\n        ...omit(props.popupProps, ['onVisibleChange', 'on-visible-change']),\n        overlayInnerClassName: [\n          COMPONENT_NAME.value,\n          (props.popupProps as TdDropdownProps['popupProps'])?.overlayInnerClassName,\n        ],\n      };\n\n      return (\n        <Popup\n          destroyOnClose={true}\n          ref={popupElem}\n          visible={isPopupVisible.value}\n          onVisibleChange={handleVisibleChange}\n          expandAnimation\n          {...popupParams}\n          v-slots={{\n            content: () => (\n              <DropdownMenu {...omit(props, 'onClick')} options={options.value} onClick={handleMenuClick} />\n            ),\n          }}\n        >\n          {trigger}\n        </Popup>\n      );\n    };\n  },\n});\n"],"names":["name","props","setup","setTimeout","overlayInnerClassName","_createVNode","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,gBAAA,eAAA,CAAA;AACEA,EAAAA,IAAAA,EAAAA,WAAAA;AACAC,EAAAA,KAAAA,EAAAA,KAAAA;AACAC,EAAAA,KAAAA,EAAAA,SAAAA,KAAAA,CAAAA,MAAAA,EAAAA,IAAAA,EAAAA;AAAyC,IAAA,IAAA,KAAA,GAAA,IAAA,CAAA,KAAA,CAAA;AACvC,IAAA,IAAA,cAAA,GAAA,WAAA,EAAA,CAAA;AACM,IAAA,IAAA,cAAA,GAAA,cAAA,CAAA,UAAA,CAAA,CAAA;AACA,IAAA,IAAA,SAAA,GAAA,GAAA,CAAA,IAAA,CAAA,CAAA;AACA,IAAA,IAAA,cAAA,GAAA,GAAA,CAAA,KAAA,CAAA,CAAA;AAEA,IAAA,IAAA,kBAAA,GAAA,QAAA,CAAA,YAAA;AAAoC,MAAA,IAAA,kBAAA,CAAA;AAClC,MAAA,IAAA,KAAA,GAAA,CAAA,kBAAA,GAAA,MAAA,CAAA,UAAA,MAAA,IAAA,IAAA,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,kBAAA,CAAA,KAAA,CAAA;;;AAGC,MAAA,OAAA,GAAA,CAAA;AACT,KAAA,CAAA,CAAA;;AAE8E,MAAA,IAAA,eAAA,CAAA;;AAC9C,QAAA,IAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA;AAC5BC,QAAAA,UAAAA,CAAAA,YAAAA;AAAW,UAAA,OAAA,cAAA,CAAA,KAAA,GAAA,KAAA,CAAA;;;;AAGb,OAAA;;;;AAKoF,MAAA,IAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA;;;;;AAOtF,IAAA,OAAA,YAAA;;AACQ,MAAA,IAAA,OAAA,GAAA,CAAA,eAAA,GAAA,cAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,eAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,CAAA,CAAA,CAAA;AACA,MAAA,IAAA,OAAA,GAAA,kBAAA,CAAA,MAAA,CAAA,CAAA;;;;;;AAQJC,QAAAA,qBAAAA,EAAAA,CAAAA,cAAAA,CAAAA,KAAAA,EAAAA,CAAAA,mBAAAA,GAAAA,MAAAA,CAAAA,UAAAA,MAAAA,IAAAA,IAAAA,mBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAAA,CAAAA,qBAAAA,CAAAA;;AAMF,MAAA,OAAAC,WAAA,CAAA,KAAA,EAAAC,UAAA,CAAA;AAAA,QAAA,gBAAA,EAAA,IAAA;AAEoB,QAAA,KAAA,EAAA,SAAA;;AAGhB,QAAA,iBAAA,EAAA,mBAAA;AACA,QAAA,iBAAA,EAAA,IAAA;AAAA,OAAA,EAAA,WAAA,CAAA,EAAA;;;;;;;;AAIgG,WAAA,CAAA,EAAA,IAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;;AAQxG,GAAA;AACF,CAAA,CAAA;;;;"}