diff --git a/samples/Cortex.Net.BlazorTodo/App.razor b/samples/Cortex.Net.BlazorTodo/App.razor index 1c360b7..675c4a7 100644 --- a/samples/Cortex.Net.BlazorTodo/App.razor +++ b/samples/Cortex.Net.BlazorTodo/App.razor @@ -1,4 +1,6 @@ - +@inject NavigationManager NavigationManager + + @@ -8,3 +10,15 @@ + +@code +{ + /// + /// Navigates to the default hash. + /// + protected override void OnInitialized() + { + base.OnInitialized(); + this.NavigationManager.NavigateTo("#/"); + } +} \ No newline at end of file diff --git a/samples/Cortex.Net.BlazorTodo/Components/TodoEntry.razor b/samples/Cortex.Net.BlazorTodo/Components/TodoEntry.razor index afd0ce3..073c122 100644 --- a/samples/Cortex.Net.BlazorTodo/Components/TodoEntry.razor +++ b/samples/Cortex.Net.BlazorTodo/Components/TodoEntry.razor @@ -9,8 +9,15 @@ @code { + /// + /// Gets or sets the Title. + /// public string Title { get; set; } + /// + /// Handles the key down event. + /// + /// The keyboard event arguments. public void HandleKeyDown(KeyboardEventArgs args) { if (args.Key != "Enter") @@ -18,8 +25,12 @@ return; } - this.TodoStore.AddTodo(this.Title.Trim()); - this.Title = ""; + var val = this.Title?.Trim(); + if (!string.IsNullOrEmpty(val)) + { + this.TodoStore.AddTodo(val); + this.Title = ""; + } } } diff --git a/samples/Cortex.Net.BlazorTodo/Components/TodoFooter.razor b/samples/Cortex.Net.BlazorTodo/Components/TodoFooter.razor index b558aa5..b749088 100644 --- a/samples/Cortex.Net.BlazorTodo/Components/TodoFooter.razor +++ b/samples/Cortex.Net.BlazorTodo/Components/TodoFooter.razor @@ -15,13 +15,13 @@ @if (this.TodoStore.CompletedCount > 0) diff --git a/samples/Cortex.Net.BlazorTodo/Components/TodoItem.razor b/samples/Cortex.Net.BlazorTodo/Components/TodoItem.razor index 89e413d..8d5f9f7 100644 --- a/samples/Cortex.Net.BlazorTodo/Components/TodoItem.razor +++ b/samples/Cortex.Net.BlazorTodo/Components/TodoItem.razor @@ -39,6 +39,7 @@ /// Destroys the todo item. /// /// The mouse event args. + [Action] void Destroy(MouseEventArgs mouseEventArgs) { this.Todo.Destroy(); diff --git a/samples/Cortex.Net.BlazorTodo/Components/TodoOverview.razor b/samples/Cortex.Net.BlazorTodo/Components/TodoOverview.razor index b2b36bf..af67b6b 100644 --- a/samples/Cortex.Net.BlazorTodo/Components/TodoOverview.razor +++ b/samples/Cortex.Net.BlazorTodo/Components/TodoOverview.razor @@ -10,7 +10,7 @@ {
- +
} -@code { - +@code +{ /// /// Gets the visible Todos. /// diff --git a/samples/Cortex.Net.BlazorTodo/Models/Todo.cs b/samples/Cortex.Net.BlazorTodo/Models/Todo.cs index d038dad..a30bd04 100644 --- a/samples/Cortex.Net.BlazorTodo/Models/Todo.cs +++ b/samples/Cortex.Net.BlazorTodo/Models/Todo.cs @@ -73,7 +73,6 @@ public void Toggle() /// /// Destroys this todo by removing it from the Store. /// - [Action] public void Destroy() { this.Store.Todos.Remove(this); diff --git a/samples/Cortex.Net.BlazorTodo/Pages/Index.razor b/samples/Cortex.Net.BlazorTodo/Pages/Index.razor index fb44df9..7b053dd 100644 --- a/samples/Cortex.Net.BlazorTodo/Pages/Index.razor +++ b/samples/Cortex.Net.BlazorTodo/Pages/Index.razor @@ -1,3 +1,54 @@ -@page "/" +@using Cortex.Net.Api +@using Cortex.Net.Blazor +@using Cortex.Net.BlazorTodo.Stores +@implements IDisposable + +@page "/" + +@attribute [Observer] + +@inject ViewStore ViewStore +@inject NavigationManager NavigationManager + +@code +{ + /// + /// Bind to the Navigation changed event. This is necessary because of the Anchor Urls in the TodoMVC sample. + /// + protected override void OnInitialized() + { + NavigationManager.LocationChanged += OnLocationChanged; + } + + /// + /// Handle the OnLocationChanged event. + /// + /// + /// + [Action] + void OnLocationChanged(object sender, LocationChangedEventArgs eventArgs) + { + switch (NavigationManager.ToBaseRelativePath(eventArgs.Location)) + { + case "#/active": + this.ViewStore.TodoFilter = TodoFilter.Active; + break; + case "#/completed": + this.ViewStore.TodoFilter = TodoFilter.Completed; + break; + case "#/": + this.ViewStore.TodoFilter = TodoFilter.All; + break; + } + } + + /// + /// Release the eventhandler from the Navigation manager. + /// + public virtual void Dispose() + { + NavigationManager.LocationChanged -= OnLocationChanged; + } +} \ No newline at end of file diff --git a/src/Cortex.Net.Fody/BlazorObserverWeaver.cs b/src/Cortex.Net.Fody/BlazorObserverWeaver.cs index aeff0d2..76662b2 100644 --- a/src/Cortex.Net.Fody/BlazorObserverWeaver.cs +++ b/src/Cortex.Net.Fody/BlazorObserverWeaver.cs @@ -319,12 +319,6 @@ private void WeaveBuildRenderTreeMethod(MethodDefinition buildRenderTreeMethod, processor.Create(OpCodes.Ldc_I4_1), processor.Create(OpCodes.Bne_Un_S, originalStart), - // write the name of the function to the console. - processor.Create(OpCodes.Ldarg_0), - processor.Create(OpCodes.Call, module.ImportReference(getTypeReference)), - processor.Create(OpCodes.Callvirt, module.ImportReference(getFullNameReference)), - processor.Create(OpCodes.Call, module.ImportReference(writeLineReference)), - // load the field where the action delegate is stored. processor.Create(OpCodes.Ldarg_0), processor.Create(OpCodes.Ldfld, observerObjectDefinition), diff --git a/src/Cortex.Net.Fody/ComputedWeaver.cs b/src/Cortex.Net.Fody/ComputedWeaver.cs index c36ce78..22d74d7 100644 --- a/src/Cortex.Net.Fody/ComputedWeaver.cs +++ b/src/Cortex.Net.Fody/ComputedWeaver.cs @@ -591,7 +591,7 @@ private void EmitComputedMemberAdd( processor.Emit(OpCodes.Dup); processor.Emit(OpCodes.Ldarg_0); processor.Emit(OpCodes.Ldftn, setMethodDefinition); - processor.Emit(OpCodes.Newobj, functionTypeConstructorReference); + processor.Emit(OpCodes.Newobj, actionTypeConstructorReference); processor.Emit(OpCodes.Callvirt, setSetterReference); } diff --git a/src/Cortext.Next.Playground/Program.cs b/src/Cortext.Next.Playground/Program.cs index 1ae5671..928b55b 100644 --- a/src/Cortext.Next.Playground/Program.cs +++ b/src/Cortext.Next.Playground/Program.cs @@ -7,9 +7,10 @@ namespace Cortext.Next.Playground { - class Program + public class Program { - static void Main(string[] args) + [System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Program start.")] + public static void Main(string[] args) { var sharedState = new SharedState(new CortexConfiguration() {