diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor index 037f3c4b1b0..9bb9cdbb03b 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor @@ -7,7 +7,8 @@ OnItemClickAsync="OnItemClickAsync!" OnMenuClickAsync="OnMenuClickAsync!" OnFloatChanged="OnFloatChanged!" EncodeAnchorCallback="EncodeAnchorCallback!" DecodeAnchorCallback="DecodeAnchorCallback!" RightButtonsTemplate="RightButtonsTemplate!" - RibbonArrowUpIcon="@RibbonArrowUpIcon" RibbonArrowDownIcon="@RibbonArrowDownIcon" RibbonArrowPinIcon="@RibbonArrowPinIcon"> + RibbonArrowUpIcon="@RibbonArrowUpIcon" RibbonArrowDownIcon="@RibbonArrowDownIcon" + RibbonArrowPinIcon="@RibbonArrowPinIcon"> @if (ChildContent != null) {
diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.js b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.js index 22e351d9a15..fdd9a14bd86 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.js +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.js @@ -1,37 +1,43 @@ import Data from "../../modules/data.js" import EventHandler from "../../modules/event-handler.js" +import { registerBootstrapBlazorModule } from "../../modules/utility.js" export function init(id, invoke, callback) { const el = document.getElementById(id) const rt = { element: el, invoke, callback, handlerClick: e => { - const isFloat = el.classList.contains('is-float') - if (isFloat) { - const expanded = el.classList.contains('is-expand') - if (expanded) { - const ribbonBody = e.target.closest('.ribbon-body'); - if (ribbonBody) { - invoke.invokeMethodAsync(callback) - } - else { - const ribbonTab = e.target.closest('.ribbon-tab') - if (ribbonTab !== el) { - invoke.invokeMethodAsync(callback) - } + [...document.querySelectorAll('.ribbon-header.is-float.is-expand')].forEach(headerEl => { + const tabId = headerEl.parentElement.getAttribute("id"); + const tab = Data.get(tabId); + const { element, invoke, callback } = tab; + + const ribbonBody = e.target.closest('.ribbon-body'); + if (ribbonBody) { + invoke.invokeMethodAsync(callback); + } + else { + const ribbonTab = e.target.closest('.ribbon-tab') + if (ribbonTab !== element) { + invoke.invokeMethodAsync(callback); } } - } + }); } } Data.set(id, rt) - EventHandler.on(document, 'click', rt.handlerClick) + registerBootstrapBlazorModule('RibbonTab', id, () => { + EventHandler.on(document, 'click', rt.handlerClick) + }); } export function dispose(id) { const rt = Data.get(id) Data.remove(id) - EventHandler.off(document, 'click', rt.handlerClick) + const { RibbonTab } = window.BootstrapBlazor; + RibbonTab.dispose(id, () => { + EventHandler.off(document, 'click', rt.handlerClick) + }); } diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTabHeader.razor.cs b/src/BootstrapBlazor/Components/RibbonTab/RibbonTabHeader.razor.cs index 6508e3680db..0b017e3f3d6 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTabHeader.razor.cs +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTabHeader.razor.cs @@ -17,9 +17,7 @@ public partial class RibbonTabHeader /// [Parameter] [NotNull] -#if NET6_0_OR_GREATER [EditorRequired] -#endif public IEnumerable? Items { get; set; } ///