Skip to content

feat(tables): sticky header on page scroll, natural column widths, full print output#312

Merged
felixevers merged 2 commits into
mainfrom
claude/table-sticky-natural-sizing-print
Jul 3, 2026
Merged

feat(tables): sticky header on page scroll, natural column widths, full print output#312
felixevers merged 2 commits into
mainfrom
claude/table-sticky-natural-sizing-print

Conversation

@felixevers

@felixevers felixevers commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Follow-up to #309 (full-height page scroll). Requires @helpwave/hightide 0.13.2 (helpwave/hightide#276) — CI stays red on npm ci until that PR is merged and published, then the lockfile gets synced here.

  • Sticky table header — the column header stays visible directly below the AppPage header while the page scrolls (hightide isSticky with the page virtualization mode).
  • Natural column widths — the patient/task tables use hightide's new columnSizingMode: 'natural': no more fill-the-container negotiation, property columns shrink to their content (a one-char select no longer eats 220px) and widen as wider values load. Per-field-type minimum widths on the editable property cells (from claude/table-column-width-29zcqb, integrated here) keep the tap targets and padding correct. The table-autosize CSS !important override is superseded and removed.
  • Print shows every loaded row — the print root was position: absolute, and Chromium clips out-of-flow content to the first page, which is why only the first rows ever printed. Printing now keeps the table in normal flow (the AppPage shell is unlocked from its h-dvh overflow-hidden layout in print, header/sidebar hidden), so all already-loaded rows paginate across pages and the thead repeats natively on each printed page.
  • Performance — together with hightide 0.13.2, tables/grids no longer run three virtualizers in parallel (only the active scroll mode attaches observers), the width-negotiation loop is gone from the list tables, and small card grids skip virtualization entirely.

Verification

Ran the full e2e suite locally against a production build with a local hightide 0.13.2: 28/28 pass, including three new regression tests in patient-table.spec.ts:

  • header stays pinned below the AppPage header after scrolling
  • print renders all 77 fixture rows in flow (screen stays virtualized)
  • the table uses auto layout with no inline width

Typecheck 0 errors, lint clean, 151 unit tests pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_01375kAPxAFypUHbqWZmWkNF

…ll print output

- table headers stay visible below the AppPage header while the page
  scrolls (hightide isSticky with the page virtualization mode)
- patient/task tables use hightide's natural column sizing: property
  columns shrink to their content and widen as wider values load, with
  per-field-type minimum widths on the editable property cells; the
  table-autosize CSS override is superseded
- printing keeps the table in normal flow instead of an absolutely
  positioned print root, so every loaded row paginates across pages and
  the thead repeats per printed page; the AppPage shell is unlocked from
  its viewport-height scroll layout in print
- e2e coverage for the sticky header, print output, and natural sizing

Requires @helpwave/hightide 0.13.2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01375kAPxAFypUHbqWZmWkNF
@felixevers felixevers merged commit 3c6e97c into main Jul 3, 2026
13 checks passed
@felixevers felixevers deleted the claude/table-sticky-natural-sizing-print branch July 3, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants