You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
6.3 KiB

{"ast":null,"code":"import { ref, inject, computed } from 'vue';\nimport '../../../constants/index.mjs';\nimport '../../form/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { radioGroupKey } from './constants.mjs';\nimport { isPropAbsent } from '../../../utils/types.mjs';\nimport { UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\nimport { useFormSize, useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';\nimport { useDeprecated } from '../../../hooks/use-deprecated/index.mjs';\nconst useRadio = (props, emit) => {\n const radioRef = ref();\n const radioGroup = inject(radioGroupKey, void 0);\n const isGroup = computed(() => !!radioGroup);\n const actualValue = computed(() => {\n if (!isPropAbsent(props.value)) {\n return props.value;\n }\n return props.label;\n });\n const modelValue = computed({\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 const size = useFormSize(computed(() => radioGroup == null ? void 0 : radioGroup.size));\n const disabled = useFormDisabled(computed(() => radioGroup == null ? void 0 : radioGroup.disabled));\n const focus = ref(false);\n const tabIndex = computed(() => {\n return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0;\n });\n useDeprecated({\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 }, computed(() => isGroup.value && isPropAbsent(props.value)));\n return {\n radioRef,\n isGroup,\n radioGroup,\n focus,\n size,\n disabled,\n tabIndex,\n modelValue,\n actualValue\n };\n};\nexport { useRadio };","map":{"version":3,"names":["useRadio","props","emit","radioRef","ref","radioGroup","inject","radioGroupKey","isGroup","computed","actualValue","isPropAbsent","value","label","modelValue","get","set","val","changeEvent","UPDATE_MODEL_EVENT","checked","size","useFormSize","disabled","useFormDisabled","focus","tabIndex","useDeprecated","from","replacement","version","scope"],"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'\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"],"mappings":";;;;;;;;;;AAMY,MAACA,QAAQ,GAAGA,CAACC,KAAK,EAAEC,IAAI,KAAK;EACvC,MAAMC,QAAQ,GAAGC,GAAG,EAAE;EACtB,MAAMC,UAAU,GAAGC,MAAM,CAACC,aAAa,EAAE,KAAK,CAAC,CAAC;EAChD,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAM,CAAC,CAACJ,UAAU,CAAC;EAC5C,MAAMK,WAAW,GAAGD,QAAQ,CAAC,MAAM;IACjC,IAAI,CAACE,YAAY,CAACV,KAAK,CAACW,KAAK,CAAC,EAAE;MAC9B,OAAOX,KAAK,CAACW,KAAK;IACxB;IACI,OAAOX,KAAK,CAACY,KAAK;EACtB,CAAG,CAAC;EACF,MAAMC,UAAU,GAAGL,QAAQ,CAAC;IAC1BM,GAAGA,CAAA,EAAG;MACJ,OAAOP,OAAO,CAACI,KAAK,GAAGP,UAAU,CAACS,UAAU,GAAGb,KAAK,CAACa,UAAU;IACrE,CAAK;IACDE,GAAGA,CAACC,GAAG,EAAE;MACP,IAAIT,OAAO,CAACI,KAAK,EAAE;QACjBP,UAAU,CAACa,WAAW,CAACD,GAAG,CAAC;MACnC,CAAO,MAAM;QACLf,IAAI,IAAIA,IAAI,CAACiB,kBAAkB,EAAEF,GAAG,CAAC;MAC7C;MACMd,QAAQ,CAACS,KAAK,CAACQ,OAAO,GAAGnB,KAAK,CAACa,UAAU,KAAKJ,WAAW,CAACE,KAAK;IACrE;EACA,CAAG,CAAC;EACF,MAAMS,IAAI,GAAGC,WAAW,CAACb,QAAQ,CAAC,MAAMJ,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAGA,UAAU,CAACgB,IAAI,CAAC,CAAC;EACvF,MAAME,QAAQ,GAAGC,eAAe,CAACf,QAAQ,CAAC,MAAMJ,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAGA,UAAU,CAACkB,QAAQ,CAAC,CAAC;EACnG,MAAME,KAAK,GAAGrB,GAAG,CAAC,KAAK,CAAC;EACxB,MAAMsB,QAAQ,GAAGjB,QAAQ,CAAC,MAAM;IAC9B,OAAOc,QAAQ,CAACX,KAAK,IAAIJ,OAAO,CAACI,KAAK,IAAIE,UAAU,CAACF,KAAK,KAAKF,WAAW,CAACE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;EAC7F,CAAG,CAAC;EACFe,aAAa,CAAC;IACZC,IAAI,EAAE,oBAAoB;IAC1BC,WAAW,EAAE,OAAO;IACpBC,OAAO,EAAE,OAAO;IAChBC,KAAK,EAAE,UAAU;IACjB3B,GAAG,EAAE;EACT,CAAG,EAAEK,QAAQ,CAAC,MAAMD,OAAO,CAACI,KAAK,IAAID,YAAY,CAACV,KAAK,CAACW,KAAK,CAAC,CAAC,CAAC;EAC9D,OAAO;IACLT,QAAQ;IACRK,OAAO;IACPH,UAAU;IACVoB,KAAK;IACLJ,IAAI;IACJE,QAAQ;IACRG,QAAQ;IACRZ,UAAU;IACVJ;EACJ,CAAG;AACH","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}