xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 4.67 kB
Source Map (JSON)
{"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;;;;"}