mirror of https://github.com/abpframework/abp.git
2 changed files with 0 additions and 1309 deletions
File diff suppressed because it is too large
@ -1,271 +0,0 @@ |
|||
# Implementation Plan: Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor |
|||
|
|||
## Overview |
|||
This document outlines the plan to implement all missing features from `Volo.Abp.AspNetCore.Components.Web.Theming` (Blazorise version) into `Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor` (MudBlazor version). |
|||
|
|||
## Current Status |
|||
|
|||
### ✅ Already Implemented |
|||
1. **PageHeader Component** (`Components/PageHeader.razor` + `.razor.cs`) |
|||
2. **MudPageToolbarButton** (`PageToolbars/MudPageToolbarButton.razor` + `.razor.cs`) |
|||
3. **MudBlazorPageToolbarExtensions** (`PageToolbars/MudBlazorPageToolbarExtensions.cs`) - Contains `AddMudButton` method |
|||
4. **Module Registration** (`AbpAspNetCoreComponentsWebThemingMudBlazorModule.cs`) |
|||
|
|||
### ❌ Missing Features |
|||
|
|||
## Implementation Plan |
|||
|
|||
### Phase 1: Core Components (High Priority) |
|||
|
|||
#### 1.1 DynamicLayoutComponent |
|||
**Location:** `Components/DynamicLayoutComponent.razor` + `.razor.cs` |
|||
|
|||
**Description:** Renders dynamic components configured in `AbpDynamicLayoutComponentOptions`. |
|||
|
|||
**Implementation:** |
|||
- Copy `DynamicLayoutComponent.razor` from Blazorise version (no UI-specific code, should work as-is) |
|||
- Copy `DynamicLayoutComponent.razor.cs` from Blazorise version (no UI-specific code, should work as-is) |
|||
- These components are UI-agnostic and can be directly copied |
|||
|
|||
**Files to Create:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Components/DynamicLayoutComponent.razor` |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Components/DynamicLayoutComponent.razor.cs` |
|||
|
|||
**Dependencies:** None (uses base `AbpAspNetCoreComponentsWebThemingModule`) |
|||
|
|||
--- |
|||
|
|||
#### 1.2 LayoutHook Component |
|||
**Location:** `Components/LayoutHooks/LayoutHook.razor` + `.razor.cs` |
|||
|
|||
**Description:** Renders layout hooks that allow injecting components at specific points in layouts. |
|||
|
|||
**Implementation:** |
|||
- Copy `LayoutHook.razor` from Blazorise version (no UI-specific code, should work as-is) |
|||
- Copy `LayoutHook.razor.cs` from Blazorise version (no UI-specific code, should work as-is) |
|||
- These components are UI-agnostic and can be directly copied |
|||
|
|||
**Files to Create:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Components/LayoutHooks/LayoutHook.razor` |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Components/LayoutHooks/LayoutHook.razor.cs` |
|||
|
|||
**Dependencies:** None (uses base `AbpAspNetCoreComponentsWeb.Theming` infrastructure) |
|||
|
|||
--- |
|||
|
|||
### Phase 2: Bundling Components (High Priority) |
|||
|
|||
#### 2.1 AbpStyles Component |
|||
**Location:** `Bundling/AbpStyles.razor` |
|||
|
|||
**Description:** Renders CSS stylesheets with support for prerendering and WebAssembly. |
|||
|
|||
**Implementation:** |
|||
- Copy `AbpStyles.razor` from Blazorise version |
|||
- This component is UI-agnostic and can be directly copied |
|||
- Handles: |
|||
- Prerendering support |
|||
- WebAssembly style file handling |
|||
- Bundle management via `IComponentBundleManager` |
|||
|
|||
**Files to Create:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Bundling/AbpStyles.razor` |
|||
|
|||
**Dependencies:** |
|||
- `IComponentBundleManager` (from base `Volo.Abp.AspNetCore.Components.Web.Theming`) |
|||
|
|||
--- |
|||
|
|||
#### 2.2 AbpScripts Component |
|||
**Location:** `Bundling/AbpScripts.razor` |
|||
|
|||
**Description:** Renders JavaScript files with support for prerendering and WebAssembly. |
|||
|
|||
**Implementation:** |
|||
- Copy `AbpScripts.razor` from Blazorise version |
|||
- This component is UI-agnostic and can be directly copied |
|||
- Handles: |
|||
- Prerendering support |
|||
- WebAssembly script file handling |
|||
- Bundle management via `IComponentBundleManager` |
|||
|
|||
**Files to Create:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/Bundling/AbpScripts.razor` |
|||
|
|||
**Dependencies:** |
|||
- `IComponentBundleManager` (from base `Volo.Abp.AspNetCore.Components.Web.Theming`) |
|||
|
|||
--- |
|||
|
|||
### Phase 3: PageToolbar Extensions (Medium Priority) |
|||
|
|||
#### 3.1 AddComponent Extension Methods |
|||
**Location:** `PageToolbars/MudBlazorPageToolbarExtensions.cs` |
|||
|
|||
**Description:** Add `AddComponent` extension methods to `PageToolbar` for adding custom components to toolbars. |
|||
|
|||
**Current State:** Only `AddMudButton` exists. |
|||
|
|||
**Implementation:** |
|||
- Add `AddComponent<TComponent>` generic method |
|||
- Add `AddComponent(Type componentType, ...)` non-generic method |
|||
- These methods should use `SimplePageToolbarContributor` (from base project) |
|||
- Follow the same pattern as Blazorise version but without UI-specific code |
|||
|
|||
**Files to Update:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/PageToolbars/MudBlazorPageToolbarExtensions.cs` |
|||
|
|||
**Example Implementation:** |
|||
```csharp |
|||
public static PageToolbar AddComponent<TComponent>( |
|||
this PageToolbar toolbar, |
|||
Dictionary<string, object?>? arguments = null, |
|||
int order = 0, |
|||
string? requiredPolicyName = null) |
|||
{ |
|||
return toolbar.AddComponent( |
|||
typeof(TComponent), |
|||
arguments, |
|||
order, |
|||
requiredPolicyName |
|||
); |
|||
} |
|||
|
|||
public static PageToolbar AddComponent( |
|||
this PageToolbar toolbar, |
|||
Type componentType, |
|||
Dictionary<string, object?>? arguments = null, |
|||
int order = 0, |
|||
string? requiredPolicyName = null) |
|||
{ |
|||
toolbar.Contributors.Add( |
|||
new SimplePageToolbarContributor( |
|||
componentType, |
|||
arguments, |
|||
order, |
|||
requiredPolicyName |
|||
) |
|||
); |
|||
|
|||
return toolbar; |
|||
} |
|||
``` |
|||
|
|||
**Dependencies:** |
|||
- `SimplePageToolbarContributor` (from base `Volo.Abp.AspNetCore.Components.Web.Theming`) |
|||
|
|||
--- |
|||
|
|||
### Phase 4: Module Configuration (Low Priority - Optional) |
|||
|
|||
#### 4.1 Module Service Configuration |
|||
**Location:** `AbpAspNetCoreComponentsWebThemingMudBlazorModule.cs` |
|||
|
|||
**Description:** Configure any MudBlazor-specific services or options. |
|||
|
|||
**Current State:** Module is empty (only depends on base modules). |
|||
|
|||
**Implementation:** |
|||
- Review if any MudBlazor-specific configuration is needed |
|||
- Currently, the base `AbpAspNetCoreComponentsWebThemingModule` handles `AbpDynamicLayoutComponentOptions` |
|||
- May need to add MudBlazor-specific component registrations if required |
|||
|
|||
**Files to Update:** |
|||
- `framework/src/Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor/AbpAspNetCoreComponentsWebThemingMudBlazorModule.cs` |
|||
|
|||
**Note:** This may not be necessary if all configuration is handled in the base module or in theme-specific packages. |
|||
|
|||
--- |
|||
|
|||
## Implementation Notes |
|||
|
|||
### UI-Agnostic Components |
|||
The following components are **UI-agnostic** and can be copied directly from the Blazorise version: |
|||
- `DynamicLayoutComponent` |
|||
- `LayoutHook` |
|||
- `AbpStyles` |
|||
- `AbpScripts` |
|||
|
|||
These components don't use any Blazorise-specific UI components and rely only on: |
|||
- Base Blazor components (`ComponentBase`, `DynamicComponent`) |
|||
- ABP infrastructure (options, services) |
|||
- Standard .NET types |
|||
|
|||
### Infrastructure Already Available |
|||
The following infrastructure is already available in the base `Volo.Abp.AspNetCore.Components.Web.Theming` project and doesn't need to be reimplemented: |
|||
- `PageToolbar`, `PageToolbarManager`, `IPageToolbarManager` |
|||
- `PageToolbarContributor`, `SimplePageToolbarContributor` |
|||
- `PageToolbarItem`, `PageToolbarItemList` |
|||
- `PageLayout`, `PageHeaderOptions` |
|||
- `StandardLayouts` |
|||
- `AbpRouterOptions`, `RouterAssemblyList` |
|||
- `IThemeManager`, `ITheme`, theme infrastructure |
|||
- `ToolbarManager`, `Toolbar`, toolbar infrastructure |
|||
- `AbpDynamicLayoutComponentOptions` |
|||
- `IComponentBundleManager` |
|||
|
|||
### Testing Checklist |
|||
After implementing each phase, verify: |
|||
1. ✅ Components compile without errors |
|||
2. ✅ Components can be used in MudBlazor layouts |
|||
3. ✅ Bundling components work with prerendering |
|||
4. ✅ Layout hooks render correctly |
|||
5. ✅ Dynamic layout components render correctly |
|||
6. ✅ PageToolbar extensions work with MudBlazor components |
|||
|
|||
--- |
|||
|
|||
## Implementation Order |
|||
|
|||
1. **Phase 1** - Core Components (DynamicLayoutComponent, LayoutHook) |
|||
- These are foundational and used by layouts |
|||
- UI-agnostic, easy to implement |
|||
|
|||
2. **Phase 2** - Bundling Components (AbpStyles, AbpScripts) |
|||
- Required for proper asset loading |
|||
- UI-agnostic, easy to implement |
|||
|
|||
3. **Phase 3** - PageToolbar Extensions |
|||
- Enhances toolbar functionality |
|||
- Straightforward implementation |
|||
|
|||
4. **Phase 4** - Module Configuration |
|||
- Optional, only if needed |
|||
|
|||
--- |
|||
|
|||
## Files Summary |
|||
|
|||
### Files to Create (7 files) |
|||
1. `Components/DynamicLayoutComponent.razor` |
|||
2. `Components/DynamicLayoutComponent.razor.cs` |
|||
3. `Components/LayoutHooks/LayoutHook.razor` |
|||
4. `Components/LayoutHooks/LayoutHook.razor.cs` |
|||
5. `Bundling/AbpStyles.razor` |
|||
6. `Bundling/AbpScripts.razor` |
|||
7. (Optional) Update `PageToolbars/MudBlazorPageToolbarExtensions.cs` |
|||
|
|||
### Files to Update (1 file) |
|||
1. `PageToolbars/MudBlazorPageToolbarExtensions.cs` - Add `AddComponent` methods |
|||
|
|||
--- |
|||
|
|||
## Estimated Effort |
|||
|
|||
- **Phase 1:** ~30 minutes (copy files, verify) |
|||
- **Phase 2:** ~30 minutes (copy files, verify) |
|||
- **Phase 3:** ~20 minutes (add extension methods) |
|||
- **Phase 4:** ~10 minutes (if needed) |
|||
|
|||
**Total:** ~1.5 hours |
|||
|
|||
--- |
|||
|
|||
## Dependencies |
|||
|
|||
All required dependencies are already available: |
|||
- Base `Volo.Abp.AspNetCore.Components.Web.Theming` project |
|||
- `Volo.Abp.MudBlazorUI` project |
|||
- Standard Blazor infrastructure |
|||
|
|||
No new NuGet packages or project references are required. |
|||
Loading…
Reference in new issue