Complete TypeScript type reference.
The ActiveGrid package exports comprehensive TypeScript types for all components, configurations, and utilities. Import these types to ensure type safety throughout your application.
Main component props:
import { GridProps } from '@workspace/active-grid';
type User = {
id: string;
name: string;
};
const props: GridProps<User> = {
columns: [],
data: [],
mode: 'client',
// ... other props
};Column definition type:
import { GridColumnDef } from '@workspace/active-grid';
const columns: GridColumnDef<User>[] = [
{
accessorKey: 'name',
header: 'Name',
size: 200,
},
];Extended column metadata:
import { GridColumnMeta } from '@workspace/active-grid';
const meta: GridColumnMeta = {
cellAlign: 'right',
headerAlign: 'center',
valueFormatter: (value) => `$${value}`,
filterType: 'number',
editable: true,
editType: 'number',
};Visual and behavior settings:
import { GridSettings } from '@workspace/active-grid';
const settings: GridSettings<User> = {
rowHeight: 48,
headerHeight: 52,
stripedRows: true,
showColumnBorders: false,
rowClassRules: {
'bg-red-50': (row) => row.status === 'error',
},
};Toolbar configuration:
import { GridToolbarConfig } from '@workspace/active-grid';
const toolbarConfig: GridToolbarConfig = {
hidden: false,
search: {
placeholder: 'Search...',
debounceMs: 300,
},
actions: <CustomActions />,
};Pagination configuration:
import { GridPaginationConfig } from '@workspace/active-grid';
const paginationConfig: GridPaginationConfig = {
enabled: true,
position: 'bottom',
pageSizeOptions: [10, 25, 50],
showPageSize: true,
showInfo: true,
};Header menu configuration:
import { GridHeaderMenuConfig } from '@workspace/active-grid';
const headerMenuConfig: GridHeaderMenuConfig = {
showSort: true,
showPin: true,
showHide: true,
showAutoSize: true,
showReset: true,
customItems: <CustomMenuItems />,
};Row menu configuration:
import { GridRowMenuConfig } from '@workspace/active-grid';
const rowMenuConfig: GridRowMenuConfig<User> = {
enabled: true,
features: {
pin: true,
edit: true,
copy: true,
},
customItems: (user) => <CustomItems user={user} />,
};Reusable column type definitions:
import { GridColumnTypes } from '@workspace/active-grid';
const columnTypes: GridColumnTypes = {
currency: {
meta: {
cellAlign: 'right',
valueFormatter: (value) => `$${value.toFixed(2)}`,
},
},
date: {
meta: {
valueFormatter: (value) => format(new Date(value), 'PP'),
},
},
};Default column properties:
import { GridColumnDefaults } from '@workspace/active-grid';
const columnDefaults: GridColumnDefaults = {
size: 150,
minSize: 80,
maxSize: 400,
enableSorting: true,
enableResizing: true,
};Edit mode options:
import { EditMode } from '@workspace/active-grid';
const editMode: EditMode = 'cell'; // or 'row'Current editing state:
import { EditingState } from '@workspace/active-grid';
const editingState: EditingState = {
rowId: '123',
columnId: 'name',
};Edit commit data:
import { EditingCommitPayload } from '@workspace/active-grid';
const handleCommit = async (payload: EditingCommitPayload<User>) => {
console.log(payload.rowId); // string
console.log(payload.rowIndex); // number
console.log(payload.oldData); // User
console.log(payload.newData); // User
console.log(payload.changes); // Partial<User>
};Filter operator options:
Filter value types:
Filter facet option:
Context menu item:
Context menu builder function:
Server data fetching function:
Server fetch parameters:
Server response format:
Export configuration:
Export format options:
Complete configuration object:
Partial configuration:
Pinned rows structure:
Common TanStack Table types are available:
Import only what you need:
import { FilterOperator } from '@workspace/active-grid';
const operator: FilterOperator =
| 'contains'
| 'equals'
| 'startsWith'
| 'endsWith'
| 'greaterThan'
| 'lessThan'
| 'between'
| 'before'
| 'after'
| 'inRange';import { FilterValue } from '@workspace/active-grid';
// Simple value
const simpleFilter: FilterValue = 'active';
// With operator
const operatorFilter: FilterValue = {
operator: 'greaterThan',
value: 100,
};
// Range
const rangeFilter: FilterValue = {
operator: 'between',
value: 10,
valueTo: 50,
};import { FacetOption } from '@workspace/active-grid';
const facets: FacetOption[] = [
{ label: 'Active', value: 'active', count: 45 },
{ label: 'Inactive', value: 'inactive', count: 12 },
];import { ContextMenuItem } from '@workspace/active-grid';
const menuItem: ContextMenuItem<User> = {
label: 'Edit',
action: (user) => handleEdit(user),
icon: Pencil,
variant: 'default',
disabled: false,
};
// Or separator
const separator: ContextMenuItem<User> = 'separator';import { ContextMenuBuilder } from '@workspace/active-grid';
const buildMenu: ContextMenuBuilder<User> = (user) => [
{
label: 'Edit',
action: () => handleEdit(user),
},
'separator',
{
label: 'Delete',
action: () => handleDelete(user),
variant: 'destructive',
},
];import { ServerFetchFunction } from '@workspace/active-grid';
const fetchUsers: ServerFetchFunction<User> = async (params) => {
const response = await api.getUsers(params);
return {
data: response.users,
totalCount: response.total,
};
};import { ServerFetchParams } from '@workspace/active-grid';
const params: ServerFetchParams = {
pageIndex: 0,
pageSize: 25,
sorting: [{ id: 'name', desc: false }],
filters: [{ id: 'status', value: 'active' }],
globalFilter: 'search query',
};import { PagedResponse } from '@workspace/active-grid';
const response: PagedResponse<User> = {
data: users,
totalCount: 1000,
meta: {
aggregations: {
totalRevenue: 50000,
},
facets: {
status: [
{ label: 'Active', value: 'active', count: 45 },
],
},
},
};import { GridExportOptions } from '@workspace/active-grid';
const exportOptions: GridExportOptions = {
enabled: true,
formats: ['xlsx', 'csv', 'json'],
filename: 'export',
};import { GridExportFormat } from '@workspace/active-grid';
const format: GridExportFormat = 'csv' | 'json' | 'xlsx';import { GridConfig } from '@workspace/active-grid';
const config: GridConfig = {
columnDefaults: {
size: 150,
enableSorting: true,
},
settings: {
rowHeight: 48,
stripedRows: true,
},
maxPinnedRows: 10,
};import { PartialGridConfig } from '@workspace/active-grid';
const partialConfig: PartialGridConfig = {
columnDefaults: {
size: 150,
},
};import { PinnedRowsBuffer } from '@workspace/active-grid';
const pinnedRows: PinnedRowsBuffer<User> = {
top: [
{ id: '1', name: 'Admin', email: 'admin@example.com' },
],
bottom: [
{ id: '999', name: 'Total', email: '' },
],
};import {
Row,
Column,
Table,
RowSelectionState,
SortingState,
ColumnFiltersState,
PaginationState,
ColumnVisibilityState,
ColumnOrderState,
ColumnPinningState,
ColumnSizingState,
} from '@tanstack/react-table';import {
ActiveGrid,
GridProps,
GridColumnDef,
GridSettings,
GridToolbarConfig,
GridPaginationConfig,
EditingCommitPayload,
ServerFetchFunction,
PagedResponse,
ContextMenuItem,
} from '@workspace/active-grid';
import { RowSelectionState } from '@tanstack/react-table';
type User = {
id: string;
name: string;
email: string;
status: 'active' | 'inactive';
};
const columns: GridColumnDef<User>[] = [
{
accessorKey: 'name',
header: 'Name',
},
];
const settings: GridSettings<User> = {
rowHeight: 48,
stripedRows: true,
};
const toolbarConfig: GridToolbarConfig = {
search: { placeholder: 'Search...' },
};
const paginationConfig: GridPaginationConfig = {
enabled: true,
pageSizeOptions: [10, 25, 50],
};
const contextMenuItems: ContextMenuItem<User>[] = [
{
label: 'Edit',
action: (user) => console.log(user),
},
];
const fetchUsers: ServerFetchFunction<User> = async (params) => {
const response = await api.getUsers(params);
return {
data: response.users,
totalCount: response.total,
};
};
const handleCommit = async (payload: EditingCommitPayload<User>) => {
await api.updateUser(payload.rowId, payload.changes);
};
function UsersTable() {
const [rowSelection, setRowSelection] = useState<RowSelectionState>({});
const props: GridProps<User> = {
columns,
data: [],
settings,
toolbar: toolbarConfig,
pagination: paginationConfig,
contextMenu: () => contextMenuItems,
mode: 'server',
fetchFn: fetchUsers,
onDataCommit: handleCommit,
state: { rowSelection },
onRowSelectionChange: setRowSelection,
};
return <ActiveGrid {...props} />;
}// Import specific types
import type {
GridColumnDef,
GridSettings,
EditingCommitPayload,
} from '@workspace/active-grid';
// Or import all types
import type * as ActiveGridTypes from '@workspace/active-grid';