UNPKG

@tanstack/ember-table

Version:

Headless UI for building powerful tables & datagrids for Ember.

36 lines 2.1 kB
import { createColumnHelper as coreCreateColumnHelper } from '@tanstack/table-core'; import type { RowData, Table, TableFeatures, TableOptions } from '@tanstack/table-core'; export type CreateTableHookOptions<TFeatures extends TableFeatures> = Omit<TableOptions<TFeatures, any>, 'columns' | 'data' | 'state'>; export type AppEmberTable<TFeatures extends TableFeatures, TData extends RowData> = Table<TFeatures, TData>; export type AppColumnHelper<TFeatures extends TableFeatures, TData extends RowData> = ReturnType<typeof coreCreateColumnHelper<TFeatures, TData>>; /** * Bundles a feature set and shared default options once so every table in your * app can be created without repeating them. Returns a typed column helper * factory and a `createAppTable` that wraps {@link useTable}. * * Unlike the React adapter's hook, this does not pre-bind cell/header * components onto the table; render with the `FlexRenderCell`, * `FlexRenderHeader`, and `FlexRenderFooter` components as usual. * * @example * ```ts * const { createAppTable, createAppColumnHelper } = createTableHook({ * features: tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns }), * }) * * const columnHelper = createAppColumnHelper<Person>() * const columns = columnHelper.columns([...]) * * // inside a Glimmer component; passing `this` binds cleanup to its lifecycle * table = createAppTable(this, () => ({ columns, data: this.data })) * ``` */ export declare function createTableHook<TFeatures extends TableFeatures>({ ...defaultTableOptions }: CreateTableHookOptions<TFeatures>): { appFeatures: TFeatures; createAppColumnHelper: <TData extends RowData>() => AppColumnHelper<TFeatures, TData>; createAppTable: { <TData extends RowData>(owner: object, getTableOptions: () => Omit<TableOptions<TFeatures, TData>, "features">): AppEmberTable<TFeatures, TData>; <TData extends RowData>(getTableOptions: () => Omit<TableOptions<TFeatures, TData>, "features">): AppEmberTable<TFeatures, TData>; }; }; //# sourceMappingURL=create-table-hook.d.ts.map