Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Core/Components/List/ListComponentBase.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,7 @@ protected virtual async Task OnKeydownHandlerAsync(KeyboardEventArgs e)
{
return;
}
if (!ChangeOnEnterOnly || (ChangeOnEnterOnly && e.Code == "Enter"))
if (!ChangeOnEnterOnly || (ChangeOnEnterOnly && e.Code == nameof(KeyCode.Enter)))
{
await item.OnClickHandlerAsync();
}
Expand Down
5 changes: 3 additions & 2 deletions src/Core/Components/Menu/FluentMenuItem.razor
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
class="@Class"
style="@Style"
id="@Id"
disabled="@Disabled"
disabled="@Disabled"
expanded=@Expanded
role="@GetRole()"
checked="@Checked"
@onchange="@OnChangeHandlerAsync"
@onclick="@OnClickHandlerAsync"
@attributes="AdditionalAttributes">
@attributes="AdditionalAttributes"
@onkeydown="@OnKeyDownHandlerAsync">
@Label
@ChildContent
@if (MenuItems != null)
Expand Down
13 changes: 13 additions & 0 deletions src/Core/Components/Menu/FluentMenuItem.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,5 +135,18 @@ protected async Task OnChangeHandlerAsync(ChangeEventArgs ev)
return null;
}

private async Task OnKeyDownHandlerAsync(KeyboardEventArgs e)
{
if (e.ShiftKey || e.AltKey || e.CtrlKey)
{
return;
}

if (e.Code is nameof(KeyCode.Enter))
{
await OnClickHandlerAsync(new MouseEventArgs());
}
}

public void Dispose() => Owner?.Unregister(this);
}
33 changes: 33 additions & 0 deletions tests/Core/_ToDo/Menu/FluentMenuTests.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
@namespace Microsoft.FluentUI.AspNetCore.Components.Tests.Menu

@using Xunit
@inherits TestContext

@code {
[Fact]
public void FluentMenu_ChildMenuItem_OnKeyboardEnter_Works()
{
// Arrange && Act
var clickCount = 0;
var lockObj = new object();
var cut = Render(@<FluentMenu Open="true">
<FluentMenuItem Id="to-select" OnClick="@OnClick">test</FluentMenuItem>
</FluentMenu>);

cut.Find("#to-select").KeyDown("Enter", "Enter");
cut.Find("#to-select").Click();

// Assert
cut.WaitForAssertion(() => Assert.Equal(2, clickCount));
return;

void OnClick()
{
lock (lockObj)
{
clickCount++;
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
using Xunit;

namespace Microsoft.FluentUI.AspNetCore.Components.Tests.Menu;
public class FluentMenuTests : TestBase
public partial class FluentMenuTests : TestContext
{
public FluentMenuTests()
{
TestContext.JSInterop.SetupModule("./_content/Microsoft.FluentUI.AspNetCore.Components/Components/Menu/FluentMenu.razor.js");
TestContext.Services.AddSingleton(LibraryConfiguration.ForUnitTests);
TestContext.Services.AddSingleton<IMenuService, MenuService>();
JSInterop.SetupModule("./_content/Microsoft.FluentUI.AspNetCore.Components/Components/Menu/FluentMenu.razor.js");
Services.AddSingleton(LibraryConfiguration.ForUnitTests);
Services.AddSingleton<IMenuService, MenuService>();
}

[Fact]
Expand All @@ -27,7 +27,7 @@ public void FluentMenu_Default()
string width = default!;
Action<bool> openChanged = _ => { };
bool anchored = default!;
var cut = TestContext.RenderComponent<FluentMenu>(parameters => parameters
var cut = RenderComponent<FluentMenu>(parameters => parameters
.Add(p => p.Anchor, anchor)
.Add(p => p.Trigger, trigger)
.Add(p => p.Open, open)
Expand All @@ -48,8 +48,8 @@ public void FluentMenuProvider_ShouldUseFluentMenuClass()
{
//Arrange
var className = "some-class";
var menuProviderCut = TestContext.RenderComponent<FluentMenuProvider>();
var menuCut = TestContext.RenderComponent<FluentMenu>(parameters => parameters
var menuProviderCut = RenderComponent<FluentMenuProvider>();
var menuCut = RenderComponent<FluentMenu>(parameters => parameters
.Add(p => p.UseMenuService, true)
.Add(p => p.Class, className)
.Add(p => p.Anchored, true)
Expand Down
Loading