fix(elements): restore sticky first column for span-free tables - #738
Merged
wesleyboar merged 5 commits intoSep 8, 2026
Merged
Conversation
A "dumb" table with no [colspan]/[rowspan] anywhere never risks misaligning its first column, so it can safely keep the old td-or-th pinning behavior; only a table using either span now needs the stricter th-only rule.
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
Same matching logic (th without colspan always pins; td pins too in a span-free table), just one selector instead of two duplicated blocks.
th is already unconditionally covered by the first branch, so the second branch only ever needs to add td.
Also move :first-child before :is(...) — pseudo-class order within a compound selector doesn't affect matching, so this is a no-op change.
A prior edit split the bundled :has([colspan], [rowspan]) check into two :is() branches, which turned "no colspan AND no rowspan" into "no colspan OR no rowspan" — silently letting a rowspan-shifted <td> pin again whenever the table had no colspan. Also gives each span type its own accurate comment instead of one comment covering both.
wesleyboar
deleted the
fix/table-sticky-column-backward-compat-no-spans
branch
September 8, 2026 19:04
wesleyboar
added a commit
that referenced
this pull request
Sep 8, 2026
PR Generated by `release-please` --- ## [2.58.1-rc6](v2.58.1-rc5...v2.58.1-rc6) (2026-09-08) ### Bug Fixes * **elements:** restore sticky first column for span-free tables ([#738](#738)) ([c5364d0](c5364d0)) ### Miscellaneous Chores * release 2.58.1-rc6 ([b5d445f](b5d445f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
wesleyboar
added a commit
to TACC/Core-CMS
that referenced
this pull request
Sep 8, 2026
## Overview Bumps `@tacc/core-styles` to v2.58.1-rc6, which fixes sticky-column pinning for CMS tables with a grouped (`[colspan]`) header. ## Related - TACC/Core-Styles@v2.58.0...v2.58.1-rc6 - TACC/Core-Styles#734 - TACC/Core-Styles#735 - TACC/Core-Styles#738 ## Changes - **updated** `package.json` / `package-lock.json` ## Testing 1. `npm ci && npm run build` 2. Verify CSS build completes with no errors 3. Open a CMS table with a grouped (`[colspan]`) header and a `<td>` first column. 4. Scroll it horizontally. 5. Verify the first column no longer pins (previously it pinned and misaligned with the header). 6. Verify a table with no `[colspan]`/`[rowspan]` anywhere still pins its first column as before. ## UI ### With a proper `<th>` row-header column in `<tbody>` | Before scroll | After scroll | | - | - | | <img width="500" height="450" alt="table-sticky-column--th-tbody--before-scroll" src="https://github.com/user-attachments/assets/385433d7-58aa-40cd-9918-bef50e763c08" /> | <img width="500" height="450" alt="table-sticky-column--th-tbody--after-scroll" src="https://github.com/user-attachments/assets/ee3663a7-5788-4f70-a21f-2a9f260017b8" /> | ### Missing a `<th>` row-header column in `<tbody>` (only `<td>`) | Before scroll | After scroll | | - | - | | <img width="500" height="450" alt="table-sticky-column--td-tbody--before-scroll" src="https://github.com/user-attachments/assets/652a467b-c1e6-47d7-acb9-f3e0d4ddc53d" /> | <img width="500" height="450" alt="table-sticky-column--td-tbody--after-scroll" src="https://github.com/user-attachments/assets/228ad940-9e5b-4cb5-b0c3-65c6c4ef69f2" /> | ## Notes > [!NOTE] > All other Core-Styles changes are **not** user facing (CI, docs, config).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Restore first-column pinning for "dumb" tables — those with no
[colspan]/[rowspan]anywhere — narrowing the breaking change from #735 to only tables that actually use a span.Related
Changes
table--basic.cssinto one selector: a<th>without[colspan]always pins; a<td>pins too, but only in a table with no[colspan]/[rowspan]anywhereTesting
npm run build:cssnpm start<td>first column pins again (no spans anywhere in this table)[colspan], so it's excluded from the restored fallback)Notes
Note
Narrows, but does not remove, the #735 breaking change: a table using
[colspan]/[rowspan]whose first column is<td>(not<th>) still doesn't pin. Only span-free tables get the old behavior back.