From a75c152ac90161ee5f1c350770ee6bccfad862de Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 24 Dec 2025 16:58:19 +0100 Subject: [PATCH] Enable conditional Delete button in grid toolbars Add EnableDelete parameter to MgGridToolbarTemplate and set it dynamically in GridShippingDocument and GridShippingItemTemplate based on MeasuringStatus. Import relevant enums, make Grid_CustomizeElement static, and remove checked attribute from NavMenu. Improves safety and user experience for deletions. --- .../Components/GridShippingDocument.razor | 12 ++++++++++-- .../Components/GridShippingItemTemplate.razor | 14 ++++++++++++-- FruitBankHybrid.Shared/Layout/NavMenu.razor | 2 +- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor index 67984c6..4049156 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor @@ -12,6 +12,7 @@ @using AyCode.Core.Interfaces @using AyCode.Core.Loggers @using FruitBank.Common +@using FruitBank.Common.Enums @using FruitBank.Common.Models @using FruitBankHybrid.Shared.Services.Loggers @@ -98,7 +99,7 @@ @if (IsMasterGrid) { - + @* *@ - + @@ -166,6 +167,7 @@ public bool ParentDataItemIsPartner => (ParentDataItem is Partner); string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; + MgGridToolbarTemplate toolbar; const string ExportFileName = "ExportResult"; string _localStorageKey = "GridShippingDocument_"; @@ -254,6 +256,12 @@ if (Grid != null && Grid.IsEditing() && !Grid.IsEditingNewRow()) await Grid.SaveChangesAsync(); + if (toolbar != null) + { + var shippingDocument = (args.DataItem as ShippingDocument)!; + toolbar.EnableDelete = shippingDocument.ShippingItems?.All(x => x.MeasuringStatus == MeasuringStatus.NotStarted) ?? true; + } + FocusedRowVisibleIndex = args.VisibleIndex; EditItemsEnabled = true; } diff --git a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor index 8d636c4..665ba23 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor @@ -6,6 +6,7 @@ @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities +@using FruitBank.Common.Enums @using FruitBank.Common.Interfaces @using FruitBankHybrid.Shared.Components.Grids.ShippingItems @using FruitBankHybrid.Shared.Databases @@ -110,7 +111,7 @@ @if (IsMasterGrid) { - + } @@ -143,6 +144,8 @@ public bool ParentDataItemIsShippingDocument => (ParentDataItem is ShippingDocument); string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; + MgGridToolbarTemplate toolbar; + const string ExportFileName = "ExportResult"; string _localStorageKey = "GridShippingItem_"; @@ -193,7 +196,7 @@ if (forceReload) Grid.Reload(); } - void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + static void Grid_CustomizeElement(GridCustomizeElementEventArgs e) { if (e.ElementType != GridElementType.DataCell) return; @@ -247,6 +250,13 @@ if ((args.Grid.IsEditing() || args.Grid.IsEditingNewRow()) && (args.DataItem as IId).Id > 0) await args.Grid.SaveChangesAsync(); + if (toolbar != null) + { + var shippingItem = (args.DataItem as ShippingItem)!; + toolbar.EnableDelete = shippingItem.MeasuringStatus == MeasuringStatus.NotStarted; + + } + FocusedRowVisibleIndex = args.VisibleIndex; EditItemsEnabled = true; } diff --git a/FruitBankHybrid.Shared/Layout/NavMenu.razor b/FruitBankHybrid.Shared/Layout/NavMenu.razor index 4632213..b2a2d3c 100644 --- a/FruitBankHybrid.Shared/Layout/NavMenu.razor +++ b/FruitBankHybrid.Shared/Layout/NavMenu.razor @@ -2,7 +2,7 @@ @using FruitBank.Common.Models @inject LoggedInModel LoggedInModel - +