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.
|
No results found
No items match the search filter.
|
||||
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.
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.
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.
| 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 dataThe 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.