@cosva-lab/form-builder
Version:
React form builder.
118 lines (116 loc) • 3.87 kB
JavaScript
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
const require_enums = require('../../enums.cjs');
const require_decorate = require('../../_virtual/_@oxc-project_runtime@0.112.0/helpers/decorate.cjs');
const require_utils_builders_BaseField = require('../builders/BaseField.cjs');
let mobx = require("mobx");
//#region src/utils/validate/InputValidator.ts
var InputValidator = class InputValidator extends require_utils_builders_BaseField.BaseField {
static getValidation(obj) {
return typeof obj._validate === "function" ? obj._validate(obj) : obj._validate;
}
get validate() {
return !!InputValidator.getValidation(this);
}
set validate(validate) {
this._validate = validate;
if (validate) this.validity();
else this.errors = void 0;
}
get untouched() {
return !this.touched;
}
constructor(props) {
super(props);
this._validate = false;
this.markAsTouched = () => {
this.touched = true;
};
this.markAsUntouched = () => {
this.touched = false;
};
this.setError = (error) => {
this.addError(error);
};
this.setErrors = (errors) => {
this.addErrors(errors);
};
(0, mobx.makeObservable)(this);
const { validate, validations, value } = props;
if (typeof validate !== "undefined") this._validate = validate;
this.validations = validations;
this.originalProps = {
value,
validate
};
}
async validityBase() {
const errors = await this.getErrors();
(0, mobx.runInAction)(() => {
if (errors && errors.length) {
this.errors = errors;
this.status = require_enums.StatusField.INVALID;
} else {
this.errors = [];
this.status = require_enums.StatusField.VALID;
}
});
return this.valid;
}
/**
* @description Returns true if the field is valid
* @return {Promise<boolean>}
*/
async validity() {
this._validate = true;
return this.validityBase();
}
_calculateStatus() {
var _this$errors;
if ((_this$errors = this.errors) === null || _this$errors === void 0 ? void 0 : _this$errors.length) return require_enums.StatusField.INVALID;
return require_enums.StatusField.VALID;
}
async updateValueAndValidity() {
this._setInitialStatus();
if (this.enabled) {
await this.validity();
(0, mobx.runInAction)(() => {
this.status = this._calculateStatus();
});
}
}
reset() {
this.markAsPristine();
this.markAsUntouched();
this._setInitialStatus();
const { originalProps } = this;
this.errors = void 0;
if (originalProps) {
const { validate, value } = originalProps;
this._validate = validate;
this.value = value;
}
}
addError(error) {
if (error) {
if (this.status !== require_enums.StatusField.INVALID) this.status = require_enums.StatusField.INVALID;
if (!this.errors) this.errors = [];
this.errors.unshift(error);
}
}
addErrors(errors) {
this.status = require_enums.StatusField.INVALID;
const oldErrors = this.errors || [];
if (Array.isArray(oldErrors)) this.errors = [...errors || [], ...oldErrors];
}
};
require_decorate.__decorate([mobx.observable], InputValidator.prototype, "validations", void 0);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "validityBase", null);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "validity", null);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "updateValueAndValidity", null);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "reset", null);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "addError", null);
require_decorate.__decorate([mobx.action.bound], InputValidator.prototype, "addErrors", null);
//#endregion
exports.InputValidator = InputValidator;
exports.default = InputValidator;