{"version":3,"file":"radio.vue2.cjs","sources":["../../../components/radio/radio.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CollapseTransition } from '@/components/collapse-transition'\nimport { Icon } from '@/components/icon'\n\nimport { computed, inject, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport {\n  createSizeProp,\n  createStateProp,\n  emitEvent,\n  useIcons,\n  useNameHelper,\n  useProps,\n} from '@vexip-ui/config'\nimport { radioProps } from './props'\nimport { GROUP_STATE, radioShapes } from './symbol'\n\nimport type { ChangeEvent } from './symbol'\n\ndefineOptions({ name: 'Radio' })\n\nconst _props = defineProps(radioProps)\nconst props = useProps('radio', _props, {\n  size: createSizeProp(),\n  state: createStateProp(),\n  value: {\n    default: null,\n    static: true,\n  },\n  label: {\n    default: null,\n    static: true,\n    required: true,\n  },\n  labelClass: null,\n  disabled: false,\n  tabIndex: 0,\n  loading: false,\n  loadingLock: false,\n  name: {\n    default: '',\n    static: true,\n  },\n  shape: {\n    default: 'default',\n    validator: value => radioShapes.includes(value),\n  },\n})\n\nconst emit = defineEmits(['update:value'])\n\ndefineSlots<{ default: () => any, extra: () => any }>()\n\nconst groupState = inject(GROUP_STATE, null)\n\nconst nh = useNameHelper('radio')\nconst icons = useIcons()\nconst currentValue = ref(props.value)\n\nconst input = ref<HTMLInputElement>()\n\nconst size = computed(() => groupState?.size || props.size)\nconst state = computed(() => groupState?.state || props.state)\nconst isDisabled = computed(() => groupState?.disabled || props.disabled)\nconst isLoading = computed(() => groupState?.loading || props.loading)\nconst loadingIcon = computed(() => groupState?.loadingIcon)\nconst isLoadingLock = computed(() => groupState?.loadingLock || false)\nconst loadingEffect = computed(() => groupState?.loadingEffect || '')\nconst shape = computed(() => groupState?.shape || props.shape)\nconst readonly = computed(() => isLoading.value && isLoadingLock.value)\nconst className = computed(() => {\n  return [\n    nh.b(),\n    nh.bs('vars'),\n    {\n      [nh.bm('inherit')]: props.inherit,\n      [nh.bm('checked')]: currentValue.value === props.label,\n      [nh.bm('disabled')]: isDisabled.value,\n      [nh.bm('readonly')]: readonly.value,\n      [nh.bm('loading')]: isLoading.value,\n      [nh.bm(size.value)]: size.value !== 'default',\n      [nh.bm(state.value)]: state.value !== 'default',\n      [nh.bm(shape.value)]: shape.value !== 'default' && shape.value !== 'button-group',\n    },\n  ]\n})\nconst isButton = computed(() => shape.value === 'button' || shape.value === 'button-group')\n\nwatch(\n  () => props.value,\n  value => {\n    currentValue.value = value\n  },\n)\n\nif (groupState) {\n  currentValue.value = groupState.currentValue\n\n  watch(() => groupState.currentValue, emitChange)\n\n  onMounted(() => {\n    groupState.registerInput(input)\n  })\n\n  onBeforeUnmount(() => {\n    groupState.unregisterInput(input)\n  })\n}\n\ndefineExpose({ currentValue, input })\n\nfunction emitChange(value: string | number | boolean) {\n  if (currentValue.value === value) return\n\n  currentValue.value = value\n\n  emit('update:value', value)\n  emitEvent(props.onChange as ChangeEvent, value)\n}\n\nfunction handleChange() {\n  if (isDisabled.value || readonly.value) {\n    return\n  }\n\n  emitChange(props.label)\n\n  if (groupState && currentValue.value === props.label) {\n    groupState.updateValue(currentValue.value)\n  }\n}\n</script>\n\n<template>\n  <label :class=\"className\">\n    <input\n      ref=\"input\"\n      type=\"radio\"\n      :class=\"nh.be('input')\"\n      :checked=\"currentValue === props.label\"\n      :disabled=\"isDisabled || readonly\"\n      :tabindex=\"props.tabIndex\"\n      :name=\"props.name\"\n      @submit.prevent\n      @change=\"handleChange\"\n      @click.stop\n    />\n    <span :class=\"[nh.be('signal'), isLoading && nh.bem('signal', 'active')]\"></span>\n    <span :class=\"[nh.be('label'), props.labelClass]\">\n      <CollapseTransition\n        v-if=\"isButton\"\n        appear\n        horizontal\n        fade-effect\n      >\n        <div v-if=\"isLoading\" :class=\"nh.be('loading')\">\n          <Icon\n            v-bind=\"icons.loading\"\n            :effect=\"loadingEffect || icons.loading.effect\"\n            :icon=\"loadingIcon || icons.loading.icon\"\n            label=\"loading\"\n          ></Icon>\n        </div>\n      </CollapseTransition>\n      <slot>{{ props.label }}</slot>\n      <span :class=\"nh.be('extra')\" @click.capture.prevent>\n        <slot name=\"extra\"></slot>\n      </span>\n    </span>\n  </label>\n</template>\n"],"names":["_props","__props","props","useProps","createSizeProp","createStateProp","value","radioShapes","emit","__emit","groupState","inject","GROUP_STATE","nh","useNameHelper","icons","useIcons","currentValue","ref","input","size","computed","state","isDisabled","isLoading","loadingIcon","isLoadingLock","loadingEffect","shape","readonly","className","isButton","watch","emitChange","onMounted","onBeforeUnmount","__expose","emitEvent","handleChange","_createElementBlock","_createElementVNode","_normalizeClass","_unref","_createBlock","CollapseTransition","_createVNode","Icon","_mergeProps","_renderSlot","_ctx","_createTextVNode","_toDisplayString"],"mappings":"obAqBA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,QAASH,EAAQ,CACtC,KAAMI,EAAAA,eAAe,EACrB,MAAOC,EAAAA,gBAAgB,EACvB,MAAO,CACL,QAAS,KACT,OAAQ,EACV,EACA,MAAO,CACL,QAAS,KACT,OAAQ,GACR,SAAU,EACZ,EACA,WAAY,KACZ,SAAU,GACV,SAAU,EACV,QAAS,GACT,YAAa,GACb,KAAM,CACJ,QAAS,GACT,OAAQ,EACV,EACA,MAAO,CACL,QAAS,UACT,UAAWC,GAASC,EAAY,YAAA,SAASD,CAAK,CAAA,CAChD,CACD,EAEKE,EAAOC,EAIPC,EAAaC,EAAAA,OAAOC,EAAA,YAAa,IAAI,EAErCC,EAAKC,gBAAc,OAAO,EAC1BC,EAAQC,EAAAA,SAAS,EACjBC,EAAeC,EAAAA,IAAIhB,EAAM,KAAK,EAE9BiB,EAAQD,EAAAA,IAAsB,EAE9BE,EAAOC,EAAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,OAAQR,EAAM,IAAI,EACpDoB,EAAQD,EAAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,QAASR,EAAM,KAAK,EACvDqB,EAAaF,EAAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,WAAYR,EAAM,QAAQ,EAClEsB,EAAYH,EAAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,UAAWR,EAAM,OAAO,EAC/DuB,EAAcJ,EAAAA,SAAS,IAAMX,GAAA,YAAAA,EAAY,WAAW,EACpDgB,EAAgBL,EAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,cAAe,EAAK,EAC/DiB,EAAgBN,EAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,gBAAiB,EAAE,EAC9DkB,EAAQP,EAAAA,SAAS,KAAMX,GAAA,YAAAA,EAAY,QAASR,EAAM,KAAK,EACvD2B,EAAWR,EAAAA,SAAS,IAAMG,EAAU,OAASE,EAAc,KAAK,EAChEI,EAAYT,EAAAA,SAAS,IAClB,CACLR,EAAG,EAAE,EACLA,EAAG,GAAG,MAAM,EACZ,CACE,CAACA,EAAG,GAAG,SAAS,CAAC,EAAGX,EAAM,QAC1B,CAACW,EAAG,GAAG,SAAS,CAAC,EAAGI,EAAa,QAAUf,EAAM,MACjD,CAACW,EAAG,GAAG,UAAU,CAAC,EAAGU,EAAW,MAChC,CAACV,EAAG,GAAG,UAAU,CAAC,EAAGgB,EAAS,MAC9B,CAAChB,EAAG,GAAG,SAAS,CAAC,EAAGW,EAAU,MAC9B,CAACX,EAAG,GAAGO,EAAK,KAAK,CAAC,EAAGA,EAAK,QAAU,UACpC,CAACP,EAAG,GAAGS,EAAM,KAAK,CAAC,EAAGA,EAAM,QAAU,UACtC,CAACT,EAAG,GAAGe,EAAM,KAAK,CAAC,EAAGA,EAAM,QAAU,WAAaA,EAAM,QAAU,cAAA,CAEvE,CACD,EACKG,EAAWV,WAAS,IAAMO,EAAM,QAAU,UAAYA,EAAM,QAAU,cAAc,EAE1FI,EAAA,MACE,IAAM9B,EAAM,MACHI,GAAA,CACPW,EAAa,MAAQX,CAAA,CAEzB,EAEII,IACFO,EAAa,MAAQP,EAAW,aAE1BsB,EAAAA,MAAA,IAAMtB,EAAW,aAAcuB,CAAU,EAE/CC,EAAAA,UAAU,IAAM,CACdxB,EAAW,cAAcS,CAAK,CAAA,CAC/B,EAEDgB,EAAAA,gBAAgB,IAAM,CACpBzB,EAAW,gBAAgBS,CAAK,CAAA,CACjC,GAGUiB,EAAA,CAAE,aAAAnB,EAAc,MAAAE,EAAO,EAEpC,SAASc,EAAW3B,EAAkC,CAChDW,EAAa,QAAUX,IAE3BW,EAAa,MAAQX,EAErBE,EAAK,eAAgBF,CAAK,EAChB+B,YAAAnC,EAAM,SAAyBI,CAAK,EAAA,CAGhD,SAASgC,GAAe,CAClBf,EAAW,OAASM,EAAS,QAIjCI,EAAW/B,EAAM,KAAK,EAElBQ,GAAcO,EAAa,QAAUf,EAAM,OAClCQ,EAAA,YAAYO,EAAa,KAAK,EAC3C,6BAKAsB,EAAA,mBAmCQ,QAAA,CAnCA,uBAAOT,EAAS,KAAA,CAAA,GACtBU,EAAAA,mBAWE,QAAA,SAVI,QAAJ,IAAIrB,EACJ,KAAK,QACJ,MAAKsB,EAAE,eAAAC,EAAA,MAAE7B,CAAA,EAAC,GAAE,OAAA,CAAA,EACZ,QAASI,EAAA,QAAiByB,EAAAA,MAAAxC,CAAA,EAAM,MAChC,SAAUqB,EAAU,OAAIM,EAAQ,MAChC,SAAUa,EAAAA,MAAKxC,CAAA,EAAC,SAChB,KAAMwC,EAAAA,MAAKxC,CAAA,EAAC,KACZ,qCAAD,IAAe,CAAA,EAAA,CAAA,SAAA,CAAA,GACd,SAAQoC,EACR,oCAAD,IAAW,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,aAEbE,EAAAA,mBAAiF,OAAA,CAA1E,MAAKC,EAAA,eAAA,CAAGC,EAAAA,SAAG,aAAclB,EAAS,OAAIkB,QAAE7B,CAAA,EAAC,IAAG,SAAA,QAAA,CAAA,CAAA,CAAA,UACnD2B,EAAAA,mBAoBO,OAAA,CApBA,wBAAQE,EAAA,MAAE7B,CAAA,EAAC,GAAa,OAAA,EAAA6B,EAAAA,MAAAxC,CAAA,EAAM,UAAU,CAAA,CAAA,GAErC6B,EAAQ,qBADhBY,EAAAA,YAcqBD,EAAAA,MAAAE,CAAA,EAAA,OAZnB,OAAA,GACA,WAAA,GACA,cAAA,EAAA,qBAEA,IAOM,CAPKpB,EAAS,qBAApBe,EAAAA,mBAOM,MAAA,OAPiB,MAAKE,EAAE,eAAAC,EAAA,MAAE7B,CAAA,EAAC,GAAE,SAAA,CAAA,CAAA,GACjCgC,EAAA,YAKQH,QALRI,CAAA,EAAAC,aACUL,QAIF3B,CAAA,EAJQ,QAAO,CACpB,OAAQY,EAAa,OAAIe,WAAM,QAAQ,OACvC,KAAMjB,EAAW,OAAIiB,WAAM,QAAQ,KACpC,MAAM,6GAIZM,EAAAA,WAA8BC,sBAA9B,IAA8B,CAArBC,kBAAAC,EAAA,gBAAAT,EAAA,MAAAxC,CAAA,EAAM,KAAK,EAAA,CAAA,CAAA,GACpBsC,EAAAA,mBAEO,OAAA,CAFA,MAAKC,EAAE,eAAAC,EAAA,MAAE7B,CAAA,EAAC,GAAE,OAAA,CAAA,6CAAW,IAAsB,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,GAClDmC,aAA0BC,EAAA,OAAA,OAAA,CAAA"}