diff --git a/samples/grids/grid/conditional-row-selectors/wwwroot/events.js b/samples/grids/grid/conditional-row-selectors/wwwroot/events.js
index 093a36aef2..e448c90d33 100644
--- a/samples/grids/grid/conditional-row-selectors/wwwroot/events.js
+++ b/samples/grids/grid/conditional-row-selectors/wwwroot/events.js
@@ -1,23 +1,22 @@
igRegisterScript("WebGridRowSelectionConditional", (event) => {
- const eventArgs = event.detail;
- if (!eventArgs.added.length && eventArgs.removed.length) {
- // ignore deselect
- return;
- }
- const originalAddedLength = eventArgs.added.length;
+ const eventArgs = event.detail;
+ if (!eventArgs.added.length && eventArgs.removed.length) {
+ // ignore deselect
+ return;
+ }
+ const originalAddedLength = eventArgs.added.length;
- // only allow selection of items that contain 'A'
- eventArgs.newSelection = eventArgs.newSelection.filter(x => x.indexOf('A') !== -1);
+ // only allow selection of items that contain 'A'
+ eventArgs.newSelection = eventArgs.newSelection.filter(x => x["ID"].indexOf("A") !== -1);
- // cleanup selection if all conditionally selectable rows are already selected
- if (eventArgs.newSelection.length
- && !eventArgs.newSelection.filter(x => eventArgs.oldSelection.indexOf(x) === -1).length
- && originalAddedLength > 1) {
- // all selected from header, deselect instead
- eventArgs.newSelection = [];
- }
- grid.markForCheck();
+ // cleanup selection if all conditionally selectable rows are already selected
+ if (eventArgs.newSelection.length
+ && !eventArgs.newSelection.filter(x => eventArgs.oldSelection.indexOf(x) === -1).length
+ && originalAddedLength > 1) {
+ // all selected from header, deselect instead
+ eventArgs.newSelection = [];
+ }
}, false);
diff --git a/samples/grids/grid/keyboard-custom-navigation/wwwroot/events.js b/samples/grids/grid/keyboard-custom-navigation/wwwroot/events.js
index 4e17473a31..8c35db0e6d 100644
--- a/samples/grids/grid/keyboard-custom-navigation/wwwroot/events.js
+++ b/samples/grids/grid/keyboard-custom-navigation/wwwroot/events.js
@@ -5,7 +5,7 @@ igRegisterScript("WebGridCustomKBNav", (evtArgs) => {
const target = args.target;
const evt = args.event;
const type = args.targetType;
- var grid = document.getElementsByTagName("igc-grid")[0];
+ var grid = args.target.grid;
if (type === 'dataCell' && target.editMode && evt.key.toLowerCase() === 'tab') {
// Value validation for number column.
diff --git a/samples/grids/tree-grid/column-sorting-indicators/App.razor b/samples/grids/tree-grid/column-sorting-indicators/App.razor
new file mode 100644
index 0000000000..68467a8000
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/App.razor
@@ -0,0 +1,159 @@
+@using IgniteUI.Blazor.Controls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ var grid = this.grid;
+ var column1 = this.column1;
+
+ }
+
+ private IgbTreeGrid grid;
+ private IgbSortingExpression[] _sortingExpression1 = null;
+ public IgbSortingExpression[] SortingExpression1
+ {
+ get
+ {
+ if (this._sortingExpression1 == null)
+ {
+ var sortingExpression1 = new IgbSortingExpression[7];
+ var sortingExpression2 = new IgbSortingExpression();
+ sortingExpression2.Dir = SortingDirection.Asc;
+ sortingExpression2.FieldName = "ID";
+ sortingExpression2.IgnoreCase = true;
+ sortingExpression1[0] = sortingExpression2;
+ var sortingExpression3 = new IgbSortingExpression();
+ sortingExpression3.Dir = SortingDirection.Desc;
+ sortingExpression3.FieldName = "Name";
+ sortingExpression3.IgnoreCase = true;
+ sortingExpression1[1] = sortingExpression3;
+ var sortingExpression4 = new IgbSortingExpression();
+ sortingExpression4.Dir = SortingDirection.Asc;
+ sortingExpression4.FieldName = "Category";
+ sortingExpression4.IgnoreCase = true;
+ sortingExpression1[2] = sortingExpression4;
+ var sortingExpression5 = new IgbSortingExpression();
+ sortingExpression5.Dir = SortingDirection.Asc;
+ sortingExpression5.FieldName = "OrderDate";
+ sortingExpression5.IgnoreCase = true;
+ sortingExpression1[3] = sortingExpression5;
+ var sortingExpression6 = new IgbSortingExpression();
+ sortingExpression6.Dir = SortingDirection.Asc;
+ sortingExpression6.FieldName = "Price";
+ sortingExpression6.IgnoreCase = true;
+ sortingExpression1[4] = sortingExpression6;
+ var sortingExpression7 = new IgbSortingExpression();
+ sortingExpression7.Dir = SortingDirection.Asc;
+ sortingExpression7.FieldName = "Units";
+ sortingExpression7.IgnoreCase = true;
+ sortingExpression1[5] = sortingExpression7;
+ var sortingExpression8 = new IgbSortingExpression();
+ sortingExpression8.Dir = SortingDirection.Asc;
+ sortingExpression8.FieldName = "Delivered";
+ sortingExpression8.IgnoreCase = true;
+ sortingExpression1[6] = sortingExpression8;
+ this._sortingExpression1 = sortingExpression1;
+ }
+ return this._sortingExpression1;
+ }
+ }
+ private IgbColumn column1;
+ private IgbColumnPipeArgs _columnPipeArgs1 = null;
+ public IgbColumnPipeArgs ColumnPipeArgs1
+ {
+ get
+ {
+ if (this._columnPipeArgs1 == null)
+ {
+ var columnPipeArgs1 = new IgbColumnPipeArgs();
+ columnPipeArgs1.CurrencyCode = "USD";
+ columnPipeArgs1.DigitsInfo = "1.2-2";
+ this._columnPipeArgs1 = columnPipeArgs1;
+ }
+ return this._columnPipeArgs1;
+ }
+ }
+
+ private OrdersTreeData _ordersTreeData = null;
+ public OrdersTreeData OrdersTreeData
+ {
+ get
+ {
+ if (_ordersTreeData == null)
+ {
+ _ordersTreeData = new OrdersTreeData();
+ }
+ return _ordersTreeData;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.csproj b/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.csproj
new file mode 100644
index 0000000000..9e7c3c9644
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ 3.0
+ Infragistics.Samples
+ Infragistics.Samples
+
+
+
+ 1701;1702,IDE0028,BL0005,0219,CS1998
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.sln b/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.sln
new file mode 100644
index 0000000000..1e2eda208a
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/BlazorClientApp.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientApp", "BlazorClientApp.csproj", "{F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FC52AAC8-4488-40AE-9621-75F6BA744B18}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/grids/tree-grid/column-sorting-indicators/OrdersTreeData.cs b/samples/grids/tree-grid/column-sorting-indicators/OrdersTreeData.cs
new file mode 100644
index 0000000000..9bc1dbf439
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/OrdersTreeData.cs
@@ -0,0 +1,286 @@
+using System;
+using System.Collections.Generic;
+public class OrdersTreeDataItem
+{
+ public double ID { get; set; }
+ public double ParentID { get; set; }
+ public string Name { get; set; }
+ public string Category { get; set; }
+ public string OrderDate { get; set; }
+ public double Units { get; set; }
+ public double UnitPrice { get; set; }
+ public double Price { get; set; }
+ public bool Delivered { get; set; }
+}
+
+public class OrdersTreeData
+ : List
+{
+ public OrdersTreeData()
+ {
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 1,
+ ParentID = -1,
+ Name = @"Order 1",
+ Category = @"",
+ OrderDate = @"2010-02-17",
+ Units = 1844,
+ UnitPrice = 3.73,
+ Price = 6884.38,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 101,
+ ParentID = 1,
+ Name = @"Chocolate Chip Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2010-02-17",
+ Units = 834,
+ UnitPrice = 3.59,
+ Price = 2994.06,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 102,
+ ParentID = 1,
+ Name = @"Red Apples",
+ Category = @"Fruit",
+ OrderDate = @"2010-02-17",
+ Units = 371,
+ UnitPrice = 3.66,
+ Price = 1357.86,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 103,
+ ParentID = 1,
+ Name = @"Butter",
+ Category = @"Diary",
+ OrderDate = @"2010-02-17",
+ Units = 260,
+ UnitPrice = 3.45,
+ Price = 897,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 104,
+ ParentID = 1,
+ Name = @"Potato Chips",
+ Category = @"Snack",
+ OrderDate = @"2010-02-17",
+ Units = 118,
+ UnitPrice = 1.96,
+ Price = 231.28,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 105,
+ ParentID = 1,
+ Name = @"Orange Juice",
+ Category = @"Beverages",
+ OrderDate = @"2010-02-17",
+ Units = 261,
+ UnitPrice = 5.38,
+ Price = 1404.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 2,
+ ParentID = -1,
+ Name = @"Order 2",
+ Category = @"",
+ OrderDate = @"2022-05-27",
+ Units = 1831,
+ UnitPrice = 8.23,
+ Price = 15062.77,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 201,
+ ParentID = 2,
+ Name = @"Frozen Shrimps",
+ Category = @"Seafood",
+ OrderDate = @"2022-05-27",
+ Units = 120,
+ UnitPrice = 20.45,
+ Price = 2454,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 202,
+ ParentID = 2,
+ Name = @"Ice Tea",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 840,
+ UnitPrice = 7,
+ Price = 5880,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 203,
+ ParentID = 2,
+ Name = @"Fresh Cheese",
+ Category = @"Diary",
+ OrderDate = @"2022-05-27",
+ Units = 267,
+ UnitPrice = 16.55,
+ Price = 4418.85,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 204,
+ ParentID = 2,
+ Name = @"Carrots",
+ Category = @"Vegetables",
+ OrderDate = @"2022-05-27",
+ Units = 360,
+ UnitPrice = 2.77,
+ Price = 997.2,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 205,
+ ParentID = 2,
+ Name = @"Apple Juice",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 244,
+ UnitPrice = 5.38,
+ Price = 1312.72,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 3,
+ ParentID = -1,
+ Name = @"Order 3",
+ Category = @"",
+ OrderDate = @"2022-08-04",
+ Units = 1972,
+ UnitPrice = 3.47,
+ Price = 6849.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 301,
+ ParentID = 3,
+ Name = @"Skimmed Milk 1L",
+ Category = @"Diary",
+ OrderDate = @"2022-08-04",
+ Units = 1028,
+ UnitPrice = 3.56,
+ Price = 3659.68,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 302,
+ ParentID = 3,
+ Name = @"Bananas 5 Pack",
+ Category = @"Fruit",
+ OrderDate = @"2022-08-04",
+ Units = 370,
+ UnitPrice = 6.36,
+ Price = 2353.2,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 303,
+ ParentID = 3,
+ Name = @"Cauliflower",
+ Category = @"Vegetables",
+ OrderDate = @"2022-08-04",
+ Units = 283,
+ UnitPrice = 0.95,
+ Price = 268.85,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 304,
+ ParentID = 3,
+ Name = @"White Chocolate Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2022-08-04",
+ Units = 291,
+ UnitPrice = 1.95,
+ Price = 567.45,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 4,
+ ParentID = -1,
+ Name = @"Order 4",
+ Category = @"",
+ OrderDate = @"2023-01-04",
+ Units = 1065,
+ UnitPrice = 5.56,
+ Price = 5923.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 401,
+ ParentID = 4,
+ Name = @"Mini Milk Chocolate Cookie Bites",
+ Category = @"Cookies",
+ OrderDate = @"2023-01-04",
+ Units = 68,
+ UnitPrice = 2.25,
+ Price = 153,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 402,
+ ParentID = 4,
+ Name = @"Wild Salmon Fillets",
+ Category = @"Seafood",
+ OrderDate = @"2023-01-04",
+ Units = 320,
+ UnitPrice = 16.15,
+ Price = 5168,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 403,
+ ParentID = 4,
+ Name = @"Diet Lemonade",
+ Category = @"Beverages",
+ OrderDate = @"2023-01-04",
+ Units = 437,
+ UnitPrice = 0.5,
+ Price = 218.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 404,
+ ParentID = 4,
+ Name = @"Potatos",
+ Category = @"Vegetables",
+ OrderDate = @"2023-01-04",
+ Units = 240,
+ UnitPrice = 1.6,
+ Price = 384,
+ Delivered = true
+ });
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-indicators/Program.cs b/samples/grids/tree-grid/column-sorting-indicators/Program.cs
new file mode 100644
index 0000000000..562247181f
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/Program.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Net.Http;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Text;
+using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using IgniteUI.Blazor.Controls; // for registering Ignite UI modules
+
+namespace Infragistics.Samples
+{
+ public class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ var builder = WebAssemblyHostBuilder.CreateDefault(args);
+ builder.RootComponents.Add("app");
+ builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
+ // registering Ignite UI modules
+ builder.Services.AddIgniteUIBlazor(
+ typeof(IgbTreeGridModule)
+ );
+ await builder.Build().RunAsync();
+ }
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-indicators/Properties/launchSettings.json b/samples/grids/tree-grid/column-sorting-indicators/Properties/launchSettings.json
new file mode 100644
index 0000000000..18bd6fb5bc
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:4200",
+ "sslPort": 44385
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "BlazorSamples": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:5001;http://localhost:4200"
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-indicators/_Imports.razor b/samples/grids/tree-grid/column-sorting-indicators/_Imports.razor
new file mode 100644
index 0000000000..d27d337cb1
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/_Imports.razor
@@ -0,0 +1,9 @@
+// these namespaces are global to the app
+@using System.Net.Http
+@using System.Net.Http.Json
+@using Microsoft.AspNetCore.Components.Forms
+@using Microsoft.AspNetCore.Components.Routing
+@using Microsoft.AspNetCore.Components.Web
+@using Microsoft.AspNetCore.Components.WebAssembly.Http
+@using Microsoft.JSInterop
+@using Infragistics.Samples
diff --git a/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.css b/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.css
new file mode 100644
index 0000000000..50ca13caa6
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.css
@@ -0,0 +1,4 @@
+/*
+CSS styles are loaded from the shared CSS file located at:
+https://static.infragistics.com/xplatform/css/samples/
+*/
diff --git a/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.html b/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.html
new file mode 100644
index 0000000000..dde85b4e54
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-indicators/wwwroot/index.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+ Samples | IgniteUI for Blazor | Infragistics
+
+
+
+
+
+
+
+
+
+
+
+ An unhandled error has occurred.
+
Reload
+
🗙
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/column-sorting-options/App.razor b/samples/grids/tree-grid/column-sorting-options/App.razor
new file mode 100644
index 0000000000..4ab200c741
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/App.razor
@@ -0,0 +1,169 @@
+@using IgniteUI.Blazor.Controls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+
+ private Action BindElements { get; set; }
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ var propertyEditor = this.propertyEditor;
+ var sortingOptionsEditor = this.sortingOptionsEditor;
+ var propertyEditorPropertyDescription1 = this.propertyEditorPropertyDescription1;
+ var grid = this.grid;
+ var column1 = this.column1;
+
+ this.BindElements = () => {
+ propertyEditor.Target = this.grid;
+ };
+ this.BindElements();
+
+ }
+
+ private IgbPropertyEditorPanel propertyEditor;
+ private IgbPropertyEditorPropertyDescription sortingOptionsEditor;
+ private IgbPropertyEditorPropertyDescription propertyEditorPropertyDescription1;
+ private IgbTreeGrid grid;
+ private IgbSortingExpression[] _sortingExpression1 = null;
+ public IgbSortingExpression[] SortingExpression1
+ {
+ get
+ {
+ if (this._sortingExpression1 == null)
+ {
+ var sortingExpression1 = new IgbSortingExpression[1];
+ var sortingExpression2 = new IgbSortingExpression();
+ sortingExpression2.FieldName = "Category";
+ sortingExpression2.Dir = SortingDirection.Asc;
+ sortingExpression2.IgnoreCase = true;
+ sortingExpression1[0] = sortingExpression2;
+ this._sortingExpression1 = sortingExpression1;
+ }
+ return this._sortingExpression1;
+ }
+ }
+ private IgbColumn column1;
+ private IgbColumnPipeArgs _columnPipeArgs1 = null;
+ public IgbColumnPipeArgs ColumnPipeArgs1
+ {
+ get
+ {
+ if (this._columnPipeArgs1 == null)
+ {
+ var columnPipeArgs1 = new IgbColumnPipeArgs();
+ columnPipeArgs1.CurrencyCode = "USD";
+ columnPipeArgs1.DigitsInfo = "1.2-2";
+ this._columnPipeArgs1 = columnPipeArgs1;
+ }
+ return this._columnPipeArgs1;
+ }
+ }
+
+ public void WebGridClearSort(IgbPropertyEditorPropertyDescriptionButtonClickEventArgs args)
+ {
+ this.grid.ClearSort("");
+ }
+
+ private OrdersTreeData _ordersTreeData = null;
+ public OrdersTreeData OrdersTreeData
+ {
+ get
+ {
+ if (_ordersTreeData == null)
+ {
+ _ordersTreeData = new OrdersTreeData();
+ }
+ return _ordersTreeData;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.csproj b/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.csproj
new file mode 100644
index 0000000000..9e7c3c9644
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ 3.0
+ Infragistics.Samples
+ Infragistics.Samples
+
+
+
+ 1701;1702,IDE0028,BL0005,0219,CS1998
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.sln b/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.sln
new file mode 100644
index 0000000000..1e2eda208a
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/BlazorClientApp.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientApp", "BlazorClientApp.csproj", "{F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FC52AAC8-4488-40AE-9621-75F6BA744B18}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/grids/tree-grid/column-sorting-options/OrdersTreeData.cs b/samples/grids/tree-grid/column-sorting-options/OrdersTreeData.cs
new file mode 100644
index 0000000000..9bc1dbf439
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/OrdersTreeData.cs
@@ -0,0 +1,286 @@
+using System;
+using System.Collections.Generic;
+public class OrdersTreeDataItem
+{
+ public double ID { get; set; }
+ public double ParentID { get; set; }
+ public string Name { get; set; }
+ public string Category { get; set; }
+ public string OrderDate { get; set; }
+ public double Units { get; set; }
+ public double UnitPrice { get; set; }
+ public double Price { get; set; }
+ public bool Delivered { get; set; }
+}
+
+public class OrdersTreeData
+ : List
+{
+ public OrdersTreeData()
+ {
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 1,
+ ParentID = -1,
+ Name = @"Order 1",
+ Category = @"",
+ OrderDate = @"2010-02-17",
+ Units = 1844,
+ UnitPrice = 3.73,
+ Price = 6884.38,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 101,
+ ParentID = 1,
+ Name = @"Chocolate Chip Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2010-02-17",
+ Units = 834,
+ UnitPrice = 3.59,
+ Price = 2994.06,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 102,
+ ParentID = 1,
+ Name = @"Red Apples",
+ Category = @"Fruit",
+ OrderDate = @"2010-02-17",
+ Units = 371,
+ UnitPrice = 3.66,
+ Price = 1357.86,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 103,
+ ParentID = 1,
+ Name = @"Butter",
+ Category = @"Diary",
+ OrderDate = @"2010-02-17",
+ Units = 260,
+ UnitPrice = 3.45,
+ Price = 897,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 104,
+ ParentID = 1,
+ Name = @"Potato Chips",
+ Category = @"Snack",
+ OrderDate = @"2010-02-17",
+ Units = 118,
+ UnitPrice = 1.96,
+ Price = 231.28,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 105,
+ ParentID = 1,
+ Name = @"Orange Juice",
+ Category = @"Beverages",
+ OrderDate = @"2010-02-17",
+ Units = 261,
+ UnitPrice = 5.38,
+ Price = 1404.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 2,
+ ParentID = -1,
+ Name = @"Order 2",
+ Category = @"",
+ OrderDate = @"2022-05-27",
+ Units = 1831,
+ UnitPrice = 8.23,
+ Price = 15062.77,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 201,
+ ParentID = 2,
+ Name = @"Frozen Shrimps",
+ Category = @"Seafood",
+ OrderDate = @"2022-05-27",
+ Units = 120,
+ UnitPrice = 20.45,
+ Price = 2454,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 202,
+ ParentID = 2,
+ Name = @"Ice Tea",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 840,
+ UnitPrice = 7,
+ Price = 5880,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 203,
+ ParentID = 2,
+ Name = @"Fresh Cheese",
+ Category = @"Diary",
+ OrderDate = @"2022-05-27",
+ Units = 267,
+ UnitPrice = 16.55,
+ Price = 4418.85,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 204,
+ ParentID = 2,
+ Name = @"Carrots",
+ Category = @"Vegetables",
+ OrderDate = @"2022-05-27",
+ Units = 360,
+ UnitPrice = 2.77,
+ Price = 997.2,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 205,
+ ParentID = 2,
+ Name = @"Apple Juice",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 244,
+ UnitPrice = 5.38,
+ Price = 1312.72,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 3,
+ ParentID = -1,
+ Name = @"Order 3",
+ Category = @"",
+ OrderDate = @"2022-08-04",
+ Units = 1972,
+ UnitPrice = 3.47,
+ Price = 6849.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 301,
+ ParentID = 3,
+ Name = @"Skimmed Milk 1L",
+ Category = @"Diary",
+ OrderDate = @"2022-08-04",
+ Units = 1028,
+ UnitPrice = 3.56,
+ Price = 3659.68,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 302,
+ ParentID = 3,
+ Name = @"Bananas 5 Pack",
+ Category = @"Fruit",
+ OrderDate = @"2022-08-04",
+ Units = 370,
+ UnitPrice = 6.36,
+ Price = 2353.2,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 303,
+ ParentID = 3,
+ Name = @"Cauliflower",
+ Category = @"Vegetables",
+ OrderDate = @"2022-08-04",
+ Units = 283,
+ UnitPrice = 0.95,
+ Price = 268.85,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 304,
+ ParentID = 3,
+ Name = @"White Chocolate Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2022-08-04",
+ Units = 291,
+ UnitPrice = 1.95,
+ Price = 567.45,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 4,
+ ParentID = -1,
+ Name = @"Order 4",
+ Category = @"",
+ OrderDate = @"2023-01-04",
+ Units = 1065,
+ UnitPrice = 5.56,
+ Price = 5923.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 401,
+ ParentID = 4,
+ Name = @"Mini Milk Chocolate Cookie Bites",
+ Category = @"Cookies",
+ OrderDate = @"2023-01-04",
+ Units = 68,
+ UnitPrice = 2.25,
+ Price = 153,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 402,
+ ParentID = 4,
+ Name = @"Wild Salmon Fillets",
+ Category = @"Seafood",
+ OrderDate = @"2023-01-04",
+ Units = 320,
+ UnitPrice = 16.15,
+ Price = 5168,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 403,
+ ParentID = 4,
+ Name = @"Diet Lemonade",
+ Category = @"Beverages",
+ OrderDate = @"2023-01-04",
+ Units = 437,
+ UnitPrice = 0.5,
+ Price = 218.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 404,
+ ParentID = 4,
+ Name = @"Potatos",
+ Category = @"Vegetables",
+ OrderDate = @"2023-01-04",
+ Units = 240,
+ UnitPrice = 1.6,
+ Price = 384,
+ Delivered = true
+ });
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-options/Program.cs b/samples/grids/tree-grid/column-sorting-options/Program.cs
new file mode 100644
index 0000000000..a3ed438f48
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/Program.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Net.Http;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Text;
+using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using IgniteUI.Blazor.Controls; // for registering Ignite UI modules
+
+namespace Infragistics.Samples
+{
+ public class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ var builder = WebAssemblyHostBuilder.CreateDefault(args);
+ builder.RootComponents.Add("app");
+ builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
+ // registering Ignite UI modules
+ builder.Services.AddIgniteUIBlazor(
+ typeof(IgbInputModule),
+ typeof(IgbPropertyEditorPanelModule),
+ typeof(IgbTreeGridModule)
+ );
+ await builder.Build().RunAsync();
+ }
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-options/Properties/launchSettings.json b/samples/grids/tree-grid/column-sorting-options/Properties/launchSettings.json
new file mode 100644
index 0000000000..18bd6fb5bc
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:4200",
+ "sslPort": 44385
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "BlazorSamples": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:5001;http://localhost:4200"
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-options/_Imports.razor b/samples/grids/tree-grid/column-sorting-options/_Imports.razor
new file mode 100644
index 0000000000..d27d337cb1
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/_Imports.razor
@@ -0,0 +1,9 @@
+// these namespaces are global to the app
+@using System.Net.Http
+@using System.Net.Http.Json
+@using Microsoft.AspNetCore.Components.Forms
+@using Microsoft.AspNetCore.Components.Routing
+@using Microsoft.AspNetCore.Components.Web
+@using Microsoft.AspNetCore.Components.WebAssembly.Http
+@using Microsoft.JSInterop
+@using Infragistics.Samples
diff --git a/samples/grids/tree-grid/column-sorting-options/wwwroot/index.css b/samples/grids/tree-grid/column-sorting-options/wwwroot/index.css
new file mode 100644
index 0000000000..50ca13caa6
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/wwwroot/index.css
@@ -0,0 +1,4 @@
+/*
+CSS styles are loaded from the shared CSS file located at:
+https://static.infragistics.com/xplatform/css/samples/
+*/
diff --git a/samples/grids/tree-grid/column-sorting-options/wwwroot/index.html b/samples/grids/tree-grid/column-sorting-options/wwwroot/index.html
new file mode 100644
index 0000000000..60e3d9d5a3
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-options/wwwroot/index.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+ Samples | IgniteUI for Blazor | Infragistics
+
+
+
+
+
+
+
+
+
+
+
+
+ An unhandled error has occurred.
+
Reload
+
🗙
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/column-sorting-style/App.razor b/samples/grids/tree-grid/column-sorting-style/App.razor
new file mode 100644
index 0000000000..6367ba87b4
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/App.razor
@@ -0,0 +1,113 @@
+@using IgniteUI.Blazor.Controls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ var grid = this.grid;
+ var column1 = this.column1;
+
+ }
+
+ private IgbTreeGrid grid;
+ private IgbColumn column1;
+ private IgbColumnPipeArgs _columnPipeArgs1 = null;
+ public IgbColumnPipeArgs ColumnPipeArgs1
+ {
+ get
+ {
+ if (this._columnPipeArgs1 == null)
+ {
+ var columnPipeArgs1 = new IgbColumnPipeArgs();
+ columnPipeArgs1.CurrencyCode = "USD";
+ columnPipeArgs1.DigitsInfo = "1.2-2";
+ this._columnPipeArgs1 = columnPipeArgs1;
+ }
+ return this._columnPipeArgs1;
+ }
+ }
+
+ private OrdersTreeData _ordersTreeData = null;
+ public OrdersTreeData OrdersTreeData
+ {
+ get
+ {
+ if (_ordersTreeData == null)
+ {
+ _ordersTreeData = new OrdersTreeData();
+ }
+ return _ordersTreeData;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.csproj b/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.csproj
new file mode 100644
index 0000000000..9e7c3c9644
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ 3.0
+ Infragistics.Samples
+ Infragistics.Samples
+
+
+
+ 1701;1702,IDE0028,BL0005,0219,CS1998
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.sln b/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.sln
new file mode 100644
index 0000000000..1e2eda208a
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/BlazorClientApp.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientApp", "BlazorClientApp.csproj", "{F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FC52AAC8-4488-40AE-9621-75F6BA744B18}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/grids/tree-grid/column-sorting-style/OrdersTreeData.cs b/samples/grids/tree-grid/column-sorting-style/OrdersTreeData.cs
new file mode 100644
index 0000000000..9bc1dbf439
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/OrdersTreeData.cs
@@ -0,0 +1,286 @@
+using System;
+using System.Collections.Generic;
+public class OrdersTreeDataItem
+{
+ public double ID { get; set; }
+ public double ParentID { get; set; }
+ public string Name { get; set; }
+ public string Category { get; set; }
+ public string OrderDate { get; set; }
+ public double Units { get; set; }
+ public double UnitPrice { get; set; }
+ public double Price { get; set; }
+ public bool Delivered { get; set; }
+}
+
+public class OrdersTreeData
+ : List
+{
+ public OrdersTreeData()
+ {
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 1,
+ ParentID = -1,
+ Name = @"Order 1",
+ Category = @"",
+ OrderDate = @"2010-02-17",
+ Units = 1844,
+ UnitPrice = 3.73,
+ Price = 6884.38,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 101,
+ ParentID = 1,
+ Name = @"Chocolate Chip Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2010-02-17",
+ Units = 834,
+ UnitPrice = 3.59,
+ Price = 2994.06,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 102,
+ ParentID = 1,
+ Name = @"Red Apples",
+ Category = @"Fruit",
+ OrderDate = @"2010-02-17",
+ Units = 371,
+ UnitPrice = 3.66,
+ Price = 1357.86,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 103,
+ ParentID = 1,
+ Name = @"Butter",
+ Category = @"Diary",
+ OrderDate = @"2010-02-17",
+ Units = 260,
+ UnitPrice = 3.45,
+ Price = 897,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 104,
+ ParentID = 1,
+ Name = @"Potato Chips",
+ Category = @"Snack",
+ OrderDate = @"2010-02-17",
+ Units = 118,
+ UnitPrice = 1.96,
+ Price = 231.28,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 105,
+ ParentID = 1,
+ Name = @"Orange Juice",
+ Category = @"Beverages",
+ OrderDate = @"2010-02-17",
+ Units = 261,
+ UnitPrice = 5.38,
+ Price = 1404.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 2,
+ ParentID = -1,
+ Name = @"Order 2",
+ Category = @"",
+ OrderDate = @"2022-05-27",
+ Units = 1831,
+ UnitPrice = 8.23,
+ Price = 15062.77,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 201,
+ ParentID = 2,
+ Name = @"Frozen Shrimps",
+ Category = @"Seafood",
+ OrderDate = @"2022-05-27",
+ Units = 120,
+ UnitPrice = 20.45,
+ Price = 2454,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 202,
+ ParentID = 2,
+ Name = @"Ice Tea",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 840,
+ UnitPrice = 7,
+ Price = 5880,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 203,
+ ParentID = 2,
+ Name = @"Fresh Cheese",
+ Category = @"Diary",
+ OrderDate = @"2022-05-27",
+ Units = 267,
+ UnitPrice = 16.55,
+ Price = 4418.85,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 204,
+ ParentID = 2,
+ Name = @"Carrots",
+ Category = @"Vegetables",
+ OrderDate = @"2022-05-27",
+ Units = 360,
+ UnitPrice = 2.77,
+ Price = 997.2,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 205,
+ ParentID = 2,
+ Name = @"Apple Juice",
+ Category = @"Beverages",
+ OrderDate = @"2022-05-27",
+ Units = 244,
+ UnitPrice = 5.38,
+ Price = 1312.72,
+ Delivered = false
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 3,
+ ParentID = -1,
+ Name = @"Order 3",
+ Category = @"",
+ OrderDate = @"2022-08-04",
+ Units = 1972,
+ UnitPrice = 3.47,
+ Price = 6849.18,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 301,
+ ParentID = 3,
+ Name = @"Skimmed Milk 1L",
+ Category = @"Diary",
+ OrderDate = @"2022-08-04",
+ Units = 1028,
+ UnitPrice = 3.56,
+ Price = 3659.68,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 302,
+ ParentID = 3,
+ Name = @"Bananas 5 Pack",
+ Category = @"Fruit",
+ OrderDate = @"2022-08-04",
+ Units = 370,
+ UnitPrice = 6.36,
+ Price = 2353.2,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 303,
+ ParentID = 3,
+ Name = @"Cauliflower",
+ Category = @"Vegetables",
+ OrderDate = @"2022-08-04",
+ Units = 283,
+ UnitPrice = 0.95,
+ Price = 268.85,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 304,
+ ParentID = 3,
+ Name = @"White Chocolate Cookies",
+ Category = @"Cookies",
+ OrderDate = @"2022-08-04",
+ Units = 291,
+ UnitPrice = 1.95,
+ Price = 567.45,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 4,
+ ParentID = -1,
+ Name = @"Order 4",
+ Category = @"",
+ OrderDate = @"2023-01-04",
+ Units = 1065,
+ UnitPrice = 5.56,
+ Price = 5923.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 401,
+ ParentID = 4,
+ Name = @"Mini Milk Chocolate Cookie Bites",
+ Category = @"Cookies",
+ OrderDate = @"2023-01-04",
+ Units = 68,
+ UnitPrice = 2.25,
+ Price = 153,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 402,
+ ParentID = 4,
+ Name = @"Wild Salmon Fillets",
+ Category = @"Seafood",
+ OrderDate = @"2023-01-04",
+ Units = 320,
+ UnitPrice = 16.15,
+ Price = 5168,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 403,
+ ParentID = 4,
+ Name = @"Diet Lemonade",
+ Category = @"Beverages",
+ OrderDate = @"2023-01-04",
+ Units = 437,
+ UnitPrice = 0.5,
+ Price = 218.5,
+ Delivered = true
+ });
+ this.Add(new OrdersTreeDataItem()
+ {
+ ID = 404,
+ ParentID = 4,
+ Name = @"Potatos",
+ Category = @"Vegetables",
+ OrderDate = @"2023-01-04",
+ Units = 240,
+ UnitPrice = 1.6,
+ Price = 384,
+ Delivered = true
+ });
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-style/Program.cs b/samples/grids/tree-grid/column-sorting-style/Program.cs
new file mode 100644
index 0000000000..a3ed438f48
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/Program.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Net.Http;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Text;
+using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using IgniteUI.Blazor.Controls; // for registering Ignite UI modules
+
+namespace Infragistics.Samples
+{
+ public class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ var builder = WebAssemblyHostBuilder.CreateDefault(args);
+ builder.RootComponents.Add("app");
+ builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
+ // registering Ignite UI modules
+ builder.Services.AddIgniteUIBlazor(
+ typeof(IgbInputModule),
+ typeof(IgbPropertyEditorPanelModule),
+ typeof(IgbTreeGridModule)
+ );
+ await builder.Build().RunAsync();
+ }
+ }
+}
diff --git a/samples/grids/tree-grid/column-sorting-style/Properties/launchSettings.json b/samples/grids/tree-grid/column-sorting-style/Properties/launchSettings.json
new file mode 100644
index 0000000000..18bd6fb5bc
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:4200",
+ "sslPort": 44385
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "BlazorSamples": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:5001;http://localhost:4200"
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/column-sorting-style/_Imports.razor b/samples/grids/tree-grid/column-sorting-style/_Imports.razor
new file mode 100644
index 0000000000..d27d337cb1
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/_Imports.razor
@@ -0,0 +1,9 @@
+// these namespaces are global to the app
+@using System.Net.Http
+@using System.Net.Http.Json
+@using Microsoft.AspNetCore.Components.Forms
+@using Microsoft.AspNetCore.Components.Routing
+@using Microsoft.AspNetCore.Components.Web
+@using Microsoft.AspNetCore.Components.WebAssembly.Http
+@using Microsoft.JSInterop
+@using Infragistics.Samples
diff --git a/samples/grids/tree-grid/column-sorting-style/wwwroot/index.css b/samples/grids/tree-grid/column-sorting-style/wwwroot/index.css
new file mode 100644
index 0000000000..6b687ab559
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/wwwroot/index.css
@@ -0,0 +1,10 @@
+/*
+CSS styles are loaded from the shared CSS file located at:
+https://static.infragistics.com/xplatform/css/samples/
+*/
+
+#grid {
+ --ig-grid-sorted-header-icon-color: #ffb06a;
+ --ig-grid-sortable-header-icon-hover-color: black;
+}
+
diff --git a/samples/grids/tree-grid/column-sorting-style/wwwroot/index.html b/samples/grids/tree-grid/column-sorting-style/wwwroot/index.html
new file mode 100644
index 0000000000..dde85b4e54
--- /dev/null
+++ b/samples/grids/tree-grid/column-sorting-style/wwwroot/index.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+ Samples | IgniteUI for Blazor | Infragistics
+
+
+
+
+
+
+
+
+
+
+
+ An unhandled error has occurred.
+
Reload
+
🗙
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/editing-lifecycle/App.razor b/samples/grids/tree-grid/editing-lifecycle/App.razor
index 81829b9a13..6835edf6c7 100644
--- a/samples/grids/tree-grid/editing-lifecycle/App.razor
+++ b/samples/grids/tree-grid/editing-lifecycle/App.razor
@@ -6,12 +6,13 @@
+ Field="Name"
+ DataType="GridColumnDataType.String"
+ Editable="true">
+ Field="Title"
+ Header="Job Title"
+ DataType="GridColumnDataType.String"
+ Editable="true">
-
-
-
+ Field="Age"
+ DataType="GridColumnDataType.Number"
+ Editable="true">
@@ -55,16 +56,16 @@
private IgbTreeGrid grid;
- private NwindData _nwindData = null;
- public NwindData NwindData
+ private EmployeesFlatData _employeesFlatData = null;
+ public EmployeesFlatData EmployeesFlatData
{
get
{
- if (_nwindData == null)
+ if (_employeesFlatData == null)
{
- _nwindData = new NwindData();
+ _employeesFlatData = new EmployeesFlatData();
}
- return _nwindData;
+ return _employeesFlatData;
}
}
diff --git a/samples/grids/tree-grid/editing-lifecycle/EmployeesFlatData.cs b/samples/grids/tree-grid/editing-lifecycle/EmployeesFlatData.cs
new file mode 100644
index 0000000000..a6cec287aa
--- /dev/null
+++ b/samples/grids/tree-grid/editing-lifecycle/EmployeesFlatData.cs
@@ -0,0 +1,219 @@
+using System;
+using System.Collections.Generic;
+public class EmployeesFlatDataItem
+{
+ public double Age { get; set; }
+ public string HireDate { get; set; }
+ public double ID { get; set; }
+ public string Name { get; set; }
+ public string Phone { get; set; }
+ public bool OnPTO { get; set; }
+ public double ParentID { get; set; }
+ public string Title { get; set; }
+}
+
+public class EmployeesFlatData
+ : List
+{
+ public EmployeesFlatData()
+ {
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 55,
+ HireDate = @"2008, 3, 20",
+ ID = 1,
+ Name = @"Johnathan Winchester",
+ Phone = @"0251-031259",
+ OnPTO = false,
+ ParentID = -1,
+ Title = @"Development Manager"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 42,
+ HireDate = @"2014, 1, 22",
+ ID = 4,
+ Name = @"Ana Sanders",
+ Phone = @"(21) 555-0091",
+ OnPTO = true,
+ ParentID = -1,
+ Title = @"CEO"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 49,
+ HireDate = @"2014, 1, 22",
+ ID = 18,
+ Name = @"Victoria Lincoln",
+ Phone = @"(071) 23 67 22 20",
+ OnPTO = true,
+ ParentID = -1,
+ Title = @"Accounting Manager"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 61,
+ HireDate = @"2010, 1, 1",
+ ID = 10,
+ Name = @"Yang Wang",
+ Phone = @"(21) 555-0091",
+ OnPTO = false,
+ ParentID = -1,
+ Title = @"Localization Manager"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 43,
+ HireDate = @"2011, 6, 3",
+ ID = 3,
+ Name = @"Michael Burke",
+ Phone = @"0452-076545",
+ OnPTO = true,
+ ParentID = 1,
+ Title = @"Senior Software Developer"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 29,
+ HireDate = @"2009, 6, 19",
+ ID = 2,
+ Name = @"Thomas Anderson",
+ Phone = @"(14) 555-8122",
+ OnPTO = false,
+ ParentID = 1,
+ Title = @"Senior Software Developer"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 31,
+ HireDate = @"2014, 8, 18",
+ ID = 11,
+ Name = @"Monica Reyes",
+ Phone = @"7675-3425",
+ OnPTO = false,
+ ParentID = 1,
+ Title = @"Software Development Team Lead"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 35,
+ HireDate = @"2015, 9, 17",
+ ID = 6,
+ Name = @"Roland Mendel",
+ Phone = @"(505) 555-5939",
+ OnPTO = false,
+ ParentID = 11,
+ Title = @"Senior Software Developer"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 44,
+ HireDate = @"2009, 10, 11",
+ ID = 12,
+ Name = @"Sven Cooper",
+ Phone = @"0695-34 67 21",
+ OnPTO = true,
+ ParentID = 11,
+ Title = @"Senior Software Developer"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 44,
+ HireDate = @"2014, 4, 4",
+ ID = 14,
+ Name = @"Laurence Johnson",
+ Phone = @"981-443655",
+ OnPTO = false,
+ ParentID = 4,
+ Title = @"Director"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 25,
+ HireDate = @"2017, 11, 9",
+ ID = 5,
+ Name = @"Elizabeth Richards",
+ Phone = @"(2) 283-2951",
+ OnPTO = true,
+ ParentID = 4,
+ Title = @"Vice President"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 39,
+ HireDate = @"2010, 3, 22",
+ ID = 13,
+ Name = @"Trevor Ashworth",
+ Phone = @"981-443655",
+ OnPTO = true,
+ ParentID = 5,
+ Title = @"Director"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 44,
+ HireDate = @"2014, 4, 4",
+ ID = 17,
+ Name = @"Antonio Moreno",
+ Phone = @"(505) 555-5939",
+ OnPTO = false,
+ ParentID = 18,
+ Title = @"Senior Accountant"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 50,
+ HireDate = @"2007, 11, 18",
+ ID = 7,
+ Name = @"Pedro Rodriguez",
+ Phone = @"035-640230",
+ OnPTO = false,
+ ParentID = 10,
+ Title = @"Senior Localization Developer"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 27,
+ HireDate = @"2016, 2, 19",
+ ID = 8,
+ Name = @"Casey Harper",
+ Phone = @"0342-023176",
+ OnPTO = true,
+ ParentID = 10,
+ Title = @"Senior Localization"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 25,
+ HireDate = @"2017, 11, 9",
+ ID = 15,
+ Name = @"Patricia Simpson",
+ Phone = @"069-0245984",
+ OnPTO = false,
+ ParentID = 7,
+ Title = @"Localization Intern"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 39,
+ HireDate = @"2010, 3, 22",
+ ID = 9,
+ Name = @"Francisco Chang",
+ Phone = @"(91) 745 6200",
+ OnPTO = false,
+ ParentID = 7,
+ Title = @"Localization Intern"
+ });
+ this.Add(new EmployeesFlatDataItem()
+ {
+ Age = 25,
+ HireDate = @"2018, 3, 18",
+ ID = 16,
+ Name = @"Peter Lewis",
+ Phone = @"069-0245984",
+ OnPTO = true,
+ ParentID = 7,
+ Title = @"Localization Intern"
+ });
+ }
+}
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/App.razor b/samples/grids/tree-grid/keyboard-custom-navigation/App.razor
new file mode 100644
index 0000000000..86df305172
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/App.razor
@@ -0,0 +1,77 @@
+@using IgniteUI.Blazor.Controls
+
+@inject IJSRuntime JS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ var treeGrid = this.treeGrid;
+
+ }
+
+ private IgbTreeGrid treeGrid;
+
+ private EmployeesNestedData _employeesNestedData = null;
+ public EmployeesNestedData EmployeesNestedData
+ {
+ get
+ {
+ if (_employeesNestedData == null)
+ {
+ _employeesNestedData = new EmployeesNestedData();
+ }
+ return _employeesNestedData;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.csproj b/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.csproj
new file mode 100644
index 0000000000..9e7c3c9644
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ 3.0
+ Infragistics.Samples
+ Infragistics.Samples
+
+
+
+ 1701;1702,IDE0028,BL0005,0219,CS1998
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.sln b/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.sln
new file mode 100644
index 0000000000..1e2eda208a
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/BlazorClientApp.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorClientApp", "BlazorClientApp.csproj", "{F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F69CC3F0-BCD1-4CE6-9F39-CBED14E7FA78}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FC52AAC8-4488-40AE-9621-75F6BA744B18}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/EmployeesNestedData.cs b/samples/grids/tree-grid/keyboard-custom-navigation/EmployeesNestedData.cs
new file mode 100644
index 0000000000..f005a72780
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/EmployeesNestedData.cs
@@ -0,0 +1,354 @@
+using System;
+using System.Collections.Generic;
+public class EmployeesNestedDataItem
+{
+ public double ID { get; set; }
+ public double Age { get; set; }
+ public double Salary { get; set; }
+ public double Productivity { get; set; }
+ public string City { get; set; }
+ public string Country { get; set; }
+ public string Phone { get; set; }
+ public string HireDate { get; set; }
+ public string Name { get; set; }
+ public string Title { get; set; }
+ public List Employees { get; set; }
+}
+public class EmployeesNestedDataItem_EmployeesItem
+{
+ public double Age { get; set; }
+ public double Salary { get; set; }
+ public double Productivity { get; set; }
+ public string City { get; set; }
+ public string Country { get; set; }
+ public string Phone { get; set; }
+ public string HireDate { get; set; }
+ public double ID { get; set; }
+ public string Name { get; set; }
+ public string Title { get; set; }
+}
+
+public class EmployeesNestedData
+ : List
+{
+ public EmployeesNestedData()
+ {
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 1,
+ Age = 55,
+ Salary = 80000,
+ Productivity = 90,
+ City = @"Berlin",
+ Country = @"Germany",
+ Phone = @"609-202-505",
+ HireDate = @"2008, 3, 20",
+ Name = @"John Winchester",
+ Title = @"Development Manager",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 43,
+ Salary = 70000,
+ Productivity = 80,
+ City = @"Hamburg",
+ Country = @"Germany",
+ Phone = @"609-444-555",
+ HireDate = @"2011, 6, 3",
+ ID = 3,
+ Name = @"Michael Burke",
+ Title = @"Senior Software Developer"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 29,
+ Salary = 60000,
+ Productivity = 80,
+ City = @"Munich",
+ Country = @"Germany",
+ Phone = @"609-333-444",
+ HireDate = @"2009, 6, 19",
+ ID = 2,
+ Name = @"Thomas Anderson",
+ Title = @"Senior Software Developer"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 31,
+ Salary = 90000,
+ Productivity = 80,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"609-222-205",
+ HireDate = @"2014, 8, 18",
+ ID = 11,
+ Name = @"Monica Reyes",
+ Title = @"Software Development Team Lead"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 35,
+ Salary = 70000,
+ Productivity = 70,
+ City = @"Koln",
+ Country = @"Germany",
+ Phone = @"609-502-525",
+ HireDate = @"2015, 9, 17",
+ ID = 6,
+ Name = @"Roland Mendel",
+ Title = @"Senior Software Developer"
+ }}
+
+ });
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 4,
+ Age = 42,
+ Salary = 90000,
+ Productivity = 80,
+ City = @"Kielce",
+ Country = @"Poland",
+ Phone = @"609-202-505",
+ HireDate = @"2014, 1, 22",
+ Name = @"Ana Sanders",
+ Title = @"CEO",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 44,
+ Salary = 80000,
+ Productivity = 80,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"609-202-505",
+ HireDate = @"2014, 4, 4",
+ ID = 14,
+ Name = @"Laurence Johnson",
+ Title = @"Director"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 25,
+ Salary = 85000,
+ Productivity = 55,
+ City = @"Paris",
+ Country = @"France",
+ Phone = @"609-202-505",
+ HireDate = @"2017, 11, 9",
+ ID = 5,
+ Name = @"Elizabeth Richards",
+ Title = @"Vice President"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 39,
+ Salary = 88000,
+ Productivity = 88,
+ City = @"London",
+ Country = @"UK",
+ Phone = @"609-202-505",
+ HireDate = @"2010, 3, 22",
+ ID = 13,
+ Name = @"Trevor Ashworth",
+ Title = @"Director"
+ }}
+
+ });
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 18,
+ Age = 49,
+ Salary = 77000,
+ Productivity = 70,
+ City = @"Manchester",
+ Country = @"UK",
+ Phone = @"222-555-577",
+ HireDate = @"2014, 1, 22",
+ Name = @"Victoria Lincoln",
+ Title = @"Senior Accountant",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 43,
+ Salary = 70000,
+ Productivity = 80,
+ City = @"Hamburg",
+ Country = @"Germany",
+ Phone = @"609-444-555",
+ HireDate = @"2011, 6, 3",
+ ID = 23,
+ Name = @"Thomas Burke",
+ Title = @"Senior Accountant"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 29,
+ Salary = 60000,
+ Productivity = 80,
+ City = @"Munich",
+ Country = @"Germany",
+ Phone = @"609-333-444",
+ HireDate = @"2009, 6, 19",
+ ID = 22,
+ Name = @"Michael Anderson",
+ Title = @"Junior Accountant"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 31,
+ Salary = 90000,
+ Productivity = 80,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"609-222-205",
+ HireDate = @"2014, 8, 18",
+ ID = 21,
+ Name = @"Roland Reyes",
+ Title = @"Accountant Team Lead"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 35,
+ Salary = 70000,
+ Productivity = 70,
+ City = @"Koln",
+ Country = @"Germany",
+ Phone = @"609-502-525",
+ HireDate = @"2015, 9, 17",
+ ID = 24,
+ Name = @"Monica Mendel",
+ Title = @"Senior Software Developer"
+ }}
+
+ });
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 10,
+ Age = 61,
+ Salary = 85000,
+ Productivity = 890,
+ City = @"Lyon",
+ Country = @"France",
+ Phone = @"259-266-887",
+ HireDate = @"2010, 1, 1",
+ Name = @"Yang Wang",
+ Title = @"Localization Developer",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 31,
+ Salary = 90000,
+ Productivity = 80,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"609-222-205",
+ HireDate = @"2014, 8, 18",
+ ID = 11,
+ Name = @"Monica Reyes",
+ Title = @"Software Development Team Lead"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 35,
+ Salary = 70000,
+ Productivity = 70,
+ City = @"Koln",
+ Country = @"Germany",
+ Phone = @"609-502-525",
+ HireDate = @"2015, 9, 17",
+ ID = 6,
+ Name = @"Roland Mendel",
+ Title = @"Senior Software Developer"
+ }}
+
+ });
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 35,
+ Age = 35,
+ Salary = 75000,
+ Productivity = 75,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"688-244-844",
+ HireDate = @"2014, 1, 22",
+ Name = @"Janine Munoz",
+ Title = @"HR",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 43,
+ Salary = 70000,
+ Productivity = 80,
+ City = @"Hamburg",
+ Country = @"Germany",
+ Phone = @"609-444-555",
+ HireDate = @"2011, 6, 3",
+ ID = 3,
+ Name = @"Michael Burke",
+ Title = @"Senior Software Developer"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 31,
+ Salary = 90000,
+ Productivity = 80,
+ City = @"Warasw",
+ Country = @"Poland",
+ Phone = @"609-222-205",
+ HireDate = @"2014, 8, 18",
+ ID = 11,
+ Name = @"Monica Reyes",
+ Title = @"Software Development Team Lead"
+ }}
+
+ });
+ this.Add(new EmployeesNestedDataItem()
+ {
+ ID = 10,
+ Age = 49,
+ Salary = 95000,
+ Productivity = 80,
+ City = @"Krakow",
+ Country = @"Poland",
+ Phone = @"677-266-555",
+ HireDate = @"2010, 1, 1",
+ Name = @"Yang Wang",
+ Title = @"Sales Manager",
+ Employees = new List()
+ {
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 29,
+ Salary = 60000,
+ Productivity = 80,
+ City = @"Munich",
+ Country = @"Germany",
+ Phone = @"609-333-444",
+ HireDate = @"2009, 6, 19",
+ ID = 2,
+ Name = @"Thomas Anderson",
+ Title = @"Senior Software Developer"
+ },
+ new EmployeesNestedDataItem_EmployeesItem()
+ {
+ Age = 35,
+ Salary = 70000,
+ Productivity = 70,
+ City = @"Koln",
+ Country = @"Germany",
+ Phone = @"609-502-525",
+ HireDate = @"2015, 9, 17",
+ ID = 6,
+ Name = @"Roland Mendel",
+ Title = @"Senior Software Developer"
+ }}
+
+ });
+ }
+}
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/Program.cs b/samples/grids/tree-grid/keyboard-custom-navigation/Program.cs
new file mode 100644
index 0000000000..a3ed438f48
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/Program.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Net.Http;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Text;
+using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using IgniteUI.Blazor.Controls; // for registering Ignite UI modules
+
+namespace Infragistics.Samples
+{
+ public class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ var builder = WebAssemblyHostBuilder.CreateDefault(args);
+ builder.RootComponents.Add("app");
+ builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
+ // registering Ignite UI modules
+ builder.Services.AddIgniteUIBlazor(
+ typeof(IgbInputModule),
+ typeof(IgbPropertyEditorPanelModule),
+ typeof(IgbTreeGridModule)
+ );
+ await builder.Build().RunAsync();
+ }
+ }
+}
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/Properties/launchSettings.json b/samples/grids/tree-grid/keyboard-custom-navigation/Properties/launchSettings.json
new file mode 100644
index 0000000000..18bd6fb5bc
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/Properties/launchSettings.json
@@ -0,0 +1,27 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:4200",
+ "sslPort": 44385
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "BlazorSamples": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:5001;http://localhost:4200"
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/_Imports.razor b/samples/grids/tree-grid/keyboard-custom-navigation/_Imports.razor
new file mode 100644
index 0000000000..d27d337cb1
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/_Imports.razor
@@ -0,0 +1,9 @@
+// these namespaces are global to the app
+@using System.Net.Http
+@using System.Net.Http.Json
+@using Microsoft.AspNetCore.Components.Forms
+@using Microsoft.AspNetCore.Components.Routing
+@using Microsoft.AspNetCore.Components.Web
+@using Microsoft.AspNetCore.Components.WebAssembly.Http
+@using Microsoft.JSInterop
+@using Infragistics.Samples
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/events.js b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/events.js
new file mode 100644
index 0000000000..8c35db0e6d
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/events.js
@@ -0,0 +1,33 @@
+
+
+igRegisterScript("WebGridCustomKBNav", (evtArgs) => {
+ const args = evtArgs.detail;
+ const target = args.target;
+ const evt = args.event;
+ const type = args.targetType;
+ var grid = args.target.grid;
+
+ if (type === 'dataCell' && target.editMode && evt.key.toLowerCase() === 'tab') {
+ // Value validation for number column.
+ // This covers both 'tab' and 'shift+tab' key interactions.
+ args.event.preventDefault();
+ args.cancel = true;
+ if (target.column.dataType === 'number' && target.editValue < 10) {
+ alert('The value should be bigger than 10');
+ return;
+ }
+ const cell = evt.shiftKey ?
+ grid.getPreviousCell(target.row.index, target.column.visibleIndex, (col) => col.editable) :
+ grid.getNextCell(target.row.index, target.column.visibleIndex, (col) => col.editable);
+
+ grid.navigateTo(cell.rowIndex, cell.visibleColumnIndex,
+ (obj) => { obj.target.activate(); });
+ } else if (type === 'dataCell' && evt.key.toLowerCase() === 'enter') {
+ // Perform column based kb navigation with 'enter' key press
+ args.cancel = true;
+ grid.navigateTo(target.row.index + 1, target.column.visibleIndex, (obj) => {
+ obj.target.activate();
+ });
+ }
+}, false);
+
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.css b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.css
new file mode 100644
index 0000000000..50ca13caa6
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.css
@@ -0,0 +1,4 @@
+/*
+CSS styles are loaded from the shared CSS file located at:
+https://static.infragistics.com/xplatform/css/samples/
+*/
diff --git a/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.html b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.html
new file mode 100644
index 0000000000..6ea07bab27
--- /dev/null
+++ b/samples/grids/tree-grid/keyboard-custom-navigation/wwwroot/index.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+ Samples | IgniteUI for Blazor | Infragistics
+
+
+
+
+
+
+
+
+
+
+
+ An unhandled error has occurred.
+
Reload
+
🗙
+
+
+
+
+
+
+
+
+
diff --git a/samples/grids/tree-grid/overview/App.razor b/samples/grids/tree-grid/overview/App.razor
index bc90f1f4d1..acd442a0c8 100644
--- a/samples/grids/tree-grid/overview/App.razor
+++ b/samples/grids/tree-grid/overview/App.razor
@@ -13,6 +13,10 @@
Moving="true"
AllowFiltering="true"
FilterMode="FilterMode.ExcelStyleFilter">
+
+
+
-
-
-
-
-
-
-
-
-
diff --git a/samples/grids/tree-grid/overview/Program.cs b/samples/grids/tree-grid/overview/Program.cs
index a3ed438f48..4d148ce3d3 100644
--- a/samples/grids/tree-grid/overview/Program.cs
+++ b/samples/grids/tree-grid/overview/Program.cs
@@ -22,7 +22,8 @@ public static async Task Main(string[] args)
builder.Services.AddIgniteUIBlazor(
typeof(IgbInputModule),
typeof(IgbPropertyEditorPanelModule),
- typeof(IgbTreeGridModule)
+ typeof(IgbTreeGridModule),
+ typeof(IgbPaginatorModule)
);
await builder.Build().RunAsync();
}