@rolster/react-forms 18.11.4 → 18.12.1
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/index.js +263 -191
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +264 -192
- package/dist/es/index.js.map +1 -1
- package/dist/esm/form-array/form-array-control.d.ts +24 -22
- package/dist/esm/form-array/form-array-control.js +43 -36
- package/dist/esm/form-array/form-array-control.js.map +1 -1
- package/dist/esm/form-array/form-array-group.d.ts +4 -30
- package/dist/esm/form-array/form-array-group.js +84 -29
- package/dist/esm/form-array/form-array-group.js.map +1 -1
- package/dist/esm/form-array/form-array-list.d.ts +3 -18
- package/dist/esm/form-array/form-array-list.js +45 -34
- package/dist/esm/form-array/form-array-list.js.map +1 -1
- 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.js +1 -10
- package/dist/esm/form-control.js.map +1 -1
- package/dist/esm/form-group.js +50 -36
- package/dist/esm/form-group.js.map +1 -1
- package/dist/esm/types.d.ts +6 -6
- package/dist/esm/utilities.d.ts +2 -0
- package/dist/esm/utilities.js +9 -0
- package/dist/esm/utilities.js.map +1 -0
- package/package.json +69 -70
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-array-group.js","sourceRoot":"","sources":["../../../src/form-array/form-array-group.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAQlC,MAAM,
|
|
1
|
+
{"version":3,"file":"form-array-group.js","sourceRoot":"","sources":["../../../src/form-array/form-array-group.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmB9C,SAAS,gBAAgB,CACvB,QAAW,EACX,UAAkC;IAElC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO;QACL,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,QAAW,EACX,MAAwB;IAExB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO;gBACL,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACpD,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC;aAClD,CAAC;QAEJ,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAEtD,KAAK,OAAO;YACV,OAAO;gBACL,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC/C,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAChD,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAC9C,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACpD,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACjD,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;aACjC,CAAC;QAEJ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO;gBACL,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC/C,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAChD,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAC9C,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;aACjC,CAAC;QAEJ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,cAAc;IAyClB,YAAY,OAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAE1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAErC,MAAM,UAAU,GAAgC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;gBAC9C,QAAQ;aACT,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CAAC,UAA2C;QAC1D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,aAAa,CAAC,UAAsC;QACzD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC9C,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAES,OAAO,CAAC,MAAwB,EAAE,OAAsB;QAChE,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AAED,MAAM,iBAGJ,SAAQ,cAAoB;IAC5B,YAAY,OAAoC;QAC9C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAEzC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExE,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,MAAM;YACN,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC;YAChC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC9C,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC;YAChD,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC;YACpD,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC;YACjD,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAeD,MAAM,UAAU,cAAc,CAI5B,OAAoC,EACpC,UAAqC;IAErC,OAAO,IAAI,iBAAiB,CAAC;QAC3B,GAAG,sBAAsB,CAA6B,OAAO,EAAE,UAAU,CAAC;QAC1E,IAAI,EAAE,IAAI,EAAE;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,26 +1,11 @@
|
|
|
1
1
|
import { ArrayControlsValue, ArrayListValueToControls } from '@rolster/forms';
|
|
2
2
|
import { ValidatorFn } from '@rolster/validators';
|
|
3
|
-
import { ReactArrayControls, ReactArrayList
|
|
4
|
-
import { RolsterReactArrayControl } from './form-array-control';
|
|
5
|
-
type RolsterListOptions<C extends ReactArrayControls = ReactArrayControls> = Omit<ReactArrayListOptions<C>, 'value'>;
|
|
6
|
-
export declare class RolsterArrayList<E extends HTMLElement = HTMLElement, C extends ReactArrayControls = ReactArrayControls> extends RolsterReactArrayControl<E, ArrayControlsValue<C>[]> implements ReactArrayList<C> {
|
|
7
|
-
readonly controls: C[];
|
|
8
|
-
readonly invalid: boolean;
|
|
9
|
-
readonly valid: boolean;
|
|
10
|
-
readonly wrong: boolean;
|
|
11
|
-
protected valueToControls: ArrayListValueToControls<C>;
|
|
12
|
-
constructor(options: RolsterListOptions<C>);
|
|
13
|
-
setValue(value: ArrayControlsValue<C>[]): void;
|
|
14
|
-
clone(options: ReactArrayListOptions<C>): RolsterArrayList<E, C>;
|
|
15
|
-
push(controls: C): void;
|
|
16
|
-
remove(controls: C): void;
|
|
17
|
-
protected refresh(changes: Partial<ReactArrayListOptions<C>>): void;
|
|
18
|
-
private subscribeControls;
|
|
19
|
-
}
|
|
3
|
+
import { ReactArrayControls, ReactArrayList } from '../types';
|
|
20
4
|
interface ReactListOptions<C extends ReactArrayControls = ReactArrayControls> {
|
|
5
|
+
valueToControls: ArrayListValueToControls<C>;
|
|
21
6
|
touched?: boolean;
|
|
22
7
|
validators?: ValidatorFn<ArrayControlsValue<C>[] | undefined>[];
|
|
23
8
|
value?: ArrayControlsValue<C>[] | undefined;
|
|
24
9
|
}
|
|
25
|
-
export declare function formArrayList<C extends ReactArrayControls = ReactArrayControls>(
|
|
10
|
+
export declare function formArrayList<C extends ReactArrayControls = ReactArrayControls>(options: ReactListOptions<C>): ReactArrayList<C>;
|
|
26
11
|
export {};
|
|
@@ -1,65 +1,76 @@
|
|
|
1
|
-
import { controlsAllChecked, controlsToValue } from '@rolster/forms/helpers';
|
|
1
|
+
import { controlIsValid, controlsAllChecked, controlsToValue } from '@rolster/forms/helpers';
|
|
2
2
|
import { v4 as uuid } from 'uuid';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { replaceControl } from '../utilities';
|
|
4
|
+
import { RolsterArrayControl } from './form-array-control';
|
|
5
|
+
class RolsterArrayList extends RolsterArrayControl {
|
|
5
6
|
constructor(options) {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const { controls, valueToControls, validators } = options;
|
|
8
|
+
const value = controls.map((controls) => controlsToValue(controls));
|
|
9
|
+
const errors = validators ? controlIsValid({ value, validators }) : [];
|
|
10
|
+
super({ ...options, errors, value });
|
|
11
|
+
this.valueToControls = valueToControls;
|
|
12
|
+
this.controls = controls;
|
|
10
13
|
this.valid =
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
errors.length === 0 &&
|
|
15
|
+
controls.reduce((valid, controls) => valid && controlsAllChecked(controls, 'valid'), true);
|
|
13
16
|
this.invalid = !this.valid;
|
|
14
17
|
this.wrong = this.touched && this.invalid;
|
|
15
|
-
|
|
16
|
-
this.
|
|
18
|
+
controls.forEach((reactControls) => {
|
|
19
|
+
this._subscribe(reactControls);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
setInitialValue(value) {
|
|
23
|
+
this.refresh('list', {
|
|
24
|
+
controls: value.map((value) => this.valueToControls(value)),
|
|
25
|
+
initialValue: value
|
|
17
26
|
});
|
|
18
27
|
}
|
|
19
28
|
setValue(value) {
|
|
20
|
-
this.refresh({
|
|
29
|
+
this.refresh('list', {
|
|
21
30
|
controls: value.map((value) => this.valueToControls(value))
|
|
22
31
|
});
|
|
23
32
|
}
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
reset() {
|
|
34
|
+
this.refresh('list', {
|
|
35
|
+
controls: this.initialValue.map((value) => this.valueToControls(value))
|
|
36
|
+
});
|
|
26
37
|
}
|
|
27
38
|
push(controls) {
|
|
28
|
-
this.refresh({
|
|
39
|
+
this.refresh('list', {
|
|
29
40
|
controls: [...this.controls, controls]
|
|
30
41
|
});
|
|
31
42
|
}
|
|
32
43
|
remove(controls) {
|
|
33
|
-
this.refresh({
|
|
34
|
-
controls: this.controls.filter((
|
|
44
|
+
this.refresh('list', {
|
|
45
|
+
controls: this.controls.filter((_controls) => _controls !== controls)
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
builder(options) {
|
|
49
|
+
return new RolsterArrayList({
|
|
50
|
+
...this,
|
|
51
|
+
...options,
|
|
52
|
+
valueToControls: this.valueToControls
|
|
35
53
|
});
|
|
36
54
|
}
|
|
37
|
-
refresh(
|
|
38
|
-
super.refresh(
|
|
55
|
+
refresh(action, options) {
|
|
56
|
+
super.refresh(action, options);
|
|
39
57
|
}
|
|
40
|
-
|
|
41
|
-
Object.values(
|
|
42
|
-
control.subscribe((
|
|
43
|
-
const
|
|
58
|
+
_subscribe(reactControls) {
|
|
59
|
+
Object.values(reactControls).forEach((control) => {
|
|
60
|
+
control.subscribe((action, _control) => {
|
|
61
|
+
const _reactControls = this.controls.map((_controls) => reactControls !== _controls
|
|
44
62
|
? _controls
|
|
45
|
-
:
|
|
46
|
-
|
|
47
|
-
control.uuid === options.uuid
|
|
48
|
-
? control.clone(options)
|
|
49
|
-
: control;
|
|
50
|
-
return controls;
|
|
51
|
-
}, {}));
|
|
52
|
-
this.refresh({ controls });
|
|
63
|
+
: replaceControl(reactControls, _control));
|
|
64
|
+
this.refresh(action, { controls: _reactControls });
|
|
53
65
|
});
|
|
54
66
|
});
|
|
55
67
|
}
|
|
56
68
|
}
|
|
57
|
-
export function formArrayList(
|
|
69
|
+
export function formArrayList(options) {
|
|
58
70
|
const value = options?.value || [];
|
|
59
71
|
return new RolsterArrayList({
|
|
60
72
|
...options,
|
|
61
|
-
valueToControls,
|
|
62
|
-
controls: value.map((value) => valueToControls(value)),
|
|
73
|
+
controls: value.map((value) => options.valueToControls(value)),
|
|
63
74
|
initialValue: value,
|
|
64
75
|
uuid: uuid()
|
|
65
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-array-list.js","sourceRoot":"","sources":["../../../src/form-array/form-array-list.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"form-array-list.js","sourceRoot":"","sources":["../../../src/form-array/form-array-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
import { createFormArrayOptions } from '@rolster/forms/arguments';
|
|
2
2
|
import { arrayIsValid, controlsToValue, groupAllChecked, hasError as rolsterHasError, someErrors as rolsterSomeErrors } from '@rolster/forms/helpers';
|
|
3
|
-
import { i18nSubscribe } from '@rolster/i18n';
|
|
4
3
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return validators ? arrayIsValid({ groups, validators }) : [];
|
|
8
|
-
}
|
|
9
|
-
function validStateInArray(groups, validators) {
|
|
10
|
-
const errors = errorsInArray(groups, validators);
|
|
4
|
+
function refactorForValid(groups, validators) {
|
|
5
|
+
const errors = validators ? arrayIsValid({ groups, validators }) : [];
|
|
11
6
|
return {
|
|
12
7
|
errors,
|
|
13
8
|
valid: errors.length === 0 && groupAllChecked(groups, 'valid')
|
|
14
9
|
};
|
|
15
10
|
}
|
|
16
|
-
function
|
|
11
|
+
function refactorForGroups(groups, validators) {
|
|
17
12
|
return {
|
|
18
|
-
...
|
|
13
|
+
...refactorForValid(groups, validators),
|
|
19
14
|
groups,
|
|
20
15
|
controls: groups.map(({ controls }) => controls),
|
|
21
16
|
value: groups.map(({ controls }) => controlsToValue(controls))
|
|
22
17
|
};
|
|
23
18
|
}
|
|
19
|
+
function refactorForControls(state, groups, action) {
|
|
20
|
+
switch (action) {
|
|
21
|
+
case 'validators':
|
|
22
|
+
return refactorForValid(groups, state.validators);
|
|
23
|
+
case 'reset':
|
|
24
|
+
case 'list':
|
|
25
|
+
case 'value':
|
|
26
|
+
return refactorForGroups(groups, state.validators);
|
|
27
|
+
default:
|
|
28
|
+
return { groups };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
24
31
|
export function useFormArray(options, validators) {
|
|
25
32
|
const _options = createFormArrayOptions(options, validators);
|
|
26
33
|
const groups = _options.groups || [];
|
|
27
34
|
const initialValue = useRef(groups);
|
|
28
35
|
const [state, setState] = useState({
|
|
29
|
-
...
|
|
36
|
+
...refactorForValid(groups, _options.validators),
|
|
30
37
|
controls: groups.map(({ controls }) => controls),
|
|
31
38
|
dirty: false,
|
|
32
39
|
dirties: false,
|
|
@@ -38,21 +45,14 @@ export function useFormArray(options, validators) {
|
|
|
38
45
|
validators: _options.validators
|
|
39
46
|
});
|
|
40
47
|
useEffect(() => {
|
|
41
|
-
|
|
42
|
-
setState((state) =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const subscriber = (options) => {
|
|
50
|
-
setState((state) => ({
|
|
51
|
-
...state,
|
|
52
|
-
...replaceStateInArray(state.groups.map((group) => group.uuid === options.uuid
|
|
53
|
-
? new RolsterArrayGroup(options)
|
|
54
|
-
: group), state.validators)
|
|
55
|
-
}));
|
|
48
|
+
const subscriber = (action, group) => {
|
|
49
|
+
setState((state) => {
|
|
50
|
+
const groups = state.groups.map((_group) => _group.uuid === group.uuid ? group : _group);
|
|
51
|
+
return {
|
|
52
|
+
...state,
|
|
53
|
+
...refactorForControls(state, groups, action)
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
56
|
};
|
|
57
57
|
state.groups.forEach((group) => {
|
|
58
58
|
group.subscribe(subscriber);
|
|
@@ -67,49 +67,49 @@ export function useFormArray(options, validators) {
|
|
|
67
67
|
const setValue = useCallback((groups) => {
|
|
68
68
|
setState((state) => ({
|
|
69
69
|
...state,
|
|
70
|
-
...
|
|
70
|
+
...refactorForGroups(groups, state.validators)
|
|
71
71
|
}));
|
|
72
72
|
}, []);
|
|
73
73
|
const setInitialValue = useCallback((groups) => {
|
|
74
74
|
setState((state) => ({
|
|
75
75
|
...state,
|
|
76
|
-
...
|
|
76
|
+
...refactorForGroups(groups, state.validators)
|
|
77
77
|
}));
|
|
78
78
|
initialValue.current = groups;
|
|
79
79
|
}, []);
|
|
80
80
|
const push = useCallback((group) => {
|
|
81
81
|
setState((state) => ({
|
|
82
82
|
...state,
|
|
83
|
-
...
|
|
83
|
+
...refactorForGroups([...state.groups, group], state.validators)
|
|
84
84
|
}));
|
|
85
85
|
}, []);
|
|
86
86
|
const merge = useCallback((groups) => {
|
|
87
87
|
setState((state) => ({
|
|
88
88
|
...state,
|
|
89
|
-
...
|
|
89
|
+
...refactorForGroups([...state.groups, ...groups], state.validators)
|
|
90
90
|
}));
|
|
91
91
|
}, []);
|
|
92
92
|
const remove = useCallback(({ uuid }) => {
|
|
93
93
|
setState((state) => ({
|
|
94
94
|
...state,
|
|
95
|
-
...
|
|
96
|
-
}));
|
|
97
|
-
}, []);
|
|
98
|
-
const reset = useCallback(() => {
|
|
99
|
-
setState((state) => ({
|
|
100
|
-
...state,
|
|
101
|
-
...replaceStateInArray(initialValue.current, state.validators)
|
|
95
|
+
...refactorForGroups(state.groups.filter((group) => group.uuid !== uuid), state.validators)
|
|
102
96
|
}));
|
|
103
97
|
}, []);
|
|
104
98
|
const setValidators = useCallback((validators) => {
|
|
105
99
|
setState((state) => ({
|
|
106
100
|
...state,
|
|
107
|
-
...
|
|
101
|
+
...refactorForValid(state.groups, validators),
|
|
108
102
|
validators
|
|
109
103
|
}));
|
|
110
104
|
}, []);
|
|
111
105
|
const hasError = useCallback((key) => rolsterHasError(state.errors, key), [state.errors]);
|
|
112
106
|
const someErrors = useCallback((keys) => rolsterSomeErrors(state.errors, keys), [state.errors]);
|
|
107
|
+
const reset = useCallback(() => {
|
|
108
|
+
setState((state) => ({
|
|
109
|
+
...state,
|
|
110
|
+
...refactorForGroups(initialValue.current, state.validators)
|
|
111
|
+
}));
|
|
112
|
+
}, []);
|
|
113
113
|
return {
|
|
114
114
|
...state,
|
|
115
115
|
disable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,QAAQ,IAAI,eAAe,EAC3B,UAAU,IAAI,iBAAiB,EAChC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"form-array.js","sourceRoot":"","sources":["../../../src/form-array/form-array.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,QAAQ,IAAI,eAAe,EAC3B,UAAU,IAAI,iBAAiB,EAChC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA2BjE,SAAS,gBAAgB,CACvB,MAA+B,EAC/B,UAAqC;IAErC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtE,OAAO;QACL,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAIxB,MAAW,EAAE,UAAqC;IAClD,OAAO;QACL,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;QACvC,MAAM;QACN,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAI1B,KAA+B,EAAE,MAAW,EAAE,MAAwB;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAEpD,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAErD;YACE,OAAO,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAoBD,MAAM,UAAU,YAAY,CAK1B,OAA6D,EAC7D,UAAqC;IAErC,MAAM,QAAQ,GAAG,sBAAsB,CACrC,OAAO,EACP,UAAU,CACX,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA2B;QAC3D,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;QAChD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;QAChD,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;QACf,MAAM;QACN,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9D,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAoC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACpE,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACzC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC;gBAET,OAAO;oBACL,GAAG,KAAK;oBACR,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;iBAC9C,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7B,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAW,EAAE,EAAE;QAC3C,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;SAC/C,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,MAAW,EAAE,EAAE;QAClD,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;SAC/C,CAAC,CAAC,CAAC;QAEJ,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,KAAQ,EAAE,EAAE;QACpC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;SACjE,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,MAAW,EAAE,EAAE;QACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;SACrE,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,EAAK,EAAE,EAAE;QACzC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAClB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EACnD,KAAK,CAAC,UAAU,CACjB;SACF,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,UAAqC,EAAE,EAAE;QAC1E,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;YAC7C,UAAU;SACX,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,GAAW,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EACnD,CAAC,KAAK,CAAC,MAAM,CAAC,CACf,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,IAAc,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EACzD,CAAC,KAAK,CAAC,MAAM,CAAC,CACf,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnB,GAAG,KAAK;YACR,GAAG,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;SAC7D,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,GAAG,KAAK;QACR,OAAO;QACP,MAAM;QACN,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACtB,QAAQ;QACR,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK;QACrB,KAAK;QACL,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK;QACtB,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO;QACzB,IAAI;QACJ,MAAM;QACN,KAAK;QACL,eAAe;QACf,aAAa;QACb,QAAQ;QACR,UAAU;QACV,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO;QACzB,UAAU,EAAE,CAAC,KAAK,CAAC,QAAQ;QAC3B,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;KACrC,CAAC;AACJ,CAAC"}
|
package/dist/esm/form-control.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createFormControlOptions } from '@rolster/forms/arguments';
|
|
2
2
|
import { controlIsValid, hasError as rolsterHasError, someErrors as rolsterSomeErrors } from '@rolster/forms/helpers';
|
|
3
|
-
import {
|
|
4
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useCallback, useRef, useState } from 'react';
|
|
5
4
|
function errorsInControl(value, validators) {
|
|
6
5
|
return validators ? controlIsValid({ value, validators }) : [];
|
|
7
6
|
}
|
|
@@ -18,14 +17,6 @@ function useControl(options, validators) {
|
|
|
18
17
|
validators: _options.validators
|
|
19
18
|
});
|
|
20
19
|
const elementRef = useRef(null);
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
return i18nSubscribe(() => {
|
|
23
|
-
setState((state) => ({
|
|
24
|
-
...state,
|
|
25
|
-
errors: errorsInControl(state.value, state.validators)
|
|
26
|
-
}));
|
|
27
|
-
});
|
|
28
|
-
}, []);
|
|
29
20
|
const focus = useCallback(() => {
|
|
30
21
|
setState((state) => ({ ...state, focused: true }));
|
|
31
22
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-control.js","sourceRoot":"","sources":["../../src/form-control.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,cAAc,EACd,QAAQ,IAAI,eAAe,EAC3B,UAAU,IAAI,iBAAiB,EAChC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"form-control.js","sourceRoot":"","sources":["../../src/form-control.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/form-group.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { createFormGroupOptions } from '@rolster/forms/arguments';
|
|
2
2
|
import { controlsAllChecked, controlsPartialChecked, controlsToValue, groupIsValid, reduceControlsToArray } from '@rolster/forms/helpers';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return validators ? groupIsValid({ controls, validators }) : [];
|
|
7
|
-
}
|
|
8
|
-
function validStateInGroup(controls, validators) {
|
|
9
|
-
const errors = errorsInGroup(controls, validators);
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
function refactorForValid(controls, validators) {
|
|
5
|
+
const errors = validators ? groupIsValid({ controls, validators }) : [];
|
|
10
6
|
return {
|
|
11
7
|
errors,
|
|
12
8
|
valid: errors.length === 0 && controlsAllChecked(controls, 'valid')
|
|
@@ -15,8 +11,14 @@ function validStateInGroup(controls, validators) {
|
|
|
15
11
|
export function useFormGroup(options, validators) {
|
|
16
12
|
const _options = createFormGroupOptions(options, validators);
|
|
17
13
|
const { controls } = _options;
|
|
14
|
+
const firstEffects = useRef({
|
|
15
|
+
dirty: true,
|
|
16
|
+
disabledFocused: true,
|
|
17
|
+
touched: true,
|
|
18
|
+
value: true
|
|
19
|
+
});
|
|
18
20
|
const [state, setState] = useState({
|
|
19
|
-
...
|
|
21
|
+
...refactorForValid(controls, _options.validators),
|
|
20
22
|
controls,
|
|
21
23
|
dirties: controlsAllChecked(controls, 'dirty'),
|
|
22
24
|
dirty: controlsPartialChecked(controls, 'dirty'),
|
|
@@ -26,50 +28,62 @@ export function useFormGroup(options, validators) {
|
|
|
26
28
|
validators: _options.validators
|
|
27
29
|
});
|
|
28
30
|
useEffect(() => {
|
|
29
|
-
|
|
31
|
+
if (!firstEffects.current.value) {
|
|
30
32
|
setState((state) => ({
|
|
31
33
|
...state,
|
|
32
|
-
|
|
34
|
+
...refactorForValid(controls, state.validators),
|
|
35
|
+
controls,
|
|
36
|
+
value: controlsToValue(controls)
|
|
33
37
|
}));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...state,
|
|
39
|
-
...validStateInGroup(controls, state.validators),
|
|
40
|
-
controls,
|
|
41
|
-
value: controlsToValue(controls)
|
|
42
|
-
}));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
firstEffects.current.value = false;
|
|
41
|
+
}
|
|
43
42
|
}, reduceControlsToArray(controls, 'value'));
|
|
44
43
|
useEffect(() => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
if (!firstEffects.current.disabledFocused) {
|
|
45
|
+
setState((state) => ({
|
|
46
|
+
...state,
|
|
47
|
+
controls
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
firstEffects.current.disabledFocused = false;
|
|
52
|
+
}
|
|
49
53
|
}, [
|
|
50
54
|
...reduceControlsToArray(controls, 'disabled'),
|
|
51
55
|
...reduceControlsToArray(controls, 'focused')
|
|
52
56
|
]);
|
|
53
57
|
useEffect(() => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
if (!firstEffects.current.dirty) {
|
|
59
|
+
setState((state) => ({
|
|
60
|
+
...state,
|
|
61
|
+
controls,
|
|
62
|
+
dirty: controlsPartialChecked(controls, 'dirty'),
|
|
63
|
+
dirties: controlsAllChecked(controls, 'dirty')
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
firstEffects.current.dirty = false;
|
|
68
|
+
}
|
|
60
69
|
}, reduceControlsToArray(controls, 'dirty'));
|
|
61
70
|
useEffect(() => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
if (!firstEffects.current.touched) {
|
|
72
|
+
setState((state) => ({
|
|
73
|
+
...state,
|
|
74
|
+
controls,
|
|
75
|
+
touched: controlsPartialChecked(controls, 'touched'),
|
|
76
|
+
toucheds: controlsAllChecked(controls, 'touched')
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
firstEffects.current.touched = false;
|
|
81
|
+
}
|
|
68
82
|
}, reduceControlsToArray(controls, 'touched'));
|
|
69
83
|
const setValidators = useCallback((validators) => {
|
|
70
84
|
setState((state) => ({
|
|
71
85
|
...state,
|
|
72
|
-
...
|
|
86
|
+
...refactorForValid(state.controls, validators)
|
|
73
87
|
}));
|
|
74
88
|
}, []);
|
|
75
89
|
const reset = useCallback(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-group.js","sourceRoot":"","sources":["../../src/form-group.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"form-group.js","sourceRoot":"","sources":["../../src/form-group.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbstractArray, AbstractArrayControl, AbstractArrayControls, AbstractArrayGroup, AbstractArrayList, AbstractControls, AbstractFormControl, AbstractFormGroup, ArrayControlsValue, ArrayListValueToControls, FormArrayControlOptions
|
|
1
|
+
import { AbstractArray, AbstractArrayControl, AbstractArrayControls, AbstractArrayGroup, AbstractArrayList, AbstractControls, AbstractFormControl, AbstractFormGroup, ArrayControlsValue, ArrayListValueToControls, FormArrayControlOptions } from '@rolster/forms';
|
|
2
2
|
import { ValidatorFn } from '@rolster/validators';
|
|
3
3
|
import { RefObject } from 'react';
|
|
4
4
|
import { ReactAbstractControl } from './definitions';
|
|
@@ -17,17 +17,17 @@ export interface ReactArrayControlOptions<T = any> extends FormArrayControlOptio
|
|
|
17
17
|
focused?: boolean;
|
|
18
18
|
touched?: boolean;
|
|
19
19
|
}
|
|
20
|
-
export type ReactSubscriberControl<T = any> = (options: ReactArrayControlOptions<T>) => void;
|
|
21
20
|
export interface ReactArrayListOptions<C extends ReactArrayControls = ReactArrayControls> extends ReactArrayControlOptions<ArrayControlsValue<C>[]> {
|
|
22
21
|
controls: C[];
|
|
23
22
|
valueToControls: ArrayListValueToControls<C>;
|
|
24
23
|
}
|
|
24
|
+
export type ReactArrayAction = 'focused' | 'disabled' | 'touched' | 'value' | 'validators' | 'reset' | 'list';
|
|
25
25
|
export interface ReactArrayControl<E extends HTMLElement = HTMLElement, T = any> extends AbstractArrayControl<T> {
|
|
26
|
-
|
|
27
|
-
subscribe: (subscriber: ReactSubscriberControl<T>) => void;
|
|
26
|
+
subscribe: (subscriber: ReactArrayControlSubscriber<E, T>) => void;
|
|
28
27
|
elementRef?: RefObject<E>;
|
|
29
28
|
validators?: ValidatorFn<T>[];
|
|
30
29
|
}
|
|
30
|
+
export type ReactArrayControlSubscriber<E extends HTMLElement = HTMLElement, T = any> = (action: ReactArrayAction, control: ReactArrayControl<E, T>) => void;
|
|
31
31
|
export type ReactArrayVoid<E extends HTMLElement = HTMLElement, T = any> = ReactArrayControl<E, T | undefined>;
|
|
32
32
|
export type ReactHtmlArrayControl<T = any> = ReactArrayControl<HTMLElement, T>;
|
|
33
33
|
export type ReactHtmlArrayVoid<T = any> = ReactArrayVoid<HTMLElement, T>;
|
|
@@ -36,10 +36,10 @@ export type ReactInputArrayVoid<T = any> = ReactArrayVoid<HTMLInputElement, T>;
|
|
|
36
36
|
export type ReactArrayControls<T extends ReactArrayControl = ReactArrayControl> = AbstractArrayControls<T>;
|
|
37
37
|
export interface ReactArrayList<C extends ReactArrayControls = ReactArrayControls> extends ReactArrayControl<HTMLElement, ArrayControlsValue<C>[]>, AbstractArrayList<C> {
|
|
38
38
|
}
|
|
39
|
-
export type ReactSubscriberGroup<C extends ReactArrayControls = ReactArrayControls, R = any> = (options: FormArrayGroupOptions<C, R>) => void;
|
|
40
39
|
export interface ReactArrayGroup<C extends ReactArrayControls, R = any> extends AbstractArrayGroup<C, R> {
|
|
41
|
-
subscribe: (subscriber:
|
|
40
|
+
subscribe: (subscriber: ReactArrayGroupSubscriber<C, R>) => void;
|
|
42
41
|
}
|
|
42
|
+
export type ReactArrayGroupSubscriber<C extends ReactArrayControls, R = any> = (action: ReactArrayAction, control: ReactArrayGroup<C, R>) => void;
|
|
43
43
|
export interface ReactFormArray<C extends ReactArrayControls = ReactArrayControls, R = any, G extends ReactArrayGroup<C, R> = ReactArrayGroup<C, R>> extends AbstractArray<C, R, G> {
|
|
44
44
|
elementRef?: RefObject<HTMLElement>;
|
|
45
45
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function replaceControl(controls, control) {
|
|
2
|
+
return Object.entries(controls).reduce((controls, [key, _control]) => {
|
|
3
|
+
if (_control.uuid === control.uuid) {
|
|
4
|
+
controls[key] = control;
|
|
5
|
+
}
|
|
6
|
+
return controls;
|
|
7
|
+
}, controls);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAC5B,QAAW,EACX,OAA0B;IAE1B,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,QAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACnC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC"}
|