Skip to content

Commit c2aee77

Browse files
izanhzhArgoZhang
andauthored
fix(RibbonTab): cannot automatically shrink in float mode (#5775)
* 修复无法自动收缩问题 * refactor: 代码规范化 * fix: 提高性能 --------- Co-authored-by: Argo Zhang <[email protected]>
1 parent 6f3e917 commit c2aee77

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
OnItemClickAsync="OnItemClickAsync!" OnMenuClickAsync="OnMenuClickAsync!" OnFloatChanged="OnFloatChanged!"
88
EncodeAnchorCallback="EncodeAnchorCallback!" DecodeAnchorCallback="DecodeAnchorCallback!"
99
RightButtonsTemplate="RightButtonsTemplate!"
10-
RibbonArrowUpIcon="@RibbonArrowUpIcon" RibbonArrowDownIcon="@RibbonArrowDownIcon" RibbonArrowPinIcon="@RibbonArrowPinIcon"></RibbonTabHeader>
10+
RibbonArrowUpIcon="@RibbonArrowUpIcon" RibbonArrowDownIcon="@RibbonArrowDownIcon"
11+
RibbonArrowPinIcon="@RibbonArrowPinIcon"></RibbonTabHeader>
1112
@if (ChildContent != null)
1213
{
1314
<div class="ribbon-body">
Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +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)
67
const rt = {
78
element: el, invoke, callback,
89
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);
2223
}
2324
}
24-
}
25+
});
2526
}
2627
}
2728
Data.set(id, rt)
2829

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

3235
export function dispose(id) {
3336
const rt = Data.get(id)
3437
Data.remove(id)
3538

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

src/BootstrapBlazor/Components/RibbonTab/RibbonTabHeader.razor.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ public partial class RibbonTabHeader
1717
/// </summary>
1818
[Parameter]
1919
[NotNull]
20-
#if NET6_0_OR_GREATER
2120
[EditorRequired]
22-
#endif
2321
public IEnumerable<RibbonTabItem>? Items { get; set; }
2422

2523
/// <summary>

0 commit comments

Comments
 (0)