READMESource: main@74ba9dae
右侧栏退出条 · dsh-rightbar-exit-strip
右侧栏被 Harness 切成全屏后会盖住视口,出口只剩右上角那两个面板控件。这个插件补两个入口:全屏中左边缘的退出条,和双击分割线直接进全屏。
安装
从 GitHub 安装(纯 JavaScript,无需构建):
plugin_manager install_bundle
target: github:2315137135/dsh-rightbar-exit-strip
也可以使用 git+https://github.com/2315137135/dsh-rightbar-exit-strip.git,或克隆到本地后用绝对目录安装。安装后刷新 Harness 页面。
仓库:https://github.com/2315137135/dsh-rightbar-exit-strip
用法
| 手势 | 结果 |
|---|---|
| 双击会话与右侧栏之间的拖拽分割线 | 进入全屏 |
| 全屏中悬停左侧竖条 → 点击 | 退出全屏 |
| 全屏中 | 分割线不渲染,退出只能走竖条或右上角的面板按钮 |
竖条平时是 5px 半透明竖条,悬停变宽成 11px、显示右向箭头并转成品牌色;上下各留 18%,避开页签条和面板左下角的缩放控件。键盘聚焦同样会展开竖条,回车即可退出。
实现要点
- 只在全屏时渲染:检测
[data-sidebar-right-panel="fullscreen"],位置取自该面板的getBoundingClientRect(),所以 Windows 桌面端的标题栏内缩、左侧栏展开宽度、窗口缩放都自动跟随(另挂ResizeObserver、窗口resize与MutationObserver)。 - 为什么 portal 到
document.body:shell.overlay容器是z-index:20的层叠上下文,而全屏面板内部的._tabCell用z-index: var(--dsh-dockkit-dock-layer)(全屏为 40)参与同一个层叠上下文,浮层里的元素再高的 z-index 也压不过面板。跳出这个上下文才是正解。 - 为什么不用
dblclick:分割线是框架的[data-side="rightbar"]拖拽柄,它在pointerdown里preventDefault(),兼容性鼠标事件会被抑制。双击由插件自己在捕获阶段数左键pointerdown:500ms 内、6px 范围内两次即判定。 - 走同一条路径:进出全屏都用
ctx.sidebarRight.commandTarget()+toggleFullscreen(),与面板上的按钮一致,会记入布局历史;服务不可用时退回点击面板自己的[data-sidebar-right-mode]控件。
依赖的出厂契约
插件读的是面板的 DOM 标记与 ARIA 属性,Harness 大版本升级后若这些标记改名,需要同步调整:
[data-sidebar-right-panel="fullscreen"]—— 全屏形态标记[data-side]=rightbar—— 会话与右侧栏之间的拖拽分割线[data-sidebar-right-mode]—— 面板右上角的形态切换按钮(值为下一个形态)
许可
MIT
No comments yet. Be the first to write one.