xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 7.63 kB
Source Map (JSON)
{"version":3,"file":"switch.mjs","sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { defineComponent, h, VNodeChild, computed, watch, toRefs } from 'vue';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport TLoading from '../loading';\nimport props from './props';\nimport { TNodeReturnValue } from '../common';\n\n// hooks\nimport { useDisabled } from '../hooks/useDisabled';\nimport useVModel from '../hooks/useVModel';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport isArray from 'lodash/isArray';\n\nexport default defineComponent({\n name: 'XSwitch',\n props: { ...props },\n\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 handleToggle(e);\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 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} disabled={disabled.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":["name","props","setup","innerValue","setSwitchVal","e","watch","immediate","isFunction","isString","isArray","_createVNode"],"mappings":"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"}