Skip to content

Commit 1c704e4

Browse files
committed
feat: 跟进 v3.3.6 菜单的 data-name 属性变更
siyuan-note/siyuan#16141
1 parent 33130c2 commit 1c704e4

File tree

4 files changed

+22
-24
lines changed

4 files changed

+22
-24
lines changed

src/modules/googleAnalytics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export class GoogleAnalytics {
146146
});
147147
}
148148

149-
logging.log('Sending Google Analytics data. https://github.com/TCOTC/Whisper/issues/11'); // TODO: 修改输出日志为“Whisper 主题正在发送 Google Analytics 数据(在外观模式菜单中可以禁用)”
149+
logging.log('Sending Google Analytics data. https://github.com/TCOTC/Whisper/issues/11'); // TODO 修改输出日志为“Whisper 主题正在发送 Google Analytics 数据(在外观模式菜单中可以禁用)”
150150

151151
// 收集并发送基本信息
152152
this.sendInfo();

src/modules/menuHandler.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,43 +52,39 @@ export class MenuHandler implements ThemeModule {
5252
this.commonMenu.insertAdjacentElement('beforebegin', whisperCommonMenu);
5353
this.whisperCommonMenu = whisperCommonMenu;
5454

55-
this.commonMenuObserver = new MutationObserver((mutations) => {
56-
// 使用一个标志位来确保只处理一次
57-
let processed = false;
58-
59-
mutations.forEach(() => {
60-
if (processed) return; // 如果已经处理过,直接返回
55+
this.commonMenuObserver = new MutationObserver(() => {
56+
this.whisperCommonMenu?.removeAttribute('data-name');
6157

58+
if (this.commonMenu) {
6259
// 先卸载监听再添加,避免重复添加
63-
if (this.commonMenu) {
64-
this.commonMenu.removeEventListener('click', this.handleMenuClick, true);
65-
this.commonMenu.removeEventListener('click', this.handleCloseClick, true);
66-
}
67-
68-
if (this.whisperCommonMenu) {
69-
this.whisperCommonMenu.dataset.name = '';
70-
}
60+
this.commonMenu.removeEventListener('click', this.handleMenuClick, true);
61+
this.commonMenu.removeEventListener('click', this.handleCloseClick, true);
7162

72-
if (this.commonMenu?.getAttribute('data-name') === 'barmode') {
63+
const menuName = this.commonMenu.getAttribute('data-name');
64+
if (menuName === 'barmode') {
7365
// 外观模式菜单
7466
this.commonMenu.addEventListener('click', this.handleMenuClick, true);
75-
} else if ( // TODO功能 需要给原生 PR 一个菜单的 data-name="tab-header" 属性来简化判断逻辑,然后提升主题最低版本号
76-
this.commonMenu?.querySelector('[data-id="close"]') &&
77-
this.commonMenu?.querySelector('[data-id="split"]') &&
78-
this.commonMenu?.querySelector('[data-id="copy"]')
67+
} else if (menuName === 'tab' || // v3.3.6 给页签菜单增加 data-name="tab" 属性 https://github.com/siyuan-note/siyuan/pull/16141
68+
// TODO废弃 以下6行代码是兼容 v3.3.6 以前的版本,版本号提升到 v3.3.6 时即可移除。并且修改之后需要验证是否在平板上正常工作
69+
(
70+
this.commonMenu.querySelector('[data-id="close"]') &&
71+
this.commonMenu.querySelector('[data-id="split"]') &&
72+
this.commonMenu.querySelector('[data-id="copy"]')
73+
)
7974
// && this.commonMenu?.querySelector('[data-id="tabToWindow"]') // 平板上没有“移动到新窗口”选项
8075
) {
8176
// 页签菜单
77+
// TODO废弃 以下3行代码是兼容 v3.3.6 以前的版本,版本号提升到 v3.3.6 时即可移除,并且需要同步修改对应的使用 [data-name="tab-header"] 的 CSS
8278
if (this.whisperCommonMenu) {
8379
this.whisperCommonMenu.dataset.name = 'tab-header';
8480
}
8581
this.handleTabClose();
8682
}
83+
}
8784

88-
processed = true; // 标记为已处理
89-
});
9085
});
9186

87+
// TODO跟进 试试通过 Add plugin event bus to #commonMenu 来实现更准确的监听 https://github.com/TCOTC/Whisper/issues/16 https://github.com/siyuan-note/siyuan/issues/16171
9288
// 监听菜单的属性变化
9389
this.commonMenuObserver.observe(this.commonMenu, { attributes: true });
9490
}

src/modules/tooltipHandler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ export class TooltipHandler implements ThemeModule {
5555
// 文档树
5656
// TODO跟进 文档信息显示在左下角的问题还是没解决,估计是思源本体的问题:鼠标划过笔记本之后 tooltip 不隐藏 https://github.com/siyuan-note/siyuan/issues/14823
5757
// 到时候把这部分代码注释掉测试看看还会不会有问题
58+
59+
// TODO跟进 试试通过 Add plugin event bus to tooltip 来实现更准确的监听 https://github.com/TCOTC/Whisper/issues/15 https://github.com/siyuan-note/siyuan/issues/16151
5860
const doc = e.closest('[data-type="navigation-file"]');
5961
if (doc) {
6062
this.removeTooltipData();

styles/modules/_menu.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
// 工具栏
66
.protyle-toolbar {
7-
transition: none; // 禁用工具栏平移效果 // TODO跟进: v3.5.5 之后就不需要覆盖这个样式了,以后提升版本号达到 3.5.5 再移除 https://github.com/siyuan-note/siyuan/commit/a1f275e3c329e8bb93863d353741c1d106faaf55
7+
transition: none; // 禁用工具栏平移效果 // TODO废弃 v3.5.5 之后就不需要覆盖这个样式了,以后提升版本号达到 3.5.5 再移除 https://github.com/siyuan-note/siyuan/commit/a1f275e3c329e8bb93863d353741c1d106faaf55
88
}
99

1010
// 超链接菜单,链接和锚文本输入框默认两行高(不显示滚动条就需要 50px)
@@ -58,7 +58,7 @@ label:hover .b3-switch:checked:not(:disabled)::before, .b3-switch:checked:hover:
5858
}
5959
}
6060
// 页签菜单
61-
// TODO功能 需要给原生 PR 一个菜单的 data-name="tab-header" 属性来简化判断逻辑,类似外观模式的 data-name="barmode"
61+
// TODO废弃 以下选择器是兼容 v3.3.6 以前的版本,版本号提升到 v3.3.6 时即可修改为 #commonMenu[data-name="tab"] > .b3-menu__items ,并且需要同步修改 menuHandler.ts 的对应逻辑
6262
#whisperCommonMenu[data-name="tab-header"] + #commonMenu > .b3-menu__items {
6363
display: flex;
6464
flex-direction: column;

0 commit comments

Comments
 (0)