{"version":3,"file":"radio-group.vue2.mjs","sources":["../../../components/radio/radio-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Radio } from '@/components/radio'\r\nimport { useFieldStore } from '@/components/form'\r\n\r\nimport { computed, provide, reactive, ref, toRef, watch } from 'vue'\r\n\r\nimport {\r\n  createIconProp,\r\n  createSizeProp,\r\n  createStateProp,\r\n  emitEvent,\r\n  useNameHelper,\r\n  useProps,\r\n} from '@vexip-ui/config'\r\nimport { debounceMinor, isClient, isObject } from '@vexip-ui/utils'\r\nimport { radioGroupProps } from './props'\r\nimport { GROUP_STATE, radioGroupShapes } from './symbol'\r\n\r\nimport type { Ref } from 'vue'\r\nimport type { ChangeEvent } from './symbol'\r\n\r\ndefineOptions({ name: 'RadioGroup' })\r\n\r\nconst {\r\n  idFor,\r\n  labelId,\r\n  state,\r\n  disabled,\r\n  loading,\r\n  size,\r\n  validateField,\r\n  getFieldValue,\r\n  setFieldValue,\r\n} = useFieldStore<string | number | boolean>(focus)\r\n\r\nconst _props = defineProps(radioGroupProps)\r\nconst props = useProps('radioGroup', _props, {\r\n  size: createSizeProp(size),\r\n  state: createStateProp(state),\r\n  value: {\r\n    default: () => getFieldValue(),\r\n    static: true,\r\n  },\r\n  vertical: false,\r\n  disabled: () => disabled.value,\r\n  options: {\r\n    default: () => [],\r\n    static: true,\r\n  },\r\n  loading: () => loading.value,\r\n  loadingIcon: createIconProp(),\r\n  loadingLock: false,\r\n  loadingEffect: null,\r\n  shape: {\r\n    default: 'default',\r\n    validator: value => radioGroupShapes.includes(value),\r\n  },\r\n})\r\n\r\nconst emit = defineEmits(['update:value'])\r\n\r\nconst nh = useNameHelper('radio-group')\r\nconst currentValue = ref(props.value)\r\nconst inputSet = new Set<Ref<HTMLElement | null | undefined>>()\r\n\r\nconst readonly = computed(() => props.loading && props.loadingLock)\r\nconst className = computed(() => {\r\n  return [\r\n    nh.b(),\r\n    nh.ns('radio-vars'),\r\n    {\r\n      [nh.bm('inherit')]: props.inherit,\r\n      [nh.bm('vertical')]: props.vertical,\r\n      [nh.bm('disabled')]: props.disabled,\r\n      [nh.bm('readonly')]: readonly.value,\r\n      [nh.bm('loading')]: props.loading,\r\n      [nh.bm(props.size)]: props.size !== 'default',\r\n      [nh.bm(props.state)]: props.state !== 'default',\r\n      [nh.bm(props.shape)]: props.shape !== 'default',\r\n    },\r\n  ]\r\n})\r\n\r\nconst groupState = reactive({\r\n  currentValue,\r\n  size: toRef(props, 'size'),\r\n  state: toRef(props, 'state'),\r\n  disabled: toRef(props, 'disabled'),\r\n  loading: toRef(props, 'loading'),\r\n  loadingIcon: toRef(props, 'loadingIcon'),\r\n  loadingLock: toRef(props, 'loadingLock'),\r\n  loadingEffect: toRef(props, 'loadingEffect'),\r\n  shape: toRef(props, 'shape'),\r\n  updateValue: debounceMinor(updateValue),\r\n  registerInput,\r\n  unregisterInput,\r\n})\r\n\r\n// 此处直接定义 reactive 会出现类型推断错误，存疑？\r\nprovide(GROUP_STATE, groupState)\r\n\r\nwatch(\r\n  () => props.value,\r\n  value => {\r\n    currentValue.value = value\r\n  },\r\n)\r\n\r\ndefineExpose({\r\n  idFor,\r\n  focus,\r\n  blur: () => {\r\n    for (const input of inputSet) {\r\n      input.value?.blur()\r\n    }\r\n  },\r\n})\r\n\r\nfunction updateValue(value: string | number | boolean) {\r\n  if (currentValue.value !== value) {\r\n    currentValue.value = value\r\n\r\n    emit('update:value', value)\r\n    setFieldValue(value)\r\n    emitEvent(props.onChange as ChangeEvent, value)\r\n    validateField()\r\n  }\r\n}\r\n\r\nfunction registerInput(input: Ref<HTMLElement | null | undefined>) {\r\n  inputSet.add(input)\r\n}\r\n\r\nfunction unregisterInput(input: Ref<HTMLElement | null | undefined>) {\r\n  inputSet.delete(input)\r\n}\r\n\r\nfunction focus(options?: FocusOptions) {\r\n  const input = Array.from(inputSet)[0]?.value\r\n\r\n  if (isClient && input && document.activeElement !== input) {\r\n    input.focus(options)\r\n  }\r\n}\r\n</script>\r\n\r\n<template>\r\n  <div\r\n    :id=\"idFor\"\r\n    :class=\"className\"\r\n    role=\"radiogroup\"\r\n    :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\r\n    :aria-labelledby=\"labelId\"\r\n  >\r\n    <slot>\r\n      <template v-for=\"item in props.options\" :key=\"item\">\r\n        <Radio\r\n          v-if=\"isObject(item)\"\r\n          inherit\r\n          :label=\"item.label\"\r\n          :disabled=\"item.disabled\"\r\n        >\r\n          {{ item.content || item.label }}\r\n        </Radio>\r\n        <Radio v-else inherit :label=\"item\">\r\n          {{ item }}\r\n        </Radio>\r\n      </template>\r\n    </slot>\r\n  </div>\r\n</template>\r\n"],"names":["idFor","labelId","state","disabled","loading","size","validateField","getFieldValue","setFieldValue","useFieldStore","focus","props","useProps","__props","createSizeProp","createStateProp","createIconProp","value","radioGroupShapes","emit","__emit","nh","useNameHelper","currentValue","ref","inputSet","readonly","computed","className","groupState","reactive","toRef","debounceMinor","updateValue","registerInput","unregisterInput","provide","GROUP_STATE","watch","__expose","input","_a","emitEvent","options","isClient","_createElementBlock","_unref","vertical","_renderSlot","_ctx","_openBlock","_Fragment","_renderList","item","isObject","_createBlock","Radio","_createTextVNode","_toDisplayString"],"mappings":"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"}