From 9853c4aa2e140166a9bbc604d8d1a111f17e2841 Mon Sep 17 00:00:00 2001 From: Atanas Korchev Date: Wed, 17 Jun 2026 18:26:52 +0300 Subject: [PATCH] Inherit RadzenSpreadsheetToolBase in merge/borders/conditional/validation tools Replace the duplicated selection-binding boilerplate (cascading parameters, IsDisabled, EventBinding, OnParametersSet/OnSelectionChanged/Dispose) with @inherits RadzenSpreadsheetToolBase, overriding only Feature - matching the Insert* tools. --- .../Tools/RadzenSpreadsheetCellBorders.razor | 38 +------------------ .../RadzenSpreadsheetConditionalFormat.razor | 38 +------------------ .../RadzenSpreadsheetDataValidation.razor | 38 +------------------ .../Tools/RadzenSpreadsheetMergeCells.razor | 38 +------------------ 4 files changed, 8 insertions(+), 144 deletions(-) diff --git a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetCellBorders.razor b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetCellBorders.razor index 350b47753..847b81326 100644 --- a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetCellBorders.razor +++ b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetCellBorders.razor @@ -2,7 +2,7 @@ @using Radzen.Blazor @using Radzen.Blazor.Spreadsheet @using Radzen.Documents.Spreadsheet -@implements IDisposable +@inherits RadzenSpreadsheetToolBase @@ -17,41 +17,7 @@ @code { -#nullable enable - - [CascadingParameter] - public Worksheet? Worksheet { get; set; } - - [CascadingParameter] - public ISpreadsheet? Spreadsheet { get; set; } - - private bool IsDisabled - => Worksheet?.Selection.Cell == CellRef.Invalid - || Spreadsheet?.IsFeatureAllowed(SpreadsheetFeature.CellFormatting) == false; - - private readonly EventBinding selectionBinding; - - public RadzenSpreadsheetCellBorders() - { - selectionBinding = new EventBinding( - s => s.Changed += OnSelectionChanged, - s => s.Changed -= OnSelectionChanged); - } - - protected override void OnParametersSet() - { - selectionBinding.Bind(Worksheet?.Selection); - } - - private void OnSelectionChanged() - { - StateHasChanged(); - } - - public void Dispose() - { - selectionBinding.Dispose(); - } + protected override SpreadsheetFeature? Feature => SpreadsheetFeature.CellFormatting; private async Task OnClick(RadzenSplitButtonItem? item) { diff --git a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetConditionalFormat.razor b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetConditionalFormat.razor index 4f016ba34..c105aaeb3 100644 --- a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetConditionalFormat.razor +++ b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetConditionalFormat.razor @@ -4,7 +4,7 @@ @using Radzen.Blazor.Spreadsheet.Tools @using Radzen.Documents.Spreadsheet @inject DialogService DialogService -@implements IDisposable +@inherits RadzenSpreadsheetToolBase @@ -17,41 +17,7 @@ @code { -#nullable enable - - [CascadingParameter] - public Worksheet? Worksheet { get; set; } - - [CascadingParameter] - public ISpreadsheet? Spreadsheet { get; set; } - - private bool IsDisabled - => Worksheet?.Selection.Cell == CellRef.Invalid - || Spreadsheet?.IsFeatureAllowed(SpreadsheetFeature.ConditionalFormatting) == false; - - private readonly EventBinding selectionBinding; - - public RadzenSpreadsheetConditionalFormat() - { - selectionBinding = new EventBinding( - s => s.Changed += OnSelectionChanged, - s => s.Changed -= OnSelectionChanged); - } - - protected override void OnParametersSet() - { - selectionBinding.Bind(Worksheet?.Selection); - } - - private void OnSelectionChanged() - { - StateHasChanged(); - } - - public void Dispose() - { - selectionBinding.Dispose(); - } + protected override SpreadsheetFeature? Feature => SpreadsheetFeature.ConditionalFormatting; private async Task OnClickAsync(RadzenSplitButtonItem? item) { diff --git a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetDataValidation.razor b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetDataValidation.razor index e6a6e5214..80a070d94 100644 --- a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetDataValidation.razor +++ b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetDataValidation.razor @@ -4,7 +4,7 @@ @using Radzen.Blazor.Spreadsheet.Tools @using Radzen.Documents.Spreadsheet @inject DialogService DialogService -@implements IDisposable +@inherits RadzenSpreadsheetToolBase @@ -14,41 +14,7 @@ @code { -#nullable enable - - [CascadingParameter] - public Worksheet? Worksheet { get; set; } - - [CascadingParameter] - public ISpreadsheet? Spreadsheet { get; set; } - - private bool IsDisabled - => Worksheet?.Selection.Cell == CellRef.Invalid - || Spreadsheet?.IsFeatureAllowed(SpreadsheetFeature.DataValidation) == false; - - private readonly EventBinding selectionBinding; - - public RadzenSpreadsheetDataValidation() - { - selectionBinding = new EventBinding( - s => s.Changed += OnSelectionChanged, - s => s.Changed -= OnSelectionChanged); - } - - protected override void OnParametersSet() - { - selectionBinding.Bind(Worksheet?.Selection); - } - - private void OnSelectionChanged() - { - StateHasChanged(); - } - - public void Dispose() - { - selectionBinding.Dispose(); - } + protected override SpreadsheetFeature? Feature => SpreadsheetFeature.DataValidation; private async Task OnClickAsync(RadzenSplitButtonItem? item) { diff --git a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetMergeCells.razor b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetMergeCells.razor index 7a35abb7e..52e6832fa 100644 --- a/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetMergeCells.razor +++ b/Radzen.Blazor/Spreadsheet/Tools/RadzenSpreadsheetMergeCells.razor @@ -2,7 +2,7 @@ @using Radzen.Blazor @using Radzen.Blazor.Spreadsheet @using Radzen.Documents.Spreadsheet -@implements IDisposable +@inherits RadzenSpreadsheetToolBase @@ -13,41 +13,7 @@ @code { -#nullable enable - - [CascadingParameter] - public Worksheet? Worksheet { get; set; } - - [CascadingParameter] - public ISpreadsheet? Spreadsheet { get; set; } - - private bool IsDisabled - => Worksheet?.Selection.Cell == CellRef.Invalid - || Spreadsheet?.IsFeatureAllowed(SpreadsheetFeature.Merging) == false; - - private readonly EventBinding selectionBinding; - - public RadzenSpreadsheetMergeCells() - { - selectionBinding = new EventBinding( - s => s.Changed += OnSelectionChanged, - s => s.Changed -= OnSelectionChanged); - } - - protected override void OnParametersSet() - { - selectionBinding.Bind(Worksheet?.Selection); - } - - private void OnSelectionChanged() - { - StateHasChanged(); - } - - public void Dispose() - { - selectionBinding.Dispose(); - } + protected override SpreadsheetFeature? Feature => SpreadsheetFeature.Merging; private async Task OnClick(RadzenSplitButtonItem? item) {