@strictly/react-form 0.0.7 → 0.0.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/.out/core/mobx/field_adapter_builder.d.ts +4 -0
- package/.out/core/mobx/field_adapter_builder.js +31 -0
- package/.out/core/mobx/hooks.d.ts +5 -1
- package/.out/core/mobx/hooks.js +13 -3
- package/.out/core/mobx/specs/sub_form_field_adapters.tests.js +56 -9
- package/.out/core/mobx/sub_form_field_adapters.d.ts +5 -5
- package/.out/core/mobx/sub_form_field_adapters.js +13 -10
- package/.out/field_converters/chain_field_converter.js +3 -3
- package/.out/field_converters/nullable_to_boolean_converter.d.ts +2 -2
- package/.out/mantine/create_checkbox.js +1 -0
- package/.out/mantine/create_fields_view.d.ts +1 -1
- package/.out/mantine/create_fields_view.js +4 -4
- package/.out/mantine/create_form.d.ts +1 -1
- package/.out/mantine/create_list.d.ts +1 -1
- package/.out/mantine/create_pill.d.ts +1 -1
- package/.out/mantine/create_radio.d.ts +1 -1
- package/.out/mantine/create_radio_group.js +1 -0
- package/.out/mantine/create_text_input.js +7 -2
- package/.out/mantine/create_value_input.js +1 -0
- package/.out/mantine/error_renderer.d.ts +7 -3
- package/.out/mantine/error_renderer.js +1 -1
- package/.out/mantine/hooks.d.ts +9 -9
- package/.out/mantine/specs/checkbox_hooks.stories.d.ts +2 -6
- package/.out/mantine/specs/checkbox_hooks.stories.js +4 -16
- package/.out/mantine/specs/fields_view_hooks.stories.d.ts +1 -1
- package/.out/mantine/specs/fields_view_hooks.stories.js +6 -3
- package/.out/mantine/specs/form_hooks.stories.d.ts +2 -2
- package/.out/mantine/specs/form_hooks.stories.js +4 -1
- package/.out/mantine/specs/radio_group_hooks.stories.d.ts +2 -6
- package/.out/mantine/specs/radio_group_hooks.stories.js +5 -17
- package/.out/mantine/specs/select_hooks.stories.d.ts +2 -6
- package/.out/mantine/specs/select_hooks.stories.js +4 -16
- package/.out/mantine/specs/text_input_hooks.stories.d.ts +2 -5
- package/.out/mantine/specs/text_input_hooks.stories.js +5 -5
- package/.out/mantine/specs/value_input_hooks.stories.d.ts +2 -5
- package/.out/mantine/specs/value_input_hooks.stories.js +5 -5
- package/.out/mantine/types.d.ts +4 -2
- package/.out/tsconfig.tsbuildinfo +1 -1
- package/.out/types/specs/{error_type_of_field.tests.js → error_of_field.tests.js} +1 -1
- package/.turbo/turbo-build.log +8 -8
- package/.turbo/turbo-check-types.log +1 -1
- package/core/mobx/field_adapter_builder.ts +71 -0
- package/core/mobx/hooks.ts +24 -6
- package/core/mobx/specs/sub_form_field_adapters.tests.ts +108 -15
- package/core/mobx/sub_form_field_adapters.ts +41 -25
- package/dist/index.cjs +108 -49
- package/dist/index.d.cts +35 -24
- package/dist/index.d.ts +35 -24
- package/dist/index.js +107 -49
- package/field_converters/chain_field_converter.ts +3 -3
- package/field_converters/nullable_to_boolean_converter.ts +2 -3
- package/mantine/create_checkbox.tsx +2 -1
- package/mantine/create_fields_view.tsx +17 -14
- package/mantine/create_form.tsx +2 -2
- package/mantine/create_list.tsx +1 -1
- package/mantine/create_pill.tsx +1 -1
- package/mantine/create_radio.tsx +1 -1
- package/mantine/create_radio_group.tsx +6 -2
- package/mantine/create_text_input.tsx +9 -3
- package/mantine/create_value_input.tsx +2 -1
- package/mantine/error_renderer.ts +13 -4
- package/mantine/hooks.tsx +19 -14
- package/mantine/specs/__snapshots__/checkbox_hooks.tests.tsx.snap +1 -64
- package/mantine/specs/__snapshots__/fields_view_hooks.tests.tsx.snap +52 -52
- package/mantine/specs/__snapshots__/radio_group_hooks.tests.tsx.snap +1 -179
- package/mantine/specs/__snapshots__/select_hooks.tests.tsx.snap +1 -83
- package/mantine/specs/__snapshots__/text_input_hooks.tests.tsx.snap +27 -27
- package/mantine/specs/__snapshots__/value_input_hooks.tests.tsx.snap +31 -31
- package/mantine/specs/checkbox_hooks.stories.tsx +5 -21
- package/mantine/specs/fields_view_hooks.stories.tsx +16 -4
- package/mantine/specs/form_hooks.stories.tsx +10 -3
- package/mantine/specs/radio_group_hooks.stories.tsx +6 -20
- package/mantine/specs/select_hooks.stories.tsx +5 -21
- package/mantine/specs/text_input_hooks.stories.tsx +5 -8
- package/mantine/specs/value_input_hooks.stories.tsx +5 -8
- package/mantine/types.ts +7 -3
- package/package.json +2 -1
- package/types/specs/{error_type_of_field.tests.ts → error_of_field.tests.ts} +1 -1
- /package/.out/types/specs/{error_type_of_field.tests.d.ts → error_of_field.tests.d.ts} +0 -0
package/dist/index.cjs
CHANGED
|
@@ -45,6 +45,7 @@ __export(index_exports, {
|
|
|
45
45
|
mergeValidators: () => mergeValidators,
|
|
46
46
|
prototypingFieldValueFactory: () => prototypingFieldValueFactory,
|
|
47
47
|
subFormFieldAdapters: () => subFormFieldAdapters,
|
|
48
|
+
trimmingStringAdapter: () => trimmingStringAdapter,
|
|
48
49
|
useDefaultMobxFormHooks: () => useDefaultMobxFormHooks,
|
|
49
50
|
useMantineFormFields: () => useMantineFormFields,
|
|
50
51
|
usePartialComponent: () => usePartialComponent,
|
|
@@ -105,18 +106,18 @@ function chainAnnotatedFieldConverter(from, to) {
|
|
|
105
106
|
return function(value, valuePath, context) {
|
|
106
107
|
const {
|
|
107
108
|
required: intermediateRequired,
|
|
108
|
-
readonly:
|
|
109
|
+
readonly: intermediateReadonly,
|
|
109
110
|
value: intermediateValue
|
|
110
111
|
} = from(value, valuePath, context);
|
|
111
112
|
const {
|
|
112
113
|
required: finalRequired,
|
|
113
|
-
readonly:
|
|
114
|
+
readonly: finalReadonly,
|
|
114
115
|
value: finalValue
|
|
115
116
|
} = to(intermediateValue, valuePath, context);
|
|
116
117
|
return {
|
|
117
118
|
value: finalValue,
|
|
118
119
|
required: intermediateRequired || finalRequired,
|
|
119
|
-
readonly:
|
|
120
|
+
readonly: intermediateReadonly || finalReadonly
|
|
120
121
|
};
|
|
121
122
|
};
|
|
122
123
|
}
|
|
@@ -155,6 +156,25 @@ var MaybeIdentityConverter = class {
|
|
|
155
156
|
}
|
|
156
157
|
};
|
|
157
158
|
|
|
159
|
+
// field_converters/trimming_string_converter.ts
|
|
160
|
+
var TrimmingStringConverter = class {
|
|
161
|
+
constructor() {
|
|
162
|
+
}
|
|
163
|
+
convert(to) {
|
|
164
|
+
return {
|
|
165
|
+
value: to.trim(),
|
|
166
|
+
required: false,
|
|
167
|
+
readonly: false
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
revert(from) {
|
|
171
|
+
return {
|
|
172
|
+
type: 0 /* Success */,
|
|
173
|
+
value: from.trim()
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
158
178
|
// field_value_factories/prototyping_field_value_factory.ts
|
|
159
179
|
function prototypingFieldValueFactory(prototype) {
|
|
160
180
|
return function() {
|
|
@@ -189,6 +209,32 @@ var FieldAdapterBuilder = class _FieldAdapterBuilder {
|
|
|
189
209
|
reverter
|
|
190
210
|
);
|
|
191
211
|
}
|
|
212
|
+
nullable() {
|
|
213
|
+
return this.or(null);
|
|
214
|
+
}
|
|
215
|
+
optional() {
|
|
216
|
+
return this.or(void 0);
|
|
217
|
+
}
|
|
218
|
+
or(proto) {
|
|
219
|
+
function isFrom(v) {
|
|
220
|
+
return v !== proto;
|
|
221
|
+
}
|
|
222
|
+
function isTo(v) {
|
|
223
|
+
return v !== proto;
|
|
224
|
+
}
|
|
225
|
+
return new _FieldAdapterBuilder(
|
|
226
|
+
(v, valuePath, context) => isFrom(v) ? this.convert(v, valuePath, context) : {
|
|
227
|
+
value: v,
|
|
228
|
+
readonly: false,
|
|
229
|
+
required: false
|
|
230
|
+
},
|
|
231
|
+
this.create,
|
|
232
|
+
(v, valuePath, context) => isTo(v) && this.revert ? this.revert(v, valuePath, context) : {
|
|
233
|
+
type: 0 /* Success */,
|
|
234
|
+
value: proto
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
}
|
|
192
238
|
withIdentity(isFrom) {
|
|
193
239
|
const identityConverter = new MaybeIdentityConverter({
|
|
194
240
|
convert: this.convert,
|
|
@@ -226,6 +272,12 @@ function identityAdapter(prototype, required) {
|
|
|
226
272
|
unreliableIdentityConverter()
|
|
227
273
|
);
|
|
228
274
|
}
|
|
275
|
+
function trimmingStringAdapter() {
|
|
276
|
+
return adapterFromTwoWayConverter(
|
|
277
|
+
new TrimmingStringConverter(),
|
|
278
|
+
prototypingFieldValueFactory("")
|
|
279
|
+
);
|
|
280
|
+
}
|
|
229
281
|
function listAdapter() {
|
|
230
282
|
return new FieldAdapterBuilder(
|
|
231
283
|
annotatedIdentityConverter(false),
|
|
@@ -690,7 +742,10 @@ var FormModel = class {
|
|
|
690
742
|
|
|
691
743
|
// core/mobx/hooks.ts
|
|
692
744
|
var import_react = require("react");
|
|
693
|
-
function useDefaultMobxFormHooks(presenter, value,
|
|
745
|
+
function useDefaultMobxFormHooks(presenter, value, {
|
|
746
|
+
onValidFieldSubmit,
|
|
747
|
+
onValidFormSubmit
|
|
748
|
+
} = {}) {
|
|
694
749
|
const model = (0, import_react.useMemo)(function() {
|
|
695
750
|
return presenter.createModel(value);
|
|
696
751
|
}, [
|
|
@@ -710,14 +765,14 @@ function useDefaultMobxFormHooks(presenter, value, onValidSubmit) {
|
|
|
710
765
|
const onFieldSubmit = (0, import_react.useCallback)(
|
|
711
766
|
function(valuePath) {
|
|
712
767
|
if (presenter.validateField(model, valuePath)) {
|
|
713
|
-
|
|
768
|
+
onValidFieldSubmit?.(model, valuePath);
|
|
714
769
|
}
|
|
715
770
|
return false;
|
|
716
771
|
},
|
|
717
772
|
[
|
|
718
773
|
presenter,
|
|
719
774
|
model,
|
|
720
|
-
|
|
775
|
+
onValidFieldSubmit
|
|
721
776
|
]
|
|
722
777
|
);
|
|
723
778
|
const onFieldBlur = (0, import_react.useCallback)(
|
|
@@ -733,11 +788,24 @@ function useDefaultMobxFormHooks(presenter, value, onValidSubmit) {
|
|
|
733
788
|
model
|
|
734
789
|
]
|
|
735
790
|
);
|
|
791
|
+
const onFormSubmit = (0, import_react.useCallback)(
|
|
792
|
+
function() {
|
|
793
|
+
if (presenter.validateAll(model)) {
|
|
794
|
+
onValidFormSubmit?.(model, model.value);
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
[
|
|
798
|
+
presenter,
|
|
799
|
+
model,
|
|
800
|
+
onValidFormSubmit
|
|
801
|
+
]
|
|
802
|
+
);
|
|
736
803
|
return {
|
|
737
804
|
model,
|
|
738
805
|
onFieldValueChange,
|
|
739
806
|
onFieldSubmit,
|
|
740
|
-
onFieldBlur
|
|
807
|
+
onFieldBlur,
|
|
808
|
+
onFormSubmit
|
|
741
809
|
};
|
|
742
810
|
}
|
|
743
811
|
|
|
@@ -818,32 +886,34 @@ function mergeAdaptersWithValidators(adapters, validators) {
|
|
|
818
886
|
|
|
819
887
|
// core/mobx/sub_form_field_adapters.ts
|
|
820
888
|
var import_define3 = require("@strictly/define");
|
|
821
|
-
function subFormFieldAdapters(subAdapters,
|
|
889
|
+
function subFormFieldAdapters(subAdapters, parentTypePath, contextType) {
|
|
890
|
+
const dotCount = parentTypePath.split(".").length;
|
|
822
891
|
function getSubValuePathAndContext(valuePath, context) {
|
|
823
|
-
const
|
|
824
|
-
const
|
|
892
|
+
const parentValuePath = valuePath.split(".").slice(0, dotCount).join(".");
|
|
893
|
+
const subValuePath = valuePath.replace(parentValuePath, "$");
|
|
894
|
+
const subContext = (0, import_define3.flattenValuesOfType)(contextType, context)[parentValuePath];
|
|
825
895
|
return [
|
|
826
896
|
subValuePath,
|
|
827
897
|
subContext
|
|
828
898
|
];
|
|
829
899
|
}
|
|
830
900
|
return Object.entries(subAdapters).reduce((acc, [
|
|
831
|
-
|
|
832
|
-
|
|
901
|
+
subTypePath,
|
|
902
|
+
subAdapter
|
|
833
903
|
]) => {
|
|
834
|
-
const
|
|
904
|
+
const typePath = subTypePath.replace("$", parentTypePath);
|
|
835
905
|
const adaptedAdapter = {
|
|
836
906
|
convert: (from, valuePath, context) => {
|
|
837
|
-
return
|
|
907
|
+
return subAdapter.convert(from, ...getSubValuePathAndContext(valuePath, context));
|
|
838
908
|
},
|
|
839
909
|
create: (valuePath, context) => {
|
|
840
|
-
return
|
|
910
|
+
return subAdapter.create(...getSubValuePathAndContext(valuePath, context));
|
|
841
911
|
},
|
|
842
|
-
revert:
|
|
843
|
-
return
|
|
912
|
+
revert: subAdapter.revert && ((from, valuePath, context) => {
|
|
913
|
+
return subAdapter.revert(from, ...getSubValuePathAndContext(valuePath, context));
|
|
844
914
|
})
|
|
845
915
|
};
|
|
846
|
-
acc[
|
|
916
|
+
acc[typePath] = adaptedAdapter;
|
|
847
917
|
return acc;
|
|
848
918
|
}, {});
|
|
849
919
|
}
|
|
@@ -1007,25 +1077,6 @@ var SelectStringConverter = class extends AbstractSelectValueTypeConverter {
|
|
|
1007
1077
|
}
|
|
1008
1078
|
};
|
|
1009
1079
|
|
|
1010
|
-
// field_converters/trimming_string_converter.ts
|
|
1011
|
-
var TrimmingStringConverter = class {
|
|
1012
|
-
constructor() {
|
|
1013
|
-
}
|
|
1014
|
-
convert(to) {
|
|
1015
|
-
return {
|
|
1016
|
-
value: to.trim(),
|
|
1017
|
-
required: false,
|
|
1018
|
-
readonly: false
|
|
1019
|
-
};
|
|
1020
|
-
}
|
|
1021
|
-
revert(from) {
|
|
1022
|
-
return {
|
|
1023
|
-
type: 0 /* Success */,
|
|
1024
|
-
value: from.trim()
|
|
1025
|
-
};
|
|
1026
|
-
}
|
|
1027
|
-
};
|
|
1028
|
-
|
|
1029
1080
|
// field_converters/validating_converter.ts
|
|
1030
1081
|
var import_define6 = require("@strictly/define");
|
|
1031
1082
|
function validatingConverter(validators = []) {
|
|
@@ -1057,7 +1108,7 @@ function DefaultErrorRenderer({
|
|
|
1057
1108
|
error
|
|
1058
1109
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1059
1110
|
}) {
|
|
1060
|
-
return error;
|
|
1111
|
+
return JSON.stringify(error);
|
|
1061
1112
|
}
|
|
1062
1113
|
|
|
1063
1114
|
// mantine/hooks.tsx
|
|
@@ -1288,15 +1339,19 @@ function createFieldsView(valuePath, FieldsView, observableProps) {
|
|
|
1288
1339
|
observableProps.onFieldSubmit?.(toKey(subKey));
|
|
1289
1340
|
}
|
|
1290
1341
|
return (0, import_mobx_react2.observer)(function(props) {
|
|
1291
|
-
const subFields = Object.entries(observableProps.fields).reduce(
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1342
|
+
const subFields = Object.entries(observableProps.fields).reduce(
|
|
1343
|
+
(acc, [
|
|
1344
|
+
fieldKey,
|
|
1345
|
+
fieldValue
|
|
1346
|
+
]) => {
|
|
1347
|
+
if (fieldKey.startsWith(valuePath)) {
|
|
1348
|
+
acc[toSubKey(fieldKey)] = fieldValue;
|
|
1349
|
+
}
|
|
1350
|
+
return acc;
|
|
1351
|
+
},
|
|
1352
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1353
|
+
{}
|
|
1354
|
+
);
|
|
1300
1355
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1301
1356
|
FieldsView,
|
|
1302
1357
|
{
|
|
@@ -1452,13 +1507,16 @@ function createTextInput(valuePath, TextInput) {
|
|
|
1452
1507
|
const propSource = ({
|
|
1453
1508
|
ErrorRenderer = DefaultErrorRenderer
|
|
1454
1509
|
}) => {
|
|
1510
|
+
const field = this.fields[valuePath];
|
|
1511
|
+
if (field == null) {
|
|
1512
|
+
throw new Error(`invalid field ${valuePath}`);
|
|
1513
|
+
}
|
|
1455
1514
|
const {
|
|
1456
1515
|
readonly,
|
|
1457
1516
|
required,
|
|
1458
1517
|
value,
|
|
1459
1518
|
error
|
|
1460
|
-
|
|
1461
|
-
} = this.fields[valuePath];
|
|
1519
|
+
} = field;
|
|
1462
1520
|
return {
|
|
1463
1521
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1464
1522
|
name: valuePath,
|
|
@@ -1758,6 +1816,7 @@ function mergeValidators(validators1, validators2) {
|
|
|
1758
1816
|
mergeValidators,
|
|
1759
1817
|
prototypingFieldValueFactory,
|
|
1760
1818
|
subFormFieldAdapters,
|
|
1819
|
+
trimmingStringAdapter,
|
|
1761
1820
|
useDefaultMobxFormHooks,
|
|
1762
1821
|
useMantineFormFields,
|
|
1763
1822
|
usePartialComponent,
|
package/dist/index.d.cts
CHANGED
|
@@ -58,6 +58,9 @@ declare class FieldAdapterBuilder<From, To, E, ValuePath extends string, Context
|
|
|
58
58
|
constructor(convert: AnnotatedFieldConverter<From, To, ValuePath, Context>, create: FieldValueFactory<From, ValuePath, Context>, revert?: UnreliableFieldConverter<To, From, E, ValuePath, Context> | undefined);
|
|
59
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
60
|
withReverter(reverter: UnreliableFieldConverter<To, From, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
61
|
+
nullable(): FieldAdapterBuilder<From | null, To | null, E, ValuePath, Context>;
|
|
62
|
+
optional(): FieldAdapterBuilder<From | undefined, To | undefined, E, ValuePath, Context>;
|
|
63
|
+
private or;
|
|
61
64
|
withIdentity(isFrom: (from: To | From) => from is From): FieldAdapterBuilder<From, To | From, E, ValuePath, Context>;
|
|
62
65
|
get narrow(): FieldAdapter<From, To, E, ValuePath, Context>;
|
|
63
66
|
}
|
|
@@ -68,6 +71,7 @@ declare function adapterFromTwoWayConverter<From, To, E, ValuePath extends strin
|
|
|
68
71
|
declare function adapterFromPrototype<From, To, ValuePath extends string, Context>(converter: AnnotatedFieldConverter<From, To, ValuePath, Context>, prototype: From): FieldAdapterBuilder<From, To, never, ValuePath, Context>;
|
|
69
72
|
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>;
|
|
70
73
|
declare function identityAdapter<V, ValuePath extends string, Context>(prototype: V, required?: boolean): FieldAdapterBuilder<V, V, never, ValuePath, Context>;
|
|
74
|
+
declare function trimmingStringAdapter<ValuePath extends string, Context>(): FieldAdapterBuilder<string, string, never, ValuePath, Context>;
|
|
71
75
|
declare function listAdapter<E, ValuePath extends string, Context>(): FieldAdapterBuilder<readonly E[], readonly E[], never, ValuePath, Context>;
|
|
72
76
|
|
|
73
77
|
type FieldAdaptersOfValues<FlattenedValues extends Readonly<Record<string, any>>, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedValues, string>> = Readonly<Record<keyof FlattenedValues, any>>, Context = any> = {
|
|
@@ -181,8 +185,12 @@ type FormFieldsOfPresenter<Presenter extends FormPresenter<any, any, any, any>>
|
|
|
181
185
|
|
|
182
186
|
type ValueOfPresenter<P extends FormPresenter<any, any, any, any>> = P extends FormPresenter<infer T, any, any, any> ? ValueOfType<ReadonlyTypeOfType<T>> : never;
|
|
183
187
|
type ModelOfPresenter<P extends FormPresenter<any, any, any, any>> = ReturnType<P['createModel']>;
|
|
184
|
-
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>>(presenter: P, value: ValueOfPresenter<P>,
|
|
188
|
+
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>>(presenter: P, value: ValueOfPresenter<P>, { onValidFieldSubmit, onValidFormSubmit, }?: {
|
|
189
|
+
onValidFieldSubmit?: <Path extends ValuePathsOfPresenter<P>>(model: ModelOfPresenter<P>, valuePath: Path) => void;
|
|
190
|
+
onValidFormSubmit?: (model: ModelOfPresenter<P>, value: ValueOfPresenter<P>) => void;
|
|
191
|
+
}): {
|
|
185
192
|
model: ModelOfPresenter<P>;
|
|
193
|
+
onFormSubmit?: () => void;
|
|
186
194
|
} & Omit<FieldsViewProps<ModelOfPresenter<P>['fields']>, 'fields'>;
|
|
187
195
|
|
|
188
196
|
type MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context> = {
|
|
@@ -204,11 +212,11 @@ type MergedOfFieldAdaptersWithValidators<FieldAdapters extends Readonly<Record<K
|
|
|
204
212
|
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;
|
|
205
213
|
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>;
|
|
206
214
|
|
|
207
|
-
type SubFormFieldAdapter<F extends FieldAdapter,
|
|
208
|
-
type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>,
|
|
209
|
-
[K in keyof SubAdapters as K extends StringConcatOf<'$', infer
|
|
215
|
+
type SubFormFieldAdapter<F extends FieldAdapter, ValuePath extends string, Context> = FieldAdapter<FromOfFieldAdapter<F>, ToOfFieldAdapter<F>, ErrorOfFieldAdapter<F>, ValuePathOfFieldAdapter<F> extends StringConcatOf<'$', infer ValuePathSuffix> ? `${ValuePath}${ValuePathSuffix}` : string, Context>;
|
|
216
|
+
type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, ValuePath extends string, Context> = {
|
|
217
|
+
[K in keyof SubAdapters as K extends StringConcatOf<'$', infer TypePathSuffix> ? `${TypePath}${TypePathSuffix}` : never]: SubFormFieldAdapter<SubAdapters[K], ValuePath, Context>;
|
|
210
218
|
};
|
|
211
|
-
declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>,
|
|
219
|
+
declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, TypePathsToValuePaths extends Record<TypePath, string>, ContextType extends Type>(subAdapters: SubAdapters, parentTypePath: TypePath, contextType: ContextType): SubFormFieldAdapters<SubAdapters, TypePath, TypePathsToValuePaths[TypePath], ValueOfType<ContextType>>;
|
|
212
220
|
|
|
213
221
|
declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
|
|
214
222
|
private readonly isNanError;
|
|
@@ -218,14 +226,14 @@ declare class IntegerToStringConverter<E, ValuePath extends string, Context> imp
|
|
|
218
226
|
revert(from: string): UnreliableFieldConversion<number, E>;
|
|
219
227
|
}
|
|
220
228
|
|
|
221
|
-
declare class NullableToBooleanConverter<T extends Type,
|
|
229
|
+
declare class NullableToBooleanConverter<T extends Type, ValuePath extends string, Context, NullType extends null | undefined> implements TwoWayFieldConverterWithValueFactory<ValueOfType<ReadonlyTypeOfType<T>> | NullType, boolean, never, ValuePath, Context> {
|
|
222
230
|
private readonly typeDef;
|
|
223
231
|
private readonly prototype;
|
|
224
232
|
private readonly nullType;
|
|
225
233
|
readonly defaultValue: ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
226
234
|
constructor(typeDef: T, prototype: ValueOfType<ReadonlyTypeOfType<T>>, nullType: NullType, defaultToNull?: boolean);
|
|
227
235
|
convert(from: ValueOfType<ReadonlyTypeOfType<T>> | NullType): AnnotatedFieldConversion<boolean>;
|
|
228
|
-
revert(from: boolean): UnreliableFieldConversion<ValueOfType<ReadonlyTypeOfType<T>> | NullType,
|
|
236
|
+
revert(from: boolean): UnreliableFieldConversion<ValueOfType<ReadonlyTypeOfType<T>> | NullType, never>;
|
|
229
237
|
create(): ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
230
238
|
}
|
|
231
239
|
|
|
@@ -265,11 +273,14 @@ declare function validatingConverter<V, E, ValuePath extends string, Context>(va
|
|
|
265
273
|
|
|
266
274
|
declare function prototypingFieldValueFactory<V, ValuePath extends string, Context>(prototype: V): FieldValueFactory<V, ValuePath, Context>;
|
|
267
275
|
|
|
268
|
-
type
|
|
276
|
+
type ErrorOfField<F extends Field> = F extends Field<infer _V, infer E> ? E : never;
|
|
277
|
+
|
|
278
|
+
type InternalErrorRendererProps<E> = {
|
|
269
279
|
error: E;
|
|
270
280
|
};
|
|
271
|
-
type
|
|
272
|
-
|
|
281
|
+
type ErrorRendererProps<F extends Fields, K extends keyof Fields> = InternalErrorRendererProps<ErrorOfField<F[K]>>;
|
|
282
|
+
type ErrorRenderer<E = any> = ComponentType<InternalErrorRendererProps<E>>;
|
|
283
|
+
declare function DefaultErrorRenderer({ error, }: InternalErrorRendererProps<any>): string;
|
|
273
284
|
|
|
274
285
|
type ValueTypeOfField<F extends Field> = F extends Field<infer V> ? V : never;
|
|
275
286
|
|
|
@@ -281,8 +292,6 @@ type BooleanFieldsOfFields<F extends Fields> = {
|
|
|
281
292
|
[K in keyof F as ValueTypeOfField<F[K]> extends boolean ? K : never]: F[K];
|
|
282
293
|
};
|
|
283
294
|
|
|
284
|
-
type ErrorOfField<F extends Field> = F extends Field<infer _V, infer E> ? E : never;
|
|
285
|
-
|
|
286
295
|
type ListFieldsOfFields<F extends Fields> = {
|
|
287
296
|
[K in keyof F as ValueTypeOfField<F[K]> extends readonly any[] ? K : never]: F[K];
|
|
288
297
|
};
|
|
@@ -319,8 +328,10 @@ type MantineForm<F extends Fields> = {
|
|
|
319
328
|
onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
|
|
320
329
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
321
330
|
};
|
|
322
|
-
type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T,
|
|
323
|
-
|
|
331
|
+
type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T, [
|
|
332
|
+
E
|
|
333
|
+
] extends [never] ? {} : {
|
|
334
|
+
ErrorRenderer: ErrorRenderer<E>;
|
|
324
335
|
}>;
|
|
325
336
|
|
|
326
337
|
type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
|
|
@@ -384,21 +395,21 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
|
|
|
384
395
|
onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
|
|
385
396
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
386
397
|
constructor(fields: F);
|
|
387
|
-
textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps
|
|
388
|
-
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P
|
|
398
|
+
textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>>;
|
|
399
|
+
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>>;
|
|
389
400
|
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]>>;
|
|
390
401
|
select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>>;
|
|
391
|
-
checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps
|
|
402
|
+
checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>>;
|
|
392
403
|
checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>>;
|
|
393
|
-
radioGroup<K extends keyof StringFieldsOfFields<F
|
|
394
|
-
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P
|
|
404
|
+
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends RadioGroupProps = RadioGroupProps>(valuePath: K): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
|
|
405
|
+
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
|
|
395
406
|
radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps, ErrorOfField<F[K]>>;
|
|
396
407
|
radio<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioProps>(valuePath: K, value: ValueTypeOfField<F[K]>, Radio: ComponentType<P>): MantineFieldComponent<SuppliedRadioProps, P, ErrorOfField<F[K]>>;
|
|
397
408
|
pill<K extends keyof AllFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedPillProps, PillProps, ErrorOfField<F[K]>>;
|
|
398
|
-
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P
|
|
399
|
-
list<K extends keyof ListFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedListProps<`${K}.${number}`>, ComponentProps<typeof DefaultList<ElementOfArray<F[K]['value']>, K
|
|
400
|
-
fieldsView<K extends keyof AllFieldsOfFields<F>, P extends FieldsViewProps<Fields> = FieldsViewProps<SubFormFields<F, K>>>(valuePath: K, FieldsView: ComponentType<P>): MantineFieldComponent<FieldsViewProps<P['fields']>, P>;
|
|
401
|
-
form<K extends keyof AllFieldsOfFields<F>, P extends FormProps<ValueTypeOfField<F[K]>> = FormProps<ValueTypeOfField<F[K]>>>(valuePath: K, Form: ComponentType<P>): MantineFieldComponent<FormProps<ValueTypeOfField<F[K]>>, P>;
|
|
409
|
+
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P, ErrorOfField<F[K]>>;
|
|
410
|
+
list<K extends keyof ListFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedListProps<`${K}.${number}`>, ComponentProps<typeof DefaultList<ElementOfArray<F[K]['value']>, K>>, never>;
|
|
411
|
+
fieldsView<K extends keyof AllFieldsOfFields<F>, P extends FieldsViewProps<Fields> = FieldsViewProps<SubFormFields<F, K>>>(valuePath: K, FieldsView: ComponentType<P>): MantineFieldComponent<FieldsViewProps<P['fields']>, P, never>;
|
|
412
|
+
form<K extends keyof AllFieldsOfFields<F>, P extends FormProps<ValueTypeOfField<F[K]>> = FormProps<ValueTypeOfField<F[K]>>>(valuePath: K, Form: ComponentType<P>): MantineFieldComponent<FormProps<ValueTypeOfField<F[K]>>, P, never>;
|
|
402
413
|
}
|
|
403
414
|
|
|
404
415
|
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<{
|
|
@@ -407,4 +418,4 @@ type MergedOfValidators<Validators1 extends Partial<Readonly<Record<Keys, Valida
|
|
|
407
418
|
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;
|
|
408
419
|
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>;
|
|
409
420
|
|
|
410
|
-
export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, DefaultErrorRenderer, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, 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, subFormFieldAdapters, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
|
|
421
|
+
export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, DefaultErrorRenderer, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, 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, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
|
package/dist/index.d.ts
CHANGED
|
@@ -58,6 +58,9 @@ declare class FieldAdapterBuilder<From, To, E, ValuePath extends string, Context
|
|
|
58
58
|
constructor(convert: AnnotatedFieldConverter<From, To, ValuePath, Context>, create: FieldValueFactory<From, ValuePath, Context>, revert?: UnreliableFieldConverter<To, From, E, ValuePath, Context> | undefined);
|
|
59
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
60
|
withReverter(reverter: UnreliableFieldConverter<To, From, E, ValuePath, Context>): FieldAdapterBuilder<From, To, E, ValuePath, Context>;
|
|
61
|
+
nullable(): FieldAdapterBuilder<From | null, To | null, E, ValuePath, Context>;
|
|
62
|
+
optional(): FieldAdapterBuilder<From | undefined, To | undefined, E, ValuePath, Context>;
|
|
63
|
+
private or;
|
|
61
64
|
withIdentity(isFrom: (from: To | From) => from is From): FieldAdapterBuilder<From, To | From, E, ValuePath, Context>;
|
|
62
65
|
get narrow(): FieldAdapter<From, To, E, ValuePath, Context>;
|
|
63
66
|
}
|
|
@@ -68,6 +71,7 @@ declare function adapterFromTwoWayConverter<From, To, E, ValuePath extends strin
|
|
|
68
71
|
declare function adapterFromPrototype<From, To, ValuePath extends string, Context>(converter: AnnotatedFieldConverter<From, To, ValuePath, Context>, prototype: From): FieldAdapterBuilder<From, To, never, ValuePath, Context>;
|
|
69
72
|
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>;
|
|
70
73
|
declare function identityAdapter<V, ValuePath extends string, Context>(prototype: V, required?: boolean): FieldAdapterBuilder<V, V, never, ValuePath, Context>;
|
|
74
|
+
declare function trimmingStringAdapter<ValuePath extends string, Context>(): FieldAdapterBuilder<string, string, never, ValuePath, Context>;
|
|
71
75
|
declare function listAdapter<E, ValuePath extends string, Context>(): FieldAdapterBuilder<readonly E[], readonly E[], never, ValuePath, Context>;
|
|
72
76
|
|
|
73
77
|
type FieldAdaptersOfValues<FlattenedValues extends Readonly<Record<string, any>>, TypePathsToValuePaths extends Readonly<Record<keyof FlattenedValues, string>> = Readonly<Record<keyof FlattenedValues, any>>, Context = any> = {
|
|
@@ -181,8 +185,12 @@ type FormFieldsOfPresenter<Presenter extends FormPresenter<any, any, any, any>>
|
|
|
181
185
|
|
|
182
186
|
type ValueOfPresenter<P extends FormPresenter<any, any, any, any>> = P extends FormPresenter<infer T, any, any, any> ? ValueOfType<ReadonlyTypeOfType<T>> : never;
|
|
183
187
|
type ModelOfPresenter<P extends FormPresenter<any, any, any, any>> = ReturnType<P['createModel']>;
|
|
184
|
-
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>>(presenter: P, value: ValueOfPresenter<P>,
|
|
188
|
+
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>>(presenter: P, value: ValueOfPresenter<P>, { onValidFieldSubmit, onValidFormSubmit, }?: {
|
|
189
|
+
onValidFieldSubmit?: <Path extends ValuePathsOfPresenter<P>>(model: ModelOfPresenter<P>, valuePath: Path) => void;
|
|
190
|
+
onValidFormSubmit?: (model: ModelOfPresenter<P>, value: ValueOfPresenter<P>) => void;
|
|
191
|
+
}): {
|
|
185
192
|
model: ModelOfPresenter<P>;
|
|
193
|
+
onFormSubmit?: () => void;
|
|
186
194
|
} & Omit<FieldsViewProps<ModelOfPresenter<P>['fields']>, 'fields'>;
|
|
187
195
|
|
|
188
196
|
type MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context> = {
|
|
@@ -204,11 +212,11 @@ type MergedOfFieldAdaptersWithValidators<FieldAdapters extends Readonly<Record<K
|
|
|
204
212
|
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;
|
|
205
213
|
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>;
|
|
206
214
|
|
|
207
|
-
type SubFormFieldAdapter<F extends FieldAdapter,
|
|
208
|
-
type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>,
|
|
209
|
-
[K in keyof SubAdapters as K extends StringConcatOf<'$', infer
|
|
215
|
+
type SubFormFieldAdapter<F extends FieldAdapter, ValuePath extends string, Context> = FieldAdapter<FromOfFieldAdapter<F>, ToOfFieldAdapter<F>, ErrorOfFieldAdapter<F>, ValuePathOfFieldAdapter<F> extends StringConcatOf<'$', infer ValuePathSuffix> ? `${ValuePath}${ValuePathSuffix}` : string, Context>;
|
|
216
|
+
type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, ValuePath extends string, Context> = {
|
|
217
|
+
[K in keyof SubAdapters as K extends StringConcatOf<'$', infer TypePathSuffix> ? `${TypePath}${TypePathSuffix}` : never]: SubFormFieldAdapter<SubAdapters[K], ValuePath, Context>;
|
|
210
218
|
};
|
|
211
|
-
declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>,
|
|
219
|
+
declare function subFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, TypePathsToValuePaths extends Record<TypePath, string>, ContextType extends Type>(subAdapters: SubAdapters, parentTypePath: TypePath, contextType: ContextType): SubFormFieldAdapters<SubAdapters, TypePath, TypePathsToValuePaths[TypePath], ValueOfType<ContextType>>;
|
|
212
220
|
|
|
213
221
|
declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
|
|
214
222
|
private readonly isNanError;
|
|
@@ -218,14 +226,14 @@ declare class IntegerToStringConverter<E, ValuePath extends string, Context> imp
|
|
|
218
226
|
revert(from: string): UnreliableFieldConversion<number, E>;
|
|
219
227
|
}
|
|
220
228
|
|
|
221
|
-
declare class NullableToBooleanConverter<T extends Type,
|
|
229
|
+
declare class NullableToBooleanConverter<T extends Type, ValuePath extends string, Context, NullType extends null | undefined> implements TwoWayFieldConverterWithValueFactory<ValueOfType<ReadonlyTypeOfType<T>> | NullType, boolean, never, ValuePath, Context> {
|
|
222
230
|
private readonly typeDef;
|
|
223
231
|
private readonly prototype;
|
|
224
232
|
private readonly nullType;
|
|
225
233
|
readonly defaultValue: ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
226
234
|
constructor(typeDef: T, prototype: ValueOfType<ReadonlyTypeOfType<T>>, nullType: NullType, defaultToNull?: boolean);
|
|
227
235
|
convert(from: ValueOfType<ReadonlyTypeOfType<T>> | NullType): AnnotatedFieldConversion<boolean>;
|
|
228
|
-
revert(from: boolean): UnreliableFieldConversion<ValueOfType<ReadonlyTypeOfType<T>> | NullType,
|
|
236
|
+
revert(from: boolean): UnreliableFieldConversion<ValueOfType<ReadonlyTypeOfType<T>> | NullType, never>;
|
|
229
237
|
create(): ValueOfType<ReadonlyTypeOfType<T>> | NullType;
|
|
230
238
|
}
|
|
231
239
|
|
|
@@ -265,11 +273,14 @@ declare function validatingConverter<V, E, ValuePath extends string, Context>(va
|
|
|
265
273
|
|
|
266
274
|
declare function prototypingFieldValueFactory<V, ValuePath extends string, Context>(prototype: V): FieldValueFactory<V, ValuePath, Context>;
|
|
267
275
|
|
|
268
|
-
type
|
|
276
|
+
type ErrorOfField<F extends Field> = F extends Field<infer _V, infer E> ? E : never;
|
|
277
|
+
|
|
278
|
+
type InternalErrorRendererProps<E> = {
|
|
269
279
|
error: E;
|
|
270
280
|
};
|
|
271
|
-
type
|
|
272
|
-
|
|
281
|
+
type ErrorRendererProps<F extends Fields, K extends keyof Fields> = InternalErrorRendererProps<ErrorOfField<F[K]>>;
|
|
282
|
+
type ErrorRenderer<E = any> = ComponentType<InternalErrorRendererProps<E>>;
|
|
283
|
+
declare function DefaultErrorRenderer({ error, }: InternalErrorRendererProps<any>): string;
|
|
273
284
|
|
|
274
285
|
type ValueTypeOfField<F extends Field> = F extends Field<infer V> ? V : never;
|
|
275
286
|
|
|
@@ -281,8 +292,6 @@ type BooleanFieldsOfFields<F extends Fields> = {
|
|
|
281
292
|
[K in keyof F as ValueTypeOfField<F[K]> extends boolean ? K : never]: F[K];
|
|
282
293
|
};
|
|
283
294
|
|
|
284
|
-
type ErrorOfField<F extends Field> = F extends Field<infer _V, infer E> ? E : never;
|
|
285
|
-
|
|
286
295
|
type ListFieldsOfFields<F extends Fields> = {
|
|
287
296
|
[K in keyof F as ValueTypeOfField<F[K]> extends readonly any[] ? K : never]: F[K];
|
|
288
297
|
};
|
|
@@ -319,8 +328,10 @@ type MantineForm<F extends Fields> = {
|
|
|
319
328
|
onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
|
|
320
329
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
321
330
|
};
|
|
322
|
-
type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T,
|
|
323
|
-
|
|
331
|
+
type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<ComponentType<P>, T, [
|
|
332
|
+
E
|
|
333
|
+
] extends [never] ? {} : {
|
|
334
|
+
ErrorRenderer: ErrorRenderer<E>;
|
|
324
335
|
}>;
|
|
325
336
|
|
|
326
337
|
type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
|
|
@@ -384,21 +395,21 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
|
|
|
384
395
|
onFieldBlur: ((this: void, key: keyof F) => void) | undefined;
|
|
385
396
|
onFieldSubmit: ((this: void, key: keyof F) => boolean | void) | undefined;
|
|
386
397
|
constructor(fields: F);
|
|
387
|
-
textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps
|
|
388
|
-
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P
|
|
398
|
+
textInput<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, TextInputProps, ErrorOfField<F[K]>>;
|
|
399
|
+
textInput<K extends keyof StringFieldsOfFields<F>, P extends SuppliedTextInputProps<any>>(valuePath: K, TextInput?: ComponentType<P>): MantineFieldComponent<SuppliedTextInputProps, P, ErrorOfField<F[K]>>;
|
|
389
400
|
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]>>;
|
|
390
401
|
select<K extends keyof StringFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedTextInputProps, ComponentProps<typeof SimpleSelect>, ErrorOfField<F[K]>>;
|
|
391
|
-
checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps
|
|
402
|
+
checkbox<K extends keyof BooleanFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedCheckboxProps, CheckboxProps, ErrorOfField<F[K]>>;
|
|
392
403
|
checkbox<K extends keyof BooleanFieldsOfFields<F>, P extends SuppliedCheckboxProps>(valuePath: K, Checkbox: ComponentType<P>): MantineFieldComponent<SuppliedCheckboxProps, P, ErrorOfField<F[K]>>;
|
|
393
|
-
radioGroup<K extends keyof StringFieldsOfFields<F
|
|
394
|
-
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P
|
|
404
|
+
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends RadioGroupProps = RadioGroupProps>(valuePath: K): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
|
|
405
|
+
radioGroup<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioGroupProps>(valuePath: K, RadioGroup: ComponentType<P>): MantineFieldComponent<SuppliedRadioGroupProps, P, ErrorOfField<F[K]>>;
|
|
395
406
|
radio<K extends keyof StringFieldsOfFields<F>>(valuePath: K, value: ValueTypeOfField<F[K]>): MantineFieldComponent<SuppliedRadioProps, RadioProps, ErrorOfField<F[K]>>;
|
|
396
407
|
radio<K extends keyof StringFieldsOfFields<F>, P extends SuppliedRadioProps>(valuePath: K, value: ValueTypeOfField<F[K]>, Radio: ComponentType<P>): MantineFieldComponent<SuppliedRadioProps, P, ErrorOfField<F[K]>>;
|
|
397
408
|
pill<K extends keyof AllFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedPillProps, PillProps, ErrorOfField<F[K]>>;
|
|
398
|
-
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P
|
|
399
|
-
list<K extends keyof ListFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedListProps<`${K}.${number}`>, ComponentProps<typeof DefaultList<ElementOfArray<F[K]['value']>, K
|
|
400
|
-
fieldsView<K extends keyof AllFieldsOfFields<F>, P extends FieldsViewProps<Fields> = FieldsViewProps<SubFormFields<F, K>>>(valuePath: K, FieldsView: ComponentType<P>): MantineFieldComponent<FieldsViewProps<P['fields']>, P>;
|
|
401
|
-
form<K extends keyof AllFieldsOfFields<F>, P extends FormProps<ValueTypeOfField<F[K]>> = FormProps<ValueTypeOfField<F[K]>>>(valuePath: K, Form: ComponentType<P>): MantineFieldComponent<FormProps<ValueTypeOfField<F[K]>>, P>;
|
|
409
|
+
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P, ErrorOfField<F[K]>>;
|
|
410
|
+
list<K extends keyof ListFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedListProps<`${K}.${number}`>, ComponentProps<typeof DefaultList<ElementOfArray<F[K]['value']>, K>>, never>;
|
|
411
|
+
fieldsView<K extends keyof AllFieldsOfFields<F>, P extends FieldsViewProps<Fields> = FieldsViewProps<SubFormFields<F, K>>>(valuePath: K, FieldsView: ComponentType<P>): MantineFieldComponent<FieldsViewProps<P['fields']>, P, never>;
|
|
412
|
+
form<K extends keyof AllFieldsOfFields<F>, P extends FormProps<ValueTypeOfField<F[K]>> = FormProps<ValueTypeOfField<F[K]>>>(valuePath: K, Form: ComponentType<P>): MantineFieldComponent<FormProps<ValueTypeOfField<F[K]>>, P, never>;
|
|
402
413
|
}
|
|
403
414
|
|
|
404
415
|
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<{
|
|
@@ -407,4 +418,4 @@ type MergedOfValidators<Validators1 extends Partial<Readonly<Record<Keys, Valida
|
|
|
407
418
|
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;
|
|
408
419
|
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>;
|
|
409
420
|
|
|
410
|
-
export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, DefaultErrorRenderer, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, 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, subFormFieldAdapters, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
|
|
421
|
+
export { AbstractSelectValueTypeConverter, type AnnotatedFieldConversion, type AnnotatedFieldConverter, type Annotation, DefaultErrorRenderer, type ErrorOfField, type ErrorOfFieldAdapter, type ErrorRenderer, type ErrorRendererProps, type Field, type FieldAdapter, type FieldAdaptersOfValues, type FieldValueFactory, type Fields, type FieldsViewProps, 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, subFormFieldAdapters, trimmingStringAdapter, useDefaultMobxFormHooks, useMantineFormFields, usePartialComponent, usePartialObserverComponent, validatingConverter };
|