xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 3.63 kB
Source Map (JSON)
{"version":3,"file":"useSliderTooltip.mjs","sources":["../../../src/slider/hooks/useSliderTooltip.tsx"],"sourcesContent":["import { TooltipProps } from '../../tooltip';\nimport { ref, computed, ComputedRef, Ref } from 'vue';\nimport { TdSliderProps } from '../type';\nimport { formatLabel } from '../util/common';\n\nconst initialProps: TooltipProps & { overlayClassName: string } = {\n visible: false,\n trigger: 'hover',\n showArrow: true,\n overlayInnerStyle: undefined,\n overlayClassName: undefined,\n attach: 'body',\n theme: 'default',\n};\n\nexport interface TooltipConfig {\n tooltipProps: boolean | TooltipProps;\n vertical: boolean;\n value: number;\n label: TdSliderProps['label'];\n}\n\n/**\n * 聚合管理滑块tooltip内容hook\n * @param tooltipProps tooltip属性配置\n * @param vertical 是否垂直展示\n * @returns\n */\nexport const useSliderTooltip = (tooltipConfig: Ref<TooltipConfig>) => {\n const tooltipRef = ref();\n const showTooltip = computed({\n get() {\n return !tooltipConfig.value.tooltipProps === false;\n },\n set(val) {\n return val;\n },\n });\n const normalizeProps = ref<TooltipProps & { overlayClassName: string }>({ ...initialProps });\n /** 开关显示tooltip */\n const toggleTooltip = (toState: boolean) => {\n if (!showTooltip.value) return;\n normalizeProps.value.visible = toState;\n };\n\n /** 合并最终tooltip属性,以外部同名属性覆盖初始化属性 */\n const validProps = computed(() => {\n const { vertical, tooltipProps, label, value } = tooltipConfig.value;\n const placement = vertical ? 'right' : 'top';\n let content = formatLabel(label, value);\n if (tooltipProps instanceof Object) {\n if (!tooltipProps?.placement) {\n normalizeProps.value.placement = placement;\n }\n if (tooltipProps.content) {\n content = tooltipProps.content;\n }\n // @ts-ignore\n return { ...normalizeProps.value, ...tooltipProps, content };\n }\n return { ...normalizeProps.value, placement, content };\n });\n\n return {\n tooltipRef,\n tooltipProps: validProps as ComputedRef<TdSliderProps['tooltipProps']>,\n toggleTooltip,\n showTooltip,\n };\n};\n"],"names":["visible","trigger","showArrow","attach","theme","normalizeProps","content","placement","tooltipRef","tooltipProps","toggleTooltip","showTooltip"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA,IAAA,YAAA,GAAA;AACEA,EAAAA,OAAAA,EAAAA,KAAAA;AACAC,EAAAA,OAAAA,EAAAA,OAAAA;AACAC,EAAAA,SAAAA,EAAAA,IAAAA;;;AAGAC,EAAAA,MAAAA,EAAAA,MAAAA;AACAC,EAAAA,KAAAA,EAAAA,SAAAA;AACF,CAAA,CAAA;AAeO,IAAA,gBAAA,GAAA,SAAA,gBAAA,CAAA,aAAA,EAAA;AACL,EAAA,IAAA,UAAA,GAAA,GAAA,EAAA,CAAA;;;AAGW,MAAA,OAAA,CAAA,aAAA,CAAA,KAAA,CAAA,YAAA,KAAA,KAAA,CAAA;;;AAGA,MAAA,OAAA,GAAA,CAAA;AACT,KAAA;AACF,GAAA,CAAA,CAAA;;AAGM,EAAA,IAAA,aAAA,GAAA,SAAA,aAAA,CAAA,OAAA,EAAA;AACJ,IAAA,IAAA,CAAA,WAAA,CAAA,KAAA,EAAA,OAAA;AACAC,IAAAA,cAAAA,CAAAA,KAAAA,CAAAA,OAAAA,GAAAA,OAAAA,CAAAA;;AAII,EAAA,IAAA,UAAA,GAAA,QAAA,CAAA,YAAA;AACJ,IAAA,IAAA,oBAAA,GAAA,aAAA,CAAA,KAAA;;;;;AACM,IAAA,IAAA,SAAA,GAAA,QAAA,GAAA,OAAA,GAAA,KAAA,CAAA;AACF,IAAA,IAAA,OAAA,GAAA,WAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;;;AAGAA,QAAAA,cAAAA,CAAAA,KAAAA,CAAAA,SAAAA,GAAAA,SAAAA,CAAAA;AACF,OAAA;;;AAGA,OAAA;;AAEmDC,QAAAA,OAAAA,EAAAA,OAAAA;AAAQ,OAAA,CAAA,CAAA;AAC7D,KAAA;AACA,IAAA,OAAA,aAAA,CAAA,aAAA,CAAA,EAAA,EAAA,cAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA;AAAkCC,MAAAA,SAAAA,EAAAA,SAAAA;AAAWD,MAAAA,OAAAA,EAAAA,OAAAA;AAAQ,KAAA,CAAA,CAAA;AACvD,GAAA,CAAA,CAAA;;AAGEE,IAAAA,UAAAA,EAAAA,UAAAA;AACAC,IAAAA,YAAAA,EAAAA,UAAAA;AACAC,IAAAA,aAAAA,EAAAA,aAAAA;AACAC,IAAAA,WAAAA,EAAAA,WAAAA;;AAEJ;;;;"}