diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 08aafba89a..39bda320fb 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -225,6 +225,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); #endregion + + #region MyCompanyName.MyProjectName.MauiBlazor + + ChangeThemeToLeptonForMauiBlazorProjects(context); + + #endregion } private void ConfigureLeptonManagementPackagesForNoLayersMvc(ProjectBuildContext context, string targetProjectPath, string[] projectNames) @@ -488,6 +494,33 @@ public class ChangeThemeStep : ProjectBuildPipelineStep file.SetLines(lines); } + protected void ChangeKeyword( + ProjectBuildContext context, + string targetModuleFilePath, + string oldKeyword, + string newKeyword) + { + var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); + if (file == null) + { + return; + } + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains(oldKeyword)) + { + lines[i] = lines[i].Replace(oldKeyword, newKeyword); + } + } + + file.SetLines(lines); + } + protected void ReplaceImportPackage( ProjectBuildContext context, string filePath, @@ -973,4 +1006,53 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ); } } + + private void ChangeThemeToLeptonForMauiBlazorProjects(ProjectBuildContext context) + { + ReplacePackageReferenceWithProjectReference( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/MyCompanyName.MyProjectName.MauiBlazor.csproj", + "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/MyProjectNameMauiBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme", + "AbpAspNetCoreComponentsMauiBlazorLeptonXThemeModule", + "AbpAspNetCoreComponentsMauiBlazorLeptonThemeModule" + ); + + ChangeKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml", + "clr-namespace:Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components;assembly=Volo.Abp.AspNetCore.Components.Web.LeptonXTheme", + "clr-namespace:Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components;assembly=Volo.Abp.AspNetCore.Components.Web.LeptonTheme"); + + ChangeKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml", + "leptonXTheme", + "leptonTheme"); + + ChangeKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/Login.razor", + "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme.Components.AccountLayout", + "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.Components.AccountLayout"); + + ChangeKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/RedirectToLogout.razor", + "LeptonXResource", + "LeptonThemeManagementResource"); + + ChangeKeyword( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/RedirectToLogout.razor", + "Volo.Abp.LeptonX.Shared.Localization", + "Volo.Abp.LeptonTheme.Management.Localization"); + } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs index c9b2473bcb..b05a3a08c0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs @@ -16,5 +16,6 @@ public enum NuGetPackageTarget : byte Blazor = 11, IdentityServer = 12, //todo: Rename to AuthServer BlazorServer = 13, - BlazorWebAssembly = 14 + BlazorWebAssembly = 14, + MauiBlazor = 15 } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs index fbd8cdb599..1a72e3d4e8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs @@ -49,7 +49,8 @@ public static class ProjectFinder FindProjectEndsWith(projectFiles, assemblyNames, ".Web") ?? FindProjectEndsWith(projectFiles, assemblyNames, ".HttpApi.Host"); case NuGetPackageTarget.Blazor: - return FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); + return FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor") + ?? FindProjectEndsWith(projectFiles, assemblyNames, ".MauiBlazor");; case NuGetPackageTarget.BlazorWebAssembly: var BlazorWebAssemblyTargetProject = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); return BlazorWebAssemblyTargetProject != null && @@ -62,6 +63,8 @@ public static class ProjectFinder BlazorProjectTypeChecker.IsBlazorServerProject(BlazorServerTargetProject) ? BlazorServerTargetProject : null; + case NuGetPackageTarget.MauiBlazor: + return FindProjectEndsWith(projectFiles, assemblyNames, ".MauiBlazor"); default: return null; }