UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.17 kB
{"version":3,"file":"radio-group2.mjs","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 radioDefaultProps,\n radioGroupEmits,\n radioGroupProps,\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\nimport type { RadioGroupProps } from './radio-group'\n\ndefineOptions({\n name: 'ElRadioGroup',\n})\n\nconst props = defineProps(radioGroupProps)\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"],"names":["ElRadioButton","ElRadio","_createElementBlock","_unref","_normalizeClass","ariaLabel","_renderSlot","_openBlock","_Fragment","options","_createBlock","_resolveDynamicComponent","_mergeProps"],"mappings":"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"}