summaryrefslogtreecommitdiff
path: root/Pages/Component/LoadedState.razor
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2026-06-04 13:59:07 +1000
committerJake Mannens <jake@asger.xyz>2026-06-22 00:35:13 +1000
commitc93cd20e31941912d9f000b151e48e6e9fd81638 (patch)
treeaef645ecd3aa80d2a28b72d9e57a26fd390fb35f /Pages/Component/LoadedState.razor
parent3ac4deabc2c40f05fd9b50be740c0ccfb82cb0f0 (diff)
Added Razor components for loadable remote content
Diffstat (limited to 'Pages/Component/LoadedState.razor')
-rw-r--r--Pages/Component/LoadedState.razor23
1 files changed, 23 insertions, 0 deletions
diff --git a/Pages/Component/LoadedState.razor b/Pages/Component/LoadedState.razor
new file mode 100644
index 0000000..fce18d8
--- /dev/null
+++ b/Pages/Component/LoadedState.razor
@@ -0,0 +1,23 @@
+@implements IDisposable
+@typeparam T
+
+@if(Parent.ComponentState == ComponentState.Loaded) {
+ @ChildContent
+}
+
+@code {
+ [Parameter]
+ public RenderFragment? ChildContent { get; set; }
+
+ [CascadingParameter]
+ public LoadableContent<T> Parent { get; set; }
+
+ protected override void OnInitialized() =>
+ Parent.OnStateChanged += OnStateChanged;
+
+ public void OnStateChanged(object? sender, EventArgs e) =>
+ InvokeAsync(StateHasChanged);
+
+ public void Dispose() =>
+ Parent.OnStateChanged -= OnStateChanged;
+}