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.
- package/dist/cjs/create-form.js +1 -227
- package/dist/cjs/form-field/create-form-field-validation-context.js +1 -28
- package/dist/cjs/form-field/create-form-field.js +1 -117
- package/dist/cjs/form-field/create-status.js +1 -24
- package/dist/cjs/form-field/is-form-field-status.js +1 -8
- package/dist/cjs/form-field/is-form-field.js +1 -8
- package/dist/cjs/helper/from-validator.js +1 -24
- package/dist/cjs/helper/has-form-changed.js +1 -14
- package/dist/cjs/helper/reset-form-submitted.js +1 -13
- package/dist/cjs/index.js +1 -36
- package/dist/cjs/is-form-with-features.js +1 -8
- package/dist/cjs/types/form-field.js +1 -19
- package/dist/esm/create-form.js +1 -225
- package/dist/esm/form-field/create-form-field-validation-context.js +1 -26
- package/dist/esm/form-field/create-form-field.js +1 -115
- package/dist/esm/form-field/create-status.js +1 -22
- package/dist/esm/form-field/is-form-field-status.js +1 -6
- package/dist/esm/form-field/is-form-field.js +1 -6
- package/dist/esm/helper/from-validator.js +1 -22
- package/dist/esm/helper/has-form-changed.js +1 -12
- package/dist/esm/helper/reset-form-submitted.js +1 -11
- package/dist/esm/index.js +1 -12
- package/dist/esm/is-form-with-features.js +1 -6
- package/dist/esm/types/form-field.js +1 -16
- package/dist/types/create-form.d.ts +0 -1
- package/dist/types/form-field/create-form-field-validation-context.d.ts +0 -1
- package/dist/types/form-field/create-form-field.d.ts +0 -1
- package/dist/types/form-field/create-status.d.ts +0 -1
- package/dist/types/form-field/index.d.ts +0 -1
- package/dist/types/form-field/is-form-field-status.d.ts +0 -1
- package/dist/types/form-field/is-form-field.d.ts +0 -1
- package/dist/types/helper/from-validator.d.ts +0 -1
- package/dist/types/helper/has-form-changed.d.ts +0 -1
- package/dist/types/helper/index.d.ts +0 -1
- package/dist/types/helper/reset-form-submitted.d.ts +0 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/is-form-with-features.d.ts +0 -1
- package/dist/types/types/features.d.ts +0 -1
- package/dist/types/types/form-field.d.ts +0 -1
- package/dist/types/types/form.d.ts +0 -1
- package/dist/types/types/index.d.ts +0 -1
- package/package.json +6 -6
- package/dist/cjs/create-form.js.map +0 -1
- package/dist/cjs/form-field/create-form-field-validation-context.js.map +0 -1
- package/dist/cjs/form-field/create-form-field.js.map +0 -1
- package/dist/cjs/form-field/create-status.js.map +0 -1
- package/dist/cjs/form-field/is-form-field-status.js.map +0 -1
- package/dist/cjs/form-field/is-form-field.js.map +0 -1
- package/dist/cjs/helper/from-validator.js.map +0 -1
- package/dist/cjs/helper/has-form-changed.js.map +0 -1
- package/dist/cjs/helper/reset-form-submitted.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/is-form-with-features.js.map +0 -1
- package/dist/cjs/types/form-field.js.map +0 -1
- package/dist/esm/create-form.js.map +0 -1
- package/dist/esm/form-field/create-form-field-validation-context.js.map +0 -1
- package/dist/esm/form-field/create-form-field.js.map +0 -1
- package/dist/esm/form-field/create-status.js.map +0 -1
- package/dist/esm/form-field/is-form-field-status.js.map +0 -1
- package/dist/esm/form-field/is-form-field.js.map +0 -1
- package/dist/esm/helper/from-validator.js.map +0 -1
- package/dist/esm/helper/has-form-changed.js.map +0 -1
- package/dist/esm/helper/reset-form-submitted.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/is-form-with-features.js.map +0 -1
- package/dist/esm/types/form-field.js.map +0 -1
- package/dist/types/create-form.d.ts.map +0 -1
- package/dist/types/form-field/create-form-field-validation-context.d.ts.map +0 -1
- package/dist/types/form-field/create-form-field.d.ts.map +0 -1
- package/dist/types/form-field/create-status.d.ts.map +0 -1
- package/dist/types/form-field/index.d.ts.map +0 -1
- package/dist/types/form-field/is-form-field-status.d.ts.map +0 -1
- package/dist/types/form-field/is-form-field.d.ts.map +0 -1
- package/dist/types/helper/from-validator.d.ts.map +0 -1
- package/dist/types/helper/has-form-changed.d.ts.map +0 -1
- package/dist/types/helper/index.d.ts.map +0 -1
- package/dist/types/helper/reset-form-submitted.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/is-form-with-features.d.ts.map +0 -1
- package/dist/types/types/features.d.ts.map +0 -1
- package/dist/types/types/form-field.d.ts.map +0 -1
- package/dist/types/types/form.d.ts.map +0 -1
- package/dist/types/types/index.d.ts.map +0 -1
package/dist/cjs/create-form.js
CHANGED
|
@@ -1,227 +1 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|