rhf-stepper 1.0.0 → 1.0.1
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.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +129 -89
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +129 -89
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ declare namespace Controller {
|
|
|
15
15
|
|
|
16
16
|
declare function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName>;
|
|
17
17
|
|
|
18
|
-
type StepValidationMode =
|
|
18
|
+
type StepValidationMode = "all" | "forward" | "none";
|
|
19
19
|
type MaybePromise<T = void> = T | Promise<T>;
|
|
20
20
|
|
|
21
21
|
type StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {
|
|
@@ -33,7 +33,7 @@ interface StepperProps<TFieldValues extends FieldValues = FieldValues> {
|
|
|
33
33
|
stepValidationMode?: StepValidationMode;
|
|
34
34
|
children: React.ReactNode | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);
|
|
35
35
|
}
|
|
36
|
-
declare function Stepper<TFieldValues extends FieldValues = FieldValues>({ form: formProps, stepValidationMode, children }: StepperProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
36
|
+
declare function Stepper<TFieldValues extends FieldValues = FieldValues>({ form: formProps, stepValidationMode, children, }: StepperProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
37
37
|
declare function useStepper<TFieldValues extends FieldValues = FieldValues>(): StepperContextValue<TFieldValues>;
|
|
38
38
|
|
|
39
39
|
declare function Step({ children }: {
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare namespace Controller {
|
|
|
15
15
|
|
|
16
16
|
declare function useController<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName>;
|
|
17
17
|
|
|
18
|
-
type StepValidationMode =
|
|
18
|
+
type StepValidationMode = "all" | "forward" | "none";
|
|
19
19
|
type MaybePromise<T = void> = T | Promise<T>;
|
|
20
20
|
|
|
21
21
|
type StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {
|
|
@@ -33,7 +33,7 @@ interface StepperProps<TFieldValues extends FieldValues = FieldValues> {
|
|
|
33
33
|
stepValidationMode?: StepValidationMode;
|
|
34
34
|
children: React.ReactNode | ((context: StepperContextValue<TFieldValues>) => React.ReactNode);
|
|
35
35
|
}
|
|
36
|
-
declare function Stepper<TFieldValues extends FieldValues = FieldValues>({ form: formProps, stepValidationMode, children }: StepperProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
36
|
+
declare function Stepper<TFieldValues extends FieldValues = FieldValues>({ form: formProps, stepValidationMode, children, }: StepperProps<TFieldValues>): react_jsx_runtime.JSX.Element;
|
|
37
37
|
declare function useStepper<TFieldValues extends FieldValues = FieldValues>(): StepperContextValue<TFieldValues>;
|
|
38
38
|
|
|
39
39
|
declare function Step({ children }: {
|
package/dist/index.js
CHANGED
|
@@ -25,27 +25,35 @@ function buildNestedValues(fields, values) {
|
|
|
25
25
|
}
|
|
26
26
|
return result;
|
|
27
27
|
}
|
|
28
|
+
function generateGUID() {
|
|
29
|
+
function s4() {
|
|
30
|
+
return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
|
|
31
|
+
}
|
|
32
|
+
return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
|
|
33
|
+
}
|
|
28
34
|
var StepperContext = react.createContext(null);
|
|
29
35
|
var InternalStepperContext = react.createContext(null);
|
|
30
36
|
function useInternalStepperContext() {
|
|
31
37
|
const context = react.useContext(InternalStepperContext);
|
|
32
|
-
if (!context) {
|
|
33
|
-
throw new Error("useInternalStepperContext must be used within a <Stepper>");
|
|
34
|
-
}
|
|
35
38
|
return context;
|
|
36
39
|
}
|
|
37
|
-
function Stepper({
|
|
40
|
+
function Stepper({
|
|
41
|
+
form: formProps,
|
|
42
|
+
stepValidationMode = "forward",
|
|
43
|
+
children
|
|
44
|
+
}) {
|
|
38
45
|
const formContext = reactHookForm.useFormContext();
|
|
39
46
|
const form = formProps != null ? formProps : formContext;
|
|
40
|
-
const [steps, setSteps] = react.useState(
|
|
47
|
+
const [steps, setSteps] = react.useState({});
|
|
48
|
+
const [stepOrder, setStepOrder] = react.useState([]);
|
|
41
49
|
const [activeStep, setActiveStep] = react.useState(-1);
|
|
42
50
|
const [validSteps, setValidSteps] = react.useState([]);
|
|
43
51
|
const [registrationKey, setRegistrationKey] = react.useState(0);
|
|
44
52
|
const stepRef = react.useRef(void 0);
|
|
45
53
|
const fields = react.useMemo(() => {
|
|
46
|
-
if (activeStep === -1 || !steps[activeStep]) return null;
|
|
47
|
-
return Array.from(new Set(steps[activeStep]));
|
|
48
|
-
}, [steps, activeStep]);
|
|
54
|
+
if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;
|
|
55
|
+
return Array.from(new Set(steps[stepOrder[activeStep]]));
|
|
56
|
+
}, [steps, stepOrder, activeStep]);
|
|
49
57
|
const jumpTo = react.useCallback(
|
|
50
58
|
async (step, onLeave) => {
|
|
51
59
|
if (activeStep !== -1 && fields && stepValidationMode !== "none") {
|
|
@@ -62,7 +70,10 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
62
70
|
}
|
|
63
71
|
if (onLeave && fields) {
|
|
64
72
|
const watchedValues = form.watch(fields);
|
|
65
|
-
const values = buildNestedValues(
|
|
73
|
+
const values = buildNestedValues(
|
|
74
|
+
fields,
|
|
75
|
+
watchedValues
|
|
76
|
+
);
|
|
66
77
|
await onLeave(values);
|
|
67
78
|
}
|
|
68
79
|
setActiveStep(step);
|
|
@@ -75,55 +86,66 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
75
86
|
[activeStep]
|
|
76
87
|
);
|
|
77
88
|
const isLastStep = react.useMemo(
|
|
78
|
-
() => activeStep === -1 || activeStep ===
|
|
79
|
-
[activeStep,
|
|
89
|
+
() => activeStep === -1 || activeStep === stepOrder.length - 1,
|
|
90
|
+
[activeStep, stepOrder.length]
|
|
80
91
|
);
|
|
81
|
-
const next = react.useCallback(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
const next = react.useCallback(
|
|
93
|
+
async (onLeave) => {
|
|
94
|
+
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
95
|
+
if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;
|
|
96
|
+
if (fields && stepValidationMode !== "none") {
|
|
97
|
+
const isValid = await form.trigger(fields);
|
|
98
|
+
if (!isValid) {
|
|
99
|
+
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
setValidSteps((prev2) => [.../* @__PURE__ */ new Set([...prev2, activeStep])]);
|
|
89
103
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
setActiveStep(activeStep + 1);
|
|
98
|
-
return true;
|
|
99
|
-
}, [steps.length, activeStep, fields, form, stepValidationMode]);
|
|
100
|
-
const prev = react.useCallback(async (onLeave) => {
|
|
101
|
-
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
102
|
-
if (activeStep === -1 || activeStep <= 0) return false;
|
|
103
|
-
if (fields && stepValidationMode === "all") {
|
|
104
|
-
const isValid = await form.trigger(fields);
|
|
105
|
-
if (!isValid) {
|
|
106
|
-
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
107
|
-
return false;
|
|
104
|
+
if (callback && fields) {
|
|
105
|
+
const watchedValues = form.watch(fields);
|
|
106
|
+
const values = buildNestedValues(
|
|
107
|
+
fields,
|
|
108
|
+
watchedValues
|
|
109
|
+
);
|
|
110
|
+
await callback(values);
|
|
108
111
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
setActiveStep(activeStep + 1);
|
|
113
|
+
return true;
|
|
114
|
+
},
|
|
115
|
+
[stepOrder.length, activeStep, fields, form, stepValidationMode]
|
|
116
|
+
);
|
|
117
|
+
const prev = react.useCallback(
|
|
118
|
+
async (onLeave) => {
|
|
119
|
+
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
120
|
+
if (activeStep === -1 || activeStep <= 0) return false;
|
|
121
|
+
if (fields && stepValidationMode === "all") {
|
|
122
|
+
const isValid = await form.trigger(fields);
|
|
123
|
+
if (!isValid) {
|
|
124
|
+
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
setValidSteps((prev2) => [.../* @__PURE__ */ new Set([...prev2, activeStep])]);
|
|
128
|
+
}
|
|
129
|
+
if (callback && fields) {
|
|
130
|
+
const watchedValues = form.watch(fields);
|
|
131
|
+
const values = buildNestedValues(
|
|
132
|
+
fields,
|
|
133
|
+
watchedValues
|
|
134
|
+
);
|
|
135
|
+
await callback(values);
|
|
136
|
+
}
|
|
137
|
+
setActiveStep(activeStep - 1);
|
|
138
|
+
return true;
|
|
139
|
+
},
|
|
140
|
+
[activeStep, fields, form, stepValidationMode]
|
|
141
|
+
);
|
|
119
142
|
const registerStep = react.useCallback(
|
|
120
|
-
(elements,
|
|
143
|
+
(elements, id) => {
|
|
121
144
|
setSteps((prevSteps) => {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
newSteps.
|
|
126
|
-
if (activeStep === -1 && newSteps.length > 0) {
|
|
145
|
+
stepRef.current = id;
|
|
146
|
+
const newSteps = { ...prevSteps };
|
|
147
|
+
newSteps[id] = elements;
|
|
148
|
+
if (activeStep === -1 && Object.keys(newSteps).length > 0) {
|
|
127
149
|
setActiveStep(0);
|
|
128
150
|
}
|
|
129
151
|
return newSteps;
|
|
@@ -131,17 +153,38 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
131
153
|
},
|
|
132
154
|
[activeStep]
|
|
133
155
|
);
|
|
156
|
+
const registerStepOrder = react.useCallback(
|
|
157
|
+
(id) => {
|
|
158
|
+
setStepOrder((prevSteps) => {
|
|
159
|
+
return Array.from(/* @__PURE__ */ new Set([...prevSteps, id]));
|
|
160
|
+
});
|
|
161
|
+
},
|
|
162
|
+
[activeStep]
|
|
163
|
+
);
|
|
164
|
+
react.useCallback(
|
|
165
|
+
(id) => {
|
|
166
|
+
setSteps((prevSteps) => {
|
|
167
|
+
const newSteps = { ...prevSteps };
|
|
168
|
+
delete newSteps[id];
|
|
169
|
+
return newSteps;
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
[activeStep]
|
|
173
|
+
);
|
|
134
174
|
const rebuildSteps = react.useCallback(() => {
|
|
135
|
-
|
|
175
|
+
setStepOrder([]);
|
|
136
176
|
setRegistrationKey((prev2) => prev2 + 1);
|
|
137
177
|
}, []);
|
|
138
|
-
const changeStepAtIndex = react.useCallback(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
+
);
|
|
145
188
|
const publicContextValue = react.useMemo(
|
|
146
189
|
() => ({
|
|
147
190
|
activeStep,
|
|
@@ -170,14 +213,23 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
170
213
|
step: stepRef.current,
|
|
171
214
|
registrationKey,
|
|
172
215
|
rebuildSteps,
|
|
216
|
+
registerStepOrder,
|
|
173
217
|
registerStep,
|
|
174
218
|
changeStepAtIndex
|
|
175
219
|
}),
|
|
176
|
-
[
|
|
220
|
+
[
|
|
221
|
+
registrationKey,
|
|
222
|
+
rebuildSteps,
|
|
223
|
+
registerStepOrder,
|
|
224
|
+
registerStep,
|
|
225
|
+
changeStepAtIndex
|
|
226
|
+
]
|
|
177
227
|
);
|
|
178
228
|
const resolvedChildren = (
|
|
179
229
|
// eslint-disable-next-line react-hooks/refs
|
|
180
|
-
typeof children === "function" ? children(
|
|
230
|
+
typeof children === "function" ? children(
|
|
231
|
+
publicContextValue
|
|
232
|
+
) : children
|
|
181
233
|
);
|
|
182
234
|
return (
|
|
183
235
|
// eslint-disable-next-line react-hooks/refs
|
|
@@ -198,23 +250,24 @@ function Step({ children }) {
|
|
|
198
250
|
registerStep: registerStepFromParent,
|
|
199
251
|
step: stepFromParent,
|
|
200
252
|
rebuildSteps: rebuildStepsFromParent,
|
|
253
|
+
registerStepOrder,
|
|
201
254
|
changeStepAtIndex: changeStepAtIndexFromParent,
|
|
202
255
|
registrationKey: registrationKeyFromParent
|
|
203
256
|
} = formContext;
|
|
204
257
|
const stepRef = react.useRef(void 0);
|
|
258
|
+
const [id] = react.useState(generateGUID());
|
|
205
259
|
const [steps, setSteps] = react.useState([]);
|
|
206
260
|
const [registrationKey, setRegistrationKey] = react.useState(0);
|
|
207
|
-
const changeStepAtIndex = react.useCallback((elements, _index) => {
|
|
208
|
-
setSteps(elements);
|
|
209
|
-
}, []);
|
|
210
261
|
react.useEffect(() => {
|
|
211
262
|
const stepList = steps.length ? steps : [""];
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
263
|
+
registerStepFromParent(stepList, id);
|
|
264
|
+
registerStepOrder(id);
|
|
265
|
+
}, [steps]);
|
|
266
|
+
react.useEffect(() => {
|
|
267
|
+
if (registrationKeyFromParent) {
|
|
268
|
+
registerStepOrder(id);
|
|
216
269
|
}
|
|
217
|
-
}, [registrationKeyFromParent
|
|
270
|
+
}, [registrationKeyFromParent]);
|
|
218
271
|
react.useEffect(() => {
|
|
219
272
|
if (stepFromParent !== void 0) {
|
|
220
273
|
rebuildStepsFromParent();
|
|
@@ -226,24 +279,13 @@ function Step({ children }) {
|
|
|
226
279
|
const registerField = react.useCallback(
|
|
227
280
|
(element) => {
|
|
228
281
|
setSteps((prevSteps) => {
|
|
229
|
-
return [...prevSteps, element];
|
|
230
|
-
});
|
|
231
|
-
},
|
|
232
|
-
[steps]
|
|
233
|
-
);
|
|
234
|
-
const registerStep = react.useCallback(
|
|
235
|
-
(elements, stepRef2, step) => {
|
|
236
|
-
setSteps((prevSteps) => {
|
|
237
|
-
const stepNumber = step != null ? step : prevSteps.length;
|
|
238
|
-
stepRef2.current = stepNumber;
|
|
239
|
-
const newSteps = [...prevSteps];
|
|
240
|
-
newSteps.splice(stepNumber, 0, ...elements);
|
|
241
|
-
return newSteps;
|
|
282
|
+
return Array.from(/* @__PURE__ */ new Set([...prevSteps, element]));
|
|
242
283
|
});
|
|
243
284
|
},
|
|
244
285
|
[steps]
|
|
245
286
|
);
|
|
246
287
|
const rebuildSteps = react.useCallback(() => {
|
|
288
|
+
stepRef.current = void 0;
|
|
247
289
|
setSteps([]);
|
|
248
290
|
setRegistrationKey((prev) => prev + 1);
|
|
249
291
|
}, []);
|
|
@@ -252,12 +294,10 @@ function Step({ children }) {
|
|
|
252
294
|
// eslint-disable-next-line react-hooks/refs
|
|
253
295
|
step: stepRef.current,
|
|
254
296
|
registrationKey,
|
|
255
|
-
changeStepAtIndex,
|
|
256
297
|
registerField,
|
|
257
|
-
registerStep,
|
|
258
298
|
rebuildSteps
|
|
259
299
|
}),
|
|
260
|
-
[registrationKey,
|
|
300
|
+
[registrationKey, registerField, rebuildSteps]
|
|
261
301
|
);
|
|
262
302
|
return /* @__PURE__ */ jsxRuntime.jsx(StepContext.Provider, { value: contextValue, children });
|
|
263
303
|
}
|
|
@@ -265,7 +305,7 @@ Step.displayName = "Step";
|
|
|
265
305
|
function Controller({ name, ...rest }) {
|
|
266
306
|
const stepContext = useStep();
|
|
267
307
|
react.useEffect(() => {
|
|
268
|
-
if (stepContext
|
|
308
|
+
if (stepContext) {
|
|
269
309
|
stepContext.registerField(name);
|
|
270
310
|
}
|
|
271
311
|
}, [stepContext == null ? void 0 : stepContext.registrationKey]);
|
|
@@ -283,7 +323,7 @@ Controller.displayName = "Controller";
|
|
|
283
323
|
function useController(props) {
|
|
284
324
|
const stepContext = useStep();
|
|
285
325
|
react.useEffect(() => {
|
|
286
|
-
if (stepContext
|
|
326
|
+
if (stepContext) {
|
|
287
327
|
stepContext.registerField(props.name);
|
|
288
328
|
}
|
|
289
329
|
}, [stepContext == null ? void 0 : stepContext.registrationKey]);
|
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","stepRef","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.js","sourcesContent":["function buildNestedValues(fields: string[], values: unknown[]): 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\nexport { buildNestedValues }\n","import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react'\nimport { type FieldValues, Path, useFormContext, type UseFormReturn } from 'react-hook-form'\n\nimport { buildNestedValues } from './helper'\nimport { type StepValidationMode, type MaybePromise } from './types'\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number\n jumpTo: (step: number, onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>) => Promise<boolean>\n fields: string[] | null\n validSteps: number[]\n isFirstStep: boolean\n isLastStep: boolean\n next: (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown) => Promise<boolean>\n prev: (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown) => Promise<boolean>\n}\n\ntype InternalStepperContextValue = {\n step?: number\n registrationKey: number\n rebuildSteps: () => void\n registerStep: (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number) => void\n changeStepAtIndex: (elements: string[], index: number) => void\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null)\nconst InternalStepperContext = createContext<InternalStepperContextValue | null>(null)\n\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext)\n if (!context) {\n throw new Error('useInternalStepperContext must be used within a <Stepper>')\n }\n return context\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>\n stepValidationMode?: StepValidationMode\n children: React.ReactNode | ((context: StepperContextValue<TFieldValues>) => React.ReactNode)\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>(\n { form:formProps, stepValidationMode = 'forward', children }: StepperProps<TFieldValues>,\n) {\n const formContext = useFormContext()\n\n const form = formProps ?? formContext as UseFormReturn<TFieldValues>\n const [steps, setSteps] = 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<number | undefined>(undefined)\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[activeStep]) return null\n return Array.from(new Set(steps[activeStep]))\n }, [steps, activeStep])\n\n const jumpTo = useCallback(\n async (step: number, onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== 'none') {\n const isForward = step > activeStep\n const shouldValidate = stepValidationMode === 'all' || (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(fields, watchedValues) 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 === steps.length - 1,\n [activeStep, steps.length],\n )\n\n const next = useCallback(async (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown): Promise<boolean> => {\n const callback = typeof onLeave === 'function' ? onLeave as (values: Partial<TFieldValues>) => MaybePromise<void> : undefined\n if (activeStep === -1 || activeStep >= steps.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(fields, watchedValues) as Partial<TFieldValues>\n await callback(values)\n }\n setActiveStep(activeStep + 1)\n return true\n }, [steps.length, activeStep, fields, form, stepValidationMode])\n\n const prev = useCallback(async (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown): Promise<boolean> => {\n const callback = typeof onLeave === 'function' ? onLeave as (values: Partial<TFieldValues>) => MaybePromise<void> : 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(fields, watchedValues) as Partial<TFieldValues>\n await callback(values)\n }\n setActiveStep(activeStep - 1)\n return true\n }, [activeStep, fields, form, stepValidationMode])\n\n const registerStep = useCallback(\n (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number): void => {\n setSteps((prevSteps) => {\n const stepNumber = step ?? prevSteps.length\n stepRef.current = stepNumber\n const newSteps = [...prevSteps]\n newSteps.splice(stepNumber, 0, elements)\n\n if (activeStep === -1 && newSteps.length > 0) {\n setActiveStep(0)\n }\n\n return newSteps\n })\n },\n [activeStep],\n )\n\n const rebuildSteps = useCallback(() => {\n setSteps([])\n setRegistrationKey((prev) => prev + 1)\n }, [])\n\n\n const changeStepAtIndex = useCallback((elements: string[], index: number): void => {\n setSteps((prevSteps) => {\n const newSteps = [...prevSteps]\n newSteps[index] = elements\n return newSteps\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 registerStep,\n changeStepAtIndex,\n }),\n [registrationKey, rebuildSteps, registerStep, changeStepAtIndex],\n )\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === 'function' ? children(publicContextValue as unknown as StepperContextValue<TFieldValues>) : 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<TFieldValues extends FieldValues = FieldValues>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext)\n return context as unknown as StepperContextValue<TFieldValues>\n}\n\nexport { Stepper, StepperContext, InternalStepperContext, useInternalStepperContext, useStepper }\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue }\n","import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { useInternalStepperContext } from './stepper'\n\ntype StepContextValue = {\n step?: number\n registrationKey: number\n registerField: (elements: string) => void\n registerStep: (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number) => void\n rebuildSteps: () => void\n changeStepAtIndex: (elements: string[], index: number) => 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 changeStepAtIndex: changeStepAtIndexFromParent,\n registrationKey: registrationKeyFromParent,\n } = formContext\n\n\n const stepRef = useRef<number | undefined>(undefined)\n const [steps, setSteps] = useState<string[]>([])\n\n const [registrationKey, setRegistrationKey] = useState(0)\n\n const changeStepAtIndex = useCallback((elements: string[], _index: number): void => {\n setSteps(elements)\n }, [])\n\n useEffect(() => {\n const stepList = steps.length ? steps : ['']\n if (stepRef.current !== undefined) {\n changeStepAtIndexFromParent(stepList, stepRef.current)\n } else {\n registerStepFromParent(stepList, stepRef)\n }\n }, [registrationKeyFromParent, steps])\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 [...prevSteps, element]\n })\n },\n [steps],\n )\n\n const registerStep = useCallback(\n (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number): void => {\n setSteps((prevSteps) => {\n const stepNumber = step ?? prevSteps.length\n stepRef.current = stepNumber\n const newSteps = [...prevSteps]\n newSteps.splice(stepNumber, 0, ...elements)\n return newSteps\n })\n },\n [steps],\n )\n\n const rebuildSteps = useCallback(() => {\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 changeStepAtIndex,\n registerField,\n registerStep,\n rebuildSteps,\n }),\n [registrationKey, changeStepAtIndex, registerField, registerStep, rebuildSteps],\n )\n\n // eslint-disable-next-line react-hooks/refs\n return <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\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 && stepContext?.registrationKey !== 0) {\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>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep()\n\n useEffect(() => {\n if (stepContext && stepContext?.registrationKey !== 0) {\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 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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -23,27 +23,35 @@ function buildNestedValues(fields, values) {
|
|
|
23
23
|
}
|
|
24
24
|
return result;
|
|
25
25
|
}
|
|
26
|
+
function generateGUID() {
|
|
27
|
+
function s4() {
|
|
28
|
+
return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
|
|
29
|
+
}
|
|
30
|
+
return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();
|
|
31
|
+
}
|
|
26
32
|
var StepperContext = createContext(null);
|
|
27
33
|
var InternalStepperContext = createContext(null);
|
|
28
34
|
function useInternalStepperContext() {
|
|
29
35
|
const context = useContext(InternalStepperContext);
|
|
30
|
-
if (!context) {
|
|
31
|
-
throw new Error("useInternalStepperContext must be used within a <Stepper>");
|
|
32
|
-
}
|
|
33
36
|
return context;
|
|
34
37
|
}
|
|
35
|
-
function Stepper({
|
|
38
|
+
function Stepper({
|
|
39
|
+
form: formProps,
|
|
40
|
+
stepValidationMode = "forward",
|
|
41
|
+
children
|
|
42
|
+
}) {
|
|
36
43
|
const formContext = useFormContext();
|
|
37
44
|
const form = formProps != null ? formProps : formContext;
|
|
38
|
-
const [steps, setSteps] = useState(
|
|
45
|
+
const [steps, setSteps] = useState({});
|
|
46
|
+
const [stepOrder, setStepOrder] = useState([]);
|
|
39
47
|
const [activeStep, setActiveStep] = useState(-1);
|
|
40
48
|
const [validSteps, setValidSteps] = useState([]);
|
|
41
49
|
const [registrationKey, setRegistrationKey] = useState(0);
|
|
42
50
|
const stepRef = useRef(void 0);
|
|
43
51
|
const fields = useMemo(() => {
|
|
44
|
-
if (activeStep === -1 || !steps[activeStep]) return null;
|
|
45
|
-
return Array.from(new Set(steps[activeStep]));
|
|
46
|
-
}, [steps, activeStep]);
|
|
52
|
+
if (activeStep === -1 || !steps[stepOrder[activeStep]]) return null;
|
|
53
|
+
return Array.from(new Set(steps[stepOrder[activeStep]]));
|
|
54
|
+
}, [steps, stepOrder, activeStep]);
|
|
47
55
|
const jumpTo = useCallback(
|
|
48
56
|
async (step, onLeave) => {
|
|
49
57
|
if (activeStep !== -1 && fields && stepValidationMode !== "none") {
|
|
@@ -60,7 +68,10 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
60
68
|
}
|
|
61
69
|
if (onLeave && fields) {
|
|
62
70
|
const watchedValues = form.watch(fields);
|
|
63
|
-
const values = buildNestedValues(
|
|
71
|
+
const values = buildNestedValues(
|
|
72
|
+
fields,
|
|
73
|
+
watchedValues
|
|
74
|
+
);
|
|
64
75
|
await onLeave(values);
|
|
65
76
|
}
|
|
66
77
|
setActiveStep(step);
|
|
@@ -73,55 +84,66 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
73
84
|
[activeStep]
|
|
74
85
|
);
|
|
75
86
|
const isLastStep = useMemo(
|
|
76
|
-
() => activeStep === -1 || activeStep ===
|
|
77
|
-
[activeStep,
|
|
87
|
+
() => activeStep === -1 || activeStep === stepOrder.length - 1,
|
|
88
|
+
[activeStep, stepOrder.length]
|
|
78
89
|
);
|
|
79
|
-
const next = useCallback(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
const next = useCallback(
|
|
91
|
+
async (onLeave) => {
|
|
92
|
+
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
93
|
+
if (activeStep === -1 || activeStep >= stepOrder.length - 1) return false;
|
|
94
|
+
if (fields && stepValidationMode !== "none") {
|
|
95
|
+
const isValid = await form.trigger(fields);
|
|
96
|
+
if (!isValid) {
|
|
97
|
+
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
setValidSteps((prev2) => [.../* @__PURE__ */ new Set([...prev2, activeStep])]);
|
|
87
101
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
setActiveStep(activeStep + 1);
|
|
96
|
-
return true;
|
|
97
|
-
}, [steps.length, activeStep, fields, form, stepValidationMode]);
|
|
98
|
-
const prev = useCallback(async (onLeave) => {
|
|
99
|
-
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
100
|
-
if (activeStep === -1 || activeStep <= 0) return false;
|
|
101
|
-
if (fields && stepValidationMode === "all") {
|
|
102
|
-
const isValid = await form.trigger(fields);
|
|
103
|
-
if (!isValid) {
|
|
104
|
-
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
105
|
-
return false;
|
|
102
|
+
if (callback && fields) {
|
|
103
|
+
const watchedValues = form.watch(fields);
|
|
104
|
+
const values = buildNestedValues(
|
|
105
|
+
fields,
|
|
106
|
+
watchedValues
|
|
107
|
+
);
|
|
108
|
+
await callback(values);
|
|
106
109
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
setActiveStep(activeStep + 1);
|
|
111
|
+
return true;
|
|
112
|
+
},
|
|
113
|
+
[stepOrder.length, activeStep, fields, form, stepValidationMode]
|
|
114
|
+
);
|
|
115
|
+
const prev = useCallback(
|
|
116
|
+
async (onLeave) => {
|
|
117
|
+
const callback = typeof onLeave === "function" ? onLeave : void 0;
|
|
118
|
+
if (activeStep === -1 || activeStep <= 0) return false;
|
|
119
|
+
if (fields && stepValidationMode === "all") {
|
|
120
|
+
const isValid = await form.trigger(fields);
|
|
121
|
+
if (!isValid) {
|
|
122
|
+
setValidSteps((prev2) => prev2.filter((s) => s !== activeStep));
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
setValidSteps((prev2) => [.../* @__PURE__ */ new Set([...prev2, activeStep])]);
|
|
126
|
+
}
|
|
127
|
+
if (callback && fields) {
|
|
128
|
+
const watchedValues = form.watch(fields);
|
|
129
|
+
const values = buildNestedValues(
|
|
130
|
+
fields,
|
|
131
|
+
watchedValues
|
|
132
|
+
);
|
|
133
|
+
await callback(values);
|
|
134
|
+
}
|
|
135
|
+
setActiveStep(activeStep - 1);
|
|
136
|
+
return true;
|
|
137
|
+
},
|
|
138
|
+
[activeStep, fields, form, stepValidationMode]
|
|
139
|
+
);
|
|
117
140
|
const registerStep = useCallback(
|
|
118
|
-
(elements,
|
|
141
|
+
(elements, id) => {
|
|
119
142
|
setSteps((prevSteps) => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
newSteps.
|
|
124
|
-
if (activeStep === -1 && newSteps.length > 0) {
|
|
143
|
+
stepRef.current = id;
|
|
144
|
+
const newSteps = { ...prevSteps };
|
|
145
|
+
newSteps[id] = elements;
|
|
146
|
+
if (activeStep === -1 && Object.keys(newSteps).length > 0) {
|
|
125
147
|
setActiveStep(0);
|
|
126
148
|
}
|
|
127
149
|
return newSteps;
|
|
@@ -129,17 +151,38 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
129
151
|
},
|
|
130
152
|
[activeStep]
|
|
131
153
|
);
|
|
154
|
+
const registerStepOrder = useCallback(
|
|
155
|
+
(id) => {
|
|
156
|
+
setStepOrder((prevSteps) => {
|
|
157
|
+
return Array.from(/* @__PURE__ */ new Set([...prevSteps, id]));
|
|
158
|
+
});
|
|
159
|
+
},
|
|
160
|
+
[activeStep]
|
|
161
|
+
);
|
|
162
|
+
useCallback(
|
|
163
|
+
(id) => {
|
|
164
|
+
setSteps((prevSteps) => {
|
|
165
|
+
const newSteps = { ...prevSteps };
|
|
166
|
+
delete newSteps[id];
|
|
167
|
+
return newSteps;
|
|
168
|
+
});
|
|
169
|
+
},
|
|
170
|
+
[activeStep]
|
|
171
|
+
);
|
|
132
172
|
const rebuildSteps = useCallback(() => {
|
|
133
|
-
|
|
173
|
+
setStepOrder([]);
|
|
134
174
|
setRegistrationKey((prev2) => prev2 + 1);
|
|
135
175
|
}, []);
|
|
136
|
-
const changeStepAtIndex = useCallback(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
+
);
|
|
143
186
|
const publicContextValue = useMemo(
|
|
144
187
|
() => ({
|
|
145
188
|
activeStep,
|
|
@@ -168,14 +211,23 @@ function Stepper({ form: formProps, stepValidationMode = "forward", children })
|
|
|
168
211
|
step: stepRef.current,
|
|
169
212
|
registrationKey,
|
|
170
213
|
rebuildSteps,
|
|
214
|
+
registerStepOrder,
|
|
171
215
|
registerStep,
|
|
172
216
|
changeStepAtIndex
|
|
173
217
|
}),
|
|
174
|
-
[
|
|
218
|
+
[
|
|
219
|
+
registrationKey,
|
|
220
|
+
rebuildSteps,
|
|
221
|
+
registerStepOrder,
|
|
222
|
+
registerStep,
|
|
223
|
+
changeStepAtIndex
|
|
224
|
+
]
|
|
175
225
|
);
|
|
176
226
|
const resolvedChildren = (
|
|
177
227
|
// eslint-disable-next-line react-hooks/refs
|
|
178
|
-
typeof children === "function" ? children(
|
|
228
|
+
typeof children === "function" ? children(
|
|
229
|
+
publicContextValue
|
|
230
|
+
) : children
|
|
179
231
|
);
|
|
180
232
|
return (
|
|
181
233
|
// eslint-disable-next-line react-hooks/refs
|
|
@@ -196,23 +248,24 @@ function Step({ children }) {
|
|
|
196
248
|
registerStep: registerStepFromParent,
|
|
197
249
|
step: stepFromParent,
|
|
198
250
|
rebuildSteps: rebuildStepsFromParent,
|
|
251
|
+
registerStepOrder,
|
|
199
252
|
changeStepAtIndex: changeStepAtIndexFromParent,
|
|
200
253
|
registrationKey: registrationKeyFromParent
|
|
201
254
|
} = formContext;
|
|
202
255
|
const stepRef = useRef(void 0);
|
|
256
|
+
const [id] = useState(generateGUID());
|
|
203
257
|
const [steps, setSteps] = useState([]);
|
|
204
258
|
const [registrationKey, setRegistrationKey] = useState(0);
|
|
205
|
-
const changeStepAtIndex = useCallback((elements, _index) => {
|
|
206
|
-
setSteps(elements);
|
|
207
|
-
}, []);
|
|
208
259
|
useEffect(() => {
|
|
209
260
|
const stepList = steps.length ? steps : [""];
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
261
|
+
registerStepFromParent(stepList, id);
|
|
262
|
+
registerStepOrder(id);
|
|
263
|
+
}, [steps]);
|
|
264
|
+
useEffect(() => {
|
|
265
|
+
if (registrationKeyFromParent) {
|
|
266
|
+
registerStepOrder(id);
|
|
214
267
|
}
|
|
215
|
-
}, [registrationKeyFromParent
|
|
268
|
+
}, [registrationKeyFromParent]);
|
|
216
269
|
useEffect(() => {
|
|
217
270
|
if (stepFromParent !== void 0) {
|
|
218
271
|
rebuildStepsFromParent();
|
|
@@ -224,24 +277,13 @@ function Step({ children }) {
|
|
|
224
277
|
const registerField = useCallback(
|
|
225
278
|
(element) => {
|
|
226
279
|
setSteps((prevSteps) => {
|
|
227
|
-
return [...prevSteps, element];
|
|
228
|
-
});
|
|
229
|
-
},
|
|
230
|
-
[steps]
|
|
231
|
-
);
|
|
232
|
-
const registerStep = useCallback(
|
|
233
|
-
(elements, stepRef2, step) => {
|
|
234
|
-
setSteps((prevSteps) => {
|
|
235
|
-
const stepNumber = step != null ? step : prevSteps.length;
|
|
236
|
-
stepRef2.current = stepNumber;
|
|
237
|
-
const newSteps = [...prevSteps];
|
|
238
|
-
newSteps.splice(stepNumber, 0, ...elements);
|
|
239
|
-
return newSteps;
|
|
280
|
+
return Array.from(/* @__PURE__ */ new Set([...prevSteps, element]));
|
|
240
281
|
});
|
|
241
282
|
},
|
|
242
283
|
[steps]
|
|
243
284
|
);
|
|
244
285
|
const rebuildSteps = useCallback(() => {
|
|
286
|
+
stepRef.current = void 0;
|
|
245
287
|
setSteps([]);
|
|
246
288
|
setRegistrationKey((prev) => prev + 1);
|
|
247
289
|
}, []);
|
|
@@ -250,12 +292,10 @@ function Step({ children }) {
|
|
|
250
292
|
// eslint-disable-next-line react-hooks/refs
|
|
251
293
|
step: stepRef.current,
|
|
252
294
|
registrationKey,
|
|
253
|
-
changeStepAtIndex,
|
|
254
295
|
registerField,
|
|
255
|
-
registerStep,
|
|
256
296
|
rebuildSteps
|
|
257
297
|
}),
|
|
258
|
-
[registrationKey,
|
|
298
|
+
[registrationKey, registerField, rebuildSteps]
|
|
259
299
|
);
|
|
260
300
|
return /* @__PURE__ */ jsx(StepContext.Provider, { value: contextValue, children });
|
|
261
301
|
}
|
|
@@ -263,7 +303,7 @@ Step.displayName = "Step";
|
|
|
263
303
|
function Controller({ name, ...rest }) {
|
|
264
304
|
const stepContext = useStep();
|
|
265
305
|
useEffect(() => {
|
|
266
|
-
if (stepContext
|
|
306
|
+
if (stepContext) {
|
|
267
307
|
stepContext.registerField(name);
|
|
268
308
|
}
|
|
269
309
|
}, [stepContext == null ? void 0 : stepContext.registrationKey]);
|
|
@@ -281,7 +321,7 @@ Controller.displayName = "Controller";
|
|
|
281
321
|
function useController(props) {
|
|
282
322
|
const stepContext = useStep();
|
|
283
323
|
useEffect(() => {
|
|
284
|
-
if (stepContext
|
|
324
|
+
if (stepContext) {
|
|
285
325
|
stepContext.registerField(props.name);
|
|
286
326
|
}
|
|
287
327
|
}, [stepContext == null ? void 0 : stepContext.registrationKey]);
|
package/dist/index.mjs.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":["prev","stepRef","createContext","useContext","useRef","useState","useCallback","useMemo","jsx","useEffect","RHFController","useRHFController"],"mappings":"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","file":"index.mjs","sourcesContent":["function buildNestedValues(fields: string[], values: unknown[]): 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\nexport { buildNestedValues }\n","import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react'\nimport { type FieldValues, Path, useFormContext, type UseFormReturn } from 'react-hook-form'\n\nimport { buildNestedValues } from './helper'\nimport { type StepValidationMode, type MaybePromise } from './types'\n\ntype StepperContextValue<TFieldValues extends FieldValues = FieldValues> = {\n activeStep: number\n jumpTo: (step: number, onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>) => Promise<boolean>\n fields: string[] | null\n validSteps: number[]\n isFirstStep: boolean\n isLastStep: boolean\n next: (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown) => Promise<boolean>\n prev: (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown) => Promise<boolean>\n}\n\ntype InternalStepperContextValue = {\n step?: number\n registrationKey: number\n rebuildSteps: () => void\n registerStep: (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number) => void\n changeStepAtIndex: (elements: string[], index: number) => void\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null)\nconst InternalStepperContext = createContext<InternalStepperContextValue | null>(null)\n\n\nfunction useInternalStepperContext(): InternalStepperContextValue {\n const context = useContext(InternalStepperContext)\n if (!context) {\n throw new Error('useInternalStepperContext must be used within a <Stepper>')\n }\n return context\n}\n\ninterface StepperProps<TFieldValues extends FieldValues = FieldValues> {\n form?: UseFormReturn<TFieldValues>\n stepValidationMode?: StepValidationMode\n children: React.ReactNode | ((context: StepperContextValue<TFieldValues>) => React.ReactNode)\n}\n\nfunction Stepper<TFieldValues extends FieldValues = FieldValues>(\n { form:formProps, stepValidationMode = 'forward', children }: StepperProps<TFieldValues>,\n) {\n const formContext = useFormContext()\n\n const form = formProps ?? formContext as UseFormReturn<TFieldValues>\n const [steps, setSteps] = 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<number | undefined>(undefined)\n\n const fields = useMemo<string[] | null>(() => {\n if (activeStep === -1 || !steps[activeStep]) return null\n return Array.from(new Set(steps[activeStep]))\n }, [steps, activeStep])\n\n const jumpTo = useCallback(\n async (step: number, onLeave?: (values: Partial<TFieldValues>) => MaybePromise<void>): Promise<boolean> => {\n if (activeStep !== -1 && fields && stepValidationMode !== 'none') {\n const isForward = step > activeStep\n const shouldValidate = stepValidationMode === 'all' || (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(fields, watchedValues) 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 === steps.length - 1,\n [activeStep, steps.length],\n )\n\n const next = useCallback(async (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown): Promise<boolean> => {\n const callback = typeof onLeave === 'function' ? onLeave as (values: Partial<TFieldValues>) => MaybePromise<void> : undefined\n if (activeStep === -1 || activeStep >= steps.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(fields, watchedValues) as Partial<TFieldValues>\n await callback(values)\n }\n setActiveStep(activeStep + 1)\n return true\n }, [steps.length, activeStep, fields, form, stepValidationMode])\n\n const prev = useCallback(async (onLeave?: ((values: Partial<TFieldValues>) => MaybePromise<void>) | unknown): Promise<boolean> => {\n const callback = typeof onLeave === 'function' ? onLeave as (values: Partial<TFieldValues>) => MaybePromise<void> : 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(fields, watchedValues) as Partial<TFieldValues>\n await callback(values)\n }\n setActiveStep(activeStep - 1)\n return true\n }, [activeStep, fields, form, stepValidationMode])\n\n const registerStep = useCallback(\n (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number): void => {\n setSteps((prevSteps) => {\n const stepNumber = step ?? prevSteps.length\n stepRef.current = stepNumber\n const newSteps = [...prevSteps]\n newSteps.splice(stepNumber, 0, elements)\n\n if (activeStep === -1 && newSteps.length > 0) {\n setActiveStep(0)\n }\n\n return newSteps\n })\n },\n [activeStep],\n )\n\n const rebuildSteps = useCallback(() => {\n setSteps([])\n setRegistrationKey((prev) => prev + 1)\n }, [])\n\n\n const changeStepAtIndex = useCallback((elements: string[], index: number): void => {\n setSteps((prevSteps) => {\n const newSteps = [...prevSteps]\n newSteps[index] = elements\n return newSteps\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 registerStep,\n changeStepAtIndex,\n }),\n [registrationKey, rebuildSteps, registerStep, changeStepAtIndex],\n )\n\n const resolvedChildren =\n // eslint-disable-next-line react-hooks/refs\n typeof children === 'function' ? children(publicContextValue as unknown as StepperContextValue<TFieldValues>) : 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<TFieldValues extends FieldValues = FieldValues>(): StepperContextValue<TFieldValues> {\n const context = useContext(StepperContext)\n return context as unknown as StepperContextValue<TFieldValues>\n}\n\nexport { Stepper, StepperContext, InternalStepperContext, useInternalStepperContext, useStepper }\nexport type { StepperProps, StepperContextValue, InternalStepperContextValue }\n","import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { useInternalStepperContext } from './stepper'\n\ntype StepContextValue = {\n step?: number\n registrationKey: number\n registerField: (elements: string) => void\n registerStep: (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number) => void\n rebuildSteps: () => void\n changeStepAtIndex: (elements: string[], index: number) => 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 changeStepAtIndex: changeStepAtIndexFromParent,\n registrationKey: registrationKeyFromParent,\n } = formContext\n\n\n const stepRef = useRef<number | undefined>(undefined)\n const [steps, setSteps] = useState<string[]>([])\n\n const [registrationKey, setRegistrationKey] = useState(0)\n\n const changeStepAtIndex = useCallback((elements: string[], _index: number): void => {\n setSteps(elements)\n }, [])\n\n useEffect(() => {\n const stepList = steps.length ? steps : ['']\n if (stepRef.current !== undefined) {\n changeStepAtIndexFromParent(stepList, stepRef.current)\n } else {\n registerStepFromParent(stepList, stepRef)\n }\n }, [registrationKeyFromParent, steps])\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 [...prevSteps, element]\n })\n },\n [steps],\n )\n\n const registerStep = useCallback(\n (elements: string[], stepRef: React.RefObject<number | undefined>, step?: number): void => {\n setSteps((prevSteps) => {\n const stepNumber = step ?? prevSteps.length\n stepRef.current = stepNumber\n const newSteps = [...prevSteps]\n newSteps.splice(stepNumber, 0, ...elements)\n return newSteps\n })\n },\n [steps],\n )\n\n const rebuildSteps = useCallback(() => {\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 changeStepAtIndex,\n registerField,\n registerStep,\n rebuildSteps,\n }),\n [registrationKey, changeStepAtIndex, registerField, registerStep, rebuildSteps],\n )\n\n // eslint-disable-next-line react-hooks/refs\n return <StepContext.Provider value={contextValue}>{children}</StepContext.Provider>\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 && stepContext?.registrationKey !== 0) {\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>(props: UseControllerProps<TFieldValues, TName>): UseControllerReturn<TFieldValues, TName> {\n const stepContext = useStep()\n\n useEffect(() => {\n if (stepContext && stepContext?.registrationKey !== 0) {\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 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"]}
|