@strictly/react-form 0.0.1 → 0.0.2
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/.out/core/mobx/field_adapter.d.ts +7 -6
- package/.out/core/mobx/field_adapter_builder.d.ts +12 -13
- package/.out/core/mobx/field_adapter_builder.js +8 -12
- package/.out/core/mobx/field_adapters_of_values.d.ts +4 -0
- package/.out/core/mobx/flattened_adapters_of_fields.d.ts +2 -2
- package/.out/core/mobx/flattened_list_types_of_type.d.ts +8 -0
- package/.out/core/mobx/form_fields_of_field_adapters.d.ts +8 -0
- package/.out/core/mobx/form_presenter.d.ts +21 -24
- package/.out/core/mobx/form_presenter.js +64 -69
- package/.out/core/mobx/merge_field_adapters_with_two_way_converter.d.ts +13 -0
- package/.out/core/mobx/merge_field_adapters_with_two_way_converter.js +11 -0
- package/.out/core/mobx/merge_field_adapters_with_validators.d.ts +11 -0
- package/.out/core/mobx/merge_field_adapters_with_validators.js +45 -0
- package/.out/core/mobx/specs/fixtures.d.ts +7 -0
- package/.out/core/mobx/specs/fixtures.js +20 -0
- package/.out/core/mobx/specs/flattened_adapters_of_fields.tests.js +5 -2
- package/.out/core/mobx/specs/{flattened_list_type_defs_of.tests.js → flattened_list_types_of_types.tests.js} +7 -7
- package/.out/core/mobx/specs/form_presenter.tests.js +162 -60
- package/.out/core/mobx/specs/merge_field_adapters_with_two_way_converter.js +89 -0
- package/.out/core/mobx/specs/merge_field_adapters_with_validators.tests.js +172 -0
- package/.out/core/mobx/types.d.ts +2 -2
- package/.out/field_converters/chain_field_converter.d.ts +3 -3
- package/.out/field_converters/chain_field_converter.js +17 -12
- package/.out/field_converters/identity_converter.d.ts +3 -3
- package/.out/field_converters/identity_converter.js +10 -6
- package/.out/field_converters/integer_to_string_converter.d.ts +5 -4
- package/.out/field_converters/integer_to_string_converter.js +13 -6
- package/.out/field_converters/list_converter.d.ts +2 -2
- package/.out/field_converters/list_converter.js +6 -1
- package/.out/field_converters/maybe_identity_converter.d.ts +3 -3
- package/.out/field_converters/maybe_identity_converter.js +3 -1
- package/.out/field_converters/nullable_to_boolean_converter.d.ts +9 -8
- package/.out/field_converters/nullable_to_boolean_converter.js +13 -7
- package/.out/field_converters/select_value_type_converter.d.ts +20 -15
- package/.out/field_converters/select_value_type_converter.js +29 -14
- package/.out/field_converters/specs/chain_field_converter.tests.d.ts +1 -0
- package/.out/field_converters/specs/chain_field_converter.tests.js +251 -0
- package/.out/field_converters/trimming_string_converter.d.ts +3 -3
- package/.out/field_converters/trimming_string_converter.js +7 -3
- package/.out/field_converters/validating_converter.d.ts +3 -3
- package/.out/field_converters/validating_converter.js +7 -5
- package/.out/index.d.ts +9 -2
- package/.out/index.js +9 -2
- package/.out/mantine/create_checkbox.d.ts +2 -3
- package/.out/mantine/create_checkbox.js +6 -5
- package/.out/mantine/create_pill.js +2 -2
- package/.out/mantine/create_radio.js +1 -1
- package/.out/mantine/create_radio_group.d.ts +2 -3
- package/.out/mantine/create_radio_group.js +4 -3
- package/.out/mantine/create_text_input.d.ts +2 -3
- package/.out/mantine/create_text_input.js +6 -5
- package/.out/mantine/create_value_input.d.ts +2 -3
- package/.out/mantine/create_value_input.js +6 -5
- package/.out/mantine/error_renderer.d.ts +6 -0
- package/.out/mantine/error_renderer.js +5 -0
- package/.out/mantine/hooks.d.ts +9 -13
- package/.out/mantine/hooks.js +10 -15
- package/.out/mantine/specs/checkbox_hooks.stories.d.ts +7 -2
- package/.out/mantine/specs/checkbox_hooks.stories.js +33 -6
- package/.out/mantine/specs/list_hooks.stories.js +2 -2
- package/.out/mantine/specs/radio_group_hooks.stories.d.ts +7 -2
- package/.out/mantine/specs/radio_group_hooks.stories.js +33 -6
- package/.out/mantine/specs/select_hooks.stories.d.ts +8 -2
- package/.out/mantine/specs/select_hooks.stories.js +45 -8
- package/.out/mantine/specs/text_input_hooks.stories.d.ts +5 -1
- package/.out/mantine/specs/text_input_hooks.stories.js +23 -8
- package/.out/mantine/specs/value_input_hooks.stories.d.ts +7 -2
- package/.out/mantine/specs/value_input_hooks.stories.js +49 -15
- package/.out/mantine/types.d.ts +4 -1
- package/.out/tsconfig.tsbuildinfo +1 -1
- package/.out/types/error_of_field.d.ts +2 -0
- package/.out/types/error_of_field.js +1 -0
- package/.out/types/field.d.ts +1 -1
- package/.out/types/field_converters.d.ts +17 -10
- package/.out/types/field_converters.js +5 -5
- package/.out/types/flattened_validators_of_fields.d.ts +8 -0
- package/.out/types/flattened_validators_of_fields.js +1 -0
- package/.out/types/merge_validators.d.ts +7 -0
- package/.out/types/merge_validators.js +38 -0
- package/.out/types/specs/flattened_validators_of_fields.tests.d.ts +1 -0
- package/.out/types/specs/flattened_validators_of_fields.tests.js +16 -0
- package/.out/types/specs/merge_validators.tests.d.ts +1 -0
- package/.out/types/specs/merge_validators.tests.js +192 -0
- package/.out/util/partial.d.ts +11 -5
- package/.out/util/partial.js +55 -15
- package/.turbo/turbo-build.log +9 -9
- package/.turbo/turbo-check-types.log +1 -1
- package/.turbo/turbo-release$colon$exports.log +1 -1
- package/README.md +5 -1
- package/core/mobx/field_adapter.ts +15 -7
- package/core/mobx/field_adapter_builder.ts +39 -75
- package/core/mobx/field_adapters_of_values.ts +17 -0
- package/core/mobx/flattened_adapters_of_fields.ts +3 -3
- package/core/mobx/flattened_list_types_of_type.ts +17 -0
- package/core/mobx/form_fields_of_field_adapters.ts +16 -0
- package/core/mobx/form_presenter.ts +117 -104
- package/core/mobx/merge_field_adapters_with_two_way_converter.ts +68 -0
- package/core/mobx/merge_field_adapters_with_validators.ts +99 -0
- package/core/mobx/specs/fixtures.ts +73 -0
- package/core/mobx/specs/flattened_adapters_of_fields.tests.ts +23 -2
- package/core/mobx/specs/flattened_list_types_of_types.tests.ts +35 -0
- package/core/mobx/specs/form_presenter.tests.ts +248 -124
- package/core/mobx/specs/merge_field_adapters_with_two_way_converter.ts +140 -0
- package/core/mobx/specs/merge_field_adapters_with_validators.tests.ts +259 -0
- package/core/mobx/types.ts +3 -3
- package/dist/index.cjs +459 -211
- package/dist/index.d.cts +153 -111
- package/dist/index.d.ts +153 -111
- package/dist/index.js +453 -200
- package/field_converters/chain_field_converter.ts +37 -23
- package/field_converters/identity_converter.ts +14 -10
- package/field_converters/integer_to_string_converter.ts +15 -9
- package/field_converters/list_converter.ts +8 -3
- package/field_converters/maybe_identity_converter.ts +7 -4
- package/field_converters/nullable_to_boolean_converter.ts +23 -16
- package/field_converters/select_value_type_converter.ts +86 -26
- package/field_converters/specs/chain_field_converter.tests.ts +302 -0
- package/field_converters/trimming_string_converter.ts +11 -6
- package/field_converters/validating_converter.ts +21 -11
- package/index.ts +9 -2
- package/mantine/create_checkbox.tsx +15 -8
- package/mantine/create_list.tsx +1 -4
- package/mantine/create_pill.tsx +2 -2
- package/mantine/create_radio.tsx +1 -1
- package/mantine/create_radio_group.tsx +8 -6
- package/mantine/create_text_input.tsx +20 -8
- package/mantine/create_value_input.tsx +17 -8
- package/mantine/error_renderer.ts +15 -0
- package/mantine/hooks.tsx +25 -51
- package/mantine/specs/__snapshots__/checkbox_hooks.tests.tsx.snap +126 -0
- package/mantine/specs/__snapshots__/radio_group_hooks.tests.tsx.snap +356 -0
- package/mantine/specs/__snapshots__/select_hooks.tests.tsx.snap +208 -12
- package/mantine/specs/__snapshots__/text_input_hooks.tests.tsx.snap +45 -0
- package/mantine/specs/__snapshots__/value_input_hooks.tests.tsx.snap +194 -8
- package/mantine/specs/checkbox_hooks.stories.tsx +47 -7
- package/mantine/specs/list_hooks.stories.tsx +2 -2
- package/mantine/specs/radio_group_hooks.stories.tsx +47 -7
- package/mantine/specs/select_hooks.stories.tsx +55 -8
- package/mantine/specs/text_input_hooks.stories.tsx +32 -7
- package/mantine/specs/value_input_hooks.stories.tsx +57 -16
- package/mantine/types.ts +5 -1
- package/package.json +16 -4
- package/tsconfig.json +1 -0
- package/types/error_of_field.ts +3 -0
- package/types/field.ts +1 -1
- package/types/field_converters.ts +21 -10
- package/types/flattened_validators_of_fields.ts +34 -0
- package/types/merge_validators.ts +80 -0
- package/types/specs/error_type_of_field.tests.ts +2 -2
- package/types/specs/flattened_validators_of_fields.tests.ts +93 -0
- package/types/specs/merge_validators.tests.ts +267 -0
- package/util/partial.tsx +200 -16
- package/.out/core/mobx/flattened_list_type_defs_of.d.ts +0 -8
- package/.out/field_validators/minimum_string_length_field_validator.d.ts +0 -2
- package/.out/field_validators/minimum_string_length_field_validator.js +0 -8
- package/.out/types/error_type_of_field.d.ts +0 -2
- package/.out/types/field_validator.d.ts +0 -3
- package/.out/types/flattened_form_fields_of.d.ts +0 -9
- package/.out/types/specs/flattened_form_fields_of.tests.js +0 -13
- package/core/mobx/flattened_list_type_defs_of.ts +0 -17
- package/core/mobx/specs/flattened_list_type_defs_of.tests.ts +0 -35
- package/field_validators/minimum_string_length_field_validator.ts +0 -13
- package/mantine/specs/__snapshots__/check_box_hooks.tests.tsx.snap +0 -227
- package/types/error_type_of_field.ts +0 -3
- package/types/field_validator.ts +0 -7
- package/types/flattened_form_fields_of.ts +0 -16
- package/types/specs/flattened_form_fields_of.tests.ts +0 -43
- /package/.out/core/mobx/{flattened_list_type_defs_of.js → field_adapters_of_values.js} +0 -0
- /package/.out/core/mobx/{specs/flattened_list_type_defs_of.tests.d.ts → flattened_list_types_of_type.js} +0 -0
- /package/.out/{types/error_type_of_field.js → core/mobx/form_fields_of_field_adapters.js} +0 -0
- /package/.out/{types/field_validator.js → core/mobx/specs/flattened_list_types_of_types.tests.d.ts} +0 -0
- /package/.out/{types/flattened_form_fields_of.js → core/mobx/specs/merge_field_adapters_with_two_way_converter.d.ts} +0 -0
- /package/.out/{types/specs/flattened_form_fields_of.tests.d.ts → core/mobx/specs/merge_field_adapters_with_validators.tests.d.ts} +0 -0
package/dist/index.d.cts
CHANGED
|
@@ -1,31 +1,38 @@
|
|
|
1
|
-
import { Maybe, ElementOfArray, StringKeyOf as StringKeyOf$1,
|
|
2
|
-
import { Type,
|
|
3
|
-
import { ValueOf, SimplifyDeep, ReadonlyDeep, StringKeyOf } from 'type-fest';
|
|
1
|
+
import { Maybe, ElementOfArray, StringKeyOf as StringKeyOf$1, ExhaustiveArrayOfUnion, FriendlyExhaustiveArrayOfUnion } from '@strictly/base';
|
|
2
|
+
import { Type, ValueOfType, ReadonlyTypeOfType, FlattenedTypesOfType, ListTypeDef, FlattenedValuesOfType, MobxValueOfType, Accessor, Validator, UnionTypeDef, ValueTypesOfDiscriminatedUnion, LiteralTypeDef } from '@strictly/define';
|
|
3
|
+
import { ValueOf, SimplifyDeep, ReadonlyDeep, StringKeyOf, Simplify } from 'type-fest';
|
|
4
|
+
import { ComponentType, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, DependencyList } from 'react';
|
|
4
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
6
|
import { CheckboxProps, PillProps, RadioProps, RadioGroupProps, TextInputProps, SelectProps } from '@mantine/core';
|
|
6
|
-
import { ComponentType, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, DependencyList } from 'react';
|
|
7
7
|
|
|
8
|
-
declare enum
|
|
8
|
+
declare enum UnreliableFieldConversionType {
|
|
9
9
|
Success = 0,
|
|
10
10
|
Failure = 1
|
|
11
11
|
}
|
|
12
|
-
type
|
|
13
|
-
type:
|
|
12
|
+
type UnreliableFieldConversion<V = any, E = any> = {
|
|
13
|
+
type: UnreliableFieldConversionType.Success;
|
|
14
14
|
value: V;
|
|
15
15
|
} | {
|
|
16
|
-
type:
|
|
16
|
+
type: UnreliableFieldConversionType.Failure;
|
|
17
17
|
error: E;
|
|
18
18
|
value: Maybe<V>;
|
|
19
19
|
};
|
|
20
|
-
type
|
|
21
|
-
(from: From, valuePath: ValuePath, context: Context):
|
|
20
|
+
type UnreliableFieldConverter<From, To, E, ValuePath extends string, Context> = {
|
|
21
|
+
(from: From, valuePath: ValuePath, context: Context): UnreliableFieldConversion<To, E>;
|
|
22
|
+
};
|
|
23
|
+
type Annotation = {
|
|
24
|
+
readonly required: boolean;
|
|
25
|
+
readonly readonly: boolean;
|
|
22
26
|
};
|
|
23
|
-
type
|
|
24
|
-
|
|
27
|
+
type AnnotatedFieldConversion<V = any> = {
|
|
28
|
+
value: V;
|
|
29
|
+
} & Annotation;
|
|
30
|
+
type AnnotatedFieldConverter<From, To, ValuePath extends string, Context> = {
|
|
31
|
+
(from: From, valuePath: ValuePath, context: Context): AnnotatedFieldConversion<To>;
|
|
25
32
|
};
|
|
26
33
|
type TwoWayFieldConverter<From, To, E, ValuePath extends string, Context> = {
|
|
27
|
-
convert:
|
|
28
|
-
revert:
|
|
34
|
+
convert: AnnotatedFieldConverter<From, To, ValuePath, Context>;
|
|
35
|
+
revert: UnreliableFieldConverter<To, From, E, ValuePath, Context>;
|
|
29
36
|
};
|
|
30
37
|
type FieldValueFactory<V, ValuePath extends string, Context> = {
|
|
31
38
|
(valuePath: ValuePath, context: Context): V;
|
|
@@ -34,42 +41,43 @@ type TwoWayFieldConverterWithValueFactory<From, To, E, ValuePath extends string,
|
|
|
34
41
|
readonly create: FieldValueFactory<From, ValuePath, Context>;
|
|
35
42
|
};
|
|
36
43
|
|
|
37
|
-
type
|
|
38
|
-
|
|
44
|
+
type FieldAdapter<From = any, To = any, E = any, ValuePath extends string = any, Context = any> = {
|
|
45
|
+
readonly convert: AnnotatedFieldConverter<From, To, ValuePath, Context>;
|
|
46
|
+
readonly create: FieldValueFactory<From, ValuePath, Context>;
|
|
47
|
+
readonly revert?: UnreliableFieldConverter<To, From, E, ValuePath, Context>;
|
|
39
48
|
};
|
|
49
|
+
type FromOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer From> ? From : never;
|
|
50
|
+
type ToOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer _F, infer To> ? To : never;
|
|
51
|
+
type ErrorOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer _From, infer _To, infer E> ? NonNullable<E> : never;
|
|
52
|
+
type ValuePathOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer _From, infer _To, infer _E, infer ValuePath> ? ValuePath : never;
|
|
40
53
|
|
|
41
54
|
declare class FieldAdapterBuilder<From, To, E, ValuePath extends string, Context> {
|
|
42
|
-
readonly convert:
|
|
55
|
+
readonly convert: AnnotatedFieldConverter<From, To, ValuePath, Context>;
|
|
43
56
|
readonly create: FieldValueFactory<From, ValuePath, Context>;
|
|
44
|
-
readonly revert?:
|
|
45
|
-
constructor(convert:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
chain<To2, E2 = E>(converter: SafeFieldConverter<To, To2, ValuePath, Context>, reverter?: FieldConverter<To2, To, E2, ValuePath, Context>): FieldAdapterBuilder<From, To2, E | E2, ValuePath, Context>;
|
|
49
|
-
withReverter(reverter: FieldConverter<To, From, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
57
|
+
readonly revert?: UnreliableFieldConverter<To, From, E, ValuePath, Context> | undefined;
|
|
58
|
+
constructor(convert: AnnotatedFieldConverter<From, To, ValuePath, Context>, create: FieldValueFactory<From, ValuePath, Context>, revert?: UnreliableFieldConverter<To, From, E, ValuePath, Context> | undefined);
|
|
59
|
+
chain<To2, E2 = E>(converter: AnnotatedFieldConverter<To, To2, ValuePath, Context>, reverter?: UnreliableFieldConverter<To2, To, E2, ValuePath, Context>): FieldAdapterBuilder<From, To2, E | E2, ValuePath, Context>;
|
|
60
|
+
withReverter(reverter: UnreliableFieldConverter<To, From, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
50
61
|
withIdentity(isFrom: (from: To | From) => from is From): FieldAdapterBuilder<From, To | From, E, ValuePath, Context>;
|
|
62
|
+
get narrow(): FieldAdapter<From, To, E, ValuePath, Context>;
|
|
51
63
|
}
|
|
52
|
-
declare function adapter<From, To, ValuePath extends string, Context>(converter:
|
|
53
|
-
declare function adapter<From, To, E, ValuePath extends string, Context>(converter:
|
|
64
|
+
declare function adapter<From, To, ValuePath extends string, Context>(converter: AnnotatedFieldConverter<From, To, ValuePath, Context>, valueFactory: FieldValueFactory<From, ValuePath, Context>): FieldAdapterBuilder<From, To, never, ValuePath, Context>;
|
|
65
|
+
declare function adapter<From, To, E, ValuePath extends string, Context>(converter: AnnotatedFieldConverter<From, To, ValuePath, Context>, valueFactory: FieldValueFactory<From, ValuePath, Context>, reverter: UnreliableFieldConverter<To, From, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
54
66
|
declare function adapterFromTwoWayConverter<From, To, E, ValuePath extends string, Context>(converter: TwoWayFieldConverter<From, To, E, ValuePath, Context>, valueFactory: FieldValueFactory<From, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
55
67
|
declare function adapterFromTwoWayConverter<From, To, E, ValuePath extends string, Context>(converter: TwoWayFieldConverterWithValueFactory<From, To, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
56
|
-
declare function adapterFromPrototype<From, To, ValuePath extends string, Context>(converter:
|
|
68
|
+
declare function adapterFromPrototype<From, To, ValuePath extends string, Context>(converter: AnnotatedFieldConverter<From, To, ValuePath, Context>, prototype: From): FieldAdapterBuilder<From, To, never, ValuePath, Context>;
|
|
57
69
|
declare function adapterFromPrototype<From, To, E, ValuePath extends string, Context>(converter: TwoWayFieldConverter<From, To, E, ValuePath, Context>, prototype: From): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
58
|
-
declare function identityAdapter<V, ValuePath extends string, Context>(prototype: V): FieldAdapterBuilder<V, V, never, ValuePath, Context>;
|
|
70
|
+
declare function identityAdapter<V, ValuePath extends string, Context>(prototype: V, required?: boolean): FieldAdapterBuilder<V, V, never, ValuePath, Context>;
|
|
59
71
|
declare function listAdapter<E, K extends string, ValuePath extends string, Context>(): FieldAdapterBuilder<readonly E[], readonly K[], never, ValuePath, Context>;
|
|
60
72
|
|
|
61
|
-
type
|
|
62
|
-
readonly
|
|
63
|
-
readonly create: FieldValueFactory<From, ValuePath, Context>;
|
|
64
|
-
readonly revert?: FieldConverter<To, From, E, ValuePath, Context>;
|
|
73
|
+
type FieldAdaptersOfValues<FlattenedValues extends Readonly<Record<string, any>>, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedValues, string>> = Readonly<Record<keyof FlattenedValues, any>>, Context = any> = {
|
|
74
|
+
readonly [K in keyof FlattenedValues]: FieldAdapter<FlattenedValues[K], any, any, TypePathsToValuePaths[K], Context>;
|
|
65
75
|
};
|
|
66
|
-
type ToTypeOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer _F, infer To> ? To : never;
|
|
67
|
-
type ErrorTypeOfFieldAdapter<C extends FieldAdapter> = C extends FieldAdapter<infer _From, infer _To, infer E> ? NonNullable<E> : never;
|
|
68
76
|
|
|
69
77
|
type Field<V = any, E = any> = {
|
|
70
78
|
readonly value: V;
|
|
71
79
|
readonly error?: E | undefined;
|
|
72
|
-
readonly
|
|
80
|
+
readonly readonly: boolean;
|
|
73
81
|
readonly required: boolean;
|
|
74
82
|
};
|
|
75
83
|
type Fields = Readonly<Record<string, Field>>;
|
|
@@ -77,68 +85,89 @@ type Fields = Readonly<Record<string, Field>>;
|
|
|
77
85
|
type FlattenedAdaptersOfFields<ValuePathsToTypePaths extends Readonly<Record<string, string>>, FlattenedTypeDefs extends Partial<Readonly<Record<ValueOf<ValuePathsToTypePaths>, Type>>>, FormFields extends Partial<Readonly<Record<keyof ValuePathsToTypePaths, Field>>>> = SimplifyDeep<{
|
|
78
86
|
readonly [K in keyof ValuePathsToTypePaths as FormFields[K] extends Field ? ValuePathsToTypePaths[K] : never]: AdapterOfField<NonNullable<FormFields[K]>, FlattenedTypeDefs[ValuePathsToTypePaths[K]], K>;
|
|
79
87
|
}>;
|
|
80
|
-
type AdapterOfField<F extends Field, T extends Type | undefined, ValuePath extends string | number | symbol> = ValuePath extends string ? F extends Field<infer V, infer E> ? undefined extends T ? FieldAdapter<V, V, E, ValuePath> : FieldAdapter<
|
|
88
|
+
type AdapterOfField<F extends Field, T extends Type | undefined, ValuePath extends string | number | symbol> = ValuePath extends string ? F extends Field<infer V, infer E> ? undefined extends T ? FieldAdapter<V, V, E, ValuePath> : FieldAdapter<ValueOfType<ReadonlyTypeOfType<NonNullable<T>>>, V, E, ValuePath> : never : never;
|
|
89
|
+
|
|
90
|
+
type FormFieldsOfFieldAdapters<ValuePathsToTypePaths extends Readonly<Record<string, string>>, FieldAdapters extends Partial<Readonly<Record<ValueOf<ValuePathsToTypePaths>, FieldAdapter>>>> = {
|
|
91
|
+
[K in keyof ValuePathsToTypePaths as undefined extends FieldAdapters[ValuePathsToTypePaths[K]] ? never : K]: FormFieldOfFieldAdapter<FieldAdapters[ValuePathsToTypePaths[K]]>;
|
|
92
|
+
};
|
|
93
|
+
type FormFieldOfFieldAdapter<F extends FieldAdapter | undefined> = F extends FieldAdapter<infer _From, infer To, infer E> ? Field<To, E> : never;
|
|
81
94
|
|
|
82
|
-
type
|
|
83
|
-
type
|
|
95
|
+
type FlattenedListTypesOfType<T extends Type> = FlattenedListTypesOfTypes<SimplifyDeep<FlattenedTypesOfType<T, null>>>;
|
|
96
|
+
type FlattenedListTypesOfTypes<T extends Readonly<Record<string, Type>>> = {
|
|
84
97
|
[K in keyof T as T[K]['definition'] extends ListTypeDef ? K : never]: T[K];
|
|
85
98
|
};
|
|
86
99
|
|
|
87
100
|
type FlattenedConvertedFieldsOf<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
|
|
88
|
-
readonly [K in keyof ValuePathsToAdapters]: Field<
|
|
101
|
+
readonly [K in keyof ValuePathsToAdapters]: Field<ToOfFieldAdapter<ValuePathsToAdapters[K]>, ErrorOfFieldAdapter<ValuePathsToAdapters[K]>>;
|
|
89
102
|
};
|
|
90
103
|
type FlattenedTypePathsToAdaptersOf<FlattenedValues extends Readonly<Record<string, any>>, Context> = {
|
|
91
104
|
readonly [K in keyof FlattenedValues]?: FieldAdapter<ReadonlyDeep<FlattenedValues[K]>, any, any, any, Context>;
|
|
92
105
|
};
|
|
93
|
-
type FieldOverride<V = any> =
|
|
94
|
-
value: V;
|
|
95
|
-
};
|
|
106
|
+
type FieldOverride<V = any> = Maybe<V>;
|
|
96
107
|
type FlattenedFieldOverrides<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
|
|
97
|
-
-readonly [K in keyof ValuePathsToAdapters]?: FieldOverride<
|
|
108
|
+
-readonly [K in keyof ValuePathsToAdapters]?: FieldOverride<ToOfFieldAdapter<ValuePathsToAdapters[K]>>;
|
|
98
109
|
};
|
|
99
110
|
type FlattenedErrors<ValuePathsToAdapters extends Readonly<Record<string, FieldAdapter>>> = {
|
|
100
|
-
-readonly [K in keyof ValuePathsToAdapters]?:
|
|
111
|
+
-readonly [K in keyof ValuePathsToAdapters]?: ErrorOfFieldAdapter<ValuePathsToAdapters[K]>;
|
|
101
112
|
};
|
|
102
113
|
type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>, ValuePathsToTypePaths extends Readonly<Record<string, string>>> = keyof TypePathsToAdapters extends ValueOf<ValuePathsToTypePaths> ? {
|
|
103
114
|
readonly [K in keyof ValuePathsToTypePaths as unknown extends TypePathsToAdapters[ValuePathsToTypePaths[K]] ? never : K]: NonNullable<TypePathsToAdapters[ValuePathsToTypePaths[K]]>;
|
|
104
115
|
} : never;
|
|
105
|
-
declare class FormPresenter<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<
|
|
106
|
-
readonly
|
|
116
|
+
declare class FormPresenter<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<FlattenedValuesOfType<T, '*'>, ValueOfType<ReadonlyTypeOfType<T>>>, ValuePathsToAdapters extends ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths> = ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths>> {
|
|
117
|
+
readonly type: T;
|
|
107
118
|
private readonly adapters;
|
|
108
|
-
constructor(
|
|
119
|
+
constructor(type: T, adapters: TypePathsToAdapters);
|
|
109
120
|
private maybeGetAdapterForValuePath;
|
|
110
121
|
private getAdapterForValuePath;
|
|
111
122
|
typePath<K extends keyof ValueToTypePaths>(valuePath: K): ValueToTypePaths[K];
|
|
112
|
-
setFieldValueAndValidate<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, value:
|
|
113
|
-
setFieldValue<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, value:
|
|
114
|
-
addListItem<K extends keyof
|
|
115
|
-
removeListItem<K extends keyof
|
|
123
|
+
setFieldValueAndValidate<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
|
|
124
|
+
setFieldValue<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, value: ToOfFieldAdapter<ValuePathsToAdapters[K]>): boolean;
|
|
125
|
+
addListItem<K extends keyof FlattenedListTypesOfType<T>>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, elementValue?: Maybe<ElementOfArray<FlattenedValuesOfType<T>[K]>>, index?: number): void;
|
|
126
|
+
removeListItem<K extends keyof FlattenedListTypesOfType<T>>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, elementValuePath: `${K}.${number}`): void;
|
|
116
127
|
private internalSetFieldValue;
|
|
117
128
|
clearFieldError<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): void;
|
|
118
129
|
clearFieldValue<K extends StringKeyOf<ValuePathsToAdapters>>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): void;
|
|
119
|
-
clearAll(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, value:
|
|
130
|
+
clearAll(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, value: ValueOfType<T>): void;
|
|
131
|
+
isValuePathActive<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): boolean;
|
|
120
132
|
validateField<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): boolean;
|
|
121
133
|
validateAll(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>): boolean;
|
|
122
|
-
createModel(value:
|
|
134
|
+
createModel(value: ValueOfType<ReadonlyTypeOfType<T>>): FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>;
|
|
123
135
|
}
|
|
124
|
-
declare class FormModel<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<
|
|
125
|
-
private readonly
|
|
136
|
+
declare class FormModel<T extends Type, ValueToTypePaths extends Readonly<Record<string, string>>, TypePathsToAdapters extends FlattenedTypePathsToAdaptersOf<FlattenedValuesOfType<T, '*'>, ValueOfType<ReadonlyTypeOfType<T>>>, ValuePathsToAdapters extends ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths> = ValuePathsToAdaptersOf<TypePathsToAdapters, ValueToTypePaths>> {
|
|
137
|
+
private readonly type;
|
|
126
138
|
private readonly adapters;
|
|
127
|
-
accessor value:
|
|
139
|
+
accessor value: MobxValueOfType<T>;
|
|
128
140
|
accessor fieldOverrides: FlattenedFieldOverrides<ValuePathsToAdapters>;
|
|
129
141
|
accessor errors: FlattenedErrors<ValuePathsToAdapters>;
|
|
130
142
|
private readonly flattenedTypeDefs;
|
|
131
|
-
constructor(
|
|
143
|
+
constructor(type: T, value: ValueOfType<ReadonlyTypeOfType<T>>, adapters: TypePathsToAdapters);
|
|
132
144
|
get fields(): SimplifyDeep<FlattenedConvertedFieldsOf<ValuePathsToAdapters>>;
|
|
133
145
|
private get knownFields();
|
|
134
146
|
private maybeSynthesizeFieldByValuePath;
|
|
135
147
|
private synthesizeFieldByPaths;
|
|
136
148
|
getAccessorForValuePath(valuePath: keyof ValuePathsToAdapters): Accessor | undefined;
|
|
137
149
|
get accessors(): Readonly<Record<string, Accessor>>;
|
|
138
|
-
protected isDisabled(_valuePath: keyof ValuePathsToAdapters): boolean;
|
|
139
|
-
protected isRequired(_valuePath: keyof ValuePathsToAdapters): boolean;
|
|
140
150
|
}
|
|
141
151
|
|
|
152
|
+
type MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context> = {
|
|
153
|
+
[K in keyof FieldAdapters]: FieldAdapter<FromOfFieldAdapter<FieldAdapters[K]>, ToOfFieldAdapter<FieldAdapters[K]>, ErrorOfFieldAdapter<FieldAdapters[K]> | E, ValuePathOfFieldAdapter<FieldAdapters[K]>, Context>;
|
|
154
|
+
};
|
|
155
|
+
type ValuePathsOfFieldAdapters<FieldAdapters extends Readonly<Record<string, FieldAdapter>>> = {
|
|
156
|
+
[K in keyof FieldAdapters]: ValuePathOfFieldAdapter<FieldAdapters[K]>;
|
|
157
|
+
}[keyof FieldAdapters];
|
|
158
|
+
type TosOfFieldAdapters<FieldAdapters extends Readonly<Record<string, FieldAdapter>>> = {
|
|
159
|
+
[K in keyof FieldAdapters]: ToOfFieldAdapter<FieldAdapters[K]>;
|
|
160
|
+
}[keyof FieldAdapters];
|
|
161
|
+
declare function mergeFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context>(fieldAdapters: FieldAdapters, converter: TwoWayFieldConverter<TosOfFieldAdapters<FieldAdapters>, TosOfFieldAdapters<FieldAdapters>, E, ValuePathsOfFieldAdapters<FieldAdapters>, Context>): MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters, E, Context>;
|
|
162
|
+
|
|
163
|
+
type MergedOfFieldAdaptersWithValidators<FieldAdapters extends Readonly<Record<Key, FieldAdapter>>, Validators extends Partial<Readonly<Record<string, Validator>>>, Key extends keyof Validators = keyof Validators> = Simplify<{
|
|
164
|
+
readonly [K in Key]: MergedOfFieldAdapterWithValidator<FieldAdapters[K], Validators[K]>;
|
|
165
|
+
} & {
|
|
166
|
+
readonly [K in Exclude<keyof FieldAdapters, Key>]: FieldAdapters[K];
|
|
167
|
+
}>;
|
|
168
|
+
type MergedOfFieldAdapterWithValidator<A extends FieldAdapter, V extends Validator | undefined> = undefined extends V ? A : A extends FieldAdapter<infer From, infer To, infer E1, infer P1, infer C1> ? V extends Validator<From, infer E2, infer P2, infer C2> ? FieldAdapter<From, To, E1 | E2, P1 | P2, C1 | C2> : never : never;
|
|
169
|
+
declare function mergeAdaptersWithValidators<FieldAdapters extends Readonly<Record<Key, FieldAdapter>>, Validators extends Readonly<Record<string, Validator>>, Key extends keyof Validators = keyof Validators>(adapters: FieldAdapters, validators: Validators): MergedOfFieldAdaptersWithValidators<FieldAdapters, Validators, Key>;
|
|
170
|
+
|
|
142
171
|
/**
|
|
143
172
|
* Used to extract the supported value paths from a presenter
|
|
144
173
|
*/
|
|
@@ -147,7 +176,7 @@ type ValuePathsOfPresenter<Presenter extends FormPresenter<any, any, any, any>>
|
|
|
147
176
|
* Used to extract the render type (so the value that is passed to the view) of a given value path
|
|
148
177
|
* from a presenter
|
|
149
178
|
*/
|
|
150
|
-
type
|
|
179
|
+
type ToValueOfPresenterValuePath<Presenter extends FormPresenter<any, any, any, any>, K extends ValuePathsOfPresenter<Presenter>> = Presenter extends FormPresenter<infer _1, infer _2, infer _3, infer ValuePathsToAdapters> ? ToOfFieldAdapter<ValuePathsToAdapters[K]> : never;
|
|
151
180
|
/**
|
|
152
181
|
* Extracts the form fields from the presenter. The recommended way is to
|
|
153
182
|
* define the form fields explicitly and use that type to enforce the types
|
|
@@ -171,54 +200,65 @@ type EditorProps<O> = {
|
|
|
171
200
|
|
|
172
201
|
declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
|
|
173
202
|
private readonly isNanError;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
203
|
+
private readonly base;
|
|
204
|
+
constructor(isNanError: E, base?: number);
|
|
205
|
+
convert(from: number): AnnotatedFieldConversion<string>;
|
|
206
|
+
revert(from: string): UnreliableFieldConversion<number, E>;
|
|
177
207
|
}
|
|
178
208
|
|
|
179
|
-
declare class NullableToBooleanConverter<T extends Type, E, ValuePath extends string, Context> implements TwoWayFieldConverterWithValueFactory<
|
|
209
|
+
declare class NullableToBooleanConverter<T extends Type, E, ValuePath extends string, Context, NullType extends null | undefined> implements TwoWayFieldConverterWithValueFactory<ValueOfType<ReadonlyTypeOfType<T>> | NullType, boolean, E, ValuePath, Context> {
|
|
180
210
|
private readonly typeDef;
|
|
181
211
|
private readonly prototype;
|
|
182
|
-
readonly
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
212
|
+
private readonly nullType;
|
|
213
|
+
readonly defaultValue: ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
214
|
+
constructor(typeDef: T, prototype: ValueOfType<ReadonlyTypeOfType<T>>, nullType: NullType, defaultToNull?: boolean);
|
|
215
|
+
convert(from: ValueOfType<ReadonlyTypeOfType<T>> | NullType): AnnotatedFieldConversion<boolean>;
|
|
216
|
+
revert(from: boolean): UnreliableFieldConversion<ValueOfType<ReadonlyTypeOfType<T>> | NullType, E>;
|
|
217
|
+
create(): ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
187
218
|
}
|
|
188
219
|
|
|
189
|
-
declare abstract class AbstractSelectValueTypeConverter<T extends Type, To extends string | null, Values extends Readonly<Record<NonNullable<To>,
|
|
220
|
+
declare abstract class AbstractSelectValueTypeConverter<T extends Type, From extends ValueOfType<T> | undefined, To extends string | null, Values extends Readonly<Record<NonNullable<To>, From>>, NoSuchValueError, ValuePath extends string, Context> implements TwoWayFieldConverterWithValueFactory<From, To, NoSuchValueError, ValuePath, Context> {
|
|
190
221
|
protected readonly typeDef: T;
|
|
191
222
|
protected readonly values: Values;
|
|
192
223
|
private readonly defaultValueKey;
|
|
193
224
|
private readonly noSuchValueError;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
225
|
+
private readonly required;
|
|
226
|
+
constructor(typeDef: T, values: Values, defaultValueKey: keyof Values | null | undefined, noSuchValueError: NoSuchValueError | null, required: boolean);
|
|
227
|
+
revert(from: To): UnreliableFieldConversion<From, NoSuchValueError>;
|
|
228
|
+
convert(from: From): AnnotatedFieldConversion<To>;
|
|
229
|
+
protected abstract doConvert(from: NonNullable<ValueOfType<T>>): To;
|
|
230
|
+
create(): From;
|
|
199
231
|
}
|
|
200
|
-
declare class SelectDiscriminatedUnionConverter<U extends UnionTypeDef, To extends StringKeyOf$1<U['unions']> | null, ValuePath extends string, Context> extends AbstractSelectValueTypeConverter<Type<U>, To, ValueTypesOfDiscriminatedUnion<U>, never, ValuePath, Context> {
|
|
201
|
-
constructor(
|
|
202
|
-
protected doConvert(from:
|
|
232
|
+
declare class SelectDiscriminatedUnionConverter<U extends UnionTypeDef, From extends ValueOfType<ReadonlyTypeOfType<Type<U>>> | (Required extends true ? never : undefined), To extends StringKeyOf$1<U['unions']> | null, ValuePath extends string, Context, Required extends boolean> extends AbstractSelectValueTypeConverter<Type<U>, From, To, ValueTypesOfDiscriminatedUnion<U>, never, ValuePath, Context> {
|
|
233
|
+
constructor(type: Type<U>, values: ValueTypesOfDiscriminatedUnion<U>, defaultValueKey: keyof U['unions'], required: Required);
|
|
234
|
+
protected doConvert(from: NonNullable<ValueOfType<Type<U>>>): any;
|
|
203
235
|
}
|
|
204
|
-
declare class SelectLiteralConverter<L extends string | number | null, To extends string | null, Values extends Record<NonNullable<
|
|
236
|
+
declare class SelectLiteralConverter<L extends string | number | null, From extends L | (Required extends true ? never : undefined), To extends string | null, Values extends Record<NonNullable<From>, NonNullable<To>>, NoSuchValueError, ValuePath extends string, Context, Required extends boolean> extends AbstractSelectValueTypeConverter<Type<LiteralTypeDef<L>>, From, To, Record<NonNullable<To>, NonNullable<From>>, NoSuchValueError, ValuePath, Context> {
|
|
205
237
|
private readonly valuesToStrings;
|
|
206
|
-
constructor(typeDef: Type<LiteralTypeDef<L>>, valuesToStrings: Values, defaultValue:
|
|
207
|
-
protected doConvert(from:
|
|
238
|
+
constructor(typeDef: Type<LiteralTypeDef<L>>, valuesToStrings: Values, defaultValue: From, noSuchValueError: NoSuchValueError | null, required: Required);
|
|
239
|
+
protected doConvert(from: NonNullable<From>): Values[NonNullable<From>];
|
|
240
|
+
}
|
|
241
|
+
declare class SelectStringConverter<L extends string | null, From extends L | undefined, A extends readonly NonNullable<From>[], NoSuchValueError, ValuePath extends string, Context> extends AbstractSelectValueTypeConverter<Type<LiteralTypeDef<L>>, From, string | null, Record<string, From>, NoSuchValueError, ValuePath, Context> {
|
|
242
|
+
constructor(typeDef: Type<LiteralTypeDef<L>>, allowedValues: ExhaustiveArrayOfUnion<NonNullable<From>, A>, defaultValue: L | undefined, noSuchValueError: NoSuchValueError | null, required?: boolean);
|
|
243
|
+
protected doConvert(from: NonNullable<L>): NonNullable<L>;
|
|
208
244
|
}
|
|
209
245
|
|
|
210
246
|
declare class TrimmingStringConverter<ValuePath extends string, Context> implements TwoWayFieldConverter<string, string, never, ValuePath, Context> {
|
|
211
247
|
constructor();
|
|
212
|
-
convert(to: string): string
|
|
213
|
-
revert(from: string):
|
|
248
|
+
convert(to: string): AnnotatedFieldConversion<string>;
|
|
249
|
+
revert(from: string): UnreliableFieldConversion<string, never>;
|
|
214
250
|
}
|
|
215
251
|
|
|
216
|
-
declare function validatingConverter<V, E, ValuePath extends string, Context>(validators?: readonly
|
|
217
|
-
|
|
218
|
-
declare function minimumStringLengthFieldValidatorFactory<E, ValuePath extends string, Context>(minimumLength: number, error: E): FieldValidator<string, E, ValuePath, Context>;
|
|
252
|
+
declare function validatingConverter<V, E, ValuePath extends string, Context>(validators?: readonly Validator<V, E, ValuePath, Context>[]): UnreliableFieldConverter<V, V, E, ValuePath, Context>;
|
|
219
253
|
|
|
220
254
|
declare function prototypingFieldValueFactory<V, ValuePath extends string, Context>(prototype: V): FieldValueFactory<V, ValuePath, Context>;
|
|
221
255
|
|
|
256
|
+
type ErrorRendererProps<E> = {
|
|
257
|
+
error: E;
|
|
258
|
+
};
|
|
259
|
+
type ErrorRenderer<E = any> = ComponentType<ErrorRendererProps<E>>;
|
|
260
|
+
declare function DefaultErrorRenderer({ error, }: ErrorRendererProps<any>): any;
|
|
261
|
+
|
|
222
262
|
type ValueTypeOfField<F extends Field> = F extends Field<infer V> ? V : never;
|
|
223
263
|
|
|
224
264
|
type AllFieldsOfFields<F extends Fields> = {
|
|
@@ -229,7 +269,7 @@ type BooleanFieldsOfFields<F extends Fields> = {
|
|
|
229
269
|
[K in keyof F as ValueTypeOfField<F[K]> extends boolean ? K : never]: F[K];
|
|
230
270
|
};
|
|
231
271
|
|
|
232
|
-
type
|
|
272
|
+
type ErrorOfField<F extends Field> = F extends Field<infer _V, infer E> ? E : never;
|
|
233
273
|
|
|
234
274
|
type ListFieldsOfFields<F extends Fields> = {
|
|
235
275
|
[K in keyof F as ValueTypeOfField<F[K]> extends readonly any[] ? K : never]: F[K];
|
|
@@ -242,11 +282,16 @@ type StringFieldsOfFields<F extends Fields> = {
|
|
|
242
282
|
type PartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = Exclude<keyof CurriedProps, keyof ComponentProps<Component>> extends never ? UnsafePartialComponent<Component, CurriedProps, AdditionalProps> : keyof CurriedProps extends (string | number) ? `unmatched prop: ${Exclude<keyof CurriedProps, keyof ComponentProps<Component>>}` : Exclude<keyof CurriedProps, keyof ComponentProps<Component>>;
|
|
243
283
|
type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps>>;
|
|
244
284
|
declare function createSimplePartialComponent<Component extends ComponentType<any>, CurriedProps extends Partial<ComponentProps<Component>>>(Component: Component, curriedProps: CurriedProps): PartialComponent<Component, CurriedProps>;
|
|
245
|
-
declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps
|
|
246
|
-
declare function
|
|
247
|
-
declare function
|
|
248
|
-
declare function
|
|
249
|
-
declare function
|
|
285
|
+
declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
286
|
+
declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(Component: Component, curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
|
|
287
|
+
declare function usePartialComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
288
|
+
declare function usePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, deps: DependencyList, Component: Component, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
|
|
289
|
+
declare function createPartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
290
|
+
declare function createPartialObserverComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(Component: Component, curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
|
|
291
|
+
declare function createUnsafePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): UnsafePartialComponent<Component, CurriedProps, {}>;
|
|
292
|
+
declare function createUnsafePartialObserverComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(Component: Component, curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): UnsafePartialComponent<Component, CurriedProps, AdditionalProps>;
|
|
293
|
+
declare function usePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
294
|
+
declare function usePartialObserverComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps, AllAdditionalPropKeys extends readonly (keyof AdditionalProps)[]>(curriedPropsSource: (additionalProps: AdditionalProps) => CurriedProps, deps: DependencyList, Component: Component, additionalPropKeys: FriendlyExhaustiveArrayOfUnion<keyof AdditionalProps, AllAdditionalPropKeys>): PartialComponent<Component, CurriedProps, AdditionalProps>;
|
|
250
295
|
type RemainingComponentProps<Component extends ComponentType, CurriedProps> = Omit<ComponentProps<Component>, keyof CurriedProps> & JSX.IntrinsicAttributes;
|
|
251
296
|
|
|
252
297
|
type MantineForm<F extends Fields> = {
|
|
@@ -256,7 +301,9 @@ type MantineForm<F extends Fields> = {
|
|
|
256
301
|
onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
|
|
257
302
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
258
303
|
};
|
|
259
|
-
type MantineFieldComponent<T, P = T> = UnsafePartialComponent<ComponentType<P>, T
|
|
304
|
+
type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T, {
|
|
305
|
+
ErrorRenderer?: ErrorRenderer<E>;
|
|
306
|
+
}>;
|
|
260
307
|
|
|
261
308
|
type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
|
|
262
309
|
|
|
@@ -301,10 +348,6 @@ type SuppliedValueInputProps<V, T extends Element = Element> = Partial<{
|
|
|
301
348
|
declare function SimpleSelect(props: SelectProps & {
|
|
302
349
|
onChange?: (value: string | null) => void;
|
|
303
350
|
}): react_jsx_runtime.JSX.Element;
|
|
304
|
-
type ErrorRendererProps<E> = {
|
|
305
|
-
error: E;
|
|
306
|
-
};
|
|
307
|
-
type ErrorRenderer<E = any> = React.ComponentType<ErrorRendererProps<E>>;
|
|
308
351
|
declare function useMantineForm<F extends Fields>({ onFieldValueChange, onFieldBlur, onFieldFocus, onFieldSubmit, fields, }: FormProps<F>): MantineFormImpl<F>;
|
|
309
352
|
declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
|
|
310
353
|
private readonly textInputCache;
|
|
@@ -321,25 +364,24 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
|
|
|
321
364
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
322
365
|
constructor(fields: F);
|
|
323
366
|
textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps>;
|
|
324
|
-
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P
|
|
325
|
-
valueInput<K extends keyof AllFieldsOfFields<F>, P extends SuppliedValueInputProps<ValueTypeOfField<F[K]>, any>>(valuePath: K, ValueInput: ComponentType<P
|
|
326
|
-
select<K extends keyof StringFieldsOfFields<F>>(valuePath: K
|
|
367
|
+
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P>;
|
|
368
|
+
valueInput<K extends keyof AllFieldsOfFields<F>, P extends SuppliedValueInputProps<ValueTypeOfField<F[K]>, any>>(valuePath: K, ValueInput: ComponentType<P>): MantineFieldComponent<SuppliedValueInputProps<ValueTypeOfField<F[K]>>, P, ErrorOfField<F[K]>>;
|
|
369
|
+
select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>>;
|
|
327
370
|
checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps>;
|
|
328
|
-
checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P
|
|
371
|
+
checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>>;
|
|
329
372
|
radioGroup<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedRadioGroupProps, RadioGroupProps>;
|
|
330
|
-
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P
|
|
331
|
-
radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps
|
|
332
|
-
radio<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioProps>(valuePath: K, value: ValueTypeOfField<F[K]>, Radio: ComponentType<P>): MantineFieldComponent<SuppliedRadioProps, P
|
|
333
|
-
pill<K extends keyof AllFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedPillProps, PillProps
|
|
373
|
+
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P>;
|
|
374
|
+
radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps, ErrorOfField<F[K]>>;
|
|
375
|
+
radio<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioProps>(valuePath: K, value: ValueTypeOfField<F[K]>, Radio: ComponentType<P>): MantineFieldComponent<SuppliedRadioProps, P, ErrorOfField<F[K]>>;
|
|
376
|
+
pill<K extends keyof AllFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedPillProps, PillProps, ErrorOfField<F[K]>>;
|
|
334
377
|
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P>;
|
|
335
378
|
list<K extends keyof ListFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedListProps<ElementOfArray<F[K]>>, ComponentProps<typeof DefaultList<ElementOfArray<F[K]>>>>;
|
|
336
379
|
}
|
|
337
380
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
type
|
|
342
|
-
|
|
343
|
-
} : `fields missing paths: ${PrintableOf<Exclude<keyof TypePathsToFormFields, ValueOf<JsonPaths>>>}`;
|
|
381
|
+
type MergedOfValidators<Validators1 extends Partial<Readonly<Record<Keys, Validator>>>, Validators2 extends Partial<Readonly<Record<Keys, Validator>>>, Keys extends string = Extract<keyof Validators1 | keyof Validators2, string>> = Simplify<{
|
|
382
|
+
readonly [K in Keys]: undefined extends Validators1[K] ? undefined extends Validators2[K] ? never : Validators2[K] : undefined extends Validators2[K] ? Validators1[K] : MergedOfValidator<NonNullable<Validators1[K]>, NonNullable<Validators2[K]>>;
|
|
383
|
+
}>;
|
|
384
|
+
type MergedOfValidator<Validator1 extends Validator, Validator2 extends Validator> = Validator1 extends Validator<infer V, infer E1, infer P, infer C> ? Validator2 extends Validator<V, infer E2, P, C> ? Validator<V, E1 | E2, P, C> : never : never;
|
|
385
|
+
declare function mergeValidators<Validators1 extends Partial<Readonly<Record<Keys, Validator>>>, Validators2 extends Partial<Readonly<Record<Keys, Validator>>>, Keys extends string = Extract<keyof Validators1 | keyof Validators2, string>>(validators1: Validators1, validators2: Validators2): MergedOfValidators<Validators1, Validators2, Keys>;
|
|
344
386
|
|
|
345
|
-
export { AbstractSelectValueTypeConverter, type EditorProps, type ErrorRenderer, type ErrorRendererProps, type Field, type Fields, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type
|
|
387
|
+
export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, DefaultErrorRenderer, type EditorProps, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FlattenedAdaptersOfFields, type FlattenedConvertedFieldsOf, type FlattenedTypePathsToAdaptersOf, type FormFieldsOfFieldAdapters, type FormFieldsOfPresenter, FormModel, FormPresenter, type FormProps, type FromOfFieldAdapter, IntegerToStringConverter, type MergedOfFieldAdaptersWithTwoWayConverter, type MergedOfFieldAdaptersWithValidators, type MergedOfValidator, type MergedOfValidators, NullableToBooleanConverter, type PartialComponent, SelectDiscriminatedUnionConverter, SelectLiteralConverter, SelectStringConverter, type ToOfFieldAdapter, type ToValueOfPresenterValuePath, TrimmingStringConverter, type TwoWayFieldConverter, type TwoWayFieldConverterWithValueFactory, type UnreliableFieldConversion, UnreliableFieldConversionType, type UnreliableFieldConverter, type UnsafePartialComponent, type ValuePathOfFieldAdapter, type ValuePathsOfPresenter, type ValuePathsToAdaptersOf, adapter, adapterFromPrototype, adapterFromTwoWayConverter, createPartialComponent, createPartialObserverComponent, createSimplePartialComponent, createUnsafePartialObserverComponent, identityAdapter, listAdapter, mergeAdaptersWithValidators, mergeFieldAdaptersWithTwoWayConverter, mergeValidators, prototypingFieldValueFactory, useMantineForm, usePartialComponent, usePartialObserverComponent, validatingConverter };
|