@daltonr/pathwrite-core 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 +6 -1
- package/dist/index.d.ts +65 -9
- package/dist/index.js +89 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +130 -31
package/README.md
CHANGED
|
@@ -61,6 +61,11 @@ const snapshot = engine.snapshot();
|
|
|
61
61
|
| `fromState` | `static (state, pathDefs, options?) => PathEngine` | Reconstruct a `PathEngine` from previously exported state. |
|
|
62
62
|
| `subscribe` | `(listener) => () => void` | Register a removable event listener; returns an unsubscribe function. |
|
|
63
63
|
|
|
64
|
+
**`completionBehaviour`** on `PathDefinition` controls what happens after the path finishes:
|
|
65
|
+
- `"stayOnFinal"` (default) — engine stays active, `snapshot().status === "completed"`. `PathShell` renders a completion panel. Call `engine.restart()` to begin again.
|
|
66
|
+
- `"dismiss"` — engine clears its state, `snapshot()` returns `null`.
|
|
67
|
+
- `"reset"` — engine immediately restarts from step 1 (useful for kiosk / repeating flows).
|
|
68
|
+
|
|
64
69
|
For the complete options and overloads see [docs/reference/core-api.md](../../docs/reference/core-api.md).
|
|
65
70
|
|
|
66
71
|
## PathSnapshot
|
|
@@ -80,7 +85,7 @@ Returned by `engine.snapshot()`. All properties are read-only.
|
|
|
80
85
|
| `canMovePrevious` | `boolean` | Evaluated result of the current step's `canMovePrevious` guard. |
|
|
81
86
|
| `isFirstStep` | `boolean` | `true` when `stepIndex === 0`. |
|
|
82
87
|
| `isLastStep` | `boolean` | `true` when on the final step of the path. |
|
|
83
|
-
| `status` | `PathStatus` | Current engine state: `"idle"
|
|
88
|
+
| `status` | `PathStatus` | Current engine state. Key values: `"idle"` (ready to navigate), `"completing"` (running `onComplete`), `"completed"` (path finished, engine still active with `stayOnFinal`), `"error"` (async operation failed). |
|
|
84
89
|
| `blockingError` | `string \| undefined` | Reason string from a guard that returned `{ allowed: false, reason }`. |
|
|
85
90
|
| `progress` | `number` | Completion fraction in the range `[0, 1]`. |
|
|
86
91
|
| `isDirty` | `boolean` | `true` if any data field has changed since entering the current step. |
|
package/dist/index.d.ts
CHANGED
|
@@ -195,6 +195,20 @@ export interface PathDefinition<TData extends PathData = PathData> {
|
|
|
195
195
|
* sub-path cancellation is handled by the parent step's `onSubPathCancel` hook.
|
|
196
196
|
*/
|
|
197
197
|
onCancel?: (data: TData) => void | Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Controls what happens after the path completes (i.e. after `onComplete` resolves).
|
|
200
|
+
*
|
|
201
|
+
* - `"stayOnFinal"` *(default)* — the engine remains on the last step with
|
|
202
|
+
* `snapshot.status === "completed"`. The shell renders the completion panel.
|
|
203
|
+
* Call `restart()` to begin the flow again.
|
|
204
|
+
* - `"reset"` — the engine automatically restarts from step 1 with `initialData`
|
|
205
|
+
* after completion. No null snapshot at any point. Ideal for repeating flows
|
|
206
|
+
* such as kiosk surveys or repeated data-entry forms.
|
|
207
|
+
* - `"dismiss"` — legacy behaviour. `snapshot()` returns `null` after completion
|
|
208
|
+
* and the shell shows its "No active path" empty state. Use when your `onComplete`
|
|
209
|
+
* always navigates away so the component unmounts before re-rendering.
|
|
210
|
+
*/
|
|
211
|
+
completionBehaviour?: "stayOnFinal" | "reset" | "dismiss";
|
|
198
212
|
}
|
|
199
213
|
export type StepStatus = "completed" | "current" | "upcoming";
|
|
200
214
|
/**
|
|
@@ -209,7 +223,7 @@ export type StepStatus = "completed" | "current" | "upcoming";
|
|
|
209
223
|
* | `completing` | `PathDefinition.onComplete` is running |
|
|
210
224
|
* | `error` | An async operation failed — see `snapshot.error` for details |
|
|
211
225
|
*/
|
|
212
|
-
export type PathStatus = "idle" | "entering" | "validating" | "leaving" | "completing" | "error";
|
|
226
|
+
export type PathStatus = "idle" | "entering" | "validating" | "leaving" | "completing" | "completed" | "error";
|
|
213
227
|
/**
|
|
214
228
|
* The subset of `PathStatus` values that identify which phase was active
|
|
215
229
|
* when an error occurred. Used by `snapshot.error.phase`.
|
|
@@ -304,10 +318,25 @@ export interface PathSnapshot<TData extends PathData = PathData> {
|
|
|
304
318
|
canMoveNext: boolean;
|
|
305
319
|
/** Whether the current step's `canMovePrevious` guard allows going back. Async guards default to `true`. */
|
|
306
320
|
canMovePrevious: boolean;
|
|
321
|
+
/**
|
|
322
|
+
* True after `validate()` has been called on this engine (typically via a `PathRemote`
|
|
323
|
+
* from an outer shell). Unlike `hasAttemptedNext`, this flag is global — it does not
|
|
324
|
+
* reset when navigating between steps. Use this alongside `hasAttemptedNext` to gate
|
|
325
|
+
* inline error display in nested/tabbed shells where all steps must show errors at once:
|
|
326
|
+
*
|
|
327
|
+
* ```ts
|
|
328
|
+
* if (snapshot.hasAttemptedNext || snapshot.hasValidated) { // show errors }
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
hasValidated: boolean;
|
|
307
332
|
/**
|
|
308
333
|
* True after the user has clicked Next / Submit on this step at least once,
|
|
309
|
-
* regardless of whether navigation succeeded.
|
|
310
|
-
*
|
|
334
|
+
* regardless of whether navigation succeeded.
|
|
335
|
+
*
|
|
336
|
+
* This flag is **per-step and persistent** — navigating away and returning to
|
|
337
|
+
* a step preserves the attempted state. If the user clicked Next on step A,
|
|
338
|
+
* then navigated away and back, `hasAttemptedNext` is still `true` for step A.
|
|
339
|
+
* The flag resets for all steps only on `start()` / `restart()`.
|
|
311
340
|
*
|
|
312
341
|
* Use this to gate inline field-error display so errors are hidden on first
|
|
313
342
|
* render and only appear after the user has attempted to proceed:
|
|
@@ -318,6 +347,10 @@ export interface PathSnapshot<TData extends PathData = PathData> {
|
|
|
318
347
|
* {/if}
|
|
319
348
|
* ```
|
|
320
349
|
*
|
|
350
|
+
* For tab mode, call `goToStep(id, { validateOnLeave: true })` to mark the
|
|
351
|
+
* departing tab as attempted before switching, so errors surface when the user
|
|
352
|
+
* returns to that tab without ever clicking Next.
|
|
353
|
+
*
|
|
321
354
|
* The shell itself uses this flag to gate its own automatic `fieldErrors`
|
|
322
355
|
* summary rendering — errors are never shown before the first Next attempt.
|
|
323
356
|
*/
|
|
@@ -379,7 +412,7 @@ export interface PathSnapshot<TData extends PathData = PathData> {
|
|
|
379
412
|
/**
|
|
380
413
|
* Identifies the public method that triggered a `stateChanged` event.
|
|
381
414
|
*/
|
|
382
|
-
export type StateChangeCause = "start" | "next" | "previous" | "goToStep" | "goToStepChecked" | "setData" | "resetStep" | "cancel" | "restart" | "retry" | "suspend";
|
|
415
|
+
export type StateChangeCause = "start" | "next" | "previous" | "complete" | "goToStep" | "goToStepChecked" | "setData" | "resetStep" | "cancel" | "restart" | "retry" | "suspend" | "validate";
|
|
383
416
|
export type PathEvent = {
|
|
384
417
|
type: "stateChanged";
|
|
385
418
|
cause: StateChangeCause;
|
|
@@ -476,8 +509,10 @@ export declare class PathEngine {
|
|
|
476
509
|
private readonly pathStack;
|
|
477
510
|
private readonly listeners;
|
|
478
511
|
private _status;
|
|
479
|
-
/**
|
|
480
|
-
private
|
|
512
|
+
/** Step IDs on which next() or goToStep({ validateOnLeave }) has been called. Per-step and persistent — does not reset on navigation, only on start()/restart(). */
|
|
513
|
+
private readonly _attemptedNextSteps;
|
|
514
|
+
/** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
|
|
515
|
+
private _hasValidated;
|
|
481
516
|
/** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
|
|
482
517
|
private _blockingError;
|
|
483
518
|
/** The path and initial data from the most recent top-level start() call. Used by restart(). */
|
|
@@ -574,8 +609,17 @@ export declare class PathEngine {
|
|
|
574
609
|
* Throws if no path is active.
|
|
575
610
|
*/
|
|
576
611
|
resetStep(): Promise<void>;
|
|
577
|
-
/**
|
|
578
|
-
|
|
612
|
+
/**
|
|
613
|
+
* Jumps directly to the step with the given ID. Does not check guards or shouldSkip.
|
|
614
|
+
*
|
|
615
|
+
* Pass `{ validateOnLeave: true }` to mark the **departing** step as attempted
|
|
616
|
+
* before navigating. This causes `hasAttemptedNext` to be `true` when the user
|
|
617
|
+
* returns to that step, surfacing any inline field errors — ideal for tab-mode
|
|
618
|
+
* navigation where Next is never clicked.
|
|
619
|
+
*/
|
|
620
|
+
goToStep(stepId: string, options?: {
|
|
621
|
+
validateOnLeave?: boolean;
|
|
622
|
+
}): Promise<void>;
|
|
579
623
|
/**
|
|
580
624
|
* Jumps directly to the step with the given ID, but first checks the
|
|
581
625
|
* direction-appropriate guard on the current step:
|
|
@@ -586,7 +630,19 @@ export declare class PathEngine {
|
|
|
586
630
|
* emitted (so the UI can react). `shouldSkip` is not evaluated.
|
|
587
631
|
* Throws if the target step ID does not exist.
|
|
588
632
|
*/
|
|
589
|
-
goToStepChecked(stepId: string
|
|
633
|
+
goToStepChecked(stepId: string, options?: {
|
|
634
|
+
validateOnLeave?: boolean;
|
|
635
|
+
}): Promise<void>;
|
|
636
|
+
/**
|
|
637
|
+
* Marks the engine as validation-attempted without navigating. Sets the
|
|
638
|
+
* `hasValidated` flag on the snapshot so all step components can show their
|
|
639
|
+
* inline errors simultaneously.
|
|
640
|
+
*
|
|
641
|
+
* Intended for use with `PathRemote` — an outer shell calls this on an
|
|
642
|
+
* inner tabbed shell when the outer Next is clicked, so every inner tab
|
|
643
|
+
* reveals its errors at once rather than requiring the user to visit each one.
|
|
644
|
+
*/
|
|
645
|
+
validate(): void;
|
|
590
646
|
snapshot(): PathSnapshot | null;
|
|
591
647
|
/**
|
|
592
648
|
* Exports the current engine state as a plain JSON-serializable object.
|
package/dist/index.js
CHANGED
|
@@ -61,8 +61,10 @@ export class PathEngine {
|
|
|
61
61
|
pathStack = [];
|
|
62
62
|
listeners = new Set();
|
|
63
63
|
_status = "idle";
|
|
64
|
-
/**
|
|
65
|
-
|
|
64
|
+
/** Step IDs on which next() or goToStep({ validateOnLeave }) has been called. Per-step and persistent — does not reset on navigation, only on start()/restart(). */
|
|
65
|
+
_attemptedNextSteps = new Set();
|
|
66
|
+
/** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
|
|
67
|
+
_hasValidated = false;
|
|
66
68
|
/** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
|
|
67
69
|
_blockingError = null;
|
|
68
70
|
/** The path and initial data from the most recent top-level start() call. Used by restart(). */
|
|
@@ -164,6 +166,8 @@ export class PathEngine {
|
|
|
164
166
|
this.assertPathHasSteps(path);
|
|
165
167
|
this._rootPath = path;
|
|
166
168
|
this._rootInitialData = initialData;
|
|
169
|
+
this._hasValidated = false;
|
|
170
|
+
this._attemptedNextSteps.clear();
|
|
167
171
|
return this._startAsync(path, initialData);
|
|
168
172
|
}
|
|
169
173
|
/**
|
|
@@ -183,6 +187,8 @@ export class PathEngine {
|
|
|
183
187
|
}
|
|
184
188
|
this._status = "idle";
|
|
185
189
|
this._blockingError = null;
|
|
190
|
+
this._hasValidated = false;
|
|
191
|
+
this._attemptedNextSteps.clear();
|
|
186
192
|
this.activePath = null;
|
|
187
193
|
this.pathStack.length = 0;
|
|
188
194
|
return this._startAsync(this._rootPath, { ...this._rootInitialData });
|
|
@@ -200,6 +206,8 @@ export class PathEngine {
|
|
|
200
206
|
* sub-path's own data.
|
|
201
207
|
*/
|
|
202
208
|
startSubPath(path, initialData = {}, meta) {
|
|
209
|
+
if (this._status === "completed")
|
|
210
|
+
return Promise.resolve();
|
|
203
211
|
this.requireActivePath();
|
|
204
212
|
return this._startAsync(path, initialData, meta);
|
|
205
213
|
}
|
|
@@ -284,6 +292,8 @@ export class PathEngine {
|
|
|
284
292
|
}
|
|
285
293
|
}
|
|
286
294
|
setData(key, value) {
|
|
295
|
+
if (this._status === "completed")
|
|
296
|
+
return Promise.resolve();
|
|
287
297
|
const active = this.requireActivePath();
|
|
288
298
|
active.data[key] = value;
|
|
289
299
|
this.emitStateChanged("setData");
|
|
@@ -296,20 +306,29 @@ export class PathEngine {
|
|
|
296
306
|
* Throws if no path is active.
|
|
297
307
|
*/
|
|
298
308
|
resetStep() {
|
|
309
|
+
if (this._status === "completed")
|
|
310
|
+
return Promise.resolve();
|
|
299
311
|
const active = this.requireActivePath();
|
|
300
312
|
// Restore data from the snapshot taken when this step was entered
|
|
301
313
|
active.data = { ...active.stepEntryData };
|
|
302
314
|
this.emitStateChanged("resetStep");
|
|
303
315
|
return Promise.resolve();
|
|
304
316
|
}
|
|
305
|
-
/**
|
|
306
|
-
|
|
317
|
+
/**
|
|
318
|
+
* Jumps directly to the step with the given ID. Does not check guards or shouldSkip.
|
|
319
|
+
*
|
|
320
|
+
* Pass `{ validateOnLeave: true }` to mark the **departing** step as attempted
|
|
321
|
+
* before navigating. This causes `hasAttemptedNext` to be `true` when the user
|
|
322
|
+
* returns to that step, surfacing any inline field errors — ideal for tab-mode
|
|
323
|
+
* navigation where Next is never clicked.
|
|
324
|
+
*/
|
|
325
|
+
goToStep(stepId, options) {
|
|
307
326
|
const active = this.requireActivePath();
|
|
308
327
|
const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
|
|
309
328
|
if (targetIndex === -1) {
|
|
310
329
|
throw new Error(`Step "${stepId}" not found in path "${active.definition.id}".`);
|
|
311
330
|
}
|
|
312
|
-
return this._goToStepAsync(active, targetIndex);
|
|
331
|
+
return this._goToStepAsync(active, targetIndex, options);
|
|
313
332
|
}
|
|
314
333
|
/**
|
|
315
334
|
* Jumps directly to the step with the given ID, but first checks the
|
|
@@ -321,7 +340,7 @@ export class PathEngine {
|
|
|
321
340
|
* emitted (so the UI can react). `shouldSkip` is not evaluated.
|
|
322
341
|
* Throws if the target step ID does not exist.
|
|
323
342
|
*/
|
|
324
|
-
goToStepChecked(stepId) {
|
|
343
|
+
goToStepChecked(stepId, options) {
|
|
325
344
|
const active = this.requireActivePath();
|
|
326
345
|
const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
|
|
327
346
|
if (targetIndex === -1) {
|
|
@@ -329,7 +348,22 @@ export class PathEngine {
|
|
|
329
348
|
}
|
|
330
349
|
if (targetIndex === active.currentStepIndex)
|
|
331
350
|
return Promise.resolve();
|
|
332
|
-
return this._goToStepCheckedAsync(active, targetIndex);
|
|
351
|
+
return this._goToStepCheckedAsync(active, targetIndex, options);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Marks the engine as validation-attempted without navigating. Sets the
|
|
355
|
+
* `hasValidated` flag on the snapshot so all step components can show their
|
|
356
|
+
* inline errors simultaneously.
|
|
357
|
+
*
|
|
358
|
+
* Intended for use with `PathRemote` — an outer shell calls this on an
|
|
359
|
+
* inner tabbed shell when the outer Next is clicked, so every inner tab
|
|
360
|
+
* reveals its errors at once rather than requiring the user to visit each one.
|
|
361
|
+
*/
|
|
362
|
+
validate() {
|
|
363
|
+
if (this._status !== "idle" || !this.activePath)
|
|
364
|
+
return;
|
|
365
|
+
this._hasValidated = true;
|
|
366
|
+
this.emitStateChanged("validate");
|
|
333
367
|
}
|
|
334
368
|
snapshot() {
|
|
335
369
|
if (this.activePath === null) {
|
|
@@ -369,6 +403,7 @@ export class PathEngine {
|
|
|
369
403
|
}))
|
|
370
404
|
};
|
|
371
405
|
}
|
|
406
|
+
const isCompleted = this._status === "completed";
|
|
372
407
|
return {
|
|
373
408
|
pathId: active.definition.id,
|
|
374
409
|
stepId: item.id,
|
|
@@ -377,30 +412,30 @@ export class PathEngine {
|
|
|
377
412
|
formId: isStepChoice(item) ? effectiveStep.id : undefined,
|
|
378
413
|
stepIndex: effectiveStepIndex,
|
|
379
414
|
stepCount,
|
|
380
|
-
progress: stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1),
|
|
415
|
+
progress: isCompleted ? 1 : (stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1)),
|
|
381
416
|
steps: visibleSteps.map((s, i) => ({
|
|
382
417
|
id: s.id,
|
|
383
418
|
title: s.title,
|
|
384
419
|
meta: s.meta,
|
|
385
|
-
status: i < effectiveStepIndex ? "completed"
|
|
420
|
+
status: (isCompleted || i < effectiveStepIndex) ? "completed"
|
|
386
421
|
: i === effectiveStepIndex ? "current"
|
|
387
422
|
: "upcoming"
|
|
388
423
|
})),
|
|
389
|
-
isFirstStep: effectiveStepIndex === 0,
|
|
390
|
-
isLastStep: effectiveStepIndex === stepCount - 1 &&
|
|
391
|
-
this.pathStack.length === 0,
|
|
424
|
+
isFirstStep: isCompleted ? false : effectiveStepIndex === 0,
|
|
425
|
+
isLastStep: isCompleted ? true : (effectiveStepIndex === stepCount - 1 && this.pathStack.length === 0),
|
|
392
426
|
nestingLevel: this.pathStack.length,
|
|
393
427
|
rootProgress,
|
|
394
428
|
status: this._status,
|
|
395
429
|
error: this._error,
|
|
396
430
|
hasPersistence: this._hasPersistence,
|
|
397
|
-
|
|
431
|
+
hasValidated: this._hasValidated,
|
|
432
|
+
hasAttemptedNext: this._attemptedNextSteps.has(item.id),
|
|
398
433
|
blockingError: this._blockingError,
|
|
399
|
-
canMoveNext: this.evaluateCanMoveNextSync(effectiveStep, active),
|
|
400
|
-
canMovePrevious: this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
|
|
401
|
-
fieldErrors: this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
|
|
402
|
-
fieldWarnings: this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
|
|
403
|
-
isDirty: this.computeIsDirty(active),
|
|
434
|
+
canMoveNext: isCompleted ? false : this.evaluateCanMoveNextSync(effectiveStep, active),
|
|
435
|
+
canMovePrevious: isCompleted ? false : this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
|
|
436
|
+
fieldErrors: isCompleted ? {} : this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
|
|
437
|
+
fieldWarnings: isCompleted ? {} : this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
|
|
438
|
+
isDirty: isCompleted ? false : this.computeIsDirty(active),
|
|
404
439
|
stepEnteredAt: active.stepEnteredAt,
|
|
405
440
|
data: { ...active.data }
|
|
406
441
|
};
|
|
@@ -479,7 +514,7 @@ export class PathEngine {
|
|
|
479
514
|
return;
|
|
480
515
|
// Record that the user has attempted to advance — used by shells and step
|
|
481
516
|
// templates to gate error display ("punish late, reward early").
|
|
482
|
-
this.
|
|
517
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
483
518
|
// Phase: validating — canMoveNext guard
|
|
484
519
|
this._status = "validating";
|
|
485
520
|
this.emitStateChanged("next");
|
|
@@ -558,9 +593,12 @@ export class PathEngine {
|
|
|
558
593
|
throw err;
|
|
559
594
|
}
|
|
560
595
|
}
|
|
561
|
-
async _goToStepAsync(active, targetIndex) {
|
|
596
|
+
async _goToStepAsync(active, targetIndex, options) {
|
|
562
597
|
if (this._status !== "idle")
|
|
563
598
|
return;
|
|
599
|
+
if (options?.validateOnLeave) {
|
|
600
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
601
|
+
}
|
|
564
602
|
this._status = "leaving";
|
|
565
603
|
this.emitStateChanged("goToStep");
|
|
566
604
|
try {
|
|
@@ -577,9 +615,12 @@ export class PathEngine {
|
|
|
577
615
|
throw err;
|
|
578
616
|
}
|
|
579
617
|
}
|
|
580
|
-
async _goToStepCheckedAsync(active, targetIndex) {
|
|
618
|
+
async _goToStepCheckedAsync(active, targetIndex, options) {
|
|
581
619
|
if (this._status !== "idle")
|
|
582
620
|
return;
|
|
621
|
+
if (options?.validateOnLeave) {
|
|
622
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
623
|
+
}
|
|
583
624
|
this._status = "validating";
|
|
584
625
|
this.emitStateChanged("goToStepChecked");
|
|
585
626
|
try {
|
|
@@ -664,13 +705,30 @@ export class PathEngine {
|
|
|
664
705
|
});
|
|
665
706
|
}
|
|
666
707
|
else {
|
|
667
|
-
//
|
|
708
|
+
// currentStepIndex was incremented past the last step in _nextAsync to
|
|
709
|
+
// trigger completion. Back it up so snapshot() can reference the final step
|
|
710
|
+
// if any stateChanged events fire during or after the completion sequence.
|
|
711
|
+
finished.currentStepIndex = finished.definition.steps.length - 1;
|
|
712
|
+
// Top-level path completed — call onComplete before changing state so
|
|
668
713
|
// that if it throws the engine remains on the final step and can retry.
|
|
669
714
|
if (finished.definition.onComplete) {
|
|
670
715
|
await finished.definition.onComplete(finishedData);
|
|
671
716
|
}
|
|
672
|
-
|
|
673
|
-
|
|
717
|
+
const behaviour = finished.definition.completionBehaviour ?? "stayOnFinal";
|
|
718
|
+
if (behaviour === "dismiss") {
|
|
719
|
+
this.activePath = null;
|
|
720
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
721
|
+
}
|
|
722
|
+
else if (behaviour === "reset") {
|
|
723
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
724
|
+
await this.restart();
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
// "stayOnFinal" (default) — keep activePath alive, surface via completed status
|
|
728
|
+
this._status = "completed";
|
|
729
|
+
this.emitStateChanged("complete");
|
|
730
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
731
|
+
}
|
|
674
732
|
}
|
|
675
733
|
}
|
|
676
734
|
/**
|
|
@@ -685,7 +743,13 @@ export class PathEngine {
|
|
|
685
743
|
this._status = "completing";
|
|
686
744
|
try {
|
|
687
745
|
await this.finishActivePath();
|
|
688
|
-
|
|
746
|
+
// finishActivePath sets _status = "completed" for stayOnFinal paths.
|
|
747
|
+
// For all other cases (dismiss, reset, sub-paths) reset to idle.
|
|
748
|
+
// Cast needed: TS narrows _status to "completing" after the assignment above
|
|
749
|
+
// and doesn't widen it after the async call, even though finishActivePath may change it.
|
|
750
|
+
if (this._status !== "completed") {
|
|
751
|
+
this._status = "idle";
|
|
752
|
+
}
|
|
689
753
|
// No stateChanged here — finishActivePath emits "completed" or "resumed"
|
|
690
754
|
}
|
|
691
755
|
catch (err) {
|
|
@@ -851,8 +915,6 @@ export class PathEngine {
|
|
|
851
915
|
}
|
|
852
916
|
}
|
|
853
917
|
async enterCurrentStep() {
|
|
854
|
-
// Each step starts fresh — errors are not shown until the user attempts to proceed.
|
|
855
|
-
this._hasAttemptedNext = false;
|
|
856
918
|
this._blockingError = null;
|
|
857
919
|
const active = this.activePath;
|
|
858
920
|
if (!active)
|
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
package/src/index.ts
CHANGED
|
@@ -210,6 +210,20 @@ export interface PathDefinition<TData extends PathData = PathData> {
|
|
|
210
210
|
* sub-path cancellation is handled by the parent step's `onSubPathCancel` hook.
|
|
211
211
|
*/
|
|
212
212
|
onCancel?: (data: TData) => void | Promise<void>;
|
|
213
|
+
/**
|
|
214
|
+
* Controls what happens after the path completes (i.e. after `onComplete` resolves).
|
|
215
|
+
*
|
|
216
|
+
* - `"stayOnFinal"` *(default)* — the engine remains on the last step with
|
|
217
|
+
* `snapshot.status === "completed"`. The shell renders the completion panel.
|
|
218
|
+
* Call `restart()` to begin the flow again.
|
|
219
|
+
* - `"reset"` — the engine automatically restarts from step 1 with `initialData`
|
|
220
|
+
* after completion. No null snapshot at any point. Ideal for repeating flows
|
|
221
|
+
* such as kiosk surveys or repeated data-entry forms.
|
|
222
|
+
* - `"dismiss"` — legacy behaviour. `snapshot()` returns `null` after completion
|
|
223
|
+
* and the shell shows its "No active path" empty state. Use when your `onComplete`
|
|
224
|
+
* always navigates away so the component unmounts before re-rendering.
|
|
225
|
+
*/
|
|
226
|
+
completionBehaviour?: "stayOnFinal" | "reset" | "dismiss";
|
|
213
227
|
}
|
|
214
228
|
|
|
215
229
|
export type StepStatus = "completed" | "current" | "upcoming";
|
|
@@ -232,6 +246,7 @@ export type PathStatus =
|
|
|
232
246
|
| "validating"
|
|
233
247
|
| "leaving"
|
|
234
248
|
| "completing"
|
|
249
|
+
| "completed"
|
|
235
250
|
| "error";
|
|
236
251
|
|
|
237
252
|
/**
|
|
@@ -328,10 +343,25 @@ export interface PathSnapshot<TData extends PathData = PathData> {
|
|
|
328
343
|
canMoveNext: boolean;
|
|
329
344
|
/** Whether the current step's `canMovePrevious` guard allows going back. Async guards default to `true`. */
|
|
330
345
|
canMovePrevious: boolean;
|
|
346
|
+
/**
|
|
347
|
+
* True after `validate()` has been called on this engine (typically via a `PathRemote`
|
|
348
|
+
* from an outer shell). Unlike `hasAttemptedNext`, this flag is global — it does not
|
|
349
|
+
* reset when navigating between steps. Use this alongside `hasAttemptedNext` to gate
|
|
350
|
+
* inline error display in nested/tabbed shells where all steps must show errors at once:
|
|
351
|
+
*
|
|
352
|
+
* ```ts
|
|
353
|
+
* if (snapshot.hasAttemptedNext || snapshot.hasValidated) { // show errors }
|
|
354
|
+
* ```
|
|
355
|
+
*/
|
|
356
|
+
hasValidated: boolean;
|
|
331
357
|
/**
|
|
332
358
|
* True after the user has clicked Next / Submit on this step at least once,
|
|
333
|
-
* regardless of whether navigation succeeded.
|
|
334
|
-
*
|
|
359
|
+
* regardless of whether navigation succeeded.
|
|
360
|
+
*
|
|
361
|
+
* This flag is **per-step and persistent** — navigating away and returning to
|
|
362
|
+
* a step preserves the attempted state. If the user clicked Next on step A,
|
|
363
|
+
* then navigated away and back, `hasAttemptedNext` is still `true` for step A.
|
|
364
|
+
* The flag resets for all steps only on `start()` / `restart()`.
|
|
335
365
|
*
|
|
336
366
|
* Use this to gate inline field-error display so errors are hidden on first
|
|
337
367
|
* render and only appear after the user has attempted to proceed:
|
|
@@ -342,6 +372,10 @@ export interface PathSnapshot<TData extends PathData = PathData> {
|
|
|
342
372
|
* {/if}
|
|
343
373
|
* ```
|
|
344
374
|
*
|
|
375
|
+
* For tab mode, call `goToStep(id, { validateOnLeave: true })` to mark the
|
|
376
|
+
* departing tab as attempted before switching, so errors surface when the user
|
|
377
|
+
* returns to that tab without ever clicking Next.
|
|
378
|
+
*
|
|
345
379
|
* The shell itself uses this flag to gate its own automatic `fieldErrors`
|
|
346
380
|
* summary rendering — errors are never shown before the first Next attempt.
|
|
347
381
|
*/
|
|
@@ -408,6 +442,7 @@ export type StateChangeCause =
|
|
|
408
442
|
| "start"
|
|
409
443
|
| "next"
|
|
410
444
|
| "previous"
|
|
445
|
+
| "complete"
|
|
411
446
|
| "goToStep"
|
|
412
447
|
| "goToStepChecked"
|
|
413
448
|
| "setData"
|
|
@@ -415,7 +450,8 @@ export type StateChangeCause =
|
|
|
415
450
|
| "cancel"
|
|
416
451
|
| "restart"
|
|
417
452
|
| "retry"
|
|
418
|
-
| "suspend"
|
|
453
|
+
| "suspend"
|
|
454
|
+
| "validate";
|
|
419
455
|
|
|
420
456
|
export type PathEvent =
|
|
421
457
|
| { type: "stateChanged"; cause: StateChangeCause; snapshot: PathSnapshot }
|
|
@@ -495,6 +531,7 @@ export function matchesStrategy(strategy: ObserverStrategy, event: PathEvent): b
|
|
|
495
531
|
}
|
|
496
532
|
}
|
|
497
533
|
|
|
534
|
+
|
|
498
535
|
/**
|
|
499
536
|
* Options accepted by the `PathEngine` constructor and `PathEngine.fromState()`.
|
|
500
537
|
*/
|
|
@@ -563,8 +600,10 @@ export class PathEngine {
|
|
|
563
600
|
private readonly pathStack: ActivePath[] = [];
|
|
564
601
|
private readonly listeners = new Set<(event: PathEvent) => void>();
|
|
565
602
|
private _status: PathStatus = "idle";
|
|
566
|
-
/**
|
|
567
|
-
private
|
|
603
|
+
/** Step IDs on which next() or goToStep({ validateOnLeave }) has been called. Per-step and persistent — does not reset on navigation, only on start()/restart(). */
|
|
604
|
+
private readonly _attemptedNextSteps = new Set<string>();
|
|
605
|
+
/** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
|
|
606
|
+
private _hasValidated = false;
|
|
568
607
|
/** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
|
|
569
608
|
private _blockingError: string | null = null;
|
|
570
609
|
/** The path and initial data from the most recent top-level start() call. Used by restart(). */
|
|
@@ -686,6 +725,8 @@ export class PathEngine {
|
|
|
686
725
|
this.assertPathHasSteps(path);
|
|
687
726
|
this._rootPath = path;
|
|
688
727
|
this._rootInitialData = initialData;
|
|
728
|
+
this._hasValidated = false;
|
|
729
|
+
this._attemptedNextSteps.clear();
|
|
689
730
|
return this._startAsync(path, initialData);
|
|
690
731
|
}
|
|
691
732
|
|
|
@@ -706,6 +747,8 @@ export class PathEngine {
|
|
|
706
747
|
}
|
|
707
748
|
this._status = "idle";
|
|
708
749
|
this._blockingError = null;
|
|
750
|
+
this._hasValidated = false;
|
|
751
|
+
this._attemptedNextSteps.clear();
|
|
709
752
|
this.activePath = null;
|
|
710
753
|
this.pathStack.length = 0;
|
|
711
754
|
return this._startAsync(this._rootPath, { ...this._rootInitialData });
|
|
@@ -724,6 +767,7 @@ export class PathEngine {
|
|
|
724
767
|
* sub-path's own data.
|
|
725
768
|
*/
|
|
726
769
|
public startSubPath(path: PathDefinition<any>, initialData: PathData = {}, meta?: Record<string, unknown>): Promise<void> {
|
|
770
|
+
if (this._status === "completed") return Promise.resolve();
|
|
727
771
|
this.requireActivePath();
|
|
728
772
|
return this._startAsync(path, initialData, meta);
|
|
729
773
|
}
|
|
@@ -814,6 +858,7 @@ export class PathEngine {
|
|
|
814
858
|
}
|
|
815
859
|
|
|
816
860
|
public setData(key: string, value: unknown): Promise<void> {
|
|
861
|
+
if (this._status === "completed") return Promise.resolve();
|
|
817
862
|
const active = this.requireActivePath();
|
|
818
863
|
active.data[key] = value;
|
|
819
864
|
this.emitStateChanged("setData");
|
|
@@ -827,6 +872,7 @@ export class PathEngine {
|
|
|
827
872
|
* Throws if no path is active.
|
|
828
873
|
*/
|
|
829
874
|
public resetStep(): Promise<void> {
|
|
875
|
+
if (this._status === "completed") return Promise.resolve();
|
|
830
876
|
const active = this.requireActivePath();
|
|
831
877
|
// Restore data from the snapshot taken when this step was entered
|
|
832
878
|
active.data = { ...active.stepEntryData };
|
|
@@ -834,14 +880,21 @@ export class PathEngine {
|
|
|
834
880
|
return Promise.resolve();
|
|
835
881
|
}
|
|
836
882
|
|
|
837
|
-
/**
|
|
838
|
-
|
|
883
|
+
/**
|
|
884
|
+
* Jumps directly to the step with the given ID. Does not check guards or shouldSkip.
|
|
885
|
+
*
|
|
886
|
+
* Pass `{ validateOnLeave: true }` to mark the **departing** step as attempted
|
|
887
|
+
* before navigating. This causes `hasAttemptedNext` to be `true` when the user
|
|
888
|
+
* returns to that step, surfacing any inline field errors — ideal for tab-mode
|
|
889
|
+
* navigation where Next is never clicked.
|
|
890
|
+
*/
|
|
891
|
+
public goToStep(stepId: string, options?: { validateOnLeave?: boolean }): Promise<void> {
|
|
839
892
|
const active = this.requireActivePath();
|
|
840
893
|
const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
|
|
841
894
|
if (targetIndex === -1) {
|
|
842
895
|
throw new Error(`Step "${stepId}" not found in path "${active.definition.id}".`);
|
|
843
896
|
}
|
|
844
|
-
return this._goToStepAsync(active, targetIndex);
|
|
897
|
+
return this._goToStepAsync(active, targetIndex, options);
|
|
845
898
|
}
|
|
846
899
|
|
|
847
900
|
/**
|
|
@@ -854,14 +907,29 @@ export class PathEngine {
|
|
|
854
907
|
* emitted (so the UI can react). `shouldSkip` is not evaluated.
|
|
855
908
|
* Throws if the target step ID does not exist.
|
|
856
909
|
*/
|
|
857
|
-
public goToStepChecked(stepId: string): Promise<void> {
|
|
910
|
+
public goToStepChecked(stepId: string, options?: { validateOnLeave?: boolean }): Promise<void> {
|
|
858
911
|
const active = this.requireActivePath();
|
|
859
912
|
const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
|
|
860
913
|
if (targetIndex === -1) {
|
|
861
914
|
return Promise.reject(new Error(`Step "${stepId}" not found in path "${active.definition.id}".`));
|
|
862
915
|
}
|
|
863
916
|
if (targetIndex === active.currentStepIndex) return Promise.resolve();
|
|
864
|
-
return this._goToStepCheckedAsync(active, targetIndex);
|
|
917
|
+
return this._goToStepCheckedAsync(active, targetIndex, options);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
/**
|
|
921
|
+
* Marks the engine as validation-attempted without navigating. Sets the
|
|
922
|
+
* `hasValidated` flag on the snapshot so all step components can show their
|
|
923
|
+
* inline errors simultaneously.
|
|
924
|
+
*
|
|
925
|
+
* Intended for use with `PathRemote` — an outer shell calls this on an
|
|
926
|
+
* inner tabbed shell when the outer Next is clicked, so every inner tab
|
|
927
|
+
* reveals its errors at once rather than requiring the user to visit each one.
|
|
928
|
+
*/
|
|
929
|
+
public validate(): void {
|
|
930
|
+
if (this._status !== "idle" || !this.activePath) return;
|
|
931
|
+
this._hasValidated = true;
|
|
932
|
+
this.emitStateChanged("validate");
|
|
865
933
|
}
|
|
866
934
|
|
|
867
935
|
public snapshot(): PathSnapshot | null {
|
|
@@ -906,6 +974,8 @@ export class PathEngine {
|
|
|
906
974
|
};
|
|
907
975
|
}
|
|
908
976
|
|
|
977
|
+
const isCompleted = this._status === "completed";
|
|
978
|
+
|
|
909
979
|
return {
|
|
910
980
|
pathId: active.definition.id,
|
|
911
981
|
stepId: item.id,
|
|
@@ -914,31 +984,30 @@ export class PathEngine {
|
|
|
914
984
|
formId: isStepChoice(item) ? effectiveStep.id : undefined,
|
|
915
985
|
stepIndex: effectiveStepIndex,
|
|
916
986
|
stepCount,
|
|
917
|
-
progress: stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1),
|
|
987
|
+
progress: isCompleted ? 1 : (stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1)),
|
|
918
988
|
steps: visibleSteps.map((s, i) => ({
|
|
919
989
|
id: s.id,
|
|
920
990
|
title: s.title,
|
|
921
991
|
meta: s.meta,
|
|
922
|
-
status: i < effectiveStepIndex ? "completed" as const
|
|
992
|
+
status: (isCompleted || i < effectiveStepIndex) ? "completed" as const
|
|
923
993
|
: i === effectiveStepIndex ? "current" as const
|
|
924
994
|
: "upcoming" as const
|
|
925
995
|
})),
|
|
926
|
-
isFirstStep: effectiveStepIndex === 0,
|
|
927
|
-
isLastStep:
|
|
928
|
-
effectiveStepIndex === stepCount - 1 &&
|
|
929
|
-
this.pathStack.length === 0,
|
|
996
|
+
isFirstStep: isCompleted ? false : effectiveStepIndex === 0,
|
|
997
|
+
isLastStep: isCompleted ? true : (effectiveStepIndex === stepCount - 1 && this.pathStack.length === 0),
|
|
930
998
|
nestingLevel: this.pathStack.length,
|
|
931
999
|
rootProgress,
|
|
932
1000
|
status: this._status,
|
|
933
1001
|
error: this._error,
|
|
934
1002
|
hasPersistence: this._hasPersistence,
|
|
935
|
-
|
|
1003
|
+
hasValidated: this._hasValidated,
|
|
1004
|
+
hasAttemptedNext: this._attemptedNextSteps.has(item.id),
|
|
936
1005
|
blockingError: this._blockingError,
|
|
937
|
-
canMoveNext: this.evaluateCanMoveNextSync(effectiveStep, active),
|
|
938
|
-
canMovePrevious: this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
|
|
939
|
-
fieldErrors: this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
|
|
940
|
-
fieldWarnings: this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
|
|
941
|
-
isDirty: this.computeIsDirty(active),
|
|
1006
|
+
canMoveNext: isCompleted ? false : this.evaluateCanMoveNextSync(effectiveStep, active),
|
|
1007
|
+
canMovePrevious: isCompleted ? false : this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
|
|
1008
|
+
fieldErrors: isCompleted ? {} : this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
|
|
1009
|
+
fieldWarnings: isCompleted ? {} : this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
|
|
1010
|
+
isDirty: isCompleted ? false : this.computeIsDirty(active),
|
|
942
1011
|
stepEnteredAt: active.stepEnteredAt,
|
|
943
1012
|
data: { ...active.data }
|
|
944
1013
|
};
|
|
@@ -1028,7 +1097,7 @@ export class PathEngine {
|
|
|
1028
1097
|
|
|
1029
1098
|
// Record that the user has attempted to advance — used by shells and step
|
|
1030
1099
|
// templates to gate error display ("punish late, reward early").
|
|
1031
|
-
this.
|
|
1100
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
1032
1101
|
|
|
1033
1102
|
// Phase: validating — canMoveNext guard
|
|
1034
1103
|
this._status = "validating";
|
|
@@ -1118,9 +1187,13 @@ export class PathEngine {
|
|
|
1118
1187
|
}
|
|
1119
1188
|
}
|
|
1120
1189
|
|
|
1121
|
-
private async _goToStepAsync(active: ActivePath, targetIndex: number): Promise<void> {
|
|
1190
|
+
private async _goToStepAsync(active: ActivePath, targetIndex: number, options?: { validateOnLeave?: boolean }): Promise<void> {
|
|
1122
1191
|
if (this._status !== "idle") return;
|
|
1123
1192
|
|
|
1193
|
+
if (options?.validateOnLeave) {
|
|
1194
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1124
1197
|
this._status = "leaving";
|
|
1125
1198
|
this.emitStateChanged("goToStep");
|
|
1126
1199
|
|
|
@@ -1140,9 +1213,13 @@ export class PathEngine {
|
|
|
1140
1213
|
}
|
|
1141
1214
|
}
|
|
1142
1215
|
|
|
1143
|
-
private async _goToStepCheckedAsync(active: ActivePath, targetIndex: number): Promise<void> {
|
|
1216
|
+
private async _goToStepCheckedAsync(active: ActivePath, targetIndex: number, options?: { validateOnLeave?: boolean }): Promise<void> {
|
|
1144
1217
|
if (this._status !== "idle") return;
|
|
1145
1218
|
|
|
1219
|
+
if (options?.validateOnLeave) {
|
|
1220
|
+
this._attemptedNextSteps.add(this.getCurrentItem(active).id);
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1146
1223
|
this._status = "validating";
|
|
1147
1224
|
this.emitStateChanged("goToStepChecked");
|
|
1148
1225
|
|
|
@@ -1244,13 +1321,31 @@ export class PathEngine {
|
|
|
1244
1321
|
snapshot: this.snapshot()!
|
|
1245
1322
|
});
|
|
1246
1323
|
} else {
|
|
1247
|
-
//
|
|
1324
|
+
// currentStepIndex was incremented past the last step in _nextAsync to
|
|
1325
|
+
// trigger completion. Back it up so snapshot() can reference the final step
|
|
1326
|
+
// if any stateChanged events fire during or after the completion sequence.
|
|
1327
|
+
finished.currentStepIndex = finished.definition.steps.length - 1;
|
|
1328
|
+
|
|
1329
|
+
// Top-level path completed — call onComplete before changing state so
|
|
1248
1330
|
// that if it throws the engine remains on the final step and can retry.
|
|
1249
1331
|
if (finished.definition.onComplete) {
|
|
1250
1332
|
await finished.definition.onComplete(finishedData);
|
|
1251
1333
|
}
|
|
1252
|
-
|
|
1253
|
-
|
|
1334
|
+
|
|
1335
|
+
const behaviour = finished.definition.completionBehaviour ?? "stayOnFinal";
|
|
1336
|
+
|
|
1337
|
+
if (behaviour === "dismiss") {
|
|
1338
|
+
this.activePath = null;
|
|
1339
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
1340
|
+
} else if (behaviour === "reset") {
|
|
1341
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
1342
|
+
await this.restart();
|
|
1343
|
+
} else {
|
|
1344
|
+
// "stayOnFinal" (default) — keep activePath alive, surface via completed status
|
|
1345
|
+
this._status = "completed";
|
|
1346
|
+
this.emitStateChanged("complete");
|
|
1347
|
+
this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
|
|
1348
|
+
}
|
|
1254
1349
|
}
|
|
1255
1350
|
}
|
|
1256
1351
|
|
|
@@ -1266,7 +1361,13 @@ export class PathEngine {
|
|
|
1266
1361
|
this._status = "completing";
|
|
1267
1362
|
try {
|
|
1268
1363
|
await this.finishActivePath();
|
|
1269
|
-
|
|
1364
|
+
// finishActivePath sets _status = "completed" for stayOnFinal paths.
|
|
1365
|
+
// For all other cases (dismiss, reset, sub-paths) reset to idle.
|
|
1366
|
+
// Cast needed: TS narrows _status to "completing" after the assignment above
|
|
1367
|
+
// and doesn't widen it after the async call, even though finishActivePath may change it.
|
|
1368
|
+
if ((this._status as PathStatus) !== "completed") {
|
|
1369
|
+
this._status = "idle";
|
|
1370
|
+
}
|
|
1270
1371
|
// No stateChanged here — finishActivePath emits "completed" or "resumed"
|
|
1271
1372
|
} catch (err) {
|
|
1272
1373
|
this._error = { message: PathEngine.errorMessage(err), phase: "completing", retryCount: this._retryCount };
|
|
@@ -1448,8 +1549,6 @@ export class PathEngine {
|
|
|
1448
1549
|
}
|
|
1449
1550
|
|
|
1450
1551
|
private async enterCurrentStep(): Promise<Partial<PathData> | void> {
|
|
1451
|
-
// Each step starts fresh — errors are not shown until the user attempts to proceed.
|
|
1452
|
-
this._hasAttemptedNext = false;
|
|
1453
1552
|
this._blockingError = null;
|
|
1454
1553
|
const active = this.activePath;
|
|
1455
1554
|
if (!active) return;
|