diff --git a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs index 2b98d153bc3..01b1716d17d 100644 --- a/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/AvatarUpload.razor.cs @@ -199,8 +199,7 @@ public override async Task ToggleMessage(IReadOnlyCollection r ? [AddId] : Files.Select(i => i.ValidateId).ToList(); var invalidItems = _results.GetInvalidItems(IsInValidOnAddItem, AddId); - var addId = IsInValidOnAddItem ? null : AddId; - await ValidateModule.InvokeVoidAsync("executeUpload", items, invalidItems, addId); + await ValidateModule.InvokeVoidAsync("executeUpload", items, invalidItems, AddId); } private bool IsInValidOnAddItem => Files.Count == 0 && _results.Count > 0; diff --git a/src/BootstrapBlazor/Components/Upload/CardUpload.razor b/src/BootstrapBlazor/Components/Upload/CardUpload.razor index d8d9cece1da..70e82515dde 100644 --- a/src/BootstrapBlazor/Components/Upload/CardUpload.razor +++ b/src/BootstrapBlazor/Components/Upload/CardUpload.razor @@ -116,6 +116,6 @@ @code { RenderFragment RenderAdd => @
- +
; } diff --git a/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs b/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs index e464c682e01..0ca20e7cae6 100644 --- a/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs +++ b/src/BootstrapBlazor/Components/Upload/CardUpload.razor.cs @@ -260,8 +260,7 @@ public override async Task ToggleMessage(IReadOnlyCollection r ? [AddId] : Files.Select(i => i.ValidateId).ToList(); var invalidItems = _results.GetInvalidItems(IsInValidOnAddItem, AddId); - var addId = IsInValidOnAddItem ? null : AddId; - await ValidateModule.InvokeVoidAsync("executeUpload", items, invalidItems, addId); + await ValidateModule.InvokeVoidAsync("executeUpload", items, invalidItems, AddId); } private bool IsInValidOnAddItem => Files.Count == 0 && _results.Count > 0; diff --git a/src/BootstrapBlazor/wwwroot/modules/validate.js b/src/BootstrapBlazor/wwwroot/modules/validate.js index 776a5e1a7e0..78ae72e6511 100644 --- a/src/BootstrapBlazor/wwwroot/modules/validate.js +++ b/src/BootstrapBlazor/wwwroot/modules/validate.js @@ -1,8 +1,10 @@ -export function execute(id, title) { +import Data from "./data.js" + +export function execute(id, title) { const el = document.getElementById(id); if (el) { - const tip = bootstrap.Tooltip.getOrCreateInstance(el, { customClass: 'is-invalid', title }) + const tip = bootstrap.Tooltip.getOrCreateInstance(el, { customClass: 'is-invalid', title }); if (!tip._isShown()) { if (title !== tip._config.title) { tip._config.title = title; @@ -28,8 +30,7 @@ const showResult = el => { } export function dispose(id) { - const el = document.getElementById(id) - + const el = document.getElementById(id); if (el) { const tip = bootstrap.Tooltip.getInstance(el) if (tip) { @@ -48,20 +49,41 @@ export function executeUpload(items, invalidItems, addId) { execute(id, errorMessage); el.classList.remove('is-valid'); el.classList.add('is-invalid'); + + if (id === addId) { + const tip = bootstrap.Tooltip.getInstance(el); + if (tip) { + Data.set(addId, tip); + addId = null; + } + } } else { dispose(id); el.classList.remove('is-invalid'); el.classList.add('is-valid'); + + disposeTip(addId); + addId = null; } } }); if (addId) { - const el = document.getElementById(addId); + disposeTip(addId); + } +} + +const disposeTip = id => { + const tip = Data.get(id); + Data.remove(id); + + if (tip) { + tip.dispose(); + + const el = document.getElementById(id); if (el) { - el.classList.remove('is-valid', 'is-invalid'); - dispose(addId); + el.classList.remove('is-invalid'); } } }