@daltonr/pathwrite-core 0.11.0 → 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 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"`, `"active"`, `"completed"`, or `"cancelled"`. |
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`.
@@ -317,8 +331,12 @@ export interface PathSnapshot<TData extends PathData = PathData> {
317
331
  hasValidated: boolean;
318
332
  /**
319
333
  * True after the user has clicked Next / Submit on this step at least once,
320
- * regardless of whether navigation succeeded. Resets to `false` when entering
321
- * a new step.
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()`.
322
340
  *
323
341
  * Use this to gate inline field-error display so errors are hidden on first
324
342
  * render and only appear after the user has attempted to proceed:
@@ -329,6 +347,10 @@ export interface PathSnapshot<TData extends PathData = PathData> {
329
347
  * {/if}
330
348
  * ```
331
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
+ *
332
354
  * The shell itself uses this flag to gate its own automatic `fieldErrors`
333
355
  * summary rendering — errors are never shown before the first Next attempt.
334
356
  */
@@ -390,7 +412,7 @@ export interface PathSnapshot<TData extends PathData = PathData> {
390
412
  /**
391
413
  * Identifies the public method that triggered a `stateChanged` event.
392
414
  */
393
- export type StateChangeCause = "start" | "next" | "previous" | "goToStep" | "goToStepChecked" | "setData" | "resetStep" | "cancel" | "restart" | "retry" | "suspend" | "validate";
415
+ export type StateChangeCause = "start" | "next" | "previous" | "complete" | "goToStep" | "goToStepChecked" | "setData" | "resetStep" | "cancel" | "restart" | "retry" | "suspend" | "validate";
394
416
  export type PathEvent = {
395
417
  type: "stateChanged";
396
418
  cause: StateChangeCause;
@@ -487,8 +509,8 @@ export declare class PathEngine {
487
509
  private readonly pathStack;
488
510
  private readonly listeners;
489
511
  private _status;
490
- /** True after the user has called next() on the current step at least once. Resets on step entry. */
491
- private _hasAttemptedNext;
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;
492
514
  /** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
493
515
  private _hasValidated;
494
516
  /** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
@@ -587,8 +609,17 @@ export declare class PathEngine {
587
609
  * Throws if no path is active.
588
610
  */
589
611
  resetStep(): Promise<void>;
590
- /** Jumps directly to the step with the given ID. Does not check guards or shouldSkip. */
591
- goToStep(stepId: string): Promise<void>;
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>;
592
623
  /**
593
624
  * Jumps directly to the step with the given ID, but first checks the
594
625
  * direction-appropriate guard on the current step:
@@ -599,7 +630,9 @@ export declare class PathEngine {
599
630
  * emitted (so the UI can react). `shouldSkip` is not evaluated.
600
631
  * Throws if the target step ID does not exist.
601
632
  */
602
- goToStepChecked(stepId: string): Promise<void>;
633
+ goToStepChecked(stepId: string, options?: {
634
+ validateOnLeave?: boolean;
635
+ }): Promise<void>;
603
636
  /**
604
637
  * Marks the engine as validation-attempted without navigating. Sets the
605
638
  * `hasValidated` flag on the snapshot so all step components can show their
package/dist/index.js CHANGED
@@ -61,8 +61,8 @@ export class PathEngine {
61
61
  pathStack = [];
62
62
  listeners = new Set();
63
63
  _status = "idle";
64
- /** True after the user has called next() on the current step at least once. Resets on step entry. */
65
- _hasAttemptedNext = false;
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
66
  /** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
67
67
  _hasValidated = false;
68
68
  /** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
@@ -167,6 +167,7 @@ export class PathEngine {
167
167
  this._rootPath = path;
168
168
  this._rootInitialData = initialData;
169
169
  this._hasValidated = false;
170
+ this._attemptedNextSteps.clear();
170
171
  return this._startAsync(path, initialData);
171
172
  }
172
173
  /**
@@ -187,6 +188,7 @@ export class PathEngine {
187
188
  this._status = "idle";
188
189
  this._blockingError = null;
189
190
  this._hasValidated = false;
191
+ this._attemptedNextSteps.clear();
190
192
  this.activePath = null;
191
193
  this.pathStack.length = 0;
192
194
  return this._startAsync(this._rootPath, { ...this._rootInitialData });
@@ -204,6 +206,8 @@ export class PathEngine {
204
206
  * sub-path's own data.
205
207
  */
206
208
  startSubPath(path, initialData = {}, meta) {
209
+ if (this._status === "completed")
210
+ return Promise.resolve();
207
211
  this.requireActivePath();
208
212
  return this._startAsync(path, initialData, meta);
209
213
  }
@@ -288,6 +292,8 @@ export class PathEngine {
288
292
  }
289
293
  }
290
294
  setData(key, value) {
295
+ if (this._status === "completed")
296
+ return Promise.resolve();
291
297
  const active = this.requireActivePath();
292
298
  active.data[key] = value;
293
299
  this.emitStateChanged("setData");
@@ -300,20 +306,29 @@ export class PathEngine {
300
306
  * Throws if no path is active.
301
307
  */
302
308
  resetStep() {
309
+ if (this._status === "completed")
310
+ return Promise.resolve();
303
311
  const active = this.requireActivePath();
304
312
  // Restore data from the snapshot taken when this step was entered
305
313
  active.data = { ...active.stepEntryData };
306
314
  this.emitStateChanged("resetStep");
307
315
  return Promise.resolve();
308
316
  }
309
- /** Jumps directly to the step with the given ID. Does not check guards or shouldSkip. */
310
- goToStep(stepId) {
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) {
311
326
  const active = this.requireActivePath();
312
327
  const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
313
328
  if (targetIndex === -1) {
314
329
  throw new Error(`Step "${stepId}" not found in path "${active.definition.id}".`);
315
330
  }
316
- return this._goToStepAsync(active, targetIndex);
331
+ return this._goToStepAsync(active, targetIndex, options);
317
332
  }
318
333
  /**
319
334
  * Jumps directly to the step with the given ID, but first checks the
@@ -325,7 +340,7 @@ export class PathEngine {
325
340
  * emitted (so the UI can react). `shouldSkip` is not evaluated.
326
341
  * Throws if the target step ID does not exist.
327
342
  */
328
- goToStepChecked(stepId) {
343
+ goToStepChecked(stepId, options) {
329
344
  const active = this.requireActivePath();
330
345
  const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
331
346
  if (targetIndex === -1) {
@@ -333,7 +348,7 @@ export class PathEngine {
333
348
  }
334
349
  if (targetIndex === active.currentStepIndex)
335
350
  return Promise.resolve();
336
- return this._goToStepCheckedAsync(active, targetIndex);
351
+ return this._goToStepCheckedAsync(active, targetIndex, options);
337
352
  }
338
353
  /**
339
354
  * Marks the engine as validation-attempted without navigating. Sets the
@@ -388,6 +403,7 @@ export class PathEngine {
388
403
  }))
389
404
  };
390
405
  }
406
+ const isCompleted = this._status === "completed";
391
407
  return {
392
408
  pathId: active.definition.id,
393
409
  stepId: item.id,
@@ -396,31 +412,30 @@ export class PathEngine {
396
412
  formId: isStepChoice(item) ? effectiveStep.id : undefined,
397
413
  stepIndex: effectiveStepIndex,
398
414
  stepCount,
399
- progress: stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1),
415
+ progress: isCompleted ? 1 : (stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1)),
400
416
  steps: visibleSteps.map((s, i) => ({
401
417
  id: s.id,
402
418
  title: s.title,
403
419
  meta: s.meta,
404
- status: i < effectiveStepIndex ? "completed"
420
+ status: (isCompleted || i < effectiveStepIndex) ? "completed"
405
421
  : i === effectiveStepIndex ? "current"
406
422
  : "upcoming"
407
423
  })),
408
- isFirstStep: effectiveStepIndex === 0,
409
- isLastStep: effectiveStepIndex === stepCount - 1 &&
410
- this.pathStack.length === 0,
424
+ isFirstStep: isCompleted ? false : effectiveStepIndex === 0,
425
+ isLastStep: isCompleted ? true : (effectiveStepIndex === stepCount - 1 && this.pathStack.length === 0),
411
426
  nestingLevel: this.pathStack.length,
412
427
  rootProgress,
413
428
  status: this._status,
414
429
  error: this._error,
415
430
  hasPersistence: this._hasPersistence,
416
431
  hasValidated: this._hasValidated,
417
- hasAttemptedNext: this._hasAttemptedNext,
432
+ hasAttemptedNext: this._attemptedNextSteps.has(item.id),
418
433
  blockingError: this._blockingError,
419
- canMoveNext: this.evaluateCanMoveNextSync(effectiveStep, active),
420
- canMovePrevious: this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
421
- fieldErrors: this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
422
- fieldWarnings: this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
423
- 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),
424
439
  stepEnteredAt: active.stepEnteredAt,
425
440
  data: { ...active.data }
426
441
  };
@@ -499,7 +514,7 @@ export class PathEngine {
499
514
  return;
500
515
  // Record that the user has attempted to advance — used by shells and step
501
516
  // templates to gate error display ("punish late, reward early").
502
- this._hasAttemptedNext = true;
517
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
503
518
  // Phase: validating — canMoveNext guard
504
519
  this._status = "validating";
505
520
  this.emitStateChanged("next");
@@ -578,9 +593,12 @@ export class PathEngine {
578
593
  throw err;
579
594
  }
580
595
  }
581
- async _goToStepAsync(active, targetIndex) {
596
+ async _goToStepAsync(active, targetIndex, options) {
582
597
  if (this._status !== "idle")
583
598
  return;
599
+ if (options?.validateOnLeave) {
600
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
601
+ }
584
602
  this._status = "leaving";
585
603
  this.emitStateChanged("goToStep");
586
604
  try {
@@ -597,9 +615,12 @@ export class PathEngine {
597
615
  throw err;
598
616
  }
599
617
  }
600
- async _goToStepCheckedAsync(active, targetIndex) {
618
+ async _goToStepCheckedAsync(active, targetIndex, options) {
601
619
  if (this._status !== "idle")
602
620
  return;
621
+ if (options?.validateOnLeave) {
622
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
623
+ }
603
624
  this._status = "validating";
604
625
  this.emitStateChanged("goToStepChecked");
605
626
  try {
@@ -684,13 +705,30 @@ export class PathEngine {
684
705
  });
685
706
  }
686
707
  else {
687
- // Top-level path completed call onComplete before clearing activePath so
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
688
713
  // that if it throws the engine remains on the final step and can retry.
689
714
  if (finished.definition.onComplete) {
690
715
  await finished.definition.onComplete(finishedData);
691
716
  }
692
- this.activePath = null;
693
- this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
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
+ }
694
732
  }
695
733
  }
696
734
  /**
@@ -705,7 +743,13 @@ export class PathEngine {
705
743
  this._status = "completing";
706
744
  try {
707
745
  await this.finishActivePath();
708
- this._status = "idle";
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
+ }
709
753
  // No stateChanged here — finishActivePath emits "completed" or "resumed"
710
754
  }
711
755
  catch (err) {
@@ -871,8 +915,6 @@ export class PathEngine {
871
915
  }
872
916
  }
873
917
  async enterCurrentStep() {
874
- // Each step starts fresh — errors are not shown until the user attempts to proceed.
875
- this._hasAttemptedNext = false;
876
918
  this._blockingError = null;
877
919
  const active = this.activePath;
878
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daltonr/pathwrite-core",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Headless path engine — deterministic state machine with stack-based sub-path orchestration. Zero dependencies.",
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
  /**
@@ -341,8 +356,12 @@ export interface PathSnapshot<TData extends PathData = PathData> {
341
356
  hasValidated: boolean;
342
357
  /**
343
358
  * True after the user has clicked Next / Submit on this step at least once,
344
- * regardless of whether navigation succeeded. Resets to `false` when entering
345
- * a new step.
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()`.
346
365
  *
347
366
  * Use this to gate inline field-error display so errors are hidden on first
348
367
  * render and only appear after the user has attempted to proceed:
@@ -353,6 +372,10 @@ export interface PathSnapshot<TData extends PathData = PathData> {
353
372
  * {/if}
354
373
  * ```
355
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
+ *
356
379
  * The shell itself uses this flag to gate its own automatic `fieldErrors`
357
380
  * summary rendering — errors are never shown before the first Next attempt.
358
381
  */
@@ -419,6 +442,7 @@ export type StateChangeCause =
419
442
  | "start"
420
443
  | "next"
421
444
  | "previous"
445
+ | "complete"
422
446
  | "goToStep"
423
447
  | "goToStepChecked"
424
448
  | "setData"
@@ -576,8 +600,8 @@ export class PathEngine {
576
600
  private readonly pathStack: ActivePath[] = [];
577
601
  private readonly listeners = new Set<(event: PathEvent) => void>();
578
602
  private _status: PathStatus = "idle";
579
- /** True after the user has called next() on the current step at least once. Resets on step entry. */
580
- private _hasAttemptedNext = false;
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>();
581
605
  /** True after validate() has been called. Global — does not reset on step navigation. Resets on start/restart. */
582
606
  private _hasValidated = false;
583
607
  /** Blocking message from canMoveNext returning { allowed: false, reason }. Cleared on step entry. */
@@ -702,6 +726,7 @@ export class PathEngine {
702
726
  this._rootPath = path;
703
727
  this._rootInitialData = initialData;
704
728
  this._hasValidated = false;
729
+ this._attemptedNextSteps.clear();
705
730
  return this._startAsync(path, initialData);
706
731
  }
707
732
 
@@ -723,6 +748,7 @@ export class PathEngine {
723
748
  this._status = "idle";
724
749
  this._blockingError = null;
725
750
  this._hasValidated = false;
751
+ this._attemptedNextSteps.clear();
726
752
  this.activePath = null;
727
753
  this.pathStack.length = 0;
728
754
  return this._startAsync(this._rootPath, { ...this._rootInitialData });
@@ -741,6 +767,7 @@ export class PathEngine {
741
767
  * sub-path's own data.
742
768
  */
743
769
  public startSubPath(path: PathDefinition<any>, initialData: PathData = {}, meta?: Record<string, unknown>): Promise<void> {
770
+ if (this._status === "completed") return Promise.resolve();
744
771
  this.requireActivePath();
745
772
  return this._startAsync(path, initialData, meta);
746
773
  }
@@ -831,6 +858,7 @@ export class PathEngine {
831
858
  }
832
859
 
833
860
  public setData(key: string, value: unknown): Promise<void> {
861
+ if (this._status === "completed") return Promise.resolve();
834
862
  const active = this.requireActivePath();
835
863
  active.data[key] = value;
836
864
  this.emitStateChanged("setData");
@@ -844,6 +872,7 @@ export class PathEngine {
844
872
  * Throws if no path is active.
845
873
  */
846
874
  public resetStep(): Promise<void> {
875
+ if (this._status === "completed") return Promise.resolve();
847
876
  const active = this.requireActivePath();
848
877
  // Restore data from the snapshot taken when this step was entered
849
878
  active.data = { ...active.stepEntryData };
@@ -851,14 +880,21 @@ export class PathEngine {
851
880
  return Promise.resolve();
852
881
  }
853
882
 
854
- /** Jumps directly to the step with the given ID. Does not check guards or shouldSkip. */
855
- public goToStep(stepId: string): Promise<void> {
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> {
856
892
  const active = this.requireActivePath();
857
893
  const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
858
894
  if (targetIndex === -1) {
859
895
  throw new Error(`Step "${stepId}" not found in path "${active.definition.id}".`);
860
896
  }
861
- return this._goToStepAsync(active, targetIndex);
897
+ return this._goToStepAsync(active, targetIndex, options);
862
898
  }
863
899
 
864
900
  /**
@@ -871,14 +907,14 @@ export class PathEngine {
871
907
  * emitted (so the UI can react). `shouldSkip` is not evaluated.
872
908
  * Throws if the target step ID does not exist.
873
909
  */
874
- public goToStepChecked(stepId: string): Promise<void> {
910
+ public goToStepChecked(stepId: string, options?: { validateOnLeave?: boolean }): Promise<void> {
875
911
  const active = this.requireActivePath();
876
912
  const targetIndex = active.definition.steps.findIndex((s) => s.id === stepId);
877
913
  if (targetIndex === -1) {
878
914
  return Promise.reject(new Error(`Step "${stepId}" not found in path "${active.definition.id}".`));
879
915
  }
880
916
  if (targetIndex === active.currentStepIndex) return Promise.resolve();
881
- return this._goToStepCheckedAsync(active, targetIndex);
917
+ return this._goToStepCheckedAsync(active, targetIndex, options);
882
918
  }
883
919
 
884
920
  /**
@@ -938,6 +974,8 @@ export class PathEngine {
938
974
  };
939
975
  }
940
976
 
977
+ const isCompleted = this._status === "completed";
978
+
941
979
  return {
942
980
  pathId: active.definition.id,
943
981
  stepId: item.id,
@@ -946,32 +984,30 @@ export class PathEngine {
946
984
  formId: isStepChoice(item) ? effectiveStep.id : undefined,
947
985
  stepIndex: effectiveStepIndex,
948
986
  stepCount,
949
- progress: stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1),
987
+ progress: isCompleted ? 1 : (stepCount <= 1 ? 1 : effectiveStepIndex / (stepCount - 1)),
950
988
  steps: visibleSteps.map((s, i) => ({
951
989
  id: s.id,
952
990
  title: s.title,
953
991
  meta: s.meta,
954
- status: i < effectiveStepIndex ? "completed" as const
992
+ status: (isCompleted || i < effectiveStepIndex) ? "completed" as const
955
993
  : i === effectiveStepIndex ? "current" as const
956
994
  : "upcoming" as const
957
995
  })),
958
- isFirstStep: effectiveStepIndex === 0,
959
- isLastStep:
960
- effectiveStepIndex === stepCount - 1 &&
961
- this.pathStack.length === 0,
996
+ isFirstStep: isCompleted ? false : effectiveStepIndex === 0,
997
+ isLastStep: isCompleted ? true : (effectiveStepIndex === stepCount - 1 && this.pathStack.length === 0),
962
998
  nestingLevel: this.pathStack.length,
963
999
  rootProgress,
964
1000
  status: this._status,
965
1001
  error: this._error,
966
1002
  hasPersistence: this._hasPersistence,
967
1003
  hasValidated: this._hasValidated,
968
- hasAttemptedNext: this._hasAttemptedNext,
1004
+ hasAttemptedNext: this._attemptedNextSteps.has(item.id),
969
1005
  blockingError: this._blockingError,
970
- canMoveNext: this.evaluateCanMoveNextSync(effectiveStep, active),
971
- canMovePrevious: this.evaluateGuardSync(effectiveStep.canMovePrevious, active),
972
- fieldErrors: this.evaluateFieldMessagesSync(effectiveStep.fieldErrors, active),
973
- fieldWarnings: this.evaluateFieldMessagesSync(effectiveStep.fieldWarnings, active),
974
- 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),
975
1011
  stepEnteredAt: active.stepEnteredAt,
976
1012
  data: { ...active.data }
977
1013
  };
@@ -1061,7 +1097,7 @@ export class PathEngine {
1061
1097
 
1062
1098
  // Record that the user has attempted to advance — used by shells and step
1063
1099
  // templates to gate error display ("punish late, reward early").
1064
- this._hasAttemptedNext = true;
1100
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
1065
1101
 
1066
1102
  // Phase: validating — canMoveNext guard
1067
1103
  this._status = "validating";
@@ -1151,9 +1187,13 @@ export class PathEngine {
1151
1187
  }
1152
1188
  }
1153
1189
 
1154
- private async _goToStepAsync(active: ActivePath, targetIndex: number): Promise<void> {
1190
+ private async _goToStepAsync(active: ActivePath, targetIndex: number, options?: { validateOnLeave?: boolean }): Promise<void> {
1155
1191
  if (this._status !== "idle") return;
1156
1192
 
1193
+ if (options?.validateOnLeave) {
1194
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
1195
+ }
1196
+
1157
1197
  this._status = "leaving";
1158
1198
  this.emitStateChanged("goToStep");
1159
1199
 
@@ -1173,9 +1213,13 @@ export class PathEngine {
1173
1213
  }
1174
1214
  }
1175
1215
 
1176
- private async _goToStepCheckedAsync(active: ActivePath, targetIndex: number): Promise<void> {
1216
+ private async _goToStepCheckedAsync(active: ActivePath, targetIndex: number, options?: { validateOnLeave?: boolean }): Promise<void> {
1177
1217
  if (this._status !== "idle") return;
1178
1218
 
1219
+ if (options?.validateOnLeave) {
1220
+ this._attemptedNextSteps.add(this.getCurrentItem(active).id);
1221
+ }
1222
+
1179
1223
  this._status = "validating";
1180
1224
  this.emitStateChanged("goToStepChecked");
1181
1225
 
@@ -1277,13 +1321,31 @@ export class PathEngine {
1277
1321
  snapshot: this.snapshot()!
1278
1322
  });
1279
1323
  } else {
1280
- // Top-level path completed call onComplete before clearing activePath so
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
1281
1330
  // that if it throws the engine remains on the final step and can retry.
1282
1331
  if (finished.definition.onComplete) {
1283
1332
  await finished.definition.onComplete(finishedData);
1284
1333
  }
1285
- this.activePath = null;
1286
- this.emit({ type: "completed", pathId: finishedPathId, data: finishedData });
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
+ }
1287
1349
  }
1288
1350
  }
1289
1351
 
@@ -1299,7 +1361,13 @@ export class PathEngine {
1299
1361
  this._status = "completing";
1300
1362
  try {
1301
1363
  await this.finishActivePath();
1302
- this._status = "idle";
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
+ }
1303
1371
  // No stateChanged here — finishActivePath emits "completed" or "resumed"
1304
1372
  } catch (err) {
1305
1373
  this._error = { message: PathEngine.errorMessage(err), phase: "completing", retryCount: this._retryCount };
@@ -1481,8 +1549,6 @@ export class PathEngine {
1481
1549
  }
1482
1550
 
1483
1551
  private async enterCurrentStep(): Promise<Partial<PathData> | void> {
1484
- // Each step starts fresh — errors are not shown until the user attempts to proceed.
1485
- this._hasAttemptedNext = false;
1486
1552
  this._blockingError = null;
1487
1553
  const active = this.activePath;
1488
1554
  if (!active) return;