UNPKG

@cosva-lab/form-builder

Version:
118 lines (116 loc) 3.87 kB
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;