rhf-stepper 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -35,6 +35,9 @@ var StepperContext = react.createContext(null);
35
35
  var InternalStepperContext = react.createContext(null);
36
36
  function useInternalStepperContext() {
37
37
  const context = react.useContext(InternalStepperContext);
38
+ if (!context) {
39
+ throw new Error("<Step> must be used within a <Stepper>");
40
+ }
38
41
  return context;
39
42
  }
40
43
  function Stepper({
@@ -161,30 +164,10 @@ function Stepper({
161
164
  },
162
165
  [activeStep]
163
166
  );
164
- react.useCallback(
165
- (id) => {
166
- setSteps((prevSteps) => {
167
- const newSteps = { ...prevSteps };
168
- delete newSteps[id];
169
- return newSteps;
170
- });
171
- },
172
- [activeStep]
173
- );
174
167
  const rebuildSteps = react.useCallback(() => {
175
168
  setStepOrder([]);
176
169
  setRegistrationKey((prev2) => prev2 + 1);
177
170
  }, []);
178
- const changeStepAtIndex = react.useCallback(
179
- (elements, index) => {
180
- setSteps((prevSteps) => {
181
- const newSteps = { ...prevSteps };
182
- prevSteps[index] = elements;
183
- return newSteps;
184
- });
185
- },
186
- []
187
- );
188
171
  const publicContextValue = react.useMemo(
189
172
  () => ({
190
173
  activeStep,
@@ -214,15 +197,13 @@ function Stepper({
214
197
  registrationKey,
215
198
  rebuildSteps,
216
199
  registerStepOrder,
217
- registerStep,
218
- changeStepAtIndex
200
+ registerStep
219
201
  }),
220
202
  [
221
203
  registrationKey,
222
204
  rebuildSteps,
223
205
  registerStepOrder,
224
- registerStep,
225
- changeStepAtIndex
206
+ registerStep
226
207
  ]
227
208
  );
228
209
  const resolvedChildren = (
@@ -251,7 +232,6 @@ function Step({ children }) {
251
232
  step: stepFromParent,
252
233
  rebuildSteps: rebuildStepsFromParent,
253
234
  registerStepOrder,
254
- changeStepAtIndex: changeStepAtIndexFromParent,
255
235
  registrationKey: registrationKeyFromParent
256
236
  } = formContext;
257
237
  const stepRef = react.useRef(void 0);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/helper.ts","../src/stepper.tsx","../src/step.tsx","../src/controller.tsx","../src/use-controller.tsx"],"names":["createContext","useContext","useFormContext","useState","useRef","useMemo","useCallback","prev","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.js","sourcesContent":["function buildNestedValues(\n fields: string[],\n values: unknown[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (let i = 0; i < fields.length; i++) {\n const segments = fields[i].split(\".\");\n let current: Record<string, unknown> = result;\n for (let j = 0; j < segments.length - 1; j++) {\n const segment = segments[j];\n const nextSegment = segments[j + 1];\n const isNextNumeric = /^\\d+$/.test(nextSegment);\n if (current[segment] === undefined) {\n current[segment] = isNextNumeric ? [] : {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n current[segments[segments.length - 1]] = values[i];\n }\n return result;\n}\n\nfunction generateGUID() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return (\n s4() +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n s4() +\n s4()\n );\n}\n\nexport { buildNestedValues, generateGUID };\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n type FieldValues,\n Path,\n useFormContext,\n type UseFormReturn,\n} from \"react-hook-form\";\n\nimport { buildNestedValues, generateGUID } from \"./helper\";\nimport { type StepValidationMode, type MaybePromise } from \"./types\";\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number;\n jumpTo: (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ) => Promise<boolean>;\n fields: string[] | null;\n validSteps: number[];\n isFirstStep: boolean;\n isLastStep: boolean;\n next: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n prev: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n};\n\ntype InternalStepperContextValue = {\n step?: string;\n registrationKey: number;\n rebuildSteps: () => void;\n registerStepOrder: (id: string) => void;\n registerStep: (elements: string[], id: string) => void;\n changeStepAtIndex: (elements: string[], index: string) => void;\n};\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\nconst InternalStepperContext =\n createContext<InternalStepperContextValue | null>(null);\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext);\n return context as unknown as InternalStepperContextValue;\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>;\n stepValidationMode?: StepValidationMode;\n children:\n | React.ReactNode\n | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>({\n form: formProps,\n stepValidationMode = \"forward\",\n children,\n}: StepperProps<TFieldValues>) {\n const formContext = useFormContext();\n\n const form = formProps ?? (formContext as UseFormReturn<TFieldValues>);\n const [steps, setSteps] = useState<Record<string, string[]>>({});\n const [stepOrder, setStepOrder] = useState<string[]>([]);\n const [activeStep, setActiveStep] = useState(-1);\n const [validSteps, setValidSteps] = useState<number[]>([]);\n const [registrationKey, setRegistrationKey] = useState(0);\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;\n return Array.from(new Set(steps[stepOrder[activeStep]]));\n }, [steps, stepOrder, activeStep]);\n\n const jumpTo = useCallback(\n async (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== \"none\") {\n const isForward = step > activeStep;\n const shouldValidate =\n stepValidationMode === \"all\" ||\n (stepValidationMode === \"forward\" && isForward);\n if (shouldValidate) {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n }\n if (onLeave && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await onLeave(values);\n }\n setActiveStep(step);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const isFirstStep = useMemo(\n () => activeStep === -1 || activeStep === 0,\n [activeStep],\n );\n\n const isLastStep = useMemo(\n () => activeStep === -1 || activeStep === stepOrder.length - 1,\n [activeStep, stepOrder.length],\n );\n\n const next = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;\n if (fields && stepValidationMode !== \"none\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep + 1);\n return true;\n },\n [stepOrder.length, activeStep, fields, form, stepValidationMode],\n );\n\n const prev = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep <= 0) return false;\n if (fields && stepValidationMode === \"all\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep - 1);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const registerStep = useCallback(\n (elements: string[], id: string): void => {\n setSteps((prevSteps) => {\n stepRef.current = id;\n const newSteps = { ...prevSteps };\n newSteps[id] = elements;\n\n if (activeStep === -1 && Object.keys(newSteps).length > 0) {\n setActiveStep(0);\n }\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const registerStepOrder = useCallback(\n (id: string): void => {\n setStepOrder((prevSteps) => {\n return Array.from(new Set([...prevSteps, id]));\n });\n },\n [activeStep],\n );\n\n const unRegisterStep = useCallback(\n (id: string): void => {\n setSteps((prevSteps) => {\n const newSteps = { ...prevSteps };\n delete newSteps[id];\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const rebuildSteps = useCallback(() => {\n setStepOrder([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const changeStepAtIndex = useCallback(\n (elements: string[], index: string): void => {\n setSteps((prevSteps) => {\n const newSteps = { ...prevSteps };\n prevSteps[index] = elements;\n return newSteps;\n });\n },\n [],\n );\n\n const publicContextValue = useMemo<StepperContextValue>(\n () => ({\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n }),\n [\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n ],\n );\n\n const internalContextValue = useMemo<InternalStepperContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n changeStepAtIndex,\n }),\n [\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n changeStepAtIndex,\n ],\n );\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === \"function\"\n ? children(\n publicContextValue as unknown as StepperContextValue<TFieldValues>,\n )\n : children;\n\n return (\n // eslint-disable-next-line react-hooks/refs\n <StepperContext.Provider value={publicContextValue}>\n <InternalStepperContext.Provider value={internalContextValue}>\n {resolvedChildren}\n </InternalStepperContext.Provider>\n </StepperContext.Provider>\n );\n}\n\nfunction useStepper<\n TFieldValues extends FieldValues = FieldValues,\n>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext);\n return context as unknown as StepperContextValue<TFieldValues>;\n}\n\nexport {\n Stepper,\n StepperContext,\n InternalStepperContext,\n useInternalStepperContext,\n useStepper,\n};\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue };\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useInternalStepperContext } from \"./stepper\";\nimport { generateGUID } from \"./helper\";\n\ntype StepContextValue = {\n step?: string;\n registrationKey: number;\n registerField: (elements: string) => void;\n rebuildSteps: () => void;\n};\n\nconst StepContext = createContext<StepContextValue | null>(null);\n\nfunction useStep(): StepContextValue | null {\n return useContext(StepContext);\n}\n\nfunction Step({ children }: { children: React.ReactNode }) {\n const formContext = useInternalStepperContext();\n\n const {\n registerStep: registerStepFromParent,\n step: stepFromParent,\n rebuildSteps: rebuildStepsFromParent,\n registerStepOrder,\n changeStepAtIndex: changeStepAtIndexFromParent,\n registrationKey: registrationKeyFromParent,\n } = formContext;\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const [id] = useState(generateGUID());\n const [steps, setSteps] = useState<string[]>([]);\n\n const [registrationKey, setRegistrationKey] = useState(0);\n\n useEffect(() => {\n const stepList = steps.length ? steps : [\"\"];\n registerStepFromParent(stepList, id);\n registerStepOrder(id);\n }, [steps]);\n\n useEffect(() => {\n if (registrationKeyFromParent) {\n registerStepOrder(id);\n }\n }, [registrationKeyFromParent]);\n\n useEffect(() => {\n if (stepFromParent !== undefined) {\n rebuildStepsFromParent();\n }\n return () => {\n rebuildStepsFromParent();\n };\n }, []);\n\n const registerField = useCallback(\n (element: string): void => {\n setSteps((prevSteps) => {\n return Array.from(new Set([...prevSteps, element]));\n });\n },\n [steps],\n );\n\n const rebuildSteps = useCallback(() => {\n stepRef.current = undefined;\n setSteps([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const contextValue = useMemo<StepContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n registerField,\n rebuildSteps,\n }),\n [registrationKey, registerField, rebuildSteps],\n );\n\n // eslint-disable-next-line react-hooks/refs\n return (\n <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\n );\n}\n\nStep.displayName = \"Step\";\n\nexport { Step, useStep };\nexport type { StepContextValue };\n","import { ComponentProps, useEffect } from \"react\";\nimport {\n type Control,\n Controller as RHFController,\n type ControllerFieldState,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n type UseFormStateReturn,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\nimport { useInternalStepperContext } from \"./stepper\";\n\ntype ControllerRenderArgs<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n field: ControllerRenderProps<TFieldValues, TName>;\n fieldState: ControllerFieldState;\n formState: UseFormStateReturn<TFieldValues>;\n};\n\ntype ControllerProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = ComponentProps<typeof RHFController<TFieldValues, TName>>;\n\nfunction Controller<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ name, ...rest }: ControllerProps<TFieldValues, TName>) {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return <RHFController name={name} {...rest} />;\n}\n\nController.displayName = \"Controller\";\n\nexport { Controller };\nexport type { ControllerProps, ControllerRenderArgs };\n","import { useEffect } from \"react\";\nimport {\n type Control,\n type FieldPath,\n type FieldValues,\n type UseControllerProps,\n type UseControllerReturn,\n useController as useRHFController,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\nfunction useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(props.name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return useRHFController({ ...props });\n}\n\nexport { useController };\n"]}
1
+ {"version":3,"sources":["../src/helper.ts","../src/stepper.tsx","../src/step.tsx","../src/controller.tsx","../src/use-controller.tsx"],"names":["createContext","useContext","useFormContext","useState","useRef","useMemo","useCallback","prev","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.js","sourcesContent":["function buildNestedValues(\n fields: string[],\n values: unknown[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (let i = 0; i < fields.length; i++) {\n const segments = fields[i].split(\".\");\n let current: Record<string, unknown> = result;\n for (let j = 0; j < segments.length - 1; j++) {\n const segment = segments[j];\n const nextSegment = segments[j + 1];\n const isNextNumeric = /^\\d+$/.test(nextSegment);\n if (current[segment] === undefined) {\n current[segment] = isNextNumeric ? [] : {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n current[segments[segments.length - 1]] = values[i];\n }\n return result;\n}\n\nfunction generateGUID() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return (\n s4() +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n s4() +\n s4()\n );\n}\n\nexport { buildNestedValues, generateGUID };\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n type FieldValues,\n Path,\n useFormContext,\n type UseFormReturn,\n} from \"react-hook-form\";\n\nimport { buildNestedValues, generateGUID } from \"./helper\";\nimport { type StepValidationMode, type MaybePromise } from \"./types\";\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number;\n jumpTo: (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ) => Promise<boolean>;\n fields: string[] | null;\n validSteps: number[];\n isFirstStep: boolean;\n isLastStep: boolean;\n next: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n prev: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n};\n\ntype InternalStepperContextValue = {\n step?: string;\n registrationKey: number;\n rebuildSteps: () => void;\n registerStepOrder: (id: string) => void;\n registerStep: (elements: string[], id: string) => void;\n};\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\nconst InternalStepperContext =\n createContext<InternalStepperContextValue | null>(null);\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext);\n if (!context) {\n throw new Error('<Step> must be used within a <Stepper>')\n }\n return context as unknown as InternalStepperContextValue;\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>;\n stepValidationMode?: StepValidationMode;\n children:\n | React.ReactNode\n | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>({\n form: formProps,\n stepValidationMode = \"forward\",\n children,\n}: StepperProps<TFieldValues>) {\n const formContext = useFormContext();\n\n const form = formProps ?? (formContext as UseFormReturn<TFieldValues>);\n const [steps, setSteps] = useState<Record<string, string[]>>({});\n const [stepOrder, setStepOrder] = useState<string[]>([]);\n const [activeStep, setActiveStep] = useState(-1);\n const [validSteps, setValidSteps] = useState<number[]>([]);\n const [registrationKey, setRegistrationKey] = useState(0);\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;\n return Array.from(new Set(steps[stepOrder[activeStep]]));\n }, [steps, stepOrder, activeStep]);\n\n const jumpTo = useCallback(\n async (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== \"none\") {\n const isForward = step > activeStep;\n const shouldValidate =\n stepValidationMode === \"all\" ||\n (stepValidationMode === \"forward\" && isForward);\n if (shouldValidate) {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n }\n if (onLeave && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await onLeave(values);\n }\n setActiveStep(step);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const isFirstStep = useMemo(\n () => activeStep === -1 || activeStep === 0,\n [activeStep],\n );\n\n const isLastStep = useMemo(\n () => activeStep === -1 || activeStep === stepOrder.length - 1,\n [activeStep, stepOrder.length],\n );\n\n const next = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;\n if (fields && stepValidationMode !== \"none\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep + 1);\n return true;\n },\n [stepOrder.length, activeStep, fields, form, stepValidationMode],\n );\n\n const prev = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep <= 0) return false;\n if (fields && stepValidationMode === \"all\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep - 1);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const registerStep = useCallback(\n (elements: string[], id: string): void => {\n setSteps((prevSteps) => {\n stepRef.current = id;\n const newSteps = { ...prevSteps };\n newSteps[id] = elements;\n\n if (activeStep === -1 && Object.keys(newSteps).length > 0) {\n setActiveStep(0);\n }\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const registerStepOrder = useCallback(\n (id: string): void => {\n setStepOrder((prevSteps) => {\n return Array.from(new Set([...prevSteps, id]));\n });\n },\n [activeStep],\n );\n\n const rebuildSteps = useCallback(() => {\n setStepOrder([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n\n const publicContextValue = useMemo<StepperContextValue>(\n () => ({\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n }),\n [\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n ],\n );\n\n const internalContextValue = useMemo<InternalStepperContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n }),\n [\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n ],\n );\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === \"function\"\n ? children(\n publicContextValue as unknown as StepperContextValue<TFieldValues>,\n )\n : children;\n\n return (\n // eslint-disable-next-line react-hooks/refs\n <StepperContext.Provider value={publicContextValue}>\n <InternalStepperContext.Provider value={internalContextValue}>\n {resolvedChildren}\n </InternalStepperContext.Provider>\n </StepperContext.Provider>\n );\n}\n\nfunction useStepper<\n TFieldValues extends FieldValues = FieldValues,\n>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext);\n return context as unknown as StepperContextValue<TFieldValues>;\n}\n\nexport {\n Stepper,\n StepperContext,\n InternalStepperContext,\n useInternalStepperContext,\n useStepper,\n};\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue };\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useInternalStepperContext } from \"./stepper\";\nimport { generateGUID } from \"./helper\";\n\ntype StepContextValue = {\n step?: string;\n registrationKey: number;\n registerField: (elements: string) => void;\n rebuildSteps: () => void;\n};\n\nconst StepContext = createContext<StepContextValue | null>(null);\n\nfunction useStep(): StepContextValue | null {\n return useContext(StepContext);\n}\n\nfunction Step({ children }: { children: React.ReactNode }) {\n const formContext = useInternalStepperContext();\n\n const {\n registerStep: registerStepFromParent,\n step: stepFromParent,\n rebuildSteps: rebuildStepsFromParent,\n registerStepOrder,\n registrationKey: registrationKeyFromParent,\n } = formContext;\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const [id] = useState(generateGUID());\n const [steps, setSteps] = useState<string[]>([]);\n\n const [registrationKey, setRegistrationKey] = useState(0);\n\n useEffect(() => {\n const stepList = steps.length ? steps : [\"\"];\n registerStepFromParent(stepList, id);\n registerStepOrder(id);\n }, [steps]);\n\n useEffect(() => {\n if (registrationKeyFromParent) {\n registerStepOrder(id);\n }\n }, [registrationKeyFromParent]);\n\n useEffect(() => {\n if (stepFromParent !== undefined) {\n rebuildStepsFromParent();\n }\n return () => {\n rebuildStepsFromParent();\n };\n }, []);\n\n const registerField = useCallback(\n (element: string): void => {\n setSteps((prevSteps) => {\n return Array.from(new Set([...prevSteps, element]));\n });\n },\n [steps],\n );\n\n const rebuildSteps = useCallback(() => {\n stepRef.current = undefined;\n setSteps([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const contextValue = useMemo<StepContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n registerField,\n rebuildSteps,\n }),\n [registrationKey, registerField, rebuildSteps],\n );\n\n // eslint-disable-next-line react-hooks/refs\n return (\n <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\n );\n}\n\nStep.displayName = \"Step\";\n\nexport { Step, useStep };\nexport type { StepContextValue };\n","import { ComponentProps, useEffect } from \"react\";\nimport {\n type Control,\n Controller as RHFController,\n type ControllerFieldState,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n type UseFormStateReturn,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\ntype ControllerRenderArgs<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n field: ControllerRenderProps<TFieldValues, TName>;\n fieldState: ControllerFieldState;\n formState: UseFormStateReturn<TFieldValues>;\n};\n\ntype ControllerProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = ComponentProps<typeof RHFController<TFieldValues, TName>>;\n\nfunction Controller<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ name, ...rest }: ControllerProps<TFieldValues, TName>) {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return <RHFController name={name} {...rest} />;\n}\n\nController.displayName = \"Controller\";\n\nexport { Controller };\nexport type { ControllerProps, ControllerRenderArgs };\n","import { useEffect } from \"react\";\nimport {\n type Control,\n type FieldPath,\n type FieldValues,\n type UseControllerProps,\n type UseControllerReturn,\n useController as useRHFController,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\nfunction useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(props.name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return useRHFController({ ...props });\n}\n\nexport { useController };\n"]}
package/dist/index.mjs CHANGED
@@ -33,6 +33,9 @@ var StepperContext = createContext(null);
33
33
  var InternalStepperContext = createContext(null);
34
34
  function useInternalStepperContext() {
35
35
  const context = useContext(InternalStepperContext);
36
+ if (!context) {
37
+ throw new Error("<Step> must be used within a <Stepper>");
38
+ }
36
39
  return context;
37
40
  }
38
41
  function Stepper({
@@ -159,30 +162,10 @@ function Stepper({
159
162
  },
160
163
  [activeStep]
161
164
  );
162
- useCallback(
163
- (id) => {
164
- setSteps((prevSteps) => {
165
- const newSteps = { ...prevSteps };
166
- delete newSteps[id];
167
- return newSteps;
168
- });
169
- },
170
- [activeStep]
171
- );
172
165
  const rebuildSteps = useCallback(() => {
173
166
  setStepOrder([]);
174
167
  setRegistrationKey((prev2) => prev2 + 1);
175
168
  }, []);
176
- const changeStepAtIndex = useCallback(
177
- (elements, index) => {
178
- setSteps((prevSteps) => {
179
- const newSteps = { ...prevSteps };
180
- prevSteps[index] = elements;
181
- return newSteps;
182
- });
183
- },
184
- []
185
- );
186
169
  const publicContextValue = useMemo(
187
170
  () => ({
188
171
  activeStep,
@@ -212,15 +195,13 @@ function Stepper({
212
195
  registrationKey,
213
196
  rebuildSteps,
214
197
  registerStepOrder,
215
- registerStep,
216
- changeStepAtIndex
198
+ registerStep
217
199
  }),
218
200
  [
219
201
  registrationKey,
220
202
  rebuildSteps,
221
203
  registerStepOrder,
222
- registerStep,
223
- changeStepAtIndex
204
+ registerStep
224
205
  ]
225
206
  );
226
207
  const resolvedChildren = (
@@ -249,7 +230,6 @@ function Step({ children }) {
249
230
  step: stepFromParent,
250
231
  rebuildSteps: rebuildStepsFromParent,
251
232
  registerStepOrder,
252
- changeStepAtIndex: changeStepAtIndexFromParent,
253
233
  registrationKey: registrationKeyFromParent
254
234
  } = formContext;
255
235
  const stepRef = useRef(void 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/helper.ts","../src/stepper.tsx","../src/step.tsx","../src/controller.tsx","../src/use-controller.tsx"],"names":["prev","createContext","useContext","useRef","useState","useCallback","useMemo","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.mjs","sourcesContent":["function buildNestedValues(\n fields: string[],\n values: unknown[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (let i = 0; i < fields.length; i++) {\n const segments = fields[i].split(\".\");\n let current: Record<string, unknown> = result;\n for (let j = 0; j < segments.length - 1; j++) {\n const segment = segments[j];\n const nextSegment = segments[j + 1];\n const isNextNumeric = /^\\d+$/.test(nextSegment);\n if (current[segment] === undefined) {\n current[segment] = isNextNumeric ? [] : {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n current[segments[segments.length - 1]] = values[i];\n }\n return result;\n}\n\nfunction generateGUID() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return (\n s4() +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n s4() +\n s4()\n );\n}\n\nexport { buildNestedValues, generateGUID };\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n type FieldValues,\n Path,\n useFormContext,\n type UseFormReturn,\n} from \"react-hook-form\";\n\nimport { buildNestedValues, generateGUID } from \"./helper\";\nimport { type StepValidationMode, type MaybePromise } from \"./types\";\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number;\n jumpTo: (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ) => Promise<boolean>;\n fields: string[] | null;\n validSteps: number[];\n isFirstStep: boolean;\n isLastStep: boolean;\n next: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n prev: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n};\n\ntype InternalStepperContextValue = {\n step?: string;\n registrationKey: number;\n rebuildSteps: () => void;\n registerStepOrder: (id: string) => void;\n registerStep: (elements: string[], id: string) => void;\n changeStepAtIndex: (elements: string[], index: string) => void;\n};\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\nconst InternalStepperContext =\n createContext<InternalStepperContextValue | null>(null);\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext);\n return context as unknown as InternalStepperContextValue;\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>;\n stepValidationMode?: StepValidationMode;\n children:\n | React.ReactNode\n | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>({\n form: formProps,\n stepValidationMode = \"forward\",\n children,\n}: StepperProps<TFieldValues>) {\n const formContext = useFormContext();\n\n const form = formProps ?? (formContext as UseFormReturn<TFieldValues>);\n const [steps, setSteps] = useState<Record<string, string[]>>({});\n const [stepOrder, setStepOrder] = useState<string[]>([]);\n const [activeStep, setActiveStep] = useState(-1);\n const [validSteps, setValidSteps] = useState<number[]>([]);\n const [registrationKey, setRegistrationKey] = useState(0);\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;\n return Array.from(new Set(steps[stepOrder[activeStep]]));\n }, [steps, stepOrder, activeStep]);\n\n const jumpTo = useCallback(\n async (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== \"none\") {\n const isForward = step > activeStep;\n const shouldValidate =\n stepValidationMode === \"all\" ||\n (stepValidationMode === \"forward\" && isForward);\n if (shouldValidate) {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n }\n if (onLeave && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await onLeave(values);\n }\n setActiveStep(step);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const isFirstStep = useMemo(\n () => activeStep === -1 || activeStep === 0,\n [activeStep],\n );\n\n const isLastStep = useMemo(\n () => activeStep === -1 || activeStep === stepOrder.length - 1,\n [activeStep, stepOrder.length],\n );\n\n const next = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;\n if (fields && stepValidationMode !== \"none\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep + 1);\n return true;\n },\n [stepOrder.length, activeStep, fields, form, stepValidationMode],\n );\n\n const prev = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep <= 0) return false;\n if (fields && stepValidationMode === \"all\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep - 1);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const registerStep = useCallback(\n (elements: string[], id: string): void => {\n setSteps((prevSteps) => {\n stepRef.current = id;\n const newSteps = { ...prevSteps };\n newSteps[id] = elements;\n\n if (activeStep === -1 && Object.keys(newSteps).length > 0) {\n setActiveStep(0);\n }\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const registerStepOrder = useCallback(\n (id: string): void => {\n setStepOrder((prevSteps) => {\n return Array.from(new Set([...prevSteps, id]));\n });\n },\n [activeStep],\n );\n\n const unRegisterStep = useCallback(\n (id: string): void => {\n setSteps((prevSteps) => {\n const newSteps = { ...prevSteps };\n delete newSteps[id];\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const rebuildSteps = useCallback(() => {\n setStepOrder([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const changeStepAtIndex = useCallback(\n (elements: string[], index: string): void => {\n setSteps((prevSteps) => {\n const newSteps = { ...prevSteps };\n prevSteps[index] = elements;\n return newSteps;\n });\n },\n [],\n );\n\n const publicContextValue = useMemo<StepperContextValue>(\n () => ({\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n }),\n [\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n ],\n );\n\n const internalContextValue = useMemo<InternalStepperContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n changeStepAtIndex,\n }),\n [\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n changeStepAtIndex,\n ],\n );\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === \"function\"\n ? children(\n publicContextValue as unknown as StepperContextValue<TFieldValues>,\n )\n : children;\n\n return (\n // eslint-disable-next-line react-hooks/refs\n <StepperContext.Provider value={publicContextValue}>\n <InternalStepperContext.Provider value={internalContextValue}>\n {resolvedChildren}\n </InternalStepperContext.Provider>\n </StepperContext.Provider>\n );\n}\n\nfunction useStepper<\n TFieldValues extends FieldValues = FieldValues,\n>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext);\n return context as unknown as StepperContextValue<TFieldValues>;\n}\n\nexport {\n Stepper,\n StepperContext,\n InternalStepperContext,\n useInternalStepperContext,\n useStepper,\n};\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue };\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useInternalStepperContext } from \"./stepper\";\nimport { generateGUID } from \"./helper\";\n\ntype StepContextValue = {\n step?: string;\n registrationKey: number;\n registerField: (elements: string) => void;\n rebuildSteps: () => void;\n};\n\nconst StepContext = createContext<StepContextValue | null>(null);\n\nfunction useStep(): StepContextValue | null {\n return useContext(StepContext);\n}\n\nfunction Step({ children }: { children: React.ReactNode }) {\n const formContext = useInternalStepperContext();\n\n const {\n registerStep: registerStepFromParent,\n step: stepFromParent,\n rebuildSteps: rebuildStepsFromParent,\n registerStepOrder,\n changeStepAtIndex: changeStepAtIndexFromParent,\n registrationKey: registrationKeyFromParent,\n } = formContext;\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const [id] = useState(generateGUID());\n const [steps, setSteps] = useState<string[]>([]);\n\n const [registrationKey, setRegistrationKey] = useState(0);\n\n useEffect(() => {\n const stepList = steps.length ? steps : [\"\"];\n registerStepFromParent(stepList, id);\n registerStepOrder(id);\n }, [steps]);\n\n useEffect(() => {\n if (registrationKeyFromParent) {\n registerStepOrder(id);\n }\n }, [registrationKeyFromParent]);\n\n useEffect(() => {\n if (stepFromParent !== undefined) {\n rebuildStepsFromParent();\n }\n return () => {\n rebuildStepsFromParent();\n };\n }, []);\n\n const registerField = useCallback(\n (element: string): void => {\n setSteps((prevSteps) => {\n return Array.from(new Set([...prevSteps, element]));\n });\n },\n [steps],\n );\n\n const rebuildSteps = useCallback(() => {\n stepRef.current = undefined;\n setSteps([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const contextValue = useMemo<StepContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n registerField,\n rebuildSteps,\n }),\n [registrationKey, registerField, rebuildSteps],\n );\n\n // eslint-disable-next-line react-hooks/refs\n return (\n <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\n );\n}\n\nStep.displayName = \"Step\";\n\nexport { Step, useStep };\nexport type { StepContextValue };\n","import { ComponentProps, useEffect } from \"react\";\nimport {\n type Control,\n Controller as RHFController,\n type ControllerFieldState,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n type UseFormStateReturn,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\nimport { useInternalStepperContext } from \"./stepper\";\n\ntype ControllerRenderArgs<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n field: ControllerRenderProps<TFieldValues, TName>;\n fieldState: ControllerFieldState;\n formState: UseFormStateReturn<TFieldValues>;\n};\n\ntype ControllerProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = ComponentProps<typeof RHFController<TFieldValues, TName>>;\n\nfunction Controller<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ name, ...rest }: ControllerProps<TFieldValues, TName>) {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return <RHFController name={name} {...rest} />;\n}\n\nController.displayName = \"Controller\";\n\nexport { Controller };\nexport type { ControllerProps, ControllerRenderArgs };\n","import { useEffect } from \"react\";\nimport {\n type Control,\n type FieldPath,\n type FieldValues,\n type UseControllerProps,\n type UseControllerReturn,\n useController as useRHFController,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\nfunction useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(props.name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return useRHFController({ ...props });\n}\n\nexport { useController };\n"]}
1
+ {"version":3,"sources":["../src/helper.ts","../src/stepper.tsx","../src/step.tsx","../src/controller.tsx","../src/use-controller.tsx"],"names":["prev","createContext","useContext","useRef","useState","useCallback","useMemo","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.mjs","sourcesContent":["function buildNestedValues(\n fields: string[],\n values: unknown[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (let i = 0; i < fields.length; i++) {\n const segments = fields[i].split(\".\");\n let current: Record<string, unknown> = result;\n for (let j = 0; j < segments.length - 1; j++) {\n const segment = segments[j];\n const nextSegment = segments[j + 1];\n const isNextNumeric = /^\\d+$/.test(nextSegment);\n if (current[segment] === undefined) {\n current[segment] = isNextNumeric ? [] : {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n current[segments[segments.length - 1]] = values[i];\n }\n return result;\n}\n\nfunction generateGUID() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return (\n s4() +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n \"-\" +\n s4() +\n s4() +\n s4()\n );\n}\n\nexport { buildNestedValues, generateGUID };\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n type FieldValues,\n Path,\n useFormContext,\n type UseFormReturn,\n} from \"react-hook-form\";\n\nimport { buildNestedValues, generateGUID } from \"./helper\";\nimport { type StepValidationMode, type MaybePromise } from \"./types\";\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number;\n jumpTo: (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ) => Promise<boolean>;\n fields: string[] | null;\n validSteps: number[];\n isFirstStep: boolean;\n isLastStep: boolean;\n next: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n prev: (\n onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown,\n ) => Promise<boolean>;\n};\n\ntype InternalStepperContextValue = {\n step?: string;\n registrationKey: number;\n rebuildSteps: () => void;\n registerStepOrder: (id: string) => void;\n registerStep: (elements: string[], id: string) => void;\n};\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\nconst InternalStepperContext =\n createContext<InternalStepperContextValue | null>(null);\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext);\n if (!context) {\n throw new Error('<Step> must be used within a <Stepper>')\n }\n return context as unknown as InternalStepperContextValue;\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>;\n stepValidationMode?: StepValidationMode;\n children:\n | React.ReactNode\n | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>({\n form: formProps,\n stepValidationMode = \"forward\",\n children,\n}: StepperProps<TFieldValues>) {\n const formContext = useFormContext();\n\n const form = formProps ?? (formContext as UseFormReturn<TFieldValues>);\n const [steps, setSteps] = useState<Record<string, string[]>>({});\n const [stepOrder, setStepOrder] = useState<string[]>([]);\n const [activeStep, setActiveStep] = useState(-1);\n const [validSteps, setValidSteps] = useState<number[]>([]);\n const [registrationKey, setRegistrationKey] = useState(0);\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;\n return Array.from(new Set(steps[stepOrder[activeStep]]));\n }, [steps, stepOrder, activeStep]);\n\n const jumpTo = useCallback(\n async (\n step: number,\n onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>,\n ): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== \"none\") {\n const isForward = step > activeStep;\n const shouldValidate =\n stepValidationMode === \"all\" ||\n (stepValidationMode === \"forward\" && isForward);\n if (shouldValidate) {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n }\n if (onLeave && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await onLeave(values);\n }\n setActiveStep(step);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const isFirstStep = useMemo(\n () => activeStep === -1 || activeStep === 0,\n [activeStep],\n );\n\n const isLastStep = useMemo(\n () => activeStep === -1 || activeStep === stepOrder.length - 1,\n [activeStep, stepOrder.length],\n );\n\n const next = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;\n if (fields && stepValidationMode !== \"none\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep + 1);\n return true;\n },\n [stepOrder.length, activeStep, fields, form, stepValidationMode],\n );\n\n const prev = useCallback(\n async (\n onLeave?:\n | ((values: Partial<TFieldValues>) => MaybePromise<void>)\n | unknown,\n ): Promise<boolean> => {\n const callback =\n typeof onLeave === \"function\"\n ? (onLeave as (values: Partial<TFieldValues>) => MaybePromise<void>)\n : undefined;\n if (activeStep === -1 || activeStep <= 0) return false;\n if (fields && stepValidationMode === \"all\") {\n const isValid = await form.trigger(fields as Path<TFieldValues>[]);\n if (!isValid) {\n setValidSteps((prev) => prev.filter((s) => s !== activeStep));\n return false;\n }\n setValidSteps((prev) => [...new Set([...prev, activeStep])]);\n }\n if (callback && fields) {\n const watchedValues = form.watch(fields as Path<TFieldValues>[]);\n const values = buildNestedValues(\n fields,\n watchedValues,\n ) as Partial<TFieldValues>;\n await callback(values);\n }\n setActiveStep(activeStep - 1);\n return true;\n },\n [activeStep, fields, form, stepValidationMode],\n );\n\n const registerStep = useCallback(\n (elements: string[], id: string): void => {\n setSteps((prevSteps) => {\n stepRef.current = id;\n const newSteps = { ...prevSteps };\n newSteps[id] = elements;\n\n if (activeStep === -1 && Object.keys(newSteps).length > 0) {\n setActiveStep(0);\n }\n\n return newSteps;\n });\n },\n [activeStep],\n );\n\n const registerStepOrder = useCallback(\n (id: string): void => {\n setStepOrder((prevSteps) => {\n return Array.from(new Set([...prevSteps, id]));\n });\n },\n [activeStep],\n );\n\n const rebuildSteps = useCallback(() => {\n setStepOrder([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n\n const publicContextValue = useMemo<StepperContextValue>(\n () => ({\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n }),\n [\n activeStep,\n jumpTo,\n fields,\n validSteps,\n isFirstStep,\n isLastStep,\n next,\n prev,\n ],\n );\n\n const internalContextValue = useMemo<InternalStepperContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n }),\n [\n registrationKey,\n rebuildSteps,\n registerStepOrder,\n registerStep,\n ],\n );\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === \"function\"\n ? children(\n publicContextValue as unknown as StepperContextValue<TFieldValues>,\n )\n : children;\n\n return (\n // eslint-disable-next-line react-hooks/refs\n <StepperContext.Provider value={publicContextValue}>\n <InternalStepperContext.Provider value={internalContextValue}>\n {resolvedChildren}\n </InternalStepperContext.Provider>\n </StepperContext.Provider>\n );\n}\n\nfunction useStepper<\n TFieldValues extends FieldValues = FieldValues,\n>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext);\n return context as unknown as StepperContextValue<TFieldValues>;\n}\n\nexport {\n Stepper,\n StepperContext,\n InternalStepperContext,\n useInternalStepperContext,\n useStepper,\n};\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue };\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useInternalStepperContext } from \"./stepper\";\nimport { generateGUID } from \"./helper\";\n\ntype StepContextValue = {\n step?: string;\n registrationKey: number;\n registerField: (elements: string) => void;\n rebuildSteps: () => void;\n};\n\nconst StepContext = createContext<StepContextValue | null>(null);\n\nfunction useStep(): StepContextValue | null {\n return useContext(StepContext);\n}\n\nfunction Step({ children }: { children: React.ReactNode }) {\n const formContext = useInternalStepperContext();\n\n const {\n registerStep: registerStepFromParent,\n step: stepFromParent,\n rebuildSteps: rebuildStepsFromParent,\n registerStepOrder,\n registrationKey: registrationKeyFromParent,\n } = formContext;\n\n const stepRef = useRef<string | undefined>(undefined);\n\n const [id] = useState(generateGUID());\n const [steps, setSteps] = useState<string[]>([]);\n\n const [registrationKey, setRegistrationKey] = useState(0);\n\n useEffect(() => {\n const stepList = steps.length ? steps : [\"\"];\n registerStepFromParent(stepList, id);\n registerStepOrder(id);\n }, [steps]);\n\n useEffect(() => {\n if (registrationKeyFromParent) {\n registerStepOrder(id);\n }\n }, [registrationKeyFromParent]);\n\n useEffect(() => {\n if (stepFromParent !== undefined) {\n rebuildStepsFromParent();\n }\n return () => {\n rebuildStepsFromParent();\n };\n }, []);\n\n const registerField = useCallback(\n (element: string): void => {\n setSteps((prevSteps) => {\n return Array.from(new Set([...prevSteps, element]));\n });\n },\n [steps],\n );\n\n const rebuildSteps = useCallback(() => {\n stepRef.current = undefined;\n setSteps([]);\n setRegistrationKey((prev) => prev + 1);\n }, []);\n\n const contextValue = useMemo<StepContextValue>(\n () => ({\n // eslint-disable-next-line react-hooks/refs\n step: stepRef.current,\n registrationKey,\n registerField,\n rebuildSteps,\n }),\n [registrationKey, registerField, rebuildSteps],\n );\n\n // eslint-disable-next-line react-hooks/refs\n return (\n <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\n );\n}\n\nStep.displayName = \"Step\";\n\nexport { Step, useStep };\nexport type { StepContextValue };\n","import { ComponentProps, useEffect } from \"react\";\nimport {\n type Control,\n Controller as RHFController,\n type ControllerFieldState,\n type ControllerRenderProps,\n type FieldPath,\n type FieldValues,\n type UseFormStateReturn,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\ntype ControllerRenderArgs<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n field: ControllerRenderProps<TFieldValues, TName>;\n fieldState: ControllerFieldState;\n formState: UseFormStateReturn<TFieldValues>;\n};\n\ntype ControllerProps<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = ComponentProps<typeof RHFController<TFieldValues, TName>>;\n\nfunction Controller<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ name, ...rest }: ControllerProps<TFieldValues, TName>) {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return <RHFController name={name} {...rest} />;\n}\n\nController.displayName = \"Controller\";\n\nexport { Controller };\nexport type { ControllerProps, ControllerRenderArgs };\n","import { useEffect } from \"react\";\nimport {\n type Control,\n type FieldPath,\n type FieldValues,\n type UseControllerProps,\n type UseControllerReturn,\n useController as useRHFController,\n} from \"react-hook-form\";\n\nimport { useStep } from \"./step\";\n\nfunction useController<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep();\n\n useEffect(() => {\n if (stepContext) {\n stepContext.registerField(props.name);\n }\n }, [stepContext?.registrationKey]);\n\n useEffect(() => {\n if (stepContext?.step !== undefined) {\n stepContext?.rebuildSteps();\n }\n return () => {\n stepContext?.rebuildSteps();\n };\n }, []);\n\n return useRHFController({ ...props });\n}\n\nexport { useController };\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rhf-stepper",
3
- "version": "1.0.1",
4
- "description": "A multi-step form helper for react-hook-form",
3
+ "version": "1.0.2",
4
+ "description": "A headless multi-step form helper for react-hook-form",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",