diff --git a/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor b/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor index 7c53f357dd3..a08def309a1 100644 --- a/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor +++ b/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor @@ -1,4 +1,4 @@ -@namespace BootstrapBlazor.Components +@namespace BootstrapBlazor.Components @typeparam TValue @inherits FileListUploadBase @@ -17,7 +17,7 @@ OnGetFileFormat="@OnGetFileFormat" OnCancel="OnCancel" CancelIcon="@CancelIcon" LoadingIcon="@LoadingIcon" InvalidStatusIcon="@InvalidStatusIcon" ValidStatusIcon="@ValidStatusIcon" ShowDownloadButton="@ShowDownloadButton" DownloadIcon="@DownloadIcon" OnDownload="@OnDownload" - DeleteIcon="@DeleteIcon" OnDelete="@OnFileDelete"> + ShowDeleteButton="@ShowDeleteButton" DeleteIcon="@DeleteIcon" OnDelete="@OnFileDelete"> } diff --git a/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor.cs index d4d048e3093..be8abcb6a9a 100644 --- a/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/ButtonUpload.razor.cs @@ -13,6 +13,13 @@ namespace BootstrapBlazor.Components; /// public partial class ButtonUpload { + /// + /// 获得/设置 是否显示删除按钮,默认 true + /// Gets or sets whether to display the delete button. Default is true + /// + [Parameter] + public bool ShowDeleteButton { get; set; } = true; + /// /// 获得/设置 浏览按钮加载中图标 /// Gets or sets the loading icon for the browse button diff --git a/src/BootstrapBlazor/Components/Upload/CardUpload.razor b/src/BootstrapBlazor/Components/Upload/CardUpload.razor index 040c857b915..beb494b22f0 100644 --- a/src/BootstrapBlazor/Components/Upload/CardUpload.razor +++ b/src/BootstrapBlazor/Components/Upload/CardUpload.razor @@ -73,7 +73,7 @@ ConfirmIcon="@DeleteConfirmButtonIcon" ConfirmButtonColor="DeleteConfirmButtonColor" ConfirmButtonText="@DeleteConfirmButtonText" - CloseButtonText="@DeleteCloseButtonText" + CloseButtonText="@DeleteCloseButtonText" Content="@DeleteConfirmContent" Icon="@RemoveIcon" IsAsync="true" diff --git a/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs index 4d925e49f2f..bd63cd7e1c8 100644 --- a/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs @@ -52,6 +52,13 @@ public partial class CardUpload private string PreviewerId => $"prev_{Id}"; + /// + /// 获得/设置 是否显示删除按钮,默认 false + /// Gets or sets whether to display the delete button. Default is false + /// + [Parameter] + public bool ShowDeleteButton { get; set; } + /// /// 获得/设置 是否允许预览的回调方法,默认 null /// Gets or sets the callback method to determine whether preview is allowed. Default is null diff --git a/src/BootstrapBlazor/Components/Upload/DropUpload.razor b/src/BootstrapBlazor/Components/Upload/DropUpload.razor index 0bd4be55aeb..6832fa1d720 100644 --- a/src/BootstrapBlazor/Components/Upload/DropUpload.razor +++ b/src/BootstrapBlazor/Components/Upload/DropUpload.razor @@ -55,7 +55,7 @@ CancelIcon="@CancelIcon" LoadingIcon="@LoadingIcon" InvalidStatusIcon="@InvalidStatusIcon" ValidStatusIcon="@ValidStatusIcon" ShowDownloadButton="@ShowDownloadButton" DownloadIcon="@DownloadIcon" OnDownload="@OnDownload" - DeleteIcon="@DeleteIcon" OnDelete="@OnFileDelete"> + ShowDeleteButton="@ShowDeleteButton" DeleteIcon="@DeleteIcon" OnDelete="@OnFileDelete"> } diff --git a/src/BootstrapBlazor/Components/Upload/DropUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/DropUpload.razor.cs index 26e6a83be0b..ab8709b7970 100644 --- a/src/BootstrapBlazor/Components/Upload/DropUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/DropUpload.razor.cs @@ -13,6 +13,13 @@ namespace BootstrapBlazor.Components; /// public partial class DropUpload { + /// + /// 获得/设置 是否显示删除按钮,默认 true + /// Gets or sets whether to display the delete button. Default is true + /// + [Parameter] + public bool ShowDeleteButton { get; set; } = true; + /// /// 获得/设置 Body 模板,默认 null。设置 BodyTemplate 后 IconTemplate 和 TextTemplate 不生效 /// Gets or sets the body template. Default is null. When BodyTemplate is set, IconTemplate and TextTemplate are not effective diff --git a/src/BootstrapBlazor/Components/Upload/FileListUploadBase.cs b/src/BootstrapBlazor/Components/Upload/FileListUploadBase.cs index 0cb0321ca77..ffe2c7e7f77 100644 --- a/src/BootstrapBlazor/Components/Upload/FileListUploadBase.cs +++ b/src/BootstrapBlazor/Components/Upload/FileListUploadBase.cs @@ -12,13 +12,6 @@ namespace BootstrapBlazor.Components; /// public class FileListUploadBase : UploadBase { - /// - /// 获得/设置 是否显示删除按钮,默认 false - /// Gets or sets whether to display the delete button. Default is false - /// - [Parameter] - public bool ShowDeleteButton { get; set; } - /// /// 获得/设置 删除按钮图标 /// Gets or sets the delete button icon diff --git a/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor b/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor index 6678f3f64f3..3b6f62fd0f6 100644 --- a/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor +++ b/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor @@ -1,4 +1,4 @@ -@namespace BootstrapBlazor.Components +@namespace BootstrapBlazor.Components @if (Items != null) { @@ -32,7 +32,10 @@ { } - + @if (ShowDeleteButton) + { + + } } diff --git a/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor.cs b/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor.cs index 87360e4c3e9..943bcfebf6c 100644 --- a/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/UploadPreviewList.razor.cs @@ -96,6 +96,13 @@ public partial class UploadPreviewList [Parameter] public bool ShowDownloadButton { get; set; } + /// + /// 获得/设置 是否显示删除按钮,默认 false + /// Gets or sets whether to display the delete button. Default is false + /// + [Parameter] + public bool ShowDeleteButton { get; set; } + /// /// 获得/设置 点击下载按钮回调方法,默认 null /// Gets or sets the callback method for the download button click event. Default is null diff --git a/test/UnitTest/Components/UploadButtonTest.cs b/test/UnitTest/Components/UploadButtonTest.cs index e72aa067f2c..a305e4c5f8c 100644 --- a/test/UnitTest/Components/UploadButtonTest.cs +++ b/test/UnitTest/Components/UploadButtonTest.cs @@ -350,6 +350,21 @@ public void ButtonUpload_Accept_Ok() cut.Contains("accept=\".jpg\""); } + [Theory] + [InlineData(true, true)] + [InlineData(false, false)] + public void ShowDeleteButton_Ok(bool showDeleteButton, bool result) + { + var cut = Context.Render>(pb => + { + pb.Add(a => a.DefaultFileList, [new() { FileName = "1.csv" }]); + pb.Add(a => a.ShowUploadFileList, true); + pb.Add(a => a.ShowDeleteButton, showDeleteButton); + }); + var exists = cut.Markup.Contains("delete-icon"); + Assert.Equal(result, exists); + } + [Fact] public void ButtonUpload_OnGetFileFormat_Ok() { diff --git a/test/UnitTest/Components/UploadDropTest.cs b/test/UnitTest/Components/UploadDropTest.cs index 7691702fc53..35c57770d27 100644 --- a/test/UnitTest/Components/UploadDropTest.cs +++ b/test/UnitTest/Components/UploadDropTest.cs @@ -4,8 +4,6 @@ // Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone using Microsoft.AspNetCore.Components.Forms; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; namespace UnitTest.Components; @@ -187,6 +185,21 @@ public void OnGetFileFormat_Ok() cut.Contains("fa-format-test"); } + [Theory] + [InlineData(true, true)] + [InlineData(false, false)] + public void ShowDeleteButton_Ok(bool showDeleteButton, bool result) + { + var cut = Context.Render(pb => + { + pb.Add(a => a.DefaultFileList, [new() { FileName = "1.csv" }]); + pb.Add(a => a.ShowUploadFileList, true); + pb.Add(a => a.ShowDeleteButton, showDeleteButton); + }); + var exists = cut.Markup.Contains("delete-icon"); + Assert.Equal(result, exists); + } + private class MockBrowserFile(string name = "UploadTestFile", string contentType = "text") : IBrowserFile { public string Name { get; } = name;