@tanstack/ember-table
Version:
Headless UI for building powerful tables & datagrids for Ember.
36 lines • 2.1 kB
TypeScript
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