@daltonr/pathwrite-react-native 0.9.0 → 0.10.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.d.ts +25 -4
- package/dist/index.js +67 -25
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.tsx +139 -30
package/dist/index.d.ts
CHANGED
|
@@ -38,22 +38,34 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
38
38
|
resetStep: () => void;
|
|
39
39
|
/** Tear down any active path and immediately start the given path fresh. */
|
|
40
40
|
restart: () => void;
|
|
41
|
+
/** Re-runs the operation that set `snapshot.error`. Increments `retryCount` on repeated failure. No-op when there is no pending error. */
|
|
42
|
+
retry: () => void;
|
|
43
|
+
/** Pauses the path with intent to return. Emits `suspended`. All state is preserved. */
|
|
44
|
+
suspend: () => void;
|
|
41
45
|
}
|
|
42
46
|
export type PathProviderProps = PropsWithChildren<{
|
|
43
47
|
onEvent?: (event: PathEvent) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Services object passed through context to all step components.
|
|
50
|
+
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
51
|
+
*/
|
|
52
|
+
services?: unknown;
|
|
44
53
|
}>;
|
|
45
54
|
export declare function usePath<TData extends PathData = PathData>(options?: UsePathOptions): UsePathReturn<TData>;
|
|
46
55
|
/**
|
|
47
56
|
* Provides a single `usePath` instance to all descendants.
|
|
48
57
|
* Consume with `usePathContext()`.
|
|
49
58
|
*/
|
|
50
|
-
export declare function PathProvider({ children, onEvent }: PathProviderProps): ReactElement;
|
|
59
|
+
export declare function PathProvider({ children, onEvent, services }: PathProviderProps): ReactElement;
|
|
51
60
|
/**
|
|
52
|
-
* Access the nearest `PathProvider`'s path instance.
|
|
53
|
-
* Throws if used outside of a `<PathProvider>`.
|
|
61
|
+
* Access the nearest `PathProvider`'s path instance and optional services object.
|
|
62
|
+
* Throws if used outside of a `<PathProvider>` or `<PathShell>`.
|
|
63
|
+
*
|
|
64
|
+
* `TData` narrows `snapshot.data`; `TServices` types the `services` value.
|
|
54
65
|
*/
|
|
55
|
-
export declare function usePathContext<TData extends PathData = PathData>(): Omit<UsePathReturn<TData>, "snapshot"> & {
|
|
66
|
+
export declare function usePathContext<TData extends PathData = PathData, TServices = unknown>(): Omit<UsePathReturn<TData>, "snapshot"> & {
|
|
56
67
|
snapshot: PathSnapshot<TData>;
|
|
68
|
+
services: TServices;
|
|
57
69
|
};
|
|
58
70
|
export interface PathShellHandle {
|
|
59
71
|
/** Restart the shell's current path with its original `initialData`, without unmounting. */
|
|
@@ -67,6 +79,8 @@ export interface PathShellActions {
|
|
|
67
79
|
goToStepChecked: (stepId: string) => void;
|
|
68
80
|
setData: (key: string, value: unknown) => void;
|
|
69
81
|
restart: () => void;
|
|
82
|
+
retry: () => void;
|
|
83
|
+
suspend: () => void;
|
|
70
84
|
}
|
|
71
85
|
export interface PathShellProps {
|
|
72
86
|
/** The path definition to drive. */
|
|
@@ -91,6 +105,8 @@ export interface PathShellProps {
|
|
|
91
105
|
nextLabel?: string;
|
|
92
106
|
/** Label for the Complete button (last step). Defaults to "Complete". */
|
|
93
107
|
completeLabel?: string;
|
|
108
|
+
/** Label shown on the Next/Complete button while an async operation is in progress. When undefined, an ActivityIndicator spinner is shown instead. */
|
|
109
|
+
loadingLabel?: string;
|
|
94
110
|
/** Label for the Cancel button. Defaults to "Cancel". */
|
|
95
111
|
cancelLabel?: string;
|
|
96
112
|
/** If true, hide the Cancel button. */
|
|
@@ -130,6 +146,11 @@ export interface PathShellProps {
|
|
|
130
146
|
* warning. The step is then responsible for managing its own scroll.
|
|
131
147
|
*/
|
|
132
148
|
disableBodyScroll?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Services object passed through context to all step components.
|
|
151
|
+
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
152
|
+
*/
|
|
153
|
+
services?: unknown;
|
|
133
154
|
}
|
|
134
155
|
/**
|
|
135
156
|
* Default UI shell for React Native. Renders a progress dot indicator,
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, createElement, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useSyncExternalStore, } from "react";
|
|
3
3
|
import { View, Text, Pressable, ScrollView, StyleSheet, ActivityIndicator, KeyboardAvoidingView, Platform, } from "react-native";
|
|
4
|
-
import { PathEngine, } from "@daltonr/pathwrite-core";
|
|
4
|
+
import { PathEngine, formatFieldKey, errorPhaseMessage, } from "@daltonr/pathwrite-core";
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
// usePath hook
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
@@ -46,30 +46,34 @@ export function usePath(options) {
|
|
|
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
|
+
const suspend = useCallback(() => engine.suspend(), [engine]);
|
|
51
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart, retry, suspend };
|
|
50
52
|
}
|
|
51
|
-
// ---------------------------------------------------------------------------
|
|
52
|
-
// Context + Provider
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
53
|
const PathContext = createContext(null);
|
|
55
54
|
/**
|
|
56
55
|
* Provides a single `usePath` instance to all descendants.
|
|
57
56
|
* Consume with `usePathContext()`.
|
|
58
57
|
*/
|
|
59
|
-
export function PathProvider({ children, onEvent }) {
|
|
58
|
+
export function PathProvider({ children, onEvent, services }) {
|
|
60
59
|
const path = usePath({ onEvent });
|
|
61
|
-
return createElement(PathContext.Provider, { value: path }, children);
|
|
60
|
+
return createElement(PathContext.Provider, { value: { path, services: services ?? null } }, children);
|
|
62
61
|
}
|
|
63
62
|
/**
|
|
64
|
-
* Access the nearest `PathProvider`'s path instance.
|
|
65
|
-
* Throws if used outside of a `<PathProvider>`.
|
|
63
|
+
* Access the nearest `PathProvider`'s path instance and optional services object.
|
|
64
|
+
* Throws if used outside of a `<PathProvider>` or `<PathShell>`.
|
|
65
|
+
*
|
|
66
|
+
* `TData` narrows `snapshot.data`; `TServices` types the `services` value.
|
|
66
67
|
*/
|
|
67
68
|
export function usePathContext() {
|
|
68
69
|
const ctx = useContext(PathContext);
|
|
69
70
|
if (ctx === null) {
|
|
70
71
|
throw new Error("usePathContext must be used within a <PathProvider>.");
|
|
71
72
|
}
|
|
72
|
-
return
|
|
73
|
+
return {
|
|
74
|
+
...ctx.path,
|
|
75
|
+
services: ctx.services
|
|
76
|
+
};
|
|
73
77
|
}
|
|
74
78
|
/**
|
|
75
79
|
* Default UI shell for React Native. Renders a progress dot indicator,
|
|
@@ -87,7 +91,7 @@ export function usePathContext() {
|
|
|
87
91
|
* />
|
|
88
92
|
* ```
|
|
89
93
|
*/
|
|
90
|
-
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", validationDisplay = "summary", renderHeader, renderFooter, style, keyboardVerticalOffset = 0, disableBodyScroll = false, }, ref) {
|
|
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, footerLayout = "auto", validationDisplay = "summary", renderHeader, renderFooter, style, keyboardVerticalOffset = 0, disableBodyScroll = false, services, }, ref) {
|
|
91
95
|
const pathReturn = usePath({
|
|
92
96
|
engine: externalEngine,
|
|
93
97
|
onEvent(event) {
|
|
@@ -98,7 +102,7 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
98
102
|
onCancel?.(event.data);
|
|
99
103
|
},
|
|
100
104
|
});
|
|
101
|
-
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart } = pathReturn;
|
|
105
|
+
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend } = pathReturn;
|
|
102
106
|
useImperativeHandle(ref, () => ({
|
|
103
107
|
restart: () => restart(),
|
|
104
108
|
}));
|
|
@@ -114,12 +118,15 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
114
118
|
const stepContent = snapshot
|
|
115
119
|
? ((snapshot.formId ? steps[snapshot.formId] : undefined) ?? steps[snapshot.stepId] ?? null)
|
|
116
120
|
: null;
|
|
121
|
+
const contextValue = { path: pathReturn, services: services ?? null };
|
|
117
122
|
const actions = {
|
|
118
123
|
next, previous, cancel, goToStep, goToStepChecked, setData,
|
|
119
124
|
restart: () => restart(),
|
|
125
|
+
retry: () => retry(),
|
|
126
|
+
suspend: () => suspend(),
|
|
120
127
|
};
|
|
121
128
|
if (!snapshot) {
|
|
122
|
-
return (_jsx(PathContext.Provider, { value:
|
|
129
|
+
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" }) }))] }) }) }));
|
|
123
130
|
}
|
|
124
131
|
const resolvedLayout = footerLayout === "auto"
|
|
125
132
|
? snapshot.stepCount === 1 && snapshot.nestingLevel === 0
|
|
@@ -128,7 +135,7 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
128
135
|
: footerLayout;
|
|
129
136
|
const isFormMode = resolvedLayout === "form";
|
|
130
137
|
const showProgress = !hideProgress && (snapshot.stepCount > 1 || snapshot.nestingLevel > 0);
|
|
131
|
-
return (_jsx(PathContext.Provider, { value:
|
|
138
|
+
return (_jsx(PathContext.Provider, { value: contextValue, children: _jsxs(KeyboardAvoidingView, { style: [styles.shell, style], behavior: Platform.OS === "ios" ? "padding" : undefined, keyboardVerticalOffset: keyboardVerticalOffset, children: [showProgress && (renderHeader
|
|
132
139
|
? renderHeader(snapshot)
|
|
133
140
|
: (_jsxs(View, { style: styles.header, children: [_jsx(View, { style: styles.stepper, children: snapshot.steps.map((step, i) => (_jsx(View, { style: [
|
|
134
141
|
styles.dot,
|
|
@@ -140,19 +147,21 @@ export const PathShell = forwardRef(function PathShell({ path: pathDef, engine:
|
|
|
140
147
|
return title ? _jsx(Text, { style: styles.stepTitle, children: title }) : null;
|
|
141
148
|
})(), _jsx(View, { style: styles.track, children: _jsx(View, { style: [styles.trackFill, { width: `${snapshot.progress * 100}%` }] }) })] }))), disableBodyScroll
|
|
142
149
|
? _jsx(View, { style: [styles.body, styles.bodyContent], children: stepContent })
|
|
143
|
-
: _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))) })),
|
|
144
|
-
?
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
151
|
+
? (() => {
|
|
152
|
+
const err = snapshot.error;
|
|
153
|
+
const escalated = err.retryCount >= 2;
|
|
154
|
+
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
|
+
})()
|
|
156
|
+
: renderFooter
|
|
157
|
+
? renderFooter(snapshot, actions)
|
|
158
|
+
: (_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
|
|
159
|
+
? _jsx(Text, { style: styles.btnPrimaryText, children: loadingLabel })
|
|
160
|
+
: snapshot.status !== "idle"
|
|
161
|
+
? _jsx(ActivityIndicator, { size: "small", color: "#ffffff" })
|
|
162
|
+
: _jsx(Text, { style: styles.btnPrimaryText, children: snapshot.isLastStep ? completeLabel : `${nextLabel} →` }) })] })] }))] }) }));
|
|
148
163
|
});
|
|
149
164
|
// ---------------------------------------------------------------------------
|
|
150
|
-
// Helpers
|
|
151
|
-
// ---------------------------------------------------------------------------
|
|
152
|
-
function formatFieldKey(key) {
|
|
153
|
-
return key.replace(/([A-Z])/g, " $1").replace(/^./, (c) => c.toUpperCase()).trim();
|
|
154
|
-
}
|
|
155
|
-
// ---------------------------------------------------------------------------
|
|
156
165
|
// Styles
|
|
157
166
|
// ---------------------------------------------------------------------------
|
|
158
167
|
const styles = StyleSheet.create({
|
|
@@ -317,5 +326,38 @@ const styles = StyleSheet.create({
|
|
|
317
326
|
fontWeight: "500",
|
|
318
327
|
fontSize: 15,
|
|
319
328
|
},
|
|
329
|
+
blockingError: {
|
|
330
|
+
fontSize: 13,
|
|
331
|
+
color: "#dc2626",
|
|
332
|
+
marginTop: 4,
|
|
333
|
+
},
|
|
334
|
+
btnRetry: {
|
|
335
|
+
backgroundColor: "#dc2626",
|
|
336
|
+
},
|
|
337
|
+
btnSuspend: {
|
|
338
|
+
backgroundColor: "transparent",
|
|
339
|
+
},
|
|
340
|
+
errorPanel: {
|
|
341
|
+
backgroundColor: "#fef2f2",
|
|
342
|
+
borderRadius: 10,
|
|
343
|
+
borderWidth: 1,
|
|
344
|
+
borderColor: "#fecaca",
|
|
345
|
+
padding: 16,
|
|
346
|
+
gap: 8,
|
|
347
|
+
},
|
|
348
|
+
errorTitle: {
|
|
349
|
+
fontSize: 14,
|
|
350
|
+
fontWeight: "600",
|
|
351
|
+
color: "#dc2626",
|
|
352
|
+
},
|
|
353
|
+
errorMessage: {
|
|
354
|
+
fontSize: 13,
|
|
355
|
+
color: "#6b7280",
|
|
356
|
+
},
|
|
357
|
+
errorActions: {
|
|
358
|
+
flexDirection: "row",
|
|
359
|
+
gap: 8,
|
|
360
|
+
marginTop: 4,
|
|
361
|
+
},
|
|
320
362
|
});
|
|
321
363
|
//# sourceMappingURL=index.js.map
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daltonr/pathwrite-react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.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.10.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"react": "^18.3.1",
|
package/src/index.tsx
CHANGED
|
@@ -28,6 +28,8 @@ import {
|
|
|
28
28
|
PathEvent,
|
|
29
29
|
PathSnapshot,
|
|
30
30
|
ProgressLayout,
|
|
31
|
+
formatFieldKey,
|
|
32
|
+
errorPhaseMessage,
|
|
31
33
|
} from "@daltonr/pathwrite-core";
|
|
32
34
|
|
|
33
35
|
// ---------------------------------------------------------------------------
|
|
@@ -72,10 +74,19 @@ export interface UsePathReturn<TData extends PathData = PathData> {
|
|
|
72
74
|
resetStep: () => void;
|
|
73
75
|
/** Tear down any active path and immediately start the given path fresh. */
|
|
74
76
|
restart: () => void;
|
|
77
|
+
/** Re-runs the operation that set `snapshot.error`. Increments `retryCount` on repeated failure. No-op when there is no pending error. */
|
|
78
|
+
retry: () => void;
|
|
79
|
+
/** Pauses the path with intent to return. Emits `suspended`. All state is preserved. */
|
|
80
|
+
suspend: () => void;
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
export type PathProviderProps = PropsWithChildren<{
|
|
78
84
|
onEvent?: (event: PathEvent) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Services object passed through context to all step components.
|
|
87
|
+
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
88
|
+
*/
|
|
89
|
+
services?: unknown;
|
|
79
90
|
}>;
|
|
80
91
|
|
|
81
92
|
// ---------------------------------------------------------------------------
|
|
@@ -141,35 +152,47 @@ export function usePath<TData extends PathData = PathData>(options?: UsePathOpti
|
|
|
141
152
|
) as UsePathReturn<TData>["setData"];
|
|
142
153
|
const resetStep = useCallback(() => engine.resetStep(), [engine]);
|
|
143
154
|
const restart = useCallback(() => engine.restart(), [engine]);
|
|
155
|
+
const retry = useCallback(() => engine.retry(), [engine]);
|
|
156
|
+
const suspend = useCallback(() => engine.suspend(), [engine]);
|
|
144
157
|
|
|
145
|
-
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart };
|
|
158
|
+
return { snapshot, start, startSubPath, next, previous, cancel, goToStep, goToStepChecked, setData, resetStep, restart, retry, suspend };
|
|
146
159
|
}
|
|
147
160
|
|
|
148
161
|
// ---------------------------------------------------------------------------
|
|
149
162
|
// Context + Provider
|
|
150
163
|
// ---------------------------------------------------------------------------
|
|
151
164
|
|
|
152
|
-
|
|
165
|
+
interface PathContextValue {
|
|
166
|
+
path: UsePathReturn;
|
|
167
|
+
services: unknown;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const PathContext = createContext<PathContextValue | null>(null);
|
|
153
171
|
|
|
154
172
|
/**
|
|
155
173
|
* Provides a single `usePath` instance to all descendants.
|
|
156
174
|
* Consume with `usePathContext()`.
|
|
157
175
|
*/
|
|
158
|
-
export function PathProvider({ children, onEvent }: PathProviderProps): ReactElement {
|
|
176
|
+
export function PathProvider({ children, onEvent, services }: PathProviderProps): ReactElement {
|
|
159
177
|
const path = usePath({ onEvent });
|
|
160
|
-
return createElement(PathContext.Provider, { value: path }, children);
|
|
178
|
+
return createElement(PathContext.Provider, { value: { path, services: services ?? null } }, children);
|
|
161
179
|
}
|
|
162
180
|
|
|
163
181
|
/**
|
|
164
|
-
* Access the nearest `PathProvider`'s path instance.
|
|
165
|
-
* Throws if used outside of a `<PathProvider>`.
|
|
182
|
+
* Access the nearest `PathProvider`'s path instance and optional services object.
|
|
183
|
+
* Throws if used outside of a `<PathProvider>` or `<PathShell>`.
|
|
184
|
+
*
|
|
185
|
+
* `TData` narrows `snapshot.data`; `TServices` types the `services` value.
|
|
166
186
|
*/
|
|
167
|
-
export function usePathContext<TData extends PathData = PathData>(): Omit<UsePathReturn<TData>, "snapshot"> & { snapshot: PathSnapshot<TData
|
|
187
|
+
export function usePathContext<TData extends PathData = PathData, TServices = unknown>(): Omit<UsePathReturn<TData>, "snapshot"> & { snapshot: PathSnapshot<TData>; services: TServices } {
|
|
168
188
|
const ctx = useContext(PathContext);
|
|
169
189
|
if (ctx === null) {
|
|
170
190
|
throw new Error("usePathContext must be used within a <PathProvider>.");
|
|
171
191
|
}
|
|
172
|
-
return
|
|
192
|
+
return {
|
|
193
|
+
...(ctx.path as unknown as Omit<UsePathReturn<TData>, "snapshot"> & { snapshot: PathSnapshot<TData> }),
|
|
194
|
+
services: ctx.services as TServices
|
|
195
|
+
};
|
|
173
196
|
}
|
|
174
197
|
|
|
175
198
|
// ---------------------------------------------------------------------------
|
|
@@ -189,6 +212,8 @@ export interface PathShellActions {
|
|
|
189
212
|
goToStepChecked: (stepId: string) => void;
|
|
190
213
|
setData: (key: string, value: unknown) => void;
|
|
191
214
|
restart: () => void;
|
|
215
|
+
retry: () => void;
|
|
216
|
+
suspend: () => void;
|
|
192
217
|
}
|
|
193
218
|
|
|
194
219
|
export interface PathShellProps {
|
|
@@ -214,6 +239,8 @@ export interface PathShellProps {
|
|
|
214
239
|
nextLabel?: string;
|
|
215
240
|
/** Label for the Complete button (last step). Defaults to "Complete". */
|
|
216
241
|
completeLabel?: string;
|
|
242
|
+
/** Label shown on the Next/Complete button while an async operation is in progress. When undefined, an ActivityIndicator spinner is shown instead. */
|
|
243
|
+
loadingLabel?: string;
|
|
217
244
|
/** Label for the Cancel button. Defaults to "Cancel". */
|
|
218
245
|
cancelLabel?: string;
|
|
219
246
|
/** If true, hide the Cancel button. */
|
|
@@ -253,6 +280,11 @@ export interface PathShellProps {
|
|
|
253
280
|
* warning. The step is then responsible for managing its own scroll.
|
|
254
281
|
*/
|
|
255
282
|
disableBodyScroll?: boolean;
|
|
283
|
+
/**
|
|
284
|
+
* Services object passed through context to all step components.
|
|
285
|
+
* Step components access it via `usePathContext<TData, TServices>()`.
|
|
286
|
+
*/
|
|
287
|
+
services?: unknown;
|
|
256
288
|
}
|
|
257
289
|
|
|
258
290
|
/**
|
|
@@ -283,6 +315,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
283
315
|
backLabel = "Previous",
|
|
284
316
|
nextLabel = "Next",
|
|
285
317
|
completeLabel = "Complete",
|
|
318
|
+
loadingLabel,
|
|
286
319
|
cancelLabel = "Cancel",
|
|
287
320
|
hideCancel = false,
|
|
288
321
|
hideProgress = false,
|
|
@@ -293,6 +326,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
293
326
|
style,
|
|
294
327
|
keyboardVerticalOffset = 0,
|
|
295
328
|
disableBodyScroll = false,
|
|
329
|
+
services,
|
|
296
330
|
}: PathShellProps, ref): ReactElement {
|
|
297
331
|
const pathReturn = usePath({
|
|
298
332
|
engine: externalEngine,
|
|
@@ -303,7 +337,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
303
337
|
},
|
|
304
338
|
});
|
|
305
339
|
|
|
306
|
-
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart } = pathReturn;
|
|
340
|
+
const { snapshot, start, next, previous, cancel, goToStep, goToStepChecked, setData, restart, retry, suspend } = pathReturn;
|
|
307
341
|
|
|
308
342
|
useImperativeHandle(ref, () => ({
|
|
309
343
|
restart: () => restart(),
|
|
@@ -323,14 +357,18 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
323
357
|
? ((snapshot.formId ? steps[snapshot.formId] : undefined) ?? steps[snapshot.stepId] ?? null)
|
|
324
358
|
: null;
|
|
325
359
|
|
|
360
|
+
const contextValue: PathContextValue = { path: pathReturn, services: services ?? null };
|
|
361
|
+
|
|
326
362
|
const actions: PathShellActions = {
|
|
327
363
|
next, previous, cancel, goToStep, goToStepChecked, setData,
|
|
328
364
|
restart: () => restart(),
|
|
365
|
+
retry: () => retry(),
|
|
366
|
+
suspend: () => suspend(),
|
|
329
367
|
};
|
|
330
368
|
|
|
331
369
|
if (!snapshot) {
|
|
332
370
|
return (
|
|
333
|
-
<PathContext.Provider value={
|
|
371
|
+
<PathContext.Provider value={contextValue}>
|
|
334
372
|
<View style={[styles.shell, style]}>
|
|
335
373
|
<View style={styles.emptyState}>
|
|
336
374
|
<Text style={styles.emptyText}>No active path.</Text>
|
|
@@ -356,7 +394,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
356
394
|
!hideProgress && (snapshot.stepCount > 1 || snapshot.nestingLevel > 0);
|
|
357
395
|
|
|
358
396
|
return (
|
|
359
|
-
<PathContext.Provider value={
|
|
397
|
+
<PathContext.Provider value={contextValue}>
|
|
360
398
|
<KeyboardAvoidingView
|
|
361
399
|
style={[styles.shell, style]}
|
|
362
400
|
behavior={Platform.OS === "ios" ? "padding" : undefined}
|
|
@@ -426,26 +464,68 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
426
464
|
</View>
|
|
427
465
|
)}
|
|
428
466
|
|
|
429
|
-
{/*
|
|
430
|
-
{
|
|
467
|
+
{/* Blocking error — guard returned { allowed: false, reason } */}
|
|
468
|
+
{validationDisplay !== "inline" && snapshot.hasAttemptedNext && snapshot.blockingError && (
|
|
469
|
+
<Text style={styles.blockingError}>{snapshot.blockingError}</Text>
|
|
470
|
+
)}
|
|
471
|
+
|
|
472
|
+
{/* Error panel — replaces footer when an async operation has failed */}
|
|
473
|
+
{snapshot.status === "error" && snapshot.error
|
|
474
|
+
? (() => {
|
|
475
|
+
const err = snapshot.error!;
|
|
476
|
+
const escalated = err.retryCount >= 2;
|
|
477
|
+
return (
|
|
478
|
+
<View style={styles.errorPanel}>
|
|
479
|
+
<Text style={styles.errorTitle}>
|
|
480
|
+
{escalated ? "Still having trouble." : "Something went wrong."}
|
|
481
|
+
</Text>
|
|
482
|
+
<Text style={styles.errorMessage}>
|
|
483
|
+
{errorPhaseMessage(err.phase)}{err.message ? ` ${err.message}` : ""}
|
|
484
|
+
</Text>
|
|
485
|
+
<View style={styles.errorActions}>
|
|
486
|
+
{!escalated && (
|
|
487
|
+
<Pressable style={[styles.btn, styles.btnRetry]} onPress={retry}>
|
|
488
|
+
<Text style={styles.btnPrimaryText}>Try again</Text>
|
|
489
|
+
</Pressable>
|
|
490
|
+
)}
|
|
491
|
+
{snapshot.hasPersistence && (
|
|
492
|
+
<Pressable
|
|
493
|
+
style={[styles.btn, escalated ? styles.btnRetry : styles.btnSuspend]}
|
|
494
|
+
onPress={suspend}
|
|
495
|
+
>
|
|
496
|
+
<Text style={escalated ? styles.btnPrimaryText : styles.btnCancelText}>
|
|
497
|
+
Save and come back later
|
|
498
|
+
</Text>
|
|
499
|
+
</Pressable>
|
|
500
|
+
)}
|
|
501
|
+
{escalated && !snapshot.hasPersistence && (
|
|
502
|
+
<Pressable style={[styles.btn, styles.btnRetry]} onPress={retry}>
|
|
503
|
+
<Text style={styles.btnPrimaryText}>Try again</Text>
|
|
504
|
+
</Pressable>
|
|
505
|
+
)}
|
|
506
|
+
</View>
|
|
507
|
+
</View>
|
|
508
|
+
);
|
|
509
|
+
})()
|
|
510
|
+
: renderFooter
|
|
431
511
|
? renderFooter(snapshot, actions)
|
|
432
512
|
: (
|
|
433
513
|
<View style={styles.footer}>
|
|
434
514
|
<View style={styles.footerLeft}>
|
|
435
515
|
{isFormMode && !hideCancel && (
|
|
436
516
|
<Pressable
|
|
437
|
-
style={[styles.btn, styles.btnCancel, snapshot.
|
|
517
|
+
style={[styles.btn, styles.btnCancel, snapshot.status !== "idle" && styles.btnDisabled]}
|
|
438
518
|
onPress={cancel}
|
|
439
|
-
disabled={snapshot.
|
|
519
|
+
disabled={snapshot.status !== "idle"}
|
|
440
520
|
>
|
|
441
521
|
<Text style={styles.btnCancelText}>{cancelLabel}</Text>
|
|
442
522
|
</Pressable>
|
|
443
523
|
)}
|
|
444
524
|
{!isFormMode && !snapshot.isFirstStep && (
|
|
445
525
|
<Pressable
|
|
446
|
-
style={[styles.btn, styles.btnBack, (snapshot.
|
|
526
|
+
style={[styles.btn, styles.btnBack, (snapshot.status !== "idle" || !snapshot.canMovePrevious) && styles.btnDisabled]}
|
|
447
527
|
onPress={previous}
|
|
448
|
-
disabled={snapshot.
|
|
528
|
+
disabled={snapshot.status !== "idle" || !snapshot.canMovePrevious}
|
|
449
529
|
>
|
|
450
530
|
<Text style={styles.btnBackText}>← {backLabel}</Text>
|
|
451
531
|
</Pressable>
|
|
@@ -454,21 +534,23 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
454
534
|
<View style={styles.footerRight}>
|
|
455
535
|
{!isFormMode && !hideCancel && (
|
|
456
536
|
<Pressable
|
|
457
|
-
style={[styles.btn, styles.btnCancel, snapshot.
|
|
537
|
+
style={[styles.btn, styles.btnCancel, snapshot.status !== "idle" && styles.btnDisabled]}
|
|
458
538
|
onPress={cancel}
|
|
459
|
-
disabled={snapshot.
|
|
539
|
+
disabled={snapshot.status !== "idle"}
|
|
460
540
|
>
|
|
461
541
|
<Text style={styles.btnCancelText}>{cancelLabel}</Text>
|
|
462
542
|
</Pressable>
|
|
463
543
|
)}
|
|
464
544
|
<Pressable
|
|
465
|
-
style={[styles.btn, styles.btnPrimary, snapshot.
|
|
545
|
+
style={[styles.btn, styles.btnPrimary, snapshot.status !== "idle" && styles.btnDisabled]}
|
|
466
546
|
onPress={next}
|
|
467
|
-
disabled={snapshot.
|
|
547
|
+
disabled={snapshot.status !== "idle" || !snapshot.canMoveNext}
|
|
468
548
|
>
|
|
469
|
-
{snapshot.
|
|
470
|
-
? <
|
|
471
|
-
:
|
|
549
|
+
{snapshot.status !== "idle" && loadingLabel
|
|
550
|
+
? <Text style={styles.btnPrimaryText}>{loadingLabel}</Text>
|
|
551
|
+
: snapshot.status !== "idle"
|
|
552
|
+
? <ActivityIndicator size="small" color="#ffffff" />
|
|
553
|
+
: <Text style={styles.btnPrimaryText}>{snapshot.isLastStep ? completeLabel : `${nextLabel} →`}</Text>
|
|
472
554
|
}
|
|
473
555
|
</Pressable>
|
|
474
556
|
</View>
|
|
@@ -480,13 +562,7 @@ export const PathShell = forwardRef<PathShellHandle, PathShellProps>(function Pa
|
|
|
480
562
|
);
|
|
481
563
|
});
|
|
482
564
|
|
|
483
|
-
// ---------------------------------------------------------------------------
|
|
484
|
-
// Helpers
|
|
485
|
-
// ---------------------------------------------------------------------------
|
|
486
565
|
|
|
487
|
-
function formatFieldKey(key: string): string {
|
|
488
|
-
return key.replace(/([A-Z])/g, " $1").replace(/^./, (c) => c.toUpperCase()).trim();
|
|
489
|
-
}
|
|
490
566
|
|
|
491
567
|
// ---------------------------------------------------------------------------
|
|
492
568
|
// Styles
|
|
@@ -654,6 +730,39 @@ const styles = StyleSheet.create({
|
|
|
654
730
|
fontWeight: "500",
|
|
655
731
|
fontSize: 15,
|
|
656
732
|
},
|
|
733
|
+
blockingError: {
|
|
734
|
+
fontSize: 13,
|
|
735
|
+
color: "#dc2626",
|
|
736
|
+
marginTop: 4,
|
|
737
|
+
},
|
|
738
|
+
btnRetry: {
|
|
739
|
+
backgroundColor: "#dc2626",
|
|
740
|
+
},
|
|
741
|
+
btnSuspend: {
|
|
742
|
+
backgroundColor: "transparent",
|
|
743
|
+
},
|
|
744
|
+
errorPanel: {
|
|
745
|
+
backgroundColor: "#fef2f2",
|
|
746
|
+
borderRadius: 10,
|
|
747
|
+
borderWidth: 1,
|
|
748
|
+
borderColor: "#fecaca",
|
|
749
|
+
padding: 16,
|
|
750
|
+
gap: 8,
|
|
751
|
+
},
|
|
752
|
+
errorTitle: {
|
|
753
|
+
fontSize: 14,
|
|
754
|
+
fontWeight: "600",
|
|
755
|
+
color: "#dc2626",
|
|
756
|
+
},
|
|
757
|
+
errorMessage: {
|
|
758
|
+
fontSize: 13,
|
|
759
|
+
color: "#6b7280",
|
|
760
|
+
},
|
|
761
|
+
errorActions: {
|
|
762
|
+
flexDirection: "row",
|
|
763
|
+
gap: 8,
|
|
764
|
+
marginTop: 4,
|
|
765
|
+
},
|
|
657
766
|
});
|
|
658
767
|
|
|
659
768
|
// ---------------------------------------------------------------------------
|