API Reference
Types
TDteColumnProps
Extended column props with an additional extend property:
type TDteColumnProps<T = Record<string, unknown>> =
Omit<
DataTableColumn<T>,
| "sortable"
| "sortKey"
| "filter"
| "filterPopoverProps"
| "filterPopoverDisableClickOutside"
| "filtering"
| "ellipsis"
| "noWrap"
> & {
extend?: TFilterableExtend;
} & (
| { ellipsis?: boolean; noWrap?: never }
| { ellipsis?: never; noWrap?: boolean }
);TFilterableExtend
Type for the extend property:
type TFilterableExtend = {
searchable?: boolean;
sortable?: boolean;
filterable?: boolean;
filterVariant?:
| "text"
| "number"
| "date"
| "date_range"
| "number_range"
| "single_select"
| "multi_select";
filterOptions?:
| TFilterNumberRangeOptions
| TFilterSingleSelectOptions
| TFilterMultiSelectOptions;
};TFilterNumberRangeOptions
type TFilterNumberRangeOptions = {
min: number;
max: number;
step?: number;
minRange?: number;
};TFilterSingleSelectOptions / TFilterMultiSelectOptions
type TFilterSingleSelectOptions = {
data: {
value: string;
label: string;
count?: number;
icon?: React.ReactNode;
}[];
};
type TFilterMultiSelectOptions = TFilterSingleSelectOptions; // Same typeTUrlKeys
type TUrlKeys = {
page: string;
pageSize: string;
sorts: string;
search: string;
filters: string;
};TDefaultParams
type TDefaultParams = {
page?: number;
pageSize?: number;
sorts?: TSortCondition[];
search?: TSearchCondition;
filters?: TFilterCondition[];
};TSortCondition
type TSortCondition = {
accessor: string;
direction: "asc" | "desc";
};TSearchCondition
type TSearchCondition = {
accessors: string[];
value: string;
};TFilterCondition
type TFilterCondition = {
variant:
| "text"
| "number"
| "date"
| "date_range"
| "number_range"
| "single_select"
| "multi_select";
accessor: string;
value: string | string[];
};Components
DteProvider
Provider component that supplies context to all child components.
Props:
type TDteProviderProps<T = Record<string, unknown>> = {
children: React.ReactNode;
urlKeys?: TUrlKeys;
defaultParams?: TDefaultParams;
storeColumnsKey: string; // Required
columns: TDteColumnProps<T>[]; // Required
originalUseDataTableColumnsResult: ReturnType<
typeof useDataTableColumns<T>
>; // Required
i18n?: TDteI18nInput; // Optional, merged with defaults
};DteExtended
Main component for displaying data tables.
Props:
Accepts all props from DataTable in mantine-datatable, except:
columns(from context)storeColumnsKey(from context)groups- Pagination and Sort props
DteSearch
Search component with multi-column selection capability.
Props: None. i18n from DteProvider.
DteFilter
Filter component that automatically displays filters based on column configuration.
Props: None. i18n from DteProvider.
DteSortList
Component for managing multi-column sorting.
Props: None. i18n from DteProvider.
DteColumnsToggle
Component to show/hide columns.
Props: None. i18n from DteProvider.
DtePagination
Pagination component that can be placed anywhere.
Props:
type TDtePaginationProps = {
recordsPerPageOptions?: number[]; // Default: [10, 20, 30, 40, 50]
};i18n from DteProvider.
Hooks
useDteContext
Hook to access Dte context.
function useDteContext<T = Record<string, unknown>>():
TDteContextProps<T>;Returns:
type TDteContextProps<T> = {
urlKeys?: TUrlKeys;
i18n: TDteI18n; // Merged i18n (always present)
defaultParams?: TDefaultParams;
storeColumnsKey: string;
columns: TDteColumnProps<T>[];
originalUseDataTableColumnsResult: ReturnType<
typeof useDataTableColumns<T>
>;
paginationProps?: TPaginationProps;
setTotalRecords?: (totalRecords: number) => void;
setRecordsPerPageOptions?: (recordsPerPageOptions: number[]) => void;
};useDteQueryParams
Hook to read and update query parameters.
function useDteQueryParams(): {
page: number;
setPage: (page: number) => void;
pageSize: number;
setPageSize: (pageSize: number) => void;
sorts: TSortCondition[];
setSorts: (sorts: TSortCondition[]) => void;
search: TSearchCondition;
setSearch: (search: TSearchCondition) => void;
filters: TFilterCondition[];
setFilters: (filters: TFilterCondition[]) => void;
resetPage: () => void;
resetPageSize: () => void;
resetSorts: () => void;
resetSearch: () => void;
resetFilters: () => void;
resetAll: () => void;
};Server Utilities
createDteLoader
Create a loader function to read query params on the server.
function createDteLoader(
props?: Pick<TDteContextProps, "urlKeys" | "defaultParams">
): (searchParams: Promise<SearchParams>) => Promise<{
page: number;
pageSize: number;
sorts: TSortCondition[];
search: TSearchCondition;
filters: TFilterCondition[];
}>;Usage:
import { createDteLoader } from "mantine-datatable-extended/server";
const loader = createDteLoader({
defaultParams: {
page: 1,
pageSize: 10,
},
urlKeys: {
page: "p",
pageSize: "ps",
sorts: "s",
search: "q",
filters: "f",
},
});
// In server component
const params = await loader(searchParams);Enums
ESortDirection
enum ESortDirection {
ASC = "asc",
DESC = "desc",
}EFilterVariant
enum EFilterVariant {
TEXT = "text",
NUMBER = "number",
NUMBER_RANGE = "number_range",
DATE = "date",
DATE_RANGE = "date_range",
SINGLE_SELECT = "single_select",
MULTI_SELECT = "multi_select",
}Error Handling
The library will throw errors in the following cases:
Missing storeColumnsKey
// ❌ Error: storeColumnsKey property is required
<DteProvider columns={columns} {...otherProps}>
{/* Missing storeColumnsKey */}
</DteProvider>Missing columns
// ❌ Error: columns property is required
<DteProvider storeColumnsKey="table" {...otherProps}>
{/* Missing columns */}
</DteProvider>useDteContext outside Provider
// ❌ Error: useDteContext must be used within a DteProvider
function Component() {
const context = useDteContext(); // Will throw
return null;
}Type Exports
Public types exported from the main package:
import type {
TDteColumnProps,
TDteI18nInput,
TDteProviderProps,
} from "mantine-datatable-extended";