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 @@
+
+
+