mantine-datatable-extended 0.2.0 → 0.3.1
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 +23 -22
- package/dist/{data-table-provider.type-CblXE_l1.d.ts → data-table-provider.type-dlzY73EE.d.ts} +149 -19
- package/dist/index.css +1 -0
- package/dist/index.d.ts +15 -90
- package/dist/index.mjs +1 -1
- package/dist/server.d.ts +5 -3
- package/dist/server.mjs +1 -1
- package/dist/styles.layer.css +1 -0
- package/package.json +10 -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
|
+
- **DteSearch**: Search with multi-column selection
|
|
19
|
+
- **DteFilter**: Filter data with various filter types (text, number, date, select, range...)
|
|
20
|
+
- **DteSortList**: Sort by multiple columns simultaneously
|
|
21
|
+
- **DteColumnsToggle**: Show/hide columns
|
|
22
|
+
- **DtePagination**: Flexible pagination that can be placed anywhere
|
|
23
23
|
|
|
24
24
|
### 🔗 URL State Management
|
|
25
25
|
|
|
@@ -50,6 +50,7 @@ pnpm add mantine-datatable-extended mantine-datatable @mantine/dates dayjs nuqs
|
|
|
50
50
|
|
|
51
51
|
**Peer Dependencies:**
|
|
52
52
|
|
|
53
|
+
- `@dnd-kit/react` >= 0.3
|
|
53
54
|
- `@mantine/core` >= 8.3
|
|
54
55
|
- `@mantine/dates` >= 8.3
|
|
55
56
|
- `@mantine/hooks` >= 8.3
|
|
@@ -90,19 +91,19 @@ export default function RootLayout({ children }) {
|
|
|
90
91
|
"use client";
|
|
91
92
|
|
|
92
93
|
import {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
type
|
|
94
|
+
DteExtended,
|
|
95
|
+
DteProvider,
|
|
96
|
+
DteSearch,
|
|
97
|
+
DteFilter,
|
|
98
|
+
DteSortList,
|
|
99
|
+
DteColumnsToggle,
|
|
100
|
+
DtePagination,
|
|
101
|
+
type TDteColumnProps,
|
|
101
102
|
} from "mantine-datatable-extended";
|
|
102
103
|
import { useDataTableColumns } from "mantine-datatable";
|
|
103
104
|
import { Group, Space } from "@mantine/core";
|
|
104
105
|
|
|
105
|
-
const columns:
|
|
106
|
+
const columns: TDteColumnProps[] = [
|
|
106
107
|
{
|
|
107
108
|
accessor: "name",
|
|
108
109
|
title: "Name",
|
|
@@ -123,27 +124,27 @@ export default function MyTable() {
|
|
|
123
124
|
});
|
|
124
125
|
|
|
125
126
|
return (
|
|
126
|
-
<
|
|
127
|
+
<DteProvider
|
|
127
128
|
columns={columns}
|
|
128
129
|
originalUseDataTableColumnsResult={originalUseDataTableColumnsResult}
|
|
129
130
|
storeColumnsKey="my-table"
|
|
130
131
|
>
|
|
131
132
|
<Group justify="space-between">
|
|
132
133
|
<Group>
|
|
133
|
-
<
|
|
134
|
-
<
|
|
134
|
+
<DteSearch />
|
|
135
|
+
<DteFilter />
|
|
135
136
|
</Group>
|
|
136
137
|
<Group>
|
|
137
|
-
<
|
|
138
|
-
<
|
|
138
|
+
<DteSortList />
|
|
139
|
+
<DteColumnsToggle />
|
|
139
140
|
</Group>
|
|
140
141
|
</Group>
|
|
141
142
|
|
|
142
143
|
<Space h="md" />
|
|
143
|
-
<
|
|
144
|
+
<DteExtended records={data} />
|
|
144
145
|
<Space h="md" />
|
|
145
|
-
<
|
|
146
|
-
</
|
|
146
|
+
<DtePagination />
|
|
147
|
+
</DteProvider>
|
|
147
148
|
);
|
|
148
149
|
}
|
|
149
150
|
```
|
package/dist/{data-table-provider.type-CblXE_l1.d.ts → data-table-provider.type-dlzY73EE.d.ts}
RENAMED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
1
2
|
import { DataTableColumn, useDataTableColumns } from 'mantine-datatable';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Options for multi-select filter variant.
|
|
7
|
+
*/
|
|
8
|
+
type TFilterMultiSelectOptions = {
|
|
5
9
|
data: {
|
|
6
10
|
value: string;
|
|
7
11
|
label: string;
|
|
@@ -9,7 +13,10 @@ type FilterMultiSelectOptions = {
|
|
|
9
13
|
icon?: React.ReactNode;
|
|
10
14
|
}[];
|
|
11
15
|
};
|
|
12
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Options for single-select filter variant.
|
|
18
|
+
*/
|
|
19
|
+
type TFilterSingleSelectOptions = {
|
|
13
20
|
data: {
|
|
14
21
|
value: string;
|
|
15
22
|
label: string;
|
|
@@ -17,14 +24,18 @@ type FilterSingleSelectOptions = {
|
|
|
17
24
|
icon?: React.ReactNode;
|
|
18
25
|
}[];
|
|
19
26
|
};
|
|
20
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Options for number range filter variant.
|
|
29
|
+
*/
|
|
30
|
+
type TFilterNumberRangeOptions = {
|
|
21
31
|
min: number;
|
|
22
32
|
max: number;
|
|
23
33
|
step?: number;
|
|
24
34
|
minRange?: number;
|
|
35
|
+
suffix?: string;
|
|
25
36
|
};
|
|
26
37
|
|
|
27
|
-
type
|
|
38
|
+
type TBaseExtend = {
|
|
28
39
|
/**
|
|
29
40
|
* Whether the column is searchable.
|
|
30
41
|
*/
|
|
@@ -38,24 +49,28 @@ type BaseExtend = {
|
|
|
38
49
|
*/
|
|
39
50
|
filterable?: boolean;
|
|
40
51
|
};
|
|
41
|
-
type
|
|
52
|
+
type TFilterableExtend = TBaseExtend & ({
|
|
42
53
|
filterVariant?: "text" | "number" | "date" | "date_range";
|
|
43
54
|
filterOptions?: never;
|
|
44
55
|
} | {
|
|
45
56
|
filterVariant: "number_range";
|
|
46
|
-
filterOptions:
|
|
57
|
+
filterOptions: TFilterNumberRangeOptions;
|
|
47
58
|
} | {
|
|
48
59
|
filterVariant: "single_select";
|
|
49
|
-
filterOptions:
|
|
60
|
+
filterOptions: TFilterSingleSelectOptions;
|
|
50
61
|
} | {
|
|
51
62
|
filterVariant: "multi_select";
|
|
52
|
-
filterOptions:
|
|
63
|
+
filterOptions: TFilterMultiSelectOptions;
|
|
53
64
|
});
|
|
54
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Extended column props for DataTable with search, sort, and filter support.
|
|
67
|
+
* Extends mantine-datatable's DataTableColumn with an optional `extend` property.
|
|
68
|
+
*/
|
|
69
|
+
type TDteColumnProps<T = Record<string, unknown>> = Omit<DataTableColumn<T>, "sortable" | "sortKey" | "filter" | "filterPopoverProps" | "filterPopoverDisableClickOutside" | "filtering" | "ellipsis" | "noWrap"> & {
|
|
55
70
|
/**
|
|
56
71
|
* The extended properties of the column.
|
|
57
72
|
*/
|
|
58
|
-
extend?:
|
|
73
|
+
extend?: TFilterableExtend;
|
|
59
74
|
} & ({
|
|
60
75
|
/**
|
|
61
76
|
* If true, cell content in this column will be truncated with ellipsis as needed and will not wrap
|
|
@@ -102,7 +117,100 @@ declare const filterSchema: z.ZodObject<{
|
|
|
102
117
|
}, z.core.$strip>;
|
|
103
118
|
type TFilterCondition = z.infer<typeof filterSchema>;
|
|
104
119
|
|
|
105
|
-
type
|
|
120
|
+
type TDteViewOptions = {
|
|
121
|
+
/**
|
|
122
|
+
* The label for the columns toggle button.
|
|
123
|
+
*/
|
|
124
|
+
columnsToggle: string;
|
|
125
|
+
/**
|
|
126
|
+
* The placeholder for the columns search input.
|
|
127
|
+
*/
|
|
128
|
+
columnsToggleSearchPlaceholder: string;
|
|
129
|
+
};
|
|
130
|
+
type TDteSortOptions = {
|
|
131
|
+
/**
|
|
132
|
+
* The label for the sort button.
|
|
133
|
+
*/
|
|
134
|
+
sort: string;
|
|
135
|
+
/**
|
|
136
|
+
* The label for the add sort button.
|
|
137
|
+
*/
|
|
138
|
+
addSort: string;
|
|
139
|
+
/**
|
|
140
|
+
* The label for the reset sort button.
|
|
141
|
+
*/
|
|
142
|
+
resetSort: string;
|
|
143
|
+
/**
|
|
144
|
+
* The label for the ascending sort direction.
|
|
145
|
+
*/
|
|
146
|
+
asc: string;
|
|
147
|
+
/**
|
|
148
|
+
* The label for the descending sort direction.
|
|
149
|
+
*/
|
|
150
|
+
desc: string;
|
|
151
|
+
};
|
|
152
|
+
type TDteSearchOptions = {
|
|
153
|
+
/**
|
|
154
|
+
* The label for the search input placeholder.
|
|
155
|
+
*/
|
|
156
|
+
search: string;
|
|
157
|
+
/**
|
|
158
|
+
* The placeholder for the search accessors filter input.
|
|
159
|
+
*/
|
|
160
|
+
searchAccessorsSearchPlaceholder: string;
|
|
161
|
+
};
|
|
162
|
+
type TDteFilterOptions = {
|
|
163
|
+
/**
|
|
164
|
+
* The label for the reset filter button.
|
|
165
|
+
*/
|
|
166
|
+
resetFilter: string;
|
|
167
|
+
};
|
|
168
|
+
type TDtePaginationOptions = {
|
|
169
|
+
/**
|
|
170
|
+
* The label for the rows per page.
|
|
171
|
+
*/
|
|
172
|
+
rowsPerPage: string;
|
|
173
|
+
/**
|
|
174
|
+
* The label for the page of total pages.
|
|
175
|
+
* The first string is "Page".
|
|
176
|
+
* The second string is "of".
|
|
177
|
+
*/
|
|
178
|
+
pageOfTotalPages: [string, string];
|
|
179
|
+
/**
|
|
180
|
+
* The label for the start record - end record / total records.
|
|
181
|
+
* The first string is "From".
|
|
182
|
+
* The second string is "to".
|
|
183
|
+
* The third string is "of total".
|
|
184
|
+
*/
|
|
185
|
+
startEndRecordOfTotalRecords: [string, string, string];
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Unified i18n type for all DataTable components.
|
|
189
|
+
* Grouped by component - full type stored in context (after merging with defaults).
|
|
190
|
+
*/
|
|
191
|
+
type TDteI18n = {
|
|
192
|
+
view: TDteViewOptions;
|
|
193
|
+
sort: TDteSortOptions;
|
|
194
|
+
search: TDteSearchOptions;
|
|
195
|
+
filter: TDteFilterOptions;
|
|
196
|
+
pagination: TDtePaginationOptions;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Input type for i18n prop in DteProvider.
|
|
200
|
+
* Each group is optional - only override the keys you need.
|
|
201
|
+
*/
|
|
202
|
+
type TDteI18nInput = {
|
|
203
|
+
view?: Partial<TDteViewOptions>;
|
|
204
|
+
sort?: Partial<TDteSortOptions>;
|
|
205
|
+
search?: Partial<TDteSearchOptions>;
|
|
206
|
+
filter?: Partial<TDteFilterOptions>;
|
|
207
|
+
pagination?: Partial<TDtePaginationOptions>;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* URL query parameter keys for DataTable state (page, pageSize, sorts, search, filters).
|
|
212
|
+
*/
|
|
213
|
+
type TUrlKeys = {
|
|
106
214
|
/**
|
|
107
215
|
* The key of the page parameter.
|
|
108
216
|
*/
|
|
@@ -124,7 +232,10 @@ type UrlKeysType = {
|
|
|
124
232
|
*/
|
|
125
233
|
filters: string;
|
|
126
234
|
};
|
|
127
|
-
|
|
235
|
+
/**
|
|
236
|
+
* Default values for DataTable query parameters.
|
|
237
|
+
*/
|
|
238
|
+
type TDefaultParams = {
|
|
128
239
|
/**
|
|
129
240
|
* The default page number.
|
|
130
241
|
*/
|
|
@@ -146,7 +257,10 @@ type DefaultParamsType = {
|
|
|
146
257
|
*/
|
|
147
258
|
filters?: TFilterCondition[];
|
|
148
259
|
};
|
|
149
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Pagination configuration passed to DataTable context.
|
|
262
|
+
*/
|
|
263
|
+
type TPaginationProps = {
|
|
150
264
|
/**
|
|
151
265
|
* The total records.
|
|
152
266
|
*/
|
|
@@ -156,16 +270,19 @@ type PaginationPropsType = {
|
|
|
156
270
|
*/
|
|
157
271
|
recordsPerPageOptions: number[];
|
|
158
272
|
};
|
|
159
|
-
|
|
273
|
+
/**
|
|
274
|
+
* Context value type for DteProvider.
|
|
275
|
+
*/
|
|
276
|
+
type TDteContextProps<T = Record<string, unknown>> = {
|
|
160
277
|
/**
|
|
161
278
|
* The keys of the URL parameters.
|
|
162
279
|
* Useful for multiple data tables on the same page.
|
|
163
280
|
*/
|
|
164
|
-
urlKeys?:
|
|
281
|
+
urlKeys?: TUrlKeys;
|
|
165
282
|
/**
|
|
166
283
|
* The default parameters of the data table.
|
|
167
284
|
*/
|
|
168
|
-
defaultParams?:
|
|
285
|
+
defaultParams?: TDefaultParams;
|
|
169
286
|
/**
|
|
170
287
|
* The key of the column store.
|
|
171
288
|
* This is used to store the columns of the data table in localStorage for draggable and toggleable columns.
|
|
@@ -176,7 +293,7 @@ type DataTableContextProps<T = Record<string, unknown>> = {
|
|
|
176
293
|
* The columns of the data table.
|
|
177
294
|
* This is use original column properties from mantine-datatable with "extend" property.
|
|
178
295
|
*/
|
|
179
|
-
columns:
|
|
296
|
+
columns: TDteColumnProps<T>[];
|
|
180
297
|
/**
|
|
181
298
|
* The result of the useDataTableColumns hook from mantine-datatable.
|
|
182
299
|
*/
|
|
@@ -184,7 +301,7 @@ type DataTableContextProps<T = Record<string, unknown>> = {
|
|
|
184
301
|
/**
|
|
185
302
|
* The pagination props.
|
|
186
303
|
*/
|
|
187
|
-
paginationProps?:
|
|
304
|
+
paginationProps?: TPaginationProps;
|
|
188
305
|
/**
|
|
189
306
|
* The function to set the pagination total records.
|
|
190
307
|
*/
|
|
@@ -193,6 +310,19 @@ type DataTableContextProps<T = Record<string, unknown>> = {
|
|
|
193
310
|
* The function to set the pagination records per page options.
|
|
194
311
|
*/
|
|
195
312
|
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
|
+
};
|
|
320
|
+
/**
|
|
321
|
+
* Props for DteProvider. Extends context props but i18n is optional input.
|
|
322
|
+
*/
|
|
323
|
+
type TDteProviderProps<T = Record<string, unknown>> = Omit<TDteContextProps<T>, "i18n"> & {
|
|
324
|
+
children: react.ReactNode;
|
|
325
|
+
i18n?: TDteI18nInput;
|
|
196
326
|
};
|
|
197
327
|
|
|
198
|
-
export type {
|
|
328
|
+
export type { TDteProviderProps as T, TDteContextProps as a, TDteColumnProps as b, TDteI18nInput as c };
|
package/dist/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mantine-dte-checkbox-root{&:hover{background-color:var(--mantine-color-gray-1)}}[data-mantine-color-scheme=dark] .mantine-dte-checkbox-root:hover{background-color:var(--mantine-color-dark-8)}.mantine-dte-checkbox-body{display:flex;align-items:center;padding-left:var(--mantine-spacing-sm);padding-right:var(--mantine-spacing-lg)}.mantine-dte-checkbox-label-wrapper{display:flex;justify-content:space-between;width:100%}.mantine-dte-checkbox-label{font-size:var(--mantine-font-size-xs);padding-top:var(--mantine-spacing-xs);padding-bottom:var(--mantine-spacing-xs);cursor:pointer}.mantine-dte-checkbox-input{cursor:pointer}.mantine-dte-checkbox-icon{scale:.8}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,100 +1,28 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { DataTableProps, DataTablePaginationProps, DataTableSortProps } from 'mantine-datatable';
|
|
3
3
|
import * as nuqs from 'nuqs';
|
|
4
|
-
import {
|
|
5
|
-
export {
|
|
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';
|
|
6
|
+
import 'react';
|
|
6
7
|
import 'zod';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The label for the columns toggle button.
|
|
11
|
-
*/
|
|
12
|
-
columnsToggle: string;
|
|
13
|
-
};
|
|
14
|
-
type i18nDataTableSortOptions = {
|
|
15
|
-
/**
|
|
16
|
-
* The label for the sort button.
|
|
17
|
-
*/
|
|
18
|
-
sort: string;
|
|
19
|
-
/**
|
|
20
|
-
* The label for the add sort button.
|
|
21
|
-
*/
|
|
22
|
-
addSort: string;
|
|
23
|
-
/**
|
|
24
|
-
* The label for the reset sort button.
|
|
25
|
-
*/
|
|
26
|
-
resetSort: string;
|
|
27
|
-
/**
|
|
28
|
-
* The label for the ascending sort direction.
|
|
29
|
-
*/
|
|
30
|
-
asc: string;
|
|
31
|
-
/**
|
|
32
|
-
* The label for the descending sort direction.
|
|
33
|
-
*/
|
|
34
|
-
desc: string;
|
|
35
|
-
};
|
|
36
|
-
type i18nDataTableSearchOptions = {
|
|
37
|
-
/**
|
|
38
|
-
* The label for the search input placeholder.
|
|
39
|
-
*/
|
|
40
|
-
search: string;
|
|
41
|
-
};
|
|
42
|
-
type i18nDataTableFilterOptions = {
|
|
43
|
-
/**
|
|
44
|
-
* The label for the reset filter button.
|
|
45
|
-
*/
|
|
46
|
-
resetFilter: string;
|
|
47
|
-
};
|
|
48
|
-
type i18nDataTablePaginationOptions = {
|
|
49
|
-
/**
|
|
50
|
-
* The label for the rows per page.
|
|
51
|
-
*/
|
|
52
|
-
rowsPerPage: string;
|
|
53
|
-
/**
|
|
54
|
-
* The label for the page of total pages.
|
|
55
|
-
* The first string is "Page".
|
|
56
|
-
* The second string is "of".
|
|
57
|
-
*/
|
|
58
|
-
pageOfTotalPages: [string, string];
|
|
59
|
-
/**
|
|
60
|
-
* The label for the start record - end record / total records.
|
|
61
|
-
* The first string is "From".
|
|
62
|
-
* The second string is "to".
|
|
63
|
-
* The third string is "of total".
|
|
64
|
-
*/
|
|
65
|
-
startEndRecordOfTotalRecords: [string, string, string];
|
|
66
|
-
};
|
|
9
|
+
declare function DteColumnsToggle(): react_jsx_runtime.JSX.Element;
|
|
67
10
|
|
|
68
|
-
type
|
|
69
|
-
|
|
70
|
-
};
|
|
71
|
-
declare function DataTableColumnsToggle({ i18n, }: TDataTableColumnsToggleProps): react_jsx_runtime.JSX.Element;
|
|
72
|
-
|
|
73
|
-
type TDataTableExtendedProps<T = Record<string, unknown>> = Omit<DataTableProps<T>, "storeColumnsKey" | "groups" | "columns" | keyof DataTablePaginationProps | keyof DataTableSortProps>;
|
|
74
|
-
declare function DataTableExtended<T = Record<string, unknown>>(props: TDataTableExtendedProps<T>): react_jsx_runtime.JSX.Element;
|
|
11
|
+
type TDteExtendedProps<T = Record<string, unknown>> = Omit<DataTableProps<T>, "storeColumnsKey" | "groups" | "columns" | keyof DataTablePaginationProps | keyof DataTableSortProps>;
|
|
12
|
+
declare function DteExtended<T = Record<string, unknown>>(props: TDteExtendedProps<T>): react_jsx_runtime.JSX.Element;
|
|
75
13
|
|
|
76
|
-
|
|
77
|
-
i18n?: i18nDataTableFilterOptions;
|
|
78
|
-
};
|
|
79
|
-
declare function DataTableFilter({ i18n }: TDataTableFilterProps): react_jsx_runtime.JSX.Element;
|
|
14
|
+
declare function DteFilter(): react_jsx_runtime.JSX.Element;
|
|
80
15
|
|
|
81
|
-
type
|
|
16
|
+
type TDtePaginationProps = {
|
|
82
17
|
recordsPerPageOptions?: number[];
|
|
83
|
-
i18n?: i18nDataTablePaginationOptions;
|
|
84
18
|
};
|
|
85
|
-
declare function
|
|
19
|
+
declare function DtePagination({ recordsPerPageOptions, }: TDtePaginationProps): false | react_jsx_runtime.JSX.Element;
|
|
86
20
|
|
|
87
|
-
|
|
88
|
-
i18n?: i18nDataTableSearchOptions;
|
|
89
|
-
};
|
|
90
|
-
declare function DataTableSearch({ i18n }: TDataTableSearchProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
declare function DteSearch(): react_jsx_runtime.JSX.Element;
|
|
91
22
|
|
|
92
|
-
|
|
93
|
-
i18n?: i18nDataTableSortOptions;
|
|
94
|
-
};
|
|
95
|
-
declare function DataTableSortList({ i18n, }: TDataTableSortListProps): react_jsx_runtime.JSX.Element;
|
|
23
|
+
declare function DteSortList(): react_jsx_runtime.JSX.Element;
|
|
96
24
|
|
|
97
|
-
declare function
|
|
25
|
+
declare function useDteQueryParams(): {
|
|
98
26
|
page: number;
|
|
99
27
|
setPage: (value: number | ((old: number) => number | null) | null, options?: nuqs.Options) => Promise<URLSearchParams>;
|
|
100
28
|
pageSize: number;
|
|
@@ -153,10 +81,7 @@ declare function useDataTableQueryParams(): {
|
|
|
153
81
|
resetAll: () => void;
|
|
154
82
|
};
|
|
155
83
|
|
|
156
|
-
declare function
|
|
157
|
-
|
|
158
|
-
children: React.ReactNode;
|
|
159
|
-
} & DataTableContextProps<T>;
|
|
160
|
-
declare function DataTableProvider<T = Record<string, unknown>>({ children, urlKeys, defaultParams, storeColumnsKey, columns, originalUseDataTableColumnsResult, }: DataTableProviderProps<T>): react_jsx_runtime.JSX.Element;
|
|
84
|
+
declare function useDteContext<T = Record<string, unknown>>(): TDteContextProps<T>;
|
|
85
|
+
declare function DteProvider<T = Record<string, unknown>>({ children, urlKeys, defaultParams, storeColumnsKey, columns, originalUseDataTableColumnsResult, i18n: i18nInput, }: TDteProviderProps<T>): react_jsx_runtime.JSX.Element;
|
|
161
86
|
|
|
162
|
-
export {
|
|
87
|
+
export { DteColumnsToggle, DteExtended, DteFilter, DtePagination, DteProvider, DteSearch, DteSortList, TDteProviderProps, useDteContext, useDteQueryParams };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {Popover,Button,Stack,Checkbox,Group,Text,NativeSelect,Space,Pagination,TextInput,CloseButton,Badge,Grid,Select,ActionIcon,Indicator,RangeSlider,NumberInput}from'@mantine/core';import {IconColumns,IconSort09,IconTrash,IconPlus,IconRefresh,IconX,IconSearch}from'@tabler/icons-react';import Ht,{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 Te,{z}from'zod';import {DatePicker}from'@mantine/dates';import z$1 from'dayjs';var pe=createContext(void 0);function P(){let a=useContext(pe);if(!a)throw new Error("useDataTableContext must be used within a DataTableProvider");return a}function Ge({children:a,urlKeys:e,defaultParams:p,storeColumnsKey:o,columns:s,originalUseDataTableColumnsResult:r}){if(!o)throw new Error("storeColumnsKey property is required");if(!s)throw new Error("columns property is required");let[t,u]=useState(0),[m,g]=useState([10,20,30,40,50]),i=useMemo(()=>({totalRecords:t,recordsPerPageOptions:m}),[t,m]),l=useMemo(()=>({urlKeys:e,defaultParams:p,storeColumnsKey:o,columns:s,originalUseDataTableColumnsResult:r,paginationProps:i,setTotalRecords:u,setRecordsPerPageOptions:g}),[e,p,o,s,r,i]);return jsx(pe.Provider,{value:{...l},children:a})}var Ue={columnsToggle:"Columns Toggle"};function Xe({i18n:a=Ue}){let{originalUseDataTableColumnsResult:e}=P(),{effectiveColumns:p,columnsToggle:o,setColumnsToggle:s}=e,r=t=>{s(o.map(u=>u.accessor===t.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(IconColumns,{}),variant:"default",children:a.columnsToggle})}),jsx(Popover.Dropdown,{children:jsx(Stack,{children:o.filter(t=>t.toggleable).map(t=>jsx(Checkbox,{checked:t.toggled,label:p.find(u=>u.accessor===t.accessor)?.title?.toString()??"",labelPosition:"left",onChange:()=>r(t),styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},t.accessor))})})]})}function qe(a){let{storeColumnsKey:e,originalUseDataTableColumnsResult:p}=P(),{effectiveColumns:o}=p,s={...a,columns:o,storeColumnsKey:e};return jsx(DataTable,{...s})}var B={ASC:"asc",DESC:"desc"},v={TEXT:"text",NUMBER:"number",NUMBER_RANGE:"number_range",DATE:"date",DATE_RANGE:"date_range",SINGLE_SELECT:"single_select",MULTI_SELECT:"multi_select"};var ue=z.object({accessor:z.string(),direction:z.enum(B)}),de=z.object({accessors:z.array(z.string()),value:z.string()}),me=z.object({variant:z.enum(v),accessor:z.string(),value:z.union([z.string(),z.array(z.string())])});function T(){let a={page:"page",pageSize:"pageSize",sorts:"sorts",search:"search",filters:"filters"},e={page:1,pageSize:10,sorts:[],search:{accessors:[],value:""},filters:[]},{urlKeys:p,defaultParams:o}=P();p&&(a=p),o&&(e={...e,...o});let[s,r]=useQueryState(a.page,parseAsInteger.withDefault(e.page)),[t,u]=useQueryState(a.pageSize,parseAsInteger.withDefault(e.pageSize)),[m,g]=useQueryState(a.sorts,parseAsJson(Te.array(ue)).withDefault(e.sorts)),[i,l]=useQueryState(a.search,parseAsJson(de).withDefault(e.search)),[c,n]=useQueryState(a.filters,parseAsJson(Te.array(me)).withDefault(e.filters)),d=()=>{r(e.page);},f=()=>{u(e.pageSize);},D=()=>{g(e.sorts);},I=()=>{l(e.search);},ie=()=>{n(e.filters);};return {page:s,setPage:r,pageSize:t,setPageSize:u,sorts:m,setSorts:g,search:i,setSearch:l,filters:c,setFilters:n,resetPage:d,resetPageSize:f,resetSorts:D,resetSearch:I,resetFilters:ie,resetAll:()=>{d(),f(),D(),I(),ie();}}}function De({column:a}){let e=a.accessor,p=a.extend?.filterVariant,{filters:o,setFilters:s}=T(),r=o.find(l=>l.accessor===e),t=r?.value?1:0,[u,m]=useState(r?z$1(Number.parseInt(r.value,10)).toISOString():null),g=l=>{if(m(l),l){let c=z$1(l).valueOf().toString();s(r?o.map(n=>n.accessor===e?{...n,value:c}:n):[...o,{variant:p,accessor:e,value:c}]);}},i=()=>{m(null),s(o.filter(l=>l.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:t<=0,processing:true,children:jsxs(Button.Group,{children:[t>0&&jsx(Button,{onClick:i,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{onChange:g,value:u})})]})}function he({column:a}){let e=a.accessor,p=a.extend?.filterVariant,{filters:o,setFilters:s}=T(),r=o.find(l=>l.accessor===e),t=r?.value.length??0,[u,m]=useState(r?.value[0]&&r?.value[1]?[z$1(Number.parseInt(r.value[0],10)).toISOString(),z$1(Number.parseInt(r.value[1],10)).toISOString()]:[null,null]),g=([l,c])=>{if(m([l,c]),l&&c){let[n,d]=[z$1(l).valueOf().toString(),z$1(c).valueOf().toString()];s(r?o.map(f=>f.accessor===e?{...f,value:[n,d]}:f):[...o,{variant:p,accessor:e,value:[n,d]}]);}},i=()=>{m([null,null]),s(o.filter(l=>l.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:t<=0,processing:true,children:jsxs(Button.Group,{children:[t>0&&jsx(Button,{onClick:i,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(DatePicker,{allowSingleDateInRange:true,onChange:g,type:"range",value:u})})]})}function ve({column:a}){let e=a.accessor,p=a.extend?.filterVariant,s=(a.extend?.filterOptions).data,{filters:r,setFilters:t}=T(),u=r.find(c=>c.accessor===e),m=u?.value.length??0,g=c=>{let n=u?.value??[],d=n.includes(c)?n.filter(f=>f!==c):[...n,c];if(d.length===0)t(r.filter(f=>f.accessor!==e));else {let f=r.some(D=>D.accessor===e);t(f?r.map(D=>D.accessor===e?{...D,value:d}:D):[...r,{variant:p,accessor:e,value:d}]);}},i=c=>r.some(n=>n.accessor===e&&n.value.includes(c)),l=()=>{t(r.filter(c=>c.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:m<=0,processing:true,children:jsxs(Button.Group,{children:[m>0&&jsx(Button,{onClick:l,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(Stack,{children:s.map(c=>jsx(Checkbox,{checked:i(c.value),label:c.label,labelPosition:"left",onChange:()=>g(c.value),styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},`${e}-${c.value}`))})})]})}function ye({column:a}){let e=a.accessor,p=a.extend?.filterVariant,{filters:o,setFilters:s}=T(),r=o.find(i=>i.accessor===e),t=r?.value.length??0,u=i=>{s(r?o.map(l=>l.accessor===e?{...l,value:i.toString()}:l):[...o,{variant:p,accessor:e,value:i.toString()}]);},m=i=>{let l=i;typeof i=="string"&&(l=Number.parseInt(i,10)),u(l);},g=()=>{s(o.filter(i=>i.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:t<=0,processing:true,children:jsxs(Button.Group,{children:[t>0&&jsx(Button,{onClick:g,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(NumberInput,{onChange:i=>m(i),value:r?.value?Number.parseInt(r.value,10):void 0})})]})}function we({column:a}){let e=a.accessor,p=a.extend?.filterVariant,{min:o,max:s,step:r=1,minRange:t=1}=a.extend?.filterOptions,{filters:u,setFilters:m}=T(),g=u.find(d=>d.accessor===e),i=g?.value.length??0,l=d=>{let[f,D]=[d[0].toString(),d[1].toString()];m(g?u.map(I=>I.accessor===e?{...I,value:[f,D]}:I):[...u,{variant:p,accessor:e,value:[f,D]}]);},c=([d,f])=>{l([d,f]);},n=()=>{m(u.filter(d=>d.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:i<=0,processing:true,children:jsxs(Button.Group,{children:[i>0&&jsx(Button,{onClick:n,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(RangeSlider,{max:s,min:o,minRange:t,onChange:c,step:r,value:g?.value[0]&&g?.value[1]?[Number.parseInt(g.value[0],10),Number.parseInt(g.value[1],10)]:[o,s]})})]})}function Re({column:a}){let e=a.accessor,p=a.extend?.filterVariant,s=(a.extend?.filterOptions).data,{filters:r,setFilters:t}=T(),u=r.find(c=>c.accessor===e),m=u?.value.length??0,g=c=>{t(u?r.map(n=>n.accessor===e?{...n,value:c}:n):[...r,{variant:p,accessor:e,value:c}]);},i=c=>u?.value===c,l=()=>{t(r.filter(c=>c.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:m<=0,processing:true,children:jsxs(Button.Group,{children:[m>0&&jsx(Button,{onClick:l,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(Stack,{children:s.map(c=>jsx(Checkbox,{checked:i(c.value),label:c.label,labelPosition:"left",onChange:()=>g(c.value),radius:"xl",styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},`${e}-${c.value}`))})})]})}function ke({column:a}){let e=a.accessor,p=a.extend?.filterVariant,{filters:o,setFilters:s}=T(),r=o.find(i=>i.accessor===e),t=r?.value.length??0,u=i=>{s(r?i===""?o.filter(l=>l.accessor!==e):o.map(l=>l.accessor===e?{...l,value:i}:l):[...o,{variant:p,accessor:e,value:i}]);},m=i=>{u(i);},g=()=>{s(o.filter(i=>i.accessor!==e));};return jsxs(Popover,{shadow:"md",width:"250px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{disabled:t<=0,processing:true,children:jsxs(Button.Group,{children:[t>0&&jsx(Button,{onClick:g,px:"xs",variant:"default",children:jsx(IconX,{size:16})}),jsx(Button,{variant:"default",children:a.title})]})})}),jsx(Popover.Dropdown,{children:jsx(TextInput,{onChange:i=>m(i.target.value),value:r?.value??""})})]})}var vt={resetFilter:"Reset Filter"};function xt({i18n:a=vt}){let{filters:e,resetFilters:p}=T(),{columns:o}=P(),s=()=>{p();},r=o.filter(t=>t.extend?.filterable);return jsxs(Group,{gap:"xs",children:[r.map(t=>{switch(t.extend?.filterVariant){case v.TEXT:return jsx(ke,{column:t},t.accessor);case v.NUMBER:return jsx(ye,{column:t},t.accessor);case v.SINGLE_SELECT:return jsx(Re,{column:t},t.accessor);case v.MULTI_SELECT:return jsx(ve,{column:t},t.accessor);case v.DATE:return jsx(De,{column:t},t.accessor);case v.DATE_RANGE:return jsx(he,{column:t},t.accessor);case v.NUMBER_RANGE:return jsx(we,{column:t},t.accessor);default:return null}}),e.length>0&&jsx(Button,{onClick:s,variant:"default",children:a.resetFilter})]})}var Rt={rowsPerPage:"Rows per page",pageOfTotalPages:["Page","of"],startEndRecordOfTotalRecords:["","-","/"]};function Et({recordsPerPageOptions:a=[10,20,30,40,50],i18n:e=Rt}){let{page:p,pageSize:o,setPage:s,setPageSize:r}=T(),{paginationProps:t}=P(),{totalRecords:u}=t||{},[m,g]=useState(0),[{startRecord:i,endRecord:l},c]=useState({startRecord:0,endRecord:0});return useEffect(()=>{g(Math.ceil((u||0)/(o||(a[0]??10))));},[u,o,a]),useEffect(()=>{c({startRecord:(p-1)*o+1,endRecord:Math.min(p*o,u||0)});},[p,o,u]),m>0&&jsxs(Group,{align:"center",justify:"space-between",children:[jsx(Group,{children:jsxs(Text,{size:"sm",children:[e.startEndRecordOfTotalRecords[0]," ",i," ",e.startEndRecordOfTotalRecords[1]," ",l," ",e.startEndRecordOfTotalRecords[2]," ",u]})}),jsxs(Group,{children:[jsx(Text,{size:"sm",children:e.rowsPerPage}),jsx(NativeSelect,{data:a.map(n=>({label:n.toString(),value:n.toString()})),onChange:n=>r(Number(n.target.value)),size:"xs",value:o,w:70}),jsx(Space,{w:"md"}),jsxs(Text,{size:"sm",children:[e.pageOfTotalPages[0]," ",p," ",e.pageOfTotalPages[1]," ",m]}),jsx(Pagination,{onChange:n=>s(n),size:"sm",total:m,value:p,withControls:true,withEdges:true})]})]})}function Mt(){let{columns:a}=P(),{search:e,setSearch:p}=T(),o=e.accessors.length,s=a.filter(t=>t.extend?.searchable),r=t=>{e.accessors.includes(t)?p({...e,accessors:e.accessors.filter(u=>u!==t)}):p({...e,accessors:[...e.accessors,t]});};return jsxs(Popover,{shadow:"md",width:"max-content",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Indicator,{color:"transparent",disabled:o<=0,label:jsx(Badge,{circle:true,size:"xs",variant:"outline",children:o}),children:jsx(ActionIcon,{size:36,variant:"default",children:jsx(IconSearch,{size:16})})})}),jsx(Popover.Dropdown,{children:jsx(Stack,{children:s.map(t=>jsx(Checkbox,{checked:e.accessors.includes(t.accessor.toString()),label:t.title?.toString()??"",labelPosition:"left",onChange:()=>r(t.accessor.toString()),styles:{labelWrapper:{display:"flex",justifyContent:"space-between",width:"100%"}},variant:"outline"},t.accessor.toString()))})})]})}var Qt={search:"Search"};function Lt({i18n:a=Qt}){let{search:e,setSearch:p}=T(),o=s=>{p({...e,value:s});};return jsxs(Group,{gap:"xs",children:[jsx(Mt,{}),jsx(TextInput,{onChange:s=>o(s.target.value),placeholder:a.search,rightSection:e.value.length>0&&jsx(CloseButton,{onClick:()=>o(""),size:"sm",variant:"transparent"}),value:e.value,w:"200px"})]})}var Yt={sort:"Sort",addSort:"Add Sort",resetSort:"Reset Sort",asc:"Asc",desc:"Desc"};function Zt({i18n:a=Yt}){let{sorts:e,setSorts:p,resetSorts:o}=T(),{columns:s}=P(),r=s.filter(n=>n.extend?.sortable),t=r.filter(n=>!e.some(d=>d.accessor===n.accessor)),u=e.length,m=()=>{if(t.length>0&&t[0]){let n={accessor:t[0].accessor,direction:B.ASC};p([...e,n]);}},g=()=>{o();},i=n=>{p(e.filter(d=>d.accessor!==n));},l=(n,d)=>{if(d===null)return;let f=e.filter(D=>D.accessor!==n&&D.accessor!==d);p([...f,{accessor:d,direction:e.find(D=>D.accessor===n)?.direction||B.ASC}]);},c=(n,d)=>{d!==null&&p(e.map(f=>f.accessor===n?{...f,direction:d}:f));};return jsxs(Popover,{shadow:"md",width:"450px",withArrow:true,children:[jsx(Popover.Target,{children:jsx(Button,{leftSection:jsx(IconSort09,{}),rightSection:jsx(Badge,{circle:true,variant:"outline",children:u}),variant:"default",children:a.sort})}),jsxs(Popover.Dropdown,{children:[jsx(Grid,{children:e.map(n=>jsxs(Ht.Fragment,{children:[jsx(Grid.Col,{span:6,children:jsx(Select,{comboboxProps:{withinPortal:false},data:r.map(d=>({label:d.title?.toString()??"",value:d.accessor})),onChange:d=>l(n.accessor,d),value:n.accessor})}),jsx(Grid.Col,{span:4,children:jsx(Select,{comboboxProps:{withinPortal:false},data:Object.values(B).map(d=>({label:a[d]??"",value:d})),onChange:d=>c(n.accessor,d),value:n.direction})}),jsx(Grid.Col,{span:1,style:{display:"flex",justifyContent:"center",alignItems:"center"},children:jsx(ActionIcon,{onClick:()=>i(n.accessor),size:"lg",variant:"default",children:jsx(IconTrash,{size:16})})})]},n.accessor))}),jsx(Space,{h:"md"}),jsxs(Group,{children:[jsx(Button,{color:"dark",disabled:t.length===0,leftSection:jsx(IconPlus,{size:16}),onClick:m,size:"sm",variant:"filled",children:a.addSort}),jsx(Button,{leftSection:jsx(IconRefresh,{size:16}),onClick:g,size:"sm",variant:"default",children:a.resetSort})]})]})]})}export{Xe as DataTableColumnsToggle,qe as DataTableExtended,xt as DataTableFilter,Et as DataTablePagination,Ge as DataTableProvider,Lt as DataTableSearch,Zt as DataTableSortList,P as useDataTableContext,T as useDataTableQueryParams};
|
|
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 b(){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}=b(),{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}=b(),{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)}),be=z.object({accessors:z.array(z.string()),value:z.string()}),Pe=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}=b();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(be).withDefault(e.search)),[h,g]=useQueryState(o.filters,parseAsJson(we.array(Pe)).withDefault(e.filters)),f=()=>{s(e.page);},n=()=>{m(e.pageSize);},d=()=>{u(e.sorts);},P=()=>{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:P,resetFilters:T,resetAll:()=>{f(),n(),d(),P(),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??[],P=d.includes(n)?d.filter(T=>T!==n):[...d,n];if(P.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:P}:S):[...p,{variant:l,accessor:e,value:P}]);}},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]);},P=()=>{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:P,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}=b(),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}=b(),{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}=b(),{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}=b(),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}=b(),{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}=b(),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(P=>P.accessor!==f&&P.accessor!==n);e([...d,{accessor:n,direction:o.find(P=>P.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:P}=n;d!==P&&e(T=>{let S=[...T],[k]=S.splice(d,1);return k&&S.splice(P,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,b as useDteContext,D as useDteQueryParams};
|
package/dist/server.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as nuqs_server from 'nuqs/server';
|
|
2
|
-
import {
|
|
2
|
+
import { a as TDteContextProps } from './data-table-provider.type-dlzY73EE.js';
|
|
3
|
+
import 'react';
|
|
3
4
|
import 'mantine-datatable';
|
|
4
5
|
import 'zod';
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
type TCreateDteLoaderProps = Pick<TDteContextProps, "urlKeys" | "defaultParams">;
|
|
8
|
+
declare function createDteLoader(props?: TCreateDteLoaderProps): nuqs_server.LoaderFunction<{
|
|
7
9
|
[x: string]: (Omit<nuqs_server.SingleParserBuilder<number>, "parseServerSide"> & {
|
|
8
10
|
readonly defaultValue: number;
|
|
9
11
|
parseServerSide(value: string | string[] | undefined): number;
|
|
@@ -49,4 +51,4 @@ declare const createDataTableLoader: (props?: Pick<DataTableContextProps, "urlKe
|
|
|
49
51
|
});
|
|
50
52
|
}>;
|
|
51
53
|
|
|
52
|
-
export {
|
|
54
|
+
export { type TCreateDteLoaderProps, createDteLoader };
|
package/dist/server.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {parseAsJson,parseAsInteger,createLoader}from'nuqs/server';import {z
|
|
1
|
+
import {parseAsJson,parseAsInteger,createLoader}from'nuqs/server';import {z}from'zod';var i={ASC:"asc",DESC:"desc"},c={TEXT:"text",NUMBER:"number",NUMBER_RANGE:"number_range",DATE:"date",DATE_RANGE:"date_range",SINGLE_SELECT:"single_select",MULTI_SELECT:"multi_select"};var n=z.object({accessor:z.string(),direction:z.enum(i)}),p=z.object({accessors:z.array(z.string()),value:z.string()}),f=z.object({variant:z.enum(c),accessor:z.string(),value:z.union([z.string(),z.array(z.string())])});function C(y={}){let r={page:"page",pageSize:"pageSize",sorts:"sorts",search:"search",filters:"filters"},t={page:1,pageSize:10,sorts:[],search:{accessors:[],value:""},filters:[]},{urlKeys:o,defaultParams:s}=y;o&&(r=o),s&&(t={...t,...s});let S={[`${r.page}`]:parseAsInteger.withDefault(t.page),[`${r.pageSize}`]:parseAsInteger.withDefault(t.pageSize),[`${r.sorts}`]:parseAsJson(z.array(n)).withDefault(t.sorts),[`${r.search}`]:parseAsJson(p).withDefault(t.search),[`${r.filters}`]:parseAsJson(z.array(f)).withDefault(t.filters)};return createLoader(S)}export{C as createDteLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "./index.css" layer(mantine-datatable-extended);
|
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.3.1",
|
|
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",
|
|
@@ -33,6 +33,14 @@
|
|
|
33
33
|
"types": "./dist/server.d.ts",
|
|
34
34
|
"import": "./dist/server.mjs",
|
|
35
35
|
"require": "./dist/server.cjs"
|
|
36
|
+
},
|
|
37
|
+
"./styles.css": {
|
|
38
|
+
"development": "./src/style.css",
|
|
39
|
+
"default": "./dist/index.css"
|
|
40
|
+
},
|
|
41
|
+
"./styles.layer.css": {
|
|
42
|
+
"development": "./src/styles.layer.css",
|
|
43
|
+
"default": "./dist/styles.layer.css"
|
|
36
44
|
}
|
|
37
45
|
},
|
|
38
46
|
"files": [
|
|
@@ -48,6 +56,7 @@
|
|
|
48
56
|
"@repo/config": "0.0.0"
|
|
49
57
|
},
|
|
50
58
|
"peerDependencies": {
|
|
59
|
+
"@dnd-kit/react": ">=0.3",
|
|
51
60
|
"@mantine/core": ">=8.3",
|
|
52
61
|
"@mantine/dates": ">=8.3",
|
|
53
62
|
"@mantine/hooks": ">=8.3",
|