feature-form 0.1.0 → 0.1.1
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 v=require("feature-core"),n=require("feature-state"),f=require("./lib/deep-copy.js"),_=require("./lib/standard-schema.js"),y=require("./lib/validation-status.js"),g=(t,e,
|
|
1
|
+
"use strict";var v=require("feature-core"),n=require("feature-state"),f=require("./lib/deep-copy.js"),_=require("./lib/standard-schema.js"),y=require("./lib/validation-status.js"),g=(t,e,s)=>new Promise((o,r)=>{var i=d=>{try{l(s.next(d))}catch(c){r(c)}},a=d=>{try{l(s.throw(d))}catch(c){r(c)}},l=d=>d.done?o(d.value):Promise.resolve(d.value).then(i,a);l((s=s.apply(t,e)).next())});function m(t,e){const{key:s,validator:o,validateOn:r=["submit"],revalidateOn:i=["submit","change"],collectErrorMode:a="firstError"}=e,l=n.createState(t).with(p({key:s,validation:o==null?void 0:{validator:o,config:{validateOn:r,revalidateOn:i,collectErrorMode:a}}}));return V(l),l}function S(t){return v.hasFeature(t,"form-field")}function p(t){const{key:e,validation:s}=t;return v.defineFeature({key:"form-field",install(o){const r=s==null?{type:"valid"}:{type:"unvalidated"};return{_validation:s,_validationRunId:0,_fieldValidatorStatus:r,_formValidatorErrors:[],_callbacks:{blur:[]},key:e,defaultValue:f.deepCopy(o._value),isTouched:n.createState(!1),isSubmitted:n.createState(!1),isValidating:n.createState(!1),status:n.createState(r).with(n.isEqualFeature(y.areValidationStatusesEqual)),_applyFormValidatorErrors(i){this._formValidatorErrors=i,this.status.set(u(this))},validate(){return g(this,null,function*(){if(this._validation==null)return this._fieldValidatorStatus={type:"valid"},this.status.set(u(this)),this.status.get().type==="valid";const i=++this._validationRunId;let a={type:"valid"};this.isValidating.set(!0);try{a=yield _.validateStandardSchema(this._validation.validator,this.get(),this._validation.config.collectErrorMode)}catch(l){a={type:"invalid",errors:[{message:l instanceof Error?l.message:String(l)}]}}finally{i===this._validationRunId&&this.isValidating.set(!1)}return i!==this._validationRunId?this.status.get().type==="valid":(this._fieldValidatorStatus=a,this.status.set(u(this)),this.status.get().type==="valid")})},onBlur(i){return this._callbacks.blur.push(i),()=>{const a=this._callbacks.blur.indexOf(i);a!==-1&&this._callbacks.blur.splice(a,1)}},blur(){const i=this.isTouched.get();this._validation!=null&&(this.isSubmitted.get()?this._validation.config.revalidateOn.includes("blur"):this._validation.config.validateOn.includes("blur")||this._validation.config.validateOn.includes("touched")&&!i)&&this.validate(),this.isTouched.set(!0);for(const a of this._callbacks.blur)a({wasTouched:i})},reset(){this.set(f.deepCopy(this.defaultValue),{listenerContext:{source:h}}),this._validationRunId++,this.isTouched.set(!1),this.isSubmitted.set(!1),this.isValidating.set(!1),this._formValidatorErrors=[],this._fieldValidatorStatus=this._validation==null?{type:"valid"}:{type:"unvalidated"},this.status.set(u(this))}}}})}const h="formFieldReset";function V(t){t.listen(({source:e})=>{e!==h&&t._validation!=null&&(t.isSubmitted.get()?t._validation.config.revalidateOn.includes("change"):t._validation.config.validateOn.includes("change")||t._validation.config.validateOn.includes("touched")&&t.isTouched.get())&&t.validate()})}function u(t){const e=t._fieldValidatorStatus.type==="invalid"?[...t._fieldValidatorStatus.errors,...t._formValidatorErrors]:t._formValidatorErrors;return e.length>0?{type:"invalid",errors:e}:t._fieldValidatorStatus}exports.createFormField=m,exports.formFieldResetSourceKey=h,exports.isFormField=S;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{hasFeature as f,defineFeature as _}from"feature-core";import{createState as d,isEqualFeature as m}from"feature-state";import{deepCopy as v}from"./lib/deep-copy.js";import{validateStandardSchema as g}from"./lib/standard-schema.js";import{areValidationStatusesEqual as p}from"./lib/validation-status.js";var y=(t,e,s)=>new Promise((n,r)=>{var i=o=>{try{l(s.next(o))}catch(c){r(c)}},a=o=>{try{l(s.throw(o))}catch(c){r(c)}},l=o=>o.done?n(o.value):Promise.resolve(o.value).then(i,a);l((s=s.apply(t,e)).next())});function V(t,e){const{key:s,validator:n,validateOn:r=["submit"],revalidateOn:i=["submit","change"],collectErrorMode:a="firstError"}=e,l=d(t).with(S({key:s,validation:n==null?void 0:{validator:n,config:{validateOn:r,revalidateOn:i,collectErrorMode:a}}}));return E(l),l}function b(t){return f(t,"form-field")}function S(t){const{key:e,validation:s}=t;return _({key:"form-field",install(n){const r=s==null?{type:"valid"}:{type:"unvalidated"};return{_validation:s,_validationRunId:0,_fieldValidatorStatus:r,_formValidatorErrors:[],_callbacks:{blur:[]},key:e,defaultValue:v(n.
|
|
1
|
+
import{hasFeature as f,defineFeature as _}from"feature-core";import{createState as d,isEqualFeature as m}from"feature-state";import{deepCopy as v}from"./lib/deep-copy.js";import{validateStandardSchema as g}from"./lib/standard-schema.js";import{areValidationStatusesEqual as p}from"./lib/validation-status.js";var y=(t,e,s)=>new Promise((n,r)=>{var i=o=>{try{l(s.next(o))}catch(c){r(c)}},a=o=>{try{l(s.throw(o))}catch(c){r(c)}},l=o=>o.done?n(o.value):Promise.resolve(o.value).then(i,a);l((s=s.apply(t,e)).next())});function V(t,e){const{key:s,validator:n,validateOn:r=["submit"],revalidateOn:i=["submit","change"],collectErrorMode:a="firstError"}=e,l=d(t).with(S({key:s,validation:n==null?void 0:{validator:n,config:{validateOn:r,revalidateOn:i,collectErrorMode:a}}}));return E(l),l}function b(t){return f(t,"form-field")}function S(t){const{key:e,validation:s}=t;return _({key:"form-field",install(n){const r=s==null?{type:"valid"}:{type:"unvalidated"};return{_validation:s,_validationRunId:0,_fieldValidatorStatus:r,_formValidatorErrors:[],_callbacks:{blur:[]},key:e,defaultValue:v(n._value),isTouched:d(!1),isSubmitted:d(!1),isValidating:d(!1),status:d(r).with(m(p)),_applyFormValidatorErrors(i){this._formValidatorErrors=i,this.status.set(u(this))},validate(){return y(this,null,function*(){if(this._validation==null)return this._fieldValidatorStatus={type:"valid"},this.status.set(u(this)),this.status.get().type==="valid";const i=++this._validationRunId;let a={type:"valid"};this.isValidating.set(!0);try{a=yield g(this._validation.validator,this.get(),this._validation.config.collectErrorMode)}catch(l){a={type:"invalid",errors:[{message:l instanceof Error?l.message:String(l)}]}}finally{i===this._validationRunId&&this.isValidating.set(!1)}return i!==this._validationRunId?this.status.get().type==="valid":(this._fieldValidatorStatus=a,this.status.set(u(this)),this.status.get().type==="valid")})},onBlur(i){return this._callbacks.blur.push(i),()=>{const a=this._callbacks.blur.indexOf(i);a!==-1&&this._callbacks.blur.splice(a,1)}},blur(){const i=this.isTouched.get();this._validation!=null&&(this.isSubmitted.get()?this._validation.config.revalidateOn.includes("blur"):this._validation.config.validateOn.includes("blur")||this._validation.config.validateOn.includes("touched")&&!i)&&this.validate(),this.isTouched.set(!0);for(const a of this._callbacks.blur)a({wasTouched:i})},reset(){this.set(v(this.defaultValue),{listenerContext:{source:h}}),this._validationRunId++,this.isTouched.set(!1),this.isSubmitted.set(!1),this.isValidating.set(!1),this._formValidatorErrors=[],this._fieldValidatorStatus=this._validation==null?{type:"valid"}:{type:"unvalidated"},this.status.set(u(this))}}}})}const h="formFieldReset";function E(t){t.listen(({source:e})=>{e!==h&&t._validation!=null&&(t.isSubmitted.get()?t._validation.config.revalidateOn.includes("change"):t._validation.config.validateOn.includes("change")||t._validation.config.validateOn.includes("touched")&&t.isTouched.get())&&t.validate()})}function u(t){const e=t._fieldValidatorStatus.type==="invalid"?[...t._fieldValidatorStatus.errors,...t._formValidatorErrors]:t._formValidatorErrors;return e.length>0?{type:"invalid",errors:e}:t._fieldValidatorStatus}export{V as createFormField,h as formFieldResetSourceKey,b as isFormField};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "feature-form",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Framework-agnostic reactive form state with Standard Schema validation and per-field triggers",
|
|
6
6
|
"keywords": [
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@standard-schema/spec": "^1.1.0",
|
|
43
43
|
"feature-core": "0.0.2",
|
|
44
|
-
"feature-state": "0.1.
|
|
44
|
+
"feature-state": "0.1.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@blgc/config": "0.1.
|
|
48
|
-
"rollup-presets": "0.0.
|
|
47
|
+
"@blgc/config": "0.1.2",
|
|
48
|
+
"rollup-presets": "0.0.30"
|
|
49
49
|
},
|
|
50
50
|
"size-limit": [
|
|
51
51
|
{
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"clean": "shx rm -rf dist && shx rm -rf .turbo && shx rm -rf node_modules",
|
|
59
59
|
"install:clean": "pnpm run clean && pnpm install",
|
|
60
60
|
"lint": "eslint .",
|
|
61
|
-
"publish:patch": "pnpm build:prod && pnpm version patch && pnpm publish --no-git-checks --access=public",
|
|
61
|
+
"publish:patch": "pnpm build:prod && pnpm version patch --no-git-tag-version && pnpm publish --no-git-checks --access=public",
|
|
62
62
|
"size": "size-limit --why",
|
|
63
63
|
"start:dev": "tsc -w",
|
|
64
64
|
"test": "vitest run",
|