{"version":3,"file":"radio-group.vue2.mjs","sources":["../../../../../packages/components/radio/src/radio-group.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElRadioGroup'\n});\n</script>\n<template>\n  <div\n    ref=\"radioGroupRef\"\n    :class=\"ns.b('group')\"\n    role=\"radiogroup\"\n    @keydown=\"handleKeydown\"\n  >\n    <slot>\n      <el-radio\n        v-for=\"item of items\"\n        :key=\"item.value + ''\"\n        :value=\"item.value\"\n      >\n        {{ item.label }}\n      </el-radio>\n    </slot>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, provide, onMounted, ref, reactive, toRefs } from 'vue'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-ultra/shared'\nimport { radioGroupKey } from '@element-ultra/tokens'\nimport { useFormItem, useNamespace } from '@element-ultra/hooks'\nimport { radioGroupProps, type RadioGroupProps } from './radio-group'\nimport ElRadio from './radio.vue'\n\n\n\nconst props = defineProps(radioGroupProps)\n\nconst emit = defineEmits([\"update:modelValue\", \"change\"])\n\nconst ns = useNamespace('radio')\nconst radioGroupRef = ref<HTMLDivElement>()\nconst { formItem } = useFormItem()\n\nconst changeEvent = (value: RadioGroupProps['modelValue']) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  formItem?.validate()\n  nextTick(() => emit('change', value))\n}\n\nconst handleKeydown = (e: KeyboardEvent) => {\n  if (!radioGroupRef.value) return\n\n  // 左右上下按键 可以在 radio 组内切换不同选项\n  const target = e.target as HTMLInputElement\n  const className =\n    target.nodeName === 'INPUT' ? '[type=radio]' : '[role=radio]'\n  const radios =\n    radioGroupRef.value.querySelectorAll<HTMLInputElement>(className)\n  const length = radios.length\n  const index = Array.from(radios).indexOf(target)\n  const roleRadios =\n    radioGroupRef.value.querySelectorAll<HTMLInputElement>('[role=radio]')\n\n  let nextIndex: number | null = null\n  switch (e.code) {\n    case EVENT_CODE.left:\n    case EVENT_CODE.up:\n      e.stopPropagation()\n      e.preventDefault()\n      nextIndex = index === 0 ? length - 1 : index - 1\n      break\n    case EVENT_CODE.right:\n    case EVENT_CODE.down:\n      e.stopPropagation()\n      e.preventDefault()\n      nextIndex = index === length - 1 ? 0 : index + 1\n      break\n    default:\n      break\n  }\n  if (nextIndex === null) return\n  roleRadios[nextIndex].click()\n  roleRadios[nextIndex].focus()\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\nprovide(\n  radioGroupKey,\n  reactive({\n    ...toRefs(props),\n    changeEvent\n  })\n)\n</script>\n"],"names":["__MACROS_defineComponent"],"mappings":"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"}