tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 9.91 kB
Source Map (JSON)
{"version":3,"file":"switch.mjs","sources":["../../../components/switch/switch.tsx"],"sourcesContent":["import { defineComponent, h, VNodeChild, computed, watch, toRefs } from 'vue';\nimport { useVModel, useDisabled, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\nimport TLoading from '../loading';\nimport props from './props';\nimport { TNodeReturnValue } from '../common';\n\n// hooks\n\nimport { isArray, isString, isFunction } from 'lodash-es';\n\nexport default defineComponent({\n name: 'TSwitch',\n props,\n setup(props, { slots }) {\n const disabled = useDisabled();\n const COMPONENT_NAME = usePrefixClass('switch');\n const { STATUS, SIZE } = useCommonClassName();\n // values\n const { value, modelValue } = toRefs(props);\n const [innerValue, setSwitchVal] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const activeValue = computed(() => {\n if (props.customValue && props.customValue.length > 0) {\n return props.customValue[0];\n }\n return true;\n });\n const inactiveValue = computed(() => {\n if (props.customValue && props.customValue.length > 1) {\n return props.customValue[1];\n }\n return false;\n });\n\n // methods\n function handleToggle(e: MouseEvent) {\n const checked = innerValue.value === activeValue.value ? inactiveValue.value : activeValue.value;\n // emits\n setSwitchVal(checked, { e });\n }\n\n function toggle(e: MouseEvent) {\n if (disabled.value || props.loading) {\n return;\n }\n if (!props.beforeChange) {\n handleToggle(e);\n return;\n }\n Promise.resolve(props.beforeChange())\n .then((v) => {\n if (v) {\n handleToggle(e);\n }\n })\n .catch((e) => {\n throw new Error(`Switch: some error occurred: ${e}`);\n });\n }\n\n // classes\n const classes = computed(() => [\n `${COMPONENT_NAME.value}`,\n SIZE.value[props.size],\n {\n [STATUS.value.disabled]: disabled.value,\n [STATUS.value.loading]: props.loading,\n [STATUS.value.checked]: innerValue.value === activeValue.value || props.modelValue === activeValue.value,\n },\n ]);\n const nodeClasses = computed(() => {\n return [\n `${COMPONENT_NAME.value}__handle`,\n {\n [STATUS.value.disabled]: disabled.value,\n [STATUS.value.loading]: props.loading,\n },\n ];\n });\n const contentClasses = computed(() => {\n return [\n `${COMPONENT_NAME.value}__content`,\n SIZE.value[props.size],\n {\n [STATUS.value.disabled]: disabled.value,\n },\n ];\n });\n\n watch(\n innerValue,\n (val) => {\n if (props.customValue && props.customValue.length && !props.customValue.includes(val)) {\n throw new Error(`value is ${val} not in ${JSON.stringify(props.customValue)}`);\n }\n },\n {\n immediate: true,\n },\n );\n\n const content = computed<VNodeChild>(() => {\n if (isFunction(props.label)) {\n return props.label(h, { value: innerValue.value });\n }\n if (isString(props.label)) {\n return props.label;\n }\n if (isArray(props.label) && props.label.length) {\n const label = innerValue.value === activeValue.value ? props.label[0] : props.label[1];\n if (!label) return;\n if (isString(label)) {\n return label;\n }\n if (isFunction(label)) {\n return label(h);\n }\n }\n if (slots.label) {\n return slots.label({ value: innerValue.value });\n }\n return null;\n });\n return () => {\n let switchContent: VNodeChild;\n let loadingContent: TNodeReturnValue;\n if (props.loading) {\n loadingContent = <TLoading size=\"small\" />;\n } else if (content.value) {\n switchContent = content.value;\n }\n\n return (\n <div class={classes.value} onClick={toggle}>\n <span class={nodeClasses.value}>{loadingContent}</span>\n <div class={contentClasses.value}>{switchContent}</div>\n </div>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","slots","_ref","disabled","useDisabled","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","SIZE","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setSwitchVal","activeValue","computed","customValue","length","inactiveValue","handleToggle","e","checked","toggle","loading","beforeChange","Promise","resolve","then","v","Error","concat","classes","size","_defineProperty","nodeClasses","contentClasses","watch","val","includes","JSON","stringify","immediate","content","isFunction","label","h","isString","isArray","switchContent","loadingContent","_createVNode","TLoading"],"mappings":"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"}