From 7c6420ecbe040e94351ebaeef2bbc904bfd6be37 Mon Sep 17 00:00:00 2001 From: Denis Voituron Date: Mon, 5 May 2025 13:26:11 +0200 Subject: [PATCH 1/2] Add OpenChanged event --- .../ProfileMenu/FluentProfileMenu.razor | 3 ++- .../ProfileMenu/FluentProfileMenu.razor.cs | 23 +++++++++++++++++++ .../ProfileMenu/FluentProfileMenuTests.razor | 9 +++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor index 4ec7da621a..7ac4701a3a 100644 --- a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor +++ b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor @@ -2,7 +2,7 @@ @inherits FluentComponentBase
+ @onclick="@ProfileMenuClickedAsync"> @StartTemplate
@if (HeaderTemplate is null && (!string.IsNullOrEmpty(HeaderLabel) || !string.IsNullOrEmpty(HeaderButton))) diff --git a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs index 50beeb4cc2..02ebd70cdf 100644 --- a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs +++ b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs @@ -27,6 +27,12 @@ public FluentProfileMenu() [Parameter] public bool Open { get; set; } = false; + /// + /// Gets or sets the callback that is invoked when the open state changes. + /// + [Parameter] + public EventCallback OpenChanged { get; set; } + /// /// Gets or sets whether popover should be forced to top right or top left (RTL). /// @@ -165,4 +171,21 @@ public FluentProfileMenu() /// private string PersonaId => $"{Id}-persona"; + + private async Task ProfileMenuClickedAsync() + { + Open = !Open; + + await OpenChangedHandlerAsync(); + } + + /// + private async Task OpenChangedHandlerAsync() + { + Console.WriteLine("OpenChangedHandlerAsync " + Open); + if (OpenChanged.HasDelegate) + { + await OpenChanged.InvokeAsync(Open); + } + } } diff --git a/tests/Core/ProfileMenu/FluentProfileMenuTests.razor b/tests/Core/ProfileMenu/FluentProfileMenuTests.razor index 7e796e4f80..eafdf2099e 100644 --- a/tests/Core/ProfileMenu/FluentProfileMenuTests.razor +++ b/tests/Core/ProfileMenu/FluentProfileMenuTests.razor @@ -14,24 +14,31 @@ [Fact] public void FluentProfileMenu_Default() { + bool opened = false; + // Arrange && Act var cut = Render( @); + EMail="bill.gates@microsoft.com" /> + ); + + Assert.False(opened); // Open the Popover var button = cut.Find(".initials"); button.Click(); // Assert + Assert.True(opened); cut.Verify(); } From 89d8973537e2ddec1f046c8b8af7617eda04b412 Mon Sep 17 00:00:00 2001 From: Denis Voituron Date: Mon, 5 May 2025 13:29:46 +0200 Subject: [PATCH 2/2] Remove Console.WriteLine --- src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs index 02ebd70cdf..f9c8f0c1ad 100644 --- a/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs +++ b/src/Core/Components/ProfileMenu/FluentProfileMenu.razor.cs @@ -175,14 +175,12 @@ public FluentProfileMenu() private async Task ProfileMenuClickedAsync() { Open = !Open; - await OpenChangedHandlerAsync(); } /// private async Task OpenChangedHandlerAsync() { - Console.WriteLine("OpenChangedHandlerAsync " + Open); if (OpenChanged.HasDelegate) { await OpenChanged.InvokeAsync(Open);