1 line
11 KiB
Plaintext
1 line
11 KiB
Plaintext
{"version":3,"file":"switch2.mjs","sources":["../../../../../../packages/components/switch/src/switch.vue"],"sourcesContent":["<template>\n <div :class=\"switchKls\" @click.prevent=\"switchValue\">\n <input\n :id=\"inputId\"\n ref=\"input\"\n :class=\"ns.e('input')\"\n type=\"checkbox\"\n role=\"switch\"\n :aria-checked=\"checked\"\n :aria-disabled=\"switchDisabled\"\n :aria-label=\"ariaLabel\"\n :name=\"name\"\n :true-value=\"activeValue\"\n :false-value=\"inactiveValue\"\n :disabled=\"switchDisabled\"\n :tabindex=\"tabindex\"\n @change=\"handleChange\"\n @keydown.enter=\"switchValue\"\n />\n <span\n v-if=\"!inlinePrompt && (inactiveIcon || inactiveText)\"\n :class=\"labelLeftKls\"\n >\n <el-icon v-if=\"inactiveIcon\">\n <component :is=\"inactiveIcon\" />\n </el-icon>\n <span v-if=\"!inactiveIcon && inactiveText\" :aria-hidden=\"checked\">{{\n inactiveText\n }}</span>\n </span>\n <span :class=\"ns.e('core')\" :style=\"coreStyle\">\n <div v-if=\"inlinePrompt\" :class=\"ns.e('inner')\">\n <template v-if=\"activeIcon || inactiveIcon\">\n <el-icon :class=\"ns.is('icon')\">\n <component :is=\"checked ? activeIcon : inactiveIcon\" />\n </el-icon>\n </template>\n <template v-else-if=\"activeText || inactiveText\">\n <span :class=\"ns.is('text')\" :aria-hidden=\"!checked\">\n {{ checked ? activeText : inactiveText }}\n </span>\n </template>\n </div>\n <div :class=\"ns.e('action')\">\n <el-icon v-if=\"loading\" :class=\"ns.is('loading')\">\n <loading />\n </el-icon>\n <slot v-else-if=\"checked\" name=\"active-action\">\n <el-icon v-if=\"activeActionIcon\">\n <component :is=\"activeActionIcon\" />\n </el-icon>\n </slot>\n <slot v-else-if=\"!checked\" name=\"inactive-action\">\n <el-icon v-if=\"inactiveActionIcon\">\n <component :is=\"inactiveActionIcon\" />\n </el-icon>\n </slot>\n </div>\n </span>\n <span\n v-if=\"!inlinePrompt && (activeIcon || activeText)\"\n :class=\"labelRightKls\"\n >\n <el-icon v-if=\"activeIcon\">\n <component :is=\"activeIcon\" />\n </el-icon>\n <span v-if=\"!activeIcon && activeText\" :aria-hidden=\"!checked\">{{\n activeText\n }}</span>\n </span>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, shallowRef, watch } from 'vue'\nimport {\n addUnit,\n debugWarn,\n isBoolean,\n isPromise,\n throwError,\n} from '@element-plus/utils'\nimport ElIcon from '@element-plus/components/icon'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { Loading } from '@element-plus/icons-vue'\nimport {\n CHANGE_EVENT,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { switchEmits, switchProps } from './switch'\n\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'ElSwitch'\ndefineOptions({\n name: COMPONENT_NAME,\n})\n\nconst props = defineProps(switchProps)\nconst emit = defineEmits(switchEmits)\n\nconst { formItem } = useFormItem()\nconst switchSize = useFormSize()\nconst ns = useNamespace('switch')\n\nconst { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst switchDisabled = useFormDisabled(\n computed(() => {\n if (props.loading) {\n return true\n }\n return undefined\n })\n)\nconst isControlled = ref(props.modelValue !== false)\nconst input = shallowRef<HTMLInputElement>()\n\nconst switchKls = computed(() => [\n ns.b(),\n ns.m(switchSize.value),\n ns.is('disabled', switchDisabled.value),\n ns.is('checked', checked.value),\n])\n\nconst labelLeftKls = computed(() => [\n ns.e('label'),\n ns.em('label', 'left'),\n ns.is('active', !checked.value),\n])\n\nconst labelRightKls = computed(() => [\n ns.e('label'),\n ns.em('label', 'right'),\n ns.is('active', checked.value),\n])\n\nconst coreStyle = computed<CSSProperties>(() => ({\n width: addUnit(props.width),\n}))\n\nwatch(\n () => props.modelValue,\n () => {\n isControlled.value = true\n }\n)\n\nconst actualValue = computed(() => {\n return isControlled.value ? props.modelValue : false\n})\n\nconst checked = computed(() => actualValue.value === props.activeValue)\n\nif (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {\n emit(UPDATE_MODEL_EVENT, props.inactiveValue)\n emit(CHANGE_EVENT, props.inactiveValue)\n emit(INPUT_EVENT, props.inactiveValue)\n}\n\nwatch(checked, (val) => {\n input.value!.checked = val\n\n if (props.validateEvent) {\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n})\n\nconst handleChange = () => {\n const val = checked.value ? props.inactiveValue : props.activeValue\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n emit(INPUT_EVENT, val)\n nextTick(() => {\n input.value!.checked = checked.value\n })\n}\n\nconst switchValue = () => {\n if (switchDisabled.value) return\n\n const { beforeChange } = props\n if (!beforeChange) {\n handleChange()\n return\n }\n\n const shouldChange = beforeChange()\n\n const isPromiseOrBool = [\n isPromise(shouldChange),\n isBoolean(shouldChange),\n ].includes(true)\n if (!isPromiseOrBool) {\n throwError(\n COMPONENT_NAME,\n 'beforeChange must return type `Promise<boolean>` or `boolean`'\n )\n }\n\n if (isPromise(shouldChange)) {\n shouldChange\n .then((result) => {\n if (result) {\n handleChange()\n }\n })\n .catch((e) => {\n debugWarn(COMPONENT_NAME, `some error occurred: ${e}`)\n })\n } else if (shouldChange) {\n handleChange()\n }\n}\n\nconst focus = (): void => {\n input.value?.focus?.()\n}\n\nonMounted(() => {\n input.value!.checked = checked.value\n})\n\ndefineExpose({\n /**\n * @description manual focus to the switch component\n **/\n focus,\n /**\n * @description whether Switch is checked\n */\n checked,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_withModifiers","_createElementVNode"],"mappings":"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"} |