Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FluentNavMenu binding support #522

Merged
merged 42 commits into from
Jul 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
52ed59a
two way binding on Expanded
mrpmorris Jul 7, 2023
0364eea
Merge from upstream
mrpmorris Jul 7, 2023
83ab140
Events not propagating, but click not toggling group expansion
mrpmorris Jul 7, 2023
087d8e0
WIP
mrpmorris Jul 7, 2023
c080216
Complete
mrpmorris Jul 7, 2023
ec28449
Completed
mrpmorris Jul 7, 2023
fd57e54
Nearly working
mrpmorris Jul 7, 2023
47279e3
Merge from upstream
mrpmorris Jul 7, 2023
bb44979
Merge from upstream
mrpmorris Jul 7, 2023
94c9e1b
Merge branch 'new-components' into 504/PeteM-ExpandedBindingSupport
vnbaaij Jul 7, 2023
eeb16b4
WIP
mrpmorris Jul 9, 2023
fcc328e
Merge branch '504/PeteM-ExpandedBindingSupport' of https://github.com…
mrpmorris Jul 9, 2023
0a31fd8
Merge from upstream
mrpmorris Jul 10, 2023
1dbf528
WIP
mrpmorris Jul 10, 2023
8dd1314
Remove FindElementById
mrpmorris Jul 10, 2023
f6fa134
Remove SetExpanded
mrpmorris Jul 10, 2023
34828a9
Change ParentElement to Owner
mrpmorris Jul 10, 2023
b49f6b6
Get rid of AutoExpandOnGroupExpanded
mrpmorris Jul 10, 2023
91077f7
Works in demos, but not in nav menu
mrpmorris Jul 10, 2023
9e77294
Only select a single item
mrpmorris Jul 10, 2023
351de54
All working
mrpmorris Jul 10, 2023
1cdb8d9
Working all round, just not expanding groups
mrpmorris Jul 10, 2023
25eca4c
Finally fixed!!!!
mrpmorris Jul 10, 2023
f13e63b
Remove .orig files
mrpmorris Jul 10, 2023
e489604
Merge from upstream
mrpmorris Jul 10, 2023
ccd2e68
It works!!!
mrpmorris Jul 10, 2023
8beaf2d
Possibly working
mrpmorris Jul 10, 2023
1208e41
Merge from upstream
mrpmorris Jul 11, 2023
08394e9
WIP
mrpmorris Jul 11, 2023
fd0395a
WIP
mrpmorris Jul 11, 2023
de37efb
Nearly there (new approach)
mrpmorris Jul 11, 2023
8a42ea3
Merge branch 'new-components' into 504/PeteM-ExpandedBindingSupport
vnbaaij Jul 11, 2023
c4400f1
Undo CSS changes
mrpmorris Jul 11, 2023
1057bd2
WIP
mrpmorris Jul 11, 2023
d88ab61
Merge branch '504/PeteM-ExpandedBindingSupport' of https://github.com…
mrpmorris Jul 11, 2023
1517efe
Frozen
mrpmorris Jul 11, 2023
8fcb3e4
Merge branch 'new-components' of https://github.com/microsoft/fluentu…
mrpmorris Jul 11, 2023
5c66870
Tree fixed
mrpmorris Jul 12, 2023
1e4c519
Merge from upstream
mrpmorris Jul 12, 2023
a3c000d
Working!
mrpmorris Jul 12, 2023
c653bab
No need for custom event
mrpmorris Jul 12, 2023
3887f4d
Code formatting
mrpmorris Jul 12, 2023
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
60 changes: 60 additions & 0 deletions examples/Demo/Shared/Pages/NavMenu/Examples/NavMenuDataBound.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
@namespace FluentUI.Demo.Shared

@inject ILogger<NavMenuDefault> logger;

<h2>Navigation Examples</h2>

<FluentStack Orientation="Orientation.Horizontal">
<!-- Menu with sub-items and icons -->
<FluentNavMenu @bind-Expanded=MenuExpanded>
<FluentNavMenuGroup Id="Group1" Text="Item 1" @bind-Expanded=Item1Expanded Icon="@(new Icons.Regular.Size24.LeafOne())">
<FluentNavMenuLink Text="Item 1.1" Icon="@(new Icons.Regular.Size24.LeafOne())" @bind-Selected=Item1Point1Selected />
<FluentNavMenuLink Text="Item 1.2" Icon="@(new Icons.Regular.Size24.LeafTwo())" @bind-Selected=Item1Point2Selected />
</FluentNavMenuGroup>
<FluentNavMenuGroup Id="Group2" Text="Item 2" @bind-Expanded=Item2Expanded Icon="@(new Icons.Regular.Size24.LeafTwo())">
<FluentNavMenuLink Text="Item 2.1" Icon="@(new Icons.Regular.Size24.LeafOne())" @bind-Selected=Item2Point1Selected />
<FluentNavMenuLink Text="Item 2.2" Icon="@(new Icons.Regular.Size24.LeafTwo())" @bind-Selected=Item2Point2Selected />
</FluentNavMenuGroup>
</FluentNavMenu>
<FluentStack Orientation="Orientation.Vertical">

<h2>Expanded elements</h2>
<FluentCheckbox @bind-Value=MenuExpanded>
<span aria-label="Menu expanded">Menu</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item1Expanded>
<span aria-label="Item 1 expanded">Item 1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Expanded>
<span aria-label="Item 2 expanded">Item 2</span>
</FluentCheckbox>

<h2>Selected elements</h2>
<FluentCheckbox @bind-Value=Item1Point1Selected>
<span aria-label="Item 1.1 selected">Item 1.1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item1Point2Selected>
<span aria-label="Item 1.2 selected">Item 1.2</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Point1Selected>
<span aria-label="Item 2.1 selected">Item 2.1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Point2Selected>
<span aria-label="Item 2.2 selected">Item 2.2</span>
</FluentCheckbox>

</FluentStack>
</FluentStack>

@code {
bool MenuExpanded = true;
bool Item1Expanded = true;
bool Item2Expanded = true;

bool Item1Point1Selected = false;
bool Item1Point2Selected = false;
bool Item2Point1Selected = false;
bool Item2Point2Selected = false;
}


6 changes: 6 additions & 0 deletions examples/Demo/Shared/Pages/NavMenu/NavMenuPage.razor
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,9 @@
More complete example which show how menu works with together with a text section when it collapses.
</Description>
</DemoSection>

<DemoSection Component="typeof(NavMenuDataBound)" Title="Data bound">
<Description>
An example data binding the Expanded parameter.
</Description>
</DemoSection>
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<FluentTreeView>
<FluentTreeItem InitiallyExpanded="true">
Root item
<FluentTreeItem>
<FluentTreeItem InitiallyExpanded="true">
Flowers
<FluentTreeItem>Daisy</FluentTreeItem>
<FluentTreeItem>Sunflower</FluentTreeItem>
<FluentTreeItem>Rose</FluentTreeItem>
</FluentTreeItem>
<FluentTreeItem Expanded="true">
<FluentTreeItem InitiallyExpanded="true">
Planes
<FluentTreeItem Disabled="true">Tomcat</FluentTreeItem>
<FluentTreeItem>Hawker Harrier</FluentTreeItem>
Expand Down
71 changes: 0 additions & 71 deletions examples/Demo/Shared/wwwroot/css/site.css
Original file line number Diff line number Diff line change
Expand Up @@ -497,74 +497,3 @@ code {
margin-inline-end: calc(100% - env(viewport-segment-left 1 0));
}
}






/*NavMenu expander*/
.nav-menu-expander::part(positioning-region) {
background-color: var(--neutral-fill-stealth-rest);
}

.nav-menu-expander::part(content-region) {
margin-inline-start: calc(var(--design-unit) * 2px);
-webkit-user-select: none;
user-select: none;
}

.nav-menu-expander::part(positioning-region):hover {
background-color: var(--neutral-fill-secondary-rest);
}

.nav-menu-expander.selected::after {
display: none;
}



/*Child Elements (Groups and Items)*/
.navmenu-child-element::part(content-region) {
-webkit-user-select: none;
user-select: none;
margin-inline-start: calc(var(--design-unit) * 2px);
margin-inline-end: calc(var(--design-unit) * 2px);
}



/* Groups */
.navmenu-group::part(content-region) {
margin-inline-end: var(--expand-collapse-button-size);
}



/* Group expander*/
.navmenu .navmenu-group::part(expand-collapse-button) {
right: calc(var(--design-unit) * 2px);
left: unset;
margin-inline-end: calc(var(--expand-collapse-button-size) * -1);
}

[dir="rtl"] * .navmenu-group::part(expand-collapse-button) {
left: calc(var(--design-unit) * 2px);
right: unset;
margin-inline-start: calc(var(--expand-collapse-button-size) - (var(--design-unit) * 2px));
}



/* Group items */
.navmenu-group .navmenu-child-element::part(content-region) {
padding-inline-start: 20px;

}



/* Nav links */
.navmenu .navmenu-link::part(content-region) {
margin-inline-start: calc(var(--design-unit) * 2px);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
@namespace FluentUI.Demo.Shared

@inject ILogger<NavMenuDefault> logger;

<h2>Navigation Examples</h2>

<FluentStack Orientation="Orientation.Horizontal">
<!-- Menu with sub-items and icons -->
<FluentNavMenu @bind-Expanded=MenuExpanded>
<FluentNavMenuGroup Id="Group1" Text="Item 1" @bind-Expanded=Item1Expanded Icon="@(new Icons.Regular.Size24.LeafOne())">
<FluentNavMenuLink Text="Item 1.1" Icon="@(new Icons.Regular.Size24.LeafOne())" @bind-Selected=Item1Point1Selected />
<FluentNavMenuLink Text="Item 1.2" Icon="@(new Icons.Regular.Size24.LeafTwo())" @bind-Selected=Item1Point2Selected />
</FluentNavMenuGroup>
<FluentNavMenuGroup Id="Group2" Text="Item 2" @bind-Expanded=Item2Expanded Icon="@(new Icons.Regular.Size24.LeafTwo())">
<FluentNavMenuLink Text="Item 2.1" Icon="@(new Icons.Regular.Size24.LeafOne())" @bind-Selected=Item2Point1Selected />
<FluentNavMenuLink Text="Item 2.2" Icon="@(new Icons.Regular.Size24.LeafTwo())" @bind-Selected=Item2Point2Selected />
</FluentNavMenuGroup>
</FluentNavMenu>
<FluentStack Orientation="Orientation.Vertical">

<h2>Expanded elements</h2>
<FluentCheckbox @bind-Value=MenuExpanded>
<span aria-label="Menu expanded">Menu</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item1Expanded>
<span aria-label="Item 1 expanded">Item 1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Expanded>
<span aria-label="Item 2 expanded">Item 2</span>
</FluentCheckbox>

<h2>Selected elements</h2>
<FluentCheckbox @bind-Value=Item1Point1Selected>
<span aria-label="Item 1.1 selected">Item 1.1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item1Point2Selected>
<span aria-label="Item 1.2 selected">Item 1.2</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Point1Selected>
<span aria-label="Item 2.1 selected">Item 2.1</span>
</FluentCheckbox>
<FluentCheckbox @bind-Value=Item2Point2Selected>
<span aria-label="Item 2.2 selected">Item 2.2</span>
</FluentCheckbox>

</FluentStack>
</FluentStack>

@code {
bool MenuExpanded = true;
bool Item1Expanded = true;
bool Item2Expanded = true;

bool Item1Point1Selected = false;
bool Item1Point2Selected = false;
bool Item2Point1Selected = false;
bool Item2Point2Selected = false;
}


1 change: 0 additions & 1 deletion src/Core/BindAttributes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ namespace Microsoft.Fast.Components.FluentUI;

[BindElement("fluent-search", null, "value", "onchange")]
[BindElement("fluent-search", "value", "value", "onchange")]

public static class BindAttributes
{
}
Expand Down
4 changes: 3 additions & 1 deletion src/Core/Components/NavMenu/FluentNavMenu.razor
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
@namespace Microsoft.Fast.Components.FluentUI
@inherits FluentComponentBase
@inject NavigationManager NavigationManager

<div>
<CascadingValue Value="this" IsFixed="true">
Expand All @@ -8,7 +9,8 @@
<CascadingValue Value="@HasChildIcons" Name="NavMenuItemSiblingHasIcon">
<FluentTreeView Class="@ClassValue"
Style="@StyleValue"
OnSelectedChange="@HandleSelectedChange">
CurrentSelected="@_selectedTreeItem"
CurrentSelectedChanged="@HandleCurrentSelectedChanged">
@if (Collapsible)
{
<FluentTreeItem Id="@_expandCollapseTreeItemId" Class="nav-menu-expander" @onclick="@ToggleCollapsedAsync" @onkeydown="@HandleExpandCollapseKeyDownAsync">
Expand Down
Loading