dsh-ui-easyfold:Web 端折叠交互优化插件

前言

在 dsh Web 界面的使用中,展开“Think”组件或长文本折叠项后,阅读体验常受干扰:滚动视口下移导致折叠按钮移出屏幕,用户再次折叠时必须先手动回滚滚动条,打断阅读位置。dsh-ui-easyfold 针对这一交互痛点提供浏览器端解决方案。

这是什么

这是一个运行在客户端的 DSH 插件,由 MrTrujay 维护,采用 MIT 许可证。它通过两个浏览器行为,优化长展开内容的阅读与折叠体验。

核心功能

插件主要包含以下两项能力:

  1. Sticky fold row(固定折叠行)
    当折叠内容展开时,折叠行会固定在对话滚动视口的顶部。阅读过程中该行始终可见且可点击。当整个内容滚动出视口后,固定行为自动解除,不改变布局。

  2. Collapse scroll compensation(折叠滚动补偿)
    折叠一个已固定的组件(通过点击、回车或空格触发),会将滚动视口拉回折叠行原先占据的位置。如果折叠行已在视口内,位置保持不变。

安装与启用

该插件需要部署了 Web 界面的 dsh 环境。安装命令如下:

pnpm dsh plugin --profile web add @trujaycc/dsh-ui-easyfold

安装后,重启 pnpm dsh web 以加载新的组件行。

开发与构建

插件依赖 React 18.2.0+。本地开发与构建步骤如下:

pnpm install
pnpm run build

构建产物包含 lib/index.js 和 lib/client.js,由 ModuleLoader 处理。该包声明了 React 作为平台依赖,无其他运行时依赖。

适用场景与注意

  • 当前支持范围:目前仅针对“Think”折叠行实现;其他长内容折叠组件为计划状态。
  • DOM 合约耦合:插件通过稳定的 DOM 属性(data-conversation-scroll, data-variant="think", data-open, data-disclosure-row)进行挂载。如果产品 DOM 结构变更,插件行为可能静默失效。
  • 滚动视口限制:滚动补偿仅作用于文档中的第一个 data-conversation-scroll。分屏会话窗口(subagent views)共享同一行为所有者。
  • React 提交耐心:插件等待 React 提交最多 8 个动画帧。超出该窗口的延迟提交将跳过修正,不会造成滚动错位,仅无反馈。

结语

该插件通过客户端脚本解决了长内容展开后的交互断层问题,适合需要在 Web 界面优化阅读体验的开发者。更多细节请参考 GitHub 或 DSH 插件目录。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜