tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 7.84 kB
Source Map (JSON)
{"version":3,"file":"switch.mjs","sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { computed, defineComponent, h } from 'vue';\nimport isArray from 'lodash/isArray';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport TLoading from '../loading';\nimport { useToggle, useDefault } from '../shared';\nimport config from '../config';\nimport props from './props';\nimport { SwitchValue, TdSwitchProps } from './type';\nimport { useFormDisabled } from '../form/hooks';\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 const [innerValue] = useDefault<SwitchValue, TdSwitchProps>(props, context.emit, 'value', 'change');\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 innerValue.value = 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","_useDefault","useDefault","emit","_useDefault2","_slicedToArray","innerValue","_useToggle","useToggle","value","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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"}