tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 8.08 kB
Source Map (JSON)
{"version":3,"file":"switch.mjs","sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { computed, defineComponent, h, toRefs } from 'vue';\nimport { isArray, isFunction, isString } from 'lodash-es';\nimport TLoading from '../loading';\nimport useToggle from '../hooks/useToggle';\nimport config from '../config';\nimport props from './props';\nimport { SwitchValue, TdSwitchProps } from './type';\nimport { useFormDisabled } from '../form/hooks';\nimport useVModel from '../hooks/useVModel';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-switch`,\n props,\n setup(props, context) {\n const switchClass = usePrefixClass('switch');\n\n const disabled = useFormDisabled();\n const switchValues = props.customValue || [true, false];\n\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const { state, toggle } = useToggle<SwitchValue>(switchValues, innerValue.value);\n const checked = computed(() => innerValue.value === switchValues[0]);\n const switchClasses = computed(() => [\n `${switchClass.value}`,\n `${switchClass.value}--${props.size}`,\n {\n [`${switchClass.value}--checked`]: checked.value,\n [`${switchClass.value}--disabled`]: disabled.value || props.loading,\n },\n ]);\n const dotClasses = computed(() => [\n `${switchClass.value}__dot`,\n `${switchClass.value}__dot--${props.size}`,\n {\n [`${switchClass.value}__dot--checked`]: checked.value,\n [`${switchClass.value}__dot--plain`]: props.label?.length !== 2 && props.icon?.length !== 2 && !props.loading,\n },\n ]);\n const labelClasses = computed(() => [\n `${switchClass.value}__label`,\n `${switchClass.value}__label--${props.size}`,\n {\n [`${switchClass.value}__label--checked`]: checked.value,\n },\n ]);\n const iconContent = computed(() => props.icon[checked.value ? 0 : 1]);\n\n function handleToggle(event: Event) {\n event.preventDefault();\n if (disabled.value || props.loading) {\n return;\n }\n\n if (state.value === innerValue.value) {\n toggle();\n }\n\n setInnerValue(state.value);\n }\n\n const renderContent = () => {\n if (props.loading) {\n return <TLoading inherit-color size=\"16.25px\" />;\n }\n\n if (isArray(props.label) && props.label.length === 2) {\n const label = checked.value ? props.label[0] : props.label[1];\n if (isString(label)) {\n return label;\n }\n if (isFunction(label)) {\n return label(h);\n }\n }\n\n if (isFunction(props.label)) {\n return props.label(h, { value: innerValue.value });\n }\n if (context.slots.label) {\n return context.slots.label({ value: innerValue.value });\n }\n\n return iconContent.value;\n };\n\n return () => {\n return (\n <div class={switchClasses.value} onClick={handleToggle}>\n <div class={dotClasses.value}>\n <div class={labelClasses.value}>{renderContent()}</div>\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","switchClass","usePrefixClass","disabled","useFormDisabled","switchValues","customValue","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","_useToggle","useToggle","state","toggle","checked","computed","switchClasses","concat","size","_defineProperty","loading","dotClasses","_props2$label","_props2$icon","label","length","icon","labelClasses","iconContent","handleToggle","event","preventDefault","renderContent","_createVNode","TLoading","isArray","isString","isFunction","h","slots"],"mappings":"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"}