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.
package/dist/cjs/create-form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
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;
|
package/dist/esm/create-form.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bitwiseFlag as
|
|
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
|
|
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.
|
|
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
|
-
"
|
|
27
|
+
"@blgc/utils": "0.0.36",
|
|
28
28
|
"validation-adapter": "0.0.19",
|
|
29
|
-
"
|
|
29
|
+
"feature-state": "0.0.47"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^22.13.5",
|