feature-form 0.0.42 → 0.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var _=require("@blgc/utils"),S=require("feature-state"),k=require("./form-field/create-form-field.js"),C=require("./form-field/is-form-field.js"),p=require("./types/form-field.js"),E=Object.defineProperty,M=Object.getOwnPropertySymbols,I=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable,w=(s,l,i)=>l in s?E(s,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[l]=i,P=(s,l)=>{for(var i in l||(l={}))I.call(l,i)&&w(s,i,l[i]);if(M)for(var i of M(l))D.call(l,i)&&w(s,i,l[i]);return s},y=(s,l,i)=>new Promise((V,h)=>{var F=o=>{try{u(i.next(o))}catch(d){h(d)}},g=o=>{try{u(i.throw(o))}catch(d){h(d)}},u=o=>o.done?V(o.value):Promise.resolve(o.value).then(F,g);u((i=i.apply(s,l)).next())});function q(s){const{fields:l,collectErrorMode:i="firstError",disabled:V=!1,validateMode:h=_.bitwiseFlag(p.FormFieldValidateMode.OnSubmit),reValidateMode:F=_.bitwiseFlag(p.FormFieldReValidateMode.OnBlur),onValidSubmit:g,onInvalidSubmit:u,notifyOnStatusChange:o=!0}=s,d={_features:[],_config:{disabled:V},_validSubmitCallbacks:g!=null?[g]:[],_invalidSubmitCallbacks:u!=null?[u]:[],fields:Object.fromEntries(Object.entries(l).map(([t,e])=>{var r,m,v,c;return[t,C.isFormField(e)?e:k.createFormField(e.defaultValue,{key:t,validator:e.validator,collectErrorMode:(r=e.collectErrorMode)!=null?r:i,validateMode:(m=e.validateMode)!=null?m:h,reValidateMode:(v=e.reValidateMode)!=null?v:F,editable:(c=e.editable)!=null?c:!0,notifyOnStatusChange:o})]})),isValid:S.createState(!1),isValidating:S.createState(!1),isSubmitted:S.createState(!1),isSubmitting:S.createState(!1),init(){for(const t of Object.values(this.fields))t.status.listen(()=>y(this,null,function*(){yield d._revalidate(!0)}),{key:"form_revalidate"});return delete this.init,this},_revalidate(t=!1){return y(this,null,function*(){const e=Object.values(this.fields);return t||(this.isValidating.set(!0),yield Promise.all(e.map(r=>r.validate())),this.isValidating.set(!1)),this.isValid.set(e.every(r=>r.isValid())),this.isValid.get()})},submit(){return y(this,arguments,function*(t={}){const{context:e,assignToInitial:r=!1,onInvalidSubmit:m,onValidSubmit:v,postSubmitCallback:c}=t;this.isSubmitting.set(!0);const j=[];for(const a of Object.values(this.fields))a.isSubmitting.set(!0),(a.isSubmitted.get()&&a._config.reValidateMode.has(p.FormFieldReValidateMode.OnSubmit)||!a.isSubmitted.get()&&a._config.validateMode.has(p.FormFieldValidateMode.OnSubmit))&&j.push(a.validate());yield Promise.all(j),this._revalidate(!0);const f=this.getValidData(),b=[];if(f!=null){for(const a of this._validSubmitCallbacks)b.push(a(f,e));typeof v=="function"&&b.push(v(f,e))}else{const a=this.getErrors();for(const n of this._invalidSubmitCallbacks)b.push(n(a,e));typeof m=="function"&&b.push(m(a,e))}let O=null;c!=null?O=(yield Promise.all(b)).reduce((a,n)=>n!=null&&typeof n=="object"?P(P({},a),n):a,{}):yield Promise.all(b);for(const[a,n]of Object.entries(this.fields))f!=null&&Object.prototype.hasOwnProperty.call(f,a)&&r&&(n._intialValue=_.deepCopy(f[a])),n.isSubmitted.set(!0),n.isSubmitting.set(!1);return this.isSubmitted.set(!0),this.isSubmitting.set(!1),c==null||c(this,O!=null?O:{}),this.isValid.get()})},validate(){return y(this,null,function*(){return this._revalidate(!1)})},getField(t){return this.fields[t]},getValidData(){if(!this.isValid.get())return null;const t={};for(const[e,r]of Object.entries(this.fields))t[e]=r.get();return t},getErrors(){const t={};for(const[e,r]of Object.entries(this.fields))switch(r.status._v.type){case"INVALID":t[e]=r.status._v.errors;break;case"UNVALIDATED":t[e]=[{code:"unvalidated",message:`${e.toString()} was not yet validated!`,path:e}];break}return t},reset(){for(const t of Object.values(this.fields))t.reset();this.isSubmitted.set(!1),this._revalidate(!0)}};return d.init()}exports.createForm=q;
1
+ "use strict";var F=require("@blgc/utils"),g=require("feature-state"),P=require("./form-field/create-form-field.js"),k=require("./form-field/is-form-field.js"),S=require("./types/form-field.js"),C=Object.defineProperty,j=Object.getOwnPropertySymbols,E=Object.prototype.hasOwnProperty,I=Object.prototype.propertyIsEnumerable,M=(s,l,i)=>l in s?C(s,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[l]=i,w=(s,l)=>{for(var i in l||(l={}))E.call(l,i)&&M(s,i,l[i]);if(j)for(var i of j(l))I.call(l,i)&&M(s,i,l[i]);return s},p=(s,l,i)=>new Promise((y,m)=>{var V=o=>{try{u(i.next(o))}catch(e){m(e)}},v=o=>{try{u(i.throw(o))}catch(e){m(e)}},u=o=>o.done?y(o.value):Promise.resolve(o.value).then(V,v);u((i=i.apply(s,l)).next())});function q(s){const{fields:l,collectErrorMode:i="firstError",disabled:y=!1,validateMode:m=F.bitwiseFlag(S.FormFieldValidateMode.OnSubmit),reValidateMode:V=F.bitwiseFlag(S.FormFieldReValidateMode.OnBlur),onValidSubmit:v,onInvalidSubmit:u,notifyOnStatusChange:o=!0}=s;return{_features:[],_config:{disabled:y},_validSubmitCallbacks:v!=null?[v]:[],_invalidSubmitCallbacks:u!=null?[u]:[],fields:Object.fromEntries(Object.entries(l).map(([e,t])=>{var r,b,h,d;return[e,k.isFormField(t)?t:P.createFormField(t.defaultValue,{key:e,validator:t.validator,collectErrorMode:(r=t.collectErrorMode)!=null?r:i,validateMode:(b=t.validateMode)!=null?b:m,reValidateMode:(h=t.reValidateMode)!=null?h:V,editable:(d=t.editable)!=null?d:!0,notifyOnStatusChange:o})]})),isValid:g.createState(!1),isValidating:g.createState(!1),isSubmitted:g.createState(!1),isSubmitting:g.createState(!1),init(){for(const e of Object.values(this.fields))e.status.listen(()=>p(this,null,function*(){yield this._revalidate(!0)}),{key:"form_revalidate"});return delete this.init,this},_revalidate(e=!1){return p(this,null,function*(){const t=Object.values(this.fields);return e||(this.isValidating.set(!0),yield Promise.all(t.map(r=>r.validate())),this.isValidating.set(!1)),this.isValid.set(t.every(r=>r.isValid())),this.isValid.get()})},submit(){return p(this,arguments,function*(e={}){const{context:t,assignToInitial:r=!1,onInvalidSubmit:b,onValidSubmit:h,postSubmitCallback:d}=e;this.isSubmitting.set(!0);const _=[];for(const a of Object.values(this.fields))a.isSubmitting.set(!0),(a.isSubmitted.get()&&a._config.reValidateMode.has(S.FormFieldReValidateMode.OnSubmit)||!a.isSubmitted.get()&&a._config.validateMode.has(S.FormFieldValidateMode.OnSubmit))&&_.push(a.validate());yield Promise.all(_),this._revalidate(!0);const c=this.getValidData(),f=[];if(c!=null){for(const a of this._validSubmitCallbacks)f.push(a(c,t));typeof h=="function"&&f.push(h(c,t))}else{const a=this.getErrors();for(const n of this._invalidSubmitCallbacks)f.push(n(a,t));typeof b=="function"&&f.push(b(a,t))}let O=null;d!=null?O=(yield Promise.all(f)).reduce((a,n)=>n!=null&&typeof n=="object"?w(w({},a),n):a,{}):yield Promise.all(f);for(const[a,n]of Object.entries(this.fields))c!=null&&Object.prototype.hasOwnProperty.call(c,a)&&r&&(n._intialValue=F.deepCopy(c[a])),n.isSubmitted.set(!0),n.isSubmitting.set(!1);return this.isSubmitted.set(!0),this.isSubmitting.set(!1),d==null||d(this,O!=null?O:{}),this.isValid.get()})},validate(){return p(this,null,function*(){return this._revalidate(!1)})},getField(e){return this.fields[e]},getValidData(){if(!this.isValid.get())return null;const e={};for(const[t,r]of Object.entries(this.fields))e[t]=r.get();return e},getErrors(){const e={};for(const[t,r]of Object.entries(this.fields))switch(r.status._v.type){case"INVALID":e[t]=r.status._v.errors;break;case"UNVALIDATED":e[t]=[{code:"unvalidated",message:`${t.toString()} was not yet validated!`,path:t}];break}return e},reset(){for(const e of Object.values(this.fields))e.reset();this.isSubmitted.set(!1),this._revalidate(!0)}}.init()}exports.createForm=q;
@@ -1 +1 @@
1
- import{bitwiseFlag as j,deepCopy as C}from"@blgc/utils";import{createState as g}from"feature-state";import{createFormField as E}from"./form-field/create-form-field.js";import{isFormField as I}from"./form-field/is-form-field.js";import{FormFieldValidateMode as F,FormFieldReValidateMode as M}from"./types/form-field.js";var D=Object.defineProperty,w=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable,P=(r,s,i)=>s in r?D(r,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[s]=i,k=(r,s)=>{for(var i in s||(s={}))x.call(s,i)&&P(r,i,s[i]);if(w)for(var i of w(s))A.call(s,i)&&P(r,i,s[i]);return r},S=(r,s,i)=>new Promise((y,v)=>{var O=o=>{try{u(i.next(o))}catch(d){v(d)}},p=o=>{try{u(i.throw(o))}catch(d){v(d)}},u=o=>o.done?y(o.value):Promise.resolve(o.value).then(O,p);u((i=i.apply(r,s)).next())});function T(r){const{fields:s,collectErrorMode:i="firstError",disabled:y=!1,validateMode:v=j(F.OnSubmit),reValidateMode:O=j(M.OnBlur),onValidSubmit:p,onInvalidSubmit:u,notifyOnStatusChange:o=!0}=r,d={_features:[],_config:{disabled:y},_validSubmitCallbacks:p!=null?[p]:[],_invalidSubmitCallbacks:u!=null?[u]:[],fields:Object.fromEntries(Object.entries(s).map(([e,t])=>{var a,m,h,f;return[e,I(t)?t:E(t.defaultValue,{key:e,validator:t.validator,collectErrorMode:(a=t.collectErrorMode)!=null?a:i,validateMode:(m=t.validateMode)!=null?m:v,reValidateMode:(h=t.reValidateMode)!=null?h:O,editable:(f=t.editable)!=null?f:!0,notifyOnStatusChange:o})]})),isValid:g(!1),isValidating:g(!1),isSubmitted:g(!1),isSubmitting:g(!1),init(){for(const e of Object.values(this.fields))e.status.listen(()=>S(this,null,function*(){yield d._revalidate(!0)}),{key:"form_revalidate"});return delete this.init,this},_revalidate(e=!1){return S(this,null,function*(){const t=Object.values(this.fields);return e||(this.isValidating.set(!0),yield Promise.all(t.map(a=>a.validate())),this.isValidating.set(!1)),this.isValid.set(t.every(a=>a.isValid())),this.isValid.get()})},submit(){return S(this,arguments,function*(e={}){const{context:t,assignToInitial:a=!1,onInvalidSubmit:m,onValidSubmit:h,postSubmitCallback:f}=e;this.isSubmitting.set(!0);const _=[];for(const l of Object.values(this.fields))l.isSubmitting.set(!0),(l.isSubmitted.get()&&l._config.reValidateMode.has(M.OnSubmit)||!l.isSubmitted.get()&&l._config.validateMode.has(F.OnSubmit))&&_.push(l.validate());yield Promise.all(_),this._revalidate(!0);const c=this.getValidData(),b=[];if(c!=null){for(const l of this._validSubmitCallbacks)b.push(l(c,t));typeof h=="function"&&b.push(h(c,t))}else{const l=this.getErrors();for(const n of this._invalidSubmitCallbacks)b.push(n(l,t));typeof m=="function"&&b.push(m(l,t))}let V=null;f!=null?V=(yield Promise.all(b)).reduce((l,n)=>n!=null&&typeof n=="object"?k(k({},l),n):l,{}):yield Promise.all(b);for(const[l,n]of Object.entries(this.fields))c!=null&&Object.prototype.hasOwnProperty.call(c,l)&&a&&(n._intialValue=C(c[l])),n.isSubmitted.set(!0),n.isSubmitting.set(!1);return this.isSubmitted.set(!0),this.isSubmitting.set(!1),f==null||f(this,V!=null?V:{}),this.isValid.get()})},validate(){return S(this,null,function*(){return this._revalidate(!1)})},getField(e){return this.fields[e]},getValidData(){if(!this.isValid.get())return null;const e={};for(const[t,a]of Object.entries(this.fields))e[t]=a.get();return e},getErrors(){const e={};for(const[t,a]of Object.entries(this.fields))switch(a.status._v.type){case"INVALID":e[t]=a.status._v.errors;break;case"UNVALIDATED":e[t]=[{code:"unvalidated",message:`${t.toString()} was not yet validated!`,path:t}];break}return e},reset(){for(const e of Object.values(this.fields))e.reset();this.isSubmitted.set(!1),this._revalidate(!0)}};return d.init()}export{T as createForm};
1
+ import{bitwiseFlag as _,deepCopy as k}from"@blgc/utils";import{createState as p}from"feature-state";import{createFormField as C}from"./form-field/create-form-field.js";import{isFormField as E}from"./form-field/is-form-field.js";import{FormFieldValidateMode as j,FormFieldReValidateMode as M}from"./types/form-field.js";var I=Object.defineProperty,F=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable,w=(r,s,i)=>s in r?I(r,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[s]=i,P=(r,s)=>{for(var i in s||(s={}))D.call(s,i)&&w(r,i,s[i]);if(F)for(var i of F(s))x.call(s,i)&&w(r,i,s[i]);return r},g=(r,s,i)=>new Promise((y,h)=>{var S=o=>{try{u(i.next(o))}catch(t){h(t)}},v=o=>{try{u(i.throw(o))}catch(t){h(t)}},u=o=>o.done?y(o.value):Promise.resolve(o.value).then(S,v);u((i=i.apply(r,s)).next())});function A(r){const{fields:s,collectErrorMode:i="firstError",disabled:y=!1,validateMode:h=_(j.OnSubmit),reValidateMode:S=_(M.OnBlur),onValidSubmit:v,onInvalidSubmit:u,notifyOnStatusChange:o=!0}=r;return{_features:[],_config:{disabled:y},_validSubmitCallbacks:v!=null?[v]:[],_invalidSubmitCallbacks:u!=null?[u]:[],fields:Object.fromEntries(Object.entries(s).map(([t,e])=>{var a,b,m,d;return[t,E(e)?e:C(e.defaultValue,{key:t,validator:e.validator,collectErrorMode:(a=e.collectErrorMode)!=null?a:i,validateMode:(b=e.validateMode)!=null?b:h,reValidateMode:(m=e.reValidateMode)!=null?m:S,editable:(d=e.editable)!=null?d:!0,notifyOnStatusChange:o})]})),isValid:p(!1),isValidating:p(!1),isSubmitted:p(!1),isSubmitting:p(!1),init(){for(const t of Object.values(this.fields))t.status.listen(()=>g(this,null,function*(){yield this._revalidate(!0)}),{key:"form_revalidate"});return delete this.init,this},_revalidate(t=!1){return g(this,null,function*(){const e=Object.values(this.fields);return t||(this.isValidating.set(!0),yield Promise.all(e.map(a=>a.validate())),this.isValidating.set(!1)),this.isValid.set(e.every(a=>a.isValid())),this.isValid.get()})},submit(){return g(this,arguments,function*(t={}){const{context:e,assignToInitial:a=!1,onInvalidSubmit:b,onValidSubmit:m,postSubmitCallback:d}=t;this.isSubmitting.set(!0);const V=[];for(const l of Object.values(this.fields))l.isSubmitting.set(!0),(l.isSubmitted.get()&&l._config.reValidateMode.has(M.OnSubmit)||!l.isSubmitted.get()&&l._config.validateMode.has(j.OnSubmit))&&V.push(l.validate());yield Promise.all(V),this._revalidate(!0);const f=this.getValidData(),c=[];if(f!=null){for(const l of this._validSubmitCallbacks)c.push(l(f,e));typeof m=="function"&&c.push(m(f,e))}else{const l=this.getErrors();for(const n of this._invalidSubmitCallbacks)c.push(n(l,e));typeof b=="function"&&c.push(b(l,e))}let O=null;d!=null?O=(yield Promise.all(c)).reduce((l,n)=>n!=null&&typeof n=="object"?P(P({},l),n):l,{}):yield Promise.all(c);for(const[l,n]of Object.entries(this.fields))f!=null&&Object.prototype.hasOwnProperty.call(f,l)&&a&&(n._intialValue=k(f[l])),n.isSubmitted.set(!0),n.isSubmitting.set(!1);return this.isSubmitted.set(!0),this.isSubmitting.set(!1),d==null||d(this,O!=null?O:{}),this.isValid.get()})},validate(){return g(this,null,function*(){return this._revalidate(!1)})},getField(t){return this.fields[t]},getValidData(){if(!this.isValid.get())return null;const t={};for(const[e,a]of Object.entries(this.fields))t[e]=a.get();return t},getErrors(){const t={};for(const[e,a]of Object.entries(this.fields))switch(a.status._v.type){case"INVALID":t[e]=a.status._v.errors;break;case"UNVALIDATED":t[e]=[{code:"unvalidated",message:`${e.toString()} was not yet validated!`,path:e}];break}return t},reset(){for(const t of Object.values(this.fields))t.reset();this.isSubmitted.set(!1),this._revalidate(!0)}}.init()}export{A as createForm};
@@ -10,7 +10,7 @@ export interface TCreateFormConfig<GFormData extends TFormData> extends Partial<
10
10
  /**
11
11
  * Error collection mode. 'firstError' gathers only the first error per field, 'all' gathers all errors.
12
12
  */
13
- collectErrorMode: TCollectErrorMode;
13
+ collectErrorMode?: TCollectErrorMode;
14
14
  /**
15
15
  * Validation strategy **before** submitting.
16
16
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feature-form",
3
- "version": "0.0.42",
3
+ "version": "0.0.43",
4
4
  "private": false,
5
5
  "description": "Straightforward, typesafe, and feature-based form library for ReactJs",
6
6
  "keywords": [],
@@ -24,9 +24,9 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "@blgc/types": "0.0.15",
27
- "feature-state": "0.0.47",
27
+ "@blgc/utils": "0.0.36",
28
28
  "validation-adapter": "0.0.19",
29
- "@blgc/utils": "0.0.36"
29
+ "feature-state": "0.0.47"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.13.5",