mobx-react-form
Version:
Reactive MobX Form State Management
3 lines (2 loc) • 1.34 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).MobxReactFormValidatorYUP=e()}(this,function(){"use strict";class t{promises=[];config;state;extend;validator;schema;constructor({config:t,state:e=null,promises:a=[]}){this.state=e,this.promises=a,this.config=t,this.extend=t?.extend,this.validator=t.package,this.schema=t.schema(this.validator),this.extendValidator()}extendValidator(){"function"==typeof this.extend&&this.extend({validator:this.validator,form:this.state.form})}validate(t){const e=this.createValidationPromise(t);this.promises.push(e)}createValidationPromise(t){return new Promise(e=>{this.schema.validateAt(t.path,this.state.form.values(),{strict:!0}).then(()=>this.handleAsyncPasses(t,e)).catch(a=>this.handleAsyncFails(t,e,a))})}handleAsyncPasses(t,e){t.setValidationAsyncData(!0),e()}handleAsyncFails(t,e,a){if(a.path===t.path||void 0===a.path){const e=a.message?.replace(a.path??t.path,t.label);t.setValidationAsyncData(!1,e),this.executeAsyncValidation(t)}e(void 0)}executeAsyncValidation(t){!1===t.validationAsyncData.valid&&t.invalidate(t.validationAsyncData.message,!1,!0)}}return e=>({class:t,config:e})});
//# sourceMappingURL=MobxReactFormValidatorYUP.umd.min.js.map