{"version":3,"file":"radio-group2.mjs","names":[],"sources":["../../../../../../packages/components/radio/src/radio-group.vue"],"sourcesContent":["<template>\n  <div\n    :id=\"groupId\"\n    ref=\"radioGroupRef\"\n    :class=\"ns.b('group')\"\n    role=\"radiogroup\"\n    :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'radio-group' : undefined\"\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  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  nextTick,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  toRefs,\n  watch,\n} from 'vue'\nimport { useFormItem, useFormItemInputId } from '@element-plus/components/form'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { debugWarn } from '@element-plus/utils'\nimport {\n  type RadioGroupProps,\n  radioDefaultProps,\n  radioGroupEmits,\n  radioGroupPropsDefaults,\n} from './radio-group'\nimport { radioGroupKey } from './constants'\nimport { isEqual, omit } from 'lodash-unified'\nimport ElRadio from './radio.vue'\nimport ElRadioButton from './radio-button.vue'\n\ndefineOptions({\n  name: 'ElRadioGroup',\n})\n\nconst props = withDefaults(\n  defineProps<RadioGroupProps>(),\n  radioGroupPropsDefaults\n)\nconst emit = defineEmits(radioGroupEmits)\n\nconst ns = useNamespace('radio')\nconst radioId = useId()\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\nconst { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n  formItemContext: formItem,\n})\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  nextTick(() => emit(CHANGE_EVENT, value))\n}\n\nonMounted(() => {\n  const radios =\n    radioGroupRef.value!.querySelectorAll<HTMLInputElement>('[type=radio]')\n  const firstLabel = radios[0]\n  if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {\n    firstLabel.tabIndex = 0\n  }\n})\n\nconst name = computed(() => {\n  return props.name || radioId.value\n})\n\nconst aliasProps = computed(() => ({\n  ...radioDefaultProps,\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' ? ElRadioButton : ElRadio\n)\n\nprovide(\n  radioGroupKey,\n  reactive({\n    ...toRefs(props),\n    changeEvent,\n    name,\n  })\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":""}