@reformer/core 2.0.0-beta.7 → 2.0.0-beta.9
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/behaviors/compute-from.d.ts +2 -0
- package/dist/behaviors/compute-from.js +31 -0
- package/dist/behaviors/copy-from.d.ts +2 -0
- package/dist/behaviors/copy-from.js +29 -0
- package/dist/behaviors/enable-when.d.ts +2 -0
- package/dist/behaviors/enable-when.js +25 -0
- package/dist/behaviors/reset-when.d.ts +2 -0
- package/dist/behaviors/reset-when.js +24 -0
- package/dist/behaviors/revalidate-when.d.ts +2 -0
- package/dist/behaviors/revalidate-when.js +18 -0
- package/dist/behaviors/sync-fields.d.ts +2 -0
- package/dist/behaviors/sync-fields.js +41 -0
- package/dist/behaviors/transform-value.d.ts +2 -0
- package/dist/behaviors/transform-value.js +45 -0
- package/dist/behaviors/watch-field.d.ts +2 -0
- package/dist/behaviors/watch-field.js +21 -0
- package/dist/behaviors.js +26 -19
- package/dist/core/behavior/behavior-context.d.ts +26 -12
- package/dist/core/behavior/behavior-registry.d.ts +15 -27
- package/dist/core/behavior/behaviors/compute-from.d.ts +50 -21
- package/dist/core/behavior/behaviors/copy-from.d.ts +39 -14
- package/dist/core/behavior/behaviors/enable-when.d.ts +88 -19
- package/dist/core/behavior/behaviors/reset-when.d.ts +31 -18
- package/dist/core/behavior/behaviors/revalidate-when.d.ts +40 -17
- package/dist/core/behavior/behaviors/sync-fields.d.ts +34 -14
- package/dist/core/behavior/behaviors/transform-value.d.ts +116 -44
- package/dist/core/behavior/behaviors/watch-field.d.ts +66 -21
- package/dist/core/behavior/compose-behavior.d.ts +2 -12
- package/dist/core/behavior/index.d.ts +0 -1
- package/dist/core/behavior/types.d.ts +2 -8
- package/dist/core/factories/node-factory.d.ts +6 -29
- package/dist/core/nodes/array-node.d.ts +11 -15
- package/dist/core/nodes/field-node.d.ts +43 -24
- package/dist/core/nodes/form-node.d.ts +18 -20
- package/dist/core/nodes/group-node.d.ts +25 -21
- package/dist/core/types/deep-schema.d.ts +2 -12
- package/dist/core/types/field-path.d.ts +1 -1
- package/dist/core/types/form-context.d.ts +26 -26
- package/dist/core/types/form-proxy.d.ts +1 -31
- package/dist/core/types/index.d.ts +16 -4
- package/dist/core/types/validation-schema.d.ts +3 -12
- package/dist/core/utils/abstract-registry.d.ts +74 -0
- package/dist/core/utils/aggregate-signals.d.ts +71 -0
- package/dist/core/utils/create-form.d.ts +1 -20
- package/dist/core/utils/error-handler.d.ts +1 -18
- package/dist/core/utils/field-path-navigator.d.ts +1 -1
- package/dist/core/utils/field-path.d.ts +23 -11
- package/dist/core/utils/form-observer.d.ts +176 -0
- package/dist/core/utils/form-proxy-builder.d.ts +25 -0
- package/dist/core/utils/form-submitter.d.ts +121 -0
- package/dist/core/utils/index.d.ts +8 -2
- package/dist/core/utils/registry-helpers.d.ts +0 -7
- package/dist/core/utils/safe-effect.d.ts +73 -0
- package/dist/core/utils/status-machine.d.ts +153 -0
- package/dist/core/utils/type-guards.d.ts +5 -23
- package/dist/core/utils/unique-id.d.ts +34 -7
- package/dist/core/validation/core/apply-when.d.ts +3 -9
- package/dist/core/validation/core/apply.d.ts +2 -13
- package/dist/core/validation/core/validate-async.d.ts +2 -8
- package/dist/core/validation/core/validate-tree.d.ts +0 -6
- package/dist/core/validation/core/validate.d.ts +1 -7
- package/dist/core/validation/index.d.ts +8 -2
- package/dist/core/validation/validate-form.d.ts +1 -38
- package/dist/core/validation/validation-applicator.d.ts +2 -21
- package/dist/core/validation/validation-context.d.ts +38 -14
- package/dist/core/validation/validation-registry.d.ts +11 -20
- package/dist/core/validation/validators/array-validators.d.ts +2 -12
- package/dist/core/validation/validators/date-utils.d.ts +26 -0
- package/dist/core/validation/validators/email.d.ts +2 -9
- package/dist/core/validation/validators/future-date.d.ts +35 -0
- package/dist/core/validation/validators/index.d.ts +7 -1
- package/dist/core/validation/validators/is-date.d.ts +36 -0
- package/dist/core/validation/validators/max-age.d.ts +36 -0
- package/dist/core/validation/validators/max-date.d.ts +36 -0
- package/dist/core/validation/validators/max-length.d.ts +3 -10
- package/dist/core/validation/validators/max.d.ts +3 -10
- package/dist/core/validation/validators/min-age.d.ts +36 -0
- package/dist/core/validation/validators/min-date.d.ts +36 -0
- package/dist/core/validation/validators/min-length.d.ts +3 -10
- package/dist/core/validation/validators/min.d.ts +3 -10
- package/dist/core/validation/validators/number.d.ts +2 -9
- package/dist/core/validation/validators/past-date.d.ts +35 -0
- package/dist/core/validation/validators/pattern.d.ts +2 -9
- package/dist/core/validation/validators/phone.d.ts +2 -9
- package/dist/core/validation/validators/required.d.ts +2 -9
- package/dist/core/validation/validators/url.d.ts +2 -9
- package/dist/date-utils-xUWFslTj.js +29 -0
- package/dist/field-path-DuKdGcIE.js +66 -0
- package/dist/hooks/types.d.ts +1 -1
- package/dist/hooks/useArrayLength.d.ts +31 -0
- package/dist/hooks/useFormControl.d.ts +4 -4
- package/dist/hooks/useFormControlValue.d.ts +2 -2
- package/dist/hooks/useHiddenCondition.d.ts +25 -0
- package/dist/hooks/useSignalSubscription.d.ts +1 -1
- package/dist/index-D25LsbRm.js +73 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1031 -714
- package/dist/registry-helpers-Bv_BJ1s-.js +615 -0
- package/dist/safe-effect-Dh8uw81c.js +20 -0
- package/dist/validate-C3XiA_zf.js +10 -0
- package/dist/validators/email.d.ts +2 -0
- package/dist/validators/email.js +13 -0
- package/dist/validators/future-date.d.ts +2 -0
- package/dist/validators/future-date.js +20 -0
- package/dist/validators/is-date.d.ts +2 -0
- package/dist/validators/is-date.js +12 -0
- package/dist/validators/max-age.d.ts +2 -0
- package/dist/validators/max-age.js +20 -0
- package/dist/validators/max-date.d.ts +2 -0
- package/dist/validators/max-date.js +20 -0
- package/dist/validators/max-length.d.ts +2 -0
- package/dist/validators/max-length.js +11 -0
- package/dist/validators/max.d.ts +2 -0
- package/dist/validators/max.js +11 -0
- package/dist/validators/min-age.d.ts +2 -0
- package/dist/validators/min-age.js +20 -0
- package/dist/validators/min-date.d.ts +2 -0
- package/dist/validators/min-date.js +20 -0
- package/dist/validators/min-length.d.ts +2 -0
- package/dist/validators/min-length.js +11 -0
- package/dist/validators/min.d.ts +2 -0
- package/dist/validators/min.js +11 -0
- package/dist/validators/number.d.ts +2 -0
- package/dist/validators/number.js +35 -0
- package/dist/validators/past-date.d.ts +2 -0
- package/dist/validators/past-date.js +20 -0
- package/dist/validators/pattern.d.ts +2 -0
- package/dist/validators/pattern.js +11 -0
- package/dist/validators/phone.d.ts +2 -0
- package/dist/validators/phone.js +35 -0
- package/dist/validators/required.d.ts +2 -0
- package/dist/validators/required.js +15 -0
- package/dist/validators/url.d.ts +2 -0
- package/dist/validators/url.js +19 -0
- package/dist/validators-BGsNOgT1.js +207 -0
- package/dist/validators.js +54 -29
- package/llms.txt +7878 -311
- package/package.json +83 -9
- package/dist/behaviors-DyPzh2-X.js +0 -508
- package/dist/core/behavior/create-field-path.d.ts +0 -7
- package/dist/core/context/form-context-impl.d.ts +0 -29
- package/dist/core/utils/debounce.d.ts +0 -160
- package/dist/core/utils/resources.d.ts +0 -41
- package/dist/core/validation/field-path.d.ts +0 -7
- package/dist/core/validation/validators/date.d.ts +0 -38
- package/dist/registry-helpers--8-OogF8.js +0 -477
- package/dist/validators-CWdzevnC.js +0 -397
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что значение является валидной датой
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения пропускаются (используйте `required` для обязательности).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации
|
|
12
|
+
* @param options - Опции валидации (message, params)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Базовое использование
|
|
17
|
+
* validationSchema: (path) => [
|
|
18
|
+
* isDate(path.birthDate),
|
|
19
|
+
* isDate(path.eventDate),
|
|
20
|
+
* ]
|
|
21
|
+
*
|
|
22
|
+
* // С кастомным сообщением
|
|
23
|
+
* isDate(path.birthDate, { message: 'Введите корректную дату' })
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Ошибка валидации
|
|
29
|
+
* {
|
|
30
|
+
* code: 'date_invalid',
|
|
31
|
+
* message: 'Неверный формат даты',
|
|
32
|
+
* params: {}
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function isDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что возраст (вычисленный из даты рождения) не больше указанного
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации (дата рождения)
|
|
12
|
+
* @param maxAgeValue - Максимально допустимый возраст в годах
|
|
13
|
+
* @param options - Опции валидации (message, params)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Базовое использование - максимум 65 лет
|
|
18
|
+
* validationSchema: (path) => [
|
|
19
|
+
* maxAge(path.birthDate, 65),
|
|
20
|
+
* ]
|
|
21
|
+
*
|
|
22
|
+
* // С кастомным сообщением
|
|
23
|
+
* maxAge(path.birthDate, 100, { message: 'Проверьте правильность даты рождения' })
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Ошибка валидации
|
|
29
|
+
* {
|
|
30
|
+
* code: 'date_max_age',
|
|
31
|
+
* message: 'Максимальный возраст: 65 лет',
|
|
32
|
+
* params: { maxAge: 65, currentAge: 70 }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function maxAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxAgeValue: number, options?: ValidateOptions): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что дата не позже указанной максимальной
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации
|
|
12
|
+
* @param maxDateValue - Максимально допустимая дата (включительно)
|
|
13
|
+
* @param options - Опции валидации (message, params)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Базовое использование
|
|
18
|
+
* validationSchema: (path) => [
|
|
19
|
+
* maxDate(path.birthDate, new Date()), // Не позже сегодня
|
|
20
|
+
* ]
|
|
21
|
+
*
|
|
22
|
+
* // С кастомным сообщением
|
|
23
|
+
* maxDate(path.endDate, new Date('2025-12-31'), { message: 'Дата не может быть позже конца года' })
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Ошибка валидации
|
|
29
|
+
* {
|
|
30
|
+
* code: 'date_max',
|
|
31
|
+
* message: 'Дата должна быть не позднее 31.12.2025',
|
|
32
|
+
* params: { maxDate: Date }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function maxDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxDateValue: Date, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/maxLength
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор максимальной длины строки
|
|
12
5
|
*
|
|
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
|
|
|
42
35
|
* }
|
|
43
36
|
* ```
|
|
44
37
|
*/
|
|
45
|
-
export declare function maxLength<TForm, TField extends string | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxLen: number, options?: ValidateOptions): void;
|
|
38
|
+
export declare function maxLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxLen: number, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/max
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор максимального числового значения
|
|
12
5
|
*
|
|
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
|
|
|
42
35
|
* }
|
|
43
36
|
* ```
|
|
44
37
|
*/
|
|
45
|
-
export declare function max<TForm, TField extends number | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxValue: number, options?: ValidateOptions): void;
|
|
38
|
+
export declare function max<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxValue: number, options?: ValidateOptions): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что возраст (вычисленный из даты рождения) не меньше указанного
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации (дата рождения)
|
|
12
|
+
* @param minAgeValue - Минимально допустимый возраст в годах
|
|
13
|
+
* @param options - Опции валидации (message, params)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Базовое использование - минимум 18 лет
|
|
18
|
+
* validationSchema: (path) => [
|
|
19
|
+
* minAge(path.birthDate, 18),
|
|
20
|
+
* ]
|
|
21
|
+
*
|
|
22
|
+
* // С кастомным сообщением
|
|
23
|
+
* minAge(path.birthDate, 21, { message: 'Вам должно быть не менее 21 года' })
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Ошибка валидации
|
|
29
|
+
* {
|
|
30
|
+
* code: 'date_min_age',
|
|
31
|
+
* message: 'Минимальный возраст: 18 лет',
|
|
32
|
+
* params: { minAge: 18, currentAge: 16 }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function minAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minAgeValue: number, options?: ValidateOptions): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что дата не раньше указанной минимальной
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации
|
|
12
|
+
* @param minDateValue - Минимально допустимая дата (включительно)
|
|
13
|
+
* @param options - Опции валидации (message, params)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // Базовое использование
|
|
18
|
+
* validationSchema: (path) => [
|
|
19
|
+
* minDate(path.eventDate, new Date('2024-01-01')),
|
|
20
|
+
* ]
|
|
21
|
+
*
|
|
22
|
+
* // С кастомным сообщением
|
|
23
|
+
* minDate(path.startDate, new Date(), { message: 'Дата должна быть не раньше сегодня' })
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Ошибка валидации
|
|
29
|
+
* {
|
|
30
|
+
* code: 'date_min',
|
|
31
|
+
* message: 'Дата должна быть не ранее 01.01.2024',
|
|
32
|
+
* params: { minDate: Date }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function minDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minDateValue: Date, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/minLength
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор минимальной длины строки
|
|
12
5
|
*
|
|
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
|
|
|
42
35
|
* }
|
|
43
36
|
* ```
|
|
44
37
|
*/
|
|
45
|
-
export declare function minLength<TForm, TField extends string | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
|
|
38
|
+
export declare function minLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/min
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор минимального числового значения
|
|
12
5
|
*
|
|
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
|
|
|
42
35
|
* }
|
|
43
36
|
* ```
|
|
44
37
|
*/
|
|
45
|
-
export declare function min<TForm, TField extends number | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
|
|
38
|
+
export declare function min<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/number
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Адаптер для number валидатора
|
|
12
5
|
* Проверяет, что значение является числом и соответствует заданным ограничениям
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Проверяет, что дата находится в прошлом (не в будущем)
|
|
5
|
+
*
|
|
6
|
+
* Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
|
|
7
|
+
*
|
|
8
|
+
* @group Validation
|
|
9
|
+
* @category Validators
|
|
10
|
+
*
|
|
11
|
+
* @param fieldPath - Путь к полю для валидации
|
|
12
|
+
* @param options - Опции валидации (message, params)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Базовое использование - дата рождения не может быть в будущем
|
|
17
|
+
* validationSchema: (path) => [
|
|
18
|
+
* pastDate(path.birthDate),
|
|
19
|
+
* ]
|
|
20
|
+
*
|
|
21
|
+
* // С кастомным сообщением
|
|
22
|
+
* pastDate(path.birthDate, { message: 'Дата рождения не может быть в будущем' })
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Ошибка валидации
|
|
28
|
+
* {
|
|
29
|
+
* code: 'date_future',
|
|
30
|
+
* message: 'Дата не может быть в будущем',
|
|
31
|
+
* params: {}
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function pastDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/pattern
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор паттерна (регулярного выражения)
|
|
12
5
|
*
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/phone
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Формат телефона для валидации
|
|
12
5
|
*
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/required
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Валидатор обязательного поля
|
|
12
5
|
*
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @group Validation
|
|
5
|
-
* @category Validators
|
|
6
|
-
* @module validators/url
|
|
7
|
-
*/
|
|
8
|
-
import type { ValidateOptions } from '../../types/validation-schema';
|
|
9
|
-
import type { FieldPathNode } from '../../types';
|
|
1
|
+
import { ValidateOptions } from '../../types/validation-schema';
|
|
2
|
+
import { FieldPathNode } from '../../types';
|
|
10
3
|
/**
|
|
11
4
|
* Адаптер для URL валидатора
|
|
12
5
|
* Поддерживает опциональные поля (string | undefined)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function r(t) {
|
|
2
|
+
if (t == null || t === "")
|
|
3
|
+
return null;
|
|
4
|
+
if (t instanceof Date)
|
|
5
|
+
return isNaN(t.getTime()) ? null : t;
|
|
6
|
+
if (typeof t == "string") {
|
|
7
|
+
const n = new Date(t);
|
|
8
|
+
return isNaN(n.getTime()) ? null : n;
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
function e() {
|
|
13
|
+
const t = /* @__PURE__ */ new Date();
|
|
14
|
+
return t.setHours(0, 0, 0, 0), t;
|
|
15
|
+
}
|
|
16
|
+
function o(t) {
|
|
17
|
+
const n = new Date(t);
|
|
18
|
+
return n.setHours(0, 0, 0, 0), n;
|
|
19
|
+
}
|
|
20
|
+
function i(t) {
|
|
21
|
+
const n = e();
|
|
22
|
+
return Math.floor((n.getTime() - t.getTime()) / (365.25 * 24 * 60 * 60 * 1e3));
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
i as c,
|
|
26
|
+
e as g,
|
|
27
|
+
o as n,
|
|
28
|
+
r as p
|
|
29
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
function c() {
|
|
2
|
+
return _("");
|
|
3
|
+
}
|
|
4
|
+
function _(t) {
|
|
5
|
+
return new Proxy({}, {
|
|
6
|
+
get(r, i) {
|
|
7
|
+
if (typeof i == "symbol")
|
|
8
|
+
return;
|
|
9
|
+
if (i === "__path" || i === "__fieldPath")
|
|
10
|
+
return t || i;
|
|
11
|
+
if (i === "__key") {
|
|
12
|
+
const n = t.split(".");
|
|
13
|
+
return n[n.length - 1] || i;
|
|
14
|
+
}
|
|
15
|
+
if (i === "then" || i === "catch" || i === "finally" || i === "constructor" || i === "toString" || i === "valueOf" || i === "toJSON")
|
|
16
|
+
return;
|
|
17
|
+
const f = t ? `${t}.${i}` : i, a = {
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
__key: i,
|
|
20
|
+
__path: f,
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
__formType: void 0,
|
|
23
|
+
__fieldType: void 0
|
|
24
|
+
};
|
|
25
|
+
return new Proxy(a, {
|
|
26
|
+
get(n, e) {
|
|
27
|
+
if (typeof e != "symbol") {
|
|
28
|
+
if (e === "__path" || e === "__fieldPath") return f;
|
|
29
|
+
if (e === "__key") return i;
|
|
30
|
+
if (e !== "__formType" && e !== "__fieldType" && !(e === "then" || e === "catch" || e === "finally" || e === "constructor" || e === "toString" || e === "valueOf" || e === "toJSON"))
|
|
31
|
+
return _(`${f}.${e}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function u(t) {
|
|
39
|
+
if (typeof t == "string")
|
|
40
|
+
return t;
|
|
41
|
+
if (t && typeof t == "object") {
|
|
42
|
+
const r = t.__path;
|
|
43
|
+
if (typeof r == "string")
|
|
44
|
+
return r;
|
|
45
|
+
}
|
|
46
|
+
throw new Error("Invalid field path node: " + JSON.stringify(t));
|
|
47
|
+
}
|
|
48
|
+
function y(t) {
|
|
49
|
+
const r = u(t);
|
|
50
|
+
return _(r);
|
|
51
|
+
}
|
|
52
|
+
function l(t) {
|
|
53
|
+
if (t && typeof t == "object" && "__key" in t)
|
|
54
|
+
return t.__key;
|
|
55
|
+
if (typeof t == "string") {
|
|
56
|
+
const r = t.split(".");
|
|
57
|
+
return r[r.length - 1];
|
|
58
|
+
}
|
|
59
|
+
throw new Error("Invalid field path node");
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
l as a,
|
|
63
|
+
c,
|
|
64
|
+
u as e,
|
|
65
|
+
y as t
|
|
66
|
+
};
|
package/dist/hooks/types.d.ts
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ArrayNode } from '../core/nodes/array-node';
|
|
2
|
+
import { FormFields } from '../core/types';
|
|
3
|
+
/**
|
|
4
|
+
* React-хук для подписки только на длину массива.
|
|
5
|
+
*
|
|
6
|
+
* Оптимизированная версия {@link useFormControl} для ArrayNode, которая
|
|
7
|
+
* подписывается только на сигнал `length`. Компонент не будет ре-рендериться
|
|
8
|
+
* при изменении значений вложенных полей.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam T - Тип элемента массива
|
|
11
|
+
* @param control - ArrayNode для подписки
|
|
12
|
+
* @returns Текущая длина массива
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* function ArrayRenderer({ arrayNode }) {
|
|
17
|
+
* const length = useArrayLength(arrayNode);
|
|
18
|
+
*
|
|
19
|
+
* return (
|
|
20
|
+
* <div>
|
|
21
|
+
* {arrayNode.map((item, index) => (
|
|
22
|
+
* <ItemRenderer key={item.id} item={item} />
|
|
23
|
+
* ))}
|
|
24
|
+
* </div>
|
|
25
|
+
* );
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @group React Hooks
|
|
30
|
+
*/
|
|
31
|
+
export declare function useArrayLength<T extends FormFields>(control: ArrayNode<T>): number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { FieldNode } from '../core/nodes/field-node';
|
|
2
|
+
import { ArrayNode } from '../core/nodes/array-node';
|
|
3
|
+
import { FormValue, FormFields } from '../core/types';
|
|
4
|
+
import { FieldControlState, ArrayControlState } from './types';
|
|
5
5
|
/**
|
|
6
6
|
* React-хук для подписки на состояние {@link ArrayNode}.
|
|
7
7
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { FieldNode } from '../core/nodes/field-node';
|
|
2
|
+
import { FormValue } from '../core/types';
|
|
3
3
|
/**
|
|
4
4
|
* React-хук для подписки только на значение поля.
|
|
5
5
|
*
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FormProxy, FieldPath } from '../core/types';
|
|
2
|
+
type HiddenFn<T> = (form: FormProxy<T>, path: FieldPath<T>) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Хук для реактивной оценки функции hidden.
|
|
5
|
+
*
|
|
6
|
+
* Подписывается на изменения формы через сигналы и возвращает текущее
|
|
7
|
+
* значение hidden-условия.
|
|
8
|
+
*
|
|
9
|
+
* @param hiddenFn - Функция, определяющая скрытие.
|
|
10
|
+
* @param form - {@link FormProxy} формы.
|
|
11
|
+
* @param path - Текущий {@link FieldPath}.
|
|
12
|
+
* @returns `true`, если элемент должен быть скрыт.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* import { useHiddenCondition } from '@reformer/core';
|
|
17
|
+
*
|
|
18
|
+
* function MaybeHidden({ form, path, children }) {
|
|
19
|
+
* const hidden = useHiddenCondition((f) => !f.subscribeNewsletter.value, form, path);
|
|
20
|
+
* return hidden ? null : <>{children}</>;
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useHiddenCondition<T>(hiddenFn: HiddenFn<T> | undefined, form: FormProxy<T>, path: FieldPath<T>): boolean;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { c as f } from "./field-path-DuKdGcIE.js";
|
|
2
|
+
import { watchField as m } from "./behaviors/watch-field.js";
|
|
3
|
+
import { a as l, B as c } from "./registry-helpers-Bv_BJ1s-.js";
|
|
4
|
+
import { copyFrom as h } from "./behaviors/copy-from.js";
|
|
5
|
+
import { disableWhen as u, enableWhen as p } from "./behaviors/enable-when.js";
|
|
6
|
+
import { computeFrom as y } from "./behaviors/compute-from.js";
|
|
7
|
+
import { revalidateWhen as d } from "./behaviors/revalidate-when.js";
|
|
8
|
+
import { syncFields as _ } from "./behaviors/sync-fields.js";
|
|
9
|
+
import { resetWhen as P } from "./behaviors/reset-when.js";
|
|
10
|
+
import { createTransformer as b, transformValue as v, transformers as g } from "./behaviors/transform-value.js";
|
|
11
|
+
function s(r) {
|
|
12
|
+
if (!r)
|
|
13
|
+
return f();
|
|
14
|
+
const e = r.__path;
|
|
15
|
+
return A(e);
|
|
16
|
+
}
|
|
17
|
+
function A(r) {
|
|
18
|
+
return new Proxy({}, {
|
|
19
|
+
get(e, t) {
|
|
20
|
+
return typeof t == "symbol" ? void 0 : {
|
|
21
|
+
__path: r ? `${r}.${t}` : t,
|
|
22
|
+
__key: t
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function B(r, e) {
|
|
28
|
+
const t = (Array.isArray(r) ? r : [r]).filter(Boolean), o = Array.isArray(e) ? e : [e];
|
|
29
|
+
for (const a of t) {
|
|
30
|
+
const i = s(a);
|
|
31
|
+
for (const n of o)
|
|
32
|
+
n(i);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function F(r, e, t) {
|
|
36
|
+
if (!r) return;
|
|
37
|
+
let o = !1;
|
|
38
|
+
m(
|
|
39
|
+
r,
|
|
40
|
+
(a, i) => {
|
|
41
|
+
if (!o && e(a)) {
|
|
42
|
+
const n = f();
|
|
43
|
+
t(n), o = !0;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{ immediate: !0 }
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
const z = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
50
|
+
__proto__: null,
|
|
51
|
+
BehaviorContextImpl: l,
|
|
52
|
+
BehaviorRegistry: c,
|
|
53
|
+
apply: B,
|
|
54
|
+
applyWhen: F,
|
|
55
|
+
computeFrom: y,
|
|
56
|
+
copyFrom: h,
|
|
57
|
+
createTransformer: b,
|
|
58
|
+
disableWhen: u,
|
|
59
|
+
enableWhen: p,
|
|
60
|
+
resetWhen: P,
|
|
61
|
+
revalidateWhen: d,
|
|
62
|
+
syncFields: _,
|
|
63
|
+
toBehaviorFieldPath: s,
|
|
64
|
+
transformValue: v,
|
|
65
|
+
transformers: g,
|
|
66
|
+
watchField: m
|
|
67
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
68
|
+
export {
|
|
69
|
+
B as a,
|
|
70
|
+
F as b,
|
|
71
|
+
z as i,
|
|
72
|
+
s as t
|
|
73
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { ArrayNode } from './core/nodes/array-node';
|
|
|
8
8
|
export type { SetValueOptions } from './core/nodes/form-node';
|
|
9
9
|
export { useFormControl } from './hooks/useFormControl';
|
|
10
10
|
export { useFormControlValue } from './hooks/useFormControlValue';
|
|
11
|
+
export { useArrayLength } from './hooks/useArrayLength';
|
|
12
|
+
export { useHiddenCondition } from './hooks/useHiddenCondition';
|
|
11
13
|
export type { FieldControlState, ArrayControlState } from './hooks/types';
|
|
12
14
|
export type { BehaviorSchemaFn } from './core/behavior/types';
|
|
13
15
|
export { validateForm } from './core/validation/validate-form';
|