mantine-datatable-extended 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -22
- package/dist/chunk-EDD26HQ2.mjs +1 -0
- package/dist/{data-table-provider.type-dlzY73EE.d.ts → data-table-provider.type-DPvItGHz.d.ts} +94 -72
- package/dist/index.d.ts +183 -41
- package/dist/index.mjs +2 -1
- package/dist/server.d.ts +7 -4
- package/dist/server.mjs +1 -1
- package/dist/styles.css +8 -8
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -15,11 +15,11 @@ Mantine and Mantine DataTable are excellent libraries, trusted and used by many
|
|
|
15
15
|
|
|
16
16
|
### 🎯 Standardized Components
|
|
17
17
|
|
|
18
|
-
- **
|
|
19
|
-
- **
|
|
20
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
18
|
+
- **MDESearch**: Search with multi-column selection
|
|
19
|
+
- **MDEFilter**: Filter data with various filter types (text, number, date, select, range...)
|
|
20
|
+
- **MDESortList**: Sort by multiple columns simultaneously
|
|
21
|
+
- **MDEColumnsToggle**: Show/hide columns
|
|
22
|
+
- **MDEPagination**: Flexible pagination that can be placed anywhere
|
|
23
23
|
|
|
24
24
|
### 🔗 URL State Management
|
|
25
25
|
|
|
@@ -91,19 +91,19 @@ export default function RootLayout({ children }) {
|
|
|
91
91
|
"use client";
|
|
92
92
|
|
|
93
93
|
import {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
type
|
|
94
|
+
MantineDatatableExtended,
|
|
95
|
+
MDEProvider,
|
|
96
|
+
MDESearch,
|
|
97
|
+
MDEFilter,
|
|
98
|
+
MDESortList,
|
|
99
|
+
MDEColumnsToggle,
|
|
100
|
+
MDEPagination,
|
|
101
|
+
type TMDEColumnProps,
|
|
102
102
|
} from "mantine-datatable-extended";
|
|
103
103
|
import { useDataTableColumns } from "mantine-datatable";
|
|
104
104
|
import { Group, Space } from "@mantine/core";
|
|
105
105
|
|
|
106
|
-
const columns:
|
|
106
|
+
const columns: TMDEColumnProps[] = [
|
|
107
107
|
{
|
|
108
108
|
accessor: "name",
|
|
109
109
|
title: "Name",
|
|
@@ -124,27 +124,27 @@ export default function MyTable() {
|
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
return (
|
|
127
|
-
<
|
|
127
|
+
<MDEProvider
|
|
128
128
|
columns={columns}
|
|
129
129
|
originalUseDataTableColumnsResult={originalUseDataTableColumnsResult}
|
|
130
130
|
storeColumnsKey="my-table"
|
|
131
131
|
>
|
|
132
132
|
<Group justify="space-between">
|
|
133
133
|
<Group>
|
|
134
|
-
<
|
|
135
|
-
<
|
|
134
|
+
<MDESearch />
|
|
135
|
+
<MDEFilter />
|
|
136
136
|
</Group>
|
|
137
137
|
<Group>
|
|
138
|
-
<
|
|
139
|
-
<
|
|
138
|
+
<MDESortList />
|
|
139
|
+
<MDEColumnsToggle />
|
|
140
140
|
</Group>
|
|
141
141
|
</Group>
|
|
142
142
|
|
|
143
143
|
<Space h="md" />
|
|
144
|
-
<
|
|
144
|
+
<MantineDatatableExtended records={data} />
|
|
145
145
|
<Space h="md" />
|
|
146
|
-
<
|
|
147
|
-
</
|
|
146
|
+
<MDEPagination />
|
|
147
|
+
</MDEProvider>
|
|
148
148
|
);
|
|
149
149
|
}
|
|
150
150
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {z}from'zod';var t={ASC:"asc",DESC:"desc"},r={TEXT:"text",NUMBER:"number",NUMBER_RANGE:"number_range",DATE:"date",DATE_RANGE:"date_range",SINGLE_SELECT:"single_select",MULTI_SELECT:"multi_select"};var c=z.object({accessor:z.string(),direction:z.enum(t)}),i=z.object({accessors:z.array(z.string()),value:z.string()}),n=z.object({variant:z.enum(r),accessor:z.string(),value:z.union([z.string(),z.array(z.string())])});var l={page:"page",pageSize:"pageSize",sorts:"sorts",search:"search",filters:"filters"},E={page:1,pageSize:10,sorts:[],search:{accessors:[],value:""},filters:[]},S=[10,20,30,40,50],T=0,g={view:{columnsToggle:"Columns Toggle",columnsToggleSearchPlaceholder:"Search columns\u2026"},sort:{sort:"Sort",addSort:"Add Sort",resetSort:"Reset Sort",asc:"Asc",desc:"Desc"},search:{search:"Search",searchAccessorsSearchPlaceholder:"Search columns\u2026"},filter:{resetFilter:"Reset Filters"},pagination:{rowsPerPage:"Rows per page",pageOfTotalPages:["Page","of"],startEndRecordOfTotalRecords:["","-","/"]}};export{t as a,r as b,c,i as d,n as e,l as f,E as g,S as h,T as i,g as j};
|
package/dist/{data-table-provider.type-dlzY73EE.d.ts → data-table-provider.type-DPvItGHz.d.ts}
RENAMED
|
@@ -2,6 +2,50 @@ import * as react from 'react';
|
|
|
2
2
|
import { DataTableColumn, useDataTableColumns } from 'mantine-datatable';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
|
+
declare const sortSchema: z.ZodObject<{
|
|
6
|
+
accessor: z.ZodString;
|
|
7
|
+
direction: z.ZodEnum<{
|
|
8
|
+
readonly ASC: "asc";
|
|
9
|
+
readonly DESC: "desc";
|
|
10
|
+
}>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
type TSortCondition = z.infer<typeof sortSchema>;
|
|
13
|
+
declare const searchSchema: z.ZodObject<{
|
|
14
|
+
accessors: z.ZodArray<z.ZodString>;
|
|
15
|
+
value: z.ZodString;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
type TSearchCondition = z.infer<typeof searchSchema>;
|
|
18
|
+
declare const filterSchema: z.ZodObject<{
|
|
19
|
+
variant: z.ZodEnum<{
|
|
20
|
+
readonly TEXT: "text";
|
|
21
|
+
readonly NUMBER: "number";
|
|
22
|
+
readonly NUMBER_RANGE: "number_range";
|
|
23
|
+
readonly DATE: "date";
|
|
24
|
+
readonly DATE_RANGE: "date_range";
|
|
25
|
+
readonly SINGLE_SELECT: "single_select";
|
|
26
|
+
readonly MULTI_SELECT: "multi_select";
|
|
27
|
+
}>;
|
|
28
|
+
accessor: z.ZodString;
|
|
29
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
type TFilterCondition = z.infer<typeof filterSchema>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Hook signature for a single query param: returns [value, setter].
|
|
35
|
+
*/
|
|
36
|
+
type TQueryParamHook<T> = (key: string, defaultValue: T) => readonly [T, (value: T) => void];
|
|
37
|
+
/**
|
|
38
|
+
* Adapter interface for query params state management.
|
|
39
|
+
* Implement this to use different backends (nuqs, localStorage, memory, etc.).
|
|
40
|
+
*/
|
|
41
|
+
type TQueryParamsAdapter = {
|
|
42
|
+
usePage: TQueryParamHook<number>;
|
|
43
|
+
usePageSize: TQueryParamHook<number>;
|
|
44
|
+
useSorts: TQueryParamHook<TSortCondition[]>;
|
|
45
|
+
useSearch: TQueryParamHook<TSearchCondition>;
|
|
46
|
+
useFilters: TQueryParamHook<TFilterCondition[]>;
|
|
47
|
+
};
|
|
48
|
+
|
|
5
49
|
/**
|
|
6
50
|
* Options for multi-select filter variant.
|
|
7
51
|
*/
|
|
@@ -66,7 +110,7 @@ type TFilterableExtend = TBaseExtend & ({
|
|
|
66
110
|
* Extended column props for DataTable with search, sort, and filter support.
|
|
67
111
|
* Extends mantine-datatable's DataTableColumn with an optional `extend` property.
|
|
68
112
|
*/
|
|
69
|
-
type
|
|
113
|
+
type TMDEColumnProps<T = Record<string, unknown>> = Omit<DataTableColumn<T>, "sortable" | "sortKey" | "filter" | "filterPopoverProps" | "filterPopoverDisableClickOutside" | "filtering" | "ellipsis" | "noWrap"> & {
|
|
70
114
|
/**
|
|
71
115
|
* The extended properties of the column.
|
|
72
116
|
*/
|
|
@@ -89,35 +133,7 @@ type TDteColumnProps<T = Record<string, unknown>> = Omit<DataTableColumn<T>, "so
|
|
|
89
133
|
noWrap?: boolean;
|
|
90
134
|
});
|
|
91
135
|
|
|
92
|
-
|
|
93
|
-
accessor: z.ZodString;
|
|
94
|
-
direction: z.ZodEnum<{
|
|
95
|
-
readonly ASC: "asc";
|
|
96
|
-
readonly DESC: "desc";
|
|
97
|
-
}>;
|
|
98
|
-
}, z.core.$strip>;
|
|
99
|
-
type TSortCondition = z.infer<typeof sortSchema>;
|
|
100
|
-
declare const searchSchema: z.ZodObject<{
|
|
101
|
-
accessors: z.ZodArray<z.ZodString>;
|
|
102
|
-
value: z.ZodString;
|
|
103
|
-
}, z.core.$strip>;
|
|
104
|
-
type TSearchCondition = z.infer<typeof searchSchema>;
|
|
105
|
-
declare const filterSchema: z.ZodObject<{
|
|
106
|
-
variant: z.ZodEnum<{
|
|
107
|
-
readonly TEXT: "text";
|
|
108
|
-
readonly NUMBER: "number";
|
|
109
|
-
readonly NUMBER_RANGE: "number_range";
|
|
110
|
-
readonly DATE: "date";
|
|
111
|
-
readonly DATE_RANGE: "date_range";
|
|
112
|
-
readonly SINGLE_SELECT: "single_select";
|
|
113
|
-
readonly MULTI_SELECT: "multi_select";
|
|
114
|
-
}>;
|
|
115
|
-
accessor: z.ZodString;
|
|
116
|
-
value: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
117
|
-
}, z.core.$strip>;
|
|
118
|
-
type TFilterCondition = z.infer<typeof filterSchema>;
|
|
119
|
-
|
|
120
|
-
type TDteViewOptions = {
|
|
136
|
+
type TMDEViewOptions = {
|
|
121
137
|
/**
|
|
122
138
|
* The label for the columns toggle button.
|
|
123
139
|
*/
|
|
@@ -127,7 +143,7 @@ type TDteViewOptions = {
|
|
|
127
143
|
*/
|
|
128
144
|
columnsToggleSearchPlaceholder: string;
|
|
129
145
|
};
|
|
130
|
-
type
|
|
146
|
+
type TMDESortOptions = {
|
|
131
147
|
/**
|
|
132
148
|
* The label for the sort button.
|
|
133
149
|
*/
|
|
@@ -149,7 +165,7 @@ type TDteSortOptions = {
|
|
|
149
165
|
*/
|
|
150
166
|
desc: string;
|
|
151
167
|
};
|
|
152
|
-
type
|
|
168
|
+
type TMDESearchOptions = {
|
|
153
169
|
/**
|
|
154
170
|
* The label for the search input placeholder.
|
|
155
171
|
*/
|
|
@@ -159,13 +175,13 @@ type TDteSearchOptions = {
|
|
|
159
175
|
*/
|
|
160
176
|
searchAccessorsSearchPlaceholder: string;
|
|
161
177
|
};
|
|
162
|
-
type
|
|
178
|
+
type TMDEFilterOptions = {
|
|
163
179
|
/**
|
|
164
180
|
* The label for the reset filter button.
|
|
165
181
|
*/
|
|
166
182
|
resetFilter: string;
|
|
167
183
|
};
|
|
168
|
-
type
|
|
184
|
+
type TMDEPaginationOptions = {
|
|
169
185
|
/**
|
|
170
186
|
* The label for the rows per page.
|
|
171
187
|
*/
|
|
@@ -188,23 +204,23 @@ type TDtePaginationOptions = {
|
|
|
188
204
|
* Unified i18n type for all DataTable components.
|
|
189
205
|
* Grouped by component - full type stored in context (after merging with defaults).
|
|
190
206
|
*/
|
|
191
|
-
type
|
|
192
|
-
view:
|
|
193
|
-
sort:
|
|
194
|
-
search:
|
|
195
|
-
filter:
|
|
196
|
-
pagination:
|
|
207
|
+
type TMDEI18n = {
|
|
208
|
+
view: TMDEViewOptions;
|
|
209
|
+
sort: TMDESortOptions;
|
|
210
|
+
search: TMDESearchOptions;
|
|
211
|
+
filter: TMDEFilterOptions;
|
|
212
|
+
pagination: TMDEPaginationOptions;
|
|
197
213
|
};
|
|
198
214
|
/**
|
|
199
|
-
* Input type for i18n prop in
|
|
215
|
+
* Input type for i18n prop in MDEProvider.
|
|
200
216
|
* Each group is optional - only override the keys you need.
|
|
201
217
|
*/
|
|
202
|
-
type
|
|
203
|
-
view?: Partial<
|
|
204
|
-
sort?: Partial<
|
|
205
|
-
search?: Partial<
|
|
206
|
-
filter?: Partial<
|
|
207
|
-
pagination?: Partial<
|
|
218
|
+
type TMDEI18nInput = {
|
|
219
|
+
view?: Partial<TMDEViewOptions>;
|
|
220
|
+
sort?: Partial<TMDESortOptions>;
|
|
221
|
+
search?: Partial<TMDESearchOptions>;
|
|
222
|
+
filter?: Partial<TMDEFilterOptions>;
|
|
223
|
+
pagination?: Partial<TMDEPaginationOptions>;
|
|
208
224
|
};
|
|
209
225
|
|
|
210
226
|
/**
|
|
@@ -239,23 +255,23 @@ type TDefaultParams = {
|
|
|
239
255
|
/**
|
|
240
256
|
* The default page number.
|
|
241
257
|
*/
|
|
242
|
-
page
|
|
258
|
+
page: number;
|
|
243
259
|
/**
|
|
244
260
|
* The default page size.
|
|
245
261
|
*/
|
|
246
|
-
pageSize
|
|
262
|
+
pageSize: number;
|
|
247
263
|
/**
|
|
248
264
|
* The default sorts.
|
|
249
265
|
*/
|
|
250
|
-
sorts
|
|
266
|
+
sorts: TSortCondition[];
|
|
251
267
|
/**
|
|
252
268
|
* The default search.
|
|
253
269
|
*/
|
|
254
|
-
search
|
|
270
|
+
search: TSearchCondition;
|
|
255
271
|
/**
|
|
256
272
|
* The default filters.
|
|
257
273
|
*/
|
|
258
|
-
filters
|
|
274
|
+
filters: TFilterCondition[];
|
|
259
275
|
};
|
|
260
276
|
/**
|
|
261
277
|
* Pagination configuration passed to DataTable context.
|
|
@@ -271,9 +287,13 @@ type TPaginationProps = {
|
|
|
271
287
|
recordsPerPageOptions: number[];
|
|
272
288
|
};
|
|
273
289
|
/**
|
|
274
|
-
*
|
|
290
|
+
* Stable configuration context — rarely changes after mount.
|
|
275
291
|
*/
|
|
276
|
-
type
|
|
292
|
+
type TMDEConfigContextProps<T = Record<string, unknown>> = {
|
|
293
|
+
/**
|
|
294
|
+
* Adapter for query params state management (nuqs, TanStack Router, etc.).
|
|
295
|
+
*/
|
|
296
|
+
queryParamsAdapter: TQueryParamsAdapter;
|
|
277
297
|
/**
|
|
278
298
|
* The keys of the URL parameters.
|
|
279
299
|
* Useful for multiple data tables on the same page.
|
|
@@ -283,21 +303,28 @@ type TDteContextProps<T = Record<string, unknown>> = {
|
|
|
283
303
|
* The default parameters of the data table.
|
|
284
304
|
*/
|
|
285
305
|
defaultParams?: TDefaultParams;
|
|
286
|
-
/**
|
|
287
|
-
* The key of the column store.
|
|
288
|
-
* This is used to store the columns of the data table in localStorage for draggable and toggleable columns.
|
|
289
|
-
* Event if you don't want to use the draggable and toggleable columns, you should set this key.
|
|
290
|
-
*/
|
|
291
|
-
storeColumnsKey: string;
|
|
292
306
|
/**
|
|
293
307
|
* The columns of the data table.
|
|
294
308
|
* This is use original column properties from mantine-datatable with "extend" property.
|
|
295
309
|
*/
|
|
296
|
-
columns:
|
|
310
|
+
columns: TMDEColumnProps<T>[];
|
|
297
311
|
/**
|
|
298
312
|
* The result of the useDataTableColumns hook from mantine-datatable.
|
|
299
313
|
*/
|
|
300
|
-
|
|
314
|
+
useDataTableColumnsResult: ReturnType<typeof useDataTableColumns<T>> & {
|
|
315
|
+
key: string;
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* Internationalization strings for all DataTable components.
|
|
319
|
+
* In context: merged result (always present).
|
|
320
|
+
* In provider props: optional input, merged with defaults.
|
|
321
|
+
*/
|
|
322
|
+
i18n: TMDEI18n;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Mutable pagination context — changes on every data fetch.
|
|
326
|
+
*/
|
|
327
|
+
type TMDEPaginationContextProps = {
|
|
301
328
|
/**
|
|
302
329
|
* The pagination props.
|
|
303
330
|
*/
|
|
@@ -310,19 +337,14 @@ type TDteContextProps<T = Record<string, unknown>> = {
|
|
|
310
337
|
* The function to set the pagination records per page options.
|
|
311
338
|
*/
|
|
312
339
|
setRecordsPerPageOptions?: (recordsPerPageOptions: number[]) => void;
|
|
313
|
-
/**
|
|
314
|
-
* Internationalization strings for all DataTable components.
|
|
315
|
-
* In context: merged result (always present).
|
|
316
|
-
* In provider props: optional input, merged with defaults.
|
|
317
|
-
*/
|
|
318
|
-
i18n: TDteI18n;
|
|
319
340
|
};
|
|
320
341
|
/**
|
|
321
|
-
* Props for
|
|
342
|
+
* Props for MDEProvider. Extends context props but i18n is optional input.
|
|
322
343
|
*/
|
|
323
|
-
type
|
|
344
|
+
type TMDEProviderProps<T = Record<string, unknown>> = Omit<TMDEConfigContextProps<T> & TMDEPaginationContextProps, "i18n" | "paginationProps"> & {
|
|
324
345
|
children: react.ReactNode;
|
|
325
|
-
|
|
346
|
+
paginationProps?: Partial<Pick<TPaginationProps, "recordsPerPageOptions">>;
|
|
347
|
+
i18n?: TMDEI18nInput;
|
|
326
348
|
};
|
|
327
349
|
|
|
328
|
-
export type {
|
|
350
|
+
export type { TQueryParamsAdapter as T, TPaginationProps as a, TMDEColumnProps as b, TUrlKeys as c, TDefaultParams as d, TMDEI18nInput as e, TSortCondition as f, TSearchCondition as g, TFilterCondition as h, TMDEProviderProps as i };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,32 +1,138 @@
|
|
|
1
|
+
import { T as TQueryParamsAdapter, a as TPaginationProps, b as TMDEColumnProps, c as TUrlKeys, d as TDefaultParams, e as TMDEI18nInput, f as TSortCondition, g as TSearchCondition, h as TFilterCondition, i as TMDEProviderProps } from './data-table-provider.type-DPvItGHz.js';
|
|
1
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { T as TDteProviderProps, a as TDteContextProps } from './data-table-provider.type-dlzY73EE.js';
|
|
5
|
-
export { b as TDteColumnProps, c as TDteI18nInput } from './data-table-provider.type-dlzY73EE.js';
|
|
3
|
+
import * as mantine_datatable from 'mantine-datatable';
|
|
4
|
+
import { DataTableProps, DataTablePaginationProps, DataTableSortProps, useDataTableColumns } from 'mantine-datatable';
|
|
6
5
|
import 'react';
|
|
7
6
|
import 'zod';
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Nuqs-based adapter for query params.
|
|
10
|
+
* Syncs state with URL search params via nuqs.
|
|
11
|
+
*/
|
|
12
|
+
declare function createNuqsQueryParamsAdapter(): TQueryParamsAdapter;
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* TanStack Router-based adapter for query params.
|
|
16
|
+
* Syncs state with URL search params via useSearch and useNavigate.
|
|
17
|
+
* Requires @tanstack/react-router to be installed.
|
|
18
|
+
*/
|
|
19
|
+
declare function createTanStackRouterQueryParamsAdapter(): TQueryParamsAdapter;
|
|
13
20
|
|
|
14
|
-
declare function
|
|
21
|
+
declare function MDEColumnsToggle(): react_jsx_runtime.JSX.Element;
|
|
15
22
|
|
|
16
|
-
type
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
declare function
|
|
23
|
+
type TMantineDatatableExtendedProps<T = Record<string, unknown>> = Omit<DataTableProps<T>, "storeColumnsKey" | "groups" | "columns" | keyof DataTablePaginationProps | keyof DataTableSortProps> & Partial<Pick<TPaginationProps, "totalRecords">>;
|
|
24
|
+
declare function MantineDatatableExtended<T = Record<string, unknown>>(props: TMantineDatatableExtendedProps<T>): react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
declare function MDEFilter(): react_jsx_runtime.JSX.Element;
|
|
27
|
+
|
|
28
|
+
declare function MDEPagination(): false | react_jsx_runtime.JSX.Element;
|
|
20
29
|
|
|
21
|
-
declare function
|
|
30
|
+
declare function MDESearch(): react_jsx_runtime.JSX.Element;
|
|
22
31
|
|
|
23
|
-
declare function
|
|
32
|
+
declare function MDESortList(): react_jsx_runtime.JSX.Element;
|
|
33
|
+
|
|
34
|
+
type TUseMDEInputs<T = Record<string, unknown>> = {
|
|
35
|
+
/**
|
|
36
|
+
* The columns to display in the data table.
|
|
37
|
+
*/
|
|
38
|
+
columns: TMDEColumnProps<T>[];
|
|
39
|
+
/**
|
|
40
|
+
* The query params adapter to use for the data table.
|
|
41
|
+
*/
|
|
42
|
+
queryParamsAdapter: TQueryParamsAdapter;
|
|
43
|
+
/**
|
|
44
|
+
* The props to pass to the useDataTableColumns hook.
|
|
45
|
+
*/
|
|
46
|
+
useDataTableColumnsProps?: Parameters<typeof useDataTableColumns<T>>[0];
|
|
47
|
+
/**
|
|
48
|
+
* The url keys to use for the data table.
|
|
49
|
+
*/
|
|
50
|
+
urlKeys?: Partial<TUrlKeys>;
|
|
51
|
+
/**
|
|
52
|
+
* The default params to use for the data table.
|
|
53
|
+
*/
|
|
54
|
+
defaultParams?: Partial<TDefaultParams>;
|
|
55
|
+
/**
|
|
56
|
+
* The pagination props to use for the data table.
|
|
57
|
+
*/
|
|
58
|
+
paginationProps?: Partial<Pick<TPaginationProps, "recordsPerPageOptions">>;
|
|
59
|
+
/**
|
|
60
|
+
* The i18n to use for the data table.
|
|
61
|
+
*/
|
|
62
|
+
i18n?: Partial<TMDEI18nInput>;
|
|
63
|
+
};
|
|
64
|
+
declare function useMDE<T = Record<string, unknown>>({ useDataTableColumnsProps, columns, queryParamsAdapter, urlKeys, defaultParams, paginationProps, i18n, }: TUseMDEInputs<T>): {
|
|
65
|
+
columns: TMDEColumnProps<T>[];
|
|
66
|
+
urlKeys: {
|
|
67
|
+
page: string;
|
|
68
|
+
pageSize: string;
|
|
69
|
+
sorts: string;
|
|
70
|
+
search: string;
|
|
71
|
+
filters: string;
|
|
72
|
+
};
|
|
73
|
+
defaultParams: {
|
|
74
|
+
page: number;
|
|
75
|
+
pageSize: number;
|
|
76
|
+
sorts: TSortCondition[];
|
|
77
|
+
search: TSearchCondition;
|
|
78
|
+
filters: TFilterCondition[];
|
|
79
|
+
};
|
|
80
|
+
i18n: any;
|
|
81
|
+
queryParamsAdapter: TQueryParamsAdapter;
|
|
82
|
+
useDataTableColumnsResult: {
|
|
83
|
+
key: string;
|
|
84
|
+
effectiveColumns: mantine_datatable.DataTableColumn<T>[];
|
|
85
|
+
setColumnsOrder: (order: string[] | ((prev: string[]) => string[])) => void;
|
|
86
|
+
columnsOrder: string[];
|
|
87
|
+
resetColumnsOrder: () => void;
|
|
88
|
+
columnsToggle: mantine_datatable.DataTableColumnToggle[];
|
|
89
|
+
setColumnsToggle: (toggle: mantine_datatable.DataTableColumnToggle[] | ((prev: mantine_datatable.DataTableColumnToggle[]) => mantine_datatable.DataTableColumnToggle[])) => void;
|
|
90
|
+
resetColumnsToggle: () => void;
|
|
91
|
+
columnsWidth: {
|
|
92
|
+
[x: string]: string | number;
|
|
93
|
+
}[];
|
|
94
|
+
setColumnsWidth: (updates: {
|
|
95
|
+
accessor: string;
|
|
96
|
+
width: string | number;
|
|
97
|
+
}[]) => void;
|
|
98
|
+
setColumnWidth: (accessor: string, width: string | number) => void;
|
|
99
|
+
setMultipleColumnWidths: (updates: {
|
|
100
|
+
accessor: string;
|
|
101
|
+
width: string | number;
|
|
102
|
+
}[]) => void;
|
|
103
|
+
resetColumnsWidth: () => void;
|
|
104
|
+
hasResizableColumns: boolean;
|
|
105
|
+
allResizableWidthsInitial: boolean;
|
|
106
|
+
measureAndSetColumnWidths: () => void;
|
|
107
|
+
};
|
|
108
|
+
paginationProps: {
|
|
109
|
+
recordsPerPageOptions: number[];
|
|
110
|
+
};
|
|
111
|
+
};
|
|
24
112
|
|
|
25
|
-
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
* @returns Use this hook to get/set page number.
|
|
116
|
+
*/
|
|
117
|
+
declare function useMDEPage(): {
|
|
26
118
|
page: number;
|
|
27
|
-
setPage: (value: number
|
|
119
|
+
setPage: (value: number) => void;
|
|
120
|
+
resetPage: () => void;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
*
|
|
124
|
+
* @returns Use this hook to get/set page size.
|
|
125
|
+
*/
|
|
126
|
+
declare function useMDEPageSize(): {
|
|
28
127
|
pageSize: number;
|
|
29
|
-
setPageSize: (value: number
|
|
128
|
+
setPageSize: (value: number) => void;
|
|
129
|
+
resetPageSize: () => void;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @returns Use this hook to get/set sorts.
|
|
134
|
+
*/
|
|
135
|
+
declare function useMDESorts(): {
|
|
30
136
|
sorts: {
|
|
31
137
|
accessor: string;
|
|
32
138
|
direction: "asc" | "desc";
|
|
@@ -34,13 +140,14 @@ declare function useDteQueryParams(): {
|
|
|
34
140
|
setSorts: (value: {
|
|
35
141
|
accessor: string;
|
|
36
142
|
direction: "asc" | "desc";
|
|
37
|
-
}[]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
143
|
+
}[]) => void;
|
|
144
|
+
resetSorts: () => void;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
*
|
|
148
|
+
* @returns Use this hook to get/set search.
|
|
149
|
+
*/
|
|
150
|
+
declare function useMDESearch(): {
|
|
44
151
|
search: {
|
|
45
152
|
accessors: string[];
|
|
46
153
|
value: string;
|
|
@@ -48,31 +155,61 @@ declare function useDteQueryParams(): {
|
|
|
48
155
|
setSearch: (value: {
|
|
49
156
|
accessors: string[];
|
|
50
157
|
value: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
158
|
+
}) => void;
|
|
159
|
+
resetSearch: () => void;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
*
|
|
163
|
+
* @returns Use this hook to get/set filters.
|
|
164
|
+
*/
|
|
165
|
+
declare function useMDEFilters(): {
|
|
58
166
|
filters: {
|
|
59
|
-
variant: "number" | "text" | "
|
|
167
|
+
variant: "number" | "text" | "number_range" | "date" | "date_range" | "single_select" | "multi_select";
|
|
60
168
|
accessor: string;
|
|
61
169
|
value: string | string[];
|
|
62
170
|
}[];
|
|
63
171
|
setFilters: (value: {
|
|
64
|
-
variant: "number" | "text" | "
|
|
172
|
+
variant: "number" | "text" | "number_range" | "date" | "date_range" | "single_select" | "multi_select";
|
|
65
173
|
accessor: string;
|
|
66
174
|
value: string | string[];
|
|
67
|
-
}[]
|
|
68
|
-
|
|
175
|
+
}[]) => void;
|
|
176
|
+
resetFilters: () => void;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
*
|
|
180
|
+
* @returns Use this hook to get/set all query parameters.
|
|
181
|
+
*/
|
|
182
|
+
declare function useMDEQueryParams(): {
|
|
183
|
+
page: number;
|
|
184
|
+
setPage: (value: number) => void;
|
|
185
|
+
pageSize: number;
|
|
186
|
+
setPageSize: (value: number) => void;
|
|
187
|
+
sorts: {
|
|
188
|
+
accessor: string;
|
|
189
|
+
direction: "asc" | "desc";
|
|
190
|
+
}[];
|
|
191
|
+
setSorts: (value: {
|
|
192
|
+
accessor: string;
|
|
193
|
+
direction: "asc" | "desc";
|
|
194
|
+
}[]) => void;
|
|
195
|
+
search: {
|
|
196
|
+
accessors: string[];
|
|
197
|
+
value: string;
|
|
198
|
+
};
|
|
199
|
+
setSearch: (value: {
|
|
200
|
+
accessors: string[];
|
|
201
|
+
value: string;
|
|
202
|
+
}) => void;
|
|
203
|
+
filters: {
|
|
204
|
+
variant: "number" | "text" | "number_range" | "date" | "date_range" | "single_select" | "multi_select";
|
|
69
205
|
accessor: string;
|
|
70
206
|
value: string | string[];
|
|
71
|
-
}[]
|
|
72
|
-
|
|
207
|
+
}[];
|
|
208
|
+
setFilters: (value: {
|
|
209
|
+
variant: "number" | "text" | "number_range" | "date" | "date_range" | "single_select" | "multi_select";
|
|
73
210
|
accessor: string;
|
|
74
211
|
value: string | string[];
|
|
75
|
-
}[]
|
|
212
|
+
}[]) => void;
|
|
76
213
|
resetPage: () => void;
|
|
77
214
|
resetPageSize: () => void;
|
|
78
215
|
resetSorts: () => void;
|
|
@@ -81,7 +218,12 @@ declare function useDteQueryParams(): {
|
|
|
81
218
|
resetAll: () => void;
|
|
82
219
|
};
|
|
83
220
|
|
|
84
|
-
declare function
|
|
85
|
-
|
|
221
|
+
declare function MDEProvider<T = Record<string, unknown>>({ children, queryParamsAdapter, urlKeys, defaultParams, columns, useDataTableColumnsResult, i18n: i18nInput, paginationProps, }: TMDEProviderProps<T>): react_jsx_runtime.JSX.Element;
|
|
222
|
+
|
|
223
|
+
type TCreateMDEColumnsHelperProps<T = Record<string, unknown>> = () => TMDEColumnProps<T>[];
|
|
224
|
+
/**
|
|
225
|
+
* A helper function to create columns for the data table.
|
|
226
|
+
*/
|
|
227
|
+
declare function createMDEColumnsHelper<T = Record<string, unknown>>(getColumns: TCreateMDEColumnsHelperProps<T>): TMDEColumnProps<T>[];
|
|
86
228
|
|
|
87
|
-
export {
|
|
229
|
+
export { MDEColumnsToggle, MDEFilter, MDEPagination, MDEProvider, MDESearch, MDESortList, MantineDatatableExtended, createMDEColumnsHelper, createNuqsQueryParamsAdapter, createTanStackRouterQueryParamsAdapter, useMDE, useMDEFilters, useMDEPage, useMDEPageSize, useMDEQueryParams, useMDESearch, useMDESorts };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use no memo";
|
|
1
2
|
"use client";
|
|
2
|
-
import {Popover,Button,TextInput,Divider,ScrollArea,Stack,Checkbox,Group,Text,NativeSelect,Space,Pagination,CloseButton,Badge,Indicator,NumberInput,RangeSlider,ActionIcon,Select}from'@mantine/core';import {IconAdjustmentsHorizontal,IconSearch,IconX,IconArrowsSort,IconPlus,IconRefresh,IconFilter,IconTrash,IconGripHorizontal}from'@tabler/icons-react';import {createContext,useContext,useState,useMemo,useEffect}from'react';import {jsx,jsxs}from'react/jsx-runtime';import {DataTable}from'mantine-datatable';import {useQueryState,parseAsInteger,parseAsJson}from'nuqs';import we,{z}from'zod';import {DatePicker}from'@mantine/dates';import L from'dayjs';import {DragDropProvider}from'@dnd-kit/react';import {isSortable,useSortable}from'@dnd-kit/react/sortable';var B={view:{columnsToggle:"Columns Toggle",columnsToggleSearchPlaceholder:"Search columns\u2026"},sort:{sort:"Sort",addSort:"Add Sort",resetSort:"Reset Sort",asc:"Asc",desc:"Desc"},search:{search:"Search",searchAccessorsSearchPlaceholder:"Search columns\u2026"},filter:{resetFilter:"Reset Filters"},pagination:{rowsPerPage:"Rows per page",pageOfTotalPages:["Page","of"],startEndRecordOfTotalRecords:["","-","/"]}};var Te=createContext(void 0);function P(){let o=useContext(Te);if(!o)throw new Error("useDteContext must be used within a DteProvider");return o}function $e({children:o,urlKeys:e,defaultParams:l,storeColumnsKey:i,columns:a,originalUseDataTableColumnsResult:s,i18n:r}){if(!i)throw new Error("storeColumnsKey property is required");if(!a)throw new Error("columns property is required");let[m,p]=useState(0),[u,t]=useState([10,20,30,40,50]),c=useMemo(()=>({totalRecords:m,recordsPerPageOptions:u}),[m,u]),h=useMemo(()=>({view:{...B.view,...r?.view},sort:{...B.sort,...r?.sort},search:{...B.search,...r?.search},filter:{...B.filter,...r?.filter},pagination:{...B.pagination,...r?.pagination}}),[r]),g=useMemo(()=>({urlKeys:e,defaultParams:l,storeColumnsKey:i,columns:a,originalUseDataTableColumnsResult:s,paginationProps:c,setTotalRecords:p,setRecordsPerPageOptions:t,i18n:h}),[e,l,i,a,s,c,h]);return jsx(Te.Provider,{value:{...g},children:o})}function st(){let{originalUseDataTableColumnsResult:o,i18n:e}=P(),{effectiveColumns:l,columnsToggle:i,setColumnsToggle:a}=o,[s,r]=useState(""),m=useMemo(()=>i.filter(t=>t.toggleable),[i]),p=useMemo(()=>{if(!s.trim())return m;let t=s.toLowerCase().trim();return m.filter(c=>(l.find(g=>g.accessor===c.accessor)?.title?.toString()??"").toLowerCase().includes(t))},[m,l,s]),u=t=>{a(i.map(c=>c.accessor===t.accessor?{...c,toggled:!c.toggled}:c));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Button,{leftSection:jsx(IconAdjustmentsHorizontal,{size:16}),variant:"default",children:e.view.columnsToggle})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:t=>r(t.target.value),p:"4",placeholder:e.view.columnsToggleSearchPlaceholder,styles:{input:{border:"none"}},value:s}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:p.map(t=>jsx(Checkbox,{checked:t.toggled,classNames:{root:"mantine-dte-checkbox-root",body:"mantine-dte-checkbox-body",labelWrapper:"mantine-dte-checkbox-label-wrapper",label:"mantine-dte-checkbox-label",input:"mantine-dte-checkbox-input",icon:"mantine-dte-checkbox-icon"},label:l.find(c=>c.accessor===t.accessor)?.title?.toString()??"",labelPosition:"left",onChange:()=>u(t),size:"xs",variant:"outline"},t.accessor))})})]})]})}function it(o){let{storeColumnsKey:e,originalUseDataTableColumnsResult:l}=P(),{effectiveColumns:i}=l,a={...o,columns:i,storeColumnsKey:e};return jsx(DataTable,{...a})}var N={ASC:"asc",DESC:"desc"},F={TEXT:"text",NUMBER:"number",NUMBER_RANGE:"number_range",DATE:"date",DATE_RANGE:"date_range",SINGLE_SELECT:"single_select",MULTI_SELECT:"multi_select"};var ve=z.object({accessor:z.string(),direction:z.enum(N)}),Pe=z.object({accessors:z.array(z.string()),value:z.string()}),be=z.object({variant:z.enum(F),accessor:z.string(),value:z.union([z.string(),z.array(z.string())])});function D(){let o={page:"page",pageSize:"pageSize",sorts:"sorts",search:"search",filters:"filters"},e={page:1,pageSize:10,sorts:[],search:{accessors:[],value:""},filters:[]},{urlKeys:l,defaultParams:i}=P();l&&(o=l),i&&(e={...e,...i});let[a,s]=useQueryState(o.page,parseAsInteger.withDefault(e.page)),[r,m]=useQueryState(o.pageSize,parseAsInteger.withDefault(e.pageSize)),[p,u]=useQueryState(o.sorts,parseAsJson(we.array(ve)).withDefault(e.sorts)),[t,c]=useQueryState(o.search,parseAsJson(Pe).withDefault(e.search)),[h,g]=useQueryState(o.filters,parseAsJson(we.array(be)).withDefault(e.filters)),f=()=>{s(e.page);},n=()=>{m(e.pageSize);},d=()=>{u(e.sorts);},b=()=>{c(e.search);},T=()=>{g(e.filters);};return {page:a,setPage:s,pageSize:r,setPageSize:m,sorts:p,setSorts:u,search:t,setSearch:c,filters:h,setFilters:g,resetPage:f,resetPageSize:n,resetSorts:d,resetSearch:b,resetFilters:T,resetAll:()=>{f(),n(),d(),b(),T();}}}function Fe({column:o}){let e=o.accessor,l=o.extend?.filterVariant,{filters:i,setFilters:a}=D(),s=i.find(c=>c.accessor===e),r=s?.value?1:0,[m,p]=useState(s?L(Number.parseInt(s.value,10)).toISOString():null),u=c=>{if(p(c),c){let h=L(c).valueOf().toString();a(s?i.map(g=>g.accessor===e?{...g,value:h}:g):[...i,{variant:l,accessor:e,value:h}]);}},t=()=>{p(null),a(i.filter(c=>c.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:r<=0,processing:true,children:jsxs(Button.Group,{children:[r>0&&jsx(Button,{onClick:t,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{defaultDate:m?new Date(m):void 0,onChange:u,value:m})})]})}function Re({column:o}){let e=o.accessor,l=o.extend?.filterVariant,{filters:i,setFilters:a}=D(),s=i.find(h=>h.accessor===e),r=s?.value.length??0,[m,p]=useState(s?.value[0]&&s?.value[1]?[L(Number.parseInt(s.value[0],10)).toISOString(),L(Number.parseInt(s.value[1],10)).toISOString()]:[null,null]),u=([h,g])=>{if(p([h,g]),h&&g){let[f,n]=[L(h).valueOf().toString(),L(g).valueOf().toString()];a(s?i.map(d=>d.accessor===e?{...d,value:[f,n]}:d):[...i,{variant:l,accessor:e,value:[f,n]}]);}},t=()=>{p([null,null]),a(i.filter(h=>h.accessor!==e));},c=m[1]&&m[0];return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:r<=0,processing:true,children:jsxs(Button.Group,{children:[r>0&&jsx(Button,{onClick:t,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{allowSingleDateInRange:true,defaultDate:c?new Date(c):void 0,onChange:u,type:"range",value:m})})]})}function Ee({column:o}){let e=o.accessor,l=o.extend?.filterVariant,a=(o.extend?.filterOptions).data,[s,r]=useState(""),m=useMemo(()=>{if(!s.trim())return a;let n=s.toLowerCase().trim();return a.filter(d=>d.label.toLowerCase().includes(n))},[a,s]),{filters:p,setFilters:u}=D(),t=p.find(n=>n.accessor===e),c=t?.value.length??0,h=n=>{let d=t?.value??[],b=d.includes(n)?d.filter(T=>T!==n):[...d,n];if(b.length===0)u(p.filter(T=>T.accessor!==e));else {let T=p.some(S=>S.accessor===e);u(T?p.map(S=>S.accessor===e?{...S,value:b}:S):[...p,{variant:l,accessor:e,value:b}]);}},g=n=>p.some(d=>d.accessor===e&&d.value.includes(n)),f=()=>{u(p.filter(n=>n.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:c<=0,processing:true,children:jsxs(Button.Group,{children:[c>0&&jsx(Button,{onClick:f,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:n=>r(n.target.value),p:"4",styles:{input:{border:"none"}},value:s}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:m.map(n=>jsx(Checkbox,{checked:g(n.value),classNames:{root:"mantine-dte-checkbox-root",body:"mantine-dte-checkbox-body",labelWrapper:"mantine-dte-checkbox-label-wrapper",label:"mantine-dte-checkbox-label",input:"mantine-dte-checkbox-input",icon:"mantine-dte-checkbox-icon"},label:n.label,labelPosition:"left",onChange:()=>h(n.value),size:"xs",styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},`${e}-${n.value}`))})})]})]})}function Ae({column:o}){let e=o.accessor,l=o.extend?.filterVariant,{filters:i,setFilters:a}=D(),s=i.find(t=>t.accessor===e),r=s?.value.length??0,m=t=>{a(s?i.map(c=>c.accessor===e?{...c,value:t.toString()}:c):[...i,{variant:l,accessor:e,value:t.toString()}]);},p=t=>{let c=t;typeof t=="string"&&(c=Number.parseInt(t,10)),m(c);},u=()=>{a(i.filter(t=>t.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:r<=0,processing:true,children:jsxs(Button.Group,{children:[r>0&&jsx(Button,{onClick:u,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsx(Popover.Dropdown,{p:"0",children:jsx(NumberInput,{autoFocus:true,leftSection:jsx(IconFilter,{size:16}),onChange:t=>p(t),p:"4",value:s?.value?Number.parseInt(s.value,10):void 0,variant:"unstyled"})})]})}function Oe({column:o}){let e=o.accessor,l=o.extend?.filterVariant,{min:i,max:a,step:s=1,minRange:r=1,suffix:m}=o.extend?.filterOptions,{filters:p,setFilters:u}=D(),t=p.find(T=>T.accessor===e),c=t?.value.length??0,h=T=>{let[S,k]=[T[0].toString(),T[1].toString()];u(t?p.map(X=>X.accessor===e?{...X,value:[S,k]}:X):[...p,{variant:l,accessor:e,value:[S,k]}]);},g=t?.value[0]&&t?.value[1]?[Number.parseInt(t.value[0],10),Number.parseInt(t.value[1],10)]:[i,a],f=([T,S])=>{h([T,S]);},n=T=>{let S=typeof T=="string"?Number.parseInt(T,10)||i:T,k=Math.min(Math.max(S,i),g[1]);h([k,g[1]]);},d=T=>{let S=typeof T=="string"?Number.parseInt(T,10)||a:T,k=Math.max(Math.min(S,a),g[0]);h([g[0],k]);},b=()=>{u(p.filter(T=>T.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:c<=0,processing:true,children:jsxs(Button.Group,{children:[c>0&&jsx(Button,{onClick:b,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsx(Popover.Dropdown,{p:"xs",children:jsxs(Stack,{gap:"md",children:[jsxs(Group,{grow:true,children:[jsx(NumberInput,{max:g[1],min:i,onChange:n,step:s,suffix:m,value:g[0]}),jsx(NumberInput,{max:a,min:g[0],onChange:d,step:s,suffix:m,value:g[1]})]}),jsx(RangeSlider,{label:null,max:a,min:i,minRange:r,onChange:f,step:s,value:g})]})})]})}function Ve({column:o}){let e=o.accessor,l=o.extend?.filterVariant,a=(o.extend?.filterOptions).data,[s,r]=useState(""),m=useMemo(()=>{if(!s.trim())return a;let n=s.toLowerCase().trim();return a.filter(d=>d.label.toLowerCase().includes(n))},[a,s]),{filters:p,setFilters:u}=D(),t=p.find(n=>n.accessor===e),c=t?.value.length??0,h=n=>{u(t?p.map(d=>d.accessor===e?{...d,value:n}:d):[...p,{variant:l,accessor:e,value:n}]);},g=n=>t?.value===n,f=()=>{u(p.filter(n=>n.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:c<=0,processing:true,children:jsxs(Button.Group,{children:[c>0&&jsx(Button,{onClick:f,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:n=>r(n.target.value),p:"4",styles:{input:{border:"none"}},value:s}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:m.map(n=>jsx(Checkbox,{checked:g(n.value),classNames:{root:"mantine-dte-checkbox-root",body:"mantine-dte-checkbox-body",labelWrapper:"mantine-dte-checkbox-label-wrapper",label:"mantine-dte-checkbox-label",input:"mantine-dte-checkbox-input",icon:"mantine-dte-checkbox-icon"},label:n.label,labelPosition:"left",onChange:()=>h(n.value),radius:"xl",size:"xs",styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}}},`${e}-${n.value}`))})})]})]})}function Ne({column:o}){let e=o.accessor,l=o.extend?.filterVariant,{filters:i,setFilters:a}=D(),s=i.find(t=>t.accessor===e),r=s?.value.length??0,m=t=>{a(s?t===""?i.filter(c=>c.accessor!==e):i.map(c=>c.accessor===e?{...c,value:t}:c):[...i,{variant:l,accessor:e,value:t}]);},p=t=>{m(t);},u=()=>{a(i.filter(t=>t.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:r<=0,processing:true,children:jsxs(Button.Group,{children:[r>0&&jsx(Button,{onClick:u,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:o.title})]})})}),jsx(Popover.Dropdown,{p:"0",children:jsx(TextInput,{autoFocus:true,leftSection:jsx(IconFilter,{size:16}),onChange:t=>p(t.target.value),p:"4",value:s?.value??"",variant:"unstyled"})})]})}function jt(){let{filters:o,resetFilters:e}=D(),{columns:l,i18n:i}=P(),a=()=>{e();},s=l.filter(r=>r.extend?.filterable);return jsxs(Group,{gap:"xs",children:[s.map(r=>{switch(r.extend?.filterVariant){case F.TEXT:return jsx(Ne,{column:r},r.accessor);case F.NUMBER:return jsx(Ae,{column:r},r.accessor);case F.SINGLE_SELECT:return jsx(Ve,{column:r},r.accessor);case F.MULTI_SELECT:return jsx(Ee,{column:r},r.accessor);case F.DATE:return jsx(Fe,{column:r},r.accessor);case F.DATE_RANGE:return jsx(Re,{column:r},r.accessor);case F.NUMBER_RANGE:return jsx(Oe,{column:r},r.accessor);default:return null}}),o.length>0&&jsx(Button,{color:"red",leftSection:jsx(IconX,{size:16}),onClick:a,variant:"outline",children:i.filter.resetFilter})]})}var no=[10,20,30,40,50];function so({recordsPerPageOptions:o=no}){let{page:e,pageSize:l,setPage:i,setPageSize:a}=D(),{paginationProps:s,i18n:r}=P(),{totalRecords:m}=s||{},[p,u]=useState(0),[{startRecord:t,endRecord:c},h]=useState({startRecord:0,endRecord:0});return useEffect(()=>{u(Math.ceil((m||0)/(l||(o[0]??10))));},[m,l,o]),useEffect(()=>{h({startRecord:(e-1)*l+1,endRecord:Math.min(e*l,m||0)});},[e,l,m]),p>0&&jsxs(Group,{align:"center",justify:"space-between",children:[jsx(Group,{children:jsxs(Text,{size:"sm",children:[r.pagination.startEndRecordOfTotalRecords[0]," ",t," ",r.pagination.startEndRecordOfTotalRecords[1]," ",c," ",r.pagination.startEndRecordOfTotalRecords[2]," ",m]})}),jsxs(Group,{children:[jsx(Text,{size:"sm",children:r.pagination.rowsPerPage}),jsx(NativeSelect,{data:o.map(g=>({label:g.toString(),value:g.toString()})),onChange:g=>a(Number(g.target.value)),size:"xs",value:l,w:70}),jsx(Space,{w:"md"}),jsxs(Text,{size:"sm",children:[r.pagination.pageOfTotalPages[0]," ",e," ",r.pagination.pageOfTotalPages[1]," ",p]}),jsx(Pagination,{onChange:g=>i(g),size:"sm",total:p,value:e,withControls:true,withEdges:true})]})]})}function To(){let{columns:o,i18n:e}=P(),{search:l,setSearch:i}=D(),a=l.accessors.length,[s,r]=useState(""),m=useMemo(()=>o.filter(t=>t.extend?.searchable),[o]),p=useMemo(()=>{if(!s.trim())return m;let t=s.toLowerCase().trim();return m.filter(c=>(c.title?.toString()??"").toLowerCase().includes(t))},[m,s]),u=t=>{l.accessors.includes(t)?i({...l,accessors:l.accessors.filter(c=>c!==t)}):i({...l,accessors:[...l.accessors,t]});};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{color:"transparent",disabled:a<=0,label:jsx(Badge,{circle:true,size:"xs",variant:"outline",children:a}),children:jsx(ActionIcon,{size:36,variant:"default",children:jsx(IconSearch,{size:16})})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:t=>r(t.target.value),p:"4",placeholder:e.search.searchAccessorsSearchPlaceholder,styles:{input:{border:"none"}},value:s}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:p.map(t=>jsx(Checkbox,{checked:l.accessors.includes(t.accessor.toString()),classNames:{root:"mantine-dte-checkbox-root",body:"mantine-dte-checkbox-body",labelWrapper:"mantine-dte-checkbox-label-wrapper",label:"mantine-dte-checkbox-label",input:"mantine-dte-checkbox-input",icon:"mantine-dte-checkbox-icon"},label:t.title?.toString()??"",labelPosition:"left",onChange:()=>u(t.accessor.toString()),size:"xs",variant:"outline"},t.accessor.toString()))})})]})]})}function Do(){let{search:o,setSearch:e}=D(),{i18n:l}=P(),i=a=>{e({...o,value:a});};return jsxs(Group,{gap:"xs",children:[jsx(To,{}),jsx(TextInput,{onChange:a=>i(a.target.value),placeholder:l.search.search,rightSection:o.value.length>0&&jsx(CloseButton,{onClick:()=>i(""),size:"sm",variant:"transparent"}),value:o.value,w:"200px"})]})}function Eo({sort:o,index:e,sortableColumns:l,onAccessorChange:i,onDirectionChange:a,onRemoveSort:s}){let{i18n:r}=P(),{ref:m,handleRef:p}=useSortable({id:o.accessor,index:e});return jsxs(Group,{align:"center",gap:"xs",ref:m,wrap:"nowrap",children:[jsx(Select,{checkIconPosition:"right",comboboxProps:{withinPortal:false},data:l.map(u=>({label:u.title?.toString()??"",value:u.accessor})),onChange:u=>i(o.accessor,u),searchable:true,size:"xs",value:o.accessor}),jsx(Select,{checkIconPosition:"right",comboboxProps:{withinPortal:false},data:Object.values(N).map(u=>({label:r.sort[u]??"",value:u})),onChange:u=>a(o.accessor,u),size:"xs",value:o.direction}),jsx(ActionIcon,{"aria-label":"Remove sort",onClick:()=>s(o.accessor),size:"md",variant:"default",children:jsx(IconTrash,{size:16})}),jsx(ActionIcon,{"aria-label":"Drag to reorder",ref:p,size:"md",style:{cursor:"grab",flexShrink:0},variant:"default",children:jsx(IconGripHorizontal,{size:16})})]})}function Io(){let{sorts:o,setSorts:e,resetSorts:l}=D(),{columns:i,i18n:a}=P(),s=i.filter(f=>f.extend?.sortable),r=s.filter(f=>!o.some(n=>n.accessor===f.accessor)),m=o.length,p=()=>{if(r.length>0&&r[0]){let f={accessor:r[0].accessor,direction:N.ASC};e([...o,f]);}},u=()=>{l();},t=f=>{e(o.filter(n=>n.accessor!==f));},c=(f,n)=>{if(n===null)return;let d=o.filter(b=>b.accessor!==f&&b.accessor!==n);e([...d,{accessor:n,direction:o.find(b=>b.accessor===f)?.direction||N.ASC}]);},h=(f,n)=>{n!==null&&e(o.map(d=>d.accessor===f?{...d,direction:n}:d));},g=f=>{if(f.canceled)return;let{source:n}=f.operation;if(n&&isSortable(n)){let{initialIndex:d,index:b}=n;d!==b&&e(T=>{let S=[...T],[k]=S.splice(d,1);return k&&S.splice(b,0,k),S});}};return jsxs(Popover,{shadow:"md",width:"450px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Button,{leftSection:jsx(IconArrowsSort,{size:16}),rightSection:jsx(Badge,{circle:true,variant:"outline",children:m}),variant:"default",children:a.sort.sort})}),jsxs(Popover.Dropdown,{p:"sm",children:[jsx(DragDropProvider,{onDragEnd:g,children:jsx(Stack,{gap:"xs",children:o.map((f,n)=>jsx(Eo,{index:n,onAccessorChange:c,onDirectionChange:h,onRemoveSort:t,sort:f,sortableColumns:s},f.accessor))})}),jsx(Space,{h:"sm"}),jsxs(Group,{children:[jsx(Button,{color:"dark",disabled:r.length===0,leftSection:jsx(IconPlus,{size:16}),onClick:p,size:"xs",variant:"filled",children:a.sort.addSort}),jsx(Button,{leftSection:jsx(IconRefresh,{size:16}),onClick:u,size:"xs",variant:"default",children:a.sort.resetSort})]})]})]})}export{st as DteColumnsToggle,it as DteExtended,jt as DteFilter,so as DtePagination,$e as DteProvider,Do as DteSearch,Io as DteSortList,P as useDteContext,D as useDteQueryParams};
|
|
3
|
+
import {e,d,c,i,h,j as j$1,f,g,b,a}from'./chunk-EDD26HQ2.mjs';import {useQueryState,parseAsJson,parseAsInteger}from'nuqs';import {z}from'zod';import {useSearch,useNavigate}from'@tanstack/react-router';import {createContext,useMemo,useCallback,useState,useEffect,useContext}from'react';import {Popover,Button,TextInput,Divider,ScrollArea,Stack,Checkbox,Group,Text,NativeSelect,Space,Pagination,CloseButton,Badge,Indicator,NumberInput,RangeSlider,ActionIcon,Select}from'@mantine/core';import {IconAdjustmentsHorizontal,IconSearch,IconX,IconArrowsSort,IconPlus,IconRefresh,IconFilter,IconTrash,IconGripHorizontal}from'@tabler/icons-react';import {jsx,jsxs}from'react/jsx-runtime';import {DataTable,useDataTableColumns}from'mantine-datatable';import {DatePicker}from'@mantine/dates';import re from'dayjs';import {DragDropProvider}from'@dnd-kit/react';import {isSortable,useSortable}from'@dnd-kit/react/sortable';function Ne(){return {usePage:(e,t)=>useQueryState(e,parseAsInteger.withDefault(t)),usePageSize:(e,t)=>useQueryState(e,parseAsInteger.withDefault(t)),useSorts:(e,t)=>useQueryState(e,parseAsJson(z.array(c)).withDefault(t)),useSearch:(e,t)=>useQueryState(e,parseAsJson(d).withDefault(t)),useFilters:(e$1,t)=>useQueryState(e$1,parseAsJson(z.array(e)).withDefault(t))}}function Ve(e,t){if(e==null)return t;let a=Number(e);return Number.isNaN(a)?t:a}function ce(e,t,a){if(e==null)return a;let s=typeof e=="string"?(()=>{try{return JSON.parse(e)}catch{return e}})():e,r=t.safeParse(s);return r.success?r.data:a}function Ge(){return {usePage:(e,t)=>{let a=useSearch({strict:false}),s=useNavigate(),r=useMemo(()=>Ve(a[e],t),[a[e],t,e]),n=useCallback(o=>{s({to:".",search:l=>({...l,[e]:o}),replace:true});},[s,e]);return [r,n]},usePageSize:(e,t)=>{let a=useSearch({strict:false}),s=useNavigate(),r=useMemo(()=>Ve(a[e],t),[a[e],t,e]),n=useCallback(o=>{s({to:".",search:l=>({...l,[e]:o}),replace:true});},[s,e]);return [r,n]},useSorts:(e,t)=>{let a=useSearch({strict:false}),s=useNavigate(),r=useMemo(()=>ce(a[e],z.array(c),t),[a[e],t,e]),n=useCallback(o=>{s({to:".",search:l=>({...l,[e]:o}),replace:true});},[s,e]);return [r,n]},useSearch:(e,t)=>{let a=useSearch({strict:false}),s=useNavigate(),r=useMemo(()=>ce(a[e],d,t),[a[e],t,e]),n=useCallback(o=>{s({to:".",search:l=>({...l,[e]:o}),replace:true});},[s,e]);return [r,n]},useFilters:(e$1,t)=>{let a=useSearch({strict:false}),s=useNavigate(),r=useMemo(()=>ce(a[e$1],z.array(e),t),[a[e$1],t,e$1]),n=useCallback(o=>{s({to:".",search:l=>({...l,[e$1]:o}),replace:true});},[s,e$1]);return [r,n]}}}var He=createContext(void 0);function T(){let e=useContext(He);if(!e)throw new Error("useMDEConfigContext must be used within a MDEProvider");return e}var Ke=createContext(void 0);function Z(){let e=useContext(Ke);if(!e)throw new Error("useMDEPaginationContext must be used within a MDEProvider");return e}function dt({children:e,queryParamsAdapter:t,urlKeys:a,defaultParams:s,columns:r,useDataTableColumnsResult:n,i18n:o,paginationProps:l}){if(!r)throw new Error("columns property is required");if(!t)throw new Error("queryParamsAdapter property is required");let[p,m]=useState(i),[i$1,u]=useState(l?.recordsPerPageOptions??h),P=useMemo(()=>({view:{...j$1.view,...o?.view},sort:{...j$1.sort,...o?.sort},search:{...j$1.search,...o?.search},filter:{...j$1.filter,...o?.filter},pagination:{...j$1.pagination,...o?.pagination}}),[JSON.stringify(o)]),f=useMemo(()=>({queryParamsAdapter:t,urlKeys:a,defaultParams:s,columns:r,useDataTableColumnsResult:n,i18n:P}),[t,JSON.stringify(a),JSON.stringify(s),r,n,P]),g=useCallback(E=>m(E),[]),c=useCallback(E=>u(E),[]),d=useMemo(()=>({paginationProps:{totalRecords:p,recordsPerPageOptions:i$1},setTotalRecords:g,setRecordsPerPageOptions:c}),[p,i$1,g,c]);return jsx(He.Provider,{value:f,children:jsx(Ke.Provider,{value:d,children:e})})}function Ct(){let{useDataTableColumnsResult:e,i18n:t}=T(),{effectiveColumns:a,columnsToggle:s,setColumnsToggle:r}=e,[n,o]=useState(""),l=useMemo(()=>s.filter(i=>i.toggleable),[s]),p=useMemo(()=>{if(!n.trim())return l;let i=n.toLowerCase().trim();return l.filter(u=>(a.find(f=>f.accessor===u.accessor)?.title?.toString()??"").toLowerCase().includes(i))},[l,a,n]),m=i=>{r(s.map(u=>u.accessor===i.accessor?{...u,toggled:!u.toggled}:u));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Button,{leftSection:jsx(IconAdjustmentsHorizontal,{size:16}),variant:"default",children:t.view.columnsToggle})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:i=>o(i.target.value),p:"4",placeholder:t.view.columnsToggleSearchPlaceholder,styles:{input:{border:"none"}},value:n}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:p.map(i=>jsx(Checkbox,{checked:i.toggled,classNames:{root:"mantine-mde-checkbox-root",body:"mantine-mde-checkbox-body",labelWrapper:"mantine-mde-checkbox-label-wrapper",label:"mantine-mde-checkbox-label",input:"mantine-mde-checkbox-input",icon:"mantine-mde-checkbox-icon"},label:a.find(u=>u.accessor===i.accessor)?.title?.toString()??"",labelPosition:"left",onChange:()=>m(i),size:"xs",variant:"outline"},i.accessor))})})]})]})}function wt(e){let{useDataTableColumnsResult:t}=T(),{setTotalRecords:a}=Z(),{effectiveColumns:s}=t,r={...e,columns:s,storeColumnsKey:t.key};return useEffect(()=>{a?.(e.totalRecords??i);},[e.totalRecords,a]),jsx(DataTable,{...r})}function j(){let{queryParamsAdapter:e,urlKeys:t,defaultParams:a}=T(),s=t?.page??f.page,r=a?.page??g.page,[n,o]=e.usePage(s,r),l=useCallback(()=>o(r),[o,r]);return {page:n,setPage:o,resetPage:l}}function ee(){let{queryParamsAdapter:e,urlKeys:t,defaultParams:a}=T(),s=t?.pageSize??f.pageSize,r=a?.pageSize??g.pageSize,[n,o]=e.usePageSize(s,r),l=useCallback(()=>o(r),[o,r]);return {pageSize:n,setPageSize:o,resetPageSize:l}}function te(){let{queryParamsAdapter:e,urlKeys:t,defaultParams:a}=T(),s=t?.sorts??f.sorts,r=a?.sorts??g.sorts,[n,o]=e.useSorts(s,r),l=useCallback(()=>o(r),[o,r]);return {sorts:n,setSorts:o,resetSorts:l}}function q(){let{queryParamsAdapter:e,urlKeys:t,defaultParams:a}=T(),s=t?.search??f.search,r=a?.search??g.search,[n,o]=e.useSearch(s,r),l=useCallback(()=>o(r),[o,r]);return {search:n,setSearch:o,resetSearch:l}}function D(){let{queryParamsAdapter:e,urlKeys:t,defaultParams:a}=T(),s=t?.filters??f.filters,r=a?.filters??g.filters,[n,o]=e.useFilters(s,r),l=useCallback(()=>o(r),[o,r]);return {filters:n,setFilters:o,resetFilters:l}}function Ft(){let{page:e,setPage:t,resetPage:a}=j(),{pageSize:s,setPageSize:r,resetPageSize:n}=ee(),{sorts:o,setSorts:l,resetSorts:p}=te(),{search:m,setSearch:i,resetSearch:u}=q(),{filters:P,setFilters:f,resetFilters:g}=D(),c=useCallback(()=>{a(),n(),p(),u(),g();},[a,n,p,u,g]);return {page:e,setPage:t,pageSize:s,setPageSize:r,sorts:o,setSorts:l,search:m,setSearch:i,filters:P,setFilters:f,resetPage:a,resetPageSize:n,resetSorts:p,resetSearch:u,resetFilters:g,resetAll:c}}function Ye({column:e}){let t=e.accessor,a=e.extend?.filterVariant,{filters:s,setFilters:r}=D(),n=s.find(u=>u.accessor===t),o=n?.value?1:0,[l,p]=useState(n?re(Number.parseInt(n.value,10)).toISOString():null),m=u=>{if(p(u),u){let P=re(u).valueOf().toString();r(n?s.map(f=>f.accessor===t?{...f,value:P}:f):[...s,{variant:a,accessor:t,value:P}]);}},i=()=>{p(null),r(s.filter(u=>u.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:o<=0,processing:true,children:jsxs(Button.Group,{children:[o>0&&jsx(Button,{onClick:i,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{defaultDate:l?new Date(l):void 0,onChange:m,value:l})})]})}function je({column:e}){let t=e.accessor,a=e.extend?.filterVariant,{filters:s,setFilters:r}=D(),n=s.find(P=>P.accessor===t),o=n?.value.length??0,[l,p]=useState(n?.value[0]&&n?.value[1]?[re(Number.parseInt(n.value[0],10)).toISOString(),re(Number.parseInt(n.value[1],10)).toISOString()]:[null,null]),m=([P,f])=>{if(p([P,f]),P&&f){let[g,c]=[re(P).valueOf().toString(),re(f).valueOf().toString()];r(n?s.map(d=>d.accessor===t?{...d,value:[g,c]}:d):[...s,{variant:a,accessor:t,value:[g,c]}]);}},i=()=>{p([null,null]),r(s.filter(P=>P.accessor!==t));},u=l[1]&&l[0];return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:o<=0,processing:true,children:jsxs(Button.Group,{children:[o>0&&jsx(Button,{onClick:i,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{allowSingleDateInRange:true,defaultDate:u?new Date(u):void 0,onChange:m,type:"range",value:l})})]})}function et({column:e}){let t=e.accessor,a=e.extend?.filterVariant,r=(e.extend?.filterOptions).data,[n,o]=useState(""),l=useMemo(()=>{if(!n.trim())return r;let c=n.toLowerCase().trim();return r.filter(d=>d.label.toLowerCase().includes(c))},[r,n]),{filters:p,setFilters:m}=D(),i=p.find(c=>c.accessor===t),u=i?.value.length??0,P=c=>{let d=i?.value??[],E=d.includes(c)?d.filter(h=>h!==c):[...d,c];if(E.length===0)m(p.filter(h=>h.accessor!==t));else {let h=p.some(b=>b.accessor===t);m(h?p.map(b=>b.accessor===t?{...b,value:E}:b):[...p,{variant:a,accessor:t,value:E}]);}},f=c=>p.some(d=>d.accessor===t&&d.value.includes(c)),g=()=>{m(p.filter(c=>c.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:u<=0,processing:true,children:jsxs(Button.Group,{children:[u>0&&jsx(Button,{onClick:g,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:c=>o(c.target.value),p:"4",styles:{input:{border:"none"}},value:n}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:l.map(c=>jsx(Checkbox,{checked:f(c.value),classNames:{root:"mantine-mde-checkbox-root",body:"mantine-mde-checkbox-body",labelWrapper:"mantine-mde-checkbox-label-wrapper",label:"mantine-mde-checkbox-label",input:"mantine-mde-checkbox-input",icon:"mantine-mde-checkbox-icon"},label:c.label,labelPosition:"left",onChange:()=>P(c.value),size:"xs",styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},`${t}-${c.value}`))})})]})]})}function rt({column:e}){let t=e.accessor,a=e.extend?.filterVariant,{filters:s,setFilters:r}=D(),n=s.find(i=>i.accessor===t),o=n?.value.length??0,l=i=>{r(n?s.map(u=>u.accessor===t?{...u,value:i.toString()}:u):[...s,{variant:a,accessor:t,value:i.toString()}]);},p=i=>{let u=i;typeof i=="string"&&(u=Number.parseInt(i,10)),l(u);},m=()=>{r(s.filter(i=>i.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:o<=0,processing:true,children:jsxs(Button.Group,{children:[o>0&&jsx(Button,{onClick:m,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsx(Popover.Dropdown,{p:"0",children:jsx(NumberInput,{autoFocus:true,leftSection:jsx(IconFilter,{size:16}),onChange:i=>p(i),p:"4",value:n?.value?Number.parseInt(n.value,10):void 0,variant:"unstyled"})})]})}function nt({column:e}){let t=e.accessor,a=e.extend?.filterVariant,{min:s,max:r,step:n=1,minRange:o=1,suffix:l}=e.extend?.filterOptions,{filters:p,setFilters:m}=D(),i=p.find(h=>h.accessor===t),u=i?.value.length??0,P=h=>{let[b,B]=[h[0].toString(),h[1].toString()];m(i?p.map(ae=>ae.accessor===t?{...ae,value:[b,B]}:ae):[...p,{variant:a,accessor:t,value:[b,B]}]);},f=i?.value[0]&&i?.value[1]?[Number.parseInt(i.value[0],10),Number.parseInt(i.value[1],10)]:[s,r],g=([h,b])=>{P([h,b]);},c=h=>{let b=typeof h=="string"?Number.parseInt(h,10)||s:h,B=Math.min(Math.max(b,s),f[1]);P([B,f[1]]);},d=h=>{let b=typeof h=="string"?Number.parseInt(h,10)||r:h,B=Math.max(Math.min(b,r),f[0]);P([f[0],B]);},E=()=>{m(p.filter(h=>h.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:u<=0,processing:true,children:jsxs(Button.Group,{children:[u>0&&jsx(Button,{onClick:E,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsx(Popover.Dropdown,{p:"xs",children:jsxs(Stack,{gap:"md",children:[jsxs(Group,{grow:true,children:[jsx(NumberInput,{max:f[1],min:s,onChange:c,step:n,suffix:l,value:f[0]}),jsx(NumberInput,{max:r,min:f[0],onChange:d,step:n,suffix:l,value:f[1]})]}),jsx(RangeSlider,{label:null,max:r,min:s,minRange:o,onChange:g,step:n,value:f})]})})]})}function st({column:e}){let t=e.accessor,a=e.extend?.filterVariant,r=(e.extend?.filterOptions).data,[n,o]=useState(""),l=useMemo(()=>{if(!n.trim())return r;let c=n.toLowerCase().trim();return r.filter(d=>d.label.toLowerCase().includes(c))},[r,n]),{filters:p,setFilters:m}=D(),i=p.find(c=>c.accessor===t),u=i?.value.length??0,P=c=>{m(i?p.map(d=>d.accessor===t?{...d,value:c}:d):[...p,{variant:a,accessor:t,value:c}]);},f=c=>i?.value===c,g=()=>{m(p.filter(c=>c.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:u<=0,processing:true,children:jsxs(Button.Group,{children:[u>0&&jsx(Button,{onClick:g,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:c=>o(c.target.value),p:"4",styles:{input:{border:"none"}},value:n}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:l.map(c=>jsx(Checkbox,{checked:f(c.value),classNames:{root:"mantine-mde-checkbox-root",body:"mantine-mde-checkbox-body",labelWrapper:"mantine-mde-checkbox-label-wrapper",label:"mantine-mde-checkbox-label",input:"mantine-mde-checkbox-input",icon:"mantine-mde-checkbox-icon"},label:c.label,labelPosition:"left",onChange:()=>P(c.value),radius:"xl",size:"xs",styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}}},`${t}-${c.value}`))})})]})]})}function it({column:e}){let t=e.accessor,a=e.extend?.filterVariant,{filters:s,setFilters:r}=D(),n=s.find(i=>i.accessor===t),o=n?.value.length??0,l=i=>{r(n?i===""?s.filter(u=>u.accessor!==t):s.map(u=>u.accessor===t?{...u,value:i}:u):[...s,{variant:a,accessor:t,value:i}]);},p=i=>{l(i);},m=()=>{r(s.filter(i=>i.accessor!==t));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:o<=0,processing:true,children:jsxs(Button.Group,{children:[o>0&&jsx(Button,{onClick:m,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:e.title})]})})}),jsx(Popover.Dropdown,{p:"0",children:jsx(TextInput,{autoFocus:true,leftSection:jsx(IconFilter,{size:16}),onChange:i=>p(i.target.value),p:"4",value:n?.value??"",variant:"unstyled"})})]})}function Sr(){let{filters:e,resetFilters:t}=D(),{columns:a,i18n:s}=T(),r=()=>{t();},n=a.filter(o=>o.extend?.filterable);return jsxs(Group,{gap:"xs",children:[n.map(o=>{switch(o.extend?.filterVariant){case b.TEXT:return jsx(it,{column:o},o.accessor);case b.NUMBER:return jsx(rt,{column:o},o.accessor);case b.SINGLE_SELECT:return jsx(st,{column:o},o.accessor);case b.MULTI_SELECT:return jsx(et,{column:o},o.accessor);case b.DATE:return jsx(Ye,{column:o},o.accessor);case b.DATE_RANGE:return jsx(je,{column:o},o.accessor);case b.NUMBER_RANGE:return jsx(nt,{column:o},o.accessor);default:return null}}),e.length>0&&jsx(Button,{color:"red",leftSection:jsx(IconX,{size:16}),onClick:r,variant:"outline",children:s.filter.resetFilter})]})}function Mr(){let{page:e,setPage:t}=j(),{pageSize:a,setPageSize:s}=ee(),{paginationProps:r}=Z(),{i18n:n}=T(),{totalRecords:o,recordsPerPageOptions:l}=r||{},p=useMemo(()=>Math.ceil((o||0)/((a||l?.[0])??10)),[o,a,l]),m=(e-1)*a+1,i=Math.min(e*a,o||0);return p>0&&jsxs(Group,{align:"center",justify:"space-between",children:[jsx(Group,{children:jsxs(Text,{size:"sm",children:[n.pagination.startEndRecordOfTotalRecords[0]," ",m," ",n.pagination.startEndRecordOfTotalRecords[1]," ",i," ",n.pagination.startEndRecordOfTotalRecords[2]," ",o]})}),jsxs(Group,{children:[jsx(Text,{size:"sm",children:n.pagination.rowsPerPage}),jsx(NativeSelect,{data:l?.map(u=>({label:u.toString(),value:u.toString()}))||[],onChange:u=>s(Number(u.target.value)),size:"xs",value:a,w:70}),jsx(Space,{w:"md"}),jsxs(Text,{size:"sm",children:[n.pagination.pageOfTotalPages[0]," ",e," ",n.pagination.pageOfTotalPages[1]," ",p]}),jsx(Pagination,{onChange:u=>t(u),size:"sm",total:p,value:e,withControls:true,withEdges:true})]})]})}function Br(){let{columns:e,i18n:t}=T(),{search:a,setSearch:s}=q(),r=a.accessors.length,[n,o]=useState(""),l=useMemo(()=>e.filter(i=>i.extend?.searchable),[e]),p=useMemo(()=>{if(!n.trim())return l;let i=n.toLowerCase().trim();return l.filter(u=>(u.title?.toString()??"").toLowerCase().includes(i))},[l,n]),m=i=>{a.accessors.includes(i)?s({...a,accessors:a.accessors.filter(u=>u!==i)}):s({...a,accessors:[...a.accessors,i]});};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{color:"transparent",disabled:r<=0,label:jsx(Badge,{circle:true,size:"xs",variant:"outline",children:r}),children:jsx(ActionIcon,{size:36,variant:"default",children:jsx(IconSearch,{size:16})})})}),jsxs(Popover.Dropdown,{p:"0",children:[jsx(TextInput,{autoFocus:true,leftSection:jsx(IconSearch,{size:16}),onChange:i=>o(i.target.value),p:"4",placeholder:t.search.searchAccessorsSearchPlaceholder,styles:{input:{border:"none"}},value:n}),jsx(Divider,{}),jsx(ScrollArea.Autosize,{mah:180,type:"auto",children:jsx(Stack,{gap:"0",children:p.map(i=>jsx(Checkbox,{checked:a.accessors.includes(i.accessor.toString()),classNames:{root:"mantine-mde-checkbox-root",body:"mantine-mde-checkbox-body",labelWrapper:"mantine-mde-checkbox-label-wrapper",label:"mantine-mde-checkbox-label",input:"mantine-mde-checkbox-input",icon:"mantine-mde-checkbox-icon"},label:i.title?.toString()??"",labelPosition:"left",onChange:()=>m(i.accessor.toString()),size:"xs",variant:"outline"},i.accessor.toString()))})})]})]})}function Vr(){let{search:e,setSearch:t}=q(),{i18n:a}=T(),s=r=>{t({...e,value:r});};return jsxs(Group,{gap:"xs",children:[jsx(Br,{}),jsx(TextInput,{onChange:r=>s(r.target.value),placeholder:a.search.search,rightSection:e.value.length>0&&jsx(CloseButton,{onClick:()=>s(""),size:"sm",variant:"transparent"}),value:e.value,w:"200px"})]})}function $r({sort:e,index:t,sortableColumns:a$1,onAccessorChange:s,onDirectionChange:r,onRemoveSort:n}){let{i18n:o}=T(),{ref:l,handleRef:p}=useSortable({id:e.accessor,index:t});return jsxs(Group,{align:"center",gap:"xs",ref:l,wrap:"nowrap",children:[jsx(Select,{checkIconPosition:"right",comboboxProps:{withinPortal:false},data:a$1.map(m=>({label:m.title?.toString()??"",value:m.accessor})),onChange:m=>s(e.accessor,m),searchable:true,size:"xs",value:e.accessor}),jsx(Select,{checkIconPosition:"right",comboboxProps:{withinPortal:false},data:Object.values(a).map(m=>({label:o.sort[m]??"",value:m})),onChange:m=>r(e.accessor,m),size:"xs",value:e.direction}),jsx(ActionIcon,{"aria-label":"Remove sort",onClick:()=>n(e.accessor),size:"md",variant:"default",children:jsx(IconTrash,{size:16})}),jsx(ActionIcon,{"aria-label":"Drag to reorder",ref:p,size:"md",style:{cursor:"grab",flexShrink:0},variant:"default",children:jsx(IconGripHorizontal,{size:16})})]})}function Yr(){let{sorts:e,setSorts:t,resetSorts:a$1}=te(),{columns:s,i18n:r}=T(),n=s.filter(g=>g.extend?.sortable),o=n.filter(g=>!e.some(c=>c.accessor===g.accessor)),l=e.length,p=()=>{if(o.length>0&&o[0]){let g={accessor:o[0].accessor,direction:a.ASC};t([...e,g]);}},m=()=>{a$1();},i=g=>{t(e.filter(c=>c.accessor!==g));},u=(g,c)=>{if(c===null)return;let d=e.filter(E=>E.accessor!==g&&E.accessor!==c);t([...d,{accessor:c,direction:e.find(E=>E.accessor===g)?.direction||a.ASC}]);},P=(g,c)=>{c!==null&&t(e.map(d=>d.accessor===g?{...d,direction:c}:d));},f=g=>{if(g.canceled)return;let{source:c}=g.operation;if(c&&isSortable(c)){let{initialIndex:d,index:E}=c;if(d!==E){let h=[...e],[b]=h.splice(d,1);b&&h.splice(E,0,b),t(h);}}};return jsxs(Popover,{shadow:"md",width:"450px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Button,{leftSection:jsx(IconArrowsSort,{size:16}),rightSection:jsx(Badge,{circle:true,variant:"outline",children:l}),variant:"default",children:r.sort.sort})}),jsxs(Popover.Dropdown,{p:"sm",children:[jsx(DragDropProvider,{onDragEnd:f,children:jsx(Stack,{gap:"xs",children:e.map((g,c)=>jsx($r,{index:c,onAccessorChange:u,onDirectionChange:P,onRemoveSort:i,sort:g,sortableColumns:n},g.accessor))})}),jsx(Space,{h:"sm"}),jsxs(Group,{children:[jsx(Button,{color:"dark",disabled:o.length===0,leftSection:jsx(IconPlus,{size:16}),onClick:p,size:"xs",variant:"filled",children:r.sort.addSort}),jsx(Button,{leftSection:jsx(IconRefresh,{size:16}),onClick:m,size:"xs",variant:"default",children:r.sort.resetSort})]})]})]})}function jr({useDataTableColumnsProps:e,columns:t,queryParamsAdapter:a,urlKeys:s,defaultParams:r,paginationProps:n,i18n:o}){let l=useMemo(()=>({...f,...s}),[JSON.stringify(s)]),p=useMemo(()=>({...g,...r}),[JSON.stringify(r)]),m=useMemo(()=>({...j$1,...o}),[JSON.stringify(o)]),i=useDataTableColumns(e??{key:"mde-default",columns:t});return {columns:t,urlKeys:l,defaultParams:p,i18n:m,queryParamsAdapter:a,useDataTableColumnsResult:{...i,key:e?.key??"mde-default"},paginationProps:{recordsPerPageOptions:n?.recordsPerPageOptions??h}}}function to(e){return useMemo(()=>e(),[e])}export{Ct as MDEColumnsToggle,Sr as MDEFilter,Mr as MDEPagination,dt as MDEProvider,Vr as MDESearch,Yr as MDESortList,wt as MantineDatatableExtended,to as createMDEColumnsHelper,Ne as createNuqsQueryParamsAdapter,Ge as createTanStackRouterQueryParamsAdapter,jr as useMDE,D as useMDEFilters,j as useMDEPage,ee as useMDEPageSize,Ft as useMDEQueryParams,q as useMDESearch,te as useMDESorts};
|
package/dist/server.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as nuqs_server from 'nuqs/server';
|
|
2
|
-
import {
|
|
2
|
+
import { c as TUrlKeys, d as TDefaultParams } from './data-table-provider.type-DPvItGHz.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'mantine-datatable';
|
|
5
5
|
import 'zod';
|
|
6
6
|
|
|
7
|
-
type
|
|
8
|
-
|
|
7
|
+
type TCreateMDELoaderProps = {
|
|
8
|
+
urlKeys?: Partial<TUrlKeys>;
|
|
9
|
+
defaultParams?: Partial<TDefaultParams>;
|
|
10
|
+
};
|
|
11
|
+
declare function createMDELoader(props?: TCreateMDELoaderProps): nuqs_server.LoaderFunction<{
|
|
9
12
|
[x: string]: (Omit<nuqs_server.SingleParserBuilder<number>, "parseServerSide"> & {
|
|
10
13
|
readonly defaultValue: number;
|
|
11
14
|
parseServerSide(value: string | string[] | undefined): number;
|
|
@@ -51,4 +54,4 @@ declare function createDteLoader(props?: TCreateDteLoaderProps): nuqs_server.Loa
|
|
|
51
54
|
});
|
|
52
55
|
}>;
|
|
53
56
|
|
|
54
|
-
export { type
|
|
57
|
+
export { type TCreateMDELoaderProps, createMDELoader };
|
package/dist/server.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {parseAsJson,parseAsInteger,createLoader}from'nuqs/server';import {z}from'zod';
|
|
1
|
+
import {f,g,e,d,c}from'./chunk-EDD26HQ2.mjs';import {parseAsJson,parseAsInteger,createLoader}from'nuqs/server';import {z}from'zod';function L(m={}){let{urlKeys:c$1,defaultParams:u}=m,e$1={...f,...c$1},r={...g,...u},h={[`${e$1.page}`]:parseAsInteger.withDefault(r.page),[`${e$1.pageSize}`]:parseAsInteger.withDefault(r.pageSize),[`${e$1.sorts}`]:parseAsJson(z.array(c)).withDefault(r.sorts),[`${e$1.search}`]:parseAsJson(d).withDefault(r.search),[`${e$1.filters}`]:parseAsJson(z.array(e)).withDefault(r.filters)};return createLoader(h)}export{L as createMDELoader};
|
package/dist/styles.css
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
.mantine-
|
|
1
|
+
.mantine-mde-checkbox-root {
|
|
2
2
|
&:hover {
|
|
3
3
|
background-color: var(--mantine-color-gray-1);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
[data-mantine-color-scheme="dark"] .mantine-
|
|
7
|
+
[data-mantine-color-scheme="dark"] .mantine-mde-checkbox-root:hover {
|
|
8
8
|
background-color: var(--mantine-color-dark-8);
|
|
9
9
|
}
|
|
10
|
-
.mantine-
|
|
10
|
+
.mantine-mde-checkbox-body {
|
|
11
11
|
display: flex;
|
|
12
12
|
align-items: center;
|
|
13
13
|
padding-left: var(--mantine-spacing-sm);
|
|
14
14
|
padding-right: var(--mantine-spacing-lg);
|
|
15
15
|
}
|
|
16
|
-
.mantine-
|
|
16
|
+
.mantine-mde-checkbox-label-wrapper {
|
|
17
17
|
display: flex;
|
|
18
18
|
justify-content: space-between;
|
|
19
19
|
width: 100%;
|
|
20
20
|
}
|
|
21
|
-
.mantine-
|
|
21
|
+
.mantine-mde-checkbox-label {
|
|
22
22
|
font-size: var(--mantine-font-size-xs);
|
|
23
23
|
padding-top: var(--mantine-spacing-xs);
|
|
24
24
|
padding-bottom: var(--mantine-spacing-xs);
|
|
25
25
|
cursor: pointer;
|
|
26
26
|
}
|
|
27
|
-
.mantine-
|
|
27
|
+
.mantine-mde-checkbox-input {
|
|
28
28
|
cursor: pointer;
|
|
29
29
|
}
|
|
30
|
-
.mantine-
|
|
30
|
+
.mantine-mde-checkbox-icon {
|
|
31
31
|
scale: 0.8;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
/*# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZXMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InN0eWxlcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubWFudGluZS1tZGUtY2hlY2tib3gtcm9vdCB7XG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1hbnRpbmUtY29sb3ItZ3JheS0xKTtcblx0fVxufVxuXG5bZGF0YS1tYW50aW5lLWNvbG9yLXNjaGVtZT1cImRhcmtcIl0gLm1hbnRpbmUtbWRlLWNoZWNrYm94LXJvb3Q6aG92ZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tYW50aW5lLWNvbG9yLWRhcmstOCk7XG59XG4ubWFudGluZS1tZGUtY2hlY2tib3gtYm9keSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbWFudGluZS1zcGFjaW5nLXNtKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0tbWFudGluZS1zcGFjaW5nLWxnKTtcbn1cbi5tYW50aW5lLW1kZS1jaGVja2JveC1sYWJlbC13cmFwcGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR3aWR0aDogMTAwJTtcbn1cbi5tYW50aW5lLW1kZS1jaGVja2JveC1sYWJlbCB7XG5cdGZvbnQtc2l6ZTogdmFyKC0tbWFudGluZS1mb250LXNpemUteHMpO1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tbWFudGluZS1zcGFjaW5nLXhzKTtcblx0cGFkZGluZy1ib3R0b206IHZhcigtLW1hbnRpbmUtc3BhY2luZy14cyk7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tYW50aW5lLW1kZS1jaGVja2JveC1pbnB1dCB7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tYW50aW5lLW1kZS1jaGVja2JveC1pY29uIHtcblx0c2NhbGU6IDAuODtcbn1cbiJdfQ== */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mantine-datatable-extended",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"description": "An extension library for Mantine DataTable, providing powerful and easy-to-use features for building data tables in React applications.",
|
|
6
6
|
"tags": [
|
|
7
7
|
"mantine",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"./LICENSE"
|
|
42
42
|
],
|
|
43
43
|
"devDependencies": {
|
|
44
|
+
"@tanstack/react-router": "^1.141.1",
|
|
44
45
|
"@types/react": "^19.2.7",
|
|
45
46
|
"@types/react-dom": "^19.2.3",
|
|
46
47
|
"npm-run-all": "^4.1.5",
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
},
|
|
53
54
|
"peerDependencies": {
|
|
54
55
|
"@dnd-kit/react": ">=0.3",
|
|
56
|
+
"@tanstack/react-router": ">=1.43",
|
|
55
57
|
"@mantine/core": ">=8.3",
|
|
56
58
|
"@mantine/dates": ">=8.3",
|
|
57
59
|
"@mantine/hooks": ">=8.3",
|
|
@@ -64,6 +66,14 @@
|
|
|
64
66
|
"react-dom": ">=19",
|
|
65
67
|
"zod": ">=4.1"
|
|
66
68
|
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"@tanstack/react-router": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"nuqs": {
|
|
74
|
+
"optional": true
|
|
75
|
+
}
|
|
76
|
+
},
|
|
67
77
|
"sideEffects": false,
|
|
68
78
|
"scripts": {
|
|
69
79
|
"build": "rm -rf dist; tsup; postcss src/styles*.css --dir dist",
|