Skip to content

Commit 410628a

Browse files
committed
Refactor namespaces and add Enums, Interfaces folders
Moved enums (RouteTransition, RouterErrorType) to a new Enums folder and updated all references. Moved interfaces (IRouteGuard, IRouteMatcherService, IRouteMiddleware, IRouterErrorHandler) to a new Interfaces folder and updated usages. Updated sample and source files to use new namespaces. Added SetRange and SetIf methods to QueryStringBuilder for improved query string manipulation. Updated documentation and imports to reflect new structure.
1 parent 8ed079c commit 410628a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+157
-54
lines changed

ATTRIBUTE_ROUTING.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,9 @@ public partial class ProductsPage : ComponentBase
189189
### Basic Example
190190

191191
```csharp
192-
using Blazouter.Attributes;
192+
using Blazouter.Enums;
193193
using Blazouter.Models;
194+
using Blazouter.Attributes;
194195
using Microsoft.AspNetCore.Components;
195196

196197
namespace MyApp.Pages
@@ -208,8 +209,9 @@ namespace MyApp.Pages
208209
### Complete Example with All Attributes
209210

210211
```csharp
211-
using Blazouter.Attributes;
212+
using Blazouter.Enums;
212213
using Blazouter.Models;
214+
using Blazouter.Attributes;
213215
using Microsoft.AspNetCore.Components;
214216

215217
namespace MyApp.Pages

README.md

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,19 @@ Blazouter addresses the limitations of traditional Blazor routing:
2626

2727
| Feature | React Router | Blazor Router | **Blazouter** |
2828
|---------|--------------|---------------|---------------|
29-
| Lazy Loading | ✔ Route-based code splitting | ❌ Still limited in WASM | ✅ Full support |
30-
| Route Guards | ✔ Easy with wrappers/hooks | ❌ Manual, component-based | ✅ Built-in guard system |
31-
| Nested Routes | ✔ Easy to define child routes | ❌ Limited, single level with `@page` | ✅ Full support |
32-
| Dynamic Params | ✔ Easy route parameters | ✔ Available but basic | ✅ Enhanced with easy access |
33-
| Route Transitions | ✔ Very easy | ❌ No native support | ✅ Built-in transitions |
34-
| Conditional Rendering | ✔ Direct with `<Route>` | ❌ Manual via state | ✅ Component-based |
35-
| Programmatic Navigation |`navigate("/path")` |`NavigationManager.NavigateTo` | ✅ Enhanced navigation service |
29+
| Active Links | ✔ Built-in NavLink | ⚠️ Manual active class | ✅ Automatic with RouterLink |
30+
| Lazy Loading | ✔ Route-based code splitting | ❌ Still limited in WASM | ✅ Full support with ComponentLoader |
31+
| Route Guards | ✔ Easy with wrappers/hooks | ❌ Manual, component-based | ✅ Built-in IRouteGuard interface |
32+
| Layout System | ✔ Component composition | ⚠️ Static @layout | ✅ Dynamic per-route with priority |
33+
| Nested Routes | ✔ Easy to define child routes | ❌ Limited, single level with `@page` | ✅ Unlimited nesting with RouterOutlet |
34+
| Error Handling | ✔ Error boundaries | ❌ Manual | ✅ Built-in IRouterErrorHandler |
35+
| Attribute Routes | ✔ JSX-based |@page only | ✅ 9 attribute types with full config |
36+
| Dynamic Params | ✔ Easy route parameters | ✔ Available but basic | ✅ Enhanced with RouterStateService |
37+
| Route Transitions | ✔ Very easy | ❌ No native support | ✅ 14 built-in transition types |
38+
| Route Middleware | ✔ Route-level middleware | ❌ No native support | ✅ Built-in IRouteMiddleware interface |
39+
| Query String Helpers | ✔ URLSearchParams API | ❌ Manual parsing | ✅ Type-safe fluent API with 30+ methods |
40+
| Conditional Rendering | ✔ Direct with `<Route>` | ❌ Manual via state | ✅ Component-based rendering |
41+
| Programmatic Navigation |`navigate("/path")` |`NavigationManager.NavigateTo` | ✅ Enhanced RouterNavigationService |
3642

3743
### Key Features
3844

@@ -45,8 +51,8 @@ Blazouter addresses the limitations of traditional Blazor routing:
4551
- **📐 Layout System**: Flexible layout management with default and per-route layouts
4652
- **🔗 Programmatic Navigation**: Navigate imperatively with enhanced navigation service
4753
- **🔧 Route Middleware**: Execute code before/after navigation for logging, analytics, data preloading
48-
- **🔧 Query String Utilities**: Type-safe query string builder and typed parameter parsing with fluent API
4954
- **⚠️ Error Handling**: Comprehensive error handling with custom error handlers and retry mechanisms
55+
- **🔧 Query String Utilities**: Type-safe query string builder and typed parameter parsing with fluent API
5056
- **🎨 Route Transitions**: Beautiful animations when navigating between routes with 14 built-in transition types
5157

5258
## 📦 Available Packages
@@ -326,6 +332,7 @@ app.MapRazorComponents<App>()
326332
Define routes declaratively using attributes directly on your components:
327333

328334
```csharp
335+
using Blazouter.Enums;
329336
using Blazouter.Models;
330337
using Blazouter.Attributes;
331338
using Microsoft.AspNetCore.Components;
@@ -476,7 +483,7 @@ Create a middleware:
476483

477484
```csharp
478485
using Blazouter.Models;
479-
using Blazouter.Middleware;
486+
using Blazouter.Interfaces;
480487

481488
public class LoggingMiddleware : IRouteMiddleware
482489
{
@@ -534,8 +541,8 @@ new RouteConfig
534541
Create a guard:
535542

536543
```csharp
537-
using Blazouter.Guards;
538544
using Blazouter.Models;
545+
using Blazouter.Interfaces;
539546

540547
public class AuthGuard : IRouteGuard
541548
{
@@ -762,11 +769,14 @@ Blazouter/
762769
│ │ ├── Attributes/ # Route attribute definitions
763770
│ │ ├── Components/ # Router components (Router, RouterLink, RouterOutlet)
764771
│ │ │ └── Layouts/ # Built-in layout components
765-
│ │ ├── Extensions/ # Service collection and router extensions (typed query parameters, navigation)
766-
│ │ ├── Guards/ # Route guard interfaces
767-
│ │ ├── Models/ # Route models (RouteConfig, RouteMatch, RouteTransition)
772+
│ │ ├── Enums/ # Enumeration types (RouteTransition, RouterErrorType)
773+
│ │ ├── Extensions/ # Service collection and router extensions (typed query parameters, navigation, transitions)
774+
│ │ ├── Guards/ # Route guard implementations (AuthGuard)
775+
│ │ ├── Handlers/ # Error handler implementations (DefaultRouterErrorHandler)
776+
│ │ ├── Interfaces/ # Interface definitions (IRouteGuard, IRouteMiddleware, IRouteMatcherService, IRouterErrorHandler)
777+
│ │ ├── Models/ # Route models (RouteConfig, RouteMatch, RouterErrorContext, etc.)
768778
│ │ ├── Resources/ # Embedded resources
769-
│ │ ├── Services/ # Routing services (RouterStateService, RouteMatcherService, etc.)
779+
│ │ ├── Services/ # Routing services (RouterStateService, RouteMatcherService, RouterNavigationService, etc.)
770780
│ │ ├── Utilities/ # Query string builder and helper utilities
771781
│ │ └── wwwroot/ # CSS and assets (blazouter.css, blazouter.min.css)
772782
│ ├── Blazouter.Server/ # Server-specific extensions

samples/Blazouter.Hybrid.Sample/Components/Routes.razor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Blazouter.Enums;
12
using Blazouter.Models;
23
using Blazouter.Services;
34
using Microsoft.AspNetCore.Components;

samples/Blazouter.Server.Sample/Components/Routes.razor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Blazouter.Enums;
12
using Blazouter.Models;
23
using Blazouter.Services;
34
using Microsoft.AspNetCore.Components;

samples/Blazouter.Web.Sample/Blazouter.Web.Client.Sample/Services/CustomRouterErrorHandler.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Blazouter.Services;
1+
using Blazouter.Interfaces;
2+
using Blazouter.Models;
23

34
namespace Blazouter.Web.Client.Sample.Services
45
{

samples/Blazouter.Web.Sample/Blazouter.Web.Sample/Components/Routes.razor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Blazouter.Enums;
12
using Blazouter.Extensions;
23
using Blazouter.Models;
34
using Blazouter.Services;

samples/Blazouter.WebAssembly.Sample/App.razor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Blazouter.Enums;
12
using Blazouter.Extensions;
23
using Blazouter.Models;
34
using Blazouter.Services;

samples/Blazouter.WebAssembly.Sample/Guards/AuthGuard.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Blazouter.Guards;
1+
using Blazouter.Interfaces;
22
using Blazouter.Models;
33

44
namespace Blazouter.WebAssembly.Sample.Guards

samples/Blazouter.WebAssembly.Sample/Middlewares/AnalyticsMiddleware.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Blazouter.Middleware;
1+
using Blazouter.Interfaces;
22
using Blazouter.Models;
33

44
namespace Blazouter.WebAssembly.Sample.Middlewares

samples/Blazouter.WebAssembly.Sample/Middlewares/DataPreloadMiddleware.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Blazouter.Middleware;
1+
using Blazouter.Interfaces;
22
using Blazouter.Models;
33

44
namespace Blazouter.WebAssembly.Sample.Middlewares

0 commit comments

Comments
 (0)