Playground

Data table search and column filtering

Focused, runnable examples with live options and framework-specific implementation code.

Find anything

Search and column filters

Combine quick global search with type-aware filters and collapsible column controls.

Global searchSelect and number filtersClear, inspectable state
Table options Search, layout, editing, and more
Live configuration

Change the options

These controls update the running table and the framework code below. Data-source contracts, callbacks, custom renderers, and lower-level APIs remain in the full reference.

Search and filtering
Interaction
Columns and layout
Paging and performance
View

Card view · Licensed. Cards share the same search, page, and row selection. Use Table for column controls and inline editing. Auto switches at a container width of 720px.

0 selectedLatest event: Table ready
Framework examples

Use this configuration

Table-only examples need no key. Card and Auto layouts require your own renewable card-view entitlement for your deployment origin. License setup →

Vanilla TS
import { DataTable } from 'wts-data-table';
import 'wts-data-table/styles.css';

const table = new DataTable<Project>({
  element: '#project-table',
  data: projects,
    columns,
    getRowId: (row: Project) => row.id,
    showGlobalFilter: true,
    columnFilters: { mode: 'always' },
    showColumnManager: true,
    columnMenu: true,
    advancedFiltering: false,
    searchPanes: false,
    pagination: { mode: 'pages', showFirst: true, showLast: true, showPageJump: true },
    pageSizes: [5, 8, 14],
    initialState: { pagination: { pageSize: 8 }, sorting: [{ id: 'due', direction: 'asc' }] },
    selectionMode: 'none',
    bulkActions: false,
    cellSelection: false,
    editing: false,
    autoFill: false,
    responsive: { breakpoint: 760, details: 'inline' },
    showGrouping: false,
    rowExpansion: false,
    rowReordering: false,
    rowPinning: false,
    stickyHeader: true,
    virtualization: false,
    summaryRows: false,
    stickyFooter: false,
});
await table.ready();
// On page or component teardown:
function destroy() { table.destroy(); }