From 6d9787cfbf91316d7013d6d89edb8681281eeb3e Mon Sep 17 00:00:00 2001 From: Dimo Dimov <961014+dimodi@users.noreply.github.com> Date: Wed, 3 Sep 2025 21:57:33 +0300 Subject: [PATCH 1/6] Add PWA support to WebAssembly Standalone template --- Dimodi.Telerik.Blazor.Templates.csproj | 4 +- .../.template.config/dotnetcli.host.json | 3 + .../.template.config/ide.host.json | 7 +++ .../.template.config/template.json | 19 +++++- .../TelerikBlazorWasmStandalone.csproj | 9 +++ .../wwwroot/icon-512.png | Bin 0 -> 6311 bytes .../wwwroot/index.html | 8 +++ .../wwwroot/manifest.webmanifest | 22 +++++++ .../wwwroot/service-worker.js | 4 ++ .../wwwroot/service-worker.published.js | 55 ++++++++++++++++++ tests.sh | 4 +- 11 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/icon-512.png create mode 100644 Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/manifest.webmanifest create mode 100644 Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/service-worker.js create mode 100644 Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/service-worker.published.js diff --git a/Dimodi.Telerik.Blazor.Templates.csproj b/Dimodi.Telerik.Blazor.Templates.csproj index ef89008..5c99a38 100644 --- a/Dimodi.Telerik.Blazor.Templates.csproj +++ b/Dimodi.Telerik.Blazor.Templates.csproj @@ -16,7 +16,7 @@ README.md NEW -* Add support for Telerik UI for Blazor 11.1.0. +* Add support for Progressive Web Applications (PWA) in the WebAssembly Standalone template. false Telerik;Blazor;dotnet-new;templates @@ -24,7 +24,7 @@ NEW https://github.com/dimodi/project-templates netstandard2.0 Telerik Blazor Project and Item Templates - 6.2.1 + 6.3.0 diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/dotnetcli.host.json b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/dotnetcli.host.json index d49e353..eac3cbc 100644 --- a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/dotnetcli.host.json +++ b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/dotnetcli.host.json @@ -4,6 +4,9 @@ "Framework": { "longName": "framework" }, + "PWA": { + "longName": "pwa" + }, "TelerikVersion": { "longName": "telerik-version" }, diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/ide.host.json b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/ide.host.json index 021b33d..274aa3d 100644 --- a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/ide.host.json +++ b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/ide.host.json @@ -2,6 +2,13 @@ "$schema": "http://json.schemastore.org/vs-2017.3.host", "icon": "progress-logo.png", "symbolInfo": [ + { + "id": "PWA", + "name": { + "text": "Progressive Web Application" + }, + "isVisible": true + }, { "id": "TelerikVersion", "name": { diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/template.json b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/template.json index ba929a5..cc8ea5e 100644 --- a/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/template.json +++ b/Projects/Net8/TelerikBlazorWasmStandalone/.template.config/template.json @@ -4,7 +4,8 @@ "classifications": [ "Web", "Blazor", - "WebAssembly" + "WebAssembly", + "PWA" ], "identity": "Dimodi.Telerik.Blazor.WebAssembly.Standalone", "name": "Telerik Blazor WebAssembly Standalone App", @@ -81,6 +82,13 @@ }, "replaces": "{TVAR_NETSUFFIX}" }, + "PWA": { + "type": "parameter", + "datatype": "bool", + "defaultValue": "false", + "description": "Add support for a Progressive Web Application.", + "displayName": "Progressive Web Application" + }, "TelerikVersion": { "type": "parameter", "datatype": "choice", @@ -282,6 +290,15 @@ "**/Services/**" ] }, + { + "condition": "(!PWA)", + "exclude": [ + "wwwroot/service-worker*.js", + "wwwroot/manifest.webmanifest", + "wwwroot/icon-192.png", + "wwwroot/icon-512.png" + ] + }, { "rename": { "dockerignore.dockerignore": ".dockerignore" diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/TelerikBlazorWasmStandalone.csproj b/Projects/Net8/TelerikBlazorWasmStandalone/TelerikBlazorWasmStandalone.csproj index 2d74754..3d7ddd0 100644 --- a/Projects/Net8/TelerikBlazorWasmStandalone/TelerikBlazorWasmStandalone.csproj +++ b/Projects/Net8/TelerikBlazorWasmStandalone/TelerikBlazorWasmStandalone.csproj @@ -13,6 +13,9 @@ {TVAR_DOCKERUSERSECRETSID} Linux + + + service-worker-assets.js @@ -57,5 +60,11 @@ + + + + + + \ No newline at end of file diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/icon-512.png b/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..c2dd4842dc93df73c322218ee03eca142a19a338 GIT binary patch literal 6311 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 literal 0 HcmV?d00001 diff --git a/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/index.html b/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/index.html index 6f5f4fa..33b0e2e 100644 --- a/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/index.html +++ b/Projects/Net8/TelerikBlazorWasmStandalone/wwwroot/index.html @@ -37,6 +37,11 @@ + + + + + @@ -61,6 +66,9 @@ + + +