fluent-vuelidate
Version:
A fluent, typescript-first validation library for Vue3
38 lines (37 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useFieldStateController = void 0;
const vue_1 = require("vue");
const setAllFieldsToUntouchedState = (instance, fieldStates) => {
Object.keys(instance).forEach((field) => {
fieldStates[field] = {
isUntouched: true,
isValid: false,
errors: [],
notValid: false,
};
});
};
const areAllFieldsValid = (fieldStates) => {
return Object.values(fieldStates).every((field) => field.isValid === true);
};
const hasUntouchedFields = (fieldStates) => {
return Object.values(fieldStates).some((field) => field.isUntouched === true);
};
const set = (field, validity, fieldStates) => {
fieldStates[field] = validity;
};
const useFieldStateController = (instance) => {
const reffieldStates = (0, vue_1.ref)({});
const fieldStates = reffieldStates.value;
setAllFieldsToUntouchedState(instance, fieldStates);
const controller = {};
controller.areAllFieldsValid = () => areAllFieldsValid(fieldStates);
controller.hasUntouchedFields = () => hasUntouchedFields(fieldStates);
controller.set = (field, validity) => set(field, validity, fieldStates);
return {
fieldStateController: (0, vue_1.ref)(controller).value,
fieldStates,
};
};
exports.useFieldStateController = useFieldStateController;