Files
workspace/code/g3soft-libs/.changeset/table-editing-cell-visual.md
T
2026-10-13 22:32:50 +08:00

13 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
'@g3soft/ui': patch
---
G3Table:修两个编辑态底色/描边的视觉问题(都与「`select` 展开后焦点被移进浮层」有关)。
- **修复:`select` 编辑格的底色会变成选区色(浅蓝)而不是基色。** 编辑格白底的判据原先写在 CSS 的 `td:focus-within` 上,而 `G3Select` 展开时会把 DOM 焦点移进**下拉浮层**(浮层 `Teleport` 到 `body`),那一刻 `:focus-within` 立刻失效,底色退回库的 `td[data-cs-s] { background-color: var(--cs-bgc) }`。症状是「时白时不白」——取决于此刻焦点在触发器还是浮层里;`input` 没有浮层,所以只有 `select` 会这样。
- 判据改为编辑器上的标记类(`is-cell-editing`,由内容节点带出,与「按行禁用的灰底」「校验态」同一套路子),`td:has(> …)` 精确命中该格,与焦点在格内 / 浮层 / 换格瞬间落到 `body` 都无关。
- 焦点环同样补上这个标记(`:focus-within` 与标记取并集):编辑格**始终**有环,不再随焦点漂移。
- **修复:冻结列上的选中格没有选中描边(蓝色边框)。** 冻结列的「行状态叠色」用的是 `box-shadow`,而库的选区描边(`td[data-cs-s]` 的 4 个方向 inset)**也在 `box-shadow` 上** —— 单值属性,只写叠色就会把选中框整体替换掉。非冻结列没有这条规则,所以只有冻结列会缺,很容易被当成「选中态没生效」。现在叠色规则连同选区描边一起写。
- **冻结列的编辑格不再叠行状态色**:与普通列一致地保持「纯基色 + 焦点环」。否则同一行里冻结列的编辑格带行色、普通列的却是纯色,一眼看得出不一致。
- 两条都由真浏览器 e2e 锁住(`e2e/table.spec.ts`):`select` 那条必须在**浮层已夺焦**的状态下断言(否则测不出),冻结列那条断言选中格的 `box-shadow` 里确实含有选区描边色、编辑格带 2px 焦点环。摘掉修复后两条都会红(实测)。