feature-form 0.0.45 → 0.0.46

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 +1 -227
  2. package/dist/cjs/form-field/create-form-field-validation-context.js +1 -28
  3. package/dist/cjs/form-field/create-form-field.js +1 -117
  4. package/dist/cjs/form-field/create-status.js +1 -24
  5. package/dist/cjs/form-field/is-form-field-status.js +1 -8
  6. package/dist/cjs/form-field/is-form-field.js +1 -8
  7. package/dist/cjs/helper/from-validator.js +1 -24
  8. package/dist/cjs/helper/has-form-changed.js +1 -14
  9. package/dist/cjs/helper/reset-form-submitted.js +1 -13
  10. package/dist/cjs/index.js +1 -36
  11. package/dist/cjs/is-form-with-features.js +1 -8
  12. package/dist/cjs/types/form-field.js +1 -19
  13. package/dist/esm/create-form.js +1 -225
  14. package/dist/esm/form-field/create-form-field-validation-context.js +1 -26
  15. package/dist/esm/form-field/create-form-field.js +1 -115
  16. package/dist/esm/form-field/create-status.js +1 -22
  17. package/dist/esm/form-field/is-form-field-status.js +1 -6
  18. package/dist/esm/form-field/is-form-field.js +1 -6
  19. package/dist/esm/helper/from-validator.js +1 -22
  20. package/dist/esm/helper/has-form-changed.js +1 -12
  21. package/dist/esm/helper/reset-form-submitted.js +1 -11
  22. package/dist/esm/index.js +1 -12
  23. package/dist/esm/is-form-with-features.js +1 -6
  24. package/dist/esm/types/form-field.js +1 -16
  25. package/dist/types/create-form.d.ts +0 -1
  26. package/dist/types/form-field/create-form-field-validation-context.d.ts +0 -1
  27. package/dist/types/form-field/create-form-field.d.ts +0 -1
  28. package/dist/types/form-field/create-status.d.ts +0 -1
  29. package/dist/types/form-field/index.d.ts +0 -1
  30. package/dist/types/form-field/is-form-field-status.d.ts +0 -1
  31. package/dist/types/form-field/is-form-field.d.ts +0 -1
  32. package/dist/types/helper/from-validator.d.ts +0 -1
  33. package/dist/types/helper/has-form-changed.d.ts +0 -1
  34. package/dist/types/helper/index.d.ts +0 -1
  35. package/dist/types/helper/reset-form-submitted.d.ts +0 -1
  36. package/dist/types/index.d.ts +0 -1
  37. package/dist/types/is-form-with-features.d.ts +0 -1
  38. package/dist/types/types/features.d.ts +0 -1
  39. package/dist/types/types/form-field.d.ts +0 -1
  40. package/dist/types/types/form.d.ts +0 -1
  41. package/dist/types/types/index.d.ts +0 -1
  42. package/package.json +6 -6
  43. package/dist/cjs/create-form.js.map +0 -1
  44. package/dist/cjs/form-field/create-form-field-validation-context.js.map +0 -1
  45. package/dist/cjs/form-field/create-form-field.js.map +0 -1
  46. package/dist/cjs/form-field/create-status.js.map +0 -1
  47. package/dist/cjs/form-field/is-form-field-status.js.map +0 -1
  48. package/dist/cjs/form-field/is-form-field.js.map +0 -1
  49. package/dist/cjs/helper/from-validator.js.map +0 -1
  50. package/dist/cjs/helper/has-form-changed.js.map +0 -1
  51. package/dist/cjs/helper/reset-form-submitted.js.map +0 -1
  52. package/dist/cjs/index.js.map +0 -1
  53. package/dist/cjs/is-form-with-features.js.map +0 -1
  54. package/dist/cjs/types/form-field.js.map +0 -1
  55. package/dist/esm/create-form.js.map +0 -1
  56. package/dist/esm/form-field/create-form-field-validation-context.js.map +0 -1
  57. package/dist/esm/form-field/create-form-field.js.map +0 -1
  58. package/dist/esm/form-field/create-status.js.map +0 -1
  59. package/dist/esm/form-field/is-form-field-status.js.map +0 -1
  60. package/dist/esm/form-field/is-form-field.js.map +0 -1
  61. package/dist/esm/helper/from-validator.js.map +0 -1
  62. package/dist/esm/helper/has-form-changed.js.map +0 -1
  63. package/dist/esm/helper/reset-form-submitted.js.map +0 -1
  64. package/dist/esm/index.js.map +0 -1
  65. package/dist/esm/is-form-with-features.js.map +0 -1
  66. package/dist/esm/types/form-field.js.map +0 -1
  67. package/dist/types/create-form.d.ts.map +0 -1
  68. package/dist/types/form-field/create-form-field-validation-context.d.ts.map +0 -1
  69. package/dist/types/form-field/create-form-field.d.ts.map +0 -1
  70. package/dist/types/form-field/create-status.d.ts.map +0 -1
  71. package/dist/types/form-field/index.d.ts.map +0 -1
  72. package/dist/types/form-field/is-form-field-status.d.ts.map +0 -1
  73. package/dist/types/form-field/is-form-field.d.ts.map +0 -1
  74. package/dist/types/helper/from-validator.d.ts.map +0 -1
  75. package/dist/types/helper/has-form-changed.d.ts.map +0 -1
  76. package/dist/types/helper/index.d.ts.map +0 -1
  77. package/dist/types/helper/reset-form-submitted.d.ts.map +0 -1
  78. package/dist/types/index.d.ts.map +0 -1
  79. package/dist/types/is-form-with-features.d.ts.map +0 -1
  80. package/dist/types/types/features.d.ts.map +0 -1
  81. package/dist/types/types/form-field.d.ts.map +0 -1
  82. package/dist/types/types/form.d.ts.map +0 -1
  83. package/dist/types/types/index.d.ts.map +0 -1
@@ -1,227 +1 @@
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
1
+ "use strict";var g=require("@blgc/utils"),S=require("feature-state"),E=require("./form-field/create-form-field.js"),P=require("./form-field/is-form-field.js"),y=require("./types/form-field.js"),k=Object.defineProperty,j=Object.getOwnPropertySymbols,C=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable,M=(r,l,i)=>l in r?k(r,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[l]=i,w=(r,l)=>{for(var i in l||(l={}))C.call(l,i)&&M(r,i,l[i]);if(j)for(var i of j(l))D.call(l,i)&&M(r,i,l[i]);return r},p=(r,l,i)=>new Promise((V,h)=>{var O=o=>{try{u(i.next(o))}catch(e){h(e)}},v=o=>{try{u(i.throw(o))}catch(e){h(e)}},u=o=>o.done?V(o.value):Promise.resolve(o.value).then(O,v);u((i=i.apply(r,l)).next())});function I(r){const{fields:l,collectErrorMode:i="firstError",disabled:V=!1,validateMode:h=g.bitwiseFlag(y.FormFieldValidateMode.OnSubmit),reValidateMode:O=g.bitwiseFlag(y.FormFieldReValidateMode.OnBlur),onValidSubmit:v,onInvalidSubmit:u,notifyOnStatusChange:o=!0}=r;return g.withNew({_features:[],_config:{disabled:V},_validSubmitCallbacks:v!=null?[v]:[],_invalidSubmitCallbacks:u!=null?[u]:[],fields:Object.fromEntries(Object.entries(l).map(([e,t])=>{var s,b,m,d;return[e,P.isFormField(t)?t:E.createFormField(t.defaultValue,{key:e,validator:t.validator,collectErrorMode:(s=t.collectErrorMode)!=null?s:i,validateMode:(b=t.validateMode)!=null?b:h,reValidateMode:(m=t.reValidateMode)!=null?m:O,editable:(d=t.editable)!=null?d:!0,notifyOnStatusChange:o})]})),isValid:S.createState(!1),isValidating:S.createState(!1),isSubmitted:S.createState(!1),isSubmitting:S.createState(!1),_new(){for(const e of Object.values(this.fields))e.status.listen(()=>p(this,null,function*(){yield this._revalidate(!0)}),{key:"form_revalidate"})},_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(s=>s.validate())),this.isValidating.set(!1)),this.isValid.set(t.every(s=>s.isValid())),this.isValid.get()})},submit(){return p(this,arguments,function*(e={}){const{context:t,assignToInitial:s=!1,onInvalidSubmit:b,onValidSubmit:m,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(y.FormFieldReValidateMode.OnSubmit)||!a.isSubmitted.get()&&a._config.validateMode.has(y.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 m=="function"&&f.push(m(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 F=null;d!=null?F=(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)&&s&&(n._intialValue=g.deepCopy(c[a])),n.isSubmitted.set(!0),n.isSubmitting.set(!1);return this.isSubmitted.set(!0),this.isSubmitting.set(!1),d==null||d(this,F!=null?F:{}),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,s]of Object.entries(this.fields))e[t]=s.get();return e},getErrors(){const e={};for(const[t,s]of Object.entries(this.fields))switch(s.status._v.type){case"INVALID":e[t]=s.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)}})}exports.createForm=I;
@@ -1,28 +1 @@
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
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,117 +1 @@
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
1
+ "use strict";var d=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=(o,u,a)=>new Promise((n,l)=>{var h=e=>{try{s(a.next(e))}catch(i){l(i)}},c=e=>{try{s(a.throw(e))}catch(i){l(i)}},s=e=>e.done?n(e.value):Promise.resolve(e.value).then(h,c);s((a=a.apply(o,u)).next())});function S(o,u){const{key:a,validator:n=F.createValidator([]),editable:l=!0,reValidateMode:h=d.bitwiseFlag(t.FormFieldReValidateMode.OnBlur),validateMode:c=d.bitwiseFlag(t.FormFieldValidateMode.OnSubmit),collectErrorMode:s="firstError",notifyOnStatusChange:e=!0}=u,i=r.createState(o),V={_config:{editable:l,validateMode:c,reValidateMode:h,collectErrorMode:s},_intialValue:d.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 f=_.createFormFieldValidationContext(this);return this.isValidating.set(!0),yield this._validator.validate(f),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);return g._features.push("form-field"),d.withNew(Object.assign(g,{_new(f){f&&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"})}}),e)}exports.createFormField=S;
@@ -1,24 +1 @@
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
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,8 +1 @@
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
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,8 +1 @@
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
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,24 +1 @@
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
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,14 +1 @@
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
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,13 +1 @@
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
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;
package/dist/cjs/index.js CHANGED
@@ -1,36 +1 @@
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
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,8 +1 @@
1
- 'use strict';
2
-
3
- function isFormWithFeatures(value, features) {
4
- return typeof value === "object" && value != null && "_features" in value && Array.isArray(value._features) && features.every((feature) => value._features.includes(feature));
5
- }
6
-
7
- exports.isFormWithFeatures = isFormWithFeatures;
8
- //# sourceMappingURL=is-form-with-features.js.map
1
+ "use strict";function s(r,e){return typeof r=="object"&&r!=null&&"_features"in r&&Array.isArray(r._features)&&e.every(t=>r._features.includes(t))}exports.isFormWithFeatures=s;
@@ -1,19 +1 @@
1
- 'use strict';
2
-
3
- var FormFieldValidateMode = /* @__PURE__ */ ((FormFieldValidateMode2) => {
4
- FormFieldValidateMode2[FormFieldValidateMode2["OnBlur"] = 1] = "OnBlur";
5
- FormFieldValidateMode2[FormFieldValidateMode2["OnChange"] = 2] = "OnChange";
6
- FormFieldValidateMode2[FormFieldValidateMode2["OnSubmit"] = 4] = "OnSubmit";
7
- FormFieldValidateMode2[FormFieldValidateMode2["OnTouched"] = 8] = "OnTouched";
8
- return FormFieldValidateMode2;
9
- })(FormFieldValidateMode || {});
10
- var FormFieldReValidateMode = /* @__PURE__ */ ((FormFieldReValidateMode2) => {
11
- FormFieldReValidateMode2[FormFieldReValidateMode2["OnBlur"] = 1] = "OnBlur";
12
- FormFieldReValidateMode2[FormFieldReValidateMode2["OnChange"] = 2] = "OnChange";
13
- FormFieldReValidateMode2[FormFieldReValidateMode2["OnSubmit"] = 4] = "OnSubmit";
14
- return FormFieldReValidateMode2;
15
- })(FormFieldReValidateMode || {});
16
-
17
- exports.FormFieldReValidateMode = FormFieldReValidateMode;
18
- exports.FormFieldValidateMode = FormFieldValidateMode;
19
- //# sourceMappingURL=form-field.js.map
1
+ "use strict";var e=(n=>(n[n.OnBlur=1]="OnBlur",n[n.OnChange=2]="OnChange",n[n.OnSubmit=4]="OnSubmit",n[n.OnTouched=8]="OnTouched",n))(e||{}),d=(n=>(n[n.OnBlur=1]="OnBlur",n[n.OnChange=2]="OnChange",n[n.OnSubmit=4]="OnSubmit",n))(d||{});exports.FormFieldReValidateMode=d,exports.FormFieldValidateMode=e;