@strictly/react-form 0.0.9 → 0.0.10
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/form_presenter.d.ts +5 -5
- package/.out/core/mobx/form_presenter.js +8 -6
- package/.out/core/mobx/hooks.d.ts +24 -4
- package/.out/core/mobx/hooks.js +24 -3
- package/.out/core/mobx/specs/form_presenter.tests.js +10 -5
- package/.out/core/mobx/sub_form_field_adapters.d.ts +2 -2
- package/.out/mantine/create_fields_view.d.ts +9 -1
- package/.out/mantine/create_fields_view.js +13 -1
- package/.out/mantine/hooks.d.ts +2 -1
- package/.out/mantine/hooks.js +1 -1
- package/.out/mantine/specs/create_fields_view.tests.d.ts +1 -0
- package/.out/mantine/specs/create_fields_view.tests.js +17 -0
- package/.out/mantine/specs/fields_view_hooks.stories.d.ts +6 -2
- package/.out/mantine/specs/fields_view_hooks.stories.js +26 -7
- package/.out/mantine/specs/fields_view_hooks.tests.js +21 -1
- package/.out/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-build.log +7 -7
- package/.turbo/turbo-check-types.log +1 -1
- package/.turbo/turbo-release$colon$exports.log +1 -1
- package/core/mobx/form_presenter.ts +15 -14
- package/core/mobx/hooks.tsx +196 -0
- package/core/mobx/specs/form_presenter.tests.ts +24 -5
- package/core/mobx/sub_form_field_adapters.ts +14 -3
- package/dist/index.cjs +233 -197
- package/dist/index.d.cts +52 -26
- package/dist/index.d.ts +52 -26
- package/dist/index.js +232 -196
- package/mantine/create_fields_view.tsx +66 -31
- package/mantine/hooks.tsx +9 -6
- package/mantine/specs/__snapshots__/fields_view_hooks.tests.tsx.snap +194 -197
- package/mantine/specs/create_fields_view.tests.ts +29 -0
- package/mantine/specs/fields_view_hooks.stories.tsx +58 -15
- package/mantine/specs/fields_view_hooks.tests.tsx +26 -0
- package/package.json +1 -1
- package/core/mobx/hooks.ts +0 -112
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Maybe, ElementOfArray, StringConcatOf, StringKeyOf as StringKeyOf$1, ExhaustiveArrayOfUnion
|
|
1
|
+
import { Maybe, ElementOfArray, FriendlyExhaustiveArrayOfUnion, StringConcatOf, StringKeyOf as StringKeyOf$1, ExhaustiveArrayOfUnion } from '@strictly/base';
|
|
2
2
|
import { Type, ValueOfType, ReadonlyTypeOfType, FlattenedTypesOfType, ListTypeDef, FlattenedValuesOfType, MobxValueOfType, Accessor, Validator, UnionTypeDef, ValueTypesOfDiscriminatedUnion, LiteralTypeDef } from '@strictly/define';
|
|
3
3
|
import { ValueOf, SimplifyDeep, ReadonlyDeep, StringKeyOf, Simplify } from 'type-fest';
|
|
4
4
|
import { ComponentType, ComponentProps, ForwardRefExoticComponent, PropsWithoutRef, DependencyList } from 'react';
|
|
@@ -117,9 +117,9 @@ type FlattenedErrors<ValuePathsToAdapters extends Readonly<Record<string, FieldA
|
|
|
117
117
|
type ValuePathsToAdaptersOf<TypePathsToAdapters extends Partial<Readonly<Record<string, FieldAdapter>>>, ValuePathsToTypePaths extends Readonly<Record<string, string>>> = keyof TypePathsToAdapters extends ValueOf<ValuePathsToTypePaths> ? {
|
|
118
118
|
readonly [K in keyof ValuePathsToTypePaths as unknown extends TypePathsToAdapters[ValuePathsToTypePaths[K]] ? never : K]: NonNullable<TypePathsToAdapters[ValuePathsToTypePaths[K]]>;
|
|
119
119
|
} : never;
|
|
120
|
-
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>> {
|
|
120
|
+
declare abstract 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>> {
|
|
121
121
|
readonly type: T;
|
|
122
|
-
|
|
122
|
+
protected readonly adapters: TypePathsToAdapters;
|
|
123
123
|
constructor(type: T, adapters: TypePathsToAdapters);
|
|
124
124
|
private maybeGetAdapterForValuePath;
|
|
125
125
|
private getAdapterForValuePath;
|
|
@@ -130,12 +130,12 @@ declare class FormPresenter<T extends Type, ValueToTypePaths extends Readonly<Re
|
|
|
130
130
|
removeListItem<K extends keyof FlattenedListTypesOfType<T>>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, elementValuePath: `${K}.${number}`): void;
|
|
131
131
|
private internalSetFieldValue;
|
|
132
132
|
clearFieldError<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): void;
|
|
133
|
-
clearFieldValue<K extends StringKeyOf<
|
|
133
|
+
clearFieldValue<K extends StringKeyOf<ValueToTypePaths>>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): void;
|
|
134
134
|
clearAll(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, value: ValueOfType<T>): void;
|
|
135
135
|
isValuePathActive<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): boolean;
|
|
136
|
-
validateField<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K): boolean;
|
|
136
|
+
validateField<K extends keyof ValuePathsToAdapters>(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>, valuePath: K, ignoreDefaultValue?: boolean): boolean;
|
|
137
137
|
validateAll(model: FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>): boolean;
|
|
138
|
-
createModel(value: ValueOfType<ReadonlyTypeOfType<T>>): FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>;
|
|
138
|
+
abstract createModel(value: ValueOfType<ReadonlyTypeOfType<T>>): FormModel<T, ValueToTypePaths, TypePathsToAdapters, ValuePathsToAdapters>;
|
|
139
139
|
}
|
|
140
140
|
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>> {
|
|
141
141
|
private readonly type;
|
|
@@ -165,6 +165,21 @@ type FormProps<O> = {
|
|
|
165
165
|
onValueChange: (value: O) => void;
|
|
166
166
|
};
|
|
167
167
|
|
|
168
|
+
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>>;
|
|
169
|
+
type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps>>;
|
|
170
|
+
declare function createSimplePartialComponent<Component extends ComponentType<any>, CurriedProps extends Partial<ComponentProps<Component>>>(Component: Component, curriedProps: CurriedProps): PartialComponent<Component, CurriedProps>;
|
|
171
|
+
declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
172
|
+
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>;
|
|
173
|
+
declare function usePartialComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
174
|
+
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>;
|
|
175
|
+
declare function createPartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
176
|
+
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>;
|
|
177
|
+
declare function createUnsafePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): UnsafePartialComponent<Component, CurriedProps, {}>;
|
|
178
|
+
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>;
|
|
179
|
+
declare function usePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
180
|
+
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>;
|
|
181
|
+
type RemainingComponentProps<Component extends ComponentType, CurriedProps> = Omit<ComponentProps<Component>, keyof CurriedProps> & JSX.IntrinsicAttributes;
|
|
182
|
+
|
|
168
183
|
/**
|
|
169
184
|
* Used to extract the supported value paths from a presenter
|
|
170
185
|
*/
|
|
@@ -185,13 +200,31 @@ type FormFieldsOfPresenter<Presenter extends FormPresenter<any, any, any, any>>
|
|
|
185
200
|
|
|
186
201
|
type ValueOfPresenter<P extends FormPresenter<any, any, any, any>> = P extends FormPresenter<infer T, any, any, any> ? ValueOfType<ReadonlyTypeOfType<T>> : never;
|
|
187
202
|
type ModelOfPresenter<P extends FormPresenter<any, any, any, any>> = ReturnType<P['createModel']>;
|
|
188
|
-
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>>(presenter: P, value: ValueOfPresenter<P>,
|
|
203
|
+
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>, C extends ComponentType<FieldsViewProps<F>>, F extends FormFieldsOfPresenter<P> = FormFieldsOfPresenter<P>>(presenter: P, value: ValueOfPresenter<P>, options?: {
|
|
204
|
+
onValidFieldSubmit?: <Path extends ValuePathsOfPresenter<P>>(model: ModelOfPresenter<P>, valuePath: Path) => void;
|
|
205
|
+
onValidFormSubmit?: (model: ModelOfPresenter<P>, value: ValueOfPresenter<P>) => void;
|
|
206
|
+
}): {
|
|
207
|
+
model: ModelOfPresenter<P>;
|
|
208
|
+
FormFields?: UnsafePartialComponent<C, FieldsViewProps<F>>;
|
|
209
|
+
onFormSubmit: () => void;
|
|
210
|
+
onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
|
|
211
|
+
onFieldFocus?(this: void, key: keyof F): void;
|
|
212
|
+
onFieldBlur?(this: void, key: keyof F): void;
|
|
213
|
+
onFieldSubmit?(this: void, key: keyof F): boolean | void;
|
|
214
|
+
};
|
|
215
|
+
declare function useDefaultMobxFormHooks<P extends FormPresenter<any, any, any, any>, C extends ComponentType<FieldsViewProps<F>>, F extends FormFieldsOfPresenter<P> = FormFieldsOfPresenter<P>>(presenter: P, value: ValueOfPresenter<P>, options: {
|
|
189
216
|
onValidFieldSubmit?: <Path extends ValuePathsOfPresenter<P>>(model: ModelOfPresenter<P>, valuePath: Path) => void;
|
|
190
217
|
onValidFormSubmit?: (model: ModelOfPresenter<P>, value: ValueOfPresenter<P>) => void;
|
|
218
|
+
FormFieldsView: C;
|
|
191
219
|
}): {
|
|
192
220
|
model: ModelOfPresenter<P>;
|
|
193
|
-
|
|
194
|
-
|
|
221
|
+
FormFields: UnsafePartialComponent<C, FieldsViewProps<F>>;
|
|
222
|
+
onFormSubmit: () => void;
|
|
223
|
+
onFieldValueChange<K extends keyof F>(this: void, key: K, value: F[K]['value']): void;
|
|
224
|
+
onFieldFocus?(this: void, key: keyof F): void;
|
|
225
|
+
onFieldBlur?(this: void, key: keyof F): void;
|
|
226
|
+
onFieldSubmit?(this: void, key: keyof F): boolean | void;
|
|
227
|
+
};
|
|
195
228
|
|
|
196
229
|
type MergedOfFieldAdaptersWithTwoWayConverter<FieldAdapters extends Readonly<Record<string, FieldAdapter>>, E, Context> = {
|
|
197
230
|
[K in keyof FieldAdapters]: FieldAdapter<FromOfFieldAdapter<FieldAdapters[K]>, ToOfFieldAdapter<FieldAdapters[K]>, ErrorOfFieldAdapter<FieldAdapters[K]> | E, ValuePathOfFieldAdapter<FieldAdapters[K]>, Context>;
|
|
@@ -216,7 +249,7 @@ type SubFormFieldAdapter<F extends FieldAdapter, ValuePath extends string, Conte
|
|
|
216
249
|
type SubFormFieldAdapters<SubAdapters extends Record<string, FieldAdapter>, TypePath extends string, ValuePath extends string, Context> = {
|
|
217
250
|
[K in keyof SubAdapters as K extends StringConcatOf<'$', infer TypePathSuffix> ? `${TypePath}${TypePathSuffix}` : never]: SubFormFieldAdapter<SubAdapters[K], ValuePath, Context>;
|
|
218
251
|
};
|
|
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
|
|
252
|
+
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<ReadonlyTypeOfType<ContextType>>>;
|
|
220
253
|
|
|
221
254
|
declare class IntegerToStringConverter<E, ValuePath extends string, Context> implements TwoWayFieldConverter<number, string, E, ValuePath, Context> {
|
|
222
255
|
private readonly isNanError;
|
|
@@ -306,21 +339,6 @@ type SubFormFields<F extends Fields, P extends keyof F> = P extends string ? {
|
|
|
306
339
|
$: F[P];
|
|
307
340
|
} : never;
|
|
308
341
|
|
|
309
|
-
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>>;
|
|
310
|
-
type UnsafePartialComponent<Component extends ComponentType<any>, CurriedProps, AdditionalProps = {}> = ForwardRefExoticComponent<PropsWithoutRef<RemainingComponentProps<Component, CurriedProps> & AdditionalProps>>;
|
|
311
|
-
declare function createSimplePartialComponent<Component extends ComponentType<any>, CurriedProps extends Partial<ComponentProps<Component>>>(Component: Component, curriedProps: CurriedProps): PartialComponent<Component, CurriedProps>;
|
|
312
|
-
declare function createPartialComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
313
|
-
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>;
|
|
314
|
-
declare function usePartialComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
315
|
-
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>;
|
|
316
|
-
declare function createPartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): PartialComponent<Component, CurriedProps, {}>;
|
|
317
|
-
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>;
|
|
318
|
-
declare function createUnsafePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(Component: Component, curriedPropsSource: () => CurriedProps): UnsafePartialComponent<Component, CurriedProps, {}>;
|
|
319
|
-
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>;
|
|
320
|
-
declare function usePartialObserverComponent<Component extends ComponentType<any>, CurriedProps>(curriedPropsSource: () => CurriedProps, deps: DependencyList, Component: Component): PartialComponent<Component, CurriedProps, {}>;
|
|
321
|
-
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>;
|
|
322
|
-
type RemainingComponentProps<Component extends ComponentType, CurriedProps> = Omit<ComponentProps<Component>, keyof CurriedProps> & JSX.IntrinsicAttributes;
|
|
323
|
-
|
|
324
342
|
type MantineForm<F extends Fields> = {
|
|
325
343
|
fields: F;
|
|
326
344
|
onFieldValueChange: (<K extends keyof F>(this: void, key: K, value: F[K]['value']) => void) | undefined;
|
|
@@ -336,6 +354,14 @@ type MantineFieldComponent<T, P = T, E = any> = UnsafePartialComponent<Component
|
|
|
336
354
|
|
|
337
355
|
type SuppliedCheckboxProps = Pick<CheckboxProps, 'name' | 'checked' | 'disabled' | 'required' | 'error' | 'onChange' | 'onFocus' | 'onBlur' | 'onKeyUp'>;
|
|
338
356
|
|
|
357
|
+
type CallbackMapper<ValuePath extends string> = {
|
|
358
|
+
<Cb extends (...args: any[]) => any>(cb: Cb): Parameters<Cb> extends [infer SubFormValuePath extends string, ...(infer Rest)] ? SubFormValuePath extends StringConcatOf<ValuePath, infer Postfix> ? (valuePath: `$${Postfix}`, ...rest: Rest) => ReturnType<Cb> : never : never;
|
|
359
|
+
};
|
|
360
|
+
type FieldsView<ValuePath extends string = string, C extends ComponentType<any> = ComponentType<any>> = {
|
|
361
|
+
Component: C;
|
|
362
|
+
callbackMapper: CallbackMapper<ValuePath>;
|
|
363
|
+
};
|
|
364
|
+
|
|
339
365
|
type SuppliedListProps<Value = any, ListPath extends string = string> = {
|
|
340
366
|
values: readonly Value[];
|
|
341
367
|
listPath: ListPath;
|
|
@@ -408,7 +434,7 @@ declare class MantineFormImpl<F extends Fields> implements MantineForm<F> {
|
|
|
408
434
|
pill<K extends keyof AllFieldsOfFields<F>>(valuePath: K): MantineFieldComponent<SuppliedPillProps, PillProps, ErrorOfField<F[K]>>;
|
|
409
435
|
pill<K extends keyof AllFieldsOfFields<F>, P extends SuppliedPillProps>(valuePath: K, Pill: ComponentType<P>): MantineFieldComponent<SuppliedPillProps, P, ErrorOfField<F[K]>>;
|
|
410
436
|
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
|
|
437
|
+
fieldsView<K extends keyof AllFieldsOfFields<F>, P extends FieldsViewProps<Fields> = FieldsViewProps<SubFormFields<F, K>>>(valuePath: K, FieldsView: ComponentType<P>): FieldsView<K, MantineFieldComponent<FieldsViewProps<P['fields']>, P, never>>;
|
|
412
438
|
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>;
|
|
413
439
|
}
|
|
414
440
|
|
package/dist/index.js
CHANGED
|
@@ -451,8 +451,7 @@ var FormPresenter = class {
|
|
|
451
451
|
convert,
|
|
452
452
|
create
|
|
453
453
|
} = adapter2;
|
|
454
|
-
const
|
|
455
|
-
const value = accessor == null ? create(valuePath, model.value) : accessor.value;
|
|
454
|
+
const value = create(valuePath, model.value);
|
|
456
455
|
const {
|
|
457
456
|
value: displayValue
|
|
458
457
|
} = convert(value, valuePath, model.value);
|
|
@@ -473,7 +472,7 @@ var FormPresenter = class {
|
|
|
473
472
|
const keys = new Set(Object.keys(values));
|
|
474
473
|
return keys.has(valuePath);
|
|
475
474
|
}
|
|
476
|
-
validateField(model, valuePath) {
|
|
475
|
+
validateField(model, valuePath, ignoreDefaultValue = false) {
|
|
477
476
|
const {
|
|
478
477
|
convert,
|
|
479
478
|
revert,
|
|
@@ -492,6 +491,14 @@ var FormPresenter = class {
|
|
|
492
491
|
const value = fieldOverride != null ? fieldOverride[0] : storedValue;
|
|
493
492
|
const dirty = storedValue !== value;
|
|
494
493
|
assertExists(revert, "changing field directly not supported {}", valuePath);
|
|
494
|
+
if (ignoreDefaultValue) {
|
|
495
|
+
const {
|
|
496
|
+
value: defaultDisplayValue
|
|
497
|
+
} = convert(create(valuePath, model.value), valuePath, model.value);
|
|
498
|
+
if (defaultDisplayValue === value) {
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
495
502
|
const conversion = revert(value, valuePath, model.value);
|
|
496
503
|
return runInAction(function() {
|
|
497
504
|
switch (conversion.type) {
|
|
@@ -562,13 +569,6 @@ var FormPresenter = class {
|
|
|
562
569
|
);
|
|
563
570
|
});
|
|
564
571
|
}
|
|
565
|
-
createModel(value) {
|
|
566
|
-
return new FormModel(
|
|
567
|
-
this.type,
|
|
568
|
-
value,
|
|
569
|
-
this.adapters
|
|
570
|
-
);
|
|
571
|
-
}
|
|
572
572
|
};
|
|
573
573
|
var FormModel = class {
|
|
574
574
|
constructor(type, value, adapters) {
|
|
@@ -706,16 +706,173 @@ var FormModel = class {
|
|
|
706
706
|
}
|
|
707
707
|
};
|
|
708
708
|
|
|
709
|
-
// core/mobx/hooks.
|
|
709
|
+
// core/mobx/hooks.tsx
|
|
710
710
|
import {
|
|
711
711
|
useCallback,
|
|
712
|
+
useMemo as useMemo2
|
|
713
|
+
} from "react";
|
|
714
|
+
|
|
715
|
+
// util/partial.tsx
|
|
716
|
+
import { observer } from "mobx-react";
|
|
717
|
+
import {
|
|
718
|
+
forwardRef,
|
|
712
719
|
useMemo
|
|
713
720
|
} from "react";
|
|
721
|
+
import { jsx } from "react/jsx-runtime";
|
|
722
|
+
function createSimplePartialComponent(Component, curriedProps) {
|
|
723
|
+
return forwardRef(
|
|
724
|
+
function(exposedProps, ref) {
|
|
725
|
+
const C = Component;
|
|
726
|
+
return /* @__PURE__ */ jsx(
|
|
727
|
+
C,
|
|
728
|
+
{
|
|
729
|
+
ref,
|
|
730
|
+
...curriedProps,
|
|
731
|
+
...exposedProps
|
|
732
|
+
}
|
|
733
|
+
);
|
|
734
|
+
}
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
function createPartialComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
738
|
+
return forwardRef(
|
|
739
|
+
function(props, ref) {
|
|
740
|
+
const C = Component;
|
|
741
|
+
const [
|
|
742
|
+
additionalProps,
|
|
743
|
+
exposedProps
|
|
744
|
+
] = additionalPropKeys.reduce(
|
|
745
|
+
function([
|
|
746
|
+
additionalProps2,
|
|
747
|
+
exposedProps2
|
|
748
|
+
], key) {
|
|
749
|
+
const value = props[
|
|
750
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
751
|
+
key
|
|
752
|
+
];
|
|
753
|
+
delete exposedProps2[key];
|
|
754
|
+
additionalProps2[key] = value;
|
|
755
|
+
return [
|
|
756
|
+
additionalProps2,
|
|
757
|
+
exposedProps2
|
|
758
|
+
];
|
|
759
|
+
},
|
|
760
|
+
[
|
|
761
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
762
|
+
{},
|
|
763
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
764
|
+
{ ...props }
|
|
765
|
+
]
|
|
766
|
+
);
|
|
767
|
+
const curriedProps = curriedPropsSource(additionalProps);
|
|
768
|
+
return /* @__PURE__ */ jsx(
|
|
769
|
+
C,
|
|
770
|
+
{
|
|
771
|
+
ref,
|
|
772
|
+
...curriedProps,
|
|
773
|
+
...exposedProps
|
|
774
|
+
}
|
|
775
|
+
);
|
|
776
|
+
}
|
|
777
|
+
);
|
|
778
|
+
}
|
|
779
|
+
function usePartialComponent(curriedPropsSource, deps, Component, additionalPropKeys = []) {
|
|
780
|
+
return useMemo(
|
|
781
|
+
function() {
|
|
782
|
+
return createPartialComponent(
|
|
783
|
+
Component,
|
|
784
|
+
curriedPropsSource,
|
|
785
|
+
additionalPropKeys
|
|
786
|
+
);
|
|
787
|
+
},
|
|
788
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
789
|
+
[
|
|
790
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
791
|
+
...deps,
|
|
792
|
+
Component,
|
|
793
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
794
|
+
...additionalPropKeys
|
|
795
|
+
]
|
|
796
|
+
);
|
|
797
|
+
}
|
|
798
|
+
function createPartialObserverComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
799
|
+
return createUnsafePartialObserverComponent(
|
|
800
|
+
Component,
|
|
801
|
+
curriedPropsSource,
|
|
802
|
+
additionalPropKeys
|
|
803
|
+
);
|
|
804
|
+
}
|
|
805
|
+
function createUnsafePartialObserverComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
806
|
+
return observer(
|
|
807
|
+
forwardRef(
|
|
808
|
+
function(props, ref) {
|
|
809
|
+
const C = Component;
|
|
810
|
+
const [
|
|
811
|
+
additionalProps,
|
|
812
|
+
exposedProps
|
|
813
|
+
] = additionalPropKeys.reduce(
|
|
814
|
+
function([
|
|
815
|
+
additionalProps2,
|
|
816
|
+
exposedProps2
|
|
817
|
+
], key) {
|
|
818
|
+
const value = props[
|
|
819
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
820
|
+
key
|
|
821
|
+
];
|
|
822
|
+
delete exposedProps2[key];
|
|
823
|
+
additionalProps2[key] = value;
|
|
824
|
+
return [
|
|
825
|
+
additionalProps2,
|
|
826
|
+
exposedProps2
|
|
827
|
+
];
|
|
828
|
+
},
|
|
829
|
+
[
|
|
830
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
831
|
+
{},
|
|
832
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
833
|
+
{ ...props }
|
|
834
|
+
]
|
|
835
|
+
);
|
|
836
|
+
const curriedProps = curriedPropsSource(additionalProps);
|
|
837
|
+
return /* @__PURE__ */ jsx(
|
|
838
|
+
C,
|
|
839
|
+
{
|
|
840
|
+
ref,
|
|
841
|
+
...curriedProps,
|
|
842
|
+
...exposedProps
|
|
843
|
+
}
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
)
|
|
847
|
+
);
|
|
848
|
+
}
|
|
849
|
+
function usePartialObserverComponent(curriedPropsSource, deps, Component, additionalPropKeys = []) {
|
|
850
|
+
return useMemo(
|
|
851
|
+
function() {
|
|
852
|
+
return createPartialObserverComponent(
|
|
853
|
+
Component,
|
|
854
|
+
curriedPropsSource,
|
|
855
|
+
additionalPropKeys
|
|
856
|
+
);
|
|
857
|
+
},
|
|
858
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
859
|
+
[
|
|
860
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
861
|
+
...deps,
|
|
862
|
+
Component,
|
|
863
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
864
|
+
...additionalPropKeys
|
|
865
|
+
]
|
|
866
|
+
);
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
// core/mobx/hooks.tsx
|
|
714
870
|
function useDefaultMobxFormHooks(presenter, value, {
|
|
715
871
|
onValidFieldSubmit,
|
|
716
|
-
onValidFormSubmit
|
|
872
|
+
onValidFormSubmit,
|
|
873
|
+
FormFieldsView
|
|
717
874
|
} = {}) {
|
|
718
|
-
const model =
|
|
875
|
+
const model = useMemo2(function() {
|
|
719
876
|
return presenter.createModel(value);
|
|
720
877
|
}, [
|
|
721
878
|
presenter,
|
|
@@ -748,7 +905,7 @@ function useDefaultMobxFormHooks(presenter, value, {
|
|
|
748
905
|
function(path) {
|
|
749
906
|
setTimeout(function() {
|
|
750
907
|
if (presenter.isValuePathActive(model, path)) {
|
|
751
|
-
presenter.validateField(model, path);
|
|
908
|
+
presenter.validateField(model, path, true);
|
|
752
909
|
}
|
|
753
910
|
}, 100);
|
|
754
911
|
},
|
|
@@ -769,12 +926,33 @@ function useDefaultMobxFormHooks(presenter, value, {
|
|
|
769
926
|
onValidFormSubmit
|
|
770
927
|
]
|
|
771
928
|
);
|
|
929
|
+
const FormFields = useMemo2(() => {
|
|
930
|
+
if (FormFieldsView == null) {
|
|
931
|
+
return void 0;
|
|
932
|
+
}
|
|
933
|
+
return createUnsafePartialObserverComponent(FormFieldsView, () => {
|
|
934
|
+
return {
|
|
935
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
936
|
+
fields: model.fields,
|
|
937
|
+
onFieldBlur,
|
|
938
|
+
onFieldSubmit,
|
|
939
|
+
onFieldValueChange
|
|
940
|
+
};
|
|
941
|
+
});
|
|
942
|
+
}, [
|
|
943
|
+
model,
|
|
944
|
+
FormFieldsView,
|
|
945
|
+
onFieldBlur,
|
|
946
|
+
onFieldSubmit,
|
|
947
|
+
onFieldValueChange
|
|
948
|
+
]);
|
|
772
949
|
return {
|
|
773
950
|
model,
|
|
774
951
|
onFieldValueChange,
|
|
775
952
|
onFieldSubmit,
|
|
776
953
|
onFieldBlur,
|
|
777
|
-
onFormSubmit
|
|
954
|
+
onFormSubmit,
|
|
955
|
+
FormFields
|
|
778
956
|
};
|
|
779
957
|
}
|
|
780
958
|
|
|
@@ -1113,160 +1291,6 @@ import {
|
|
|
1113
1291
|
useMemo as useMemo3
|
|
1114
1292
|
} from "react";
|
|
1115
1293
|
|
|
1116
|
-
// util/partial.tsx
|
|
1117
|
-
import { observer } from "mobx-react";
|
|
1118
|
-
import {
|
|
1119
|
-
forwardRef,
|
|
1120
|
-
useMemo as useMemo2
|
|
1121
|
-
} from "react";
|
|
1122
|
-
import { jsx } from "react/jsx-runtime";
|
|
1123
|
-
function createSimplePartialComponent(Component, curriedProps) {
|
|
1124
|
-
return forwardRef(
|
|
1125
|
-
function(exposedProps, ref) {
|
|
1126
|
-
const C = Component;
|
|
1127
|
-
return /* @__PURE__ */ jsx(
|
|
1128
|
-
C,
|
|
1129
|
-
{
|
|
1130
|
-
ref,
|
|
1131
|
-
...curriedProps,
|
|
1132
|
-
...exposedProps
|
|
1133
|
-
}
|
|
1134
|
-
);
|
|
1135
|
-
}
|
|
1136
|
-
);
|
|
1137
|
-
}
|
|
1138
|
-
function createPartialComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
1139
|
-
return forwardRef(
|
|
1140
|
-
function(props, ref) {
|
|
1141
|
-
const C = Component;
|
|
1142
|
-
const [
|
|
1143
|
-
additionalProps,
|
|
1144
|
-
exposedProps
|
|
1145
|
-
] = additionalPropKeys.reduce(
|
|
1146
|
-
function([
|
|
1147
|
-
additionalProps2,
|
|
1148
|
-
exposedProps2
|
|
1149
|
-
], key) {
|
|
1150
|
-
const value = props[
|
|
1151
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1152
|
-
key
|
|
1153
|
-
];
|
|
1154
|
-
delete exposedProps2[key];
|
|
1155
|
-
additionalProps2[key] = value;
|
|
1156
|
-
return [
|
|
1157
|
-
additionalProps2,
|
|
1158
|
-
exposedProps2
|
|
1159
|
-
];
|
|
1160
|
-
},
|
|
1161
|
-
[
|
|
1162
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1163
|
-
{},
|
|
1164
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1165
|
-
{ ...props }
|
|
1166
|
-
]
|
|
1167
|
-
);
|
|
1168
|
-
const curriedProps = curriedPropsSource(additionalProps);
|
|
1169
|
-
return /* @__PURE__ */ jsx(
|
|
1170
|
-
C,
|
|
1171
|
-
{
|
|
1172
|
-
ref,
|
|
1173
|
-
...curriedProps,
|
|
1174
|
-
...exposedProps
|
|
1175
|
-
}
|
|
1176
|
-
);
|
|
1177
|
-
}
|
|
1178
|
-
);
|
|
1179
|
-
}
|
|
1180
|
-
function usePartialComponent(curriedPropsSource, deps, Component, additionalPropKeys = []) {
|
|
1181
|
-
return useMemo2(
|
|
1182
|
-
function() {
|
|
1183
|
-
return createPartialComponent(
|
|
1184
|
-
Component,
|
|
1185
|
-
curriedPropsSource,
|
|
1186
|
-
additionalPropKeys
|
|
1187
|
-
);
|
|
1188
|
-
},
|
|
1189
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1190
|
-
[
|
|
1191
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1192
|
-
...deps,
|
|
1193
|
-
Component,
|
|
1194
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1195
|
-
...additionalPropKeys
|
|
1196
|
-
]
|
|
1197
|
-
);
|
|
1198
|
-
}
|
|
1199
|
-
function createPartialObserverComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
1200
|
-
return createUnsafePartialObserverComponent(
|
|
1201
|
-
Component,
|
|
1202
|
-
curriedPropsSource,
|
|
1203
|
-
additionalPropKeys
|
|
1204
|
-
);
|
|
1205
|
-
}
|
|
1206
|
-
function createUnsafePartialObserverComponent(Component, curriedPropsSource, additionalPropKeys = []) {
|
|
1207
|
-
return observer(
|
|
1208
|
-
forwardRef(
|
|
1209
|
-
function(props, ref) {
|
|
1210
|
-
const C = Component;
|
|
1211
|
-
const [
|
|
1212
|
-
additionalProps,
|
|
1213
|
-
exposedProps
|
|
1214
|
-
] = additionalPropKeys.reduce(
|
|
1215
|
-
function([
|
|
1216
|
-
additionalProps2,
|
|
1217
|
-
exposedProps2
|
|
1218
|
-
], key) {
|
|
1219
|
-
const value = props[
|
|
1220
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1221
|
-
key
|
|
1222
|
-
];
|
|
1223
|
-
delete exposedProps2[key];
|
|
1224
|
-
additionalProps2[key] = value;
|
|
1225
|
-
return [
|
|
1226
|
-
additionalProps2,
|
|
1227
|
-
exposedProps2
|
|
1228
|
-
];
|
|
1229
|
-
},
|
|
1230
|
-
[
|
|
1231
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1232
|
-
{},
|
|
1233
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1234
|
-
{ ...props }
|
|
1235
|
-
]
|
|
1236
|
-
);
|
|
1237
|
-
const curriedProps = curriedPropsSource(additionalProps);
|
|
1238
|
-
return /* @__PURE__ */ jsx(
|
|
1239
|
-
C,
|
|
1240
|
-
{
|
|
1241
|
-
ref,
|
|
1242
|
-
...curriedProps,
|
|
1243
|
-
...exposedProps
|
|
1244
|
-
}
|
|
1245
|
-
);
|
|
1246
|
-
}
|
|
1247
|
-
)
|
|
1248
|
-
);
|
|
1249
|
-
}
|
|
1250
|
-
function usePartialObserverComponent(curriedPropsSource, deps, Component, additionalPropKeys = []) {
|
|
1251
|
-
return useMemo2(
|
|
1252
|
-
function() {
|
|
1253
|
-
return createPartialObserverComponent(
|
|
1254
|
-
Component,
|
|
1255
|
-
curriedPropsSource,
|
|
1256
|
-
additionalPropKeys
|
|
1257
|
-
);
|
|
1258
|
-
},
|
|
1259
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1260
|
-
[
|
|
1261
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1262
|
-
...deps,
|
|
1263
|
-
Component,
|
|
1264
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1265
|
-
...additionalPropKeys
|
|
1266
|
-
]
|
|
1267
|
-
);
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
1294
|
// mantine/create_checkbox.tsx
|
|
1271
1295
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
1272
1296
|
function createCheckbox(valuePath, Checkbox) {
|
|
@@ -1337,34 +1361,46 @@ function createFieldsView(valuePath, FieldsView, observableProps) {
|
|
|
1337
1361
|
function onFieldSubmit(subKey) {
|
|
1338
1362
|
observableProps.onFieldSubmit?.(toKey(subKey));
|
|
1339
1363
|
}
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
(
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1364
|
+
const Component = observer2(
|
|
1365
|
+
function(props) {
|
|
1366
|
+
const subFields = Object.entries(observableProps.fields).reduce(
|
|
1367
|
+
(acc, [
|
|
1368
|
+
fieldKey,
|
|
1369
|
+
fieldValue
|
|
1370
|
+
]) => {
|
|
1371
|
+
if (fieldKey.startsWith(valuePath)) {
|
|
1372
|
+
acc[toSubKey(fieldKey)] = fieldValue;
|
|
1373
|
+
}
|
|
1374
|
+
return acc;
|
|
1375
|
+
},
|
|
1376
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
1377
|
+
{}
|
|
1378
|
+
);
|
|
1379
|
+
return /* @__PURE__ */ jsx3(
|
|
1380
|
+
FieldsView,
|
|
1381
|
+
{
|
|
1382
|
+
// maybe we can do this in a more type safe way
|
|
1383
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/consistent-type-assertions
|
|
1384
|
+
...props,
|
|
1385
|
+
fields: subFields,
|
|
1386
|
+
onFieldBlur,
|
|
1387
|
+
onFieldFocus,
|
|
1388
|
+
onFieldSubmit,
|
|
1389
|
+
onFieldValueChange
|
|
1348
1390
|
}
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
)
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
onFieldFocus,
|
|
1363
|
-
onFieldSubmit,
|
|
1364
|
-
onFieldValueChange
|
|
1365
|
-
}
|
|
1366
|
-
);
|
|
1367
|
-
});
|
|
1391
|
+
);
|
|
1392
|
+
}
|
|
1393
|
+
);
|
|
1394
|
+
const callbackMapper = (callback) => {
|
|
1395
|
+
return (subFormValuePath, ...args) => {
|
|
1396
|
+
const valuePath2 = toKey(subFormValuePath);
|
|
1397
|
+
return callback(valuePath2, ...args);
|
|
1398
|
+
};
|
|
1399
|
+
};
|
|
1400
|
+
return {
|
|
1401
|
+
Component,
|
|
1402
|
+
callbackMapper
|
|
1403
|
+
};
|
|
1368
1404
|
}
|
|
1369
1405
|
|
|
1370
1406
|
// mantine/create_form.tsx
|