@jfdevelops/react-multi-step-form 1.0.0-alpha.15 → 1.0.0-alpha.17

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 -47
  26. package/dist/index.d.cts +5 -0
  27. package/dist/index.d.mts +5 -0
  28. package/dist/index.mjs +5 -1911
  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 +224 -0
  36. package/dist/step-schema.cjs.map +1 -0
  37. package/dist/step-schema.d.cts +133 -0
  38. package/dist/step-schema.d.mts +133 -0
  39. package/dist/step-schema.mjs +217 -0
  40. package/dist/step-schema.mjs.map +1 -0
  41. package/package.json +10 -9
  42. package/dist/create-context.d.ts +0 -156
  43. package/dist/field.d.ts +0 -23
  44. package/dist/form-config.d.ts +0 -161
  45. package/dist/hooks/use-multi-step-form-data.d.ts +0 -26
  46. package/dist/index.cjs.map +0 -1
  47. package/dist/index.d.ts +0 -4
  48. package/dist/index.mjs.map +0 -1
  49. package/dist/schema.d.ts +0 -30
  50. package/dist/step-schema.d.ts +0 -131
  51. package/dist/utils.d.ts +0 -0
@@ -1,131 +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, UpdateFn, Updater, ValidStepKey } from '@jfdevelops/multi-step-form-core';
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>, TAdditionalCtx extends Record<string, unknown>, TStepNumber extends HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TChosenSteps> = HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TChosenSteps>> extends HelperFnInputBase<TResolvedStep, TSteps, TChosenSteps, never, TAdditionalCtx> {
19
- /**
20
- * A useful wrapper around `update` to update the specific field.
21
- */
22
- onInputChange: TStepNumber extends TSteps ? UpdateFn.stepSpecific<TResolvedStep, TSteps, ValidStepKey<TStepNumber>> : never;
23
- Field: Field.component<TResolvedStep, ValidStepKey<HelperFnChosenSteps.extractStepNumber<TResolvedStep, TSteps, TChosenSteps>>>;
24
- }
25
- 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, TAdditionalCtx extends Record<string, unknown>> = CreateComponent<Expand<Input<TResolvedStep, TSteps, TChosenSteps, TAdditionalCtx> & formComponent<TResolvedStep, TSteps, TChosenSteps, TFormAlias, TFormProps, TFormEnabledFor> & TAdditionalInput>, TProps>;
26
- const DEFAULT_FORM_INSTANCE_ALIAS = "form";
27
- type defaultFormInstanceAlias = typeof DEFAULT_FORM_INSTANCE_ALIAS;
28
- type formInstanceOptions<TAlias extends string, TRenderInput, TReturn> = {
29
- /**
30
- * The name of the return value of the `render` method.
31
- */
32
- alias?: TAlias;
33
- /**
34
- * A function that renders/creates the form instance. This function will be called
35
- * at the top level of the component, ensuring hooks are called in a valid React context.
36
- *
37
- * @param input - The input object containing context and default values
38
- * @returns The form instance (typically from a hook like `useForm`)
39
- *
40
- * @example
41
- * ```tsx
42
- * useFormInstance: {
43
- * render({ defaultValues }) {
44
- * return useForm({
45
- * defaultValues,
46
- * });
47
- * },
48
- * }
49
- * ```
50
- *
51
- * **Verification**: The hook call is automatically verified:
52
- * - Errors are caught and reported with helpful messages
53
- * - In development, hook calls are logged to console.debug
54
- * - The hook must be called at the component top level (enforced by the framework)
55
- */
56
- render: CreateFunction<[input: TRenderInput], TReturn>;
57
- };
58
- type options<TResolvedStep extends AnyResolvedStep, TSteps extends StepNumbers<TResolvedStep>, TTargetStep extends HelperFnChosenSteps<TResolvedStep, TSteps>, TFormInstanceAlias extends string, TFormInstance, TCtx> = {
59
- /**
60
- * If set to `true`, you'll be able to open the {@linkcode console} to view logs.
61
- */
62
- debug?: boolean;
63
- useFormInstance?: formInstanceOptions<TFormInstanceAlias, HelperFnInputBase<TResolvedStep, TSteps, TTargetStep> & {
64
- /**
65
- * An object containing all the default values for the current step.
66
- */
67
- defaultValues: Expand<ExtractedDefaultValues<TResolvedStep, TSteps, TTargetStep>>;
68
- }, TFormInstance>;
69
- /**
70
- * A function to select the data that will be available in the `fn`'s ctx.
71
- * @param input The available input to create the context with.
72
- * @returns The created ctx.
73
- */
74
- ctxData?: (input: HelperFnInputBase<TResolvedStep, TSteps, 'all', HelperFnChosenSteps.resolve<TResolvedStep, TSteps, TTargetStep>>) => TCtx;
75
- };
76
- }
77
- 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 = {}, TAdditionalCtx extends Record<string, unknown> = {}> = StepSpecificComponent.callback<TResolvedStep, TSteps, TChosenSteps, TProps, TFormAlias, TFormProps, TFormEnabledFor, TAdditionalInput, TAdditionalCtx>;
78
- 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>>> = {
79
- [field in keyof TFields]: TFields[field]['defaultValue'];
80
- };
81
- 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>> {
82
- /**
83
- * A utility function to easily create a component for the current step.
84
- * @param fn The callback function where the component is defined.
85
- */
86
- <props = undefined>(fn: CreateStepSpecificComponentCallback<TResolvedStep, TSteps, TTargetStep, props, TFormAlias, TFormProps, TFormEnabledFor>): CreatedMultiStepFormComponent<props>;
87
- /**
88
- * A utility function to easily create a component for the current step.
89
- * @param options Specific config options for creating a component for the current step.
90
- * @param fn The callback function where the component is defined.
91
- * @returns The created component.
92
- */
93
- <formInstance, additionalCtx extends Record<string, unknown> = {}, formInstanceAlias extends string = StepSpecificComponent.defaultFormInstanceAlias, props = undefined>(options: StepSpecificComponent.options<TResolvedStep, TSteps, TTargetStep, formInstanceAlias, formInstance, additionalCtx>, fn: CreateStepSpecificComponentCallback<TResolvedStep, TSteps, TTargetStep, props, TFormAlias, TFormProps, TFormEnabledFor, {
94
- [_ in formInstanceAlias]: formInstance;
95
- }, additionalCtx>): CreatedMultiStepFormComponent<props>;
96
- }
97
- 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'>> = {
98
- [stepKey in keyof TResolvedStep]: TResolvedStep[stepKey] & (stepKey extends ValidStepKey<StepNumbers<TResolvedStep>> ? {
99
- createComponent: StepSpecificCreateComponentFn<TResolvedStep, StepNumbers<TResolvedStep>, [
100
- stepKey
101
- ], TFormAlias, TFormProps, TFormEnabledFor>;
102
- } : {});
103
- };
104
- export type AnyResolvedStep = ResolvedStep<any, any, any>;
105
- export interface HelperFunctions<TResolvedStep extends AnyResolvedStep, TStepNumbers extends StepNumbers<TResolvedStep>> {
106
- createComponent: CreateComponentFn<TResolvedStep, TStepNumbers>;
107
- }
108
- /**
109
- * Creates a default values object for the target step.
110
- * @param steps The steps schema.
111
- * @param targetStep The step to create the default values for.
112
- * @returns An object containing the field names and their default values.
113
- */
114
- export declare function createDefaultValues<resolvedStep extends AnyResolvedStep, stepNumbers extends StepNumbers<resolvedStep>, targetStep extends ValidStepKey<stepNumbers>>(steps: resolvedStep, targetStep: targetStep): Expand<ExtractedDefaultValues<resolvedStep, stepNumbers, [targetStep]>>;
115
- 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> {
116
- #private;
117
- value: resolvedStep;
118
- constructor(config: MultiStepFormSchemaStepConfig<step, Constrain<casing, CasingType>, storageKey, formAlias, formEnabledFor, formProps>);
119
- private createFormComponent;
120
- private createStepSpecificComponentImpl;
121
- private createStepSpecificComponentFactory;
122
- /**
123
- * A helper function to create a component for a specific step.
124
- * @param options The options for creating the step specific component.
125
- * @param fn A callback that is used for accessing the target step's data and defining
126
- * any props that the component should have. This function must return a valid `JSX` element.
127
- * @returns The created component for the step.
128
- */
129
- createComponent<chosenSteps extends HelperFnChosenSteps<resolvedStep, stepNumbers>, props = undefined>(options: CreateHelperFunctionOptionsBase<resolvedStep, stepNumbers, chosenSteps>, fn: CreateComponentCallback<resolvedStep, stepNumbers, chosenSteps, props>): CreatedMultiStepFormComponent<props>;
130
- createDefaultValues<targetStep extends ValidStepKey<stepNumbers>>(targetStep: targetStep): Expand<ExtractedDefaultValues<resolvedStep, import('@jfdevelops/multi-step-form-core').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-core').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-core').ExtractStepFromKey<keyof resolvedStep extends infer T_2 ? T_2 extends keyof resolvedStep ? T_2 extends string ? T_2 : never : never : never>, [targetStep]>}`>>>;
131
- }
package/dist/utils.d.ts DELETED
File without changes