{"version":3,"file":"checkbox-group2.mjs","names":[],"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"],"mappings":""}