|
1 | 1 | import Data from "../../modules/data.js" |
2 | 2 | import EventHandler from "../../modules/event-handler.js" |
| 3 | +import { registerBootstrapBlazorModule } from "../../modules/utility.js" |
3 | 4 |
|
4 | 5 | export function init(id, invoke, callback) { |
5 | 6 | const el = document.getElementById(id) |
6 | 7 | const rt = { |
7 | 8 | element: el, invoke, callback, |
8 | 9 | handlerClick: e => { |
9 | | - const isFloat = el.classList.contains('is-float') |
10 | | - if (isFloat) { |
11 | | - const expanded = el.classList.contains('is-expand') |
12 | | - if (expanded) { |
13 | | - const ribbonBody = e.target.closest('.ribbon-body'); |
14 | | - if (ribbonBody) { |
15 | | - invoke.invokeMethodAsync(callback) |
16 | | - } |
17 | | - else { |
18 | | - const ribbonTab = e.target.closest('.ribbon-tab') |
19 | | - if (ribbonTab !== el) { |
20 | | - invoke.invokeMethodAsync(callback) |
21 | | - } |
| 10 | + [...document.querySelectorAll('.ribbon-header.is-float.is-expand')].forEach(headerEl => { |
| 11 | + const tabId = headerEl.parentElement.getAttribute("id"); |
| 12 | + const tab = Data.get(tabId); |
| 13 | + const { element, invoke, callback } = tab; |
| 14 | + |
| 15 | + const ribbonBody = e.target.closest('.ribbon-body'); |
| 16 | + if (ribbonBody) { |
| 17 | + invoke.invokeMethodAsync(callback); |
| 18 | + } |
| 19 | + else { |
| 20 | + const ribbonTab = e.target.closest('.ribbon-tab') |
| 21 | + if (ribbonTab !== element) { |
| 22 | + invoke.invokeMethodAsync(callback); |
22 | 23 | } |
23 | 24 | } |
24 | | - } |
| 25 | + }); |
25 | 26 | } |
26 | 27 | } |
27 | 28 | Data.set(id, rt) |
28 | 29 |
|
29 | | - EventHandler.on(document, 'click', rt.handlerClick) |
| 30 | + registerBootstrapBlazorModule('RibbonTab', id, () => { |
| 31 | + EventHandler.on(document, 'click', rt.handlerClick) |
| 32 | + }); |
30 | 33 | } |
31 | 34 |
|
32 | 35 | export function dispose(id) { |
33 | 36 | const rt = Data.get(id) |
34 | 37 | Data.remove(id) |
35 | 38 |
|
36 | | - EventHandler.off(document, 'click', rt.handlerClick) |
| 39 | + const { RibbonTab } = window.BootstrapBlazor; |
| 40 | + RibbonTab.dispose(id, () => { |
| 41 | + EventHandler.off(document, 'click', rt.handlerClick) |
| 42 | + }); |
37 | 43 | } |
0 commit comments