@rolster/forms 2.9.0 → 2.11.0
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/helpers.js +8 -0
- package/dist/cjs/helpers.js.map +1 -1
- package/dist/cjs/index.js +120 -120
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/helpers.js +7 -1
- package/dist/es/helpers.js.map +1 -1
- package/dist/es/index.js +120 -120
- package/dist/es/index.js.map +1 -1
- package/dist/esm/form-array/form-array-control.js +3 -3
- package/dist/esm/form-array/form-array-control.js.map +1 -1
- package/dist/esm/form-array/form-array-group.js +4 -4
- package/dist/esm/form-array/form-array-group.js.map +1 -1
- package/dist/esm/form-array/form-array-list.d.ts +1 -1
- package/dist/esm/form-array/form-array-list.js +8 -8
- package/dist/esm/form-array/form-array-list.js.map +1 -1
- package/dist/esm/form-array/form-array.d.ts +10 -10
- package/dist/esm/form-array/form-array.js +37 -37
- package/dist/esm/form-array/form-array.js.map +1 -1
- package/dist/esm/form-control.d.ts +11 -11
- package/dist/esm/form-control.js +44 -44
- package/dist/esm/form-control.js.map +1 -1
- package/dist/esm/form-group.d.ts +8 -8
- package/dist/esm/form-group.js +24 -24
- package/dist/esm/form-group.js.map +1 -1
- package/dist/esm/helpers.d.ts +3 -1
- package/dist/esm/helpers.js +6 -0
- package/dist/esm/helpers.js.map +1 -1
- package/dist/esm/types.d.ts +12 -12
- package/package.json +4 -7
package/dist/es/index.js
CHANGED
|
@@ -105,58 +105,58 @@ function someErrors(errors, keys) {
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
class FormControl {
|
|
108
|
-
constructor(
|
|
109
|
-
this.
|
|
110
|
-
this.
|
|
111
|
-
this.
|
|
112
|
-
this.
|
|
113
|
-
this.
|
|
114
|
-
this.
|
|
115
|
-
const
|
|
116
|
-
this.observable = observable(value);
|
|
117
|
-
this.
|
|
118
|
-
this.validators = validators;
|
|
119
|
-
this.
|
|
120
|
-
this.updateValueAndValidity(value, validators);
|
|
108
|
+
constructor(options, validators) {
|
|
109
|
+
this._focused = false;
|
|
110
|
+
this._touched = false;
|
|
111
|
+
this._dirty = false;
|
|
112
|
+
this._disabled = false;
|
|
113
|
+
this._valid = true;
|
|
114
|
+
this._errors = [];
|
|
115
|
+
const _options = createFormControlOptions(options, validators);
|
|
116
|
+
this.observable = observable(_options.value);
|
|
117
|
+
this.currentValue = _options.value;
|
|
118
|
+
this.validators = _options.validators;
|
|
119
|
+
this._value = _options.value;
|
|
120
|
+
this.updateValueAndValidity(_options.value, _options.validators);
|
|
121
121
|
}
|
|
122
122
|
get focused() {
|
|
123
|
-
return this.
|
|
123
|
+
return this._focused;
|
|
124
124
|
}
|
|
125
125
|
get unfocused() {
|
|
126
|
-
return !this.
|
|
126
|
+
return !this._focused;
|
|
127
127
|
}
|
|
128
128
|
get touched() {
|
|
129
|
-
return this.
|
|
129
|
+
return this._touched;
|
|
130
130
|
}
|
|
131
131
|
get untouched() {
|
|
132
|
-
return !this.
|
|
132
|
+
return !this._touched;
|
|
133
133
|
}
|
|
134
134
|
get dirty() {
|
|
135
|
-
return this.
|
|
135
|
+
return this._dirty;
|
|
136
136
|
}
|
|
137
137
|
get pristine() {
|
|
138
|
-
return !this.
|
|
138
|
+
return !this._dirty;
|
|
139
139
|
}
|
|
140
140
|
get disabled() {
|
|
141
|
-
return this.
|
|
141
|
+
return this._disabled;
|
|
142
142
|
}
|
|
143
143
|
get enabled() {
|
|
144
|
-
return !this.
|
|
144
|
+
return !this._disabled;
|
|
145
145
|
}
|
|
146
146
|
get valid() {
|
|
147
|
-
return this.
|
|
147
|
+
return this._valid;
|
|
148
148
|
}
|
|
149
149
|
get invalid() {
|
|
150
|
-
return !this.
|
|
150
|
+
return !this._valid;
|
|
151
151
|
}
|
|
152
152
|
get value() {
|
|
153
|
-
return this.
|
|
153
|
+
return this._value;
|
|
154
154
|
}
|
|
155
155
|
get errors() {
|
|
156
|
-
return this.
|
|
156
|
+
return this._errors;
|
|
157
157
|
}
|
|
158
158
|
get error() {
|
|
159
|
-
return this.
|
|
159
|
+
return this._error;
|
|
160
160
|
}
|
|
161
161
|
get wrong() {
|
|
162
162
|
return this.touched && this.invalid;
|
|
@@ -168,34 +168,34 @@ class FormControl {
|
|
|
168
168
|
return someErrors(this.errors, keys);
|
|
169
169
|
}
|
|
170
170
|
reset() {
|
|
171
|
-
this.setValue(this.
|
|
172
|
-
this.
|
|
173
|
-
this.
|
|
171
|
+
this.setValue(this.currentValue);
|
|
172
|
+
this._dirty = false;
|
|
173
|
+
this._touched = false;
|
|
174
174
|
}
|
|
175
175
|
focus() {
|
|
176
|
-
this.
|
|
176
|
+
this._focused = true;
|
|
177
177
|
}
|
|
178
178
|
blur() {
|
|
179
|
-
this.
|
|
180
|
-
this.
|
|
179
|
+
this._focused = false;
|
|
180
|
+
this._touched = true;
|
|
181
181
|
}
|
|
182
182
|
disable() {
|
|
183
|
-
this.
|
|
183
|
+
this._disabled = true;
|
|
184
184
|
}
|
|
185
185
|
enable() {
|
|
186
|
-
this.
|
|
186
|
+
this._disabled = false;
|
|
187
187
|
}
|
|
188
188
|
touch() {
|
|
189
|
-
this.
|
|
189
|
+
this._touched = true;
|
|
190
190
|
}
|
|
191
191
|
setInitialValue(value) {
|
|
192
|
-
this.
|
|
192
|
+
this.currentValue = value;
|
|
193
193
|
this.setValue(value);
|
|
194
194
|
}
|
|
195
195
|
setValue(value) {
|
|
196
196
|
if (this.enabled) {
|
|
197
|
-
this.
|
|
198
|
-
this.
|
|
197
|
+
this._value = value;
|
|
198
|
+
this._dirty = true;
|
|
199
199
|
this.updateValueAndValidity(value, this.validators);
|
|
200
200
|
this.observable.next(value);
|
|
201
201
|
}
|
|
@@ -210,14 +210,14 @@ class FormControl {
|
|
|
210
210
|
updateValueAndValidity(value, validators) {
|
|
211
211
|
if (validators) {
|
|
212
212
|
const errors = controlIsValid({ value, validators });
|
|
213
|
-
this.
|
|
214
|
-
this.
|
|
215
|
-
this.
|
|
213
|
+
this._error = errors[0];
|
|
214
|
+
this._errors = errors;
|
|
215
|
+
this._valid = errors.length === 0;
|
|
216
216
|
}
|
|
217
217
|
else {
|
|
218
|
-
this.
|
|
219
|
-
this.
|
|
220
|
-
this.
|
|
218
|
+
this._valid = true;
|
|
219
|
+
this._error = undefined;
|
|
220
|
+
this._errors = [];
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
}
|
|
@@ -226,9 +226,9 @@ function formControl(options, validators) {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
class FormArrayControl extends FormControl {
|
|
229
|
-
constructor(
|
|
230
|
-
const
|
|
231
|
-
super(value, validators);
|
|
229
|
+
constructor(options, validators) {
|
|
230
|
+
const _options = createFormControlOptions(options, validators);
|
|
231
|
+
super(_options.value, _options.validators);
|
|
232
232
|
this.uuid = v4();
|
|
233
233
|
}
|
|
234
234
|
}
|
|
@@ -237,15 +237,15 @@ function formArrayControl(options, validators) {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
class FormGroup {
|
|
240
|
-
constructor(
|
|
241
|
-
this.
|
|
242
|
-
this.
|
|
243
|
-
const
|
|
244
|
-
this.
|
|
245
|
-
this.validators = validators;
|
|
246
|
-
this.updateValueAndValidity(controls, validators);
|
|
240
|
+
constructor(options, validators) {
|
|
241
|
+
this._errors = [];
|
|
242
|
+
this._valid = true;
|
|
243
|
+
const _options = createFormGroupOptions(options, validators);
|
|
244
|
+
this._controls = _options.controls;
|
|
245
|
+
this.validators = _options.validators;
|
|
246
|
+
this.updateValueAndValidity(_options.controls, _options.validators);
|
|
247
247
|
this.observable = observable(this.value);
|
|
248
|
-
Object.values(controls).forEach((control) => {
|
|
248
|
+
Object.values(_options.controls).forEach((control) => {
|
|
249
249
|
control.subscribe(() => {
|
|
250
250
|
this.updateValueAndValidity(this.controls, this.validators);
|
|
251
251
|
this.observable.next(this.value);
|
|
@@ -253,34 +253,34 @@ class FormGroup {
|
|
|
253
253
|
});
|
|
254
254
|
}
|
|
255
255
|
get controls() {
|
|
256
|
-
return this.
|
|
256
|
+
return this._controls;
|
|
257
257
|
}
|
|
258
258
|
get touched() {
|
|
259
259
|
return controlsPartialChecked(this.controls, 'touched');
|
|
260
260
|
}
|
|
261
|
-
get
|
|
261
|
+
get toucheds() {
|
|
262
262
|
return controlsAllChecked(this.controls, 'touched');
|
|
263
263
|
}
|
|
264
264
|
get untouched() {
|
|
265
265
|
return !this.touched;
|
|
266
266
|
}
|
|
267
|
-
get
|
|
268
|
-
return !this.
|
|
267
|
+
get untoucheds() {
|
|
268
|
+
return !this.toucheds;
|
|
269
269
|
}
|
|
270
270
|
get dirty() {
|
|
271
271
|
return controlsPartialChecked(this.controls, 'dirty');
|
|
272
272
|
}
|
|
273
|
-
get
|
|
273
|
+
get dirties() {
|
|
274
274
|
return controlsAllChecked(this.controls, 'dirty');
|
|
275
275
|
}
|
|
276
276
|
get pristine() {
|
|
277
277
|
return !this.dirty;
|
|
278
278
|
}
|
|
279
|
-
get
|
|
280
|
-
return this.
|
|
279
|
+
get pristines() {
|
|
280
|
+
return this.dirties;
|
|
281
281
|
}
|
|
282
282
|
get valid() {
|
|
283
|
-
return this.
|
|
283
|
+
return this._valid && controlsAllChecked(this.controls, 'valid');
|
|
284
284
|
}
|
|
285
285
|
get invalid() {
|
|
286
286
|
return !this.valid;
|
|
@@ -289,10 +289,10 @@ class FormGroup {
|
|
|
289
289
|
return controlsToValue(this.controls);
|
|
290
290
|
}
|
|
291
291
|
get errors() {
|
|
292
|
-
return this.
|
|
292
|
+
return this._errors;
|
|
293
293
|
}
|
|
294
294
|
get error() {
|
|
295
|
-
return this.
|
|
295
|
+
return this._error;
|
|
296
296
|
}
|
|
297
297
|
get wrong() {
|
|
298
298
|
return this.touched && this.invalid;
|
|
@@ -312,14 +312,14 @@ class FormGroup {
|
|
|
312
312
|
updateValueAndValidity(controls, validators) {
|
|
313
313
|
if (validators) {
|
|
314
314
|
const errors = groupIsValid({ controls, validators });
|
|
315
|
-
this.
|
|
316
|
-
this.
|
|
317
|
-
this.
|
|
315
|
+
this._errors = errors;
|
|
316
|
+
this._error = errors[0];
|
|
317
|
+
this._valid = errors.length === 0;
|
|
318
318
|
}
|
|
319
319
|
else {
|
|
320
|
-
this.
|
|
321
|
-
this.
|
|
322
|
-
this.
|
|
320
|
+
this._errors = [];
|
|
321
|
+
this._error = undefined;
|
|
322
|
+
this._valid = true;
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
@@ -328,11 +328,11 @@ function formGroup(options, validators) {
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
class FormArrayGroup extends FormGroup {
|
|
331
|
-
constructor(
|
|
332
|
-
const
|
|
333
|
-
super(controls, validators);
|
|
331
|
+
constructor(options, validators) {
|
|
332
|
+
const _options = createFormGroupOptions(options, validators);
|
|
333
|
+
super(_options.controls, _options.validators);
|
|
334
334
|
this.uuid = v4();
|
|
335
|
-
this.resource = resource;
|
|
335
|
+
this.resource = _options.resource;
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
338
|
function formArrayGroup(options, validators) {
|
|
@@ -341,14 +341,14 @@ function formArrayGroup(options, validators) {
|
|
|
341
341
|
|
|
342
342
|
class FormArrayList extends FormControl {
|
|
343
343
|
constructor(valueToControls, value, validators) {
|
|
344
|
-
const
|
|
345
|
-
super(
|
|
344
|
+
const _value = value || [];
|
|
345
|
+
super(_value, validators);
|
|
346
346
|
this.valueToControls = valueToControls;
|
|
347
|
-
this.
|
|
347
|
+
this._controls = _value.map((value) => this.createControls(value));
|
|
348
348
|
this.uuid = v4();
|
|
349
349
|
}
|
|
350
350
|
get controls() {
|
|
351
|
-
return this.
|
|
351
|
+
return this._controls;
|
|
352
352
|
}
|
|
353
353
|
get touched() {
|
|
354
354
|
return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'touched'), true);
|
|
@@ -357,20 +357,20 @@ class FormArrayList extends FormControl {
|
|
|
357
357
|
return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'dirty'), true);
|
|
358
358
|
}
|
|
359
359
|
get valid() {
|
|
360
|
-
return (this.
|
|
360
|
+
return (this._valid &&
|
|
361
361
|
this.controls.reduce((valid, controls) => valid && controlsAllChecked(controls, 'valid'), true));
|
|
362
362
|
}
|
|
363
363
|
get value() {
|
|
364
364
|
return this.controls.map((controls) => controlsToValue(controls));
|
|
365
365
|
}
|
|
366
366
|
setValue(values) {
|
|
367
|
-
this.
|
|
367
|
+
this._controls = values.map((value) => this.createControls(value));
|
|
368
368
|
}
|
|
369
369
|
push(controls) {
|
|
370
|
-
this.
|
|
370
|
+
this._controls = this._controls.concat([controls]);
|
|
371
371
|
}
|
|
372
372
|
remove(controls) {
|
|
373
|
-
this.
|
|
373
|
+
this._controls = this._controls.filter((_controls) => _controls !== controls);
|
|
374
374
|
}
|
|
375
375
|
createControls(value) {
|
|
376
376
|
const controls = this.valueToControls(value);
|
|
@@ -389,23 +389,23 @@ function formArrayList(valueToControl, value, validators) {
|
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
class FormArray {
|
|
392
|
-
constructor(
|
|
393
|
-
this.
|
|
394
|
-
this.
|
|
395
|
-
this.
|
|
396
|
-
this.
|
|
397
|
-
const
|
|
392
|
+
constructor(options, validators) {
|
|
393
|
+
this._groups = [];
|
|
394
|
+
this._valid = true;
|
|
395
|
+
this._disabled = false;
|
|
396
|
+
this._errors = [];
|
|
397
|
+
const _options = createFormArrayOptions(options, validators);
|
|
398
398
|
this.unsusbcriptions = new Map();
|
|
399
|
-
this.
|
|
400
|
-
this.validators = validators;
|
|
401
|
-
this.refresh(this.
|
|
399
|
+
this.currentValue = _options.groups;
|
|
400
|
+
this.validators = _options.validators;
|
|
401
|
+
this.refresh(this.currentValue);
|
|
402
402
|
this.observable = observable(this.value);
|
|
403
|
-
groups?.forEach((group) => {
|
|
403
|
+
_options.groups?.forEach((group) => {
|
|
404
404
|
this.subscription(group);
|
|
405
405
|
});
|
|
406
406
|
}
|
|
407
407
|
get groups() {
|
|
408
|
-
return this.
|
|
408
|
+
return this._groups;
|
|
409
409
|
}
|
|
410
410
|
get controls() {
|
|
411
411
|
return this.groups.map(({ controls }) => controls);
|
|
@@ -413,47 +413,47 @@ class FormArray {
|
|
|
413
413
|
get touched() {
|
|
414
414
|
return groupPartialChecked(this.groups, 'touched');
|
|
415
415
|
}
|
|
416
|
-
get
|
|
417
|
-
return groupAllChecked(this.groups, '
|
|
416
|
+
get toucheds() {
|
|
417
|
+
return groupAllChecked(this.groups, 'toucheds');
|
|
418
418
|
}
|
|
419
419
|
get untouched() {
|
|
420
420
|
return !this.touched;
|
|
421
421
|
}
|
|
422
|
-
get
|
|
423
|
-
return !this.
|
|
422
|
+
get untoucheds() {
|
|
423
|
+
return !this.toucheds;
|
|
424
424
|
}
|
|
425
425
|
get dirty() {
|
|
426
426
|
return groupPartialChecked(this.groups, 'dirty');
|
|
427
427
|
}
|
|
428
|
-
get
|
|
429
|
-
return groupAllChecked(this.groups, '
|
|
428
|
+
get dirties() {
|
|
429
|
+
return groupAllChecked(this.groups, 'dirties');
|
|
430
430
|
}
|
|
431
431
|
get pristine() {
|
|
432
432
|
return !this.dirty;
|
|
433
433
|
}
|
|
434
|
-
get
|
|
435
|
-
return !this.
|
|
434
|
+
get pristines() {
|
|
435
|
+
return !this.dirties;
|
|
436
436
|
}
|
|
437
437
|
get disabled() {
|
|
438
|
-
return this.
|
|
438
|
+
return this._disabled;
|
|
439
439
|
}
|
|
440
440
|
get enabled() {
|
|
441
|
-
return !this.
|
|
441
|
+
return !this._disabled;
|
|
442
442
|
}
|
|
443
443
|
get valid() {
|
|
444
|
-
return this.
|
|
444
|
+
return this._valid && groupAllChecked(this.groups, 'valid');
|
|
445
445
|
}
|
|
446
446
|
get invalid() {
|
|
447
|
-
return !this.
|
|
447
|
+
return !this._valid;
|
|
448
448
|
}
|
|
449
449
|
get value() {
|
|
450
450
|
return this.groups.map(({ value: state }) => state);
|
|
451
451
|
}
|
|
452
452
|
get error() {
|
|
453
|
-
return this.
|
|
453
|
+
return this._error;
|
|
454
454
|
}
|
|
455
455
|
get errors() {
|
|
456
|
-
return this.
|
|
456
|
+
return this._errors;
|
|
457
457
|
}
|
|
458
458
|
get wrong() {
|
|
459
459
|
return this.touched && this.invalid;
|
|
@@ -465,13 +465,13 @@ class FormArray {
|
|
|
465
465
|
return someErrors(this.errors, keys);
|
|
466
466
|
}
|
|
467
467
|
reset() {
|
|
468
|
-
this.refresh(this.
|
|
468
|
+
this.refresh(this.currentValue);
|
|
469
469
|
}
|
|
470
470
|
disable() {
|
|
471
|
-
this.
|
|
471
|
+
this._disabled = true;
|
|
472
472
|
}
|
|
473
473
|
enable() {
|
|
474
|
-
this.
|
|
474
|
+
this._disabled = false;
|
|
475
475
|
}
|
|
476
476
|
push(group) {
|
|
477
477
|
this.subscription(group);
|
|
@@ -484,11 +484,11 @@ class FormArray {
|
|
|
484
484
|
this.refresh([...this.groups, ...groups]);
|
|
485
485
|
}
|
|
486
486
|
setInitialValue(groups) {
|
|
487
|
-
this.
|
|
487
|
+
this.currentValue = groups;
|
|
488
488
|
this.setValue(groups);
|
|
489
489
|
}
|
|
490
490
|
setValue(groups) {
|
|
491
|
-
this.
|
|
491
|
+
this._groups.forEach(({ uuid }) => {
|
|
492
492
|
this.unsusbcriptions.delete(uuid);
|
|
493
493
|
});
|
|
494
494
|
groups.forEach((group) => {
|
|
@@ -515,19 +515,19 @@ class FormArray {
|
|
|
515
515
|
updateValidityStatus(groups, validators) {
|
|
516
516
|
if (validators) {
|
|
517
517
|
const errors = arrayIsValid({ groups, validators });
|
|
518
|
-
this.
|
|
519
|
-
this.
|
|
520
|
-
this.
|
|
518
|
+
this._errors = errors;
|
|
519
|
+
this._error = errors[0];
|
|
520
|
+
this._valid = errors.length === 0;
|
|
521
521
|
}
|
|
522
522
|
else {
|
|
523
|
-
this.
|
|
524
|
-
this.
|
|
525
|
-
this.
|
|
523
|
+
this._valid = true;
|
|
524
|
+
this._errors = [];
|
|
525
|
+
this._error = undefined;
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
refresh(newGroups) {
|
|
529
529
|
const groups = newGroups || [];
|
|
530
|
-
this.
|
|
530
|
+
this._groups = groups;
|
|
531
531
|
this.updateValidityStatus(groups, this.validators);
|
|
532
532
|
}
|
|
533
533
|
}
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../esm/arguments.js","../esm/helpers.js","../esm/form-control.js","../esm/form-array/form-array-control.js","../esm/form-group.js","../esm/form-array/form-array-group.js","../esm/form-array/form-array-list.js","../esm/form-array/form-array.js"],"sourcesContent":["function itIsControlOptions(options) {\n return (typeof options === 'object' &&\n ('value' in options || 'validators' in options));\n}\nfunction itIsGroupOptions(options) {\n return typeof options === 'object' && 'controls' in options;\n}\nfunction itIsArrayOptions(options) {\n return (typeof options === 'object' &&\n ('groups' in options || 'validators' in options));\n}\nexport function createFormControlOptions(...controlOptions) {\n const [options, validators] = controlOptions;\n if (!options) {\n return { value: options, validators };\n }\n if (!validators && itIsControlOptions(options)) {\n return options;\n }\n return {\n value: options,\n validators\n };\n}\nexport function createFormGroupOptions(...groupOptions) {\n const [options, validators] = groupOptions;\n if (!validators && itIsGroupOptions(options)) {\n return options;\n }\n return {\n controls: options,\n validators\n };\n}\nexport function createFormArrayOptions(...arrayOptions) {\n const [options, validators] = arrayOptions;\n if (!options) {\n return { groups: options, validators };\n }\n if (!validators && itIsArrayOptions(options)) {\n return options;\n }\n return {\n groups: options,\n validators\n };\n}\n//# sourceMappingURL=arguments.js.map","import { parseBoolean } from '@rolster/commons';\nfunction reduceErrors(errors) {\n return errors.reduce((keys, { id }) => [...keys, id], []);\n}\nexport const controlIsValid = ({ value, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(value);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport const controlsAllChecked = (controls, key) => {\n return Object.values(controls).reduce((value, control) => control.disabled ? value : value && parseBoolean(control[key]), true);\n};\nexport const controlsPartialChecked = (controls, key) => {\n return Object.values(controls).reduce((value, control) => control.disabled ? value : value || parseBoolean(control[key]), false);\n};\nexport const controlsToValue = (controls) => {\n return Object.entries(controls).reduce((result, [key, { value }]) => {\n result[key] = value;\n return result;\n }, {});\n};\nexport const groupIsValid = ({ controls, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(controls);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport function groupAllChecked(groups, key) {\n return groups.reduce((value, group) => value && parseBoolean(group[key]), true);\n}\nexport function groupPartialChecked(groups, key) {\n return groups.reduce((value, group) => value || parseBoolean(group[key]), false);\n}\nexport const arrayIsValid = ({ groups, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(groups);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport function hasError(errors, key) {\n return reduceErrors(errors).includes(key);\n}\nexport function someErrors(errors, keys) {\n return reduceErrors(errors).some((key) => keys.includes(key));\n}\n//# sourceMappingURL=helpers.js.map","import { observable } from '@rolster/commons';\nimport { createFormControlOptions } from './arguments';\nimport { controlIsValid, hasError, someErrors } from './helpers';\nexport class FormControl {\n constructor(controlOptions, controlValidators) {\n this.currentFocused = false;\n this.currentTouched = false;\n this.currentDirty = false;\n this.currentDisabled = false;\n this.currentValid = true;\n this.currentErrors = [];\n const { value, validators } = createFormControlOptions(controlOptions, controlValidators);\n this.observable = observable(value);\n this.initialValue = value;\n this.validators = validators;\n this.currentValue = value;\n this.updateValueAndValidity(value, validators);\n }\n get focused() {\n return this.currentFocused;\n }\n get unfocused() {\n return !this.currentFocused;\n }\n get touched() {\n return this.currentTouched;\n }\n get untouched() {\n return !this.currentTouched;\n }\n get dirty() {\n return this.currentDirty;\n }\n get pristine() {\n return !this.currentDirty;\n }\n get disabled() {\n return this.currentDisabled;\n }\n get enabled() {\n return !this.currentDisabled;\n }\n get valid() {\n return this.currentValid;\n }\n get invalid() {\n return !this.currentValid;\n }\n get value() {\n return this.currentValue;\n }\n get errors() {\n return this.currentErrors;\n }\n get error() {\n return this.currentError;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n hasError(key) {\n return hasError(this.errors, key);\n }\n someErrors(keys) {\n return someErrors(this.errors, keys);\n }\n reset() {\n this.setValue(this.initialValue);\n this.currentDirty = false;\n this.currentTouched = false;\n }\n focus() {\n this.currentFocused = true;\n }\n blur() {\n this.currentFocused = false;\n this.currentTouched = true;\n }\n disable() {\n this.currentDisabled = true;\n }\n enable() {\n this.currentDisabled = false;\n }\n touch() {\n this.currentTouched = true;\n }\n setInitialValue(value) {\n this.initialValue = value;\n this.setValue(value);\n }\n setValue(value) {\n if (this.enabled) {\n this.currentValue = value;\n this.currentDirty = true;\n this.updateValueAndValidity(value, this.validators);\n this.observable.next(value);\n }\n }\n setValidators(validators = []) {\n this.validators = validators;\n this.updateValueAndValidity(this.value, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n updateValueAndValidity(value, validators) {\n if (validators) {\n const errors = controlIsValid({ value, validators });\n this.currentError = errors[0];\n this.currentErrors = errors;\n this.currentValid = errors.length === 0;\n }\n else {\n this.currentValid = true;\n this.currentError = undefined;\n this.currentErrors = [];\n }\n }\n}\nexport function formControl(options, validators) {\n return new FormControl(createFormControlOptions(options, validators));\n}\n//# sourceMappingURL=form-control.js.map","import { v4 as uuid } from 'uuid';\nimport { createFormControlOptions } from '../arguments';\nimport { FormControl } from '../form-control';\nexport class FormArrayControl extends FormControl {\n constructor(controlOptions, controlValidators) {\n const { value, validators } = createFormControlOptions(controlOptions, controlValidators);\n super(value, validators);\n this.uuid = uuid();\n }\n}\nexport function formArrayControl(options, validators) {\n return new FormArrayControl(createFormControlOptions(options, validators));\n}\n//# sourceMappingURL=form-array-control.js.map","import { observable } from '@rolster/commons';\nimport { createFormGroupOptions } from './arguments';\nimport { controlsAllChecked, controlsPartialChecked, controlsToValue, groupIsValid } from './helpers';\nexport class FormGroup {\n constructor(groupOptions, groupValidators) {\n this.currentErrors = [];\n this.currentValid = true;\n const { controls, validators } = createFormGroupOptions(groupOptions, groupValidators);\n this.currentControls = controls;\n this.validators = validators;\n this.updateValueAndValidity(controls, validators);\n this.observable = observable(this.value);\n Object.values(controls).forEach((control) => {\n control.subscribe(() => {\n this.updateValueAndValidity(this.controls, this.validators);\n this.observable.next(this.value);\n });\n });\n }\n get controls() {\n return this.currentControls;\n }\n get touched() {\n return controlsPartialChecked(this.controls, 'touched');\n }\n get touchedAll() {\n return controlsAllChecked(this.controls, 'touched');\n }\n get untouched() {\n return !this.touched;\n }\n get untouchedAll() {\n return !this.touchedAll;\n }\n get dirty() {\n return controlsPartialChecked(this.controls, 'dirty');\n }\n get dirtyAll() {\n return controlsAllChecked(this.controls, 'dirty');\n }\n get pristine() {\n return !this.dirty;\n }\n get pristineAll() {\n return this.dirtyAll;\n }\n get valid() {\n return this.currentValid && controlsAllChecked(this.controls, 'valid');\n }\n get invalid() {\n return !this.valid;\n }\n get value() {\n return controlsToValue(this.controls);\n }\n get errors() {\n return this.currentErrors;\n }\n get error() {\n return this.currentError;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n reset() {\n Object.values(this.controls).forEach((control) => {\n control.reset();\n });\n }\n setValidators(validators) {\n this.validators = validators;\n this.updateValueAndValidity(this.controls, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n updateValueAndValidity(controls, validators) {\n if (validators) {\n const errors = groupIsValid({ controls, validators });\n this.currentErrors = errors;\n this.currentError = errors[0];\n this.currentValid = errors.length === 0;\n }\n else {\n this.currentErrors = [];\n this.currentError = undefined;\n this.currentValid = true;\n }\n }\n}\nexport function formGroup(options, validators) {\n return new FormGroup(createFormGroupOptions(options, validators));\n}\n//# sourceMappingURL=form-group.js.map","import { v4 as uuid } from 'uuid';\nimport { createFormGroupOptions } from '../arguments';\nimport { FormGroup } from '../form-group';\nexport class FormArrayGroup extends FormGroup {\n constructor(groupOptions, groupValidators) {\n const { controls, resource, validators } = createFormGroupOptions(groupOptions, groupValidators);\n super(controls, validators);\n this.uuid = uuid();\n this.resource = resource;\n }\n}\nexport function formArrayGroup(options, validators) {\n return new FormArrayGroup(createFormGroupOptions(options, validators));\n}\n//# sourceMappingURL=form-array-group.js.map","import { v4 as uuid } from 'uuid';\nimport { FormControl } from '../form-control';\nimport { controlsAllChecked, controlsPartialChecked, controlsToValue } from '../helpers';\nexport class FormArrayList extends FormControl {\n constructor(valueToControls, value, validators) {\n const initialValue = value || [];\n super(initialValue, validators);\n this.valueToControls = valueToControls;\n this.currentControls = initialValue.map((value) => this.createControls(value));\n this.uuid = uuid();\n }\n get controls() {\n return this.currentControls;\n }\n get touched() {\n return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'touched'), true);\n }\n get dirty() {\n return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'dirty'), true);\n }\n get valid() {\n return (this.currentValid &&\n this.controls.reduce((valid, controls) => valid && controlsAllChecked(controls, 'valid'), true));\n }\n get value() {\n return this.controls.map((controls) => controlsToValue(controls));\n }\n setValue(values) {\n this.currentControls = values.map((value) => this.createControls(value));\n }\n push(controls) {\n this.currentControls = this.currentControls.concat([controls]);\n }\n remove(controls) {\n this.currentControls = this.currentControls.filter((currentControls) => currentControls !== controls);\n }\n createControls(value) {\n const controls = this.valueToControls(value);\n Object.values(controls).forEach((control) => {\n control.subscribe(() => {\n const { value, validators } = this;\n this.updateValueAndValidity(value, validators);\n this.observable.next(value);\n });\n });\n return controls;\n }\n}\nexport function formArrayList(valueToControl, value, validators) {\n return new FormArrayList(valueToControl, value, validators);\n}\n//# sourceMappingURL=form-array-list.js.map","import { observable } from '@rolster/commons';\nimport { createFormArrayOptions } from '../arguments';\nimport { arrayIsValid, groupAllChecked, groupPartialChecked, hasError, someErrors } from '../helpers';\nexport class FormArray {\n constructor(arrayOptions, arrayValidators) {\n this.currentGroups = [];\n this.currentValid = true;\n this.currentDisabled = false;\n this.currentErrors = [];\n const { groups, validators } = createFormArrayOptions(arrayOptions, arrayValidators);\n this.unsusbcriptions = new Map();\n this.initialValue = groups;\n this.validators = validators;\n this.refresh(this.initialValue);\n this.observable = observable(this.value);\n groups?.forEach((group) => {\n this.subscription(group);\n });\n }\n get groups() {\n return this.currentGroups;\n }\n get controls() {\n return this.groups.map(({ controls }) => controls);\n }\n get touched() {\n return groupPartialChecked(this.groups, 'touched');\n }\n get touchedAll() {\n return groupAllChecked(this.groups, 'touchedAll');\n }\n get untouched() {\n return !this.touched;\n }\n get untouchedAll() {\n return !this.touchedAll;\n }\n get dirty() {\n return groupPartialChecked(this.groups, 'dirty');\n }\n get dirtyAll() {\n return groupAllChecked(this.groups, 'dirtyAll');\n }\n get pristine() {\n return !this.dirty;\n }\n get pristineAll() {\n return !this.dirtyAll;\n }\n get disabled() {\n return this.currentDisabled;\n }\n get enabled() {\n return !this.currentDisabled;\n }\n get valid() {\n return this.currentValid && groupAllChecked(this.groups, 'valid');\n }\n get invalid() {\n return !this.currentValid;\n }\n get value() {\n return this.groups.map(({ value: state }) => state);\n }\n get error() {\n return this.currentError;\n }\n get errors() {\n return this.currentErrors;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n hasError(key) {\n return hasError(this.errors, key);\n }\n someErrors(keys) {\n return someErrors(this.errors, keys);\n }\n reset() {\n this.refresh(this.initialValue);\n }\n disable() {\n this.currentDisabled = true;\n }\n enable() {\n this.currentDisabled = false;\n }\n push(group) {\n this.subscription(group);\n this.refresh([...this.groups, group]);\n }\n merge(groups) {\n groups.forEach((group) => {\n this.subscription(group);\n });\n this.refresh([...this.groups, ...groups]);\n }\n setInitialValue(groups) {\n this.initialValue = groups;\n this.setValue(groups);\n }\n setValue(groups) {\n this.currentGroups.forEach(({ uuid }) => {\n this.unsusbcriptions.delete(uuid);\n });\n groups.forEach((group) => {\n this.subscription(group);\n });\n this.refresh(groups); // Update groups\n }\n remove({ uuid }) {\n this.refresh(this.groups.filter((group) => group.uuid !== uuid));\n }\n setValidators(validators) {\n this.validators = validators;\n this.updateValidityStatus(this.groups, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n subscription(group) {\n const unsusbcription = group.subscribe(() => {\n this.updateValidityStatus(this.groups, this.validators);\n });\n this.unsusbcriptions.set(group.uuid, unsusbcription);\n }\n updateValidityStatus(groups, validators) {\n if (validators) {\n const errors = arrayIsValid({ groups, validators });\n this.currentErrors = errors;\n this.currentError = errors[0];\n this.currentValid = errors.length === 0;\n }\n else {\n this.currentValid = true;\n this.currentErrors = [];\n this.currentError = undefined;\n }\n }\n refresh(newGroups) {\n const groups = newGroups || [];\n this.currentGroups = groups;\n this.updateValidityStatus(groups, this.validators);\n }\n}\nexport function formArray(options, validators) {\n return new FormArray(createFormArrayOptions(options, validators));\n}\n//# sourceMappingURL=form-array.js.map"],"names":["uuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../esm/arguments.js","../esm/helpers.js","../esm/form-control.js","../esm/form-array/form-array-control.js","../esm/form-group.js","../esm/form-array/form-array-group.js","../esm/form-array/form-array-list.js","../esm/form-array/form-array.js"],"sourcesContent":["function itIsControlOptions(options) {\n return (typeof options === 'object' &&\n ('value' in options || 'validators' in options));\n}\nfunction itIsGroupOptions(options) {\n return typeof options === 'object' && 'controls' in options;\n}\nfunction itIsArrayOptions(options) {\n return (typeof options === 'object' &&\n ('groups' in options || 'validators' in options));\n}\nexport function createFormControlOptions(...controlOptions) {\n const [options, validators] = controlOptions;\n if (!options) {\n return { value: options, validators };\n }\n if (!validators && itIsControlOptions(options)) {\n return options;\n }\n return {\n value: options,\n validators\n };\n}\nexport function createFormGroupOptions(...groupOptions) {\n const [options, validators] = groupOptions;\n if (!validators && itIsGroupOptions(options)) {\n return options;\n }\n return {\n controls: options,\n validators\n };\n}\nexport function createFormArrayOptions(...arrayOptions) {\n const [options, validators] = arrayOptions;\n if (!options) {\n return { groups: options, validators };\n }\n if (!validators && itIsArrayOptions(options)) {\n return options;\n }\n return {\n groups: options,\n validators\n };\n}\n//# sourceMappingURL=arguments.js.map","import { parseBoolean } from '@rolster/commons';\nfunction reduceErrors(errors) {\n return errors.reduce((keys, { id }) => [...keys, id], []);\n}\nexport const controlIsValid = ({ value, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(value);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport const controlsAllChecked = (controls, key) => {\n return Object.values(controls).reduce((value, control) => control.disabled ? value : value && parseBoolean(control[key]), true);\n};\nexport const controlsPartialChecked = (controls, key) => {\n return Object.values(controls).reduce((value, control) => control.disabled ? value : value || parseBoolean(control[key]), false);\n};\nexport const controlsToValue = (controls) => {\n return Object.entries(controls).reduce((result, [key, { value }]) => {\n result[key] = value;\n return result;\n }, {});\n};\nexport const groupIsValid = ({ controls, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(controls);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport function groupAllChecked(groups, key) {\n return groups.reduce((value, group) => value && parseBoolean(group[key]), true);\n}\nexport function groupPartialChecked(groups, key) {\n return groups.reduce((value, group) => value || parseBoolean(group[key]), false);\n}\nexport const arrayIsValid = ({ groups, validators }) => {\n return validators.reduce((errors, validator) => {\n const error = validator(groups);\n if (error) {\n errors.push(error);\n }\n return errors;\n }, []);\n};\nexport function hasError(errors, key) {\n return reduceErrors(errors).includes(key);\n}\nexport function someErrors(errors, keys) {\n return reduceErrors(errors).some((key) => keys.includes(key));\n}\nexport function reduceControlsToArray(controls, key) {\n return Object.values(controls).map((control) => control[key]);\n}\nexport function reduceGroupToArray(group, key) {\n return reduceControlsToArray(group.controls, key);\n}\n//# sourceMappingURL=helpers.js.map","import { observable } from '@rolster/commons';\nimport { createFormControlOptions } from './arguments';\nimport { controlIsValid, hasError, someErrors } from './helpers';\nexport class FormControl {\n constructor(options, validators) {\n this._focused = false;\n this._touched = false;\n this._dirty = false;\n this._disabled = false;\n this._valid = true;\n this._errors = [];\n const _options = createFormControlOptions(options, validators);\n this.observable = observable(_options.value);\n this.currentValue = _options.value;\n this.validators = _options.validators;\n this._value = _options.value;\n this.updateValueAndValidity(_options.value, _options.validators);\n }\n get focused() {\n return this._focused;\n }\n get unfocused() {\n return !this._focused;\n }\n get touched() {\n return this._touched;\n }\n get untouched() {\n return !this._touched;\n }\n get dirty() {\n return this._dirty;\n }\n get pristine() {\n return !this._dirty;\n }\n get disabled() {\n return this._disabled;\n }\n get enabled() {\n return !this._disabled;\n }\n get valid() {\n return this._valid;\n }\n get invalid() {\n return !this._valid;\n }\n get value() {\n return this._value;\n }\n get errors() {\n return this._errors;\n }\n get error() {\n return this._error;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n hasError(key) {\n return hasError(this.errors, key);\n }\n someErrors(keys) {\n return someErrors(this.errors, keys);\n }\n reset() {\n this.setValue(this.currentValue);\n this._dirty = false;\n this._touched = false;\n }\n focus() {\n this._focused = true;\n }\n blur() {\n this._focused = false;\n this._touched = true;\n }\n disable() {\n this._disabled = true;\n }\n enable() {\n this._disabled = false;\n }\n touch() {\n this._touched = true;\n }\n setInitialValue(value) {\n this.currentValue = value;\n this.setValue(value);\n }\n setValue(value) {\n if (this.enabled) {\n this._value = value;\n this._dirty = true;\n this.updateValueAndValidity(value, this.validators);\n this.observable.next(value);\n }\n }\n setValidators(validators = []) {\n this.validators = validators;\n this.updateValueAndValidity(this.value, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n updateValueAndValidity(value, validators) {\n if (validators) {\n const errors = controlIsValid({ value, validators });\n this._error = errors[0];\n this._errors = errors;\n this._valid = errors.length === 0;\n }\n else {\n this._valid = true;\n this._error = undefined;\n this._errors = [];\n }\n }\n}\nexport function formControl(options, validators) {\n return new FormControl(createFormControlOptions(options, validators));\n}\n//# sourceMappingURL=form-control.js.map","import { v4 as uuid } from 'uuid';\nimport { createFormControlOptions } from '../arguments';\nimport { FormControl } from '../form-control';\nexport class FormArrayControl extends FormControl {\n constructor(options, validators) {\n const _options = createFormControlOptions(options, validators);\n super(_options.value, _options.validators);\n this.uuid = uuid();\n }\n}\nexport function formArrayControl(options, validators) {\n return new FormArrayControl(createFormControlOptions(options, validators));\n}\n//# sourceMappingURL=form-array-control.js.map","import { observable } from '@rolster/commons';\nimport { createFormGroupOptions } from './arguments';\nimport { controlsAllChecked, controlsPartialChecked, controlsToValue, groupIsValid } from './helpers';\nexport class FormGroup {\n constructor(options, validators) {\n this._errors = [];\n this._valid = true;\n const _options = createFormGroupOptions(options, validators);\n this._controls = _options.controls;\n this.validators = _options.validators;\n this.updateValueAndValidity(_options.controls, _options.validators);\n this.observable = observable(this.value);\n Object.values(_options.controls).forEach((control) => {\n control.subscribe(() => {\n this.updateValueAndValidity(this.controls, this.validators);\n this.observable.next(this.value);\n });\n });\n }\n get controls() {\n return this._controls;\n }\n get touched() {\n return controlsPartialChecked(this.controls, 'touched');\n }\n get toucheds() {\n return controlsAllChecked(this.controls, 'touched');\n }\n get untouched() {\n return !this.touched;\n }\n get untoucheds() {\n return !this.toucheds;\n }\n get dirty() {\n return controlsPartialChecked(this.controls, 'dirty');\n }\n get dirties() {\n return controlsAllChecked(this.controls, 'dirty');\n }\n get pristine() {\n return !this.dirty;\n }\n get pristines() {\n return this.dirties;\n }\n get valid() {\n return this._valid && controlsAllChecked(this.controls, 'valid');\n }\n get invalid() {\n return !this.valid;\n }\n get value() {\n return controlsToValue(this.controls);\n }\n get errors() {\n return this._errors;\n }\n get error() {\n return this._error;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n reset() {\n Object.values(this.controls).forEach((control) => {\n control.reset();\n });\n }\n setValidators(validators) {\n this.validators = validators;\n this.updateValueAndValidity(this.controls, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n updateValueAndValidity(controls, validators) {\n if (validators) {\n const errors = groupIsValid({ controls, validators });\n this._errors = errors;\n this._error = errors[0];\n this._valid = errors.length === 0;\n }\n else {\n this._errors = [];\n this._error = undefined;\n this._valid = true;\n }\n }\n}\nexport function formGroup(options, validators) {\n return new FormGroup(createFormGroupOptions(options, validators));\n}\n//# sourceMappingURL=form-group.js.map","import { v4 as uuid } from 'uuid';\nimport { createFormGroupOptions } from '../arguments';\nimport { FormGroup } from '../form-group';\nexport class FormArrayGroup extends FormGroup {\n constructor(options, validators) {\n const _options = createFormGroupOptions(options, validators);\n super(_options.controls, _options.validators);\n this.uuid = uuid();\n this.resource = _options.resource;\n }\n}\nexport function formArrayGroup(options, validators) {\n return new FormArrayGroup(createFormGroupOptions(options, validators));\n}\n//# sourceMappingURL=form-array-group.js.map","import { v4 as uuid } from 'uuid';\nimport { FormControl } from '../form-control';\nimport { controlsAllChecked, controlsPartialChecked, controlsToValue } from '../helpers';\nexport class FormArrayList extends FormControl {\n constructor(valueToControls, value, validators) {\n const _value = value || [];\n super(_value, validators);\n this.valueToControls = valueToControls;\n this._controls = _value.map((value) => this.createControls(value));\n this.uuid = uuid();\n }\n get controls() {\n return this._controls;\n }\n get touched() {\n return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'touched'), true);\n }\n get dirty() {\n return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'dirty'), true);\n }\n get valid() {\n return (this._valid &&\n this.controls.reduce((valid, controls) => valid && controlsAllChecked(controls, 'valid'), true));\n }\n get value() {\n return this.controls.map((controls) => controlsToValue(controls));\n }\n setValue(values) {\n this._controls = values.map((value) => this.createControls(value));\n }\n push(controls) {\n this._controls = this._controls.concat([controls]);\n }\n remove(controls) {\n this._controls = this._controls.filter((_controls) => _controls !== controls);\n }\n createControls(value) {\n const controls = this.valueToControls(value);\n Object.values(controls).forEach((control) => {\n control.subscribe(() => {\n const { value, validators } = this;\n this.updateValueAndValidity(value, validators);\n this.observable.next(value);\n });\n });\n return controls;\n }\n}\nexport function formArrayList(valueToControl, value, validators) {\n return new FormArrayList(valueToControl, value, validators);\n}\n//# sourceMappingURL=form-array-list.js.map","import { observable } from '@rolster/commons';\nimport { createFormArrayOptions } from '../arguments';\nimport { arrayIsValid, groupAllChecked, groupPartialChecked, hasError, someErrors } from '../helpers';\nexport class FormArray {\n constructor(options, validators) {\n this._groups = [];\n this._valid = true;\n this._disabled = false;\n this._errors = [];\n const _options = createFormArrayOptions(options, validators);\n this.unsusbcriptions = new Map();\n this.currentValue = _options.groups;\n this.validators = _options.validators;\n this.refresh(this.currentValue);\n this.observable = observable(this.value);\n _options.groups?.forEach((group) => {\n this.subscription(group);\n });\n }\n get groups() {\n return this._groups;\n }\n get controls() {\n return this.groups.map(({ controls }) => controls);\n }\n get touched() {\n return groupPartialChecked(this.groups, 'touched');\n }\n get toucheds() {\n return groupAllChecked(this.groups, 'toucheds');\n }\n get untouched() {\n return !this.touched;\n }\n get untoucheds() {\n return !this.toucheds;\n }\n get dirty() {\n return groupPartialChecked(this.groups, 'dirty');\n }\n get dirties() {\n return groupAllChecked(this.groups, 'dirties');\n }\n get pristine() {\n return !this.dirty;\n }\n get pristines() {\n return !this.dirties;\n }\n get disabled() {\n return this._disabled;\n }\n get enabled() {\n return !this._disabled;\n }\n get valid() {\n return this._valid && groupAllChecked(this.groups, 'valid');\n }\n get invalid() {\n return !this._valid;\n }\n get value() {\n return this.groups.map(({ value: state }) => state);\n }\n get error() {\n return this._error;\n }\n get errors() {\n return this._errors;\n }\n get wrong() {\n return this.touched && this.invalid;\n }\n hasError(key) {\n return hasError(this.errors, key);\n }\n someErrors(keys) {\n return someErrors(this.errors, keys);\n }\n reset() {\n this.refresh(this.currentValue);\n }\n disable() {\n this._disabled = true;\n }\n enable() {\n this._disabled = false;\n }\n push(group) {\n this.subscription(group);\n this.refresh([...this.groups, group]);\n }\n merge(groups) {\n groups.forEach((group) => {\n this.subscription(group);\n });\n this.refresh([...this.groups, ...groups]);\n }\n setInitialValue(groups) {\n this.currentValue = groups;\n this.setValue(groups);\n }\n setValue(groups) {\n this._groups.forEach(({ uuid }) => {\n this.unsusbcriptions.delete(uuid);\n });\n groups.forEach((group) => {\n this.subscription(group);\n });\n this.refresh(groups); // Update groups\n }\n remove({ uuid }) {\n this.refresh(this.groups.filter((group) => group.uuid !== uuid));\n }\n setValidators(validators) {\n this.validators = validators;\n this.updateValidityStatus(this.groups, validators);\n }\n subscribe(subscriber) {\n return this.observable.subscribe(subscriber);\n }\n subscription(group) {\n const unsusbcription = group.subscribe(() => {\n this.updateValidityStatus(this.groups, this.validators);\n });\n this.unsusbcriptions.set(group.uuid, unsusbcription);\n }\n updateValidityStatus(groups, validators) {\n if (validators) {\n const errors = arrayIsValid({ groups, validators });\n this._errors = errors;\n this._error = errors[0];\n this._valid = errors.length === 0;\n }\n else {\n this._valid = true;\n this._errors = [];\n this._error = undefined;\n }\n }\n refresh(newGroups) {\n const groups = newGroups || [];\n this._groups = groups;\n this.updateValidityStatus(groups, this.validators);\n }\n}\nexport function formArray(options, validators) {\n return new FormArray(createFormArrayOptions(options, validators));\n}\n//# sourceMappingURL=form-array.js.map"],"names":["uuid"],"mappings":"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"}
|