UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.07 kB
{"version":3,"file":"use-radio.mjs","sources":["../../../../../../packages/components/radio/src/use-radio.ts"],"sourcesContent":["import { computed, inject, ref } from 'vue'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useFormDisabled, useFormSize } from '@element-plus/components/form'\nimport { useDeprecated } from '@element-plus/hooks'\nimport { isPropAbsent } from '@element-plus/utils'\nimport { radioGroupKey } from './constants'\n\nimport type { RadioButtonProps } from './radio-button'\nimport type { SetupContext } from 'vue'\nimport type { RadioEmits, RadioProps } from './radio'\n\nexport const useRadio = (\n props: RadioProps | RadioButtonProps,\n emit?: SetupContext<RadioEmits>['emit']\n) => {\n const radioRef = ref<HTMLInputElement>()\n const radioGroup = inject(radioGroupKey, undefined)\n const isGroup = computed(() => !!radioGroup)\n const actualValue = computed(() => {\n // In version 2.x, if there's no props.value, props.label will act as props.value\n // In version 3.x, remove this computed value, use props.value instead.\n if (!isPropAbsent(props.value)) {\n return props.value\n }\n return props.label\n })\n const modelValue = computed<RadioProps['modelValue']>({\n get() {\n return isGroup.value ? radioGroup!.modelValue : props.modelValue!\n },\n set(val) {\n if (isGroup.value) {\n radioGroup!.changeEvent(val)\n } else {\n emit && emit(UPDATE_MODEL_EVENT, val)\n }\n radioRef.value!.checked = props.modelValue === actualValue.value\n },\n })\n\n const size = useFormSize(computed(() => radioGroup?.size))\n const disabled = useFormDisabled(computed(() => radioGroup?.disabled))\n const focus = ref(false)\n const tabIndex = computed(() => {\n return disabled.value ||\n (isGroup.value && modelValue.value !== actualValue.value)\n ? -1\n : 0\n })\n\n useDeprecated(\n {\n from: 'label act as value',\n replacement: 'value',\n version: '3.0.0',\n scope: 'el-radio',\n ref: 'https://element-plus.org/en-US/component/radio.html',\n },\n computed(() => isGroup.value && isPropAbsent(props.value))\n )\n\n return {\n radioRef,\n isGroup,\n radioGroup,\n focus,\n size,\n disabled,\n tabIndex,\n modelValue,\n actualValue,\n }\n}\n"],"names":[],"mappings":";;;;;;;AAWa,MAAA,QAAA,GAAW,CACtB,KAAA,EACA,IACG,KAAA;AACH,EAAA,MAAM,WAAW,GAAsB,EAAA,CAAA;AACvC,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,aAAA,EAAe,KAAS,CAAA,CAAA,CAAA;AAClD,EAAA,MAAM,OAAU,GAAA,QAAA,CAAS,MAAM,CAAC,CAAC,UAAU,CAAA,CAAA;AAC3C,EAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AAGjC,IAAA,IAAI,CAAC,YAAA,CAAa,KAAM,CAAA,KAAK,CAAG,EAAA;AAC9B,MAAA,OAAO,KAAM,CAAA,KAAA,CAAA;AAAA,KACf;AACA,IAAA,OAAO,KAAM,CAAA,KAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAA,MAAM,aAAa,QAAmC,CAAA;AAAA,IACpD,GAAM,GAAA;AACJ,MAAA,OAAO,OAAQ,CAAA,KAAA,GAAQ,UAAY,CAAA,UAAA,GAAa,KAAM,CAAA,UAAA,CAAA;AAAA,KACxD;AAAA,IACA,IAAI,GAAK,EAAA;AACP,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAA,UAAA,CAAY,YAAY,GAAG,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAQ,IAAA,IAAA,IAAA,CAAK,oBAAoB,GAAG,CAAA,CAAA;AAAA,OACtC;AACA,MAAA,QAAA,CAAS,KAAO,CAAA,OAAA,GAAU,KAAM,CAAA,UAAA,KAAe,WAAY,CAAA,KAAA,CAAA;AAAA,KAC7D;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,OAAO,WAAY,CAAA,QAAA,CAAS,MAAM,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,IAAI,CAAC,CAAA,CAAA;AACzD,EAAA,MAAM,WAAW,eAAgB,CAAA,QAAA,CAAS,MAAM,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,QAAQ,CAAC,CAAA,CAAA;AACrE,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAK,CAAA,CAAA;AACvB,EAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,IAAO,OAAA,QAAA,CAAS,SACb,OAAQ,CAAA,KAAA,IAAS,WAAW,KAAU,KAAA,WAAA,CAAY,QACjD,CACA,CAAA,GAAA,CAAA,CAAA;AAAA,GACL,CAAA,CAAA;AAED,EAAA,aAAA;AAAA,IACE;AAAA,MACE,IAAM,EAAA,oBAAA;AAAA,MACN,WAAa,EAAA,OAAA;AAAA,MACb,OAAS,EAAA,OAAA;AAAA,MACT,KAAO,EAAA,UAAA;AAAA,MACP,GAAK,EAAA,qDAAA;AAAA,KACP;AAAA,IACA,SAAS,MAAM,OAAA,CAAQ,SAAS,YAAa,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,GAC3D,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}