前端初始化
This commit is contained in:
+54
@@ -0,0 +1,54 @@
|
||||
import "../../../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:modelValue", 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
|
||||
Reference in New Issue
Block a user