@opensig/opendesign
Version:
46 lines (45 loc) • 1.49 kB
JavaScript
import { inject, computed, ref, onMounted } from "vue";
import "../form/index.mjs";
import { uniqueId } from "../_utils/helper.mjs";
import { formItemInjectKey } from "../form/provide.mjs";
function useFormField(props, emit) {
const formItem = inject(formItemInjectKey, null);
const effectiveColor = computed(() => {
const result = formItem == null ? void 0 : formItem.fieldResult.value;
return result ? result.type || "normal" : props.color ?? "normal";
});
const inputId = ref(props.inputId);
onMounted(() => {
if (!inputId.value) {
inputId.value = uniqueId();
}
});
const isFocus = ref(false);
const onFocus = (e) => {
var _a, _b;
isFocus.value = true;
emit("focus", e);
(_b = formItem == null ? void 0 : (_a = formItem.fieldHandlers).onFocus) == null ? void 0 : _b.call(_a);
};
const onBlur = () => {
var _a, _b;
isFocus.value = false;
emit("blur");
(_b = formItem == null ? void 0 : (_a = formItem.fieldHandlers).onBlur) == null ? void 0 : _b.call(_a);
};
const onClear = (e) => {
e == null ? void 0 : e.stopPropagation();
emit("clear", e);
};
const onPressEnter = () => {
emit("pressEnter");
};
const notifyChange = () => {
var _a, _b;
(_b = formItem == null ? void 0 : (_a = formItem.fieldHandlers).onChange) == null ? void 0 : _b.call(_a);
};
return { effectiveColor, inputId, isFocus, onFocus, onBlur, onClear, onPressEnter, notifyChange };
}
export {
useFormField
};