Skip to content

Conversation

@mckaragoz
Copy link
Contributor

@mckaragoz mckaragoz commented Nov 16, 2025

MudStepperExtended – Major Navigation Engine Overhaul & Feature Expansion

Overview

This PR introduces a complete modernization of MudStepperExtended, including:

  • Full CSP compatibility
  • Full navigation engine rewrite (NotStarted, Continued, Completed, Skipped)
  • New, consistent API surface
  • Enhanced result-step lifecycle
  • Introducing new IntroStep
  • Improved status logic
  • UI/UX refinements
  • Basic keyboard navigation and accessibility
  • Documentation updates
  • Additional unit tests

The stepper is now far more predictable, extensible, and enterprise‑ready.
Fix #546 , Fix #444 , Fix #361 Fix #227


🚀 Navigation Engine Overhaul

A new central navigation engine has been implemented:

protected async Task NavigateToStepAsync(int targetIndex, bool skipPrevent)

Key Benefits

  • 100% consistent behavior across all navigation paths
  • Forward/backward direction detection fixed
  • Prevent callback invoked properly every time
  • Cleaner, unified internal flow
  • Less code duplication

New Public API

Task GoToStepAsync(int index)
Task GoByIndexAsync(int offset)
Task GoNextStepAsync()
Task GoPreviousStepAsync()
Task GoToStepByReferenceAsync(MudStepExtended step)

Old APIs (SetActiveIndex) remain functional but marked Obsolete for compatibility.


🧠 Step Status Logic Improvements

Status lifecycle is now fully defined:

NotStarted → Continued → Completed → Skipped

Fixes Included

  • Only active step becomes Continued
  • Completing/skipping non‑active steps no longer auto‑advances stepper
  • Last‑remaining‑step detection corrected
  • Result step excluded from status progression
  • Improved ActiveIndex rules

🎯 Result Step Workflow

Result step behavior was redesigned:

  • Allowed only one result step
  • Assigned index = Steps.Count
  • Always marked Completed
  • Excluded from navigation and ordering
  • Shown only when all steps are complete
  • Integrated with:
    • BeforeFinishedAsync
    • OnFinished

🧩 Actions Panel Improvements

Actions now use the new API:

  • Next / Previous / Skip logic rewritten
  • Finished-state button labels fixed
  • Accurate disable/enable behavior
  • Cleaner rendering
  • Icons and text modes improved

🎨 Header Rendering Enhancements

  • Accurate active/incomplete visual logic
  • Fixed grey-out mode
  • Fixed text behavior for OnlyActiveText / All
  • Stable layout for vertical and horizontal modes
  • Mobile header counter corrected
  • Better avatar/icon formatting

🔢 Dynamic Step Ordering Fixes

  • Order now immediately triggers a reorder
  • Non-result steps only
  • Fully stable ordering
  • Used throughout docs examples

📚 Documentation Update

All example pages are updated:

  • Playground
  • Ordering
  • Validation workflow
  • Result step
  • Mixed examples

🧪 Extended Unit Tests

New test coverage includes:

  • Navigation direction (Forward/Backward/None)
  • Prevent callback behavior
  • Completing vs skipping active/non-active steps
  • Result step activation
  • ActiveIndex behavior rules
  • Order behavior
  • First-unfinished-step navigation

🛠 Internal Refactors

  • Unified code paths
  • Simplified navigation logic
  • Removed redundancy
  • Clearer naming
  • More maintainable structure

✔️ Backwards Compatibility

  • Minimal breaking changes (may cause only visual breaking changes)
  • Old API preserved with Obsolete
  • All behavior improved without regressions

@mckaragoz mckaragoz merged commit cc39a16 into CodeBeamOrg:dev Nov 17, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant