From 81467be9ac8dd2d5d7f61db4c20342b0975aaa91 Mon Sep 17 00:00:00 2001 From: koeeenig Date: Wed, 17 Jan 2024 00:23:16 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20se=20Blazor=20WASM=20rende?= =?UTF-8?q?r=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BlazeKit.Website.Islands.csproj | 8 +++- .../Components/BlzInteractive.cs | 17 ++++++++ .../Components/Counter.razor | 1 + .../Components/HydratedComponent.razor | 23 +++++++++++ .../Components/MVVM/Counter.razor | 26 ++++++++++++ .../Components}/MVVM/VMCounter.cs | 2 +- .../Components/MyCounter.razor | 12 ++++++ .../Components/MyCounter.razor.cs | 6 +++ src/BlazeKit.Website.Islands/_Imports.razor | 1 + src/BlazeKit.Website/AppRouter.razor | 2 - src/BlazeKit.Website/BlazeKit.Website.csproj | 15 ++----- src/BlazeKit.Website/ExampleJsInterop.cs | 36 ---------------- src/BlazeKit.Website/Program.cs | 17 ++++---- .../Properties/launchSettings.json | 41 +++++++++++++++++++ .../Create-A-Project/Layout.razor | 0 .../Create-A-Project/Page.md | 0 src/BlazeKit.Website/Routes/Layouts/Page.md | 8 ---- .../Routes/Reactivity/Basic/Page.razor | 2 +- .../Routes/Reactivity/MVVM/Page.razor | 19 ++------- src/BlazeKit.Website/_Imports.razor | 1 - .../appsettings.Development.json | 8 ++++ src/BlazeKit.Website/appsettings.json | 9 ++++ 22 files changed, 170 insertions(+), 84 deletions(-) create mode 100644 src/BlazeKit.Website.Islands/Components/BlzInteractive.cs create mode 100644 src/BlazeKit.Website.Islands/Components/HydratedComponent.razor create mode 100644 src/BlazeKit.Website.Islands/Components/MVVM/Counter.razor rename src/{BlazeKit.Website/Routes/Reactivity => BlazeKit.Website.Islands/Components}/MVVM/VMCounter.cs (94%) create mode 100644 src/BlazeKit.Website.Islands/Components/MyCounter.razor create mode 100644 src/BlazeKit.Website.Islands/Components/MyCounter.razor.cs delete mode 100644 src/BlazeKit.Website/ExampleJsInterop.cs create mode 100644 src/BlazeKit.Website/Properties/launchSettings.json rename src/BlazeKit.Website/Routes/{ => (Getting-Started)}/Create-A-Project/Layout.razor (100%) rename src/BlazeKit.Website/Routes/{ => (Getting-Started)}/Create-A-Project/Page.md (100%) create mode 100644 src/BlazeKit.Website/appsettings.Development.json create mode 100644 src/BlazeKit.Website/appsettings.json diff --git a/src/BlazeKit.Website.Islands/BlazeKit.Website.Islands.csproj b/src/BlazeKit.Website.Islands/BlazeKit.Website.Islands.csproj index b103a6a..7cc3cfb 100644 --- a/src/BlazeKit.Website.Islands/BlazeKit.Website.Islands.csproj +++ b/src/BlazeKit.Website.Islands/BlazeKit.Website.Islands.csproj @@ -4,13 +4,19 @@ net8.0 enable enable + Default + true + .blazekit - + + + + diff --git a/src/BlazeKit.Website.Islands/Components/BlzInteractive.cs b/src/BlazeKit.Website.Islands/Components/BlzInteractive.cs new file mode 100644 index 0000000..d1c9d5e --- /dev/null +++ b/src/BlazeKit.Website.Islands/Components/BlzInteractive.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; + +namespace BlazeKit.Website.Islands; + +[__PrivateComponentRenderModeAttribute] +public abstract class BlzInteractive : ComponentBase +{ + public BlzInteractive() + { } + + private sealed class __PrivateComponentRenderModeAttribute : global::Microsoft.AspNetCore.Components.RenderModeAttribute + { + private static global::Microsoft.AspNetCore.Components.IComponentRenderMode ModeImpl => RenderMode.InteractiveWebAssembly; + public override global::Microsoft.AspNetCore.Components.IComponentRenderMode Mode => ModeImpl; + } +} diff --git a/src/BlazeKit.Website.Islands/Components/Counter.razor b/src/BlazeKit.Website.Islands/Components/Counter.razor index ad3ded5..c4a33d4 100644 --- a/src/BlazeKit.Website.Islands/Components/Counter.razor +++ b/src/BlazeKit.Website.Islands/Components/Counter.razor @@ -1,4 +1,5 @@ @inherits ReactiveComponentEnvelope + @code { private ISignal text; diff --git a/src/BlazeKit.Website.Islands/Components/HydratedComponent.razor b/src/BlazeKit.Website.Islands/Components/HydratedComponent.razor new file mode 100644 index 0000000..0e0a109 --- /dev/null +++ b/src/BlazeKit.Website.Islands/Components/HydratedComponent.razor @@ -0,0 +1,23 @@ +@code { + [Parameter] required public RenderFragment SSG {get;set;} + [Parameter] required public RenderFragment CSR {get;set;} + + [Inject] required public IJSRuntime jsRuntime {get;set;} + + @* [Parameter] public BlazeKit.Islands.LoadOn LoadAt {get;set;} = BlazeKit.Islands.LoadOn.Hover; *@ + private string id = ""; + protected override async void OnInitialized() + { + if(!OperatingSystem.IsBrowser()) { + // generate SSG id for compoennt + id = Guid.NewGuid().ToString(); + } + } + +} +@if(!OperatingSystem.IsBrowser()) { + @*
*@ + @SSG + @*
*@ +} +@CSR diff --git a/src/BlazeKit.Website.Islands/Components/MVVM/Counter.razor b/src/BlazeKit.Website.Islands/Components/MVVM/Counter.razor new file mode 100644 index 0000000..f663f1e --- /dev/null +++ b/src/BlazeKit.Website.Islands/Components/MVVM/Counter.razor @@ -0,0 +1,26 @@ +@inherits ReactiveComponentEnvelope +@code { + public Islands.Components.MVVM.VMCounter ViewModel { get; set; } + + public Counter() { } + + override protected void OnInitialized() + { + ViewModel = new Islands.Components.MVVM.VMCounter(this); + } + + private MarkupString AsHtml(string code) + { + return new MarkupString(code); + } +} +@if(ViewModel == null) { +

Loading...

+} else { +
+

Counter: @ViewModel.Counter.Value

+

Doubled: @ViewModel.Doubled.Value

+ + +
+} diff --git a/src/BlazeKit.Website/Routes/Reactivity/MVVM/VMCounter.cs b/src/BlazeKit.Website.Islands/Components/MVVM/VMCounter.cs similarity index 94% rename from src/BlazeKit.Website/Routes/Reactivity/MVVM/VMCounter.cs rename to src/BlazeKit.Website.Islands/Components/MVVM/VMCounter.cs index e2761a0..384d242 100644 --- a/src/BlazeKit.Website/Routes/Reactivity/MVVM/VMCounter.cs +++ b/src/BlazeKit.Website.Islands/Components/MVVM/VMCounter.cs @@ -2,7 +2,7 @@ using BlazeKit.Reactivity; using BlazeKit.Reactivity.Blazor; -namespace BlazeKit.Site.Pages.Reactivity.MVVM +namespace BlazeKit.Website.Islands.Components.MVVM { public sealed class VMCounter { diff --git a/src/BlazeKit.Website.Islands/Components/MyCounter.razor b/src/BlazeKit.Website.Islands/Components/MyCounter.razor new file mode 100644 index 0000000..53e28f1 --- /dev/null +++ b/src/BlazeKit.Website.Islands/Components/MyCounter.razor @@ -0,0 +1,12 @@ +@* @inherits BlzInteractive *@ +@code { + [Parameter] public int CurrentCount { get; set; } + + private void IncrementCount() + { + CurrentCount++; + } +} +

MyCounter

+

Current Count = @CurrentCount

+ diff --git a/src/BlazeKit.Website.Islands/Components/MyCounter.razor.cs b/src/BlazeKit.Website.Islands/Components/MyCounter.razor.cs new file mode 100644 index 0000000..aa22a8b --- /dev/null +++ b/src/BlazeKit.Website.Islands/Components/MyCounter.razor.cs @@ -0,0 +1,6 @@ +namespace BlazeKit.Website.Islands; + +public partial class MyCounter : BlzInteractive +{ + +} diff --git a/src/BlazeKit.Website.Islands/_Imports.razor b/src/BlazeKit.Website.Islands/_Imports.razor index d4bdf8a..9407a11 100644 --- a/src/BlazeKit.Website.Islands/_Imports.razor +++ b/src/BlazeKit.Website.Islands/_Imports.razor @@ -10,3 +10,4 @@ @using BlazeKit.Reactivity @using BlazeKit.Reactivity.Signals @using BlazeKit.Reactivity.Blazor +@using static Microsoft.AspNetCore.Components.Web.RenderMode diff --git a/src/BlazeKit.Website/AppRouter.razor b/src/BlazeKit.Website/AppRouter.razor index fd64836..64f15f0 100644 --- a/src/BlazeKit.Website/AppRouter.razor +++ b/src/BlazeKit.Website/AppRouter.razor @@ -1,5 +1,3 @@ -@using BlazeKit.Site; -@using BlazeKit.Site.Pages; diff --git a/src/BlazeKit.Website/BlazeKit.Website.csproj b/src/BlazeKit.Website/BlazeKit.Website.csproj index b930131..840b7aa 100644 --- a/src/BlazeKit.Website/BlazeKit.Website.csproj +++ b/src/BlazeKit.Website/BlazeKit.Website.csproj @@ -8,17 +8,14 @@ .blazekit - - - - - - - + + + + @@ -33,10 +30,6 @@ - - - - - - - - - - ## Layout nesting Similar to the file-based routing, a layout can be defined in a folder by adding `Layout.razor` file. This file **needs to inherit** from **`LayoutComopentBase`** diff --git a/src/BlazeKit.Website/Routes/Reactivity/Basic/Page.razor b/src/BlazeKit.Website/Routes/Reactivity/Basic/Page.razor index f1b6020..534cfcc 100644 --- a/src/BlazeKit.Website/Routes/Reactivity/Basic/Page.razor +++ b/src/BlazeKit.Website/Routes/Reactivity/Basic/Page.razor @@ -10,11 +10,11 @@ } }

Basic

+ -

Code Example

 
diff --git a/src/BlazeKit.Website/Routes/Reactivity/MVVM/Page.razor b/src/BlazeKit.Website/Routes/Reactivity/MVVM/Page.razor
index 9b04438..c7ab340 100644
--- a/src/BlazeKit.Website/Routes/Reactivity/MVVM/Page.razor
+++ b/src/BlazeKit.Website/Routes/Reactivity/MVVM/Page.razor
@@ -1,14 +1,4 @@
-@using BlazeKit.Site.Pages.Reactivity.MVVM
 @code {
-    public VMCounter ViewModel { get; set; }
-
-    public Page()
-    { }
-
-    override protected void OnInitialized()
-    {
-        ViewModel = new VMCounter(this);
-    }
 
     private MarkupString AsHtml(string code)
     {
@@ -17,12 +7,9 @@
 }
 

Model View ViewModel

You can even use an MVVM pattern if you like 👍

-
-

Counter: @ViewModel.Counter.Value

-

Doubled: @ViewModel.Doubled.Value

- - -
+ + +

Code Example

     
diff --git a/src/BlazeKit.Website/_Imports.razor b/src/BlazeKit.Website/_Imports.razor
index 126bc4b..547234c 100644
--- a/src/BlazeKit.Website/_Imports.razor
+++ b/src/BlazeKit.Website/_Imports.razor
@@ -4,7 +4,6 @@
 @using Microsoft.AspNetCore.Components.Web
 @* @using Microsoft.AspNetCore.Components.WebAssembly.Http *@
 @using Microsoft.JSInterop
-@using BlazeKit.Site
 @using BlazeKit.Website.Components
 @using BlazeKit.Website
 @using BlazeKit.Website.Islands.Components
diff --git a/src/BlazeKit.Website/appsettings.Development.json b/src/BlazeKit.Website/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/src/BlazeKit.Website/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/src/BlazeKit.Website/appsettings.json b/src/BlazeKit.Website/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/src/BlazeKit.Website/appsettings.json
@@ -0,0 +1,9 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*"
+}