@rolster/forms 2.7.1 → 2.8.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 (46) hide show
  1. package/dist/cjs/arguments.js +46 -46
  2. package/dist/cjs/arguments.js.map +1 -1
  3. package/dist/cjs/helpers.js +53 -53
  4. package/dist/cjs/helpers.js.map +1 -1
  5. package/dist/cjs/index.js +510 -509
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/es/arguments.js +46 -46
  8. package/dist/es/arguments.js.map +1 -1
  9. package/dist/es/helpers.js +53 -53
  10. package/dist/es/helpers.js.map +1 -1
  11. package/dist/es/index.js +510 -509
  12. package/dist/es/index.js.map +1 -1
  13. package/dist/esm/arguments.d.ts +18 -18
  14. package/dist/esm/arguments.js +47 -47
  15. package/dist/esm/arguments.js.map +1 -1
  16. package/dist/esm/form-array/arguments.d.ts +6 -6
  17. package/dist/esm/form-array/arguments.js +1 -1
  18. package/dist/esm/form-array/form-array-control.d.ts +20 -20
  19. package/dist/esm/form-array/form-array-control.js +13 -13
  20. package/dist/esm/form-array/form-array-group.d.ts +13 -13
  21. package/dist/esm/form-array/form-array-group.js +14 -14
  22. package/dist/esm/form-array/form-array-list.d.ts +20 -19
  23. package/dist/esm/form-array/form-array-list.js +51 -50
  24. package/dist/esm/form-array/form-array-list.js.map +1 -1
  25. package/dist/esm/form-array/form-array.d.ts +54 -54
  26. package/dist/esm/form-array/form-array.js +145 -145
  27. package/dist/esm/form-array/form-array.js.map +1 -1
  28. package/dist/esm/form-array/index.d.ts +5 -5
  29. package/dist/esm/form-array/index.js +5 -5
  30. package/dist/esm/form-array/types.d.ts +2 -2
  31. package/dist/esm/form-array/types.js +1 -1
  32. package/dist/esm/form-control.d.ts +52 -52
  33. package/dist/esm/form-control.js +119 -119
  34. package/dist/esm/form-control.js.map +1 -1
  35. package/dist/esm/form-group.d.ts +34 -34
  36. package/dist/esm/form-group.js +93 -93
  37. package/dist/esm/form-group.js.map +1 -1
  38. package/dist/esm/helpers.d.ts +25 -25
  39. package/dist/esm/helpers.js +55 -55
  40. package/dist/esm/helpers.js.map +1 -1
  41. package/dist/esm/index.d.ts +4 -4
  42. package/dist/esm/index.js +4 -4
  43. package/dist/esm/types.d.ts +139 -139
  44. package/dist/esm/types.js +1 -1
  45. package/package.json +5 -5
  46. package/readme.md +2 -2
@@ -1,56 +1,56 @@
1
- import { parseBoolean } from '@rolster/commons';
2
- function reduceErrors(errors) {
3
- return errors.reduce((keys, { id }) => [...keys, id], []);
4
- }
5
- export const controlIsValid = ({ value, validators }) => {
6
- return validators.reduce((errors, validator) => {
7
- const error = validator(value);
8
- if (error) {
9
- errors.push(error);
10
- }
11
- return errors;
12
- }, []);
13
- };
14
- export const controlsAllChecked = (controls, key) => {
15
- return Object.values(controls).reduce((value, control) => control.disabled ? value : value && parseBoolean(control[key]), true);
16
- };
17
- export const controlsPartialChecked = (controls, key) => {
18
- return Object.values(controls).reduce((value, control) => control.disabled ? value : value || parseBoolean(control[key]), false);
19
- };
20
- export const controlsToValue = (controls) => {
21
- return Object.entries(controls).reduce((result, [key, { value }]) => {
22
- result[key] = value;
23
- return result;
24
- }, {});
25
- };
26
- export const groupIsValid = ({ controls, validators }) => {
27
- return validators.reduce((errors, validator) => {
28
- const error = validator(controls);
29
- if (error) {
30
- errors.push(error);
31
- }
32
- return errors;
33
- }, []);
34
- };
35
- export function groupAllChecked(groups, key) {
36
- return groups.reduce((value, group) => value && parseBoolean(group[key]), true);
37
- }
38
- export function groupPartialChecked(groups, key) {
39
- return groups.reduce((value, group) => value || parseBoolean(group[key]), false);
40
- }
41
- export const arrayIsValid = ({ groups, validators }) => {
42
- return validators.reduce((errors, validator) => {
43
- const error = validator(groups);
44
- if (error) {
45
- errors.push(error);
46
- }
47
- return errors;
48
- }, []);
49
- };
50
- export function hasError(errors, key) {
51
- return reduceErrors(errors).includes(key);
52
- }
53
- export function someErrors(errors, keys) {
54
- return reduceErrors(errors).some((key) => keys.includes(key));
55
- }
1
+ import { parseBoolean } from '@rolster/commons';
2
+ function reduceErrors(errors) {
3
+ return errors.reduce((keys, { id }) => [...keys, id], []);
4
+ }
5
+ export const controlIsValid = ({ value, validators }) => {
6
+ return validators.reduce((errors, validator) => {
7
+ const error = validator(value);
8
+ if (error) {
9
+ errors.push(error);
10
+ }
11
+ return errors;
12
+ }, []);
13
+ };
14
+ export const controlsAllChecked = (controls, key) => {
15
+ return Object.values(controls).reduce((value, control) => control.disabled ? value : value && parseBoolean(control[key]), true);
16
+ };
17
+ export const controlsPartialChecked = (controls, key) => {
18
+ return Object.values(controls).reduce((value, control) => control.disabled ? value : value || parseBoolean(control[key]), false);
19
+ };
20
+ export const controlsToValue = (controls) => {
21
+ return Object.entries(controls).reduce((result, [key, { value }]) => {
22
+ result[key] = value;
23
+ return result;
24
+ }, {});
25
+ };
26
+ export const groupIsValid = ({ controls, validators }) => {
27
+ return validators.reduce((errors, validator) => {
28
+ const error = validator(controls);
29
+ if (error) {
30
+ errors.push(error);
31
+ }
32
+ return errors;
33
+ }, []);
34
+ };
35
+ export function groupAllChecked(groups, key) {
36
+ return groups.reduce((value, group) => value && parseBoolean(group[key]), true);
37
+ }
38
+ export function groupPartialChecked(groups, key) {
39
+ return groups.reduce((value, group) => value || parseBoolean(group[key]), false);
40
+ }
41
+ export const arrayIsValid = ({ groups, validators }) => {
42
+ return validators.reduce((errors, validator) => {
43
+ const error = validator(groups);
44
+ if (error) {
45
+ errors.push(error);
46
+ }
47
+ return errors;
48
+ }, []);
49
+ };
50
+ export function hasError(errors, key) {
51
+ return reduceErrors(errors).includes(key);
52
+ }
53
+ export function someErrors(errors, keys) {
54
+ return reduceErrors(errors).some((key) => keys.includes(key));
55
+ }
56
56
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { FormArray, FormArrayControl, FormArrayControls, FormArrayGroup, FormArrayList, FormArrayVoid, formArray, formArrayControl, formArrayGroup, formArrayList } from './form-array';
2
- export { FormControl, formControl } from './form-control';
3
- export { FormControls, FormGroup, formGroup } from './form-group';
4
- export * from './types';
1
+ export { FormArray, FormArrayControl, FormArrayControls, FormArrayGroup, FormArrayList, FormArrayVoid, formArray, formArrayControl, formArrayGroup, formArrayList } from './form-array';
2
+ export { FormControl, formControl } from './form-control';
3
+ export { FormControls, FormGroup, formGroup } from './form-group';
4
+ export * from './types';
package/dist/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { FormArray, FormArrayControl, FormArrayGroup, FormArrayList, formArray, formArrayControl, formArrayGroup, formArrayList } from './form-array';
2
- export { FormControl, formControl } from './form-control';
3
- export { FormGroup, formGroup } from './form-group';
4
- export * from './types';
1
+ export { FormArray, FormArrayControl, FormArrayGroup, FormArrayList, formArray, formArrayControl, formArrayGroup, formArrayList } from './form-array';
2
+ export { FormControl, formControl } from './form-control';
3
+ export { FormGroup, formGroup } from './form-group';
4
+ export * from './types';
5
5
  //# sourceMappingURL=index.js.map
@@ -1,139 +1,139 @@
1
- import { ValidatorError, ValidatorFn, ValidatorResult } from '@rolster/validators';
2
- export type ValidationFormType = 'control' | 'group' | 'array';
3
- export interface ValidationFormError<T = any> extends ValidatorError<T> {
4
- type: ValidationFormType;
5
- }
6
- export type SubscriberControl<T> = (value: T) => void;
7
- export interface AbstractControl<T = any> {
8
- readonly dirty: boolean;
9
- readonly disabled: boolean;
10
- readonly enabled: boolean;
11
- readonly errors: ValidatorError[];
12
- hasError: (key: string) => boolean;
13
- readonly invalid: boolean;
14
- readonly pristine: boolean;
15
- reset: () => void;
16
- someErrors: (key: string[]) => boolean;
17
- readonly touched: boolean;
18
- readonly untouched: boolean;
19
- readonly valid: boolean;
20
- readonly value: T;
21
- readonly wrong: boolean;
22
- readonly error?: ValidatorError;
23
- }
24
- export interface AbstractFormControl<T = any> extends AbstractControl<T> {
25
- blur: () => void;
26
- disable: () => void;
27
- enable: () => void;
28
- focus: () => void;
29
- readonly focused: boolean;
30
- setValue: (value: T) => void;
31
- setValidators: (validators?: ValidatorFn<T>[]) => void;
32
- touch: () => void;
33
- readonly unfocused: boolean;
34
- }
35
- export interface AbstractReactiveControl<T = any> extends AbstractFormControl<T> {
36
- subscribe: (subscriber: SubscriberControl<T>) => Unsubscription;
37
- }
38
- export type AbstractControls<T extends AbstractControl = AbstractControl> = Record<string, T>;
39
- export interface AbstractGroup<C extends AbstractControls = AbstractControls> {
40
- readonly controls: C;
41
- readonly dirty: boolean;
42
- readonly dirtyAll: boolean;
43
- readonly errors: ValidatorError[];
44
- readonly invalid: boolean;
45
- readonly pristine: boolean;
46
- readonly pristineAll: boolean;
47
- readonly touched: boolean;
48
- readonly touchedAll: boolean;
49
- readonly untouched: boolean;
50
- readonly untouchedAll: boolean;
51
- readonly valid: boolean;
52
- readonly wrong: boolean;
53
- readonly error?: ValidatorError;
54
- }
55
- export type ControlsValue<C extends AbstractControls = AbstractControls> = {
56
- [K in keyof C]: C[K]['value'];
57
- };
58
- export type ValidatorGroupFn<C extends AbstractControls = AbstractControls, V = any> = (controls: C) => ValidatorResult<V>;
59
- export type SubscriberGroup<C extends AbstractControls = AbstractControls> = (value: ControlsValue<C>) => void;
60
- export interface AbstractFormGroup<C extends AbstractControls = AbstractControls> extends AbstractGroup<C> {
61
- reset: () => void;
62
- setValidators: (validators: ValidatorGroupFn<C>[]) => void;
63
- readonly value: ControlsValue<C>;
64
- }
65
- export interface AbstractReactiveGroup<C extends AbstractControls = AbstractControls> extends AbstractFormGroup<C> {
66
- subscribe: (subscriber: SubscriberGroup<C>) => Unsubscription;
67
- }
68
- export interface AbstractArrayControl<T = any> extends AbstractFormControl<T> {
69
- readonly uuid: string;
70
- }
71
- export interface AbstractReactiveArrayControl<T = any> extends AbstractArrayControl<T> {
72
- subscribe: (subscriber: SubscriberControl<T>) => Unsubscription;
73
- }
74
- export type AbstractArrayControls<T extends AbstractArrayControl = AbstractArrayControl> = AbstractControls<T>;
75
- export type ArrayControlsValue<C extends AbstractArrayControls> = {
76
- [K in keyof C]: C[K]['value'];
77
- };
78
- export interface AbstractArrayGroup<C extends AbstractArrayControls, R = any> extends AbstractGroup<C> {
79
- setValidators: (validators: ValidatorGroupFn<C>[]) => void;
80
- readonly uuid: string;
81
- readonly value: ArrayControlsValue<C>;
82
- resource?: R;
83
- }
84
- export interface AbstractReactiveArrayGroup<C extends AbstractArrayControls, R = any> extends AbstractArrayGroup<C, R> {
85
- subscribe: (subscriber: SubscriberGroup<C>) => Unsubscription;
86
- }
87
- export type ValidatorArrayFn<T extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<T, R> = AbstractArrayGroup<T, R>, V = any> = (groups: G[]) => ValidatorResult<V>;
88
- export type ArrayFormControls<T extends AbstractArrayControl = AbstractArrayControl> = AbstractArrayControls<T>;
89
- export type SubscriberArray<C extends ArrayFormControls> = SubscriberControl<ArrayControlsValue<C>[]>;
90
- export interface AbstractArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractControl<ArrayControlsValue<C>[]> {
91
- readonly controls: C[];
92
- readonly dirtyAll: boolean;
93
- disable: () => void;
94
- enable: () => void;
95
- readonly groups: G[];
96
- merge: (groups: G[]) => void;
97
- readonly pristineAll: boolean;
98
- push: (group: G) => void;
99
- remove: (group: G) => void;
100
- set: (groups: G[]) => void;
101
- setValidators: (validators: ValidatorArrayFn<C, R>[]) => void;
102
- readonly touchedAll: boolean;
103
- readonly untouchedAll: boolean;
104
- readonly value: ArrayControlsValue<C>[];
105
- readonly wrong: boolean;
106
- }
107
- export interface AbstractArrayList<C extends AbstractArrayControls = AbstractArrayControls> extends AbstractArrayControl<ArrayControlsValue<C>[]> {
108
- controls: C[];
109
- push(value: ArrayControlsValue<C>): void;
110
- remove(controls: C): void;
111
- }
112
- export type ArrayListValueToControls<C extends AbstractArrayControls = AbstractArrayControls> = (value: ArrayControlsValue<C>) => C;
113
- export interface AbstractReactiveArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractArray<C, R, G> {
114
- subscribe: (subscriber: SubscriberArray<C>) => Unsubscription;
115
- }
116
- export interface FormControlOptions<T = any> {
117
- value: T;
118
- validators?: ValidatorFn<T>[];
119
- }
120
- export type FormValueOptions<T> = Omit<FormControlOptions<T>, 'validators'>;
121
- export type FormValidatorsOptions<T> = Omit<FormControlOptions<T>, 'value'>;
122
- export interface FormGroupOptions<C extends AbstractControls = AbstractControls> {
123
- controls: C;
124
- validators?: ValidatorGroupFn<C>[];
125
- }
126
- export interface FormArrayControlOptions<T = any> extends FormControlOptions<T> {
127
- uuid: string;
128
- }
129
- export interface FormArrayListOptions<C extends AbstractArrayControls = AbstractArrayControls> extends FormArrayControlOptions<ArrayControlsValue<C>[]> {
130
- valueToControl: ArrayListValueToControls<C>;
131
- }
132
- export interface FormArrayGroupOptions<C extends AbstractArrayControls = AbstractArrayControls, R = any> extends FormGroupOptions<C> {
133
- uuid: string;
134
- resource?: R;
135
- }
136
- export interface FormArrayOptions<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> {
137
- groups?: G[];
138
- validators?: ValidatorArrayFn<C, R>[];
139
- }
1
+ import { ValidatorError, ValidatorFn, ValidatorResult } from '@rolster/validators';
2
+ export type ValidationFormType = 'control' | 'group' | 'array';
3
+ export interface ValidationFormError<T = any> extends ValidatorError<T> {
4
+ type: ValidationFormType;
5
+ }
6
+ export type SubscriberControl<T> = (value: T) => void;
7
+ export interface AbstractControl<T = any> {
8
+ readonly dirty: boolean;
9
+ readonly disabled: boolean;
10
+ readonly enabled: boolean;
11
+ readonly errors: ValidatorError[];
12
+ hasError: (key: string) => boolean;
13
+ readonly invalid: boolean;
14
+ readonly pristine: boolean;
15
+ reset: () => void;
16
+ someErrors: (key: string[]) => boolean;
17
+ readonly touched: boolean;
18
+ readonly untouched: boolean;
19
+ readonly valid: boolean;
20
+ readonly value: T;
21
+ readonly wrong: boolean;
22
+ readonly error?: ValidatorError;
23
+ }
24
+ export interface AbstractFormControl<T = any> extends AbstractControl<T> {
25
+ blur: () => void;
26
+ disable: () => void;
27
+ enable: () => void;
28
+ focus: () => void;
29
+ readonly focused: boolean;
30
+ setValue: (value: T) => void;
31
+ setValidators: (validators?: ValidatorFn<T>[]) => void;
32
+ touch: () => void;
33
+ readonly unfocused: boolean;
34
+ }
35
+ export interface AbstractReactiveControl<T = any> extends AbstractFormControl<T> {
36
+ subscribe: (subscriber: SubscriberControl<T>) => Unsubscription;
37
+ }
38
+ export type AbstractControls<T extends AbstractControl = AbstractControl> = Record<string, T>;
39
+ export interface AbstractGroup<C extends AbstractControls = AbstractControls> {
40
+ readonly controls: C;
41
+ readonly dirty: boolean;
42
+ readonly dirtyAll: boolean;
43
+ readonly errors: ValidatorError[];
44
+ readonly invalid: boolean;
45
+ readonly pristine: boolean;
46
+ readonly pristineAll: boolean;
47
+ readonly touched: boolean;
48
+ readonly touchedAll: boolean;
49
+ readonly untouched: boolean;
50
+ readonly untouchedAll: boolean;
51
+ readonly valid: boolean;
52
+ readonly wrong: boolean;
53
+ readonly error?: ValidatorError;
54
+ }
55
+ export type ControlsValue<C extends AbstractControls = AbstractControls> = {
56
+ [K in keyof C]: C[K]['value'];
57
+ };
58
+ export type ValidatorGroupFn<C extends AbstractControls = AbstractControls, V = any> = (controls: C) => ValidatorResult<V>;
59
+ export type SubscriberGroup<C extends AbstractControls = AbstractControls> = (value: ControlsValue<C>) => void;
60
+ export interface AbstractFormGroup<C extends AbstractControls = AbstractControls> extends AbstractGroup<C> {
61
+ reset: () => void;
62
+ setValidators: (validators: ValidatorGroupFn<C>[]) => void;
63
+ readonly value: ControlsValue<C>;
64
+ }
65
+ export interface AbstractReactiveGroup<C extends AbstractControls = AbstractControls> extends AbstractFormGroup<C> {
66
+ subscribe: (subscriber: SubscriberGroup<C>) => Unsubscription;
67
+ }
68
+ export interface AbstractArrayControl<T = any> extends AbstractFormControl<T> {
69
+ readonly uuid: string;
70
+ }
71
+ export interface AbstractReactiveArrayControl<T = any> extends AbstractArrayControl<T> {
72
+ subscribe: (subscriber: SubscriberControl<T>) => Unsubscription;
73
+ }
74
+ export type AbstractArrayControls<T extends AbstractArrayControl = AbstractArrayControl> = AbstractControls<T>;
75
+ export type ArrayControlsValue<C extends AbstractArrayControls> = {
76
+ [K in keyof C]: C[K]['value'];
77
+ };
78
+ export interface AbstractArrayGroup<C extends AbstractArrayControls, R = any> extends AbstractGroup<C> {
79
+ setValidators: (validators: ValidatorGroupFn<C>[]) => void;
80
+ readonly uuid: string;
81
+ readonly value: ArrayControlsValue<C>;
82
+ resource?: R;
83
+ }
84
+ export interface AbstractReactiveArrayGroup<C extends AbstractArrayControls, R = any> extends AbstractArrayGroup<C, R> {
85
+ subscribe: (subscriber: SubscriberGroup<C>) => Unsubscription;
86
+ }
87
+ export type ValidatorArrayFn<T extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<T, R> = AbstractArrayGroup<T, R>, V = any> = (groups: G[]) => ValidatorResult<V>;
88
+ export type ArrayFormControls<T extends AbstractArrayControl = AbstractArrayControl> = AbstractArrayControls<T>;
89
+ export type SubscriberArray<C extends ArrayFormControls> = SubscriberControl<ArrayControlsValue<C>[]>;
90
+ export interface AbstractArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractControl<ArrayControlsValue<C>[]> {
91
+ readonly controls: C[];
92
+ readonly dirtyAll: boolean;
93
+ disable: () => void;
94
+ enable: () => void;
95
+ readonly groups: G[];
96
+ merge: (groups: G[]) => void;
97
+ readonly pristineAll: boolean;
98
+ push: (group: G) => void;
99
+ remove: (group: G) => void;
100
+ set: (groups: G[]) => void;
101
+ setValidators: (validators: ValidatorArrayFn<C, R>[]) => void;
102
+ readonly touchedAll: boolean;
103
+ readonly untouchedAll: boolean;
104
+ readonly value: ArrayControlsValue<C>[];
105
+ readonly wrong: boolean;
106
+ }
107
+ export interface AbstractArrayList<C extends AbstractArrayControls = AbstractArrayControls> extends AbstractArrayControl<ArrayControlsValue<C>[]> {
108
+ controls: C[];
109
+ push(controls: C): void;
110
+ remove(controls: C): void;
111
+ }
112
+ export type ArrayListValueToControls<C extends AbstractArrayControls = AbstractArrayControls> = (value: ArrayControlsValue<C>) => C;
113
+ export interface AbstractReactiveArray<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> extends AbstractArray<C, R, G> {
114
+ subscribe: (subscriber: SubscriberArray<C>) => Unsubscription;
115
+ }
116
+ export interface FormControlOptions<T = any> {
117
+ value: T;
118
+ validators?: ValidatorFn<T>[];
119
+ }
120
+ export type FormValueOptions<T> = Omit<FormControlOptions<T>, 'validators'>;
121
+ export type FormValidatorsOptions<T> = Omit<FormControlOptions<T>, 'value'>;
122
+ export interface FormGroupOptions<C extends AbstractControls = AbstractControls> {
123
+ controls: C;
124
+ validators?: ValidatorGroupFn<C>[];
125
+ }
126
+ export interface FormArrayControlOptions<T = any> extends FormControlOptions<T> {
127
+ uuid: string;
128
+ }
129
+ export interface FormArrayListOptions<C extends AbstractArrayControls = AbstractArrayControls> extends FormArrayControlOptions<ArrayControlsValue<C>[]> {
130
+ valueToControl: ArrayListValueToControls<C>;
131
+ }
132
+ export interface FormArrayGroupOptions<C extends AbstractArrayControls = AbstractArrayControls, R = any> extends FormGroupOptions<C> {
133
+ uuid: string;
134
+ resource?: R;
135
+ }
136
+ export interface FormArrayOptions<C extends AbstractArrayControls = AbstractArrayControls, R = any, G extends AbstractArrayGroup<C, R> = AbstractArrayGroup<C, R>> {
137
+ groups?: G[];
138
+ validators?: ValidatorArrayFn<C, R>[];
139
+ }
package/dist/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolster/forms",
3
- "version": "2.7.1",
3
+ "version": "2.8.0",
4
4
  "description": "It implements a set of classes that allow managing the control of states of the input components of the UI.",
5
5
  "module": "dist/esm/index.js",
6
6
  "main": "dist/cjs/index.js",
@@ -48,8 +48,8 @@
48
48
  "prepublishOnly": "npm run build"
49
49
  },
50
50
  "dependencies": {
51
- "@rolster/commons": "^2.0.9",
52
- "@rolster/validators": "^2.0.2",
51
+ "@rolster/commons": "^2.1.0",
52
+ "@rolster/validators": "^2.1.0",
53
53
  "uuid": "^9.0.1"
54
54
  },
55
55
  "devDependencies": {
@@ -57,7 +57,7 @@
57
57
  "@rollup/plugin-node-resolve": "^15.2.1",
58
58
  "@rollup/plugin-typescript": "^11.1.3",
59
59
  "@rolster/rollup": "^1.0.6",
60
- "@rolster/types": "^1.0.9",
60
+ "@rolster/types": "^1.1.0",
61
61
  "@types/jest": "^29.5.1",
62
62
  "@types/uuid": "^9.0.7",
63
63
  "jest": "^29.5.0",
@@ -66,7 +66,7 @@
66
66
  "rollup": "^2.32.0",
67
67
  "ts-jest": "^29.1.0",
68
68
  "tslib": "^2.4.0",
69
- "typescript": "^4.9.0"
69
+ "typescript": "^5.7.2"
70
70
  },
71
71
  "repository": {
72
72
  "type": "git",
package/readme.md CHANGED
@@ -1,11 +1,11 @@
1
- # Rolster Helpers Forms
1
+ # Rolster Forms Utilities
2
2
 
3
3
  It implements a set of classes that allow managing the control of states of the input components of the UI.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```
8
- npm i @rolster/helpers-forms
8
+ npm i @rolster/forms
9
9
  ```
10
10
 
11
11
  ## Contributing