@rolster/forms 3.2.0 → 3.3.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.
Files changed (83) hide show
  1. package/dist/cjs/helpers.js +84 -31
  2. package/dist/cjs/helpers.js.map +1 -1
  3. package/dist/cjs/index.js +81 -79
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/es/helpers.js +75 -25
  6. package/dist/es/helpers.js.map +1 -1
  7. package/dist/es/index.js +81 -79
  8. package/dist/es/index.js.map +1 -1
  9. package/dist/esm/form-array/form-array-control.d.ts +3 -3
  10. package/dist/esm/form-array/form-array-control.js +2 -2
  11. package/dist/esm/form-array/form-array-control.js.map +1 -1
  12. package/dist/esm/form-array/form-array-control.type.d.ts +11 -0
  13. package/dist/esm/form-array/form-array-control.type.js +2 -0
  14. package/dist/esm/form-array/form-array-control.type.js.map +1 -0
  15. package/dist/esm/form-array/form-array-group.d.ts +4 -4
  16. package/dist/esm/form-array/form-array-group.js +2 -2
  17. package/dist/esm/form-array/form-array-group.js.map +1 -1
  18. package/dist/esm/form-array/form-array-group.type.d.ts +20 -0
  19. package/dist/esm/form-array/form-array-group.type.js +2 -0
  20. package/dist/esm/form-array/form-array-group.type.js.map +1 -0
  21. package/dist/esm/form-array/form-array-list.d.ts +3 -3
  22. package/dist/esm/form-array/form-array-list.js +8 -8
  23. package/dist/esm/form-array/form-array-list.js.map +1 -1
  24. package/dist/esm/form-array/form-array-list.type.d.ts +8 -0
  25. package/dist/esm/form-array/form-array-list.type.js +2 -0
  26. package/dist/esm/form-array/form-array-list.type.js.map +1 -0
  27. package/dist/esm/form-array/form-array.d.ts +14 -14
  28. package/dist/esm/form-array/form-array.helper.d.ts +17 -0
  29. package/dist/esm/form-array/form-array.helper.js +34 -0
  30. package/dist/esm/form-array/form-array.helper.js.map +1 -0
  31. package/dist/esm/form-array/form-array.js +14 -14
  32. package/dist/esm/form-array/form-array.js.map +1 -1
  33. package/dist/esm/form-array/form-array.type.d.ts +34 -0
  34. package/dist/esm/form-array/form-array.type.js +2 -0
  35. package/dist/esm/form-array/form-array.type.js.map +1 -0
  36. package/dist/esm/{form-control.d.ts → form-control/form-control.d.ts} +2 -2
  37. package/dist/esm/form-control/form-control.helper.d.ts +13 -0
  38. package/dist/esm/form-control/form-control.helper.js +27 -0
  39. package/dist/esm/form-control/form-control.helper.js.map +1 -0
  40. package/dist/esm/{form-control.js → form-control/form-control.js} +3 -3
  41. package/dist/esm/form-control/form-control.js.map +1 -0
  42. package/dist/esm/form-control/form-control.type.d.ts +41 -0
  43. package/dist/esm/form-control/form-control.type.js +2 -0
  44. package/dist/esm/form-control/form-control.type.js.map +1 -0
  45. package/dist/esm/{form-group.d.ts → form-group/form-group.d.ts} +4 -3
  46. package/dist/esm/form-group/form-group.helper.d.ts +17 -0
  47. package/dist/esm/form-group/form-group.helper.js +36 -0
  48. package/dist/esm/form-group/form-group.helper.js.map +1 -0
  49. package/dist/esm/{form-group.js → form-group/form-group.js} +7 -8
  50. package/dist/esm/form-group/form-group.js.map +1 -0
  51. package/dist/esm/form-group/form-group.type.d.ts +36 -0
  52. package/dist/esm/form-group/form-group.type.js +2 -0
  53. package/dist/esm/form-group/form-group.type.js.map +1 -0
  54. package/dist/esm/helpers.d.ts +6 -23
  55. package/dist/esm/helpers.js +3 -46
  56. package/dist/esm/helpers.js.map +1 -1
  57. package/dist/esm/index.d.ts +11 -4
  58. package/dist/esm/index.js +11 -4
  59. package/dist/esm/index.js.map +1 -1
  60. package/helpers/package.json +4 -0
  61. package/package.json +6 -12
  62. package/arguments/package.json +0 -14
  63. package/dist/cjs/arguments.js +0 -54
  64. package/dist/cjs/arguments.js.map +0 -1
  65. package/dist/es/arguments.js +0 -50
  66. package/dist/es/arguments.js.map +0 -1
  67. package/dist/esm/arguments.d.ts +0 -18
  68. package/dist/esm/arguments.js +0 -48
  69. package/dist/esm/arguments.js.map +0 -1
  70. package/dist/esm/form-array/arguments.d.ts +0 -6
  71. package/dist/esm/form-array/arguments.js +0 -2
  72. package/dist/esm/form-array/arguments.js.map +0 -1
  73. package/dist/esm/form-array/index.d.ts +0 -5
  74. package/dist/esm/form-array/index.js +0 -6
  75. package/dist/esm/form-array/index.js.map +0 -1
  76. package/dist/esm/form-array/types.d.ts +0 -2
  77. package/dist/esm/form-array/types.js +0 -2
  78. package/dist/esm/form-array/types.js.map +0 -1
  79. package/dist/esm/form-control.js.map +0 -1
  80. package/dist/esm/form-group.js.map +0 -1
  81. package/dist/esm/types.d.ts +0 -143
  82. package/dist/esm/types.js +0 -2
  83. package/dist/esm/types.js.map +0 -1
@@ -1,26 +1,26 @@
1
1
  import { v4 as uuid } from 'uuid';
2
- import { FormControl } from '../form-control';
3
- import { controlsAllChecked, controlsPartialChecked, controlsToValue } from '../helpers';
2
+ import { FormControl } from '../form-control/form-control';
3
+ import { controlsToValue, verifyAllTrueInControls, verifyAnyTrueInControls } from '../form-group/form-group.helper';
4
4
  export class FormArrayList extends FormControl {
5
5
  constructor(valueToControls, value, validators) {
6
- const formList = value || [];
7
- super(formList, validators);
6
+ const formValue = value || [];
7
+ super(formValue, validators);
8
8
  this.valueToControls = valueToControls;
9
- this._controls = formList.map((value) => this.createControls(value));
9
+ this._controls = formValue.map((value) => this.createControls(value));
10
10
  this.uuid = uuid();
11
11
  }
12
12
  get controls() {
13
13
  return this._controls;
14
14
  }
15
15
  get touched() {
16
- return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'touched'), true);
16
+ return this.controls.reduce((valid, controls) => valid && verifyAnyTrueInControls(controls, 'touched'), true);
17
17
  }
18
18
  get dirty() {
19
- return this.controls.reduce((valid, controls) => valid && controlsPartialChecked(controls, 'dirty'), true);
19
+ return this.controls.reduce((valid, controls) => valid && verifyAnyTrueInControls(controls, 'dirty'), true);
20
20
  }
21
21
  get valid() {
22
22
  return (this._valid &&
23
- this.controls.reduce((valid, controls) => valid && controlsAllChecked(controls, 'valid'), true));
23
+ this.controls.reduce((valid, controls) => valid && verifyAllTrueInControls(controls, 'valid'), true));
24
24
  }
25
25
  get value() {
26
26
  return this.controls.map((controls) => controlsToValue(controls));
@@ -1 +1 @@
1
- {"version":3,"file":"form-array-list.js","sourceRoot":"","sources":["../../../src/form-array/form-array-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-array-list.js","sourceRoot":"","sources":["../../../src/form-array/form-array-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { AbstractArrayControl } from './form-array-control.type';
2
+ import { AbstractArrayControls, ArrayControlsValue } from './form-array-group.type';
3
+ export interface AbstractArrayList<C extends AbstractArrayControls = AbstractArrayControls> extends AbstractArrayControl<ArrayControlsValue<C>[]> {
4
+ controls: C[];
5
+ push(controls: C): void;
6
+ remove(controls: C): void;
7
+ }
8
+ export type ArrayListValueToControls<C extends AbstractArrayControls = AbstractArrayControls> = (value: ArrayControlsValue<C>) => C;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form-array-list.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-array-list.type.js","sourceRoot":"","sources":["../../../src/form-array/form-array-list.type.ts"],"names":[],"mappings":""}
@@ -1,22 +1,22 @@
1
1
  import { ValidatorError } from '@rolster/validators';
2
- import { AbstractReactiveArray, AbstractReactiveArrayGroup, ArrayControlsValue, FormArrayOptions, SubscriberArray, ValidatorArrayFn } from '../types';
3
- import { FormArrayControls } from './types';
4
- type ArrayOptions<C extends FormArrayControls, R> = FormArrayOptions<C, R, AbstractReactiveArrayGroup<C, R>>;
5
- export declare class FormArray<C extends FormArrayControls = FormArrayControls, R = any> implements AbstractReactiveArray<C, R, AbstractReactiveArrayGroup<C, R>> {
2
+ import { ArrayControlsValue, FormArrayControls, ReactiveArrayGroup } from './form-array-group.type';
3
+ import { FormArrayOptions, ReactiveArray, SubscriberArray, ValidatorArrayFn } from './form-array.type';
4
+ type ArrayOptions<C extends FormArrayControls, R> = FormArrayOptions<C, R, ReactiveArrayGroup<C, R>>;
5
+ export declare class FormArray<C extends FormArrayControls = FormArrayControls, R = any> implements ReactiveArray<C, R, ReactiveArrayGroup<C, R>> {
6
6
  private _groups;
7
- private _map;
8
7
  private _valid;
9
8
  private _disabled;
10
9
  private _errors;
11
10
  private _error?;
11
+ private map;
12
12
  private defaultValue?;
13
13
  private validators?;
14
14
  private observable;
15
15
  private unsusbcriptions;
16
16
  constructor();
17
17
  constructor(options: ArrayOptions<C, R>);
18
- constructor(groups: AbstractReactiveArrayGroup<C, R>[], validators?: ValidatorArrayFn<C, R>[]);
19
- get groups(): AbstractReactiveArrayGroup<C, R>[];
18
+ constructor(groups: ReactiveArrayGroup<C, R>[], validators?: ValidatorArrayFn<C, R>[]);
19
+ get groups(): ReactiveArrayGroup<C, R>[];
20
20
  get controls(): C[];
21
21
  get touched(): boolean;
22
22
  get toucheds(): boolean;
@@ -39,12 +39,12 @@ export declare class FormArray<C extends FormArrayControls = FormArrayControls,
39
39
  reset(): void;
40
40
  disable(): void;
41
41
  enable(): void;
42
- findByUuid(uuid: string): Undefined<AbstractReactiveArrayGroup<C, R>>;
43
- push(group: AbstractReactiveArrayGroup<C, R>): void;
44
- merge(groups: AbstractReactiveArrayGroup<C, R>[]): void;
45
- setDefaultValue(groups: AbstractReactiveArrayGroup<C, R>[]): void;
46
- setValue(groups: AbstractReactiveArrayGroup<C, R>[]): void;
47
- remove(group: AbstractReactiveArrayGroup<C, R>): void;
42
+ findByUuid(uuid: string): Undefined<ReactiveArrayGroup<C, R>>;
43
+ push(group: ReactiveArrayGroup<C, R>): void;
44
+ merge(groups: ReactiveArrayGroup<C, R>[]): void;
45
+ setDefaultValue(groups: ReactiveArrayGroup<C, R>[]): void;
46
+ setValue(groups: ReactiveArrayGroup<C, R>[]): void;
47
+ remove(group: ReactiveArrayGroup<C, R>): void;
48
48
  setValidators(validators: ValidatorArrayFn<C, R>[]): void;
49
49
  subscribe(subscriber: SubscriberArray<C>): Unsubscription;
50
50
  private subscription;
@@ -53,5 +53,5 @@ export declare class FormArray<C extends FormArrayControls = FormArrayControls,
53
53
  }
54
54
  export declare function formArray<G extends FormArrayControls = FormArrayControls, R = any>(): FormArray<G, R>;
55
55
  export declare function formArray<G extends FormArrayControls = FormArrayControls, R = any>(options: ArrayOptions<G, R>): FormArray<G, R>;
56
- export declare function formArray<G extends FormArrayControls = FormArrayControls, R = any>(groups: AbstractReactiveArrayGroup<G, R>[], validators?: ValidatorArrayFn<G, R>[]): FormArray<G, R>;
56
+ export declare function formArray<G extends FormArrayControls = FormArrayControls, R = any>(groups: ReactiveArrayGroup<G, R>[], validators?: ValidatorArrayFn<G, R>[]): FormArray<G, R>;
57
57
  export {};
@@ -0,0 +1,17 @@
1
+ import { ValidatorError } from '@rolster/validators';
2
+ import { AbstractArrayControls, AbstractArrayGroup } from './form-array-group.type';
3
+ import { FormArrayOptions, ValidatorArrayFn } from './form-array.type';
4
+ import { AbstractControls, AbstractGroup } from '../form-group/form-group.type';
5
+ type ArrayArgsOptions<C extends AbstractArrayControls, R, G extends AbstractArrayGroup<C, R>> = [
6
+ Undefined<FormArrayOptions<C, R, G> | AbstractArrayGroup<C, R>[]>,
7
+ Undefined<ValidatorArrayFn<C, R, G>[]>
8
+ ];
9
+ interface ArrayValidOptions<T extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<T, R> = AbstractArrayGroup<T, R>> {
10
+ groups: G[];
11
+ validators: ValidatorArrayFn<T, R>[];
12
+ }
13
+ export declare function createFormArrayOptions<C extends AbstractArrayControls, R, G extends AbstractArrayGroup<C, R>, O extends FormArrayOptions<C, R, G>>(...argsOptions: ArrayArgsOptions<C, R, G>): O;
14
+ export declare const formArrayIsValid: <C extends AbstractArrayControls = AbstractArrayControls, R = any>({ groups, validators }: ArrayValidOptions<C, R>) => ValidatorError[];
15
+ export declare function verifyAllTrueInGroups<C extends AbstractControls>(groups: AbstractGroup<C>[], key: keyof AbstractGroup<C>): boolean;
16
+ export declare function verifyAnyTrueInGroups<C extends AbstractControls>(groups: AbstractGroup<C>[], key: keyof AbstractGroup<C>): boolean;
17
+ export {};
@@ -0,0 +1,34 @@
1
+ import { parseBoolean } from '@rolster/commons';
2
+ function valueIsArrayOptions(options) {
3
+ return (typeof options === 'object' &&
4
+ ('groups' in options || 'validators' in options));
5
+ }
6
+ export function createFormArrayOptions(...argsOptions) {
7
+ const [options, validators] = argsOptions;
8
+ if (!options) {
9
+ return { groups: options, validators };
10
+ }
11
+ if (!validators && valueIsArrayOptions(options)) {
12
+ return options;
13
+ }
14
+ return {
15
+ groups: options,
16
+ validators
17
+ };
18
+ }
19
+ export const formArrayIsValid = ({ groups, validators }) => {
20
+ return validators.reduce((errors, validator) => {
21
+ const error = validator(groups);
22
+ if (error) {
23
+ errors.push(error);
24
+ }
25
+ return errors;
26
+ }, []);
27
+ };
28
+ export function verifyAllTrueInGroups(groups, key) {
29
+ return groups.reduce((value, group) => value && parseBoolean(group[key]), true);
30
+ }
31
+ export function verifyAnyTrueInGroups(groups, key) {
32
+ return groups.reduce((value, group) => value || parseBoolean(group[key]), false);
33
+ }
34
+ //# sourceMappingURL=form-array.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-array.helper.js","sourceRoot":"","sources":["../../../src/form-array/form-array.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2BhD,SAAS,mBAAmB,CAK1B,OAAY;IACZ,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,QAAQ,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,CAAC,CACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAKpC,GAAG,WAAsC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAO,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAa,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAqC;QAC7C,UAAU;KACN,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAG9B,EACA,MAAM,EACN,UAAU,EACc,EAAoB,EAAE;IAC9C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAsB,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,MAA0B,EAC1B,GAA2B;IAE3B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACnD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA0B,EAC1B,GAA2B;IAE3B,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACnD,KAAK,CACN,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { observable } from '@rolster/commons';
2
- import { createFormArrayOptions } from '../arguments';
3
- import { arrayIsValid, groupAllChecked, groupPartialChecked, hasError, someErrors } from '../helpers';
2
+ import { hasError, someErrors } from '../helpers';
3
+ import { createFormArrayOptions, formArrayIsValid, verifyAllTrueInGroups, verifyAnyTrueInGroups } from './form-array.helper';
4
4
  export class FormArray {
5
5
  constructor(options, validators) {
6
6
  this._groups = [];
@@ -9,7 +9,7 @@ export class FormArray {
9
9
  this._errors = [];
10
10
  const formArray = createFormArrayOptions(options, validators);
11
11
  this.unsusbcriptions = new Map();
12
- this._map = new Map();
12
+ this.map = new Map();
13
13
  this.defaultValue = formArray.groups;
14
14
  this.validators = formArray.validators;
15
15
  this.refresh(this.defaultValue);
@@ -25,10 +25,10 @@ export class FormArray {
25
25
  return this.groups.map(({ controls }) => controls);
26
26
  }
27
27
  get touched() {
28
- return groupPartialChecked(this.groups, 'touched');
28
+ return verifyAnyTrueInGroups(this.groups, 'touched');
29
29
  }
30
30
  get toucheds() {
31
- return groupAllChecked(this.groups, 'toucheds');
31
+ return verifyAllTrueInGroups(this.groups, 'toucheds');
32
32
  }
33
33
  get untouched() {
34
34
  return !this.touched;
@@ -37,10 +37,10 @@ export class FormArray {
37
37
  return !this.toucheds;
38
38
  }
39
39
  get dirty() {
40
- return groupPartialChecked(this.groups, 'dirty');
40
+ return verifyAnyTrueInGroups(this.groups, 'dirty');
41
41
  }
42
42
  get dirties() {
43
- return groupAllChecked(this.groups, 'dirties');
43
+ return verifyAllTrueInGroups(this.groups, 'dirties');
44
44
  }
45
45
  get pristine() {
46
46
  return !this.dirty;
@@ -55,7 +55,7 @@ export class FormArray {
55
55
  return !this._disabled;
56
56
  }
57
57
  get valid() {
58
- return this._valid && groupAllChecked(this.groups, 'valid');
58
+ return this._valid && verifyAllTrueInGroups(this.groups, 'valid');
59
59
  }
60
60
  get invalid() {
61
61
  return !this._valid;
@@ -88,7 +88,7 @@ export class FormArray {
88
88
  this._disabled = false;
89
89
  }
90
90
  findByUuid(uuid) {
91
- return this._map.get(uuid);
91
+ return this.map.get(uuid);
92
92
  }
93
93
  push(group) {
94
94
  this.subscription(group);
@@ -131,7 +131,7 @@ export class FormArray {
131
131
  }
132
132
  updateValidityStatus(groups, validators) {
133
133
  if (validators) {
134
- const errors = arrayIsValid({ groups, validators });
134
+ const errors = formArrayIsValid({ groups, validators });
135
135
  this._errors = errors;
136
136
  this._error = errors[0];
137
137
  this._valid = errors.length === 0;
@@ -142,11 +142,11 @@ export class FormArray {
142
142
  this._error = undefined;
143
143
  }
144
144
  }
145
- refresh(_groups) {
146
- this._groups = _groups || [];
147
- this._map.clear();
145
+ refresh(groups) {
146
+ this._groups = groups || [];
147
+ this.map.clear();
148
148
  this._groups.forEach((group) => {
149
- this._map.set(group.uuid, group);
149
+ this.map.set(group.uuid, group);
150
150
  });
151
151
  this.updateValidityStatus(this._groups, this.validators);
152
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMlD,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAc7B,MAAM,OAAO,SAAS;IA8BpB,YACE,OAAyD,EACzD,UAAqC;QA5B/B,YAAO,GAA+B,EAAE,CAAC;QAEzC,WAAM,GAAG,IAAI,CAAC;QAEd,cAAS,GAAG,KAAK,CAAC;QAElB,YAAO,GAAqB,EAAE,CAAC;QAwBrC,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;IACtC,CAAC;IAEM,QAAQ,CAAC,GAAW;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAEM,UAAU,CAAC,IAAc;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,IAAI,CAAC,KAA+B;QACzC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,MAAkC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEM,eAAe,CAAC,MAAkC;QACvD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAEM,QAAQ,CAAC,MAAkC;QAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;IACxC,CAAC;IAEM,MAAM,CAAC,KAA+B;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEM,aAAa,CAAC,UAAoC;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAEM,SAAS,CAAC,UAA8B;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAEO,YAAY,CAAC,KAA+B;QAClD,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAEO,oBAAoB,CAC1B,MAAkC,EAClC,UAAqC;QAErC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,MAAmC;QACjD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QAE5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAEjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;CACF;AAiBD,MAAM,UAAU,SAAS,CAIvB,OAAyD,EACzD,UAAqC;IAErC,OAAO,IAAI,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Observer } from '@rolster/commons';
2
+ import { ValidatorResult } from '@rolster/validators';
3
+ import { AbstractControl } from '../form-control/form-control.type';
4
+ import { AbstractArrayControls, AbstractArrayGroup, ArrayControlsValue } from './form-array-group.type';
5
+ import { AbstractArrayControl } from './form-array-control.type';
6
+ export type ValidatorArrayFn<T extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<T, R> = AbstractArrayGroup<T, R>, V = any> = (groups: G[]) => ValidatorResult<V>;
7
+ export interface AbstractArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractControl<ArrayControlsValue<C>[]> {
8
+ readonly controls: C[];
9
+ readonly dirties: boolean;
10
+ disable: () => void;
11
+ enable: () => void;
12
+ findByUuid: (uuid: string) => Undefined<G>;
13
+ readonly groups: G[];
14
+ merge: (groups: G[]) => void;
15
+ readonly pristines: boolean;
16
+ push: (group: G) => void;
17
+ remove: (group: G) => void;
18
+ setDefaultValue: (groups: G[]) => void;
19
+ setValue: (groups: G[]) => void;
20
+ setValidators: (validators: ValidatorArrayFn<C, R>[]) => void;
21
+ readonly toucheds: boolean;
22
+ readonly untoucheds: boolean;
23
+ readonly value: ArrayControlsValue<C>[];
24
+ readonly wrong: boolean;
25
+ }
26
+ export interface ReactiveArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractArray<C, R, G> {
27
+ subscribe: (subscriber: SubscriberArray<C>) => Unsubscription;
28
+ }
29
+ export interface FormArrayOptions<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> {
30
+ groups?: G[];
31
+ validators?: ValidatorArrayFn<C, R>[];
32
+ }
33
+ export type ArrayFormControls<T extends AbstractArrayControl = AbstractArrayControl> = AbstractArrayControls<T>;
34
+ export type SubscriberArray<C extends ArrayFormControls> = Observer<ArrayControlsValue<C>[]>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form-array.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-array.type.js","sourceRoot":"","sources":["../../../src/form-array/form-array.type.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { Observable, Observer } from '@rolster/commons';
2
2
  import { ValidatorError, ValidatorFn } from '@rolster/validators';
3
- import { AbstractReactiveControl, FormControlOptions, FormValidatorsOptions, FormValueOptions } from './types';
4
- export declare class FormControl<T = any> implements AbstractReactiveControl<T> {
3
+ import { ReactiveFormControl, FormControlOptions, FormValidatorsOptions, FormValueOptions } from './form-control.type';
4
+ export declare class FormControl<T = any> implements ReactiveFormControl<T> {
5
5
  protected _focused: boolean;
6
6
  protected _touched: boolean;
7
7
  protected _dirty: boolean;
@@ -0,0 +1,13 @@
1
+ import { ValidatorError, ValidatorFn } from '@rolster/validators';
2
+ import { FormControlOptions } from './form-control.type';
3
+ type ControlArgsOptions<T = any> = [
4
+ FormControlOptions<T> | T | undefined,
5
+ Undefined<ValidatorFn<T>[]>
6
+ ];
7
+ interface ControlValidOptions<T> {
8
+ value: T;
9
+ validators: ValidatorFn<T>[];
10
+ }
11
+ export declare function createFormControlOptions<T, O extends FormControlOptions<T>>(...argsOptions: ControlArgsOptions<T>): O;
12
+ export declare const formControlIsValid: <T>({ value, validators }: ControlValidOptions<T>) => ValidatorError[];
13
+ export {};
@@ -0,0 +1,27 @@
1
+ function valueIsControlOptions(options) {
2
+ return (typeof options === 'object' &&
3
+ ('value' in options || 'validators' in options));
4
+ }
5
+ export function createFormControlOptions(...argsOptions) {
6
+ const [options, validators] = argsOptions;
7
+ if (!options) {
8
+ return { value: options, validators };
9
+ }
10
+ if (!validators && valueIsControlOptions(options)) {
11
+ return options;
12
+ }
13
+ return {
14
+ value: options,
15
+ validators
16
+ };
17
+ }
18
+ export const formControlIsValid = ({ value, validators }) => {
19
+ return validators.reduce((errors, validator) => {
20
+ const error = validator(value);
21
+ if (error) {
22
+ errors.push(error);
23
+ }
24
+ return errors;
25
+ }, []);
26
+ };
27
+ //# sourceMappingURL=form-control.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-control.helper.js","sourceRoot":"","sources":["../../../src/form-control/form-control.helper.ts"],"names":[],"mappings":"AAaA,SAAS,qBAAqB,CAC5B,OAAY;IAEZ,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,GAAG,WAAkC;IAErC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAO,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,qBAAqB,CAAO,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAY;QACnB,UAAU;KACN,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAI,EACpC,KAAK,EACL,UAAU,EACa,EAAoB,EAAE;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAsB,CAAC,CAAC;AAC7B,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { observable } from '@rolster/commons';
2
- import { createFormControlOptions } from './arguments';
3
- import { controlIsValid, hasError, someErrors } from './helpers';
2
+ import { hasError, someErrors } from '../helpers';
3
+ import { formControlIsValid, createFormControlOptions } from './form-control.helper';
4
4
  export class FormControl {
5
5
  constructor(options, validators) {
6
6
  this._focused = false;
@@ -105,7 +105,7 @@ export class FormControl {
105
105
  }
106
106
  updateValueAndValidity(value, validators) {
107
107
  if (validators) {
108
- const errors = controlIsValid({ value, validators });
108
+ const errors = formControlIsValid({ value, validators });
109
109
  this._error = errors[0];
110
110
  this._errors = errors;
111
111
  this._valid = errors.length === 0;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-control.js","sourceRoot":"","sources":["../../../src/form-control/form-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Observer } from '@rolster/commons';
2
+ import { ValidatorError, ValidatorFn } from '@rolster/validators';
3
+ export interface AbstractControl<T = any> {
4
+ readonly dirty: boolean;
5
+ readonly disabled: boolean;
6
+ readonly enabled: boolean;
7
+ readonly errors: ValidatorError[];
8
+ hasError: (key: string) => boolean;
9
+ readonly invalid: boolean;
10
+ readonly pristine: boolean;
11
+ reset: () => void;
12
+ someErrors: (key: string[]) => boolean;
13
+ readonly touched: boolean;
14
+ readonly untouched: boolean;
15
+ readonly valid: boolean;
16
+ readonly value: T;
17
+ readonly wrong: boolean;
18
+ readonly error?: ValidatorError;
19
+ }
20
+ export interface AbstractFormControl<T = any> extends AbstractControl<T> {
21
+ blur: () => void;
22
+ disable: () => void;
23
+ enable: () => void;
24
+ focus: () => void;
25
+ readonly focused: boolean;
26
+ setDefaultValue: (value: T) => void;
27
+ setStartValue: (value: T) => void;
28
+ setValue: (value: T) => void;
29
+ setValidators: (validators?: ValidatorFn<T>[]) => void;
30
+ touch: () => void;
31
+ readonly unfocused: boolean;
32
+ }
33
+ export interface ReactiveFormControl<T = any> extends AbstractFormControl<T> {
34
+ subscribe: (subscriber: Observer<T>) => Unsubscription;
35
+ }
36
+ export interface FormControlOptions<T = any> {
37
+ value: T;
38
+ validators?: ValidatorFn<T>[];
39
+ }
40
+ export type FormValueOptions<T> = Omit<FormControlOptions<T>, 'validators'>;
41
+ export type FormValidatorsOptions<T> = Omit<FormControlOptions<T>, 'value'>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form-control.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-control.type.js","sourceRoot":"","sources":["../../../src/form-control/form-control.type.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
1
  import { ValidatorError } from '@rolster/validators';
2
- import { AbstractControls, AbstractReactiveControl, AbstractReactiveGroup, ControlsValue, FormGroupOptions, SubscriberGroup, ValidatorGroupFn } from './types';
3
- export type FormControls<T extends AbstractReactiveControl = AbstractReactiveControl> = AbstractControls<T>;
4
- export declare class FormGroup<C extends FormControls = FormControls> implements AbstractReactiveGroup<C> {
2
+ import { ReactiveFormControl } from '../form-control/form-control.type';
3
+ import { AbstractControls, ControlsValue, FormGroupOptions, ReactiveFormGroup, SubscriberGroup, ValidatorGroupFn } from './form-group.type';
4
+ export type FormControls<T extends ReactiveFormControl = ReactiveFormControl> = AbstractControls<T>;
5
+ export declare class FormGroup<C extends FormControls = FormControls> implements ReactiveFormGroup<C> {
5
6
  protected _controls: C;
6
7
  private _errors;
7
8
  private _error?;
@@ -0,0 +1,17 @@
1
+ import { ValidatorError } from '@rolster/validators';
2
+ import { AbstractControl } from '../form-control/form-control.type';
3
+ import { AbstractControls, ControlsValue, FormGroupOptions, ValidatorGroupFn } from './form-group.type';
4
+ type GroupArgsOptions<C extends AbstractControls> = [
5
+ FormGroupOptions<C> | C,
6
+ Undefined<ValidatorGroupFn<C>[]>
7
+ ];
8
+ interface GroupValidOptions<T extends AbstractControls> {
9
+ controls: T;
10
+ validators: ValidatorGroupFn<T>[];
11
+ }
12
+ export declare function createFormGroupOptions<C extends AbstractControls, O extends FormGroupOptions<C>>(...argsOptions: GroupArgsOptions<C>): O;
13
+ export declare const formGroupIsValid: <C extends AbstractControls>({ controls, validators }: GroupValidOptions<C>) => ValidatorError[];
14
+ export declare const controlsToValue: <C extends AbstractControls>(controls: C) => ControlsValue<C>;
15
+ export declare const verifyAllTrueInControls: <T extends AbstractControl>(controls: AbstractControls<T>, key: keyof T) => boolean;
16
+ export declare const verifyAnyTrueInControls: <T extends AbstractControl>(controls: AbstractControls<T>, key: keyof T) => boolean;
17
+ export {};
@@ -0,0 +1,36 @@
1
+ import { parseBoolean } from '@rolster/commons';
2
+ function valueIsGroupOptions(options) {
3
+ return typeof options === 'object' && 'controls' in options;
4
+ }
5
+ export function createFormGroupOptions(...argsOptions) {
6
+ const [options, validators] = argsOptions;
7
+ if (!validators && valueIsGroupOptions(options)) {
8
+ return options;
9
+ }
10
+ return {
11
+ controls: options,
12
+ validators
13
+ };
14
+ }
15
+ export const formGroupIsValid = ({ controls, validators }) => {
16
+ return validators.reduce((errors, validator) => {
17
+ const error = validator(controls);
18
+ if (error) {
19
+ errors.push(error);
20
+ }
21
+ return errors;
22
+ }, []);
23
+ };
24
+ export const controlsToValue = (controls) => {
25
+ return Object.entries(controls).reduce((result, [key, { value }]) => {
26
+ result[key] = value;
27
+ return result;
28
+ }, {});
29
+ };
30
+ export const verifyAllTrueInControls = (controls, key) => {
31
+ return Object.values(controls).reduce((value, control) => control.disabled ? value : value && parseBoolean(control[key]), true);
32
+ };
33
+ export const verifyAnyTrueInControls = (controls, key) => {
34
+ return Object.values(controls).reduce((value, control) => control.disabled ? value : value || parseBoolean(control[key]), false);
35
+ };
36
+ //# sourceMappingURL=form-group.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-group.helper.js","sourceRoot":"","sources":["../../../src/form-group/form-group.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAoBhD,SAAS,mBAAmB,CAG1B,OAAY;IACZ,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,UAAU,IAAI,OAAO,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAGpC,GAAG,WAAgC;IACnC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC;IAE1C,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAO,OAAO,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAY;QACtB,UAAU;KACN,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAA6B,EAC3D,QAAQ,EACR,UAAU,EACW,EAAoB,EAAE;IAC3C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAsB,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAW,EACO,EAAE;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClE,MAAM,CAAC,GAAc,CAAC,GAAG,KAAK,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAsB,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAA6B,EAC7B,GAAY,EACH,EAAE;IACX,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACjB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAChE,IAAI,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,QAA6B,EAC7B,GAAY,EACH,EAAE;IACX,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACjB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAChE,KAAK,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { observable } from '@rolster/commons';
2
- import { createFormGroupOptions } from './arguments';
3
- import { controlsAllChecked, controlsPartialChecked, controlsToValue, groupIsValid } from './helpers';
2
+ import { controlsToValue, createFormGroupOptions, formGroupIsValid, verifyAllTrueInControls, verifyAnyTrueInControls } from './form-group.helper';
4
3
  export class FormGroup {
5
4
  constructor(options, validators) {
6
5
  this._errors = [];
@@ -21,10 +20,10 @@ export class FormGroup {
21
20
  return this._controls;
22
21
  }
23
22
  get touched() {
24
- return controlsPartialChecked(this.controls, 'touched');
23
+ return verifyAnyTrueInControls(this.controls, 'touched');
25
24
  }
26
25
  get toucheds() {
27
- return controlsAllChecked(this.controls, 'touched');
26
+ return verifyAllTrueInControls(this.controls, 'touched');
28
27
  }
29
28
  get untouched() {
30
29
  return !this.touched;
@@ -33,10 +32,10 @@ export class FormGroup {
33
32
  return !this.toucheds;
34
33
  }
35
34
  get dirty() {
36
- return controlsPartialChecked(this.controls, 'dirty');
35
+ return verifyAnyTrueInControls(this.controls, 'dirty');
37
36
  }
38
37
  get dirties() {
39
- return controlsAllChecked(this.controls, 'dirty');
38
+ return verifyAllTrueInControls(this.controls, 'dirty');
40
39
  }
41
40
  get pristine() {
42
41
  return !this.dirty;
@@ -45,7 +44,7 @@ export class FormGroup {
45
44
  return this.dirties;
46
45
  }
47
46
  get valid() {
48
- return this._valid && controlsAllChecked(this.controls, 'valid');
47
+ return this._valid && verifyAllTrueInControls(this.controls, 'valid');
49
48
  }
50
49
  get invalid() {
51
50
  return !this.valid;
@@ -76,7 +75,7 @@ export class FormGroup {
76
75
  }
77
76
  updateValueAndValidity(controls, validators) {
78
77
  if (validators) {
79
- const errors = groupIsValid({ controls, validators });
78
+ const errors = formGroupIsValid({ controls, validators });
80
79
  this._errors = errors;
81
80
  this._error = errors[0];
82
81
  this._valid = errors.length === 0;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-group.js","sourceRoot":"","sources":["../../../src/form-group/form-group.ts"],"names":[],"mappings":"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"}