xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 3.79 kB
Source Map (JSON)
{"version":3,"file":"useSliderInput.mjs","sources":["../../../src/slider/hooks/useSliderInput.tsx"],"sourcesContent":["import { computed, Ref } from 'vue';\nimport { TdSliderProps } from '../type';\nimport InputNumber, { InputNumberProps } from '../../input-number';\nimport isBoolean from 'lodash/isBoolean';\n\nconst INPUT_NUMBER_PROPS_INITIAL_STATE: InputNumberProps = {\n decimalPlaces: 0,\n format: undefined as InputNumberProps['format'],\n placeholder: '',\n theme: 'column' as InputNumberProps['theme'],\n};\n\ninterface useSliderInputProps {\n inputNumberProps: boolean | TdSliderProps['inputNumberProps'];\n max: number;\n min: number;\n step: number;\n prefixName: string;\n vertical: boolean;\n disabled: boolean;\n}\n\n/**\n * 聚合管理inputNumber渲染逻辑\n */\nexport const useSliderInput = (config: Ref<useSliderInputProps>) => {\n const name = config.value.prefixName;\n\n /** 根据传入属性缓存计算inputNumber props */\n const sliderInputState = computed(() => {\n let initialState = { ...INPUT_NUMBER_PROPS_INITIAL_STATE };\n const inputProps = config.value;\n if (!isBoolean(inputProps.inputNumberProps)) {\n const inputTheme = inputProps.inputNumberProps?.theme;\n initialState = { ...initialState, ...inputProps.inputNumberProps };\n if (['column', 'row', 'normal'].includes(inputTheme)) {\n initialState.theme = inputTheme;\n }\n }\n return initialState;\n });\n\n const sliderNumberClass = computed(() => {\n return [\n `${name}__input`,\n {\n 'is-vertical': config.value.vertical,\n },\n ];\n });\n\n const renderInputNumber = (val: number, changeFn: (val: number) => void) => {\n // if exist min or max prop, onChange callback function will pass undefined value when decrease\n const normalizeChangeFn = (num: number | undefined) => {\n if (num !== undefined && !isNaN(num)) {\n changeFn(num);\n }\n };\n return (\n <InputNumber\n {...sliderInputState.value}\n class={sliderNumberClass.value}\n value={val}\n step={config.value.step}\n onChange={normalizeChangeFn}\n disabled={config.value.disabled}\n min={config.value.min}\n max={config.value.max}\n />\n );\n };\n\n return renderInputNumber;\n};\n"],"names":["decimalPlaces","placeholder","theme","isBoolean"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAA,gCAAA,GAAA;AACEA,EAAAA,aAAAA,EAAAA,CAAAA;;AAEAC,EAAAA,WAAAA,EAAAA,EAAAA;AACAC,EAAAA,KAAAA,EAAAA,QAAAA;AACF,CAAA,CAAA;AAeO,IAAA,cAAA,GAAA,SAAA,cAAA,CAAA,MAAA,EAAA;AACC,EAAA,IAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,UAAA,CAAA;AAGA,EAAA,IAAA,gBAAA,GAAA,QAAA,CAAA,YAAA;AACA,IAAA,IAAA,YAAA,GAAA,aAAA,CAAA,EAAA,EAAA,gCAAA,CAAA,CAAA;AACJ,IAAA,IAAA,UAAA,GAAA,MAAA,CAAA,KAAA,CAAA;AACA,IAAA,IAAA,CAAAC,WAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,EAAA;AAA6C,MAAA,IAAA,qBAAA,CAAA;AACrC,MAAA,IAAA,UAAA,GAAA,CAAA,qBAAA,GAAA,UAAA,CAAA,gBAAA,MAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAA,KAAA,CAAA;;AAEN,MAAA,IAAA,CAAA,QAAA,EAAA,KAAA,EAAA,QAAA,CAAA,CAAA,QAAA,CAAA,UAAA,CAAA,EAAA;;AAEA,OAAA;AACF,KAAA;AACO,IAAA,OAAA,YAAA,CAAA;AACT,GAAA,CAAA,CAAA;AAEM,EAAA,IAAA,iBAAA,GAAA,QAAA,CAAA,YAAA;AACG,IAAA,OAAA,CAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA;AAGH,MAAA,aAAA,EAAA,MAAA,CAAA,KAAA,CAAA,QAAA;AACF,KAAA,CAAA,CAAA;AAEJ,GAAA,CAAA,CAAA;;AAIQ,IAAA,IAAA,iBAAA,GAAA,SAAA,iBAAA,CAAA,GAAA,EAAA;;;AAGJ,OAAA;;;;AAK2B,MAAA,OAAA,EAAA,GAAA;AAClB,MAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,IAAA;AACY,MAAA,UAAA,EAAA,iBAAA;AAEnB,MAAA,UAAA,EAAA,MAAA,CAAA,KAAA,CAAA,QAAA;AACA,MAAA,KAAA,EAAA,MAAA,CAAA,KAAA,CAAA,GAAA;;AAEF,KAAA,CAAA,EAAA,IAAA,CAAA,CAAA;;AAIG,EAAA,OAAA,iBAAA,CAAA;AACT;;;;"}