Skip to content

Commit cc610b7

Browse files
committed
fix: 提高性能
1 parent 0dcc87c commit cc610b7

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed
Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,43 @@
11
import Data from "../../modules/data.js"
22
import EventHandler from "../../modules/event-handler.js"
3+
import { registerBootstrapBlazorModule } from "../../modules/utility.js"
34

45
export function init(id, invoke, callback) {
56
const el = document.getElementById(id)
6-
const headerEl = el.querySelector('.ribbon-header')
77
const rt = {
8-
element: el, headerEl, invoke, callback,
8+
element: el, invoke, callback,
99
handlerClick: e => {
10-
const isFloat = headerEl.classList.contains('is-float')
11-
if (isFloat) {
12-
const expanded = headerEl.classList.contains('is-expand')
13-
if (expanded) {
14-
const ribbonBody = e.target.closest('.ribbon-body');
15-
if (ribbonBody) {
16-
invoke.invokeMethodAsync(callback)
17-
}
18-
else {
19-
const ribbonTab = e.target.closest('.ribbon-tab')
20-
if (ribbonTab !== el) {
21-
invoke.invokeMethodAsync(callback)
22-
}
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);
2323
}
2424
}
25-
}
25+
});
2626
}
2727
}
2828
Data.set(id, rt)
2929

30-
EventHandler.on(document, 'click', rt.handlerClick)
30+
registerBootstrapBlazorModule('RibbonTab', id, () => {
31+
EventHandler.on(document, 'click', rt.handlerClick)
32+
});
3133
}
3234

3335
export function dispose(id) {
3436
const rt = Data.get(id)
3537
Data.remove(id)
3638

37-
EventHandler.off(document, 'click', rt.handlerClick)
39+
const { RibbonTab } = window.BootstrapBlazor;
40+
RibbonTab.dispose(id, () => {
41+
EventHandler.off(document, 'click', rt.handlerClick)
42+
});
3843
}

0 commit comments

Comments
 (0)