function createTableHook<TFeatures, TTableComponents, TCellComponents, THeaderComponents>(__namedParameters): CreateTableHookResult<TFeatures, TTableComponents, TCellComponents, THeaderComponents>;Defined in: packages/lit-table/src/createTableHook.ts:503
Creates a custom table hook with pre-bound components for composition.
This is the table equivalent of TanStack Form's createFormHook. It allows you to:
TFeatures extends TableFeatures
TTableComponents extends Record<string, ComponentType<any>>
TCellComponents extends Record<string, ComponentType<any>>
THeaderComponents extends Record<string, ComponentType<any>>
CreateTableHookOptions<TFeatures, TTableComponents, TCellComponents, THeaderComponents>
CreateTableHookResult<TFeatures, TTableComponents, TCellComponents, THeaderComponents>
// hooks/table.ts
export const {
createAppColumnHelper,
useAppTable,
useTableContext,
useCellContext,
useHeaderContext,
} = createTableHook({
features: tableFeatures({
rowPaginationFeature,
rowSortingFeature,
columnFilteringFeature,
paginatedRowModel: createPaginatedRowModel(),
sortedRowModel: createSortedRowModel(),
filteredRowModel: createFilteredRowModel(),
sortFns,
filterFns,
}),
tableComponents: { PaginationControls, RowCount },
cellComponents: { TextCell, NumberCell },
headerComponents: { SortIndicator, ColumnFilter },
})
// Create column helper with TFeatures already bound
const columnHelper = createAppColumnHelper<Person>()
// my-table.ts
@customElement('my-table')
class MyTable extends LitElement {
private appTable = useAppTable(this, {
columns,
data: this.data,
})
protected render() {
const table = this.appTable.table()
return html`
<table>
<thead>
${repeat(table.getHeaderGroups(), (hg) => hg.id, (hg) => html`
<tr>
${hg.headers.map((h) => table.AppHeader(h, (header) => html`
<th>${header.FlexRender()}</th>
`))}
</tr>
`)}
</thead>
<tbody>
${table.getRowModel().rows.map((row) => html`
<tr>
${row.getAllCells().map((c) => table.AppCell(c, (cell) => html`
<td>${cell.FlexRender()}</td>
`))}
</tr>
`)}
</tbody>
</table>
`
}
}