@reformer/core 1.0.0-beta.3
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/LICENSE +21 -0
- package/README.md +53 -0
- package/dist/behaviors.d.ts +2 -0
- package/dist/behaviors.js +230 -0
- package/dist/core/behavior/behavior-applicator.d.ts +71 -0
- package/dist/core/behavior/behavior-applicator.js +92 -0
- package/dist/core/behavior/behavior-context.d.ts +29 -0
- package/dist/core/behavior/behavior-context.js +38 -0
- package/dist/core/behavior/behavior-registry.d.ts +97 -0
- package/dist/core/behavior/behavior-registry.js +198 -0
- package/dist/core/behavior/behaviors/compute-from.d.ts +41 -0
- package/dist/core/behavior/behaviors/compute-from.js +84 -0
- package/dist/core/behavior/behaviors/copy-from.d.ts +31 -0
- package/dist/core/behavior/behaviors/copy-from.js +64 -0
- package/dist/core/behavior/behaviors/enable-when.d.ts +49 -0
- package/dist/core/behavior/behaviors/enable-when.js +81 -0
- package/dist/core/behavior/behaviors/index.d.ts +11 -0
- package/dist/core/behavior/behaviors/index.js +11 -0
- package/dist/core/behavior/behaviors/reset-when.d.ts +51 -0
- package/dist/core/behavior/behaviors/reset-when.js +63 -0
- package/dist/core/behavior/behaviors/revalidate-when.d.ts +30 -0
- package/dist/core/behavior/behaviors/revalidate-when.js +51 -0
- package/dist/core/behavior/behaviors/sync-fields.d.ts +28 -0
- package/dist/core/behavior/behaviors/sync-fields.js +66 -0
- package/dist/core/behavior/behaviors/transform-value.d.ts +120 -0
- package/dist/core/behavior/behaviors/transform-value.js +110 -0
- package/dist/core/behavior/behaviors/watch-field.d.ts +35 -0
- package/dist/core/behavior/behaviors/watch-field.js +56 -0
- package/dist/core/behavior/compose-behavior.d.ts +106 -0
- package/dist/core/behavior/compose-behavior.js +166 -0
- package/dist/core/behavior/create-field-path.d.ts +20 -0
- package/dist/core/behavior/create-field-path.js +69 -0
- package/dist/core/behavior/index.d.ts +12 -0
- package/dist/core/behavior/index.js +17 -0
- package/dist/core/behavior/types.d.ts +152 -0
- package/dist/core/behavior/types.js +7 -0
- package/dist/core/context/form-context-impl.d.ts +29 -0
- package/dist/core/context/form-context-impl.js +37 -0
- package/dist/core/factories/index.d.ts +6 -0
- package/dist/core/factories/index.js +6 -0
- package/dist/core/factories/node-factory.d.ts +209 -0
- package/dist/core/factories/node-factory.js +281 -0
- package/dist/core/nodes/array-node.d.ts +308 -0
- package/dist/core/nodes/array-node.js +534 -0
- package/dist/core/nodes/field-node.d.ts +269 -0
- package/dist/core/nodes/field-node.js +510 -0
- package/dist/core/nodes/form-node.d.ts +342 -0
- package/dist/core/nodes/form-node.js +343 -0
- package/dist/core/nodes/group-node/field-registry.d.ts +191 -0
- package/dist/core/nodes/group-node/field-registry.js +215 -0
- package/dist/core/nodes/group-node/index.d.ts +11 -0
- package/dist/core/nodes/group-node/index.js +11 -0
- package/dist/core/nodes/group-node/proxy-builder.d.ts +71 -0
- package/dist/core/nodes/group-node/proxy-builder.js +161 -0
- package/dist/core/nodes/group-node/state-manager.d.ts +184 -0
- package/dist/core/nodes/group-node/state-manager.js +265 -0
- package/dist/core/nodes/group-node.d.ts +494 -0
- package/dist/core/nodes/group-node.js +770 -0
- package/dist/core/types/deep-schema.d.ts +78 -0
- package/dist/core/types/deep-schema.js +11 -0
- package/dist/core/types/field-path.d.ts +42 -0
- package/dist/core/types/field-path.js +4 -0
- package/dist/core/types/form-context.d.ts +83 -0
- package/dist/core/types/form-context.js +25 -0
- package/dist/core/types/group-node-proxy.d.ts +135 -0
- package/dist/core/types/group-node-proxy.js +31 -0
- package/dist/core/types/index.d.ts +163 -0
- package/dist/core/types/index.js +4 -0
- package/dist/core/types/validation-schema.d.ts +104 -0
- package/dist/core/types/validation-schema.js +10 -0
- package/dist/core/utils/create-form.d.ts +61 -0
- package/dist/core/utils/create-form.js +24 -0
- package/dist/core/utils/debounce.d.ts +160 -0
- package/dist/core/utils/debounce.js +197 -0
- package/dist/core/utils/error-handler.d.ts +180 -0
- package/dist/core/utils/error-handler.js +226 -0
- package/dist/core/utils/field-path-navigator.d.ts +240 -0
- package/dist/core/utils/field-path-navigator.js +374 -0
- package/dist/core/utils/index.d.ts +14 -0
- package/dist/core/utils/index.js +14 -0
- package/dist/core/utils/registry-helpers.d.ts +50 -0
- package/dist/core/utils/registry-helpers.js +79 -0
- package/dist/core/utils/registry-stack.d.ts +69 -0
- package/dist/core/utils/registry-stack.js +86 -0
- package/dist/core/utils/resources.d.ts +41 -0
- package/dist/core/utils/resources.js +69 -0
- package/dist/core/utils/subscription-manager.d.ts +180 -0
- package/dist/core/utils/subscription-manager.js +214 -0
- package/dist/core/utils/type-guards.d.ts +116 -0
- package/dist/core/utils/type-guards.js +169 -0
- package/dist/core/validation/core/apply-when.d.ts +28 -0
- package/dist/core/validation/core/apply-when.js +41 -0
- package/dist/core/validation/core/apply.d.ts +63 -0
- package/dist/core/validation/core/apply.js +38 -0
- package/dist/core/validation/core/index.d.ts +8 -0
- package/dist/core/validation/core/index.js +8 -0
- package/dist/core/validation/core/validate-async.d.ts +42 -0
- package/dist/core/validation/core/validate-async.js +45 -0
- package/dist/core/validation/core/validate-tree.d.ts +35 -0
- package/dist/core/validation/core/validate-tree.js +37 -0
- package/dist/core/validation/core/validate.d.ts +32 -0
- package/dist/core/validation/core/validate.js +38 -0
- package/dist/core/validation/field-path.d.ts +43 -0
- package/dist/core/validation/field-path.js +147 -0
- package/dist/core/validation/index.d.ts +21 -0
- package/dist/core/validation/index.js +33 -0
- package/dist/core/validation/validate-form.d.ts +85 -0
- package/dist/core/validation/validate-form.js +152 -0
- package/dist/core/validation/validation-applicator.d.ts +89 -0
- package/dist/core/validation/validation-applicator.js +217 -0
- package/dist/core/validation/validation-context.d.ts +47 -0
- package/dist/core/validation/validation-context.js +75 -0
- package/dist/core/validation/validation-registry.d.ts +156 -0
- package/dist/core/validation/validation-registry.js +298 -0
- package/dist/core/validation/validators/array-validators.d.ts +63 -0
- package/dist/core/validation/validators/array-validators.js +86 -0
- package/dist/core/validation/validators/date.d.ts +38 -0
- package/dist/core/validation/validators/date.js +117 -0
- package/dist/core/validation/validators/email.d.ts +44 -0
- package/dist/core/validation/validators/email.js +60 -0
- package/dist/core/validation/validators/index.d.ts +14 -0
- package/dist/core/validation/validators/index.js +14 -0
- package/dist/core/validation/validators/max-length.d.ts +45 -0
- package/dist/core/validation/validators/max-length.js +60 -0
- package/dist/core/validation/validators/max.d.ts +45 -0
- package/dist/core/validation/validators/max.js +60 -0
- package/dist/core/validation/validators/min-length.d.ts +45 -0
- package/dist/core/validation/validators/min-length.js +60 -0
- package/dist/core/validation/validators/min.d.ts +45 -0
- package/dist/core/validation/validators/min.js +60 -0
- package/dist/core/validation/validators/number.d.ts +38 -0
- package/dist/core/validation/validators/number.js +90 -0
- package/dist/core/validation/validators/pattern.d.ts +47 -0
- package/dist/core/validation/validators/pattern.js +62 -0
- package/dist/core/validation/validators/phone.d.ts +34 -0
- package/dist/core/validation/validators/phone.js +58 -0
- package/dist/core/validation/validators/required.d.ts +48 -0
- package/dist/core/validation/validators/required.js +69 -0
- package/dist/core/validation/validators/url.d.ts +29 -0
- package/dist/core/validation/validators/url.js +55 -0
- package/dist/create-field-path-CdPF3lIK.js +704 -0
- package/dist/hooks/useFormControl.d.ts +48 -0
- package/dist/hooks/useFormControl.js +298 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +8 -0
- package/dist/node-factory-D7DOnSSN.js +3200 -0
- package/dist/validators.d.ts +2 -0
- package/dist/validators.js +298 -0
- package/llms.txt +847 -0
- package/package.json +86 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArrayNode - ΡΠ·Π΅Π» ΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
|
|
3
|
+
*
|
|
4
|
+
* Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΎΡΠΌ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ:
|
|
5
|
+
* - ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ/ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
|
|
6
|
+
* - ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
|
|
7
|
+
* - Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΠ΅Π· signals
|
|
8
|
+
*
|
|
9
|
+
* @group Nodes
|
|
10
|
+
*/
|
|
11
|
+
import type { ReadonlySignal } from '@preact/signals-core';
|
|
12
|
+
import { FormNode, type SetValueOptions } from './form-node';
|
|
13
|
+
import type { FieldStatus, ValidationError, FormFields } from '../types';
|
|
14
|
+
import type { FormSchema } from '../types/deep-schema';
|
|
15
|
+
import type { GroupNodeWithControls } from '../types/group-node-proxy';
|
|
16
|
+
/**
|
|
17
|
+
* ArrayNode - ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΡΠΌ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ
|
|
18
|
+
*
|
|
19
|
+
* @group Nodes
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const array = new ArrayNode({
|
|
24
|
+
* title: { value: '', component: Input },
|
|
25
|
+
* price: { value: 0, component: Input },
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* array.push({ title: 'Item 1', price: 100 });
|
|
29
|
+
* array.at(0)?.title.setValue('Updated');
|
|
30
|
+
* console.log(array.length.value); // 1
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class ArrayNode<T extends FormFields> extends FormNode<T[]> {
|
|
34
|
+
private items;
|
|
35
|
+
private itemSchema;
|
|
36
|
+
private initialItems;
|
|
37
|
+
/**
|
|
38
|
+
* ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ cleanup
|
|
39
|
+
* ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SubscriptionManager Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°ΠΌΠΈ
|
|
40
|
+
*/
|
|
41
|
+
private disposers;
|
|
42
|
+
private validationSchemaFn?;
|
|
43
|
+
private behaviorSchemaFn?;
|
|
44
|
+
readonly value: ReadonlySignal<T[]>;
|
|
45
|
+
readonly valid: ReadonlySignal<boolean>;
|
|
46
|
+
readonly invalid: ReadonlySignal<boolean>;
|
|
47
|
+
readonly touched: ReadonlySignal<boolean>;
|
|
48
|
+
readonly dirty: ReadonlySignal<boolean>;
|
|
49
|
+
readonly pending: ReadonlySignal<boolean>;
|
|
50
|
+
readonly errors: ReadonlySignal<ValidationError[]>;
|
|
51
|
+
readonly status: ReadonlySignal<FieldStatus>;
|
|
52
|
+
readonly length: ReadonlySignal<number>;
|
|
53
|
+
constructor(schema: FormSchema<T>, initialItems?: Partial<T>[]);
|
|
54
|
+
/**
|
|
55
|
+
* ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
56
|
+
* @param initialValue - ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
|
|
57
|
+
*/
|
|
58
|
+
push(initialValue?: Partial<T>): void;
|
|
59
|
+
/**
|
|
60
|
+
* Π£Π΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ
|
|
61
|
+
* @param index - ΠΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ
|
|
62
|
+
*/
|
|
63
|
+
removeAt(index: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* ΠΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²
|
|
66
|
+
* @param index - ΠΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ
|
|
67
|
+
* @param initialValue - ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
|
|
68
|
+
*/
|
|
69
|
+
insert(index: number, initialValue?: Partial<T>): void;
|
|
70
|
+
/**
|
|
71
|
+
* Π£Π΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
72
|
+
*/
|
|
73
|
+
clear(): void;
|
|
74
|
+
/**
|
|
75
|
+
* ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ
|
|
76
|
+
* @param index - ΠΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
|
|
77
|
+
* @returns Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GroupNode ΠΈΠ»ΠΈ undefined Π΅ΡΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ Π²Π½Π΅ Π³ΡΠ°Π½ΠΈΡ
|
|
78
|
+
*/
|
|
79
|
+
at(index: number): GroupNodeWithControls<T> | undefined;
|
|
80
|
+
getValue(): T[];
|
|
81
|
+
setValue(values: T[], options?: SetValueOptions): void;
|
|
82
|
+
patchValue(values: (T | undefined)[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* Π‘Π±ΡΠΎΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ (ΠΈΠ»ΠΈ ΠΎΡΠΈΡΡΠΈΡΡ)
|
|
85
|
+
*
|
|
86
|
+
* @param values - ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ±ΡΠΎΡΠ°
|
|
87
|
+
*
|
|
88
|
+
* @remarks
|
|
89
|
+
* ΠΡΠΈΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // ΠΡΠΈΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²
|
|
94
|
+
* arrayNode.reset();
|
|
95
|
+
*
|
|
96
|
+
* // Π‘Π±ΡΠΎΡΠΈΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ
|
|
97
|
+
* arrayNode.reset([{ name: 'Item 1' }, { name: 'Item 2' }]);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
reset(values?: T[]): void;
|
|
101
|
+
/**
|
|
102
|
+
* Π‘Π±ΡΠΎΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ (initialItems)
|
|
103
|
+
*
|
|
104
|
+
* @remarks
|
|
105
|
+
* ΠΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ArrayNode.
|
|
106
|
+
* ΠΠΎΠ»Π΅Π΅ ΡΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠΎΡΠ° ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ reset()
|
|
107
|
+
*
|
|
108
|
+
* ΠΠΎΠ»Π΅Π·Π½ΠΎ ΠΊΠΎΠ³Π΄Π°:
|
|
109
|
+
* - ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» "Cancel" - Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ
|
|
110
|
+
* - ΠΠ°ΡΡΠΈΠ² Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΡΠ΅ΡΠ΅Π· reset(newValues), Π½ΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π½Π°ΡΠ°Π»Ρ
|
|
111
|
+
* - Π―Π²Π½ΠΎΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ "ΠΎΡΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ"
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const arrayNode = new ArrayNode(
|
|
116
|
+
* { name: { value: '', component: Input } },
|
|
117
|
+
* [{ name: 'Initial 1' }, { name: 'Initial 2' }]
|
|
118
|
+
* );
|
|
119
|
+
*
|
|
120
|
+
* arrayNode.push({ name: 'New Item' });
|
|
121
|
+
* arrayNode.reset([{ name: 'Temp' }]);
|
|
122
|
+
* console.log(arrayNode.length.value); // 1
|
|
123
|
+
*
|
|
124
|
+
* arrayNode.resetToInitial();
|
|
125
|
+
* console.log(arrayNode.length.value); // 2
|
|
126
|
+
* console.log(arrayNode.at(0)?.name.value.value); // 'Initial 1'
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
resetToInitial(): void;
|
|
130
|
+
validate(): Promise<boolean>;
|
|
131
|
+
setErrors(_errors: ValidationError[]): void;
|
|
132
|
+
clearErrors(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ markAsTouched()
|
|
135
|
+
*
|
|
136
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°ΠΊ touched
|
|
137
|
+
*/
|
|
138
|
+
protected onMarkAsTouched(): void;
|
|
139
|
+
/**
|
|
140
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ markAsUntouched()
|
|
141
|
+
*
|
|
142
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°ΠΊ untouched
|
|
143
|
+
*/
|
|
144
|
+
protected onMarkAsUntouched(): void;
|
|
145
|
+
/**
|
|
146
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ markAsDirty()
|
|
147
|
+
*
|
|
148
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°ΠΊ dirty
|
|
149
|
+
*/
|
|
150
|
+
protected onMarkAsDirty(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ markAsPristine()
|
|
153
|
+
*
|
|
154
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°ΠΊ pristine
|
|
155
|
+
*/
|
|
156
|
+
protected onMarkAsPristine(): void;
|
|
157
|
+
/**
|
|
158
|
+
* ΠΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
159
|
+
* @param callback - Π€ΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ GroupNode
|
|
160
|
+
*/
|
|
161
|
+
forEach(callback: (item: GroupNodeWithControls<T>, index: number) => void): void;
|
|
162
|
+
/**
|
|
163
|
+
* ΠΠ°ΠΏΠΏΠΈΠ½Π³ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
164
|
+
* @param callback - Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ GroupNode
|
|
165
|
+
* @returns ΠΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
|
|
166
|
+
*/
|
|
167
|
+
map<R>(callback: (item: GroupNodeWithControls<T>, index: number) => R): R[];
|
|
168
|
+
/**
|
|
169
|
+
* Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡ
Π΅ΠΌΡ
|
|
170
|
+
* @param initialValue - ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
|
|
171
|
+
*/
|
|
172
|
+
private createItem;
|
|
173
|
+
/**
|
|
174
|
+
* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡ
Π΅ΠΌΠ° Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ (ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ»Π΅ΠΉ)
|
|
175
|
+
* @param schema - Π‘Ρ
Π΅ΠΌΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
|
|
176
|
+
*/
|
|
177
|
+
private isGroupSchema;
|
|
178
|
+
/**
|
|
179
|
+
* ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ validation schema ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
180
|
+
*
|
|
181
|
+
* Validation schema Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ:
|
|
182
|
+
* - ΠΡΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ
|
|
183
|
+
* - ΠΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠΌ ΡΠ΅ΡΠ΅Π· push/insert
|
|
184
|
+
*
|
|
185
|
+
* @param schemaFn - Π€ΡΠ½ΠΊΡΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* import { propertyValidation } from './validation/property-validation';
|
|
190
|
+
*
|
|
191
|
+
* form.properties.applyValidationSchema(propertyValidation);
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
applyValidationSchema(schemaFn: unknown): void;
|
|
195
|
+
/**
|
|
196
|
+
* ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ behavior schema ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ArrayNode
|
|
197
|
+
*
|
|
198
|
+
* ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΏΡΠΈ push/insert.
|
|
199
|
+
*
|
|
200
|
+
* @param schemaFn - Behavior schema ΡΡΠ½ΠΊΡΠΈΡ
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```typescript
|
|
204
|
+
* import { addressBehavior } from './behaviors/address-behavior';
|
|
205
|
+
*
|
|
206
|
+
* form.addresses.applyBehaviorSchema(addressBehavior);
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
applyBehaviorSchema(schemaFn: unknown): void;
|
|
210
|
+
/**
|
|
211
|
+
* ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π²ΠΎ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
212
|
+
* Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅
|
|
213
|
+
*
|
|
214
|
+
* @param fieldKey - ΠΠ»ΡΡ ΠΏΠΎΠ»Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ
|
|
215
|
+
* @param callback - Π€ΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
|
|
216
|
+
* @returns Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ cleanup
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅Π½
|
|
221
|
+
* const dispose = form.existingLoans.watchItems(
|
|
222
|
+
* 'remainingAmount',
|
|
223
|
+
* (amounts) => {
|
|
224
|
+
* const totalDebt = amounts.reduce((sum, amount) => sum + (amount || 0), 0);
|
|
225
|
+
* form.totalDebt.setValue(totalDebt);
|
|
226
|
+
* }
|
|
227
|
+
* );
|
|
228
|
+
*
|
|
229
|
+
* // ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ remainingAmount β ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΠ°Π΅ΡΡΡ totalDebt
|
|
230
|
+
* form.existingLoans.at(0)?.remainingAmount.setValue(500000);
|
|
231
|
+
*
|
|
232
|
+
* // Cleanup
|
|
233
|
+
* useEffect(() => dispose, []);
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
watchItems<K extends keyof T>(fieldKey: K, callback: (values: Array<T[K] | undefined>) => void | Promise<void>): () => void;
|
|
237
|
+
/**
|
|
238
|
+
* ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
239
|
+
* Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
|
|
240
|
+
*
|
|
241
|
+
* @param callback - Π€ΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Ρ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ Π΄Π»ΠΈΠ½Ρ
|
|
242
|
+
* @returns Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ cleanup
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```typescript
|
|
246
|
+
* // ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² UI
|
|
247
|
+
* const dispose = form.properties.watchLength((length) => {
|
|
248
|
+
* console.log(`ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΠΈ: ${length}`);
|
|
249
|
+
* form.propertyCount.setValue(length);
|
|
250
|
+
* });
|
|
251
|
+
*
|
|
252
|
+
* form.properties.push({ title: 'ΠΠ²Π°ΡΡΠΈΡΠ°', value: 5000000 });
|
|
253
|
+
* // ΠΡΠ²Π΅Π΄Π΅Ρ: "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΠΈ: 1"
|
|
254
|
+
*
|
|
255
|
+
* // Cleanup
|
|
256
|
+
* useEffect(() => dispose, []);
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
watchLength(callback: (length: number) => void | Promise<void>): () => void;
|
|
260
|
+
/**
|
|
261
|
+
* ΠΡΠΈΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΡΠ·Π»Π°
|
|
262
|
+
* Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΡΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ subscriptions ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* useEffect(() => {
|
|
267
|
+
* return () => {
|
|
268
|
+
* arrayNode.dispose();
|
|
269
|
+
* };
|
|
270
|
+
* }, []);
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
dispose(): void;
|
|
274
|
+
/**
|
|
275
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ disable()
|
|
276
|
+
*
|
|
277
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* // ΠΡΠΊΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ»Π΅ΠΉ
|
|
282
|
+
* form.items.disable();
|
|
283
|
+
*
|
|
284
|
+
* // ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ disabled
|
|
285
|
+
* form.items.forEach(item => {
|
|
286
|
+
* console.log(item.status.value); // 'disabled'
|
|
287
|
+
* });
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
protected onDisable(): void;
|
|
291
|
+
/**
|
|
292
|
+
* Hook: Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ enable()
|
|
293
|
+
*
|
|
294
|
+
* ΠΠ»Ρ ArrayNode: ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```typescript
|
|
298
|
+
* // ΠΠΊΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ»Π΅ΠΉ
|
|
299
|
+
* form.items.enable();
|
|
300
|
+
*
|
|
301
|
+
* // ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ enabled
|
|
302
|
+
* form.items.forEach(item => {
|
|
303
|
+
* console.log(item.status.value); // 'valid' ΠΈΠ»ΠΈ 'invalid'
|
|
304
|
+
* });
|
|
305
|
+
* ```
|
|
306
|
+
*/
|
|
307
|
+
protected onEnable(): void;
|
|
308
|
+
}
|