@jfdevelops/react-multi-step-form 1.0.0-alpha.2 → 1.0.0-alpha.20

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.
Files changed (51) hide show
  1. package/dist/create-context.cjs +92 -0
  2. package/dist/create-context.cjs.map +1 -0
  3. package/dist/create-context.d.cts +154 -0
  4. package/dist/create-context.d.mts +154 -0
  5. package/dist/create-context.mjs +92 -0
  6. package/dist/create-context.mjs.map +1 -0
  7. package/dist/field.cjs +22 -0
  8. package/dist/field.cjs.map +1 -0
  9. package/dist/field.d.cts +38 -0
  10. package/dist/field.d.mts +38 -0
  11. package/dist/field.mjs +16 -0
  12. package/dist/field.mjs.map +1 -0
  13. package/dist/form-config.cjs +32 -0
  14. package/dist/form-config.cjs.map +1 -0
  15. package/dist/form-config.d.cts +160 -0
  16. package/dist/form-config.d.mts +160 -0
  17. package/dist/form-config.mjs +27 -0
  18. package/dist/form-config.mjs.map +1 -0
  19. package/dist/hooks/use-multi-step-form-data.cjs +41 -0
  20. package/dist/hooks/use-multi-step-form-data.cjs.map +1 -0
  21. package/dist/hooks/use-multi-step-form-data.d.cts +28 -0
  22. package/dist/hooks/use-multi-step-form-data.d.mts +28 -0
  23. package/dist/hooks/use-multi-step-form-data.mjs +39 -0
  24. package/dist/hooks/use-multi-step-form-data.mjs.map +1 -0
  25. package/dist/index.cjs +16 -45
  26. package/dist/index.d.cts +5 -0
  27. package/dist/index.d.mts +5 -0
  28. package/dist/index.mjs +5 -1463
  29. package/dist/schema.cjs +45 -0
  30. package/dist/schema.cjs.map +1 -0
  31. package/dist/schema.d.cts +34 -0
  32. package/dist/schema.d.mts +34 -0
  33. package/dist/schema.mjs +44 -0
  34. package/dist/schema.mjs.map +1 -0
  35. package/dist/step-schema.cjs +237 -0
  36. package/dist/step-schema.cjs.map +1 -0
  37. package/dist/step-schema.d.cts +136 -0
  38. package/dist/step-schema.d.mts +136 -0
  39. package/dist/step-schema.mjs +230 -0
  40. package/dist/step-schema.mjs.map +1 -0
  41. package/package.json +19 -11
  42. package/dist/index.cjs.map +0 -1
  43. package/dist/index.mjs.map +0 -1
  44. package/dist/types/create-context.d.ts +0 -156
  45. package/dist/types/field.d.ts +0 -22
  46. package/dist/types/form-config.d.ts +0 -161
  47. package/dist/types/hooks/use-multi-step-form-data.d.ts +0 -26
  48. package/dist/types/index.d.ts +0 -4
  49. package/dist/types/schema.d.ts +0 -29
  50. package/dist/types/step-schema.d.ts +0 -124
  51. package/dist/types/utils.d.ts +0 -0
@@ -1,161 +0,0 @@
1
- import { Expand, HelperFnChosenSteps, StepNumbers, ValidStepKey } from '@jfdevelops/multi-step-form';
2
- import { ComponentPropsWithRef, JSX } from 'react';
3
- import { AnyResolvedStep, CreatedMultiStepFormComponent } from './step-schema';
4
- export declare namespace MultiStepFormSchemaConfig {
5
- export const DEFAULT_FORM_ALIAS = "Form";
6
- export type defaultEnabledFor = HelperFnChosenSteps.defaultStringOption;
7
- export type defaultFormAlias = typeof DEFAULT_FORM_ALIAS;
8
- export type formEnabledFor<TResolvedStep extends AnyResolvedStep> = HelperFnChosenSteps<TResolvedStep, StepNumbers<TResolvedStep>>;
9
- type strippedResolvedSteps<T extends AnyResolvedStep> = {
10
- [_ in keyof T]: Expand<Omit<T[_], 'createComponent' | 'createHelperFn'>>;
11
- };
12
- export type AvailableStepForForm<TResolvedStep extends AnyResolvedStep, TEnabledFor extends formEnabledFor<TResolvedStep>> = TEnabledFor extends defaultEnabledFor ? strippedResolvedSteps<TResolvedStep> : TEnabledFor extends [
13
- ValidStepKey<StepNumbers<TResolvedStep>>,
14
- ...ValidStepKey<StepNumbers<TResolvedStep>>[]
15
- ] ? TEnabledFor[number] extends keyof TResolvedStep ? Pick<strippedResolvedSteps<TResolvedStep>, TEnabledFor[number]> : never : keyof TEnabledFor extends keyof TResolvedStep ? Expand<Pick<strippedResolvedSteps<TResolvedStep>, Extract<keyof TResolvedStep, keyof TEnabledFor>>> : never;
16
- export type formCtx<TAlias extends string, TProps> = {
17
- [_ in TAlias]: CreatedMultiStepFormComponent<TProps>;
18
- };
19
- export type renderFnData<TResolvedStep extends AnyResolvedStep, TEnabledFor extends formEnabledFor<TResolvedStep>> = {
20
- /**
21
- * The id for the form, either a custom one or the default one.
22
- */
23
- id: string;
24
- /**
25
- * The chosen steps that are available.
26
- */
27
- steps: Expand<AvailableStepForForm<TResolvedStep, TEnabledFor>>;
28
- };
29
- /**
30
- * The configuration options for the `form` option.
31
- */
32
- export interface FormConfig<TResolvedStep extends AnyResolvedStep, TAlias extends string, TFormEnabledFor extends formEnabledFor<TResolvedStep>, TCustomFormProps extends object> {
33
- /**
34
- * The `id` for the form component.
35
- *
36
- * If there is no value provided, the default id will the **current step key**.
37
- *
38
- * @default `${currentStep}`
39
- */
40
- id?: string;
41
- /**
42
- * The "name" of the form component.
43
- * @default 'Form'
44
- * @example
45
- * ```tsx
46
- * const schema = createMultiStepFormSchema({
47
- * steps: {
48
- * step1: {
49
- * title: 'Step 1',
50
- * fields: {
51
- * firstName: {
52
- * defaultValue: ''
53
- * }
54
- * }
55
- * },
56
- * form: {
57
- * alias: 'MyCustomForm',
58
- * render() {
59
- * // return custom form component here
60
- * }
61
- * }
62
- * }
63
- * })
64
- *
65
- * const Step1 = schema.stepSchema.step1.createComponent(
66
- * ({ ctx, MyCustomForm }, props: { children: ReactNode }) =>
67
- * // Notice how the form is available with its alias
68
- * <MyCustomFormName>{children}</MyCustomFormName>
69
- * )
70
- * ```
71
- */
72
- alias?: TAlias;
73
- /**
74
- * If the form component should be accessible for each step when calling `createComponent`.
75
- *
76
- * If no value is given, the form will be accessible for all the steps.
77
- */
78
- enabledForSteps?: TFormEnabledFor;
79
- /**
80
- *
81
- * @param data The data that is available for creating the custom form.
82
- * @param props Props that can be used for the custom form.
83
- * @returns An {@see JSX.Element} that is the custom form.
84
- * @example
85
- * ### With custom props
86
- * ```tsx
87
- * type CustomProps = {
88
- * title: string;
89
- * description?: string;
90
- * children: ReactNode;
91
- * };
92
- *
93
- * const schema = createMultiStepFormSchema({
94
- * steps: {
95
- * step1: {
96
- * title: 'Step 1',
97
- * fields: {
98
- * firstName: {
99
- * defaultValue: ''
100
- * }
101
- * }
102
- * },
103
- * form: {
104
- * alias: 'MyCustomForm',
105
- * render(data, props: CustomProps) {
106
- * return (
107
- * <div>
108
- * <h1>{props.title}</h1>
109
- * <p>{props.description}</p>
110
- * <form>{props.children}</form>
111
- * </div>
112
- * );
113
- * }
114
- * }
115
- * }
116
- * })
117
- * ```
118
- * ### Without custom props
119
- * ```tsx
120
- * const schema = createMultiStepFormSchema({
121
- * steps: {
122
- * step1: {
123
- * title: 'Step 1',
124
- * fields: {
125
- * firstName: {
126
- * defaultValue: ''
127
- * }
128
- * }
129
- * },
130
- * form: {
131
- * alias: 'MyCustomForm',
132
- * render(data, props) {
133
- * // The default type for `props` will be `ComponentPropsWithRef<'form'>`
134
- * // return custom form component here
135
- * }
136
- * }
137
- * }
138
- * })
139
- * ```
140
- */
141
- render: (data: renderFnData<TResolvedStep, TFormEnabledFor>, props: TCustomFormProps) => JSX.Element;
142
- }
143
- export interface Form<TResolvedStep extends AnyResolvedStep, TAlias extends string, TFormEnabledFor extends formEnabledFor<TResolvedStep>, TCustomFormProps extends object> {
144
- form?: FormConfig<TResolvedStep, TAlias, TFormEnabledFor, TCustomFormProps>;
145
- }
146
- /**
147
- * Compares {@linkcode enabledFor} to the {@linkcode target} to determine if the form
148
- * should be available.
149
- * @param target The target steps the form _should_ be available for.
150
- * @param enabledFor The steps that the form _is_ enabled for.
151
- * @returns A boolean representing if the form should be available.
152
- */
153
- export function isFormAvailable<TResolvedStep extends AnyResolvedStep, TTarget extends HelperFnChosenSteps<TResolvedStep, StepNumbers<TResolvedStep>>, TEnabledFor extends formEnabledFor<TResolvedStep>>(target: TTarget, enabledFor: TEnabledFor): boolean;
154
- /**
155
- * Creates a form component with a default id.
156
- * @param id The default id for the form.
157
- * @returns A form component with a default {@linkcode id}.
158
- */
159
- export function createDefaultForm(id: string): (props: Omit<ComponentPropsWithRef<"form">, "id">) => import("react/jsx-runtime").JSX.Element;
160
- export {};
161
- }
@@ -1,26 +0,0 @@
1
- import { AnyMultiStepFormSchema, MultiStepFormSchema } from '../schema';
2
- export type UseMultiStepFormDataOptions<TSchema extends AnyMultiStepFormSchema, TTarget extends keyof MultiStepFormSchema.resolvedStep<TSchema> = keyof MultiStepFormSchema.resolvedStep<TSchema>> = {
3
- targetStep: TTarget;
4
- };
5
- export type UseMultiStepFormData<TSchema extends AnyMultiStepFormSchema, TResolvedStep extends MultiStepFormSchema.resolvedStep<TSchema> = MultiStepFormSchema.resolvedStep<TSchema>> = {
6
- /**
7
- * Returns the entire {@linkcode MultiStepFormSchema instance}.
8
- */
9
- (): TSchema;
10
- /**
11
- * Returns the data for the target step.
12
- * @param stepNumber The step number to return.
13
- * @throws {TypeError} If `options.stepNumber` is invalid.
14
- */
15
- <targetStep extends keyof TResolvedStep>(options: UseMultiStepFormDataOptions<TSchema, targetStep>): MultiStepFormSchema.getData<TSchema, targetStep>;
16
- /**
17
- * Returns the specified data from the {@linkcode MultiStepFormSchema} instance via the callback's return.
18
- */
19
- <data>(selector: (schema: TSchema) => data): data;
20
- };
21
- export declare function throwIfInvalidStepNumber<schema extends AnyMultiStepFormSchema>(schema: schema, targetStep: unknown): MultiStepFormSchema.stepNumbers<schema>;
22
- export declare function createMultiStepFormDataHook<schema extends AnyMultiStepFormSchema>(schema: schema): UseMultiStepFormData<schema>;
23
- declare function useMultiStepFormData<schema extends AnyMultiStepFormSchema>(schema: schema): schema;
24
- declare function useMultiStepFormData<schema extends AnyMultiStepFormSchema, targetStep extends keyof MultiStepFormSchema.resolvedStep<schema>>(schema: schema, options: UseMultiStepFormDataOptions<schema, targetStep>): MultiStepFormSchema.getData<schema, targetStep>;
25
- declare function useMultiStepFormData<schema extends AnyMultiStepFormSchema, data>(schema: schema, selector: (schema: schema) => data): data;
26
- export { useMultiStepFormData };
@@ -1,4 +0,0 @@
1
- export * from './schema';
2
- export * from './step-schema';
3
- export * from './create-context';
4
- export { useMultiStepFormData } from './hooks/use-multi-step-form-data';
@@ -1,29 +0,0 @@
1
- import { CasingType, Constrain, CreateHelperFunctionOptionsBase, DefaultCasing, DefaultStorageKey, HelperFnChosenSteps, MultiStepFormSchemaOptions as MultiStepFormSchemaBaseOptions, MultiStepFormSchema as MultiStepFormSchemaCore, ResolvedStep as ResolvedStepCore, Step, StepNumbers } from '@jfdevelops/multi-step-form';
2
- import { ComponentPropsWithRef } from 'react';
3
- import { MultiStepFormSchemaConfig } from './form-config';
4
- import { CreateComponentCallback, CreatedMultiStepFormComponent, HelperFunctions, MultiStepFormStepSchema, ResolvedStep } from './step-schema';
5
- export type AnyMultiStepFormSchema = {
6
- [x: string]: any;
7
- };
8
- export declare namespace MultiStepFormSchema {
9
- /**
10
- * Infer the resolved step from a {@linkcode MultiStepFormSchema}.
11
- */
12
- type resolvedStep<T extends AnyMultiStepFormSchema> = T['stepSchema']['value'];
13
- /**
14
- * Infer the {@linkcode MultiStepFormSchema}'s step numbers.
15
- */
16
- type stepNumbers<T extends AnyMultiStepFormSchema> = StepNumbers<resolvedStep<T>>;
17
- /**
18
- * Get the data for a specific step from a {@linkcode MultiStepFormSchema}.
19
- */
20
- type getData<T extends AnyMultiStepFormSchema, TTarget extends keyof resolvedStep<T>> = resolvedStep<T>[TTarget];
21
- }
22
- export interface MultiStepFormSchemaOptions<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string, TFormAlias extends string, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>, TFormProps extends object, TResolvedStep extends ResolvedStep<TStep, TCasing> = ResolvedStep<TStep, TCasing>> extends MultiStepFormSchemaBaseOptions<TStep, TCasing, TStorageKey>, MultiStepFormSchemaConfig.Form<TResolvedStep, TFormAlias, TFormEnabledFor, TFormProps> {
23
- }
24
- export declare class MultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, storageKey extends string = DefaultStorageKey, formAlias extends string = MultiStepFormSchemaConfig.defaultFormAlias, formEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<resolvedStep> = MultiStepFormSchemaConfig.defaultEnabledFor, formProps extends object = ComponentPropsWithRef<'form'>, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>> extends MultiStepFormSchemaCore<step, casing, ResolvedStepCore<step, casing>, StepNumbers<ResolvedStepCore<step, casing>>, storageKey> implements HelperFunctions<resolvedStep, stepNumbers> {
25
- stepSchema: MultiStepFormStepSchema<step, casing, storageKey, formAlias, formEnabledFor, formProps>;
26
- constructor(config: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey, formAlias, formEnabledFor, formProps>);
27
- createComponent<chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>, props = undefined>(options: CreateHelperFunctionOptionsBase<resolvedStep, stepNumbers, chosenSteps>, fn: CreateComponentCallback<resolvedStep, stepNumbers, chosenSteps, props>): CreatedMultiStepFormComponent<props>;
28
- }
29
- export declare function createMultiStepFormSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, storageKey extends string = DefaultStorageKey, formAlias extends string = MultiStepFormSchemaConfig.defaultFormAlias, formEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<resolvedStep> = MultiStepFormSchemaConfig.defaultEnabledFor, formProps extends object = ComponentPropsWithRef<'form'>, resolvedStep extends ResolvedStep<step, casing> = ResolvedStep<step, casing>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>>(options: MultiStepFormSchemaOptions<step, Constrain<casing, CasingType>, storageKey, formAlias, formEnabledFor, formProps>): MultiStepFormSchema<step, casing, storageKey, formAlias, formEnabledFor, formProps, resolvedStep, stepNumbers>;
@@ -1,124 +0,0 @@
1
- import { CasingType, Constrain, CreateHelperFunctionOptionsBase, DefaultCasing, DefaultStorageKey, Expand, GetCurrentStep, GetFieldsForStep, HelperFnChosenSteps, HelperFnInputBase, MultiStepFormSchemaStepConfig as MultiStepFormSchemaStepBaseConfig, MultiStepFormStepSchema as MultiStepFormStepSchemaBase, Relaxed, ResolvedStep as ResolvedCoreStep, Step, StepNumbers, StrippedResolvedStep, Updater, ValidStepKey } from '@jfdevelops/multi-step-form';
2
- import { ComponentPropsWithRef, ReactNode } from 'react';
3
- import { Field } from './field';
4
- import { MultiStepFormSchemaConfig } from './form-config';
5
- export interface MultiStepFormSchemaStepConfig<TStep extends Step<TCasing>, TCasing extends CasingType, TStorageKey extends string, TFormAlias extends string, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>, TFormProps extends object, TResolvedStep extends ResolvedStep<TStep, TCasing> = ResolvedStep<TStep, TCasing>> extends MultiStepFormSchemaStepBaseConfig<TStep, TCasing, TStorageKey>, MultiStepFormSchemaConfig.Form<TResolvedStep, TFormAlias, TFormEnabledFor, TFormProps> {
6
- }
7
- export type CreateFunction<TArgs extends any[], TReturn = void> = (...args: TArgs) => TReturn;
8
- export type CreateComponent<TInput, TProps> = CreateFunction<[
9
- input: TInput,
10
- props: TProps
11
- ], ReactNode>;
12
- export type CreateComponentCallback<TResolvedStep extends StrippedResolvedStep<AnyResolvedStep>, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TProps> = CreateComponent<HelperFnInputBase<TResolvedStep, TSteps, TChosenSteps>, TProps>;
13
- export type CreatedMultiStepFormComponent<TProps> = TProps extends undefined ? () => ReactNode : (props: TProps) => ReactNode;
14
- export type CreateComponentFn<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> = <chosenSteps extends HelperFnChosenSteps<TResolvedStep, TStepNumbers>, props = undefined>(options: CreateHelperFunctionOptionsBase<TResolvedStep, TStepNumbers, chosenSteps>, fn: CreateComponentCallback<TResolvedStep, TStepNumbers, chosenSteps, props>) => CreatedMultiStepFormComponent<props>;
15
- export declare namespace StepSpecificComponent {
16
- type formComponent<TResolvedStep extends StrippedResolvedStep<AnyResolvedStep>, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TFormAlias extends string, TFormProps extends object, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>> = TFormEnabledFor extends MultiStepFormSchemaConfig.defaultEnabledFor ? MultiStepFormSchemaConfig.formCtx<TFormAlias, TFormProps> : TFormEnabledFor extends HelperFnChosenSteps.tupleNotation<ValidStepKey<TSteps>> ? TFormEnabledFor[number] extends keyof TResolvedStep ? TChosenSteps extends HelperFnChosenSteps.tupleNotation<ValidStepKey<TSteps>> ? TChosenSteps[number] extends keyof TResolvedStep ? TChosenSteps[number] extends TFormEnabledFor[number] ? MultiStepFormSchemaConfig.formCtx<TFormAlias, TFormProps> : {} : {} : {} : {} : keyof TFormEnabledFor extends keyof TResolvedStep ? TChosenSteps extends HelperFnChosenSteps.tupleNotation<ValidStepKey<TSteps>> ? TChosenSteps[number] extends keyof TResolvedStep ? TChosenSteps[number] extends keyof TFormEnabledFor ? MultiStepFormSchemaConfig.formCtx<TFormAlias, TFormProps> : {} : {} : {} : {};
17
- type onInputChange<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>, TTargetStep extends TStepNumbers> = <CurrentStepData extends GetCurrentStep<TResolvedStep, TTargetStep>, Field extends keyof CurrentStepData>(field: Field, updater: Updater<CurrentStepData[Field], Relaxed<CurrentStepData[Field]>>) => void;
18
- interface Input<TResolvedStep extends StrippedResolvedStep<AnyResolvedStep>, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>> extends HelperFnInputBase<TResolvedStep, TSteps, TChosenSteps> {
19
- /**
20
- * A useful wrapper around `update` to update the specific field.
21
- * @param field The field to update.
22
- * @param updater The new value for the specified field.
23
- */
24
- onInputChange: <CurrentStepData extends GetCurrentStep<TResolvedStep, HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TChosenSteps>>, Field extends keyof CurrentStepData>(field: Field, updater: Updater<CurrentStepData[Field], Relaxed<CurrentStepData[Field]>>) => void;
25
- Field: Field.component<TResolvedStep, TSteps, HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TChosenSteps>>;
26
- }
27
- type callback<TResolvedStep extends StrippedResolvedStep<AnyResolvedStep>, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TProps, TFormAlias extends string, TFormProps extends object, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>, TAdditionalInput extends object = {}> = CreateComponent<Input<TResolvedStep, TSteps, TChosenSteps> & formComponent<TResolvedStep, TSteps, TChosenSteps, TFormAlias, TFormProps, TFormEnabledFor> & TAdditionalInput, TProps>;
28
- const DEFAULT_FORM_INSTANCE_ALIAS = "form";
29
- type defaultFormInstanceAlias = typeof DEFAULT_FORM_INSTANCE_ALIAS;
30
- type formInstanceOptions<TAlias extends string, TRenderInput, TReturn> = {
31
- /**
32
- * The name of the return value of the `render` method.
33
- */
34
- alias?: TAlias;
35
- /**
36
- * A function that renders/creates the form instance. This function will be called
37
- * at the top level of the component, ensuring hooks are called in a valid React context.
38
- *
39
- * @param input - The input object containing context and default values
40
- * @returns The form instance (typically from a hook like `useForm`)
41
- *
42
- * @example
43
- * ```tsx
44
- * useFormInstance: {
45
- * render({ defaultValues }) {
46
- * return useForm({
47
- * defaultValues,
48
- * });
49
- * },
50
- * }
51
- * ```
52
- *
53
- * **Verification**: The hook call is automatically verified:
54
- * - Errors are caught and reported with helpful messages
55
- * - In development, hook calls are logged to console.debug
56
- * - The hook must be called at the component top level (enforced by the framework)
57
- */
58
- render: CreateFunction<[input: TRenderInput], TReturn>;
59
- };
60
- type options<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TTargetStep extends HelperFnChosenSteps<TResolvedStep, TSteps>, TFormInstanceAlias extends string, TFormInstance> = {
61
- useFormInstance?: formInstanceOptions<TFormInstanceAlias, HelperFnInputBase<TResolvedStep, TSteps, TTargetStep> & {
62
- /**
63
- * An object containing all the default values for the current step.
64
- */
65
- defaultValues: Expand<ExtractedDefaultValues<TResolvedStep, TSteps, TTargetStep>>;
66
- }, TFormInstance>;
67
- };
68
- }
69
- export type CreateStepSpecificComponentCallback<TResolvedStep extends StrippedResolvedStep<AnyResolvedStep>, TSteps extends StepNumbers<TResolvedStep>, TChosenSteps extends HelperFnChosenSteps<TResolvedStep, TSteps>, TProps, TFormAlias extends string, TFormProps extends object, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>, TAdditionalInput extends object = {}> = StepSpecificComponent.callback<TResolvedStep, TSteps, TChosenSteps, TProps, TFormAlias, TFormProps, TFormEnabledFor, TAdditionalInput>;
70
- export type ExtractedDefaultValues<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TTargetStep extends HelperFnChosenSteps<TResolvedStep, TSteps>, TExtractedStepNumber extends number = HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TTargetStep>, TFields extends GetFieldsForStep<TResolvedStep, ValidStepKey<TExtractedStepNumber>> = GetFieldsForStep<TResolvedStep, ValidStepKey<TExtractedStepNumber>>> = {
71
- [field in keyof TFields]: TFields[field]['defaultValue'];
72
- };
73
- export interface StepSpecificCreateComponentFn<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TTargetStep extends HelperFnChosenSteps<TResolvedStep, TSteps>, TFormAlias extends string, TFormProps extends object, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep>> {
74
- /**
75
- * A utility function to easily create a component for the current step.
76
- * @param fn The callback function where the component is defined.
77
- */
78
- <props = undefined>(fn: CreateStepSpecificComponentCallback<TResolvedStep, TSteps, TTargetStep, props, TFormAlias, TFormProps, TFormEnabledFor>): CreatedMultiStepFormComponent<props>;
79
- /**
80
- * A utility function to easily create a component for the current step.
81
- * @param options Specific config options for creating a component for the current step.
82
- * @param fn The callback function where the component is defined.
83
- * @returns The created component.
84
- */
85
- <formInstance, formInstanceAlias extends string = StepSpecificComponent.defaultFormInstanceAlias, props = undefined>(options: StepSpecificComponent.options<TResolvedStep, TSteps, TTargetStep, formInstanceAlias, formInstance>, fn: CreateStepSpecificComponentCallback<TResolvedStep, TSteps, TTargetStep, props, TFormAlias, TFormProps, TFormEnabledFor, {
86
- [_ in formInstanceAlias]: formInstance;
87
- }>): CreatedMultiStepFormComponent<props>;
88
- }
89
- export type ResolvedStep<TStep extends Step<TDefaultCasing>, TDefaultCasing extends CasingType = DefaultCasing, TResolvedStep extends ResolvedCoreStep<TStep, TDefaultCasing> = ResolvedCoreStep<TStep, TDefaultCasing>, TFormAlias extends string = MultiStepFormSchemaConfig.defaultFormAlias, TFormEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<TResolvedStep> = MultiStepFormSchemaConfig.defaultEnabledFor, TFormProps extends object = ComponentPropsWithRef<'form'>> = {
90
- [stepKey in keyof TResolvedStep]: TResolvedStep[stepKey] & (stepKey extends ValidStepKey<StepNumbers<TResolvedStep>> ? {
91
- createComponent: StepSpecificCreateComponentFn<TResolvedStep, StepNumbers<TResolvedStep>, [
92
- stepKey
93
- ], TFormAlias, TFormProps, TFormEnabledFor>;
94
- } : {});
95
- };
96
- export type AnyResolvedStep = ResolvedStep<any, any, any>;
97
- export interface HelperFunctions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> {
98
- createComponent: CreateComponentFn<TResolvedStep, TStepNumbers>;
99
- }
100
- /**
101
- * Creates a default values object for the target step.
102
- * @param steps The steps schema.
103
- * @param targetStep The step to create the default values for.
104
- * @returns An object containing the field names and their default values.
105
- */
106
- export declare function createDefaultValues<resolvedStep extends AnyResolvedStep, stepNumbers extends StepNumbers<resolvedStep>, targetStep extends ValidStepKey<stepNumbers>>(steps: resolvedStep, targetStep: targetStep): Expand<ExtractedDefaultValues<resolvedStep, stepNumbers, [targetStep]>>;
107
- export declare class MultiStepFormStepSchema<step extends Step<casing>, casing extends CasingType = DefaultCasing, storageKey extends string = DefaultStorageKey, formAlias extends string = MultiStepFormSchemaConfig.defaultFormAlias, formEnabledFor extends MultiStepFormSchemaConfig.formEnabledFor<resolvedStep> = MultiStepFormSchemaConfig.defaultEnabledFor, formProps extends object = ComponentPropsWithRef<'form'>, core extends ResolvedCoreStep<step, casing> = ResolvedCoreStep<step, casing>, resolvedStep extends ResolvedStep<step, casing, core, formAlias, formEnabledFor, formProps> = ResolvedStep<step, casing, core, formAlias, formEnabledFor, formProps>, stepNumbers extends StepNumbers<resolvedStep> = StepNumbers<resolvedStep>> extends MultiStepFormStepSchemaBase<step, casing> implements HelperFunctions<resolvedStep, stepNumbers> {
108
- value: resolvedStep;
109
- constructor(config: MultiStepFormSchemaStepConfig<step, Constrain<casing, CasingType>, storageKey, formAlias, formEnabledFor, formProps>);
110
- private createFormComponent;
111
- private createStepSpecificComponentImpl;
112
- private createStepSpecificComponentFactory;
113
- private createComponentImpl;
114
- private createComponentForStep;
115
- /**
116
- * A helper function to create a component for a specific step.
117
- * @param options The options for creating the step specific component.
118
- * @param fn A callback that is used for accessing the target step's data and defining
119
- * any props that the component should have. This function must return a valid `JSX` element.
120
- * @returns The created component for the step.
121
- */
122
- createComponent<chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>, props = undefined>(options: CreateHelperFunctionOptionsBase<resolvedStep, stepNumbers, chosenSteps>, fn: CreateComponentCallback<resolvedStep, stepNumbers, chosenSteps, props>): CreatedMultiStepFormComponent<props>;
123
- createDefaultValues<targetStep extends ValidStepKey<stepNumbers>>(targetStep: targetStep): Expand<ExtractedDefaultValues<resolvedStep, import('@jfdevelops/multi-step-form').ExtractStepFromKey<keyof resolvedStep extends infer T ? T extends keyof resolvedStep ? T extends string ? T : never : never : never>, [targetStep], HelperFnChosenSteps.extractStepNumber<resolvedStep, import('@jfdevelops/multi-step-form').ExtractStepFromKey<keyof resolvedStep extends infer T_1 ? T_1 extends keyof resolvedStep ? T_1 extends string ? T_1 : never : never : never>, [targetStep]>, GetFieldsForStep<resolvedStep, `step${HelperFnChosenSteps.extractStepNumber<resolvedStep, import('@jfdevelops/multi-step-form').ExtractStepFromKey<keyof resolvedStep extends infer T_2 ? T_2 extends keyof resolvedStep ? T_2 extends string ? T_2 : never : never : never>, [targetStep]>}`>>>;
124
- }
File without changes