Live demo — this example is server-driven; run the showcase locally for the interactive version.

Data view table

← Components

Sortable table with search, pagination, and selectable rows (per-row checkboxes + select-all with a selection count). The heaviest of the three demos; everything happens in Alpine state.

Examples

Basic

Sortable table with search and pagination. Click any column header to sort; the search input filters across all columns. Sort indicators reflect the current state; pagination tracks the filtered total.

0 selected
0 results
0 - 0 of 0 results
Page 1 of 1

Expandable rows

Each row expands to a detail panel via a toggle. Expansion state lives in the phaDataView factory, so a row stays open while you sort but collapses when it pages out of view.

0 results
0 - 0 of 0 results
Page 1 of 1

Sticky header + first column

All rows render in one scroll box: the header pins on vertical scroll and the first column pins on horizontal scroll. Search and column sort still work; pagination is dropped since every row is on a single page.

0 results

Tree table

A treegrid grouping the libraries by license family. The flat data-view seed doesn't fit the filter/sort/paginate model, so this is a hierarchy with expand/collapse per group; aria-level, aria-setsize, and aria-posinset describe the tree to assistive tech.

Name Vendor Version
Apache 2.0
License group 3 libraries
Quarkus
Red Hat 3.35.4
ECharts
Apache 6.1.0
video.js
Video.js 8.23.7
MIT
License group 4 libraries
Alpine.js
Caleb Porzio 3.15.12
PatternFly
Red Hat 6.4.0
Monaco Editor
Microsoft 0.55.1
Cytoscape
Cytoscape Consortium 3.33.4
BSD & other
License group 5 libraries
HTMX
Big Sky Software 2.0.10
D3.js
Mike Bostock 7.9.0
MapLibre GL
MapLibre 5.24.0
Quill
Slab 2.0.3
Font Awesome Free
Fonticons 7.2.0

Resizable columns

Drag the grip on a header cell's trailing edge to resize that column (min 80px). A small phaColumnResize Alpine factory tracks the pointer at the document level; the table uses table-layout: fixed so widths hold.

Name Vendor Version License
Quarkus Red Hat 3.35.4 Apache 2.0
HTMX Big Sky Software 2.0.10 BSD 2-Clause
Alpine.js Caleb Porzio 3.15.12 MIT
PatternFly Red Hat 6.4.0 MIT
ECharts Apache 6.1.0 Apache 2.0
MapLibre GL MapLibre 5.24.0 BSD 3-Clause

Loading state

Skeleton rows stand in while data is fetched. In an HTMX flow this is the placeholder tbody returned before the real rows swap in; the toolbar and column headers stay in place so the layout doesn't jump when data arrives.

Loading…
Name Vendor Version License

Error state

When the fetch fails, a danger empty-state with a retry action fills the table body. The toolbar and column headers remain so the user keeps their bearings and can retry in place.

Name Vendor Version License

Unable to load data

The data view could not be loaded. Check your connection and try again.

Usage

Client-side vs server-side. The phaDataView() factory filters / sorts / paginates client-side — fine for hundreds of rows but not for tens of thousands. For large datasets, drop the factory and have the toolbar inputs emit hx-get against an endpoint that returns the rendered tbody. Pagination links become server-driven links.

Composition over abstraction. The PatternFly data-view "extension" is really a state-management contract over the existing Table, Toolbar, and Pagination components. We don't ship a wrapper component for it; we ship the wiring pattern.

Why no React extension CSS. @patternfly/react-data-view doesn't ship any CSS — it composes existing PF v6 components. So there's nothing to vendor.