Files
workspace/code/g3soft-libs/.changeset/rich-text-table.md
T
2026-10-11 22:14:13 +08:00

2.1 KiB
Raw Blame History

@g3soft/ui
@g3soft/ui
minor

修复并增强 RichText 表格编辑。

修复

  • 初始为 disabled / readonly 的编辑器恢复可编辑后,列宽拖拽仍失效:Tiptap 在创建时按 isEditable 决定是否注册 columnResizing 插件,而 setEditable 不会重建插件。现改为始终按可编辑创建、挂载后按 props 降级,插件集完整保留。
  • 光标落在单元格文本内时,操作浮层定位崩溃(domAtPos().node 返回文本节点,closest 不存在抛 TypeError)。已归一化节点类型后再取表格元素。
  • 浮层 z-index 硬编码 1000,会被 modal(1101+)盖住;改用 nextZIndex('popup') 领取、隐藏即归还。
  • 页面级滚动 / 窗口缩放时浮层位置漂移:新增 window 捕获阶段 scroll / resize 监听跟随重定位。
  • 插入表格面板行列数不校验,输入 0 / 负数 / 超大值会生成畸形表格:现在插入时夹回 1–20。

增强

  • 补齐表头能力:切换表头列、切换表头单元格(此前仅表头行)。
  • 单元格水平对齐:左 / 中 / 右对齐(写入 style="text-align: …"),激活态高亮,支持一键取消。
  • 「合并或拆分」单键智能操作:选中多格合并、单格有合并则拆分。
  • 分组分隔线 + 去重图标,危险操作(删除表格)单独分组防误点。
  • 插入面板新增「包含表头行」开关、Enter 键提交;只读 / 禁用态浮层自动隐藏。

列宽拖拽重构

  • 布局从 table-layout: auto 改为 fixed:拖拽只动被拖列、其余列纹丝不动,不再出现「拖第 2/3 列线时第 1 列被动变窄」的联动错位。
  • 拖拽结束 / 插入表格后自动把整表各列实际宽度固化回 colwidth,保证后续每次拖拽严格隔离相邻列。
  • 最小列宽从 80px 调整为 10px。
  • 移除拖拽时的黑色竖线指示条(只保留 col-resize 光标提示)。
  • fixed 布局消除 auto 布局下每次 mousemove 的整表重排,拖拽不再卡顿。

文档见 docs/content/ui/form/rich-text.md,e2e 见 packages/ui/e2e/rich-text-table.spec.ts。