feature-form 0.0.43 → 0.0.45

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.
Files changed (83) hide show
  1. package/dist/cjs/create-form.js +227 -1
  2. package/dist/cjs/create-form.js.map +1 -0
  3. package/dist/cjs/form-field/create-form-field-validation-context.js +28 -1
  4. package/dist/cjs/form-field/create-form-field-validation-context.js.map +1 -0
  5. package/dist/cjs/form-field/create-form-field.js +117 -1
  6. package/dist/cjs/form-field/create-form-field.js.map +1 -0
  7. package/dist/cjs/form-field/create-status.js +24 -1
  8. package/dist/cjs/form-field/create-status.js.map +1 -0
  9. package/dist/cjs/form-field/is-form-field-status.js +8 -1
  10. package/dist/cjs/form-field/is-form-field-status.js.map +1 -0
  11. package/dist/cjs/form-field/is-form-field.js +8 -1
  12. package/dist/cjs/form-field/is-form-field.js.map +1 -0
  13. package/dist/cjs/helper/from-validator.js +24 -1
  14. package/dist/cjs/helper/from-validator.js.map +1 -0
  15. package/dist/cjs/helper/has-form-changed.js +14 -1
  16. package/dist/cjs/helper/has-form-changed.js.map +1 -0
  17. package/dist/cjs/helper/reset-form-submitted.js +13 -1
  18. package/dist/cjs/helper/reset-form-submitted.js.map +1 -0
  19. package/dist/cjs/index.js +36 -1
  20. package/dist/cjs/index.js.map +1 -0
  21. package/dist/cjs/is-form-with-features.js +8 -1
  22. package/dist/cjs/is-form-with-features.js.map +1 -0
  23. package/dist/cjs/types/form-field.js +19 -1
  24. package/dist/cjs/types/form-field.js.map +1 -0
  25. package/dist/esm/create-form.js +225 -1
  26. package/dist/esm/create-form.js.map +1 -0
  27. package/dist/esm/form-field/create-form-field-validation-context.js +26 -1
  28. package/dist/esm/form-field/create-form-field-validation-context.js.map +1 -0
  29. package/dist/esm/form-field/create-form-field.js +115 -1
  30. package/dist/esm/form-field/create-form-field.js.map +1 -0
  31. package/dist/esm/form-field/create-status.js +22 -1
  32. package/dist/esm/form-field/create-status.js.map +1 -0
  33. package/dist/esm/form-field/is-form-field-status.js +6 -1
  34. package/dist/esm/form-field/is-form-field-status.js.map +1 -0
  35. package/dist/esm/form-field/is-form-field.js +6 -1
  36. package/dist/esm/form-field/is-form-field.js.map +1 -0
  37. package/dist/esm/helper/from-validator.js +22 -1
  38. package/dist/esm/helper/from-validator.js.map +1 -0
  39. package/dist/esm/helper/has-form-changed.js +12 -1
  40. package/dist/esm/helper/has-form-changed.js.map +1 -0
  41. package/dist/esm/helper/reset-form-submitted.js +11 -1
  42. package/dist/esm/helper/reset-form-submitted.js.map +1 -0
  43. package/dist/esm/index.js +12 -1
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/is-form-with-features.js +6 -1
  46. package/dist/esm/is-form-with-features.js.map +1 -0
  47. package/dist/esm/types/form-field.js +16 -1
  48. package/dist/esm/types/form-field.js.map +1 -0
  49. package/dist/types/create-form.d.ts +1 -0
  50. package/dist/types/create-form.d.ts.map +1 -0
  51. package/dist/types/form-field/create-form-field-validation-context.d.ts +1 -0
  52. package/dist/types/form-field/create-form-field-validation-context.d.ts.map +1 -0
  53. package/dist/types/form-field/create-form-field.d.ts +1 -0
  54. package/dist/types/form-field/create-form-field.d.ts.map +1 -0
  55. package/dist/types/form-field/create-status.d.ts +1 -0
  56. package/dist/types/form-field/create-status.d.ts.map +1 -0
  57. package/dist/types/form-field/index.d.ts +1 -0
  58. package/dist/types/form-field/index.d.ts.map +1 -0
  59. package/dist/types/form-field/is-form-field-status.d.ts +1 -0
  60. package/dist/types/form-field/is-form-field-status.d.ts.map +1 -0
  61. package/dist/types/form-field/is-form-field.d.ts +1 -0
  62. package/dist/types/form-field/is-form-field.d.ts.map +1 -0
  63. package/dist/types/helper/from-validator.d.ts +1 -0
  64. package/dist/types/helper/from-validator.d.ts.map +1 -0
  65. package/dist/types/helper/has-form-changed.d.ts +1 -0
  66. package/dist/types/helper/has-form-changed.d.ts.map +1 -0
  67. package/dist/types/helper/index.d.ts +1 -0
  68. package/dist/types/helper/index.d.ts.map +1 -0
  69. package/dist/types/helper/reset-form-submitted.d.ts +1 -0
  70. package/dist/types/helper/reset-form-submitted.d.ts.map +1 -0
  71. package/dist/types/index.d.ts +1 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/is-form-with-features.d.ts +1 -0
  74. package/dist/types/is-form-with-features.d.ts.map +1 -0
  75. package/dist/types/types/features.d.ts +1 -0
  76. package/dist/types/types/features.d.ts.map +1 -0
  77. package/dist/types/types/form-field.d.ts +1 -0
  78. package/dist/types/types/form-field.d.ts.map +1 -0
  79. package/dist/types/types/form.d.ts +1 -0
  80. package/dist/types/types/form.d.ts.map +1 -0
  81. package/dist/types/types/index.d.ts +1 -0
  82. package/dist/types/types/index.d.ts.map +1 -0
  83. package/package.json +10 -9
@@ -1 +1,227 @@
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
+ 'use strict';
2
+
3
+ var utils = require('@blgc/utils');
4
+ var featureState = require('feature-state');
5
+ var createFormField = require('./form-field/create-form-field.js');
6
+ var isFormField = require('./form-field/is-form-field.js');
7
+ var formField = require('./types/form-field.js');
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __async = (__this, __arguments, generator) => {
26
+ return new Promise((resolve, reject) => {
27
+ var fulfilled = (value) => {
28
+ try {
29
+ step(generator.next(value));
30
+ } catch (e) {
31
+ reject(e);
32
+ }
33
+ };
34
+ var rejected = (value) => {
35
+ try {
36
+ step(generator.throw(value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
42
+ step((generator = generator.apply(__this, __arguments)).next());
43
+ });
44
+ };
45
+ function createForm(config) {
46
+ const {
47
+ fields,
48
+ collectErrorMode = "firstError",
49
+ disabled = false,
50
+ validateMode = utils.bitwiseFlag(formField.FormFieldValidateMode.OnSubmit),
51
+ reValidateMode = utils.bitwiseFlag(formField.FormFieldReValidateMode.OnBlur),
52
+ onValidSubmit,
53
+ onInvalidSubmit,
54
+ notifyOnStatusChange = true
55
+ } = config;
56
+ const form = {
57
+ _features: [],
58
+ _config: {
59
+ disabled
60
+ },
61
+ _validSubmitCallbacks: onValidSubmit != null ? [onValidSubmit] : [],
62
+ _invalidSubmitCallbacks: onInvalidSubmit != null ? [onInvalidSubmit] : [],
63
+ fields: Object.fromEntries(
64
+ Object.entries(fields).map(
65
+ ([fieldKey, field]) => {
66
+ var _a2, _b, _c, _d;
67
+ return [
68
+ fieldKey,
69
+ isFormField.isFormField(field) ? field : createFormField.createFormField(field.defaultValue, {
70
+ key: fieldKey,
71
+ validator: field.validator,
72
+ collectErrorMode: (_a2 = field.collectErrorMode) != null ? _a2 : collectErrorMode,
73
+ validateMode: (_b = field.validateMode) != null ? _b : validateMode,
74
+ reValidateMode: (_c = field.reValidateMode) != null ? _c : reValidateMode,
75
+ editable: (_d = field.editable) != null ? _d : true,
76
+ notifyOnStatusChange
77
+ })
78
+ ];
79
+ }
80
+ )
81
+ ),
82
+ isValid: featureState.createState(false),
83
+ isValidating: featureState.createState(false),
84
+ isSubmitted: featureState.createState(false),
85
+ isSubmitting: featureState.createState(false),
86
+ init() {
87
+ for (const field of Object.values(this.fields)) {
88
+ field.status.listen(
89
+ () => __async(this, null, function* () {
90
+ yield this._revalidate(true);
91
+ }),
92
+ { key: "form_revalidate" }
93
+ );
94
+ }
95
+ delete this.init;
96
+ return this;
97
+ },
98
+ _revalidate(cached = false) {
99
+ return __async(this, null, function* () {
100
+ const formFields = Object.values(this.fields);
101
+ if (!cached) {
102
+ this.isValidating.set(true);
103
+ yield Promise.all(formFields.map((formField) => formField.validate()));
104
+ this.isValidating.set(false);
105
+ }
106
+ this.isValid.set(formFields.every((formField) => formField.isValid()));
107
+ return this.isValid.get();
108
+ });
109
+ },
110
+ submit() {
111
+ return __async(this, arguments, function* (options = {}) {
112
+ const {
113
+ context,
114
+ assignToInitial = false,
115
+ onInvalidSubmit: _onInvalidSubmit,
116
+ onValidSubmit: _onValidSubmit,
117
+ postSubmitCallback
118
+ } = options;
119
+ this.isSubmitting.set(true);
120
+ const validationPromises = [];
121
+ for (const formField$1 of Object.values(
122
+ this.fields
123
+ )) {
124
+ formField$1.isSubmitting.set(true);
125
+ if (formField$1.isSubmitted.get() && formField$1._config.reValidateMode.has(formField.FormFieldReValidateMode.OnSubmit) || !formField$1.isSubmitted.get() && formField$1._config.validateMode.has(formField.FormFieldValidateMode.OnSubmit)) {
126
+ validationPromises.push(formField$1.validate());
127
+ }
128
+ }
129
+ yield Promise.all(validationPromises);
130
+ this._revalidate(true);
131
+ const data = this.getValidData();
132
+ const submitCallbackPromises = [];
133
+ if (data != null) {
134
+ for (const callback of this._validSubmitCallbacks) {
135
+ submitCallbackPromises.push(callback(data, context));
136
+ }
137
+ if (typeof _onValidSubmit === "function") {
138
+ submitCallbackPromises.push(_onValidSubmit(data, context));
139
+ }
140
+ } else {
141
+ const errors = this.getErrors();
142
+ for (const callback of this._invalidSubmitCallbacks) {
143
+ submitCallbackPromises.push(callback(errors, context));
144
+ }
145
+ if (typeof _onInvalidSubmit === "function") {
146
+ submitCallbackPromises.push(_onInvalidSubmit(errors, context));
147
+ }
148
+ }
149
+ let submitCallbackData = null;
150
+ if (postSubmitCallback != null) {
151
+ submitCallbackData = (yield Promise.all(submitCallbackPromises)).reduce((acc, result) => {
152
+ if (result != null && typeof result === "object") {
153
+ return __spreadValues(__spreadValues({}, acc), result);
154
+ }
155
+ return acc;
156
+ }, {});
157
+ } else {
158
+ yield Promise.all(submitCallbackPromises);
159
+ }
160
+ for (const [fieldKey, formField] of Object.entries(this.fields)) {
161
+ if (data != null && Object.prototype.hasOwnProperty.call(data, fieldKey)) {
162
+ if (assignToInitial) {
163
+ formField._intialValue = utils.deepCopy(data[fieldKey]);
164
+ }
165
+ }
166
+ formField.isSubmitted.set(true);
167
+ formField.isSubmitting.set(false);
168
+ }
169
+ this.isSubmitted.set(true);
170
+ this.isSubmitting.set(false);
171
+ postSubmitCallback == null ? void 0 : postSubmitCallback(this, submitCallbackData != null ? submitCallbackData : {});
172
+ return this.isValid.get();
173
+ });
174
+ },
175
+ validate() {
176
+ return __async(this, null, function* () {
177
+ return this._revalidate(false);
178
+ });
179
+ },
180
+ getField(fieldKey) {
181
+ return this.fields[fieldKey];
182
+ },
183
+ getValidData() {
184
+ if (!this.isValid.get()) {
185
+ return null;
186
+ }
187
+ const preparedData = {};
188
+ for (const [fieldKey, formField] of Object.entries(this.fields)) {
189
+ preparedData[fieldKey] = formField.get();
190
+ }
191
+ return preparedData;
192
+ },
193
+ getErrors() {
194
+ const errors = {};
195
+ for (const [fieldKey, formField] of Object.entries(this.fields)) {
196
+ switch (formField.status._v.type) {
197
+ case "INVALID":
198
+ errors[fieldKey] = formField.status._v.errors;
199
+ break;
200
+ case "UNVALIDATED":
201
+ errors[fieldKey] = [
202
+ {
203
+ code: "unvalidated",
204
+ message: `${fieldKey.toString()} was not yet validated!`,
205
+ path: fieldKey
206
+ }
207
+ ];
208
+ break;
209
+ }
210
+ }
211
+ return errors;
212
+ },
213
+ reset() {
214
+ for (const formField of Object.values(
215
+ this.fields
216
+ )) {
217
+ formField.reset();
218
+ }
219
+ this.isSubmitted.set(false);
220
+ this._revalidate(true);
221
+ }
222
+ };
223
+ return form.init();
224
+ }
225
+
226
+ exports.createForm = createForm;
227
+ //# sourceMappingURL=create-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form.js","sources":["../../src/create-form.ts"],"sourcesContent":["import { TWithInit } from '@blgc/types/features';\nimport { type TEntries } from '@blgc/types/utils';\nimport { bitwiseFlag, deepCopy, type BitwiseFlag } from '@blgc/utils';\nimport { createState } from 'feature-state';\nimport { TCollectErrorMode } from 'validation-adapter';\nimport { createFormField, isFormField } from './form-field';\nimport {\n\tFormFieldReValidateMode,\n\tFormFieldValidateMode,\n\tTFormField,\n\ttype TForm,\n\ttype TFormConfig,\n\ttype TFormData,\n\ttype TFormFields,\n\ttype TFormFieldStateConfig,\n\ttype TFormFieldValidator,\n\ttype TInvalidFormFieldError,\n\ttype TInvalidFormFieldErrors,\n\ttype TInvalidSubmitCallback,\n\ttype TSubmitCallbackResponse,\n\ttype TValidSubmitCallback\n} from './types';\n\nexport function createForm<GFormData extends TFormData>(\n\tconfig: TCreateFormConfig<GFormData>\n): TForm<GFormData, []> {\n\tconst {\n\t\tfields,\n\t\tcollectErrorMode = 'firstError',\n\t\tdisabled = false,\n\t\tvalidateMode = bitwiseFlag(FormFieldValidateMode.OnSubmit),\n\t\treValidateMode = bitwiseFlag(FormFieldReValidateMode.OnBlur),\n\t\tonValidSubmit,\n\t\tonInvalidSubmit,\n\t\tnotifyOnStatusChange = true\n\t} = config;\n\n\tconst form: TWithInit<TForm<GFormData, []>> = {\n\t\t_features: [],\n\t\t_config: {\n\t\t\tdisabled\n\t\t},\n\t\t_validSubmitCallbacks: onValidSubmit != null ? [onValidSubmit] : [],\n\t\t_invalidSubmitCallbacks: onInvalidSubmit != null ? [onInvalidSubmit] : [],\n\t\tfields: Object.fromEntries(\n\t\t\tObject.entries(fields).map(\n\t\t\t\t([fieldKey, field]: [\n\t\t\t\t\tstring,\n\t\t\t\t\tTCreateFormConfigFormField<unknown> | TFormField<unknown>\n\t\t\t\t]) => [\n\t\t\t\t\tfieldKey,\n\t\t\t\t\tisFormField(field)\n\t\t\t\t\t\t? field\n\t\t\t\t\t\t: createFormField(field.defaultValue, {\n\t\t\t\t\t\t\t\tkey: fieldKey,\n\t\t\t\t\t\t\t\tvalidator: field.validator,\n\t\t\t\t\t\t\t\tcollectErrorMode: field.collectErrorMode ?? collectErrorMode,\n\t\t\t\t\t\t\t\tvalidateMode: field.validateMode ?? validateMode,\n\t\t\t\t\t\t\t\treValidateMode: field.reValidateMode ?? reValidateMode,\n\t\t\t\t\t\t\t\teditable: field.editable ?? true,\n\t\t\t\t\t\t\t\tnotifyOnStatusChange\n\t\t\t\t\t\t\t})\n\t\t\t\t]\n\t\t\t)\n\t\t) as TFormFields<GFormData>,\n\t\tisValid: createState(false),\n\t\tisValidating: createState(false),\n\t\tisSubmitted: createState(false),\n\t\tisSubmitting: createState(false),\n\t\tinit(this: TForm<GFormData, []>) {\n\t\t\t// Revalidate form on status change\n\t\t\tfor (const field of Object.values(this.fields) as TFormFields<GFormData>[keyof GFormData][]) {\n\t\t\t\tfield.status.listen(\n\t\t\t\t\tasync () => {\n\t\t\t\t\t\tawait this._revalidate(true);\n\t\t\t\t\t},\n\t\t\t\t\t{ key: 'form_revalidate' }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// @ts-expect-error -- Remove init method after initialization\n\t\t\tdelete this.init;\n\t\t\treturn this;\n\t\t},\n\t\tasync _revalidate(this: TForm<GFormData, []>, cached = false) {\n\t\t\tconst formFields = Object.values(this.fields) as TFormFields<GFormData>[keyof GFormData][];\n\n\t\t\tif (!cached) {\n\t\t\t\tthis.isValidating.set(true);\n\t\t\t\tawait Promise.all(formFields.map((formField) => formField.validate()));\n\t\t\t\tthis.isValidating.set(false);\n\t\t\t}\n\n\t\t\tthis.isValid.set(formFields.every((formField) => formField.isValid()));\n\t\t\treturn this.isValid.get();\n\t\t},\n\t\tasync submit(this: TForm<GFormData, []>, options = {}) {\n\t\t\tconst {\n\t\t\t\tcontext,\n\t\t\t\tassignToInitial = false,\n\t\t\t\tonInvalidSubmit: _onInvalidSubmit,\n\t\t\t\tonValidSubmit: _onValidSubmit,\n\t\t\t\tpostSubmitCallback\n\t\t\t} = options;\n\t\t\tthis.isSubmitting.set(true);\n\n\t\t\t// Validate form fields\n\t\t\tconst validationPromises: Promise<boolean>[] = [];\n\t\t\tfor (const formField of Object.values(\n\t\t\t\tthis.fields\n\t\t\t) as TFormFields<GFormData>[keyof GFormData][]) {\n\t\t\t\tformField.isSubmitting.set(true);\n\t\t\t\tif (\n\t\t\t\t\t(formField.isSubmitted.get() &&\n\t\t\t\t\t\tformField._config.reValidateMode.has(FormFieldReValidateMode.OnSubmit)) ||\n\t\t\t\t\t(!formField.isSubmitted.get() &&\n\t\t\t\t\t\tformField._config.validateMode.has(FormFieldValidateMode.OnSubmit))\n\t\t\t\t) {\n\t\t\t\t\tvalidationPromises.push(formField.validate());\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait Promise.all(validationPromises);\n\n\t\t\t// Note: We can't rely on the form field status listener to revalidate the form on time\n\t\t\t// since the state queue is processed asynchronously\n\t\t\tthis._revalidate(true);\n\n\t\t\t// Execute submit callbacks\n\t\t\tconst data = this.getValidData();\n\t\t\tconst submitCallbackPromises: TSubmitCallbackResponse[] = [];\n\t\t\tif (data != null) {\n\t\t\t\tfor (const callback of this._validSubmitCallbacks) {\n\t\t\t\t\tsubmitCallbackPromises.push(callback(data, context));\n\t\t\t\t}\n\t\t\t\tif (typeof _onValidSubmit === 'function') {\n\t\t\t\t\tsubmitCallbackPromises.push(_onValidSubmit(data, context));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst errors = this.getErrors();\n\t\t\t\tfor (const callback of this._invalidSubmitCallbacks) {\n\t\t\t\t\tsubmitCallbackPromises.push(callback(errors, context));\n\t\t\t\t}\n\t\t\t\tif (typeof _onInvalidSubmit === 'function') {\n\t\t\t\t\tsubmitCallbackPromises.push(_onInvalidSubmit(errors, context));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet submitCallbackData: Record<string, unknown> | null = null;\n\t\t\tif (postSubmitCallback != null) {\n\t\t\t\tsubmitCallbackData = (await Promise.all(submitCallbackPromises)).reduce((acc, result) => {\n\t\t\t\t\tif (result != null && typeof result === 'object') {\n\t\t\t\t\t\treturn { ...acc, ...result };\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {}) as Record<string, unknown>;\n\t\t\t} else {\n\t\t\t\tawait Promise.all(submitCallbackPromises);\n\t\t\t}\n\n\t\t\t// Update form field states\n\t\t\tfor (const [fieldKey, formField] of Object.entries(this.fields) as TEntries<\n\t\t\t\tTFormFields<GFormData>\n\t\t\t>) {\n\t\t\t\tif (data != null && Object.prototype.hasOwnProperty.call(data, fieldKey)) {\n\t\t\t\t\tif (assignToInitial) {\n\t\t\t\t\t\tformField._intialValue = deepCopy(data[fieldKey]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tformField.isSubmitted.set(true);\n\t\t\t\tformField.isSubmitting.set(false);\n\t\t\t}\n\n\t\t\tthis.isSubmitted.set(true);\n\t\t\tthis.isSubmitting.set(false);\n\n\t\t\tpostSubmitCallback?.(this, submitCallbackData ?? {});\n\t\t\treturn this.isValid.get();\n\t\t},\n\t\tasync validate(this: TForm<GFormData, []>) {\n\t\t\treturn this._revalidate(false);\n\t\t},\n\t\tgetField(this: TForm<GFormData, []>, fieldKey) {\n\t\t\treturn this.fields[fieldKey];\n\t\t},\n\t\tgetValidData(this: TForm<GFormData, []>) {\n\t\t\tif (!this.isValid.get()) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// @ts-expect-error - Filled below\n\t\t\tconst preparedData: Readonly<GFormData> = {};\n\n\t\t\tfor (const [fieldKey, formField] of Object.entries(this.fields) as TEntries<\n\t\t\t\tTFormFields<GFormData>\n\t\t\t>) {\n\t\t\t\t// @ts-expect-error - GFormFields is based on GFormData and the keys should be identical\n\t\t\t\tpreparedData[fieldKey] = formField.get();\n\t\t\t}\n\n\t\t\treturn preparedData;\n\t\t},\n\t\tgetErrors(this: TForm<GFormData, []>) {\n\t\t\tconst errors: TInvalidFormFieldErrors<GFormData> = {};\n\n\t\t\tfor (const [fieldKey, formField] of Object.entries(this.fields) as TEntries<\n\t\t\t\tTFormFields<GFormData>\n\t\t\t>) {\n\t\t\t\tswitch (formField.status._v.type) {\n\t\t\t\t\tcase 'INVALID':\n\t\t\t\t\t\terrors[fieldKey] = formField.status._v.errors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'UNVALIDATED':\n\t\t\t\t\t\terrors[fieldKey] = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcode: 'unvalidated',\n\t\t\t\t\t\t\t\tmessage: `${fieldKey.toString()} was not yet validated!`,\n\t\t\t\t\t\t\t\tpath: fieldKey\n\t\t\t\t\t\t\t} as TInvalidFormFieldError\n\t\t\t\t\t\t];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn errors;\n\t\t},\n\t\treset(this: TForm<GFormData, []>) {\n\t\t\tfor (const formField of Object.values(\n\t\t\t\tthis.fields\n\t\t\t) as TFormFields<GFormData>[keyof GFormData][]) {\n\t\t\t\tformField.reset();\n\t\t\t}\n\t\t\tthis.isSubmitted.set(false);\n\t\t\tthis._revalidate(true);\n\t\t}\n\t};\n\n\treturn form.init();\n}\n\nexport interface TCreateFormConfig<GFormData extends TFormData> extends Partial<TFormConfig> {\n\t/**\n\t * Form fields\n\t */\n\tfields: TCreateFormConfigFormFields<GFormData>;\n\t/**\n\t * Error collection mode. 'firstError' gathers only the first error per field, 'all' gathers all errors.\n\t */\n\tcollectErrorMode?: TCollectErrorMode;\n\t/**\n\t * Validation strategy **before** submitting.\n\t */\n\tvalidateMode?: BitwiseFlag<FormFieldValidateMode>;\n\t/**\n\t * Validation strategy **after** submitting.\n\t */\n\treValidateMode?: BitwiseFlag<FormFieldReValidateMode>;\n\t/**\n\t * Whether to notify the form field if its status has changed\n\t */\n\tnotifyOnStatusChange?: boolean;\n\n\tonInvalidSubmit?: TInvalidSubmitCallback<GFormData>;\n\tonValidSubmit?: TValidSubmitCallback<GFormData>;\n}\n\nexport type TCreateFormConfigFormFields<GFormData extends TFormData> = {\n\t[Key in keyof GFormData]: TCreateFormConfigFormField<GFormData[Key]> | TFormField<GFormData[Key]>;\n};\n\nexport interface TCreateFormConfigFormField<GValue> extends Partial<TFormFieldStateConfig> {\n\tdefaultValue?: GValue;\n\tvalidator?: TFormFieldValidator<GValue>;\n}\n"],"names":["bitwiseFlag","FormFieldValidateMode","FormFieldReValidateMode","isFormField","createFormField","createState","formField","deepCopy"],"mappings":"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"}
@@ -1 +1,28 @@
1
- "use strict";function t(r){return{config:{collectErrorMode:r._config.collectErrorMode,name:r.key},value:r.get(),isValue(e){return!0},hasError(){var e;return((e=r.status._nextValue)==null?void 0:e.type)==="INVALID"},registerError(e){r.status.registerNextError({code:e.code,message:e.message,path:e.path})}}}exports.createFormFieldValidationContext=t;
1
+ 'use strict';
2
+
3
+ function createFormFieldValidationContext(formField) {
4
+ return {
5
+ config: {
6
+ collectErrorMode: formField._config.collectErrorMode,
7
+ name: formField.key
8
+ },
9
+ value: formField.get(),
10
+ isValue(v) {
11
+ return true;
12
+ },
13
+ hasError() {
14
+ var _a;
15
+ return ((_a = formField.status._nextValue) == null ? void 0 : _a.type) === "INVALID";
16
+ },
17
+ registerError(error) {
18
+ formField.status.registerNextError({
19
+ code: error.code,
20
+ message: error.message,
21
+ path: error.path
22
+ });
23
+ }
24
+ };
25
+ }
26
+
27
+ exports.createFormFieldValidationContext = createFormFieldValidationContext;
28
+ //# sourceMappingURL=create-form-field-validation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form-field-validation-context.js","sources":["../../../src/form-field/create-form-field-validation-context.ts"],"sourcesContent":["import { type TFormField, type TFormFieldValidationContext } from '../types';\n\nexport function createFormFieldValidationContext<GValue>(\n\tformField: TFormField<GValue>\n): TFormFieldValidationContext<GValue> {\n\treturn {\n\t\tconfig: {\n\t\t\tcollectErrorMode: formField._config.collectErrorMode,\n\t\t\tname: formField.key\n\t\t},\n\t\tvalue: formField.get() as Readonly<GValue>,\n\t\tisValue(v): v is GValue {\n\t\t\treturn true;\n\t\t},\n\t\thasError() {\n\t\t\treturn formField.status._nextValue?.type === 'INVALID';\n\t\t},\n\t\tregisterError(error) {\n\t\t\tformField.status.registerNextError({\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tpath: error.path\n\t\t\t});\n\t\t}\n\t};\n}\n"],"names":[],"mappings":";;AACO,SAAS,gCAAgC,CAAC,SAAS,EAAE;AAC5D,EAAE,OAAO;AACT,IAAI,MAAM,EAAE;AACZ,MAAM,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,gBAAgB;AAC1D,MAAM,IAAI,EAAE,SAAS,CAAC;AACtB,KAAK;AACL,IAAI,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE;AACf,MAAM,OAAO,IAAI;AACjB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,MAAM,IAAI,EAAE;AACZ,MAAM,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,MAAM,SAAS;AAC1F,KAAK;AACL,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,MAAM,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACzC,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;AACxB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,IAAI,EAAE,KAAK,CAAC;AACpB,OAAO,CAAC;AACR;AACA,GAAG;AACH;;;;"}
@@ -1 +1,117 @@
1
- "use strict";var f=require("@blgc/utils"),r=require("feature-state"),F=require("validation-adapter"),t=require("../types/form-field.js"),_=require("./create-form-field-validation-context.js"),M=require("./create-status.js"),m=(d,o,a)=>new Promise((n,l)=>{var u=e=>{try{s(a.next(e))}catch(i){l(i)}},h=e=>{try{s(a.throw(e))}catch(i){l(i)}},s=e=>e.done?n(e.value):Promise.resolve(e.value).then(u,h);s((a=a.apply(d,o)).next())});function S(d,o){const{key:a,validator:n=F.createValidator([]),editable:l=!0,reValidateMode:u=f.bitwiseFlag(t.FormFieldReValidateMode.OnBlur),validateMode:h=f.bitwiseFlag(t.FormFieldValidateMode.OnSubmit),collectErrorMode:s="firstError",notifyOnStatusChange:e=!0}=o,i=r.createState(d),V={_config:{editable:l,validateMode:h,reValidateMode:u,collectErrorMode:s},_intialValue:f.deepCopy(i._v),_validator:n,key:a,isTouched:r.createState(!1),isSubmitted:r.createState(!1),isSubmitting:r.createState(!1),isValidating:r.createState(!1),status:M.createStatus({type:"UNVALIDATED"}),validate(){return m(this,null,function*(){const c=_.createFormFieldValidationContext(this);return this.isValidating.set(!0),yield this._validator.validate(c),this.isValidating.set(!1),this.status._nextValue==null?this.status.set({type:"VALID"}):this.status.set(this.status._nextValue),this.status._nextValue=void 0,this.status.get().type==="VALID"})},isValid(){return this.status.get().type==="VALID"},blur(){(this.isSubmitted.get()&&this._config.reValidateMode.has(t.FormFieldReValidateMode.OnBlur)||!this.isSubmitted.get()&&(this._config.validateMode.has(t.FormFieldValidateMode.OnBlur)||this._config.validateMode.has(t.FormFieldValidateMode.OnTouched)&&!this.isTouched.get()))&&this.validate(),this.isTouched.set(!0)},reset(){this.set(this._intialValue,{listenerContext:{source:"form-field_reset"}}),this.isTouched.set(!1),this.isSubmitted.set(!1),this.isSubmitting.set(!1),this.status.set({type:"UNVALIDATED"})}},g=Object.assign(i,V,{init({notifyOnStatusChange:c}){return c&&this.status.listen(v=>{i._notify({listenerContext:{source:"form-field_status-change",status:v.value}})},{key:"form-field_status-change"}),this.listen(()=>m(this,null,function*(){(this.isSubmitted.get()&&this._config.reValidateMode.has(t.FormFieldReValidateMode.OnChange)||!this.isSubmitted.get()&&this._config.validateMode.has(t.FormFieldValidateMode.OnChange)||this._config.validateMode.has(t.FormFieldValidateMode.OnTouched)&&this.isTouched.get())&&(yield this.validate())}),{key:"form-field_validate"}),delete this.init,this}});return g._features.push("form-field"),g.init({notifyOnStatusChange:e})}exports.createFormField=S;
1
+ 'use strict';
2
+
3
+ var utils = require('@blgc/utils');
4
+ var featureState = require('feature-state');
5
+ var validationAdapter = require('validation-adapter');
6
+ var formField = require('../types/form-field.js');
7
+ var createFormFieldValidationContext = require('./create-form-field-validation-context.js');
8
+ var createStatus = require('./create-status.js');
9
+
10
+ var __async = (__this, __arguments, generator) => {
11
+ return new Promise((resolve, reject) => {
12
+ var fulfilled = (value) => {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ };
19
+ var rejected = (value) => {
20
+ try {
21
+ step(generator.throw(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
27
+ step((generator = generator.apply(__this, __arguments)).next());
28
+ });
29
+ };
30
+ function createFormField(initialValue, config) {
31
+ const {
32
+ key,
33
+ validator = validationAdapter.createValidator([]),
34
+ editable = true,
35
+ reValidateMode = utils.bitwiseFlag(formField.FormFieldReValidateMode.OnBlur),
36
+ validateMode = utils.bitwiseFlag(formField.FormFieldValidateMode.OnSubmit),
37
+ collectErrorMode = "firstError",
38
+ notifyOnStatusChange = true
39
+ } = config;
40
+ const baseState = featureState.createState(initialValue);
41
+ const formFieldFeature = {
42
+ _config: {
43
+ editable,
44
+ validateMode,
45
+ reValidateMode,
46
+ collectErrorMode
47
+ },
48
+ _intialValue: utils.deepCopy(baseState._v),
49
+ _validator: validator,
50
+ key,
51
+ isTouched: featureState.createState(false),
52
+ isSubmitted: featureState.createState(false),
53
+ isSubmitting: featureState.createState(false),
54
+ isValidating: featureState.createState(false),
55
+ status: createStatus.createStatus({ type: "UNVALIDATED" }),
56
+ validate() {
57
+ return __async(this, null, function* () {
58
+ const validationContext = createFormFieldValidationContext.createFormFieldValidationContext(this);
59
+ this.isValidating.set(true);
60
+ yield this._validator.validate(validationContext);
61
+ this.isValidating.set(false);
62
+ if (this.status._nextValue == null) {
63
+ this.status.set({ type: "VALID" });
64
+ } else {
65
+ this.status.set(this.status._nextValue);
66
+ }
67
+ this.status._nextValue = void 0;
68
+ return this.status.get().type === "VALID";
69
+ });
70
+ },
71
+ isValid() {
72
+ return this.status.get().type === "VALID";
73
+ },
74
+ blur() {
75
+ if (this.isSubmitted.get() && this._config.reValidateMode.has(formField.FormFieldReValidateMode.OnBlur) || !this.isSubmitted.get() && (this._config.validateMode.has(formField.FormFieldValidateMode.OnBlur) || this._config.validateMode.has(formField.FormFieldValidateMode.OnTouched) && !this.isTouched.get())) {
76
+ void this.validate();
77
+ }
78
+ this.isTouched.set(true);
79
+ },
80
+ reset() {
81
+ this.set(this._intialValue, { listenerContext: { source: "form-field_reset" } });
82
+ this.isTouched.set(false);
83
+ this.isSubmitted.set(false);
84
+ this.isSubmitting.set(false);
85
+ this.status.set({ type: "UNVALIDATED" });
86
+ }
87
+ };
88
+ const formField$1 = Object.assign(baseState, formFieldFeature, {
89
+ init({ notifyOnStatusChange: notifyOnStatusChange2 }) {
90
+ if (notifyOnStatusChange2) {
91
+ this.status.listen(
92
+ (data) => {
93
+ baseState._notify({
94
+ listenerContext: { source: "form-field_status-change", status: data.value }
95
+ });
96
+ },
97
+ { key: "form-field_status-change" }
98
+ );
99
+ }
100
+ this.listen(
101
+ () => __async(this, null, function* () {
102
+ if (this.isSubmitted.get() && this._config.reValidateMode.has(formField.FormFieldReValidateMode.OnChange) || !this.isSubmitted.get() && this._config.validateMode.has(formField.FormFieldValidateMode.OnChange) || this._config.validateMode.has(formField.FormFieldValidateMode.OnTouched) && this.isTouched.get()) {
103
+ yield this.validate();
104
+ }
105
+ }),
106
+ { key: "form-field_validate" }
107
+ );
108
+ delete this.init;
109
+ return this;
110
+ }
111
+ });
112
+ formField$1._features.push("form-field");
113
+ return formField$1.init({ notifyOnStatusChange });
114
+ }
115
+
116
+ exports.createFormField = createFormField;
117
+ //# sourceMappingURL=create-form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form-field.js","sources":["../../../src/form-field/create-form-field.ts"],"sourcesContent":["import { TWithInit } from '@blgc/types/features';\nimport { bitwiseFlag, deepCopy } from '@blgc/utils';\nimport { createState } from 'feature-state';\nimport { createValidator } from 'validation-adapter';\nimport {\n\tFormFieldReValidateMode,\n\tFormFieldValidateMode,\n\ttype TFormField,\n\ttype TFormFieldStateConfig,\n\ttype TFormFieldStateFeature,\n\ttype TFormFieldValidator\n} from '../types';\nimport { createFormFieldValidationContext } from './create-form-field-validation-context';\nimport { createStatus } from './create-status';\n\nexport function createFormField<GValue>(\n\tinitialValue: GValue | undefined,\n\tconfig: TCreateFormFieldConfig<GValue>\n): TFormField<GValue> {\n\tconst {\n\t\tkey,\n\t\tvalidator = createValidator([]),\n\t\teditable = true,\n\t\treValidateMode = bitwiseFlag(FormFieldReValidateMode.OnBlur),\n\t\tvalidateMode = bitwiseFlag(FormFieldValidateMode.OnSubmit),\n\t\tcollectErrorMode = 'firstError',\n\t\tnotifyOnStatusChange = true\n\t} = config;\n\tconst baseState = createState(initialValue);\n\n\tconst formFieldFeature: TFormFieldStateFeature<GValue>['api'] = {\n\t\t_config: {\n\t\t\teditable,\n\t\t\tvalidateMode,\n\t\t\treValidateMode,\n\t\t\tcollectErrorMode\n\t\t},\n\t\t_intialValue: deepCopy(baseState._v),\n\t\t_validator: validator,\n\t\tkey,\n\t\tisTouched: createState(false),\n\t\tisSubmitted: createState(false),\n\t\tisSubmitting: createState(false),\n\t\tisValidating: createState(false),\n\t\tstatus: createStatus({ type: 'UNVALIDATED' }),\n\t\tasync validate(this: TFormField<GValue>) {\n\t\t\tconst validationContext = createFormFieldValidationContext(this);\n\n\t\t\tthis.isValidating.set(true);\n\t\t\tawait this._validator.validate(validationContext);\n\t\t\tthis.isValidating.set(false);\n\n\t\t\t// If no error was registered we assume its valid\n\t\t\tif (this.status._nextValue == null) {\n\t\t\t\tthis.status.set({ type: 'VALID' });\n\t\t\t} else {\n\t\t\t\tthis.status.set(this.status._nextValue);\n\t\t\t}\n\n\t\t\tthis.status._nextValue = undefined;\n\n\t\t\treturn this.status.get().type === 'VALID';\n\t\t},\n\t\tisValid(this: TFormField<GValue>) {\n\t\t\treturn this.status.get().type === 'VALID';\n\t\t},\n\t\tblur(this: TFormField<GValue>) {\n\t\t\tif (\n\t\t\t\t(this.isSubmitted.get() &&\n\t\t\t\t\tthis._config.reValidateMode.has(FormFieldReValidateMode.OnBlur)) ||\n\t\t\t\t(!this.isSubmitted.get() &&\n\t\t\t\t\t(this._config.validateMode.has(FormFieldValidateMode.OnBlur) ||\n\t\t\t\t\t\t(this._config.validateMode.has(FormFieldValidateMode.OnTouched) &&\n\t\t\t\t\t\t\t!this.isTouched.get())))\n\t\t\t) {\n\t\t\t\tvoid this.validate();\n\t\t\t}\n\n\t\t\tthis.isTouched.set(true);\n\t\t},\n\t\treset(this: TFormField<GValue>) {\n\t\t\tthis.set(this._intialValue, { listenerContext: { source: 'form-field_reset' } });\n\t\t\tthis.isTouched.set(false);\n\t\t\tthis.isSubmitted.set(false);\n\t\t\tthis.isSubmitting.set(false);\n\t\t\tthis.status.set({ type: 'UNVALIDATED' });\n\t\t}\n\t};\n\n\t// Extend the base state with the form field feature\n\tconst formField = Object.assign(baseState, formFieldFeature, {\n\t\tinit(this: TFormField<GValue>, { notifyOnStatusChange }: TInitFormFieldConfig) {\n\t\t\t// Notify form field listeners if status has changed\n\t\t\tif (notifyOnStatusChange) {\n\t\t\t\tthis.status.listen(\n\t\t\t\t\t(data) => {\n\t\t\t\t\t\tbaseState._notify({\n\t\t\t\t\t\t\tlistenerContext: { source: 'form-field_status-change', status: data.value }\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{ key: 'form-field_status-change' }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Validate on change\n\t\t\tthis.listen(\n\t\t\t\tasync () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(this.isSubmitted.get() &&\n\t\t\t\t\t\t\tthis._config.reValidateMode.has(FormFieldReValidateMode.OnChange)) ||\n\t\t\t\t\t\t(!this.isSubmitted.get() &&\n\t\t\t\t\t\t\tthis._config.validateMode.has(FormFieldValidateMode.OnChange)) ||\n\t\t\t\t\t\t(this._config.validateMode.has(FormFieldValidateMode.OnTouched) && this.isTouched.get())\n\t\t\t\t\t) {\n\t\t\t\t\t\tawait this.validate();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ key: 'form-field_validate' }\n\t\t\t);\n\n\t\t\t// @ts-expect-error -- Remove init method after initialization\n\t\t\tdelete this.init;\n\t\t\treturn this;\n\t\t}\n\t}) as TWithInit<TFormField<GValue>, TInitFormFieldConfig>;\n\tformField._features.push('form-field');\n\n\treturn formField.init({ notifyOnStatusChange });\n}\n\nexport interface TCreateFormFieldConfig<GValue> extends Partial<TFormFieldStateConfig> {\n\tkey: string;\n\tvalidator?: TFormFieldValidator<GValue>;\n\tnotifyOnStatusChange?: boolean;\n}\n\ninterface TInitFormFieldConfig {\n\tnotifyOnStatusChange?: boolean;\n}\n"],"names":["createValidator","bitwiseFlag","FormFieldReValidateMode","FormFieldValidateMode","createState","deepCopy","createStatus","createFormFieldValidationContext","formField"],"mappings":"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"}
@@ -1 +1,24 @@
1
- "use strict";var u=require("feature-state");function i(s){const a=u.createState(s),t=Object.assign(a,{_nextValue:void 0,registerNextError(e){var r;((r=this._nextValue)==null?void 0:r.type)==="INVALID"?this._nextValue.errors.push(e):this._nextValue={type:"INVALID",errors:[e]}}});return t._features.push("form-field-status"),t}exports.createStatus=i;
1
+ 'use strict';
2
+
3
+ var featureState = require('feature-state');
4
+
5
+ function createStatus(initialValue) {
6
+ const baseState = featureState.createState(initialValue);
7
+ const formFieldStatusFeature = {
8
+ _nextValue: void 0,
9
+ registerNextError(error) {
10
+ var _a;
11
+ if (((_a = this._nextValue) == null ? void 0 : _a.type) === "INVALID") {
12
+ this._nextValue.errors.push(error);
13
+ } else {
14
+ this._nextValue = { type: "INVALID", errors: [error] };
15
+ }
16
+ }
17
+ };
18
+ const formFieldStatus = Object.assign(baseState, formFieldStatusFeature);
19
+ formFieldStatus._features.push("form-field-status");
20
+ return formFieldStatus;
21
+ }
22
+
23
+ exports.createStatus = createStatus;
24
+ //# sourceMappingURL=create-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-status.js","sources":["../../../src/form-field/create-status.ts"],"sourcesContent":["import { createState } from 'feature-state';\nimport {\n\tTFormFielStatusStateFeature,\n\ttype TFormFieldStatus,\n\ttype TFormFieldStatusValue\n} from '../types';\n\nexport function createStatus(initialValue: TFormFieldStatusValue): TFormFieldStatus {\n\tconst baseState = createState(initialValue);\n\n\tconst formFieldStatusFeature: TFormFielStatusStateFeature['api'] = {\n\t\t_nextValue: undefined,\n\t\tregisterNextError(this: TFormFieldStatus, error) {\n\t\t\tif (this._nextValue?.type === 'INVALID') {\n\t\t\t\tthis._nextValue.errors.push(error);\n\t\t\t} else {\n\t\t\t\tthis._nextValue = { type: 'INVALID', errors: [error] };\n\t\t\t}\n\t\t}\n\t};\n\n\t// Extend the base state with the form field status feature\n\tconst formFieldStatus = Object.assign(baseState, formFieldStatusFeature) as TFormFieldStatus;\n\tformFieldStatus._features.push('form-field-status');\n\n\treturn formFieldStatus;\n}\n"],"names":["createState"],"mappings":";;;;AAEO,SAAS,YAAY,CAAC,YAAY,EAAE;AAC3C,EAAE,MAAM,SAAS,GAAGA,wBAAW,CAAC,YAAY,CAAC;AAC7C,EAAE,MAAM,sBAAsB,GAAG;AACjC,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,MAAM,IAAI,EAAE;AACZ,MAAM,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,MAAM,SAAS,EAAE;AAC7E,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AAC9D;AACA;AACA,GAAG;AACH,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;AAC1E,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACrD,EAAE,OAAO,eAAe;AACxB;;;;"}
@@ -1 +1,8 @@
1
- "use strict";function r(e){return typeof e=="object"&&e!=null&&"_features"in e&&Array.isArray(e._features)&&e._features.includes("form-field-status")}exports.isFormFieldStatus=r;
1
+ 'use strict';
2
+
3
+ function isFormFieldStatus(value) {
4
+ return typeof value === "object" && value != null && "_features" in value && Array.isArray(value._features) && value._features.includes("form-field-status");
5
+ }
6
+
7
+ exports.isFormFieldStatus = isFormFieldStatus;
8
+ //# sourceMappingURL=is-form-field-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-form-field-status.js","sources":["../../../src/form-field/is-form-field-status.ts"],"sourcesContent":["import { TFormFieldStatus } from '../types';\n\nexport function isFormFieldStatus(value: unknown): value is TFormFieldStatus {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue != null &&\n\t\t'_features' in value &&\n\t\tArray.isArray(value._features) &&\n\t\tvalue._features.includes('form-field-status')\n\t);\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AAC9J;;;;"}
@@ -1 +1,8 @@
1
- "use strict";function i(e){return typeof e=="object"&&e!=null&&"_features"in e&&Array.isArray(e._features)&&e._features.includes("form-field")}exports.isFormField=i;
1
+ 'use strict';
2
+
3
+ function isFormField(value) {
4
+ return typeof value === "object" && value != null && "_features" in value && Array.isArray(value._features) && value._features.includes("form-field");
5
+ }
6
+
7
+ exports.isFormField = isFormField;
8
+ //# sourceMappingURL=is-form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-form-field.js","sources":["../../../src/form-field/is-form-field.ts"],"sourcesContent":["import { type TFormField } from '../types';\n\nexport function isFormField<GValue = unknown>(value: unknown): value is TFormField<GValue> {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue != null &&\n\t\t'_features' in value &&\n\t\tArray.isArray(value._features) &&\n\t\tvalue._features.includes('form-field')\n\t);\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AACvJ;;;;"}
@@ -1 +1,24 @@
1
- "use strict";var l=Object.defineProperty,a=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,o=(e,r,t)=>r in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,u=(e,r)=>{for(var t in r||(r={}))i.call(r,t)&&o(e,t,r[t]);if(a)for(var t of a(r))n.call(r,t)&&o(e,t,r[t]);return e};function b(e,r){return u({validator:e},r)}exports.fromValidator=b;
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ function fromValidator(validator, config) {
20
+ return __spreadValues({ validator }, config);
21
+ }
22
+
23
+ exports.fromValidator = fromValidator;
24
+ //# sourceMappingURL=from-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-validator.js","sources":["../../../src/helper/from-validator.ts"],"sourcesContent":["import { type TCreateFormConfigFormField } from '../create-form';\nimport { type TFormFieldValidator } from '../types';\n\n// Helper function to make type inference work\n// https://github.com/microsoft/TypeScript/issues/26242\nexport function fromValidator<GValue>(\n\tvalidator: TFormFieldValidator<GValue>,\n\tconfig: Omit<TCreateFormConfigFormField<GValue>, 'validator'>\n): TCreateFormConfigFormField<GValue> {\n\treturn { validator, ...config };\n}\n"],"names":[],"mappings":";;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB;AACtD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,OAAO,CAAC;AACV,CAAC;AACM,SAAS,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;AACjD,EAAE,OAAO,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAC9C;;;;"}
@@ -1 +1,14 @@
1
- "use strict";function l(n){var i,r;for(const e in n.fields)if(((i=n.fields[e])==null?void 0:i.get())!==((r=n.fields[e])==null?void 0:r._intialValue))return!0;return!1}exports.hasFormChanged=l;
1
+ 'use strict';
2
+
3
+ function hasFormChanged(form) {
4
+ var _a, _b;
5
+ for (const key in form.fields) {
6
+ if (((_a = form.fields[key]) == null ? void 0 : _a.get()) !== ((_b = form.fields[key]) == null ? void 0 : _b._intialValue)) {
7
+ return true;
8
+ }
9
+ }
10
+ return false;
11
+ }
12
+
13
+ exports.hasFormChanged = hasFormChanged;
14
+ //# sourceMappingURL=has-form-changed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-form-changed.js","sources":["../../../src/helper/has-form-changed.ts"],"sourcesContent":["import { type TForm } from '../types';\n\nexport function hasFormChanged(form: TForm<any, any>): boolean {\n\tfor (const key in form.fields) {\n\t\tif (form.fields[key]?.get() !== form.fields[key]?._intialValue) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n"],"names":[],"mappings":";;AACO,SAAS,cAAc,CAAC,IAAI,EAAE;AACrC,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE;AAChI,MAAM,OAAO,IAAI;AACjB;AACA;AACA,EAAE,OAAO,KAAK;AACd;;;;"}
@@ -1 +1,13 @@
1
- "use strict";function s(e){e.isSubmitted.set(!1),e.isSubmitting.set(!1);for(const t of Object.values(e.fields))t.isSubmitted.set(!1),t.isSubmitting.set(!1)}exports.resetFormSubmitted=s;
1
+ 'use strict';
2
+
3
+ function resetFormSubmitted(form) {
4
+ form.isSubmitted.set(false);
5
+ form.isSubmitting.set(false);
6
+ for (const formField of Object.values(form.fields)) {
7
+ formField.isSubmitted.set(false);
8
+ formField.isSubmitting.set(false);
9
+ }
10
+ }
11
+
12
+ exports.resetFormSubmitted = resetFormSubmitted;
13
+ //# sourceMappingURL=reset-form-submitted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-form-submitted.js","sources":["../../../src/helper/reset-form-submitted.ts"],"sourcesContent":["import { type TForm } from '../types';\n\nexport function resetFormSubmitted(form: TForm<any, any>): void {\n\tform.isSubmitted.set(false);\n\tform.isSubmitting.set(false);\n\tfor (const formField of Object.values(form.fields)) {\n\t\tformField.isSubmitted.set(false);\n\t\tformField.isSubmitting.set(false);\n\t}\n}\n"],"names":[],"mappings":";;AACO,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,EAAE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtD,IAAI,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,IAAI,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC;AACA;;;;"}
package/dist/cjs/index.js CHANGED
@@ -1 +1,36 @@
1
- "use strict";var e=require("@blgc/utils"),t=require("./create-form.js"),i=require("./form-field/create-form-field.js"),a=require("./form-field/create-status.js"),F=require("./form-field/is-form-field.js"),o=require("./form-field/is-form-field-status.js"),m=require("./helper/from-validator.js"),d=require("./helper/has-form-changed.js"),u=require("./helper/reset-form-submitted.js"),s=require("./is-form-with-features.js"),r=require("./types/form-field.js");Object.defineProperty(exports,"BitwiseFlag",{enumerable:!0,get:function(){return e.BitwiseFlag}}),Object.defineProperty(exports,"bitwiseFlag",{enumerable:!0,get:function(){return e.bitwiseFlag}}),exports.createForm=t.createForm,exports.createFormField=i.createFormField,exports.createStatus=a.createStatus,exports.isFormField=F.isFormField,exports.isFormFieldStatus=o.isFormFieldStatus,exports.fromValidator=m.fromValidator,exports.hasFormChanged=d.hasFormChanged,exports.resetFormSubmitted=u.resetFormSubmitted,exports.isFormWithFeatures=s.isFormWithFeatures,exports.FormFieldReValidateMode=r.FormFieldReValidateMode,exports.FormFieldValidateMode=r.FormFieldValidateMode;
1
+ 'use strict';
2
+
3
+ var utils = require('@blgc/utils');
4
+ var createForm = require('./create-form.js');
5
+ var createFormField = require('./form-field/create-form-field.js');
6
+ var createStatus = require('./form-field/create-status.js');
7
+ var isFormField = require('./form-field/is-form-field.js');
8
+ var isFormFieldStatus = require('./form-field/is-form-field-status.js');
9
+ var fromValidator = require('./helper/from-validator.js');
10
+ var hasFormChanged = require('./helper/has-form-changed.js');
11
+ var resetFormSubmitted = require('./helper/reset-form-submitted.js');
12
+ var isFormWithFeatures = require('./is-form-with-features.js');
13
+ var formField = require('./types/form-field.js');
14
+
15
+
16
+
17
+ Object.defineProperty(exports, "BitwiseFlag", {
18
+ enumerable: true,
19
+ get: function () { return utils.BitwiseFlag; }
20
+ });
21
+ Object.defineProperty(exports, "bitwiseFlag", {
22
+ enumerable: true,
23
+ get: function () { return utils.bitwiseFlag; }
24
+ });
25
+ exports.createForm = createForm.createForm;
26
+ exports.createFormField = createFormField.createFormField;
27
+ exports.createStatus = createStatus.createStatus;
28
+ exports.isFormField = isFormField.isFormField;
29
+ exports.isFormFieldStatus = isFormFieldStatus.isFormFieldStatus;
30
+ exports.fromValidator = fromValidator.fromValidator;
31
+ exports.hasFormChanged = hasFormChanged.hasFormChanged;
32
+ exports.resetFormSubmitted = resetFormSubmitted.resetFormSubmitted;
33
+ exports.isFormWithFeatures = isFormWithFeatures.isFormWithFeatures;
34
+ exports.FormFieldReValidateMode = formField.FormFieldReValidateMode;
35
+ exports.FormFieldValidateMode = formField.FormFieldValidateMode;
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}