UNPKG

element-plus

Version:

A Component Library for Vue 3

55 lines (53 loc) 1.75 kB
import { UPDATE_MODEL_EVENT } from "../../../constants/event.mjs"; import { isPropAbsent } from "../../../utils/types.mjs"; import { useDeprecated } from "../../../hooks/use-deprecated/index.mjs"; import { useFormDisabled, useFormSize } from "../../form/src/hooks/use-form-common-props.mjs"; import { radioGroupKey } from "./constants.mjs"; import { computed, inject, ref } from "vue"; //#region ../../packages/components/radio/src/use-radio.ts const useRadio = (props, emit) => { const radioRef = ref(); const radioGroup = inject(radioGroupKey, void 0); const isGroup = computed(() => !!radioGroup); const actualValue = computed(() => { if (!isPropAbsent(props.value)) return props.value; return props.label; }); const modelValue = computed({ get() { return isGroup.value ? radioGroup.modelValue : props.modelValue; }, set(val) { if (isGroup.value) radioGroup.changeEvent(val); else emit && emit(UPDATE_MODEL_EVENT, val); radioRef.value.checked = props.modelValue === actualValue.value; } }); const size = useFormSize(computed(() => radioGroup?.size)); const disabled = useFormDisabled(computed(() => radioGroup?.disabled)); const focus = ref(false); const tabIndex = computed(() => { return disabled.value || isGroup.value && modelValue.value !== actualValue.value ? -1 : 0; }); useDeprecated({ from: "label act as value", replacement: "value", version: "3.0.0", scope: "el-radio", ref: "https://element-plus.org/en-US/component/radio.html" }, computed(() => isGroup.value && isPropAbsent(props.value))); return { radioRef, isGroup, radioGroup, focus, size, disabled, tabIndex, modelValue, actualValue }; }; //#endregion export { useRadio }; //# sourceMappingURL=use-radio.mjs.map