diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index c284f19acd6..cda610aa65a 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 10.1.4-beta07 + 10.1.4 diff --git a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor index ff0f043e2d3..74facab4083 100644 --- a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor +++ b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor @@ -1,4 +1,4 @@ -@namespace BootstrapBlazor.Components +@namespace BootstrapBlazor.Components @typeparam TValue @inherits UploadBase @@ -16,8 +16,9 @@ {
-
- +
+ @if (GetShowProgress(item)) diff --git a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs index f0f32d4e66c..9cd596900b5 100644 --- a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License // See the LICENSE file in the project root for more information. // Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone @@ -156,12 +156,24 @@ protected override async Task TriggerOnChanged(UploadFile file) /// public async Task Preview() { - if(ShowPreviewList) + if (ShowPreviewList) { await InvokeVoidAsync("preview", PreviewerId, 0); } } + private async Task Preview(UploadFile file) + { + if (!string.IsNullOrEmpty(file.PrevUrl)) + { + var index = Files.FindIndex(r => r.PrevUrl == file.PrevUrl); + if (index != -1) + { + await InvokeVoidAsync("preview", PreviewerId, index); + } + } + } + private IReadOnlyCollection _results = []; /// diff --git a/src/BootstrapBlazor/Components/Upload/InputUpload.razor.scss b/src/BootstrapBlazor/Components/Upload/InputUpload.razor.scss index 3d3cc8d19a7..45f7b40d418 100644 --- a/src/BootstrapBlazor/Components/Upload/InputUpload.razor.scss +++ b/src/BootstrapBlazor/Components/Upload/InputUpload.razor.scss @@ -85,7 +85,7 @@ } .upload .upload-body.is-list .cancel-icon { - margin-left: .5rem; + margin-inline-start: .5rem; color: var(--bs-danger); } @@ -157,6 +157,14 @@ .upload .upload-body.is-avatar .upload-item:hover .upload-item-actions .upload-item-delete { display: block; color: var(--bs-danger); + padding: 0.25rem; + border-radius: var(--bs-border-radius); + border: 1px solid var(--bs-danger); +} + +.upload .upload-body.is-avatar .upload-item:hover .upload-item-actions .upload-item-delete:hover { + color: var(--bs-white); + background-color: var(--bs-danger); } .upload .upload-body.is-avatar .upload-item.is-invalid .upload-item-spin { diff --git a/test/UnitTest/Components/UploadAvatarTest.cs b/test/UnitTest/Components/UploadAvatarTest.cs index 9b32d935dd6..79b0e09ec43 100644 --- a/test/UnitTest/Components/UploadAvatarTest.cs +++ b/test/UnitTest/Components/UploadAvatarTest.cs @@ -98,6 +98,31 @@ await cut.InvokeAsync(() => input.Instance.OnChange.InvokeAsync(new InputFileCha }); } + [Fact] + public async Task Preview_Ok() + { + var cut = Context.Render>(pb => + { + pb.Add(a => a.DefaultFileList, new List() + { + new UploadFile() { PrevUrl = "./sample/preview.jpg" } + }); + }); + + var action = cut.Find(".upload-item-actions"); + await cut.InvokeAsync(() => action.Click()); + + cut.Render(pb => + { + pb.Add(a => a.DefaultFileList, new List() + { + new UploadFile() { PrevUrl = "" } + }); + }); + action = cut.Find(".upload-item-actions"); + await cut.InvokeAsync(() => action.Click()); + } + [Fact] public async Task AvatarUpload_ValidateForm_Ok() {