diff --git a/Oqtane.Client/Shared/Interop.cs b/Oqtane.Client/Shared/Interop.cs index 15534ca1..594333fa 100644 --- a/Oqtane.Client/Shared/Interop.cs +++ b/Oqtane.Client/Shared/Interop.cs @@ -57,6 +57,21 @@ namespace Oqtane.Shared } } + public Task RemoveCSS(string filepattern) + { + try + { + jsRuntime.InvokeAsync( + "interop.removeCSS", + filepattern); + return Task.CompletedTask; + } + catch + { + return Task.CompletedTask; + } + } + public ValueTask GetElementByName(string name) { try diff --git a/Oqtane.Client/Shared/ThemeBuilder.razor b/Oqtane.Client/Shared/ThemeBuilder.razor index 63cdc8da..07e3a4a2 100644 --- a/Oqtane.Client/Shared/ThemeBuilder.razor +++ b/Oqtane.Client/Shared/ThemeBuilder.razor @@ -1,6 +1,8 @@ @using Oqtane.Shared @using Oqtane.Modules +@using Microsoft.JSInterop @namespace Oqtane.Shared +@inject IJSRuntime jsRuntime @DynamicComponent @@ -28,4 +30,12 @@ } }; } + + protected override async Task OnParametersSetAsync() + { + // remove any custom CSS + var interop = new Interop(jsRuntime); + await interop.RemoveCSS("Themes/"); + await interop.RemoveCSS("Modules/"); + } } diff --git a/Oqtane.Client/wwwroot/js/interop.js b/Oqtane.Client/wwwroot/js/interop.js index 7b23a474..09994e57 100644 --- a/Oqtane.Client/wwwroot/js/interop.js +++ b/Oqtane.Client/wwwroot/js/interop.js @@ -38,6 +38,16 @@ window.interop = { head.appendChild(link); }, + removeCSS: function (filePattern) { + var head = document.head; + var links = document.getElementsByTagName("link"); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + if (link.rel === 'stylesheet' && link.href.includes(filePattern)) { + head.removeChild(link); + } + } + }, submitForm: function (path, fields) { const form = document.createElement('form'); form.method = 'post'; diff --git a/Oqtane.Server/wwwroot/js/interop.js b/Oqtane.Server/wwwroot/js/interop.js index 7b23a474..09994e57 100644 --- a/Oqtane.Server/wwwroot/js/interop.js +++ b/Oqtane.Server/wwwroot/js/interop.js @@ -38,6 +38,16 @@ window.interop = { head.appendChild(link); }, + removeCSS: function (filePattern) { + var head = document.head; + var links = document.getElementsByTagName("link"); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + if (link.rel === 'stylesheet' && link.href.includes(filePattern)) { + head.removeChild(link); + } + } + }, submitForm: function (path, fields) { const form = document.createElement('form'); form.method = 'post';