element-plus
Version:
A Component Library for Vue 3
1 lines • 5.97 kB
Source Map (JSON)
{"version":3,"file":"checkbox-group.vue2.mjs","sources":["../../../../../../packages/components/checkbox/src/checkbox-group.vue"],"sourcesContent":["<template>\n <component\n :is=\"tag\"\n :id=\"groupId\"\n :class=\"ns.b('group')\"\n role=\"group\"\n :aria-label=\"\n !isLabeledByFormItem ? ariaLabel || 'checkbox-group' : undefined\n \"\n :aria-labelledby=\"isLabeledByFormItem ? formItem?.labelId : undefined\"\n >\n <slot>\n <component\n :is=\"optionComponent\"\n v-for=\"(item, index) in options\"\n :key=\"index\"\n v-bind=\"getOptionProps(item)\"\n />\n </slot>\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, provide, toRefs, watch } from 'vue'\nimport { isEqual, omit, pick } from 'lodash-unified'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { debugWarn } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n} from '@element-plus/components/form'\nimport { checkboxDefaultProps, checkboxGroupEmits } from './checkbox-group'\nimport { checkboxGroupContextKey } from './constants'\nimport ElCheckbox from './checkbox.vue'\nimport ElCheckboxButton from './checkbox-button.vue'\n\nimport type {\n CheckboxGroupProps,\n CheckboxGroupValueType,\n} from './checkbox-group'\n\ndefineOptions({\n name: 'ElCheckboxGroup',\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n modelValue: () => [],\n disabled: undefined,\n tag: 'div',\n validateEvent: true,\n props: () => checkboxDefaultProps,\n type: 'checkbox',\n})\nconst emit = defineEmits(checkboxGroupEmits)\nconst ns = useNamespace('checkbox')\n\nconst checkboxDisabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst changeEvent = async (value: CheckboxGroupValueType) => {\n emit(UPDATE_MODEL_EVENT, value)\n await nextTick()\n emit(CHANGE_EVENT, value)\n}\n\nconst modelValue = computed({\n get() {\n return props.modelValue\n },\n set(val: CheckboxGroupValueType) {\n changeEvent(val)\n },\n})\n\nconst aliasProps = computed(() => ({\n ...checkboxDefaultProps,\n ...props.props,\n}))\nconst getOptionProps = (option: Record<string, any>) => {\n const { label, value, disabled } = aliasProps.value\n const base = {\n label: option[label],\n value: option[value],\n disabled: option[disabled],\n }\n return { ...omit(option, [label, value, disabled]), ...base }\n}\n\nconst optionComponent = computed(() =>\n props.type === 'button' ? ElCheckboxButton : ElCheckbox\n)\n\nprovide(checkboxGroupContextKey, {\n ...pick(toRefs(props), [\n 'size',\n 'min',\n 'max',\n 'validateEvent',\n 'fill',\n 'textColor',\n ]),\n disabled: checkboxDisabled,\n modelValue,\n changeEvent,\n})\n\nwatch(\n () => props.modelValue,\n (newVal, oldValue) => {\n if (props.validateEvent && !isEqual(newVal, oldValue)) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n }\n)\n</script>\n"],"names":["ElCheckboxButton","ElCheckbox","_openBlock","_createBlock","_resolveDynamicComponent","_unref","_normalizeClass","_renderSlot","_createElementBlock","_Fragment","_renderList","_mergeProps"],"mappings":"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"}