Skip to content

feat: add VirtualTable component (virtualization-first, config-driven)#4738

Draft
gethinwebster wants to merge 1 commit into
mainfrom
virtualtable-F1-A1
Draft

feat: add VirtualTable component (virtualization-first, config-driven)#4738
gethinwebster wants to merge 1 commit into
mainfrom
virtualtable-F1-A1

Conversation

@gethinwebster

Copy link
Copy Markdown
Member

What

Adds VirtualTable — a new, additive Cloudscape component that coexists with Table (not a rewrite of it), aimed at large and streaming datasets. This is the config-driven, generic framing (F1-A1) from an exploratory design study.

Why

Table is not virtualization-first, and several AWS consoles (notably CloudWatch Logs Insights) maintain bespoke windowed grids because of it. VirtualTable provides first-class row virtualization, arbitrary non-tabular row expansion, and a full-dataset ARIA grid contract as a first-class primitive.

Highlights

  • First-class row virtualization: single owned scroll container, opt-in per-row measurement, incremental scroll-offset correction (no drift for fixed rows; no observer cost when heights are fixed).
  • Arbitrary, non-tabular row expansion via a render slot with measured variable expanded-row heights and a valid grid-child disclosure a11y model (real role=row → full-width role=gridcell → labeled role=region, aria-expanded/aria-controls, Tab-in / Escape-out, excluded from arrow-grid nav).
  • Full-dataset ARIA under windowing: aria-rowcount/aria-rowindex, aria-colcount/aria-colindex incl. a materialised disclosure column.
  • Config-driven props API mirroring Table where it transfers; imperative ref for consumer-composed live tail (scrollToEnd/scrollToItem/isPinnedToEnd).
  • CloudWatch Logs Insights demo pages for the standard, patterns, and raw/file views; unit + a11y tests; usage docs; test-utils wrapper.

Testing

  • npm run build green.
  • npm run lint green (0 errors).
  • Unit + a11y suites green (43 tests across 4 suites).

Not in scope / human-gated

  • Official Cloudscape API review and design/release sign-off.
  • One non-blocking lint warning remains: the debounced live-append region uses aria-live directly rather than the internal LiveRegion component — flagged as a follow-up.
  • Exploratory: this is one framing/approach cell from a design study; final API is subject to team review.

Add a new additive component that coexists with Table, aimed at large and
streaming datasets:

- First-class row virtualization with a single owned scroll container,
  opt-in per-row measurement, and incremental scroll-offset correction.
- Arbitrary non-tabular row expansion (render slot) with measured variable
  expanded-row heights and a valid grid-child disclosure a11y model.
- Full-dataset ARIA grid contract (aria-rowcount/rowindex, aria-colcount/
  colindex incl. a materialised disclosure column) under windowing.
- Config-driven props API mirroring Table where it transfers.
- CloudWatch Logs Insights demo pages (standard, patterns, raw/file views),
  unit + a11y tests, usage docs, and a test-utils wrapper.
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.

1 participant