UNPKG

tdesign-vue-next

Version:
1 lines 7.93 kB
{"version":3,"file":"dropdown.mjs","sources":["../../../components/dropdown/dropdown.tsx"],"sourcesContent":["import { defineComponent, ref, computed } from 'vue';\nimport { omit, isArray, isNumber } from 'lodash-es';\n\nimport Popup, { PopupVisibleChangeContext } from '../popup/index';\nimport DropdownMenu from './dropdown-menu';\nimport { DropdownOption, TdDropdownProps } from './type';\nimport props from './props';\nimport { useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport useDropdownOptions from './hooks/useDropdownOptions';\n\nexport default defineComponent({\n name: 'TDropdown',\n props,\n setup(props: TdDropdownProps, { attrs, slots }) {\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] ?? 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\n props.popupProps?.onVisibleChange?.(false, context);\n // TODO\n // @ts-ignore types only declare onVisibleChange,but not declare on-visible-change\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 // TODO\n // @ts-ignore types only declare onVisibleChange,but not declare on-visible-change\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 options.value?.length ? (\n <DropdownMenu\n {...omit(props, 'onClick')}\n options={options.value}\n onClick={handleMenuClick}\n v-slots={slots}\n />\n ) : null,\n }}\n >\n {trigger}\n </Popup>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","attrs","_ref","slots","renderTNodeJSX","useTNodeJSX","COMPONENT_NAME","usePrefixClass","popupElem","ref","isPopupVisible","manualCloseTimeout","computed","_props2$popupProps","_delay$","delay","popupProps","isNumber","isArray","handleMenuClick","data","context","_props2$onClick","hideAfterItemClick","_props2$popupProps2","_props2$popupProps2$o","_props2$popupProps3","_props2$popupProps3$o","setTimeout","value","onVisibleChange","onClick","handleVisibleChange","visible","_props2$popupProps4","_props2$popupProps4$o","_props2$popupProps5","_props2$popupProps5$o","_renderTNodeJSX","_props2$popupProps6","trigger","options","useDropdownOptions","popupParams","_objectSpread","disabled","placement","omit","overlayInnerClassName","_createVNode","Popup","_mergeProps","content","_options$value","length","DropdownMenu"],"mappings":"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"}