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
Original file line number Diff line number Diff line change
Expand Up @@ -1322,6 +1322,12 @@
Needs to be a valid CSS width value like '100px', '10%' or '0.5fr'.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.ColumnBase`1.HierarchicalToggle">
<summary>
If true, the column will include an expand/collapse toggle for hierarchical data.
This only applies if <typeparamref name="TGridItem"/> implements <see cref="T:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem"/>.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.ColumnBase`1.Grid">
<summary>
Gets a reference to the enclosing <see cref="T:Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid`1" />.
Expand Down Expand Up @@ -2054,6 +2060,11 @@
Default is false.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid`1.OnToggle">
<summary>
Event callback for when a hierarchical row is expanded or collapsed.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid`1.GenerateHeader">
<summary>
Gets or sets a value indicating whether the grid should automatically generate a header row and its type.
Expand Down Expand Up @@ -2528,6 +2539,91 @@
<param name="totalItemCount">The total numer of items that exist. See <see cref="P:Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult`1.TotalItemCount"/> for details.</param>
<returns>An instance of <see cref="T:Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult`1"/>.</returns>
</member>
<member name="T:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2">
<summary>
A base class for a grid item that can be part of a hierarchy.
</summary>
<typeparam name="TItem">The type of the item being displayed.</typeparam>
<typeparam name="TGridItem">The type of the grid item wrapper class.</typeparam>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.Item">
<summary>
Gets or sets the reference to the item that holds this row's values.
This name aligns with <see cref="P:Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow`1.Item"/>.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.Children">
<summary>
The children of this item in the hierarchy.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.HasChildren">
<summary>
Gets a value indicating whether this item has children.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.Depth">
<summary>
The depth of this item in the hierarchy (0 for root).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.IsHidden">
<summary>
Whether this item is currently hidden (e.g. because a parent is collapsed).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.IsCollapsed">
<summary>
Whether this item's children are currently collapsed.
</summary>
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.UpdateHidden">
<summary>
Updates the <see cref="P:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2.IsHidden" /> property for this item's children.
</summary>
</member>
<member name="T:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridUtilities">
<summary>
Provides utility methods for managing hierarchical grid data.
</summary>
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridUtilities.OrderHierarchically``2(System.Collections.Generic.List{``0},System.Func{``1,System.String},System.Func{``1,System.String},System.Func{``1,System.Boolean})">
<summary>
Orders a flat list of grid items into a hierarchical structure based on parent relationships.
</summary>
<typeparam name="TGridItem">The type of the grid item wrapper.</typeparam>
<typeparam name="TItem">The type of the underlying data item.</typeparam>
<param name="initialItems">The initial flat list of items.</param>
<param name="getId">Function to get the unique identifier of an item.</param>
<param name="getParentId">Function to get the parent identifier of an item.</param>
<param name="isCollapsed">Function to determine if an item is initially collapsed.</param>
<returns>A list of items ordered hierarchically, including child relationships.</returns>
</member>
<member name="T:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem">
<summary>
An interface for a grid item that can be part of a hierarchy.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem.Depth">
<summary>
Gets or sets the depth of this item in the hierarchy (0 for root).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem.IsHidden">
<summary>
Gets or sets whether this item is currently hidden (e.g. because a parent is collapsed).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem.IsCollapsed">
<summary>
Gets or sets whether this item's children are currently collapsed.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.IHierarchicalGridItem.HasChildren">
<summary>
Gets a value indicating whether this item has children.
</summary>
</member>
<member name="T:Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.ColumnsCollectedNotifier`1">
<summary>
For internal use only. Do not use.
Expand Down
1 change: 1 addition & 0 deletions examples/Demo/Shared/Pages/DataGrid/DataGridPage.razor
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@
<h3>Advanced</h3>
<FluentAnchor Href="/datagrid-virtualize" Appearance="Appearance.Hypertext">Virtualized grid</FluentAnchor>
<FluentAnchor Href="/datagrid-remote-data" Appearance="Appearance.Hypertext">Remote data</FluentAnchor>
<FluentAnchor Href="/datagrid-hierarchical" Appearance="Appearance.Hypertext">Hierarchical grid</FluentAnchor>
<FluentAnchor Href="/datagrid-manual" Appearance="Appearance.Hypertext">Manual grid</FluentAnchor>
<FluentAnchor Href="/datagrid-menu-header" Appearance="Appearance.Hypertext">Menu header</FluentAnchor>
</FluentStack>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
@using Microsoft.FluentUI.AspNetCore.Components
@using FluentUI.Demo.Shared.SampleData

<style>
:root {
--datagrid-hover-color: lightyellow;
}

.fluent-data-grid {
--fluent-data-grid-resize-handle-color: var(--neutral-stroke-rest) !important;
}

.flag {
height: 1rem;
border: 1px solid var(--neutral-layer-3);
}

td {
height: 38px!important
}
</style>

<FluentDataGrid Items="@items.Where(i => !i.IsHidden).AsQueryable()" ShowHover="true" ResizableColumns="true">
<TemplateColumn Title="Name" HierarchicalToggle="true">
@if (context.Item.ContinentCode != null)
{
<img class="flag" src="_content/FluentUI.Demo.Shared/flags/@(context.Item.Code).svg" alt="Flag of @(context.Item.Code)" />
}
@context.Item.Name
</TemplateColumn>
<PropertyColumn Title="Gold" Property="@(i => i.Item.Medals.Gold)" />
<PropertyColumn Title="Silver" Property="@(i => i.Item.Medals.Silver)" />
<PropertyColumn Title="Bronze" Property="@(i => i.Item.Medals.Bronze)" />
<PropertyColumn Title="Total" Property="@(i => i.Item.Medals.Total)" />

</FluentDataGrid>

@code {
List<OlympicGridItem> items = new();

protected override void OnInitialized()
{
foreach (var continent in DataSource.Continents)
{
var countries = DataSource._olympics_2024.Where(c => c.ContinentCode == continent.Code).OrderByDescending(c => c.Medals.Total);

var continentItem = new OlympicGridItem
{
Item = continent with
{
Medals = new Medals()
{
Gold = countries.Sum(c => c.Medals.Gold),
Silver = countries.Sum(c => c.Medals.Silver),
Bronze = countries.Sum(c => c.Medals.Bronze),
}
},
IsCollapsed = true
};

items.Add(continentItem);

foreach (var country in countries)
{
var countryItem = new OlympicGridItem
{
Item = country,
Depth = 1,
IsHidden = true
};
continentItem.Children.Add(countryItem);
items.Add(countryItem);
}
}
}

public class OlympicGridItem : HierarchicalGridItem<Country, OlympicGridItem>
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
@using Microsoft.FluentUI.AspNetCore.Components
@using FluentUI.Demo.Shared.SampleData

<p>
<FluentButton Appearance="Appearance.Accent" IconStart="@(ceoItem?.IsCollapsed == true ? new Icons.Regular.Size16.Add() : new Icons.Regular.Size16.Subtract())"
OnClick="@ToggleCEO">
@(ceoItem?.IsCollapsed == true ? "Expand" : "Collapse") CEO
</FluentButton>
</p>

<FluentDataGrid Items="@items.Where(i => !i.IsHidden).AsQueryable()" ResizableColumns="true">
<TemplateColumn Title="Name" HierarchicalToggle="true">
@(context.Item.FirstName + " " + context.Item.LastName)
</TemplateColumn>
<PropertyColumn Title="Job Title" Property="@(i => i.Item.JobTitle)" />
<PropertyColumn Title="Department" Property="@(i => i.Item.Department)" />
<PropertyColumn Title="Location" Property="@(i => i.Item.Location)" />
</FluentDataGrid>


Loading
Loading