Skip to content

Commit ed7dd32

Browse files
serpentbladeclaude
andcommitted
docs(data-table): refresh grid-mode coverage in comparison + demo
Grid interaction mode shipped, so the comparison page no longer lists it under "What Rozie defers": drop the inert-in-v1 bullet, add a win bullet for interactionMode="grid", add an APG grid-keyboard-nav feature-matrix row, and correct the surface counts to 15 props / 9 events / 15-verb handle. Fix the demo page's "eight change events" -> nine. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013wvxhsB5hcDKD8UadLLSyw
1 parent 7cbeef4 commit ed7dd32

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

docs/components/data-table-comparison.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Cell legend: **✅** = documented out-of-the-box · **❌** = not supported / no
4040
| Row selection |||||||`selectionMode` |
4141
| Column visibility / resize / reorder / pin ||||| ✅ (AG) || ✅ four slices |
4242
| Sticky header ||| ⚠️ ||||`stickyHeader` |
43+
| APG grid keyboard navigation (`role="grid"`) || ⚠️ (PrimeVue) ||| ✅ (AG) ||`interactionMode="grid"` |
4344
| Declarative `<Column>` surface | ⚠️ defs array | ✅ (PrimeVue) | ⚠️ | ⚠️ | ⚠️ ||`<Column>` + `:columns` |
4445
| Per-column cell / header templates |||||||`#cell` / `#header` (React render-prop) |
4546
| Server-side (manual) mode |||||||`manual` |
@@ -56,16 +57,16 @@ Cell legend: **✅** = documented out-of-the-box · **❌** = not supported / no
5657
- **Nine independent two-way state slices, controlled *or* uncontrolled.** Sorting, global filter, column filters, pagination, row selection, column visibility / sizing / order / pinning — each is an optional `r-model` you bind only if you want to own it, and each change event fires regardless of binding so you can observe transitions either way.
5758
- **A declarative `<Column>` API with per-column templates** (the PrimeVue-shaped surface) *and* a `:columns` config-array escape hatch, resolved by an id-keyed last-write-wins union — plus per-column `#cell` / `#header` reactive templates (a render-prop on React, the one documented divergence).
5859
- **Zero-config styling that re-skins to any design system.** Every rendered value is a `--rozie-data-table-*` CSS custom property with a built-in fallback, plus ready-made token bridges for shadcn/ui, Material 3, and Bootstrap 5 — no required CSS import.
60+
- **Opt-in WAI-ARIA grid mode, identical on all six targets.** Set `interactionMode="grid"` for the full [APG grid pattern](https://www.w3.org/WAI/ARIA/apg/patterns/grid/)`role="grid"`, a roving single tab-stop, and 2-D arrow-key cell navigation that survives a re-sort / filter / page change / column hide-reorder-pin (the active cell is tracked as a `{ rowIndex, colIndex }` pair over the visible model, never a stored DOM node). It is drivable and observable via the `focusCell` / `getActiveCell` / `clearActiveCell` handle verbs and the `activecell-change` event, and the behavioral contract is locked by a cross-framework VR matrix. The default `interactionMode="table"` stays a plain accessible table, byte-for-byte unchanged.
5961

6062
## What Rozie defers {#what-rozie-defers}
6163

6264
This page concedes where the incumbents are genuinely ahead — that's what keeps the comparison credible, and it doubles as Rozie's own roadmap.
6365

6466
- **AG Grid's enterprise depth.** [AG Grid](https://www.ag-grid.com/) ships row grouping, tree data, pivoting, range selection, master/detail, integrated charting, and a deep server-side row model. `@rozie-ui/data-table` covers the common surface (sort / filter / paginate / select / column management) and a `manual` server-side hook, not the enterprise feature set.
6567
- **Row/cell virtualization.** Large datasets render every row today — there is no built-in windowing. Virtualization is a planned phase (the published support boundary is a row-count ceiling until it lands); for now, paginate or pre-window large data yourself.
66-
- **Full APG grid keyboard navigation.** The `interactionMode="grid"` seam is reserved but inert in v1 — arrow-key cell navigation per the [WAI-ARIA grid pattern](https://www.w3.org/WAI/ARIA/apg/patterns/grid/) is a future additive layer. The default table-oriented focus surface (Tab between native controls) is fully accessible today.
6768
- **TanStack's expansion / grouping / faceting helpers.** The shared `table-core` exposes more row-model features (expanding, grouping, faceted filters) than `@rozie-ui/data-table` surfaces in its current prop set. They are reachable via the imperative handle / future additive props.
68-
- **`@rozie-ui/data-table` is `0.1.0`.** The surface (16 props / 9 two-way slices / 8 events / 12-verb handle / declarative `<Column>` + per-column templates / 2 selection slots) is stable and gate-verified across all six targets, but it is younger and less battle-tested than the established libraries.
69+
- **`@rozie-ui/data-table` is `0.1.0`.** The surface (15 props / 9 two-way slices / 9 events / 15-verb handle / declarative `<Column>` + per-column templates / 2 selection slots) is stable and gate-verified across all six targets, but it is younger and less battle-tested than the established libraries.
6970

7071
## Try it
7172

docs/components/data-table-demo.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ You author the component **once** as a `.rozie` file (the parent `DataTable.rozi
9090

9191
:::
9292

93-
Each is a real, idiomatic component for its framework — React `forwardRef` + hooks, Vue `<script setup>` + `defineModel`, Svelte 5 runes, an Angular standalone component, a Solid component, and a Lit custom element. Same props, same nine two-way slices, same eight change events, same `<Column>` API, same scoped slots, same imperative handle — all from the one source above, built on `@tanstack/table-core` with no per-framework adapter behind it.
93+
Each is a real, idiomatic component for its framework — React `forwardRef` + hooks, Vue `<script setup>` + `defineModel`, Svelte 5 runes, an Angular standalone component, a Solid component, and a Lit custom element. Same props, same nine two-way slices, same nine change events, same `<Column>` API, same scoped slots, same imperative handle — all from the one source above, built on `@tanstack/table-core` with no per-framework adapter behind it.
9494

9595
## See also
9696

0 commit comments

Comments
 (0)