@daltonr/pathwrite-react-native 0.10.1 → 0.12.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/README.md +7 -2
- package/dist/index.d.ts +37 -10
- package/dist/index.js +59 -18
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.tsx +105 -25
package/README.md
CHANGED
|
@@ -124,7 +124,7 @@ The API is identical to `@daltonr/pathwrite-react`. `usePath` creates an engine
|
|
|
124
124
|
|
|
125
125
|
| Field | Type | Description |
|
|
126
126
|
|---|---|---|
|
|
127
|
-
| `snapshot` | `PathSnapshot \| null` | Current state. `null` when no path is active. |
|
|
127
|
+
| `snapshot` | `PathSnapshot \| null` | Current state. `null` when no path is active or when `completionBehaviour: "dismiss"` is used. With the default `"stayOnFinal"`, a non-null snapshot with `status === "completed"` is returned after the path finishes. |
|
|
128
128
|
| `start(definition, data?)` | function | Start a path. |
|
|
129
129
|
| `next()` | function | Advance one step. Completes on the last step. |
|
|
130
130
|
| `previous()` | function | Go back one step. |
|
|
@@ -135,6 +135,7 @@ The API is identical to `@daltonr/pathwrite-react`. `usePath` creates an engine
|
|
|
135
135
|
| `resetStep()` | function | Restore data to step-entry state. |
|
|
136
136
|
| `startSubPath(definition, data?, meta?)` | function | Push a sub-path. |
|
|
137
137
|
| `restart(definition, data?)` | function | Tear down any active path and start fresh. |
|
|
138
|
+
| `validate()` | function | Set `snapshot.hasValidated` without navigating. Triggers all inline field errors simultaneously. Used to validate all tabs in a nested shell at once. |
|
|
138
139
|
|
|
139
140
|
All returned callbacks are referentially stable.
|
|
140
141
|
|
|
@@ -157,10 +158,14 @@ All returned callbacks are referentially stable.
|
|
|
157
158
|
| `hideCancel` | `boolean` | `false` | Hide the cancel button. |
|
|
158
159
|
| `hideProgress` | `boolean` | `false` | Hide the progress header. Also hidden automatically for single-step paths. |
|
|
159
160
|
| `disableBodyScroll` | `boolean` | `false` | Replace the `ScrollView` body with a plain `View`. Use when a step contains a `FlatList` or other virtualized list. |
|
|
160
|
-
| `
|
|
161
|
+
| `layout` | `"wizard" \| "form" \| "auto" \| "tabs"` | `"auto"` | `"wizard"`: Back on left, Cancel+Submit on right. `"form"`: Cancel on left, Submit on right, no Back. `"tabs"`: No progress header or footer — for tabbed interfaces. `"auto"` picks `"form"` for single-step paths. |
|
|
161
162
|
| `renderHeader` | `(snapshot) => ReactNode` | — | Replace the default progress header entirely. |
|
|
162
163
|
| `renderFooter` | `(snapshot, actions) => ReactNode` | — | Replace the default navigation buttons. |
|
|
164
|
+
| `completionContent` | `ReactNode` | — | Custom content rendered when `snapshot.status === "completed"` (`completionBehaviour: "stayOnFinal"`). If omitted, a default "All done." panel is shown. |
|
|
163
165
|
| `style` | `StyleProp<ViewStyle>` | — | Override for the root `View`. |
|
|
166
|
+
| `validateWhen` | `boolean` | `false` | When it becomes `true`, calls `validate()` on the engine. Bind to the outer snapshot's `hasAttemptedNext` when this shell is nested inside a step of an outer shell. |
|
|
167
|
+
| `restoreKey` | `string` | — | When set, the shell automatically saves its full state (data + active step) into the nearest outer `PathShell`'s data under this key on every change, and restores from it on remount. No-op on a top-level shell. |
|
|
168
|
+
| `services` | `unknown` | — | Arbitrary services object available to step components via `usePathContext<TData, TServices>().services`. |
|
|
164
169
|
|
|
165
170
|
### PathShellHandle and the restart() ref pattern
|
|
166
171
|
|
package/dist/index.d.ts
CHANGED
|
@@ -28,10 +28,14 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
28
28
|
previous: () => void;
|
|
29
29
|
/** Cancel the active path (or sub-path). */
|
|
30
30
|
cancel: () => void;
|
|
31
|
-
/** Jump directly to a step by ID, bypassing guards and shouldSkip. */
|
|
32
|
-
goToStep: (stepId: string
|
|
31
|
+
/** Jump directly to a step by ID, bypassing guards and shouldSkip. Pass `{ validateOnLeave: true }` to mark the departing step as attempted before navigating. */
|
|
32
|
+
goToStep: (stepId: string, options?: {
|
|
33
|
+
validateOnLeave?: boolean;
|
|
34
|
+
}) => void;
|
|
33
35
|
/** Jump directly to a step by ID, checking the current step's guard first. */
|
|
34
|
-
goToStepChecked: (stepId: string
|
|
36
|
+
goToStepChecked: (stepId: string, options?: {
|
|
37
|
+
validateOnLeave?: boolean;
|
|
38
|
+
}) => void;
|
|
35
39
|
/** Update a single data value. When `TData` is specified, key and value are type-checked. */
|
|
36
40
|
setData: <K extends string & keyof TData>(key: K, value: TData[K]) => void;
|
|
37
41
|
/** Reset the current step's data to what it was when the step was entered. */
|
|
@@ -42,6 +46,8 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
42
46
|
retry: () => void;
|
|
43
47
|
/** Pauses the path with intent to return. Emits `suspended`. All state is preserved. */
|
|
44
48
|
suspend: () => void;
|
|
49
|
+
/** Trigger inline validation on all steps without navigating. Sets `snapshot.hasValidated`. */
|
|
50
|
+
validate: () => void;
|
|
45
51
|
}
|
|
46
52
|
export type PathProviderProps = PropsWithChildren<{
|
|
47
53
|
onEvent?: (event: PathEvent) => void;
|
|
@@ -75,8 +81,12 @@ export interface PathShellActions {
|
|
|
75
81
|
next: () => void;
|
|
76
82
|
previous: () => void;
|
|
77
83
|
cancel: () => void;
|
|
78
|
-
goToStep: (stepId: string
|
|
79
|
-
|
|
84
|
+
goToStep: (stepId: string, options?: {
|
|
85
|
+
validateOnLeave?: boolean;
|
|
86
|
+
}) => void;
|
|
87
|
+
goToStepChecked: (stepId: string, options?: {
|
|
88
|
+
validateOnLeave?: boolean;
|
|
89
|
+
}) => void;
|
|
80
90
|
setData: (key: string, value: unknown) => void;
|
|
81
91
|
restart: () => void;
|
|
82
92
|
retry: () => void;
|
|
@@ -89,8 +99,14 @@ export interface PathShellProps {
|
|
|
89
99
|
engine?: PathEngine;
|
|
90
100
|
/** Map of step ID → React Native content. The shell renders `steps[snapshot.stepId]` for the current step. */
|
|
91
101
|
steps: Record<string, ReactNode>;
|
|
92
|
-
/** Initial data passed to engine.start(). */
|
|
102
|
+
/** Initial data passed to `engine.start()`. Used on first visit. Overridden by a stored snapshot when `restoreKey` is set. */
|
|
93
103
|
initialData?: PathData;
|
|
104
|
+
/**
|
|
105
|
+
* When set, this shell automatically saves its state into the nearest outer `PathShell`'s
|
|
106
|
+
* data under this key on every change, and restores from that stored state on remount.
|
|
107
|
+
* No-op when used on a top-level shell with no outer `PathShell` ancestor.
|
|
108
|
+
*/
|
|
109
|
+
restoreKey?: string;
|
|
94
110
|
/** If true, the path is started automatically on mount. Defaults to true. */
|
|
95
111
|
autoStart?: boolean;
|
|
96
112
|
/** Called when the path completes. */
|
|
@@ -113,13 +129,18 @@ export interface PathShellProps {
|
|
|
113
129
|
hideCancel?: boolean;
|
|
114
130
|
/** If true, hide the progress dots. Also hidden automatically when the path has only one step. */
|
|
115
131
|
hideProgress?: boolean;
|
|
132
|
+
/** If true, hide the footer (navigation buttons). Defaults to `false`. The error panel is still shown on async failure regardless of this prop. */
|
|
133
|
+
hideFooter?: boolean;
|
|
134
|
+
/** When true, calls `validate()` on the engine so all steps show inline errors simultaneously. Useful when this shell is nested inside a step of an outer shell: bind to the outer snapshot's `hasAttemptedNext`. */
|
|
135
|
+
validateWhen?: boolean;
|
|
116
136
|
/**
|
|
117
|
-
*
|
|
137
|
+
* Shell layout mode:
|
|
118
138
|
* - `"auto"` (default): "form" for single-step top-level paths, "wizard" otherwise.
|
|
119
|
-
* - `"wizard"`: Back on left, Cancel and Next on right.
|
|
120
|
-
* - `"form"`: Cancel on left, Next alone on right.
|
|
139
|
+
* - `"wizard"`: Progress header + Back on left, Cancel and Next on right.
|
|
140
|
+
* - `"form"`: Progress header + Cancel on left, Next alone on right.
|
|
141
|
+
* - `"tabs"`: No progress header, no footer. Use for tabbed interfaces with a custom tab bar inside the step body.
|
|
121
142
|
*/
|
|
122
|
-
|
|
143
|
+
layout?: "wizard" | "form" | "auto" | "tabs";
|
|
123
144
|
/**
|
|
124
145
|
* Controls whether the shell renders its auto-generated field-error summary box.
|
|
125
146
|
* - `"summary"` (default): Shell renders the labeled error list below the step body.
|
|
@@ -151,6 +172,12 @@ export interface PathShellProps {
|
|
|
151
172
|
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
152
173
|
*/
|
|
153
174
|
services?: unknown;
|
|
175
|
+
/**
|
|
176
|
+
* Content to render when `snapshot.status === "completed"` (i.e. after the
|
|
177
|
+
* path finishes with `completionBehaviour: "stayOnFinal"`). Defaults to a
|
|
178
|
+
* simple "All done." panel with a Restart button.
|
|
179
|
+
*/
|
|
180
|
+
completionContent?: ReactNode;
|
|
154
181
|
}
|
|
155
182
|
/**
|
|
156
183
|
* Default UI shell for React Native. Renders a progress dot indicator,
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ export function usePath(options) {
|
|
|
29
29
|
snapshotRef.current = event.snapshot;
|
|
30
30
|
}
|
|
31
31
|
else if (event.type === "completed" || event.type === "cancelled") {
|
|
32
|
-
snapshotRef.current =
|
|
32
|
+
snapshotRef.current = engine.snapshot();
|
|
33
33
|
}
|
|
34
34
|
onEventRef.current?.(event);
|
|
35
35
|
callback();
|
|
@@ -41,14 +41,15 @@ export function usePath(options) {
|
|
|
41
41
|
const next = useCallback(() => engine.next(), [engine]);
|
|
42
42
|
const previous = useCallback(() => engine.previous(), [engine]);
|
|
43
43
|
const cancel = useCallback(() => engine.cancel(), [engine]);
|
|
44
|
-
const goToStep = useCallback((stepId) => engine.goToStep(stepId), [engine]);
|
|
45
|
-
const goToStepChecked = useCallback((stepId) => engine.goToStepChecked(stepId), [engine]);
|
|
44
|
+
const goToStep = useCallback((stepId, options) => engine.goToStep(stepId, options), [engine]);
|
|
45
|
+
const goToStepChecked = useCallback((stepId, options) => engine.goToStepChecked(stepId, options), [engine]);
|
|
46
46
|
const setData = useCallback((key, value) => engine.setData(key, value), [engine]);
|
|
47
47
|
const resetStep = useCallback(() => engine.resetStep(), [engine]);
|
|
48
48
|
const restart = useCallback(() => engine.restart(), [engine]);
|
|
49
49
|
const retry = useCallback(() => engine.retry(), [engine]);
|
|
50
50
|
const suspend = useCallback(() => engine.suspend(), [engine]);
|
|
51
|
-
|
|
51
|
+
const validate = useCallback(() => engine.validate(), [engine]);
|
|
52
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart, retry, suspend, validate };
|
|
52
53
|
}
|
|
53
54
|
const PathContext = createContext(null);
|
|
54
55
|
/**
|
|
@@ -91,7 +92,8 @@ export function usePathContext() {
|
|
|
91
92
|
* />
|
|
92
93
|
* ```
|
|
93
94
|
*/
|
|
94
|
-
export const PathShell = forwardRef(function PathShell({ path: pathDef, engine: externalEngine, steps, initialData = {}, autoStart = true, onComplete, onCancel, onEvent, backLabel = "Previous", nextLabel = "Next", completeLabel = "Complete", loadingLabel, cancelLabel = "Cancel", hideCancel = false, hideProgress = false,
|
|
95
|
+
export const PathShell = forwardRef(function PathShell({ path: pathDef, engine: externalEngine, steps, initialData = {}, restoreKey, autoStart = true, onComplete, onCancel, onEvent, backLabel = "Previous", nextLabel = "Next", completeLabel = "Complete", loadingLabel, cancelLabel = "Cancel", hideCancel = false, hideProgress = false, hideFooter = false, layout = "auto", validationDisplay = "summary", renderHeader, renderFooter, style, keyboardVerticalOffset = 0, disableBodyScroll = false, services, validateWhen = false, completionContent, }, ref) {
|
|
96
|
+
const outerCtx = useContext(PathContext);
|
|
95
97
|
const pathReturn = usePath({
|
|
96
98
|
engine: externalEngine,
|
|
97
99
|
onEvent(event) {
|
|
@@ -100,9 +102,16 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
100
102
|
onComplete?.(event.data);
|
|
101
103
|
if (event.type === "cancelled")
|
|
102
104
|
onCancel?.(event.data);
|
|
105
|
+
if (restoreKey && outerCtx && event.type === "stateChanged") {
|
|
106
|
+
outerCtx.path.setData(restoreKey, event.snapshot);
|
|
107
|
+
}
|
|
103
108
|
},
|
|
104
109
|
});
|
|
105
|
-
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend } = pathReturn;
|
|
110
|
+
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend, validate } = pathReturn;
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (validateWhen)
|
|
113
|
+
validate();
|
|
114
|
+
}, [validateWhen, validate]);
|
|
106
115
|
useImperativeHandle(ref, () => ({
|
|
107
116
|
restart: () => restart(),
|
|
108
117
|
}));
|
|
@@ -110,7 +119,20 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
110
119
|
useEffect(() => {
|
|
111
120
|
if (autoStart && !startedRef.current && !externalEngine) {
|
|
112
121
|
startedRef.current = true;
|
|
113
|
-
|
|
122
|
+
let startData = initialData;
|
|
123
|
+
let restoreStepId;
|
|
124
|
+
if (restoreKey && outerCtx) {
|
|
125
|
+
const stored = outerCtx.path.snapshot?.data[restoreKey];
|
|
126
|
+
if (stored != null && typeof stored === "object" && "stepId" in stored) {
|
|
127
|
+
startData = stored.data;
|
|
128
|
+
if (stored.stepIndex > 0)
|
|
129
|
+
restoreStepId = stored.stepId;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const p = start(pathDef, startData);
|
|
133
|
+
if (restoreStepId) {
|
|
134
|
+
Promise.resolve(p).then(() => goToStep(restoreStepId));
|
|
135
|
+
}
|
|
114
136
|
}
|
|
115
137
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
138
|
}, []);
|
|
@@ -128,13 +150,18 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
128
150
|
if (!snapshot) {
|
|
129
151
|
return (_jsx(PathContext.Provider, { value: contextValue, children: _jsx(View, { style: [styles.shell, style], children: _jsxs(View, { style: styles.emptyState, children: [_jsx(Text, { style: styles.emptyText, children: "No active path." }), !autoStart && (_jsx(Pressable, { style: styles.btnPrimary, onPress: () => start(pathDef, initialData), children: _jsx(Text, { style: styles.btnPrimaryText, children: "Start" }) }))] }) }) }));
|
|
130
152
|
}
|
|
131
|
-
|
|
153
|
+
if (snapshot.status === "completed") {
|
|
154
|
+
return (_jsx(PathContext.Provider, { value: contextValue, children: _jsx(View, { style: [styles.shell, style], children: completionContent ?? (_jsxs(View, { style: styles.completionPanel, children: [_jsx(Text, { style: styles.completionMessage, children: "All done." }), _jsx(Pressable, { style: styles.btnPrimary, onPress: () => restart(), children: _jsx(Text, { style: styles.btnPrimaryText, children: "Start over" }) })] })) }) }));
|
|
155
|
+
}
|
|
156
|
+
const effectiveHideProgress = hideProgress || layout === "tabs";
|
|
157
|
+
const effectiveHideFooter = hideFooter || layout === "tabs";
|
|
158
|
+
const resolvedLayout = layout === "auto" || layout === "tabs"
|
|
132
159
|
? snapshot.stepCount === 1 && snapshot.nestingLevel === 0
|
|
133
160
|
? "form"
|
|
134
161
|
: "wizard"
|
|
135
|
-
:
|
|
162
|
+
: layout;
|
|
136
163
|
const isFormMode = resolvedLayout === "form";
|
|
137
|
-
const showProgress = !
|
|
164
|
+
const showProgress = !effectiveHideProgress && (snapshot.stepCount > 1 || snapshot.nestingLevel > 0);
|
|
138
165
|
return (_jsx(PathContext.Provider, { value: contextValue, children: _jsxs(KeyboardAvoidingView, { style: [styles.shell, style], behavior: Platform.OS === "ios" ? "padding" : undefined, keyboardVerticalOffset: keyboardVerticalOffset, children: [showProgress && (renderHeader
|
|
139
166
|
? renderHeader(snapshot)
|
|
140
167
|
: (_jsxs(View, { style: styles.header, children: [_jsx(View, { style: styles.stepper, children: snapshot.steps.map((step, i) => (_jsx(View, { style: [
|
|
@@ -147,19 +174,21 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
147
174
|
return title ? _jsx(Text, { style: styles.stepTitle, children: title }) : null;
|
|
148
175
|
})(), _jsx(View, { style: styles.track, children: _jsx(View, { style: [styles.trackFill, { width: `${snapshot.progress * 100}%` }] }) })] }))), disableBodyScroll
|
|
149
176
|
? _jsx(View, { style: [styles.body, styles.bodyContent], children: stepContent })
|
|
150
|
-
: _jsx(ScrollView, { style: styles.body, contentContainerStyle: styles.bodyContent, children: stepContent }), validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.fieldErrors).length > 0 && (_jsx(View, { style: styles.validation, children: Object.entries(snapshot.fieldErrors).map(([key, msg]) => (_jsxs(Text, { style: styles.validationItem, children: [key !== "_" && _jsxs(Text, { style: styles.validationLabel, children: [formatFieldKey(key), ": "] }), msg] }, key))) })), Object.keys(snapshot.fieldWarnings).length > 0 && (_jsx(View, { style: styles.warnings, children: Object.entries(snapshot.fieldWarnings).map(([key, msg]) => (_jsxs(Text, { style: styles.warningItem, children: [key !== "_" && _jsxs(Text, { style: styles.warningLabel, children: [formatFieldKey(key), ": "] }), msg] }, key))) })), validationDisplay !== "inline" && snapshot.hasAttemptedNext && snapshot.blockingError && (_jsx(Text, { style: styles.blockingError, children: snapshot.blockingError })), snapshot.status === "error" && snapshot.error
|
|
177
|
+
: _jsx(ScrollView, { style: styles.body, contentContainerStyle: styles.bodyContent, children: stepContent }), validationDisplay !== "inline" && (snapshot.hasAttemptedNext || snapshot.hasValidated) && Object.keys(snapshot.fieldErrors).length > 0 && (_jsx(View, { style: styles.validation, children: Object.entries(snapshot.fieldErrors).map(([key, msg]) => (_jsxs(Text, { style: styles.validationItem, children: [key !== "_" && _jsxs(Text, { style: styles.validationLabel, children: [formatFieldKey(key), ": "] }), msg] }, key))) })), Object.keys(snapshot.fieldWarnings).length > 0 && (_jsx(View, { style: styles.warnings, children: Object.entries(snapshot.fieldWarnings).map(([key, msg]) => (_jsxs(Text, { style: styles.warningItem, children: [key !== "_" && _jsxs(Text, { style: styles.warningLabel, children: [formatFieldKey(key), ": "] }), msg] }, key))) })), validationDisplay !== "inline" && (snapshot.hasAttemptedNext || snapshot.hasValidated) && snapshot.blockingError && (_jsx(Text, { style: styles.blockingError, children: snapshot.blockingError })), snapshot.status === "error" && snapshot.error
|
|
151
178
|
? (() => {
|
|
152
179
|
const err = snapshot.error;
|
|
153
180
|
const escalated = err.retryCount >= 2;
|
|
154
181
|
return (_jsxs(View, { style: styles.errorPanel, children: [_jsx(Text, { style: styles.errorTitle, children: escalated ? "Still having trouble." : "Something went wrong." }), _jsxs(Text, { style: styles.errorMessage, children: [errorPhaseMessage(err.phase), err.message ? ` ${err.message}` : ""] }), _jsxs(View, { style: styles.errorActions, children: [!escalated && (_jsx(Pressable, { style: [styles.btn, styles.btnRetry], onPress: retry, children: _jsx(Text, { style: styles.btnPrimaryText, children: "Try again" }) })), snapshot.hasPersistence && (_jsx(Pressable, { style: [styles.btn, escalated ? styles.btnRetry : styles.btnSuspend], onPress: suspend, children: _jsx(Text, { style: escalated ? styles.btnPrimaryText : styles.btnCancelText, children: "Save and come back later" }) })), escalated && !snapshot.hasPersistence && (_jsx(Pressable, { style: [styles.btn, styles.btnRetry], onPress: retry, children: _jsx(Text, { style: styles.btnPrimaryText, children: "Try again" }) }))] })] }));
|
|
155
182
|
})()
|
|
156
|
-
:
|
|
157
|
-
? renderFooter
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
183
|
+
: !effectiveHideFooter
|
|
184
|
+
? renderFooter
|
|
185
|
+
? renderFooter(snapshot, actions)
|
|
186
|
+
: (_jsxs(View, { style: styles.footer, children: [_jsxs(View, { style: styles.footerLeft, children: [isFormMode && !hideCancel && (_jsx(Pressable, { style: [styles.btn, styles.btnCancel, snapshot.status !== "idle" && styles.btnDisabled], onPress: cancel, disabled: snapshot.status !== "idle", children: _jsx(Text, { style: styles.btnCancelText, children: cancelLabel }) })), !isFormMode && !snapshot.isFirstStep && (_jsx(Pressable, { style: [styles.btn, styles.btnBack, (snapshot.status !== "idle" || !snapshot.canMovePrevious) && styles.btnDisabled], onPress: previous, disabled: snapshot.status !== "idle" || !snapshot.canMovePrevious, children: _jsxs(Text, { style: styles.btnBackText, children: ["\u2190 ", backLabel] }) }))] }), _jsxs(View, { style: styles.footerRight, children: [!isFormMode && !hideCancel && (_jsx(Pressable, { style: [styles.btn, styles.btnCancel, snapshot.status !== "idle" && styles.btnDisabled], onPress: cancel, disabled: snapshot.status !== "idle", children: _jsx(Text, { style: styles.btnCancelText, children: cancelLabel }) })), _jsx(Pressable, { style: [styles.btn, styles.btnPrimary, snapshot.status !== "idle" && styles.btnDisabled], onPress: next, disabled: snapshot.status !== "idle" || !snapshot.canMoveNext, children: snapshot.status !== "idle" && loadingLabel
|
|
187
|
+
? _jsx(Text, { style: styles.btnPrimaryText, children: loadingLabel })
|
|
188
|
+
: snapshot.status !== "idle"
|
|
189
|
+
? _jsx(ActivityIndicator, { size: "small", color: "#ffffff" })
|
|
190
|
+
: _jsx(Text, { style: styles.btnPrimaryText, children: snapshot.isLastStep ? completeLabel : `${nextLabel} →` }) })] })] }))
|
|
191
|
+
: null] }) }));
|
|
163
192
|
});
|
|
164
193
|
// ---------------------------------------------------------------------------
|
|
165
194
|
// Styles
|
|
@@ -182,6 +211,18 @@ const styles = StyleSheet.create({
|
|
|
182
211
|
color: "#6b7280",
|
|
183
212
|
marginBottom: 16,
|
|
184
213
|
},
|
|
214
|
+
completionPanel: {
|
|
215
|
+
flex: 1,
|
|
216
|
+
alignItems: "center",
|
|
217
|
+
justifyContent: "center",
|
|
218
|
+
padding: 24,
|
|
219
|
+
},
|
|
220
|
+
completionMessage: {
|
|
221
|
+
fontSize: 18,
|
|
222
|
+
fontWeight: "600",
|
|
223
|
+
color: "#1f2937",
|
|
224
|
+
marginBottom: 20,
|
|
225
|
+
},
|
|
185
226
|
header: {
|
|
186
227
|
paddingHorizontal: 20,
|
|
187
228
|
paddingTop: 16,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,UAAU,EAIV,cAAc,EACd,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AA6DjC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,OAAO,CAAoC,OAAwB;IACjF,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAEjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,UAAU,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAgC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,QAAoB,EAAE,EAAE,CACvB,MAAM,CAAC,SAAS,CAAC,CAAC,KAAgB,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9D,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,QAA+B,CAAC;QAC9D,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAgC,CAAC;QACxE,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,EACJ,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE9D,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,IAAyB,EAAE,cAAwB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,EAC1F,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAyB,EAAE,cAAwB,EAAE,EAAE,IAA8B,EAAE,EAAE,CACxF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAC9C,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,OAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtI,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,OAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpJ,MAAM,OAAO,GAAG,WAAW,CACzB,CAAiC,GAAM,EAAE,KAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAgB,CAAC,EAClG,CAAC,MAAM,CAAC,CAC0B,CAAC;IACrC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrJ,CAAC;AAWD,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAqB;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,OAAO,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO;QACL,GAAI,GAAG,CAAC,IAA8F;QACtG,QAAQ,EAAE,GAAG,CAAC,QAAqB;KACpC,CAAC;AACJ,CAAC;AA+GD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAkC,SAAS,SAAS,CAAC,EACtF,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,EACtB,KAAK,EACL,WAAW,GAAG,EAAE,EAChB,UAAU,EACV,SAAS,GAAG,IAAI,EAChB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,UAAU,EACtB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,UAAU,EAC1B,YAAY,EACZ,WAAW,GAAG,QAAQ,EACtB,UAAU,GAAG,KAAK,EAClB,YAAY,GAAG,KAAK,EACpB,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,MAAM,EACf,iBAAiB,GAAG,SAAS,EAC7B,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,sBAAsB,GAAG,CAAC,EAC1B,iBAAiB,GAAG,KAAK,EACzB,QAAQ,EACR,YAAY,GAAG,KAAK,EACpB,iBAAiB,GACF,EAAE,GAAG;IACpB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,OAAO,CAAC;QACzB,MAAM,EAAE,cAAc;QACtB,OAAO,CAAC,KAAK;YACX,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC3D,QAAQ,CAAC,IAAI,CAAC,OAA4D,CACzE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAC3B,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAEtI,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY;YAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;KACzB,CAAC,CAAC,CAAC;IAEJ,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,IAAI,SAAS,GAAa,WAAW,CAAC;YACtC,IAAI,aAAiC,CAAC;YACtC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAA6B,CAAC;gBACpF,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;oBACvE,SAAS,GAAG,MAAM,CAAC,IAAgB,CAAC;oBACpC,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;wBAAE,aAAa,GAAG,MAAM,CAAC,MAAgB,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACpC,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAc,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,2EAA2E;IAC3E,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC5F,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,YAAY,GAAqB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;IAExF,MAAM,OAAO,GAAqB;QAChC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO;QAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;QACxB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;KACzB,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACvC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,YAChC,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,gCAAwB,EACpD,CAAC,SAAS,IAAI,CACb,KAAC,SAAS,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,YAC7E,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,sBAAc,GACtC,CACb,IACI,GACF,GACc,CACxB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACvC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,YAC/B,iBAAiB,IAAI,CACpB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe,aACjC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,0BAAkB,EACvD,KAAC,SAAS,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,YAC3D,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,2BAAmB,GAC3C,IACP,CACR,GACI,GACc,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,YAAY,IAAI,MAAM,KAAK,MAAM,CAAC;IAChE,MAAM,mBAAmB,GAAG,UAAU,IAAI,MAAM,KAAK,MAAM,CAAC;IAC5D,MAAM,cAAc,GAClB,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;QACpC,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,IAAI,QAAQ,CAAC,YAAY,KAAK,CAAC;YACvD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,QAAQ;QACZ,CAAC,CAAC,MAAM,CAAC;IACb,MAAM,UAAU,GAAG,cAAc,KAAK,MAAM,CAAC;IAC7C,MAAM,YAAY,GAChB,CAAC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAElF,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACvC,MAAC,oBAAoB,IACnB,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAC5B,QAAQ,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACvD,sBAAsB,EAAE,sBAAsB,aAG7C,YAAY,IAAI,CACf,YAAY;oBACV,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACxB,CAAC,CAAC,CACA,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACxB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YACxB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/B,KAAC,IAAI,IAEH,KAAK,EAAE;wCACL,MAAM,CAAC,GAAG;wCACV,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY;wCAClD,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU;qCAC/C,YAED,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAClF,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAC7C,IATF,IAAI,CAAC,EAAE,CAUP,CACR,CAAC,GACG,EACN,CAAC,GAAG,EAAE;gCACL,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gCAC7D,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC;gCACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,YAAG,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;4BACtE,CAAC,CAAC,EAAE,EACJ,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,YACvB,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,QAAQ,GAAG,GAAG,GAAU,EAAE,CAAC,GAAI,GAC/E,IACF,CACR,CACJ,EAGA,iBAAiB;oBAChB,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,YAAG,WAAW,GAAQ;oBACtE,CAAC,CAAC,KAAC,UAAU,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,WAAW,YAAG,WAAW,GAAc,EAIxG,iBAAiB,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACzI,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CACxD,MAAC,IAAI,IAAW,KAAK,EAAE,MAAM,CAAC,cAAc,aACzC,GAAG,KAAK,GAAG,IAAI,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe,aAAG,cAAc,CAAC,GAAG,CAAC,UAAU,EAClF,GAAG,KAFK,GAAG,CAGP,CACR,CAAC,GACG,CACR,EAGA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CACjD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YACzB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAC1D,MAAC,IAAI,IAAW,KAAK,EAAE,MAAM,CAAC,WAAW,aACtC,GAAG,KAAK,GAAG,IAAI,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAAG,cAAc,CAAC,GAAG,CAAC,UAAU,EAC/E,GAAG,KAFK,GAAG,CAGP,CACR,CAAC,GACG,CACR,EAGA,iBAAiB,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,aAAa,IAAI,CACnH,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,YAAG,QAAQ,CAAC,aAAa,GAAQ,CACnE,EAGA,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK;oBAC5C,CAAC,CAAC,CAAC,GAAG,EAAE;wBACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAM,CAAC;wBAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;wBACtC,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,YAC3B,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,GACzD,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAC7B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAC9D,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAC7B,CAAC,SAAS,IAAI,CACb,KAAC,SAAS,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,YAC7D,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,0BAAkB,GAC1C,CACb,EACA,QAAQ,CAAC,cAAc,IAAI,CAC1B,KAAC,SAAS,IACR,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EACpE,OAAO,EAAE,OAAO,YAEhB,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,yCAE9D,GACG,CACb,EACA,SAAS,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CACxC,KAAC,SAAS,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,YAC7D,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,0BAAkB,GAC1C,CACb,IACI,IACF,CACR,CAAC;oBACJ,CAAC,CAAC,EAAE;oBACN,CAAC,CAAC,CAAC,mBAAmB;wBACtB,CAAC,CAAC,YAAY;4BACZ,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;4BACjC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACxB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC3B,UAAU,IAAI,CAAC,UAAU,IAAI,CAC5B,KAAC,SAAS,IACR,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,EACvF,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,YAEpC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,YAAG,WAAW,GAAQ,GAC7C,CACb,EACA,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CACvC,KAAC,SAAS,IACR,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EACpH,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,YAEjE,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,wBAAK,SAAS,IAAQ,GAC3C,CACb,IACI,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,aAC5B,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAC7B,KAAC,SAAS,IACR,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,EACvF,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,YAEpC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,YAAG,WAAW,GAAQ,GAC7C,CACb,EACD,KAAC,SAAS,IACR,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,EACxF,OAAO,EAAE,IAAI,EACb,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,YAE5D,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,YAAY;oDACzC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,YAAG,YAAY,GAAQ;oDAC3D,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM;wDAC1B,CAAC,CAAC,KAAC,iBAAiB,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG;wDACpD,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,cAAc,YAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAQ,GAE/F,IACP,IACF,CACR;wBACD,CAAC,CAAC,IAAI,IAEa,GACF,CACxB,CAAC;AACJ,CAAC,CAAC,CAAC;AAIH,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,QAAQ;KACnB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,EAAE;KACZ;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,EAAE;KACjB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,OAAO,EAAE,EAAE;KACZ;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,EAAE;KACjB;IACD,MAAM,EAAE;QACN,iBAAiB,EAAE,EAAE;QACrB,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,SAAS;KAC7B;IACD,OAAO,EAAE;QACP,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,CAAC;QACN,YAAY,EAAE,CAAC;KAChB;IACD,GAAG,EAAE;QACH,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,SAAS;QAC1B,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,SAAS;KAC3B;IACD,UAAU,EAAE;QACV,eAAe,EAAE,SAAS;KAC3B;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,SAAS;KACjB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,SAAS;KACjB;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,CAAC;KAChB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC;QACT,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,QAAQ;KACnB;IACD,SAAS,EAAE;QACT,MAAM,EAAE,CAAC;QACT,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,CAAC;KAChB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;IACD,WAAW,EAAE;QACX,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,gBAAgB,EAAE,EAAE;QACpB,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,SAAS;KAC3B;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,CAAC;KAChB;IACD,eAAe,EAAE;QACf,UAAU,EAAE,KAAK;KAClB;IACD,QAAQ,EAAE;QACR,gBAAgB,EAAE,EAAE;QACpB,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,SAAS;KAC3B;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,CAAC;KAChB;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;IACD,MAAM,EAAE;QACN,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;QAC/B,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,SAAS;QACzB,GAAG,EAAE,CAAC;KACP;IACD,UAAU,EAAE;QACV,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,CAAC;KACP;IACD,WAAW,EAAE;QACX,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,MAAM;KACnB;IACD,GAAG,EAAE;QACH,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,EAAE;KACb;IACD,WAAW,EAAE;QACX,OAAO,EAAE,GAAG;KACb;IACD,UAAU,EAAE;QACV,eAAe,EAAE,SAAS;KAC3B;IACD,cAAc,EAAE;QACd,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,eAAe,EAAE,SAAS;KAC3B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,eAAe,EAAE,aAAa;KAC/B;IACD,aAAa,EAAE;QACb,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,EAAE;KACb;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,CAAC;KACb;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,SAAS;KAC3B;IACD,UAAU,EAAE;QACV,eAAe,EAAE,aAAa;KAC/B;IACD,UAAU,EAAE;QACV,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,CAAC;KACP;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,SAAS;KACjB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,SAAS;KACjB;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,CAAC;QACN,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daltonr/pathwrite-react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "React Native adapter for @daltonr/pathwrite-core — hooks, context provider, and optional PathShell default UI.",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"react-native": ">=0.72.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@daltonr/pathwrite-core": "^0.
|
|
47
|
+
"@daltonr/pathwrite-core": "^0.12.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"react": "^18.3.1",
|
package/src/index.tsx
CHANGED
|
@@ -64,10 +64,10 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
64
64
|
previous: () => void;
|
|
65
65
|
/** Cancel the active path (or sub-path). */
|
|
66
66
|
cancel: () => void;
|
|
67
|
-
/** Jump directly to a step by ID, bypassing guards and shouldSkip. */
|
|
68
|
-
goToStep: (stepId: string) => void;
|
|
67
|
+
/** Jump directly to a step by ID, bypassing guards and shouldSkip. Pass `{ validateOnLeave: true }` to mark the departing step as attempted before navigating. */
|
|
68
|
+
goToStep: (stepId: string, options?: { validateOnLeave?: boolean }) => void;
|
|
69
69
|
/** Jump directly to a step by ID, checking the current step's guard first. */
|
|
70
|
-
goToStepChecked: (stepId: string) => void;
|
|
70
|
+
goToStepChecked: (stepId: string, options?: { validateOnLeave?: boolean }) => void;
|
|
71
71
|
/** Update a single data value. When `TData` is specified, key and value are type-checked. */
|
|
72
72
|
setData: <K extends string & keyof TData>(key: K, value: TData[K]) => void;
|
|
73
73
|
/** Reset the current step's data to what it was when the step was entered. */
|
|
@@ -78,6 +78,8 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
78
78
|
retry: () => void;
|
|
79
79
|
/** Pauses the path with intent to return. Emits `suspended`. All state is preserved. */
|
|
80
80
|
suspend: () => void;
|
|
81
|
+
/** Trigger inline validation on all steps without navigating. Sets `snapshot.hasValidated`. */
|
|
82
|
+
validate: () => void;
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
export type PathProviderProps = PropsWithChildren<{
|
|
@@ -120,7 +122,7 @@ export function usePath<TData extends PathData = PathData>(options?: UsePathOpti
|
|
|
120
122
|
if (event.type === "stateChanged" || event.type === "resumed") {
|
|
121
123
|
snapshotRef.current = event.snapshot as PathSnapshot<TData>;
|
|
122
124
|
} else if (event.type === "completed" || event.type === "cancelled") {
|
|
123
|
-
snapshotRef.current = null;
|
|
125
|
+
snapshotRef.current = engine.snapshot() as PathSnapshot<TData> | null;
|
|
124
126
|
}
|
|
125
127
|
onEventRef.current?.(event);
|
|
126
128
|
callback();
|
|
@@ -144,8 +146,8 @@ export function usePath<TData extends PathData = PathData>(options?: UsePathOpti
|
|
|
144
146
|
const next = useCallback(() => engine.next(), [engine]);
|
|
145
147
|
const previous = useCallback(() => engine.previous(), [engine]);
|
|
146
148
|
const cancel = useCallback(() => engine.cancel(), [engine]);
|
|
147
|
-
const goToStep = useCallback((stepId: string) => engine.goToStep(stepId), [engine]);
|
|
148
|
-
const goToStepChecked = useCallback((stepId: string) => engine.goToStepChecked(stepId), [engine]);
|
|
149
|
+
const goToStep = useCallback((stepId: string, options?: { validateOnLeave?: boolean }) => engine.goToStep(stepId, options), [engine]);
|
|
150
|
+
const goToStepChecked = useCallback((stepId: string, options?: { validateOnLeave?: boolean }) => engine.goToStepChecked(stepId, options), [engine]);
|
|
149
151
|
const setData = useCallback(
|
|
150
152
|
<K extends string & keyof TData>(key: K, value: TData[K]) => engine.setData(key, value as unknown),
|
|
151
153
|
[engine]
|
|
@@ -154,8 +156,9 @@ export function usePath<TData extends PathData = PathData>(options?: UsePathOpti
|
|
|
154
156
|
const restart = useCallback(() => engine.restart(), [engine]);
|
|
155
157
|
const retry = useCallback(() => engine.retry(), [engine]);
|
|
156
158
|
const suspend = useCallback(() => engine.suspend(), [engine]);
|
|
159
|
+
const validate = useCallback(() => engine.validate(), [engine]);
|
|
157
160
|
|
|
158
|
-
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart, retry, suspend };
|
|
161
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart, retry, suspend, validate };
|
|
159
162
|
}
|
|
160
163
|
|
|
161
164
|
// ---------------------------------------------------------------------------
|
|
@@ -208,8 +211,8 @@ export interface PathShellActions {
|
|
|
208
211
|
next: () => void;
|
|
209
212
|
previous: () => void;
|
|
210
213
|
cancel: () => void;
|
|
211
|
-
goToStep: (stepId: string) => void;
|
|
212
|
-
goToStepChecked: (stepId: string) => void;
|
|
214
|
+
goToStep: (stepId: string, options?: { validateOnLeave?: boolean }) => void;
|
|
215
|
+
goToStepChecked: (stepId: string, options?: { validateOnLeave?: boolean }) => void;
|
|
213
216
|
setData: (key: string, value: unknown) => void;
|
|
214
217
|
restart: () => void;
|
|
215
218
|
retry: () => void;
|
|
@@ -223,8 +226,14 @@ export interface PathShellProps {
|
|
|
223
226
|
engine?: PathEngine;
|
|
224
227
|
/** Map of step ID → React Native content. The shell renders `steps[snapshot.stepId]` for the current step. */
|
|
225
228
|
steps: Record<string, ReactNode>;
|
|
226
|
-
/** Initial data passed to engine.start(). */
|
|
229
|
+
/** Initial data passed to `engine.start()`. Used on first visit. Overridden by a stored snapshot when `restoreKey` is set. */
|
|
227
230
|
initialData?: PathData;
|
|
231
|
+
/**
|
|
232
|
+
* When set, this shell automatically saves its state into the nearest outer `PathShell`'s
|
|
233
|
+
* data under this key on every change, and restores from that stored state on remount.
|
|
234
|
+
* No-op when used on a top-level shell with no outer `PathShell` ancestor.
|
|
235
|
+
*/
|
|
236
|
+
restoreKey?: string;
|
|
228
237
|
/** If true, the path is started automatically on mount. Defaults to true. */
|
|
229
238
|
autoStart?: boolean;
|
|
230
239
|
/** Called when the path completes. */
|
|
@@ -247,13 +256,18 @@ export interface PathShellProps {
|
|
|
247
256
|
hideCancel?: boolean;
|
|
248
257
|
/** If true, hide the progress dots. Also hidden automatically when the path has only one step. */
|
|
249
258
|
hideProgress?: boolean;
|
|
259
|
+
/** If true, hide the footer (navigation buttons). Defaults to `false`. The error panel is still shown on async failure regardless of this prop. */
|
|
260
|
+
hideFooter?: boolean;
|
|
261
|
+
/** When true, calls `validate()` on the engine so all steps show inline errors simultaneously. Useful when this shell is nested inside a step of an outer shell: bind to the outer snapshot's `hasAttemptedNext`. */
|
|
262
|
+
validateWhen?: boolean;
|
|
250
263
|
/**
|
|
251
|
-
*
|
|
264
|
+
* Shell layout mode:
|
|
252
265
|
* - `"auto"` (default): "form" for single-step top-level paths, "wizard" otherwise.
|
|
253
|
-
* - `"wizard"`: Back on left, Cancel and Next on right.
|
|
254
|
-
* - `"form"`: Cancel on left, Next alone on right.
|
|
266
|
+
* - `"wizard"`: Progress header + Back on left, Cancel and Next on right.
|
|
267
|
+
* - `"form"`: Progress header + Cancel on left, Next alone on right.
|
|
268
|
+
* - `"tabs"`: No progress header, no footer. Use for tabbed interfaces with a custom tab bar inside the step body.
|
|
255
269
|
*/
|
|
256
|
-
|
|
270
|
+
layout?: "wizard" | "form" | "auto" | "tabs";
|
|
257
271
|
/**
|
|
258
272
|
* Controls whether the shell renders its auto-generated field-error summary box.
|
|
259
273
|
* - `"summary"` (default): Shell renders the labeled error list below the step body.
|
|
@@ -285,6 +299,12 @@ export interface PathShellProps {
|
|
|
285
299
|
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
286
300
|
*/
|
|
287
301
|
services?: unknown;
|
|
302
|
+
/**
|
|
303
|
+
* Content to render when `snapshot.status === "completed"` (i.e. after the
|
|
304
|
+
* path finishes with `completionBehaviour: "stayOnFinal"`). Defaults to a
|
|
305
|
+
* simple "All done." panel with a Restart button.
|
|
306
|
+
*/
|
|
307
|
+
completionContent?: ReactNode;
|
|
288
308
|
}
|
|
289
309
|
|
|
290
310
|
/**
|
|
@@ -308,6 +328,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
308
328
|
engine: externalEngine,
|
|
309
329
|
steps,
|
|
310
330
|
initialData = {},
|
|
331
|
+
restoreKey,
|
|
311
332
|
autoStart = true,
|
|
312
333
|
onComplete,
|
|
313
334
|
onCancel,
|
|
@@ -319,7 +340,8 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
319
340
|
cancelLabel = "Cancel",
|
|
320
341
|
hideCancel = false,
|
|
321
342
|
hideProgress = false,
|
|
322
|
-
|
|
343
|
+
hideFooter = false,
|
|
344
|
+
layout = "auto",
|
|
323
345
|
validationDisplay = "summary",
|
|
324
346
|
renderHeader,
|
|
325
347
|
renderFooter,
|
|
@@ -327,17 +349,30 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
327
349
|
keyboardVerticalOffset = 0,
|
|
328
350
|
disableBodyScroll = false,
|
|
329
351
|
services,
|
|
352
|
+
validateWhen = false,
|
|
353
|
+
completionContent,
|
|
330
354
|
}: PathShellProps, ref): ReactElement {
|
|
355
|
+
const outerCtx = useContext(PathContext);
|
|
356
|
+
|
|
331
357
|
const pathReturn = usePath({
|
|
332
358
|
engine: externalEngine,
|
|
333
359
|
onEvent(event) {
|
|
334
360
|
onEvent?.(event);
|
|
335
361
|
if (event.type === "completed") onComplete?.(event.data);
|
|
336
362
|
if (event.type === "cancelled") onCancel?.(event.data);
|
|
363
|
+
if (restoreKey && outerCtx && event.type === "stateChanged") {
|
|
364
|
+
(outerCtx.path.setData as unknown as (key: string, value: unknown) => void)(
|
|
365
|
+
restoreKey, event.snapshot
|
|
366
|
+
);
|
|
367
|
+
}
|
|
337
368
|
},
|
|
338
369
|
});
|
|
339
370
|
|
|
340
|
-
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend } = pathReturn;
|
|
371
|
+
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend, validate } = pathReturn;
|
|
372
|
+
|
|
373
|
+
useEffect(() => {
|
|
374
|
+
if (validateWhen) validate();
|
|
375
|
+
}, [validateWhen, validate]);
|
|
341
376
|
|
|
342
377
|
useImperativeHandle(ref, () => ({
|
|
343
378
|
restart: () => restart(),
|
|
@@ -347,7 +382,19 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
347
382
|
useEffect(() => {
|
|
348
383
|
if (autoStart && !startedRef.current && !externalEngine) {
|
|
349
384
|
startedRef.current = true;
|
|
350
|
-
|
|
385
|
+
let startData: PathData = initialData;
|
|
386
|
+
let restoreStepId: string | undefined;
|
|
387
|
+
if (restoreKey && outerCtx) {
|
|
388
|
+
const stored = outerCtx.path.snapshot?.data[restoreKey] as PathSnapshot | undefined;
|
|
389
|
+
if (stored != null && typeof stored === "object" && "stepId" in stored) {
|
|
390
|
+
startData = stored.data as PathData;
|
|
391
|
+
if (stored.stepIndex > 0) restoreStepId = stored.stepId as string;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const p = start(pathDef, startData);
|
|
395
|
+
if (restoreStepId) {
|
|
396
|
+
Promise.resolve(p).then(() => goToStep(restoreStepId!));
|
|
397
|
+
}
|
|
351
398
|
}
|
|
352
399
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
353
400
|
}, []);
|
|
@@ -383,15 +430,34 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
383
430
|
);
|
|
384
431
|
}
|
|
385
432
|
|
|
433
|
+
if (snapshot.status === "completed") {
|
|
434
|
+
return (
|
|
435
|
+
<PathContext.Provider value={contextValue}>
|
|
436
|
+
<View style={[styles.shell, style]}>
|
|
437
|
+
{completionContent ?? (
|
|
438
|
+
<View style={styles.completionPanel}>
|
|
439
|
+
<Text style={styles.completionMessage}>All done.</Text>
|
|
440
|
+
<Pressable style={styles.btnPrimary} onPress={() => restart()}>
|
|
441
|
+
<Text style={styles.btnPrimaryText}>Start over</Text>
|
|
442
|
+
</Pressable>
|
|
443
|
+
</View>
|
|
444
|
+
)}
|
|
445
|
+
</View>
|
|
446
|
+
</PathContext.Provider>
|
|
447
|
+
);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
const effectiveHideProgress = hideProgress || layout === "tabs";
|
|
451
|
+
const effectiveHideFooter = hideFooter || layout === "tabs";
|
|
386
452
|
const resolvedLayout =
|
|
387
|
-
|
|
453
|
+
layout === "auto" || layout === "tabs"
|
|
388
454
|
? snapshot.stepCount === 1 && snapshot.nestingLevel === 0
|
|
389
455
|
? "form"
|
|
390
456
|
: "wizard"
|
|
391
|
-
:
|
|
457
|
+
: layout;
|
|
392
458
|
const isFormMode = resolvedLayout === "form";
|
|
393
459
|
const showProgress =
|
|
394
|
-
!
|
|
460
|
+
!effectiveHideProgress && (snapshot.stepCount > 1 || snapshot.nestingLevel > 0);
|
|
395
461
|
|
|
396
462
|
return (
|
|
397
463
|
<PathContext.Provider value={contextValue}>
|
|
@@ -441,7 +507,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
441
507
|
}
|
|
442
508
|
|
|
443
509
|
{/* Validation messages */}
|
|
444
|
-
{validationDisplay !== "inline" && snapshot.hasAttemptedNext && Object.keys(snapshot.fieldErrors).length > 0 && (
|
|
510
|
+
{validationDisplay !== "inline" && (snapshot.hasAttemptedNext || snapshot.hasValidated) && Object.keys(snapshot.fieldErrors).length > 0 && (
|
|
445
511
|
<View style={styles.validation}>
|
|
446
512
|
{Object.entries(snapshot.fieldErrors).map(([key, msg]) => (
|
|
447
513
|
<Text key={key} style={styles.validationItem}>
|
|
@@ -465,7 +531,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
465
531
|
)}
|
|
466
532
|
|
|
467
533
|
{/* Blocking error — guard returned { allowed: false, reason } */}
|
|
468
|
-
{validationDisplay !== "inline" && snapshot.hasAttemptedNext && snapshot.blockingError && (
|
|
534
|
+
{validationDisplay !== "inline" && (snapshot.hasAttemptedNext || snapshot.hasValidated) && snapshot.blockingError && (
|
|
469
535
|
<Text style={styles.blockingError}>{snapshot.blockingError}</Text>
|
|
470
536
|
)}
|
|
471
537
|
|
|
@@ -507,9 +573,10 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
507
573
|
</View>
|
|
508
574
|
);
|
|
509
575
|
})()
|
|
510
|
-
:
|
|
511
|
-
? renderFooter
|
|
512
|
-
|
|
576
|
+
: !effectiveHideFooter
|
|
577
|
+
? renderFooter
|
|
578
|
+
? renderFooter(snapshot, actions)
|
|
579
|
+
: (
|
|
513
580
|
<View style={styles.footer}>
|
|
514
581
|
<View style={styles.footerLeft}>
|
|
515
582
|
{isFormMode && !hideCancel && (
|
|
@@ -556,6 +623,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
556
623
|
</View>
|
|
557
624
|
</View>
|
|
558
625
|
)
|
|
626
|
+
: null
|
|
559
627
|
}
|
|
560
628
|
</KeyboardAvoidingView>
|
|
561
629
|
</PathContext.Provider>
|
|
@@ -586,6 +654,18 @@ const styles = StyleSheet.create({
|
|
|
586
654
|
color: "#6b7280",
|
|
587
655
|
marginBottom: 16,
|
|
588
656
|
},
|
|
657
|
+
completionPanel: {
|
|
658
|
+
flex: 1,
|
|
659
|
+
alignItems: "center",
|
|
660
|
+
justifyContent: "center",
|
|
661
|
+
padding: 24,
|
|
662
|
+
},
|
|
663
|
+
completionMessage: {
|
|
664
|
+
fontSize: 18,
|
|
665
|
+
fontWeight: "600",
|
|
666
|
+
color: "#1f2937",
|
|
667
|
+
marginBottom: 20,
|
|
668
|
+
},
|
|
589
669
|
header: {
|
|
590
670
|
paddingHorizontal: 20,
|
|
591
671
|
paddingTop: 16,
|