@daltonr/pathwrite-react 0.7.0 → 0.9.0
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.css +40 -0
- package/dist/index.d.ts +42 -8
- package/dist/index.js +55 -9
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +90 -23
package/dist/index.css
CHANGED
|
@@ -246,6 +246,9 @@
|
|
|
246
246
|
--pw-color-error: #dc2626;
|
|
247
247
|
--pw-color-error-bg: #fef2f2;
|
|
248
248
|
--pw-color-error-border: #fecaca;
|
|
249
|
+
--pw-color-warning: #d97706;
|
|
250
|
+
--pw-color-warning-bg: #fffbeb;
|
|
251
|
+
--pw-color-warning-border: #fde68a;
|
|
249
252
|
}
|
|
250
253
|
|
|
251
254
|
.pw-shell__validation {
|
|
@@ -282,6 +285,43 @@
|
|
|
282
285
|
content: ":";
|
|
283
286
|
}
|
|
284
287
|
|
|
288
|
+
/* ------------------------------------------------------------------ */
|
|
289
|
+
/* Warning messages */
|
|
290
|
+
/* ------------------------------------------------------------------ */
|
|
291
|
+
.pw-shell__warnings {
|
|
292
|
+
list-style: none;
|
|
293
|
+
margin: 0;
|
|
294
|
+
padding: 12px 16px;
|
|
295
|
+
background: var(--pw-color-warning-bg);
|
|
296
|
+
border: 1px solid var(--pw-color-warning-border);
|
|
297
|
+
border-radius: var(--pw-shell-radius);
|
|
298
|
+
display: flex;
|
|
299
|
+
flex-direction: column;
|
|
300
|
+
gap: 4px;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.pw-shell__warnings-item {
|
|
304
|
+
font-size: 13px;
|
|
305
|
+
color: var(--pw-color-warning);
|
|
306
|
+
padding-left: 16px;
|
|
307
|
+
position: relative;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.pw-shell__warnings-item::before {
|
|
311
|
+
content: "•";
|
|
312
|
+
position: absolute;
|
|
313
|
+
left: 4px;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.pw-shell__warnings-label {
|
|
317
|
+
font-weight: 600;
|
|
318
|
+
margin-right: 3px;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.pw-shell__warnings-label::after {
|
|
322
|
+
content: ":";
|
|
323
|
+
}
|
|
324
|
+
|
|
285
325
|
/* ------------------------------------------------------------------ */
|
|
286
326
|
/* Footer — navigation buttons */
|
|
287
327
|
/* ------------------------------------------------------------------ */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { PropsWithChildren, ReactElement, ReactNode } from "react";
|
|
1
|
+
import type { ChangeEvent, PropsWithChildren, ReactElement, ReactNode } from "react";
|
|
2
2
|
import { PathData, PathDefinition, PathEngine, PathEvent, PathSnapshot, ProgressLayout } from "@daltonr/pathwrite-core";
|
|
3
3
|
export interface UsePathOptions {
|
|
4
4
|
/**
|
|
5
5
|
* An externally-managed `PathEngine` to subscribe to — for example, the engine
|
|
6
|
-
* returned by `createPersistedEngine()` from `@daltonr/pathwrite-store
|
|
6
|
+
* returned by `createPersistedEngine()` from `@daltonr/pathwrite-store`.
|
|
7
7
|
*
|
|
8
8
|
* When provided:
|
|
9
9
|
* - `usePath` will **not** create its own engine.
|
|
@@ -34,12 +34,14 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
34
34
|
goToStepChecked: (stepId: string) => void;
|
|
35
35
|
/** Update a single data value; triggers a re-render via stateChanged. When `TData` is specified, `key` and `value` are type-checked against your data shape. */
|
|
36
36
|
setData: <K extends string & keyof TData>(key: K, value: TData[K]) => void;
|
|
37
|
+
/** Reset the current step's data to what it was when the step was entered. Useful for "Clear" or "Reset" buttons. */
|
|
38
|
+
resetStep: () => void;
|
|
37
39
|
/**
|
|
38
|
-
* Tear down any active path (without firing hooks) and immediately
|
|
39
|
-
*
|
|
40
|
+
* Tear down any active path (without firing hooks) and immediately restart
|
|
41
|
+
* the same path with the same initial data. Safe to call at any time.
|
|
40
42
|
* Use for "Start over" / retry flows without remounting the component.
|
|
41
43
|
*/
|
|
42
|
-
restart: (
|
|
44
|
+
restart: () => void;
|
|
43
45
|
}
|
|
44
46
|
export type PathProviderProps = PropsWithChildren<{
|
|
45
47
|
/** Forwarded to the internal usePath hook. */
|
|
@@ -58,7 +60,35 @@ export declare function PathProvider({ children, onEvent }: PathProviderProps):
|
|
|
58
60
|
* The optional generic narrows `snapshot.data` for convenience — it is a
|
|
59
61
|
* **type-level assertion**, not a runtime guarantee.
|
|
60
62
|
*/
|
|
61
|
-
export declare function usePathContext<TData extends PathData = PathData>(): UsePathReturn<TData
|
|
63
|
+
export declare function usePathContext<TData extends PathData = PathData>(): Omit<UsePathReturn<TData>, "snapshot"> & {
|
|
64
|
+
snapshot: PathSnapshot<TData>;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Binding helper for a single `<input>`, `<select>`, or `<textarea>` field.
|
|
68
|
+
*
|
|
69
|
+
* Returns `{ value, onChange }` tied to `snapshot.data[field]`, so you can
|
|
70
|
+
* spread it directly onto an element and eliminate the repetitive
|
|
71
|
+
* `onChange={e => setData("field", e.target.value)}` pattern:
|
|
72
|
+
*
|
|
73
|
+
* ```tsx
|
|
74
|
+
* function NameStep() {
|
|
75
|
+
* const name = useField<MyData, "name">("name");
|
|
76
|
+
* return <input type="text" {...name} />;
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* - `value` is always a `string` (falls back to `""` when the data key is unset).
|
|
81
|
+
* - `onChange` calls `setData(field, e.target.value)`.
|
|
82
|
+
*
|
|
83
|
+
* For inputs that need a value transform (e.g. `.trim()`, `Number()`) keep
|
|
84
|
+
* an explicit `onChange` handler — this helper is for the no-transform case.
|
|
85
|
+
*
|
|
86
|
+
* Must be called inside a `<PathShell>` or `<PathProvider>`.
|
|
87
|
+
*/
|
|
88
|
+
export declare function useField<TData extends PathData, K extends string & keyof TData>(field: K): {
|
|
89
|
+
value: string;
|
|
90
|
+
onChange: (e: ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => void;
|
|
91
|
+
};
|
|
62
92
|
export interface PathShellProps {
|
|
63
93
|
/** The path definition to drive. */
|
|
64
94
|
path: PathDefinition<any>;
|
|
@@ -121,6 +151,10 @@ export interface PathShellProps {
|
|
|
121
151
|
*/
|
|
122
152
|
progressLayout?: ProgressLayout;
|
|
123
153
|
}
|
|
154
|
+
export interface PathShellHandle {
|
|
155
|
+
/** Restart the shell's current path with its original `initialData`, without unmounting. */
|
|
156
|
+
restart: () => void;
|
|
157
|
+
}
|
|
124
158
|
export interface PathShellActions {
|
|
125
159
|
next: () => void;
|
|
126
160
|
previous: () => void;
|
|
@@ -147,6 +181,6 @@ export interface PathShellActions {
|
|
|
147
181
|
* />
|
|
148
182
|
* ```
|
|
149
183
|
*/
|
|
150
|
-
export declare
|
|
151
|
-
export type { PathData, FieldErrors, PathDefinition, PathEvent, PathSnapshot, PathStep, PathStepContext, ProgressLayout, RootProgress, SerializedPathState } from "@daltonr/pathwrite-core";
|
|
184
|
+
export declare const PathShell: import("react").ForwardRefExoticComponent<PathShellProps & import("react").RefAttributes<PathShellHandle>>;
|
|
185
|
+
export type { PathData, FieldErrors, PathDefinition, PathEvent, PathSnapshot, PathStep, PathStepContext, ProgressLayout, RootProgress, SerializedPathState, StepChoice, } from "@daltonr/pathwrite-core";
|
|
152
186
|
export { PathEngine } from "@daltonr/pathwrite-core";
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, createElement, useCallback, useContext, useEffect, useRef, useSyncExternalStore } from "react";
|
|
1
|
+
import { createContext, createElement, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useSyncExternalStore } from "react";
|
|
2
2
|
import { PathEngine } from "@daltonr/pathwrite-core";
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// usePath hook
|
|
@@ -50,8 +50,9 @@ export function usePath(options) {
|
|
|
50
50
|
const goToStep = useCallback((stepId) => engine.goToStep(stepId), [engine]);
|
|
51
51
|
const goToStepChecked = useCallback((stepId) => engine.goToStepChecked(stepId), [engine]);
|
|
52
52
|
const setData = useCallback((key, value) => engine.setData(key, value), [engine]);
|
|
53
|
-
const
|
|
54
|
-
|
|
53
|
+
const resetStep = useCallback(() => engine.resetStep(), [engine]);
|
|
54
|
+
const restart = useCallback(() => engine.restart(), [engine]);
|
|
55
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart };
|
|
55
56
|
}
|
|
56
57
|
// ---------------------------------------------------------------------------
|
|
57
58
|
// Context + Provider
|
|
@@ -80,6 +81,41 @@ export function usePathContext() {
|
|
|
80
81
|
return ctx;
|
|
81
82
|
}
|
|
82
83
|
// ---------------------------------------------------------------------------
|
|
84
|
+
// useField — input binding helper
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
/**
|
|
87
|
+
* Binding helper for a single `<input>`, `<select>`, or `<textarea>` field.
|
|
88
|
+
*
|
|
89
|
+
* Returns `{ value, onChange }` tied to `snapshot.data[field]`, so you can
|
|
90
|
+
* spread it directly onto an element and eliminate the repetitive
|
|
91
|
+
* `onChange={e => setData("field", e.target.value)}` pattern:
|
|
92
|
+
*
|
|
93
|
+
* ```tsx
|
|
94
|
+
* function NameStep() {
|
|
95
|
+
* const name = useField<MyData, "name">("name");
|
|
96
|
+
* return <input type="text" {...name} />;
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* - `value` is always a `string` (falls back to `""` when the data key is unset).
|
|
101
|
+
* - `onChange` calls `setData(field, e.target.value)`.
|
|
102
|
+
*
|
|
103
|
+
* For inputs that need a value transform (e.g. `.trim()`, `Number()`) keep
|
|
104
|
+
* an explicit `onChange` handler — this helper is for the no-transform case.
|
|
105
|
+
*
|
|
106
|
+
* Must be called inside a `<PathShell>` or `<PathProvider>`.
|
|
107
|
+
*/
|
|
108
|
+
export function useField(field) {
|
|
109
|
+
const { snapshot, setData } = usePathContext();
|
|
110
|
+
const onChange = useCallback((e) => {
|
|
111
|
+
setData(field, e.target.value);
|
|
112
|
+
},
|
|
113
|
+
// field is a string literal at the call site and never changes; setData is stable
|
|
114
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
115
|
+
[field, setData]);
|
|
116
|
+
return { value: String(snapshot.data[field] ?? ""), onChange };
|
|
117
|
+
}
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
83
119
|
// Helpers
|
|
84
120
|
// ---------------------------------------------------------------------------
|
|
85
121
|
/** Converts a camelCase or lowercase field key to a display label.
|
|
@@ -103,7 +139,7 @@ function formatFieldKey(key) {
|
|
|
103
139
|
* />
|
|
104
140
|
* ```
|
|
105
141
|
*/
|
|
106
|
-
export function PathShell({ path: pathDef, engine: externalEngine, steps, initialData = {}, autoStart = true, onComplete, onCancel, onEvent, backLabel = "Previous", nextLabel = "Next", completeLabel = "Complete", cancelLabel = "Cancel", hideCancel = false, hideProgress = false, footerLayout = "auto", className, renderHeader, renderFooter, validationDisplay = "
|
|
142
|
+
export const PathShell = forwardRef(function PathShell({ path: pathDef, engine: externalEngine, steps, initialData = {}, autoStart = true, onComplete, onCancel, onEvent, backLabel = "Previous", nextLabel = "Next", completeLabel = "Complete", cancelLabel = "Cancel", hideCancel = false, hideProgress = false, footerLayout = "auto", className, renderHeader, renderFooter, validationDisplay = "summary", progressLayout = "merged", }, ref) {
|
|
107
143
|
const pathReturn = usePath({
|
|
108
144
|
engine: externalEngine,
|
|
109
145
|
onEvent(event) {
|
|
@@ -115,6 +151,9 @@ export function PathShell({ path: pathDef, engine: externalEngine, steps, initia
|
|
|
115
151
|
}
|
|
116
152
|
});
|
|
117
153
|
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart } = pathReturn;
|
|
154
|
+
useImperativeHandle(ref, () => ({
|
|
155
|
+
restart: () => restart(),
|
|
156
|
+
}));
|
|
118
157
|
// Auto-start on mount — skipped when an external engine is provided since
|
|
119
158
|
// the caller is responsible for starting it (e.g. via createPersistedEngine).
|
|
120
159
|
const startedRef = useRef(false);
|
|
@@ -125,8 +164,13 @@ export function PathShell({ path: pathDef, engine: externalEngine, steps, initia
|
|
|
125
164
|
}
|
|
126
165
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
127
166
|
}, []);
|
|
128
|
-
// Look up step content from the steps map
|
|
129
|
-
|
|
167
|
+
// Look up step content from the steps map.
|
|
168
|
+
// When the current slot is a StepChoice, prefer the inner step id (formId)
|
|
169
|
+
// so consumers can register components by their inner step ids directly,
|
|
170
|
+
// without needing a wrapper dispatcher component.
|
|
171
|
+
const stepContent = snapshot
|
|
172
|
+
? ((snapshot.formId ? steps[snapshot.formId] : undefined) ?? steps[snapshot.stepId] ?? null)
|
|
173
|
+
: null;
|
|
130
174
|
if (!snapshot) {
|
|
131
175
|
return createElement(PathContext.Provider, { value: pathReturn }, createElement("div", { className: cls("pw-shell", className) }, createElement("div", { className: "pw-shell__empty" }, createElement("p", null, "No active path."), !autoStart && createElement("button", {
|
|
132
176
|
type: "button",
|
|
@@ -136,7 +180,7 @@ export function PathShell({ path: pathDef, engine: externalEngine, steps, initia
|
|
|
136
180
|
}
|
|
137
181
|
const actions = {
|
|
138
182
|
next, previous, cancel, goToStep, goToStepChecked, setData,
|
|
139
|
-
restart: () => restart(
|
|
183
|
+
restart: () => restart()
|
|
140
184
|
};
|
|
141
185
|
const showRoot = !hideProgress && !!snapshot.rootProgress && progressLayout !== "activeOnly";
|
|
142
186
|
const showActive = !hideProgress && (renderHeader
|
|
@@ -152,14 +196,16 @@ export function PathShell({ path: pathDef, engine: externalEngine, steps, initia
|
|
|
152
196
|
// Body — step content
|
|
153
197
|
createElement("div", { className: "pw-shell__body" }, stepContent),
|
|
154
198
|
// Validation messages — suppressed when validationDisplay="inline"
|
|
155
|
-
validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.
|
|
199
|
+
validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.fieldErrors).length > 0 && createElement("ul", { className: "pw-shell__validation" }, ...Object.entries(snapshot.fieldErrors).map(([key, msg]) => createElement("li", { key, className: "pw-shell__validation-item" }, key !== "_" && createElement("span", { className: "pw-shell__validation-label" }, formatFieldKey(key)), msg))),
|
|
200
|
+
// Warning messages — non-blocking, shown immediately (no hasAttemptedNext gate)
|
|
201
|
+
validationDisplay !== "inline" && Object.keys(snapshot.fieldWarnings).length > 0 && createElement("ul", { className: "pw-shell__warnings" }, ...Object.entries(snapshot.fieldWarnings).map(([key, msg]) => createElement("li", { key, className: "pw-shell__warnings-item" }, key !== "_" && createElement("span", { className: "pw-shell__warnings-label" }, formatFieldKey(key)), msg))),
|
|
156
202
|
// Footer — navigation buttons
|
|
157
203
|
renderFooter
|
|
158
204
|
? renderFooter(snapshot, actions)
|
|
159
205
|
: defaultFooter(snapshot, actions, {
|
|
160
206
|
backLabel, nextLabel, completeLabel, cancelLabel, hideCancel, footerLayout
|
|
161
207
|
})));
|
|
162
|
-
}
|
|
208
|
+
});
|
|
163
209
|
// ---------------------------------------------------------------------------
|
|
164
210
|
// Root progress (compact top-level bar visible during sub-paths)
|
|
165
211
|
// ---------------------------------------------------------------------------
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daltonr/pathwrite-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "React adapter for @daltonr/pathwrite-core — hooks, context provider, and optional <PathShell> default UI.",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"react": ">=18.0.0"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@daltonr/pathwrite-core": "^0.
|
|
49
|
+
"@daltonr/pathwrite-core": "^0.9.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"react": "^18.3.1",
|
package/src/index.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createContext,
|
|
3
3
|
createElement,
|
|
4
|
+
forwardRef,
|
|
4
5
|
useCallback,
|
|
5
6
|
useContext,
|
|
6
7
|
useEffect,
|
|
8
|
+
useImperativeHandle,
|
|
7
9
|
useRef,
|
|
8
10
|
useSyncExternalStore
|
|
9
11
|
} from "react";
|
|
10
|
-
import type { PropsWithChildren, ReactElement, ReactNode } from "react";
|
|
12
|
+
import type { ChangeEvent, PropsWithChildren, ReactElement, ReactNode } from "react";
|
|
11
13
|
import {
|
|
12
14
|
PathData,
|
|
13
15
|
PathDefinition,
|
|
@@ -25,7 +27,7 @@ import {
|
|
|
25
27
|
export interface UsePathOptions {
|
|
26
28
|
/**
|
|
27
29
|
* An externally-managed `PathEngine` to subscribe to — for example, the engine
|
|
28
|
-
* returned by `createPersistedEngine()` from `@daltonr/pathwrite-store
|
|
30
|
+
* returned by `createPersistedEngine()` from `@daltonr/pathwrite-store`.
|
|
29
31
|
*
|
|
30
32
|
* When provided:
|
|
31
33
|
* - `usePath` will **not** create its own engine.
|
|
@@ -57,12 +59,14 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
57
59
|
goToStepChecked: (stepId: string) => void;
|
|
58
60
|
/** Update a single data value; triggers a re-render via stateChanged. When `TData` is specified, `key` and `value` are type-checked against your data shape. */
|
|
59
61
|
setData: <K extends string & keyof TData>(key: K, value: TData[K]) => void;
|
|
62
|
+
/** Reset the current step's data to what it was when the step was entered. Useful for "Clear" or "Reset" buttons. */
|
|
63
|
+
resetStep: () => void;
|
|
60
64
|
/**
|
|
61
|
-
* Tear down any active path (without firing hooks) and immediately
|
|
62
|
-
*
|
|
65
|
+
* Tear down any active path (without firing hooks) and immediately restart
|
|
66
|
+
* the same path with the same initial data. Safe to call at any time.
|
|
63
67
|
* Use for "Start over" / retry flows without remounting the component.
|
|
64
68
|
*/
|
|
65
|
-
restart: (
|
|
69
|
+
restart: () => void;
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
export type PathProviderProps = PropsWithChildren<{
|
|
@@ -152,13 +156,11 @@ export function usePath<TData extends PathData = PathData>(options?: UsePathOpti
|
|
|
152
156
|
[engine]
|
|
153
157
|
) as UsePathReturn<TData>["setData"];
|
|
154
158
|
|
|
155
|
-
const
|
|
156
|
-
(path: PathDefinition<any>, initialData: PathData = {}) =>
|
|
157
|
-
engine.restart(path, initialData),
|
|
158
|
-
[engine]
|
|
159
|
-
);
|
|
159
|
+
const resetStep = useCallback(() => engine.resetStep(), [engine]);
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
const restart = useCallback(() => engine.restart(), [engine]);
|
|
162
|
+
|
|
163
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart };
|
|
162
164
|
}
|
|
163
165
|
|
|
164
166
|
// ---------------------------------------------------------------------------
|
|
@@ -183,12 +185,53 @@ export function PathProvider({ children, onEvent }: PathProviderProps): ReactEle
|
|
|
183
185
|
* The optional generic narrows `snapshot.data` for convenience — it is a
|
|
184
186
|
* **type-level assertion**, not a runtime guarantee.
|
|
185
187
|
*/
|
|
186
|
-
export function usePathContext<TData extends PathData = PathData>(): UsePathReturn<TData> {
|
|
188
|
+
export function usePathContext<TData extends PathData = PathData>(): Omit<UsePathReturn<TData>, "snapshot"> & { snapshot: PathSnapshot<TData> } {
|
|
187
189
|
const ctx = useContext(PathContext);
|
|
188
190
|
if (ctx === null) {
|
|
189
191
|
throw new Error("usePathContext must be used within a <PathProvider>.");
|
|
190
192
|
}
|
|
191
|
-
return ctx as UsePathReturn<TData
|
|
193
|
+
return ctx as Omit<UsePathReturn<TData>, "snapshot"> & { snapshot: PathSnapshot<TData> };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// useField — input binding helper
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Binding helper for a single `<input>`, `<select>`, or `<textarea>` field.
|
|
202
|
+
*
|
|
203
|
+
* Returns `{ value, onChange }` tied to `snapshot.data[field]`, so you can
|
|
204
|
+
* spread it directly onto an element and eliminate the repetitive
|
|
205
|
+
* `onChange={e => setData("field", e.target.value)}` pattern:
|
|
206
|
+
*
|
|
207
|
+
* ```tsx
|
|
208
|
+
* function NameStep() {
|
|
209
|
+
* const name = useField<MyData, "name">("name");
|
|
210
|
+
* return <input type="text" {...name} />;
|
|
211
|
+
* }
|
|
212
|
+
* ```
|
|
213
|
+
*
|
|
214
|
+
* - `value` is always a `string` (falls back to `""` when the data key is unset).
|
|
215
|
+
* - `onChange` calls `setData(field, e.target.value)`.
|
|
216
|
+
*
|
|
217
|
+
* For inputs that need a value transform (e.g. `.trim()`, `Number()`) keep
|
|
218
|
+
* an explicit `onChange` handler — this helper is for the no-transform case.
|
|
219
|
+
*
|
|
220
|
+
* Must be called inside a `<PathShell>` or `<PathProvider>`.
|
|
221
|
+
*/
|
|
222
|
+
export function useField<TData extends PathData, K extends string & keyof TData>(
|
|
223
|
+
field: K
|
|
224
|
+
): { value: string; onChange: (e: ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => void } {
|
|
225
|
+
const { snapshot, setData } = usePathContext<TData>();
|
|
226
|
+
const onChange = useCallback(
|
|
227
|
+
(e: ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
|
|
228
|
+
setData(field, e.target.value as TData[K]);
|
|
229
|
+
},
|
|
230
|
+
// field is a string literal at the call site and never changes; setData is stable
|
|
231
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
232
|
+
[field, setData]
|
|
233
|
+
);
|
|
234
|
+
return { value: String(snapshot.data[field] ?? ""), onChange };
|
|
192
235
|
}
|
|
193
236
|
|
|
194
237
|
// ---------------------------------------------------------------------------
|
|
@@ -268,6 +311,11 @@ export interface PathShellProps {
|
|
|
268
311
|
progressLayout?: ProgressLayout;
|
|
269
312
|
}
|
|
270
313
|
|
|
314
|
+
export interface PathShellHandle {
|
|
315
|
+
/** Restart the shell's current path with its original `initialData`, without unmounting. */
|
|
316
|
+
restart: () => void;
|
|
317
|
+
}
|
|
318
|
+
|
|
271
319
|
export interface PathShellActions {
|
|
272
320
|
next: () => void;
|
|
273
321
|
previous: () => void;
|
|
@@ -295,7 +343,7 @@ export interface PathShellActions {
|
|
|
295
343
|
* />
|
|
296
344
|
* ```
|
|
297
345
|
*/
|
|
298
|
-
export function PathShell({
|
|
346
|
+
export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function PathShell({
|
|
299
347
|
path: pathDef,
|
|
300
348
|
engine: externalEngine,
|
|
301
349
|
steps,
|
|
@@ -314,9 +362,9 @@ export function PathShell({
|
|
|
314
362
|
className,
|
|
315
363
|
renderHeader,
|
|
316
364
|
renderFooter,
|
|
317
|
-
validationDisplay = "
|
|
365
|
+
validationDisplay = "summary",
|
|
318
366
|
progressLayout = "merged",
|
|
319
|
-
}: PathShellProps): ReactElement {
|
|
367
|
+
}: PathShellProps, ref): ReactElement {
|
|
320
368
|
const pathReturn = usePath({
|
|
321
369
|
engine: externalEngine,
|
|
322
370
|
onEvent(event) {
|
|
@@ -328,6 +376,10 @@ export function PathShell({
|
|
|
328
376
|
|
|
329
377
|
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart } = pathReturn;
|
|
330
378
|
|
|
379
|
+
useImperativeHandle(ref, () => ({
|
|
380
|
+
restart: () => restart(),
|
|
381
|
+
}));
|
|
382
|
+
|
|
331
383
|
// Auto-start on mount — skipped when an external engine is provided since
|
|
332
384
|
// the caller is responsible for starting it (e.g. via createPersistedEngine).
|
|
333
385
|
const startedRef = useRef(false);
|
|
@@ -339,8 +391,13 @@ export function PathShell({
|
|
|
339
391
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
340
392
|
}, []);
|
|
341
393
|
|
|
342
|
-
// Look up step content from the steps map
|
|
343
|
-
|
|
394
|
+
// Look up step content from the steps map.
|
|
395
|
+
// When the current slot is a StepChoice, prefer the inner step id (formId)
|
|
396
|
+
// so consumers can register components by their inner step ids directly,
|
|
397
|
+
// without needing a wrapper dispatcher component.
|
|
398
|
+
const stepContent = snapshot
|
|
399
|
+
? ((snapshot.formId ? steps[snapshot.formId] : undefined) ?? steps[snapshot.stepId] ?? null)
|
|
400
|
+
: null;
|
|
344
401
|
|
|
345
402
|
if (!snapshot) {
|
|
346
403
|
return createElement(PathContext.Provider, { value: pathReturn },
|
|
@@ -359,7 +416,7 @@ export function PathShell({
|
|
|
359
416
|
|
|
360
417
|
const actions: PathShellActions = {
|
|
361
418
|
next, previous, cancel, goToStep, goToStepChecked, setData,
|
|
362
|
-
restart: () => restart(
|
|
419
|
+
restart: () => restart()
|
|
363
420
|
};
|
|
364
421
|
|
|
365
422
|
const showRoot = !hideProgress && !!snapshot.rootProgress && progressLayout !== "activeOnly";
|
|
@@ -378,14 +435,23 @@ export function PathShell({
|
|
|
378
435
|
// Body — step content
|
|
379
436
|
createElement("div", { className: "pw-shell__body" }, stepContent),
|
|
380
437
|
// Validation messages — suppressed when validationDisplay="inline"
|
|
381
|
-
validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.
|
|
382
|
-
...Object.entries(snapshot.
|
|
438
|
+
validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.fieldErrors).length > 0 && createElement("ul", { className: "pw-shell__validation" },
|
|
439
|
+
...Object.entries(snapshot.fieldErrors).map(([key, msg]) =>
|
|
383
440
|
createElement("li", { key, className: "pw-shell__validation-item" },
|
|
384
441
|
key !== "_" && createElement("span", { className: "pw-shell__validation-label" }, formatFieldKey(key)),
|
|
385
442
|
msg
|
|
386
443
|
)
|
|
387
444
|
)
|
|
388
445
|
),
|
|
446
|
+
// Warning messages — non-blocking, shown immediately (no hasAttemptedNext gate)
|
|
447
|
+
validationDisplay !== "inline" && Object.keys(snapshot.fieldWarnings).length > 0 && createElement("ul", { className: "pw-shell__warnings" },
|
|
448
|
+
...Object.entries(snapshot.fieldWarnings).map(([key, msg]) =>
|
|
449
|
+
createElement("li", { key, className: "pw-shell__warnings-item" },
|
|
450
|
+
key !== "_" && createElement("span", { className: "pw-shell__warnings-label" }, formatFieldKey(key)),
|
|
451
|
+
msg
|
|
452
|
+
)
|
|
453
|
+
)
|
|
454
|
+
),
|
|
389
455
|
// Footer — navigation buttons
|
|
390
456
|
renderFooter
|
|
391
457
|
? renderFooter(snapshot, actions)
|
|
@@ -394,7 +460,7 @@ export function PathShell({
|
|
|
394
460
|
})
|
|
395
461
|
)
|
|
396
462
|
);
|
|
397
|
-
}
|
|
463
|
+
});
|
|
398
464
|
|
|
399
465
|
// ---------------------------------------------------------------------------
|
|
400
466
|
// Root progress (compact top-level bar visible during sub-paths)
|
|
@@ -539,7 +605,8 @@ export type {
|
|
|
539
605
|
PathStepContext,
|
|
540
606
|
ProgressLayout,
|
|
541
607
|
RootProgress,
|
|
542
|
-
SerializedPathState
|
|
608
|
+
SerializedPathState,
|
|
609
|
+
StepChoice,
|
|
543
610
|
} from "@daltonr/pathwrite-core";
|
|
544
611
|
|
|
545
612
|
export { PathEngine } from "@daltonr/pathwrite-core";
|