Let a blank tree label take the click as well as draw the caret

The class fix rendered the `+` but the node still would not open, and the
caret did not light on hover. `tbody th:empty { pointer-events: none }`
makes the padding cells left of a tree label inert, and a label cell whose
group key is null or "" is `:empty` too — its caret is a `::before`, which
does not count as content — so the cell received no pointer events at all.

Exclude the tree classes from that rule. `row-hover.css` reads `:empty` the
same way in six border selectors; those are a hover tint, left alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Paul Trowbridge 2026-09-22 00:19:15 -04:00
parent a95d663076
commit 41e76978f4
6 changed files with 16 additions and 5 deletions

6
ui/package-lock.json generated
View File

@ -578,7 +578,7 @@
"node_modules/@perspective-dev/client": {
"version": "5.4.0",
"resolved": "file:vendor/perspective-dev-client-5.4.0.tgz",
"integrity": "sha512-e1rkiCyIlEwSFcEmw/KuNOnrX0k6UiMfnvQB8nwQfkKtoW5d1hkveQ8lAGsj8UZskJuuHrxpWpnKnFm2bwBV7A==",
"integrity": "sha512-d6TKVh6DFKuGpiLYN2PmA8U9GbkMtgiCy9iUrLx7STMABT2kYwUE4tVQLqm/sRlwcRiVJ4+K2d1l6J8cgX+6Aw==",
"license": "Apache-2.0",
"dependencies": {
"@perspective-dev/server": "^5.4.0",
@ -596,7 +596,7 @@
"node_modules/@perspective-dev/viewer": {
"version": "5.4.0",
"resolved": "file:vendor/perspective-dev-viewer-5.4.0.tgz",
"integrity": "sha512-dioznGFDoR2fx+0JBdg4SP/WWUxcCeZ9XrKuUiYOgJaXYadegESS0yr1rhMbMNJlG9IQzBCi/WFOvKKzcxkJJA==",
"integrity": "sha512-AkQwfacQFSJ0fZ7Ja142pa0HGLssxFK9/FM4jhrMvrXp31Rp74qRNIyueG8wiqGTPXmORaRDA+ePtW+Wfg5UpA==",
"license": "Apache-2.0",
"dependencies": {
"@perspective-dev/client": "^5.4.0",
@ -607,7 +607,7 @@
"node_modules/@perspective-dev/viewer-datagrid": {
"version": "5.4.0",
"resolved": "file:vendor/perspective-dev-viewer-datagrid-5.4.0.tgz",
"integrity": "sha512-J5UL8GNqi5rrmeiOpyGanosSTxRi2bwHNxEHode/DMRP55FEMt+gMVqkC/LfuINi1b0TKVtJQCP+UN8MlnGgpw==",
"integrity": "sha512-7wqr7T8cp6SI1ZZy69qy0Y6sZ5UJCpQjHPnDL6Fjs3ATJtmhmVEz/dpcMcjCgqwGrs5Sqd7xyKNQ+RuwcBsMEQ==",
"license": "Apache-2.0",
"dependencies": {
"@perspective-dev/client": "^5.4.0",

View File

@ -1,8 +1,8 @@
Built from https://github.com/fleetside72/perspective
branch expand-blank-tree-nodes
commit 40266dc6ec4d83895483124386f0c79938d639ca
commit 751dcfe136c6455e3cd02a7b75a6df79cbe8e064
based on unknown
built 2026-09-22T04:06:28Z on usmidsap02
built 2026-09-22T04:18:51Z on usmidsap02
dirty 0 uncommitted file(s) in the source tree at build time
Regenerate with ui/vendor/rebuild-perspective.sh

11
ui/vendor/README.md vendored
View File

@ -102,6 +102,17 @@ following row. Flat rollup (`group_rollup_mode: 'flat'`) writes each level into
its own cell with no padding, so there is nothing structural to test there and
it keeps the text test.
The class was only half of it. `tbody th:empty { pointer-events: none }` in
`regular_table.css` makes the padding cells inert, and a blank label cell is
`:empty` as well — a `::before` caret is not content — so the fixed node drew
its `+`, then ignored the click and would not even take the hover. The rule now
excludes the tree classes, which is the distinction it was reaching for: a
padding cell never carries one.
`row-hover.css` uses `:empty` the same way in six border selectors. Those are a
hover tint and are left alone; a row whose first level is blank loses a border
highlight, and nothing else.
Separate from the data question: null and `''` group as two distinct rows that
look identical, so a `COALESCE(NULLIF(col,''), '(none)')` at load time is still
worth doing on its own merits.

Binary file not shown.

Binary file not shown.