@medusajs/ui 4.0.22-snapshot-20250829152522 → 4.0.22-snapshot-20250901132949
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/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.d.ts +9 -0
- package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.d.ts.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.js +58 -0
- package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.js.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-filter-bar.d.ts +5 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter-bar.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter-bar.js +71 -9
- package/dist/cjs/blocks/data-table/components/data-table-filter-bar.js.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter-menu.d.ts +5 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter-menu.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter-menu.js +35 -7
- package/dist/cjs/blocks/data-table/components/data-table-filter-menu.js.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter.d.ts +4 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-filter.js +488 -73
- package/dist/cjs/blocks/data-table/components/data-table-filter.js.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts +9 -0
- package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.js +42 -0
- package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.js.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.d.ts +9 -0
- package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.d.ts.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.js +44 -0
- package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.js.map +1 -0
- package/dist/cjs/blocks/data-table/components/data-table-table.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-table.js +132 -4
- package/dist/cjs/blocks/data-table/components/data-table-table.js.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-toolbar.d.ts +12 -0
- package/dist/cjs/blocks/data-table/components/data-table-toolbar.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/components/data-table-toolbar.js +5 -2
- package/dist/cjs/blocks/data-table/components/data-table-toolbar.js.map +1 -1
- package/dist/cjs/blocks/data-table/context/data-table-context-provider.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/context/data-table-context-provider.js +5 -1
- package/dist/cjs/blocks/data-table/context/data-table-context-provider.js.map +1 -1
- package/dist/cjs/blocks/data-table/context/data-table-context.d.ts +2 -0
- package/dist/cjs/blocks/data-table/context/data-table-context.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/context/data-table-context.js.map +1 -1
- package/dist/cjs/blocks/data-table/data-table.d.ts +6 -1
- package/dist/cjs/blocks/data-table/data-table.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/data-table.js +4 -0
- package/dist/cjs/blocks/data-table/data-table.js.map +1 -1
- package/dist/cjs/blocks/data-table/index.d.ts +2 -1
- package/dist/cjs/blocks/data-table/index.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/index.js.map +1 -1
- package/dist/cjs/blocks/data-table/types.d.ts +75 -3
- package/dist/cjs/blocks/data-table/types.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/types.js.map +1 -1
- package/dist/cjs/blocks/data-table/use-data-table.d.ts +21 -3
- package/dist/cjs/blocks/data-table/use-data-table.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/use-data-table.js +47 -7
- package/dist/cjs/blocks/data-table/use-data-table.js.map +1 -1
- package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.d.ts.map +1 -1
- package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.js +2 -1
- package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.js.map +1 -1
- package/dist/cjs/blocks/data-table/utils/create-data-table-filter-helper.d.ts +27 -0
- package/dist/cjs/blocks/data-table/utils/create-data-table-filter-helper.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.d.ts +9 -0
- package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.d.ts.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.js +54 -0
- package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.js.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-filter-bar.d.ts +5 -1
- package/dist/esm/blocks/data-table/components/data-table-filter-bar.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-filter-bar.js +71 -9
- package/dist/esm/blocks/data-table/components/data-table-filter-bar.js.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-filter-menu.d.ts +5 -1
- package/dist/esm/blocks/data-table/components/data-table-filter-menu.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-filter-menu.js +35 -7
- package/dist/esm/blocks/data-table/components/data-table-filter-menu.js.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-filter.d.ts +4 -1
- package/dist/esm/blocks/data-table/components/data-table-filter.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-filter.js +489 -74
- package/dist/esm/blocks/data-table/components/data-table-filter.js.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts +9 -0
- package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.js +38 -0
- package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.js.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.d.ts +9 -0
- package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.d.ts.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.js +40 -0
- package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.js.map +1 -0
- package/dist/esm/blocks/data-table/components/data-table-table.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-table.js +132 -4
- package/dist/esm/blocks/data-table/components/data-table-table.js.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-toolbar.d.ts +12 -0
- package/dist/esm/blocks/data-table/components/data-table-toolbar.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/components/data-table-toolbar.js +5 -2
- package/dist/esm/blocks/data-table/components/data-table-toolbar.js.map +1 -1
- package/dist/esm/blocks/data-table/context/data-table-context-provider.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/context/data-table-context-provider.js +5 -1
- package/dist/esm/blocks/data-table/context/data-table-context-provider.js.map +1 -1
- package/dist/esm/blocks/data-table/context/data-table-context.d.ts +2 -0
- package/dist/esm/blocks/data-table/context/data-table-context.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/context/data-table-context.js.map +1 -1
- package/dist/esm/blocks/data-table/data-table.d.ts +6 -1
- package/dist/esm/blocks/data-table/data-table.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/data-table.js +4 -0
- package/dist/esm/blocks/data-table/data-table.js.map +1 -1
- package/dist/esm/blocks/data-table/index.d.ts +2 -1
- package/dist/esm/blocks/data-table/index.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/index.js.map +1 -1
- package/dist/esm/blocks/data-table/types.d.ts +75 -3
- package/dist/esm/blocks/data-table/types.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/types.js.map +1 -1
- package/dist/esm/blocks/data-table/use-data-table.d.ts +21 -3
- package/dist/esm/blocks/data-table/use-data-table.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/use-data-table.js +47 -7
- package/dist/esm/blocks/data-table/use-data-table.js.map +1 -1
- package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.d.ts.map +1 -1
- package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.js +2 -1
- package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.js.map +1 -1
- package/dist/esm/blocks/data-table/utils/create-data-table-filter-helper.d.ts +27 -0
- package/dist/esm/blocks/data-table/utils/create-data-table-filter-helper.d.ts.map +1 -1
- package/package.json +6 -3
@@ -1,4 +1,4 @@
|
|
1
|
-
import { type TableOptions, useReactTable } from "@tanstack/react-table";
|
1
|
+
import { type ColumnOrderState, type TableOptions, useReactTable, type VisibilityState } from "@tanstack/react-table";
|
2
2
|
import * as React from "react";
|
3
3
|
import { DataTableColumnDef, DataTableColumnFilter, DataTableCommand, DataTableDateComparisonOperator, DataTableEmptyState, DataTableFilter, DataTableFilteringState, DataTableFilterOption, DataTablePaginationState, DataTableRow, DataTableRowSelectionState, DataTableSortingState } from "./types";
|
4
4
|
interface DataTableOptions<TData> extends Pick<TableOptions<TData>, "data" | "getRowId"> {
|
@@ -74,8 +74,22 @@ interface DataTableOptions<TData> extends Pick<TableOptions<TData>, "data" | "ge
|
|
74
74
|
* @default true
|
75
75
|
*/
|
76
76
|
autoResetPageIndex?: boolean;
|
77
|
+
/**
|
78
|
+
* The state and callback for the column visibility.
|
79
|
+
*/
|
80
|
+
columnVisibility?: {
|
81
|
+
state: VisibilityState;
|
82
|
+
onColumnVisibilityChange: (state: VisibilityState) => void;
|
83
|
+
};
|
84
|
+
/**
|
85
|
+
* The state and callback for the column order.
|
86
|
+
*/
|
87
|
+
columnOrder?: {
|
88
|
+
state: ColumnOrderState;
|
89
|
+
onColumnOrderChange: (state: ColumnOrderState) => void;
|
90
|
+
};
|
77
91
|
}
|
78
|
-
interface UseDataTableReturn<TData> extends Pick<ReturnType<typeof useReactTable<TData>>, "getHeaderGroups" | "getRowModel" | "getCanNextPage" | "getCanPreviousPage" | "nextPage" | "previousPage" | "getPageCount" | "getAllColumns"> {
|
92
|
+
interface UseDataTableReturn<TData> extends Pick<ReturnType<typeof useReactTable<TData>>, "getHeaderGroups" | "getRowModel" | "getCanNextPage" | "getCanPreviousPage" | "nextPage" | "previousPage" | "getPageCount" | "getAllColumns" | "setColumnVisibility" | "setColumnOrder"> {
|
79
93
|
getSorting: () => DataTableSortingState | null;
|
80
94
|
setSorting: (sortingOrUpdater: DataTableSortingState | ((prev: DataTableSortingState | null) => DataTableSortingState)) => void;
|
81
95
|
getFilters: () => DataTableFilter[];
|
@@ -101,8 +115,12 @@ interface UseDataTableReturn<TData> extends Pick<ReturnType<typeof useReactTable
|
|
101
115
|
enableFiltering: boolean;
|
102
116
|
enableSorting: boolean;
|
103
117
|
enableSearch: boolean;
|
118
|
+
enableColumnVisibility: boolean;
|
119
|
+
enableColumnOrder: boolean;
|
120
|
+
columnOrder: ColumnOrderState;
|
121
|
+
setColumnOrderFromArray: (order: string[]) => void;
|
104
122
|
}
|
105
|
-
declare const useDataTable: <TData>({ rowCount, filters, commands, rowSelection, sorting, filtering, pagination, search, onRowClick, autoResetPageIndex, isLoading, ...options }: DataTableOptions<TData>) => UseDataTableReturn<TData>;
|
123
|
+
declare const useDataTable: <TData>({ rowCount, filters, commands, rowSelection, sorting, filtering, pagination, search, onRowClick, autoResetPageIndex, isLoading, columnVisibility, columnOrder, ...options }: DataTableOptions<TData>) => UseDataTableReturn<TData>;
|
106
124
|
export { useDataTable };
|
107
125
|
export type { DataTableOptions, UseDataTableReturn };
|
108
126
|
//# sourceMappingURL=use-data-table.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-data-table.d.ts","sourceRoot":"","sources":["../../../../src/blocks/data-table/use-data-table.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"use-data-table.d.ts","sourceRoot":"","sources":["../../../../src/blocks/data-table/use-data-table.tsx"],"names":[],"mappings":"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"}
|
@@ -5,12 +5,15 @@ const tslib_1 = require("tslib");
|
|
5
5
|
const react_table_1 = require("@tanstack/react-table");
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
7
7
|
const types_1 = require("./types");
|
8
|
-
const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting, filtering, pagination, search, onRowClick, autoResetPageIndex = true, isLoading = false, ...options }) => {
|
8
|
+
const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting, filtering, pagination, search, onRowClick, autoResetPageIndex = true, isLoading = false, columnVisibility, columnOrder, ...options }) => {
|
9
9
|
var _a, _b, _c, _d, _e, _f;
|
10
10
|
const { state: sortingState, onSortingChange } = sorting !== null && sorting !== void 0 ? sorting : {};
|
11
11
|
const { state: filteringState, onFilteringChange } = filtering !== null && filtering !== void 0 ? filtering : {};
|
12
12
|
const { state: paginationState, onPaginationChange } = pagination !== null && pagination !== void 0 ? pagination : {};
|
13
13
|
const { state: rowSelectionState, onRowSelectionChange, enableRowSelection, } = rowSelection !== null && rowSelection !== void 0 ? rowSelection : {};
|
14
|
+
const { state: columnVisibilityState, onColumnVisibilityChange } = columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : {};
|
15
|
+
const { state: columnOrderState, onColumnOrderChange } = columnOrder !== null && columnOrder !== void 0 ? columnOrder : {};
|
16
|
+
// Store filter metadata like openOnMount
|
14
17
|
const autoResetPageIndexHandler = React.useCallback(() => {
|
15
18
|
return autoResetPageIndex
|
16
19
|
? () => paginationState &&
|
@@ -47,6 +50,26 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
47
50
|
? onPaginationChangeTransformer(onPaginationChange, paginationState)
|
48
51
|
: undefined;
|
49
52
|
}, [onPaginationChange, paginationState]);
|
53
|
+
const columnVisibilityStateHandler = React.useCallback(() => {
|
54
|
+
return onColumnVisibilityChange
|
55
|
+
? (updaterOrValue) => {
|
56
|
+
const value = typeof updaterOrValue === "function"
|
57
|
+
? updaterOrValue(columnVisibilityState !== null && columnVisibilityState !== void 0 ? columnVisibilityState : {})
|
58
|
+
: updaterOrValue;
|
59
|
+
onColumnVisibilityChange(value);
|
60
|
+
}
|
61
|
+
: undefined;
|
62
|
+
}, [onColumnVisibilityChange, columnVisibilityState]);
|
63
|
+
const columnOrderStateHandler = React.useCallback(() => {
|
64
|
+
return onColumnOrderChange
|
65
|
+
? (updaterOrValue) => {
|
66
|
+
const value = typeof updaterOrValue === "function"
|
67
|
+
? updaterOrValue(columnOrderState !== null && columnOrderState !== void 0 ? columnOrderState : [])
|
68
|
+
: updaterOrValue;
|
69
|
+
onColumnOrderChange(value);
|
70
|
+
}
|
71
|
+
: undefined;
|
72
|
+
}, [onColumnOrderChange, columnOrderState]);
|
50
73
|
const instance = (0, react_table_1.useReactTable)({
|
51
74
|
...options,
|
52
75
|
getCoreRowModel: (0, react_table_1.getCoreRowModel)(),
|
@@ -58,6 +81,8 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
58
81
|
value: filter,
|
59
82
|
})),
|
60
83
|
pagination: paginationState,
|
84
|
+
columnVisibility: columnVisibilityState !== null && columnVisibilityState !== void 0 ? columnVisibilityState : {},
|
85
|
+
columnOrder: columnOrderState !== null && columnOrderState !== void 0 ? columnOrderState : [],
|
61
86
|
},
|
62
87
|
enableRowSelection,
|
63
88
|
rowCount,
|
@@ -65,6 +90,8 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
65
90
|
onRowSelectionChange: rowSelectionStateHandler(),
|
66
91
|
onSortingChange: sortingStateHandler(),
|
67
92
|
onPaginationChange: paginationStateHandler(),
|
93
|
+
onColumnVisibilityChange: columnVisibilityStateHandler(),
|
94
|
+
onColumnOrderChange: columnOrderStateHandler(),
|
68
95
|
manualSorting: true,
|
69
96
|
manualPagination: true,
|
70
97
|
manualFiltering: true,
|
@@ -90,7 +117,7 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
90
117
|
if (!filter) {
|
91
118
|
return null;
|
92
119
|
}
|
93
|
-
return filter.options;
|
120
|
+
return filter.options || null;
|
94
121
|
}, [getFilters]);
|
95
122
|
const getFilterMeta = React.useCallback((id) => {
|
96
123
|
return getFilters().find((filter) => filter.id === id) || null;
|
@@ -102,10 +129,10 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
102
129
|
}, [instance]);
|
103
130
|
const addFilter = React.useCallback((filter) => {
|
104
131
|
var _a;
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
onFilteringChange === null || onFilteringChange === void 0 ? void 0 : onFilteringChange(
|
132
|
+
const currentFilters = getFiltering();
|
133
|
+
const newFilters = { ...currentFilters, [filter.id]: filter.value };
|
134
|
+
(_a = autoResetPageIndexHandler()) === null || _a === void 0 ? void 0 : _a();
|
135
|
+
onFilteringChange === null || onFilteringChange === void 0 ? void 0 : onFilteringChange(newFilters);
|
109
136
|
}, [onFilteringChange, getFiltering, autoResetPageIndexHandler]);
|
110
137
|
const removeFilter = React.useCallback((id) => {
|
111
138
|
var _a;
|
@@ -189,11 +216,18 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
189
216
|
const enableFiltering = !!filtering;
|
190
217
|
const enableSorting = !!sorting;
|
191
218
|
const enableSearch = !!search;
|
219
|
+
const enableColumnVisibility = !!columnVisibility;
|
220
|
+
const enableColumnOrder = !!columnOrder;
|
221
|
+
const setColumnOrderFromArray = React.useCallback((order) => {
|
222
|
+
instance.setColumnOrder(order);
|
223
|
+
}, [instance]);
|
192
224
|
return {
|
193
225
|
// Table
|
194
226
|
getHeaderGroups: instance.getHeaderGroups,
|
195
227
|
getRowModel: instance.getRowModel,
|
196
228
|
getAllColumns: instance.getAllColumns,
|
229
|
+
setColumnVisibility: instance.setColumnVisibility,
|
230
|
+
setColumnOrder: instance.setColumnOrder,
|
197
231
|
// Pagination
|
198
232
|
enablePagination,
|
199
233
|
getCanNextPage: instance.getCanNextPage,
|
@@ -232,6 +266,12 @@ const useDataTable = ({ rowCount = 0, filters, commands, rowSelection, sorting,
|
|
232
266
|
// Loading
|
233
267
|
isLoading,
|
234
268
|
showSkeleton,
|
269
|
+
// Column Visibility
|
270
|
+
enableColumnVisibility,
|
271
|
+
// Column Order
|
272
|
+
enableColumnOrder,
|
273
|
+
columnOrder: instance.getState().columnOrder,
|
274
|
+
setColumnOrderFromArray,
|
235
275
|
};
|
236
276
|
};
|
237
277
|
exports.useDataTable = useDataTable;
|
@@ -260,7 +300,7 @@ function onFilteringChangeTransformer(onFilteringChange, state) {
|
|
260
300
|
value: filter,
|
261
301
|
})))
|
262
302
|
: updaterOrValue;
|
263
|
-
const transformedValue = Object.fromEntries(value.map((filter) => [filter.id, filter]));
|
303
|
+
const transformedValue = Object.fromEntries(value.map((filter) => [filter.id, filter.value]));
|
264
304
|
onFilteringChange(transformedValue);
|
265
305
|
};
|
266
306
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-data-table.js","sourceRoot":"","sources":["../../../../src/blocks/data-table/use-data-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n ColumnFilter,\n ColumnFiltersState,\n type ColumnSort,\n getCoreRowModel,\n PaginationState,\n type RowSelectionState,\n type SortingState,\n type TableOptions,\n type Updater,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport * as React from \"react\"\nimport {\n DataTableColumnDef,\n DataTableColumnFilter,\n DataTableCommand,\n DataTableDateComparisonOperator,\n DataTableEmptyState,\n DataTableFilter,\n DataTableFilteringState,\n DataTableFilterOption,\n DataTablePaginationState,\n DataTableRow,\n DataTableRowSelectionState,\n DataTableSortingState,\n} from \"./types\"\n\ninterface DataTableOptions<TData>\n extends Pick<TableOptions<TData>, \"data\" | \"getRowId\"> {\n /**\n * The columns to use for the table.\n */\n columns: DataTableColumnDef<TData, any>[]\n /**\n * The filters which the user can apply to the table.\n */\n filters?: DataTableFilter[]\n /**\n * The commands which the user can apply to selected rows.\n */\n commands?: DataTableCommand[]\n /**\n * Whether the data for the table is currently being loaded.\n */\n isLoading?: boolean\n /**\n * The state and callback for the filtering.\n */\n filtering?: {\n state: DataTableFilteringState\n onFilteringChange: (state: DataTableFilteringState) => void\n }\n /**\n * The state and callback for the row selection.\n */\n rowSelection?: {\n state: DataTableRowSelectionState\n onRowSelectionChange: (state: DataTableRowSelectionState) => void\n enableRowSelection?:\n | boolean\n | ((row: DataTableRow<TData>) => boolean)\n | undefined\n }\n /**\n * The state and callback for the sorting.\n */\n sorting?: {\n state: DataTableSortingState | null\n onSortingChange: (state: DataTableSortingState) => void\n }\n /**\n * The state and callback for the search, with optional debounce.\n */\n search?: {\n state: string\n onSearchChange: (state: string) => void\n /**\n * Debounce time in milliseconds for the search callback.\n * @default 300\n */\n debounce?: number\n }\n /**\n * The state and callback for the pagination.\n */\n pagination?: {\n state: DataTablePaginationState\n onPaginationChange: (state: DataTablePaginationState) => void\n }\n /**\n * The function to execute when a row is clicked.\n */\n onRowClick?: (\n event: React.MouseEvent<HTMLTableRowElement, MouseEvent>,\n row: TData\n ) => void\n /**\n * The total count of rows. When working with pagination, this will be the total\n * number of rows available, not the number of rows currently being displayed.\n */\n rowCount?: number\n /**\n * Whether the page index should be reset the filtering, sorting, or pagination changes.\n *\n * @default true\n */\n autoResetPageIndex?: boolean\n}\n\ninterface UseDataTableReturn<TData>\n extends Pick<\n ReturnType<typeof useReactTable<TData>>,\n | \"getHeaderGroups\"\n | \"getRowModel\"\n | \"getCanNextPage\"\n | \"getCanPreviousPage\"\n | \"nextPage\"\n | \"previousPage\"\n | \"getPageCount\"\n | \"getAllColumns\"\n > {\n getSorting: () => DataTableSortingState | null\n setSorting: (\n sortingOrUpdater:\n | DataTableSortingState\n | ((prev: DataTableSortingState | null) => DataTableSortingState)\n ) => void\n getFilters: () => DataTableFilter[]\n getFilterOptions: <\n T extends string | string[] | DataTableDateComparisonOperator\n >(\n id: string\n ) => DataTableFilterOption<T>[] | null\n getFilterMeta: (id: string) => DataTableFilter | null\n getFiltering: () => DataTableFilteringState\n addFilter: (filter: DataTableColumnFilter) => void\n removeFilter: (id: string) => void\n clearFilters: () => void\n updateFilter: (filter: DataTableColumnFilter) => void\n getSearch: () => string\n onSearchChange: (search: string) => void\n getCommands: () => DataTableCommand[]\n getRowSelection: () => DataTableRowSelectionState\n onRowClick?: (\n event: React.MouseEvent<HTMLTableRowElement, MouseEvent>,\n row: TData\n ) => void\n emptyState: DataTableEmptyState\n isLoading: boolean\n showSkeleton: boolean\n pageIndex: number\n pageSize: number\n rowCount: number\n enablePagination: boolean\n enableFiltering: boolean\n enableSorting: boolean\n enableSearch: boolean\n}\n\nconst useDataTable = <TData,>({\n rowCount = 0,\n filters,\n commands,\n rowSelection,\n sorting,\n filtering,\n pagination,\n search,\n onRowClick,\n autoResetPageIndex = true,\n isLoading = false,\n ...options\n}: DataTableOptions<TData>): UseDataTableReturn<TData> => {\n const { state: sortingState, onSortingChange } = sorting ?? {}\n const { state: filteringState, onFilteringChange } = filtering ?? {}\n const { state: paginationState, onPaginationChange } = pagination ?? {}\n const {\n state: rowSelectionState,\n onRowSelectionChange,\n enableRowSelection,\n } = rowSelection ?? {}\n\n const autoResetPageIndexHandler = React.useCallback(() => {\n return autoResetPageIndex\n ? () =>\n paginationState &&\n onPaginationChange?.({ ...paginationState, pageIndex: 0 })\n : undefined\n }, [autoResetPageIndex, paginationState, onPaginationChange])\n\n const sortingStateHandler = React.useCallback(() => {\n return onSortingChange\n ? (updaterOrValue: Updater<SortingState>) => {\n autoResetPageIndexHandler()?.()\n onSortingChangeTransformer(\n onSortingChange,\n sortingState\n )(updaterOrValue)\n }\n : undefined\n }, [onSortingChange, sortingState, autoResetPageIndexHandler])\n\n const rowSelectionStateHandler = React.useCallback(() => {\n return onRowSelectionChange\n ? (updaterOrValue: Updater<RowSelectionState>) => {\n onRowSelectionChangeTransformer(\n onRowSelectionChange,\n rowSelectionState\n )(updaterOrValue)\n }\n : undefined\n }, [onRowSelectionChange, rowSelectionState, autoResetPageIndexHandler])\n\n const filteringStateHandler = React.useCallback(() => {\n return onFilteringChange\n ? (updaterOrValue: Updater<ColumnFiltersState>) => {\n autoResetPageIndexHandler()?.()\n onFilteringChangeTransformer(\n onFilteringChange,\n filteringState\n )(updaterOrValue)\n }\n : undefined\n }, [onFilteringChange, filteringState, autoResetPageIndexHandler])\n\n const paginationStateHandler = React.useCallback(() => {\n return onPaginationChange\n ? onPaginationChangeTransformer(onPaginationChange, paginationState)\n : undefined\n }, [onPaginationChange, paginationState])\n\n const instance = useReactTable({\n ...options,\n getCoreRowModel: getCoreRowModel(),\n state: {\n rowSelection: rowSelectionState ?? {},\n sorting: sortingState ? [sortingState] : undefined,\n columnFilters: Object.entries(filteringState ?? {}).map(\n ([id, filter]) => ({\n id,\n value: filter,\n })\n ),\n pagination: paginationState,\n },\n enableRowSelection,\n rowCount,\n onColumnFiltersChange: filteringStateHandler(),\n onRowSelectionChange: rowSelectionStateHandler(),\n onSortingChange: sortingStateHandler(),\n onPaginationChange: paginationStateHandler(),\n manualSorting: true,\n manualPagination: true,\n manualFiltering: true,\n })\n\n const getSorting = React.useCallback(() => {\n return instance.getState().sorting?.[0] ?? null\n }, [instance])\n\n const setSorting = React.useCallback(\n (\n sortingOrUpdater: ColumnSort | ((prev: ColumnSort | null) => ColumnSort)\n ) => {\n const currentSort = instance.getState().sorting?.[0] ?? null\n const newSorting =\n typeof sortingOrUpdater === \"function\"\n ? sortingOrUpdater(currentSort)\n : sortingOrUpdater\n\n autoResetPageIndexHandler()?.()\n instance.setSorting([newSorting])\n },\n [instance, autoResetPageIndexHandler]\n )\n\n const getFilters = React.useCallback(() => {\n return filters ?? []\n }, [filters])\n\n const getFilterOptions = React.useCallback(\n <T extends string | string[] | DataTableDateComparisonOperator>(\n id: string\n ) => {\n const filter = getFilters().find((filter) => filter.id === id)\n\n if (!filter) {\n return null\n }\n\n return filter.options as DataTableFilterOption<T>[]\n },\n [getFilters]\n )\n\n const getFilterMeta = React.useCallback(\n (id: string) => {\n return getFilters().find((filter) => filter.id === id) || null\n },\n [getFilters]\n )\n\n const getFiltering = React.useCallback(() => {\n const state = instance.getState().columnFilters ?? []\n return Object.fromEntries(state.map((filter) => [filter.id, filter.value]))\n }, [instance])\n\n const addFilter = React.useCallback(\n (filter: ColumnFilter) => {\n if (filter.value) {\n autoResetPageIndexHandler()?.()\n }\n onFilteringChange?.({ ...getFiltering(), [filter.id]: filter.value })\n },\n [onFilteringChange, getFiltering, autoResetPageIndexHandler]\n )\n\n const removeFilter = React.useCallback(\n (id: string) => {\n const currentFilters = getFiltering()\n delete currentFilters[id]\n autoResetPageIndexHandler()?.()\n onFilteringChange?.(currentFilters)\n },\n [onFilteringChange, getFiltering, autoResetPageIndexHandler]\n )\n\n const clearFilters = React.useCallback(() => {\n autoResetPageIndexHandler()?.()\n onFilteringChange?.({})\n }, [onFilteringChange, autoResetPageIndexHandler])\n\n const updateFilter = React.useCallback(\n (filter: ColumnFilter) => {\n addFilter(filter)\n },\n [addFilter]\n )\n\n const { state: searchState, onSearchChange, debounce = 300 } = search ?? {}\n\n const [localSearch, setLocalSearch] = React.useState(searchState ?? \"\")\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout>>()\n\n React.useEffect(() => {\n setLocalSearch(searchState ?? \"\")\n }, [searchState])\n\n const getSearch = React.useCallback(() => {\n return localSearch\n }, [localSearch])\n\n const debouncedSearchChange = React.useMemo(() => {\n if (!onSearchChange) {\n return undefined\n }\n\n return (value: string) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n if (debounce <= 0) {\n autoResetPageIndexHandler()?.()\n onSearchChange(value)\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n autoResetPageIndexHandler()?.()\n onSearchChange(value)\n }, debounce)\n }\n }, [onSearchChange, debounce, autoResetPageIndexHandler])\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [])\n\n const onSearchChangeHandler = React.useCallback(\n (search: string) => {\n setLocalSearch(search)\n debouncedSearchChange?.(search)\n },\n [debouncedSearchChange]\n )\n\n const getCommands = React.useCallback(() => {\n return commands ?? []\n }, [commands])\n\n const getRowSelection = React.useCallback(() => {\n return instance.getState().rowSelection\n }, [instance])\n\n const rows = instance.getRowModel().rows\n\n const emptyState = React.useMemo(() => {\n const hasRows = rows.length > 0\n const hasSearch = Boolean(searchState)\n const hasFilters = Object.keys(filteringState ?? {}).length > 0\n\n if (hasRows) {\n return DataTableEmptyState.POPULATED\n }\n\n if (hasSearch || hasFilters) {\n return DataTableEmptyState.FILTERED_EMPTY\n }\n\n return DataTableEmptyState.EMPTY\n }, [rows, searchState, filteringState])\n\n const showSkeleton = React.useMemo(() => {\n return isLoading === true && rows.length === 0\n }, [isLoading, rows])\n\n const enablePagination: boolean = !!pagination\n const enableFiltering: boolean = !!filtering\n const enableSorting: boolean = !!sorting\n const enableSearch: boolean = !!search\n\n return {\n // Table\n getHeaderGroups: instance.getHeaderGroups,\n getRowModel: instance.getRowModel,\n getAllColumns: instance.getAllColumns,\n // Pagination\n enablePagination,\n getCanNextPage: instance.getCanNextPage,\n getCanPreviousPage: instance.getCanPreviousPage,\n nextPage: instance.nextPage,\n previousPage: instance.previousPage,\n getPageCount: instance.getPageCount,\n pageIndex: instance.getState()?.pagination?.pageIndex ?? 0,\n pageSize: instance.getState()?.pagination?.pageSize ?? 10,\n rowCount,\n // Search\n enableSearch,\n getSearch,\n onSearchChange: onSearchChangeHandler,\n // Sorting\n enableSorting,\n getSorting,\n setSorting,\n // Filtering\n enableFiltering,\n getFilters,\n getFilterOptions,\n getFilterMeta,\n getFiltering,\n addFilter,\n removeFilter,\n clearFilters,\n updateFilter,\n // Commands\n getCommands,\n getRowSelection,\n // Handlers\n onRowClick,\n // Empty State\n emptyState,\n // Loading\n isLoading,\n showSkeleton,\n }\n}\n\nfunction onSortingChangeTransformer(\n onSortingChange: (state: ColumnSort) => void,\n state?: ColumnSort | null\n) {\n return (updaterOrValue: Updater<SortingState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ? [state] : [])\n : updaterOrValue\n const columnSort = value[0]\n\n onSortingChange(columnSort)\n }\n}\n\nfunction onRowSelectionChangeTransformer(\n onRowSelectionChange: (state: RowSelectionState) => void,\n state?: RowSelectionState\n) {\n return (updaterOrValue: Updater<RowSelectionState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ?? {})\n : updaterOrValue\n\n onRowSelectionChange(value)\n }\n}\n\nfunction onFilteringChangeTransformer(\n onFilteringChange: (state: DataTableFilteringState) => void,\n state?: DataTableFilteringState\n) {\n return (updaterOrValue: Updater<ColumnFiltersState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(\n Object.entries(state ?? {}).map(([id, filter]) => ({\n id,\n value: filter,\n }))\n )\n : updaterOrValue\n\n const transformedValue = Object.fromEntries(\n value.map((filter) => [filter.id, filter])\n )\n\n onFilteringChange(transformedValue)\n }\n}\n\nfunction onPaginationChangeTransformer(\n onPaginationChange: (state: PaginationState) => void,\n state?: PaginationState\n) {\n return (updaterOrValue: Updater<PaginationState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ?? { pageIndex: 0, pageSize: 10 })\n : updaterOrValue\n\n onPaginationChange(value)\n }\n}\n\nexport { useDataTable }\nexport type { DataTableOptions, UseDataTableReturn }\n"]}
|
1
|
+
{"version":3,"file":"use-data-table.js","sourceRoot":"","sources":["../../../../src/blocks/data-table/use-data-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n ColumnFilter,\n ColumnFiltersState,\n type ColumnSort,\n type ColumnOrderState,\n getCoreRowModel,\n PaginationState,\n type RowSelectionState,\n type SortingState,\n type TableOptions,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from \"@tanstack/react-table\"\nimport * as React from \"react\"\nimport {\n DataTableColumnDef,\n DataTableColumnFilter,\n DataTableCommand,\n DataTableDateComparisonOperator,\n DataTableEmptyState,\n DataTableFilter,\n DataTableFilteringState,\n DataTableFilterOption,\n DataTablePaginationState,\n DataTableRow,\n DataTableRowSelectionState,\n DataTableSortingState,\n} from \"./types\"\n\ninterface DataTableOptions<TData>\n extends Pick<TableOptions<TData>, \"data\" | \"getRowId\"> {\n /**\n * The columns to use for the table.\n */\n columns: DataTableColumnDef<TData, any>[]\n /**\n * The filters which the user can apply to the table.\n */\n filters?: DataTableFilter[]\n /**\n * The commands which the user can apply to selected rows.\n */\n commands?: DataTableCommand[]\n /**\n * Whether the data for the table is currently being loaded.\n */\n isLoading?: boolean\n /**\n * The state and callback for the filtering.\n */\n filtering?: {\n state: DataTableFilteringState\n onFilteringChange: (state: DataTableFilteringState) => void\n }\n /**\n * The state and callback for the row selection.\n */\n rowSelection?: {\n state: DataTableRowSelectionState\n onRowSelectionChange: (state: DataTableRowSelectionState) => void\n enableRowSelection?:\n | boolean\n | ((row: DataTableRow<TData>) => boolean)\n | undefined\n }\n /**\n * The state and callback for the sorting.\n */\n sorting?: {\n state: DataTableSortingState | null\n onSortingChange: (state: DataTableSortingState) => void\n }\n /**\n * The state and callback for the search, with optional debounce.\n */\n search?: {\n state: string\n onSearchChange: (state: string) => void\n /**\n * Debounce time in milliseconds for the search callback.\n * @default 300\n */\n debounce?: number\n }\n /**\n * The state and callback for the pagination.\n */\n pagination?: {\n state: DataTablePaginationState\n onPaginationChange: (state: DataTablePaginationState) => void\n }\n /**\n * The function to execute when a row is clicked.\n */\n onRowClick?: (\n event: React.MouseEvent<HTMLTableRowElement, MouseEvent>,\n row: TData\n ) => void\n /**\n * The total count of rows. When working with pagination, this will be the total\n * number of rows available, not the number of rows currently being displayed.\n */\n rowCount?: number\n /**\n * Whether the page index should be reset the filtering, sorting, or pagination changes.\n *\n * @default true\n */\n autoResetPageIndex?: boolean\n /**\n * The state and callback for the column visibility.\n */\n columnVisibility?: {\n state: VisibilityState\n onColumnVisibilityChange: (state: VisibilityState) => void\n }\n /**\n * The state and callback for the column order.\n */\n columnOrder?: {\n state: ColumnOrderState\n onColumnOrderChange: (state: ColumnOrderState) => void\n }\n}\n\ninterface UseDataTableReturn<TData>\n extends Pick<\n ReturnType<typeof useReactTable<TData>>,\n | \"getHeaderGroups\"\n | \"getRowModel\"\n | \"getCanNextPage\"\n | \"getCanPreviousPage\"\n | \"nextPage\"\n | \"previousPage\"\n | \"getPageCount\"\n | \"getAllColumns\"\n | \"setColumnVisibility\"\n | \"setColumnOrder\"\n > {\n getSorting: () => DataTableSortingState | null\n setSorting: (\n sortingOrUpdater:\n | DataTableSortingState\n | ((prev: DataTableSortingState | null) => DataTableSortingState)\n ) => void\n getFilters: () => DataTableFilter[]\n getFilterOptions: <\n T extends string | string[] | DataTableDateComparisonOperator\n >(\n id: string\n ) => DataTableFilterOption<T>[] | null\n getFilterMeta: (id: string) => DataTableFilter | null\n getFiltering: () => DataTableFilteringState\n addFilter: (filter: DataTableColumnFilter) => void\n removeFilter: (id: string) => void\n clearFilters: () => void\n updateFilter: (filter: DataTableColumnFilter) => void\n getSearch: () => string\n onSearchChange: (search: string) => void\n getCommands: () => DataTableCommand[]\n getRowSelection: () => DataTableRowSelectionState\n onRowClick?: (\n event: React.MouseEvent<HTMLTableRowElement, MouseEvent>,\n row: TData\n ) => void\n emptyState: DataTableEmptyState\n isLoading: boolean\n showSkeleton: boolean\n pageIndex: number\n pageSize: number\n rowCount: number\n enablePagination: boolean\n enableFiltering: boolean\n enableSorting: boolean\n enableSearch: boolean\n enableColumnVisibility: boolean\n enableColumnOrder: boolean\n columnOrder: ColumnOrderState\n setColumnOrderFromArray: (order: string[]) => void\n}\n\nconst useDataTable = <TData,>({\n rowCount = 0,\n filters,\n commands,\n rowSelection,\n sorting,\n filtering,\n pagination,\n search,\n onRowClick,\n autoResetPageIndex = true,\n isLoading = false,\n columnVisibility,\n columnOrder,\n ...options\n}: DataTableOptions<TData>): UseDataTableReturn<TData> => {\n const { state: sortingState, onSortingChange } = sorting ?? {}\n const { state: filteringState, onFilteringChange } = filtering ?? {}\n const { state: paginationState, onPaginationChange } = pagination ?? {}\n const {\n state: rowSelectionState,\n onRowSelectionChange,\n enableRowSelection,\n } = rowSelection ?? {}\n const { state: columnVisibilityState, onColumnVisibilityChange } = columnVisibility ?? {}\n const { state: columnOrderState, onColumnOrderChange } = columnOrder ?? {}\n \n // Store filter metadata like openOnMount\n\n const autoResetPageIndexHandler = React.useCallback(() => {\n return autoResetPageIndex\n ? () =>\n paginationState &&\n onPaginationChange?.({ ...paginationState, pageIndex: 0 })\n : undefined\n }, [autoResetPageIndex, paginationState, onPaginationChange])\n\n const sortingStateHandler = React.useCallback(() => {\n return onSortingChange\n ? (updaterOrValue: Updater<SortingState>) => {\n autoResetPageIndexHandler()?.()\n onSortingChangeTransformer(\n onSortingChange,\n sortingState\n )(updaterOrValue)\n }\n : undefined\n }, [onSortingChange, sortingState, autoResetPageIndexHandler])\n\n const rowSelectionStateHandler = React.useCallback(() => {\n return onRowSelectionChange\n ? (updaterOrValue: Updater<RowSelectionState>) => {\n onRowSelectionChangeTransformer(\n onRowSelectionChange,\n rowSelectionState\n )(updaterOrValue)\n }\n : undefined\n }, [onRowSelectionChange, rowSelectionState, autoResetPageIndexHandler])\n\n const filteringStateHandler = React.useCallback(() => {\n return onFilteringChange\n ? (updaterOrValue: Updater<ColumnFiltersState>) => {\n autoResetPageIndexHandler()?.()\n onFilteringChangeTransformer(\n onFilteringChange,\n filteringState\n )(updaterOrValue)\n }\n : undefined\n }, [onFilteringChange, filteringState, autoResetPageIndexHandler])\n\n const paginationStateHandler = React.useCallback(() => {\n return onPaginationChange\n ? onPaginationChangeTransformer(onPaginationChange, paginationState)\n : undefined\n }, [onPaginationChange, paginationState])\n\n const columnVisibilityStateHandler = React.useCallback(() => {\n return onColumnVisibilityChange\n ? (updaterOrValue: Updater<VisibilityState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(columnVisibilityState ?? {})\n : updaterOrValue\n\n onColumnVisibilityChange(value)\n }\n : undefined\n }, [onColumnVisibilityChange, columnVisibilityState])\n\n const columnOrderStateHandler = React.useCallback(() => {\n return onColumnOrderChange\n ? (updaterOrValue: Updater<ColumnOrderState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(columnOrderState ?? [])\n : updaterOrValue\n\n onColumnOrderChange(value)\n }\n : undefined\n }, [onColumnOrderChange, columnOrderState])\n\n const instance = useReactTable({\n ...options,\n getCoreRowModel: getCoreRowModel(),\n state: {\n rowSelection: rowSelectionState ?? {},\n sorting: sortingState ? [sortingState] : undefined,\n columnFilters: Object.entries(filteringState ?? {}).map(\n ([id, filter]) => ({\n id,\n value: filter,\n })\n ),\n pagination: paginationState,\n columnVisibility: columnVisibilityState ?? {},\n columnOrder: columnOrderState ?? [],\n },\n enableRowSelection,\n rowCount,\n onColumnFiltersChange: filteringStateHandler(),\n onRowSelectionChange: rowSelectionStateHandler(),\n onSortingChange: sortingStateHandler(),\n onPaginationChange: paginationStateHandler(),\n onColumnVisibilityChange: columnVisibilityStateHandler(),\n onColumnOrderChange: columnOrderStateHandler(),\n manualSorting: true,\n manualPagination: true,\n manualFiltering: true,\n })\n\n const getSorting = React.useCallback(() => {\n return instance.getState().sorting?.[0] ?? null\n }, [instance])\n\n const setSorting = React.useCallback(\n (\n sortingOrUpdater: ColumnSort | ((prev: ColumnSort | null) => ColumnSort)\n ) => {\n const currentSort = instance.getState().sorting?.[0] ?? null\n const newSorting =\n typeof sortingOrUpdater === \"function\"\n ? sortingOrUpdater(currentSort)\n : sortingOrUpdater\n\n autoResetPageIndexHandler()?.()\n instance.setSorting([newSorting])\n },\n [instance, autoResetPageIndexHandler]\n )\n\n const getFilters = React.useCallback(() => {\n return filters ?? []\n }, [filters])\n\n const getFilterOptions = React.useCallback(\n <T extends string | string[] | DataTableDateComparisonOperator>(\n id: string\n ) => {\n const filter = getFilters().find((filter) => filter.id === id)\n\n if (!filter) {\n return null\n }\n\n return ((filter as any).options as DataTableFilterOption<T>[]) || null\n },\n [getFilters]\n )\n\n const getFilterMeta = React.useCallback(\n (id: string) => {\n return getFilters().find((filter) => filter.id === id) || null\n },\n [getFilters]\n )\n\n const getFiltering = React.useCallback(() => {\n const state = instance.getState().columnFilters ?? []\n return Object.fromEntries(state.map((filter) => [filter.id, filter.value]))\n }, [instance])\n\n const addFilter = React.useCallback(\n (filter: DataTableColumnFilter) => {\n const currentFilters = getFiltering()\n const newFilters = { ...currentFilters, [filter.id]: filter.value }\n autoResetPageIndexHandler()?.()\n onFilteringChange?.(newFilters)\n },\n [onFilteringChange, getFiltering, autoResetPageIndexHandler]\n )\n\n const removeFilter = React.useCallback(\n (id: string) => {\n const currentFilters = getFiltering()\n delete currentFilters[id]\n autoResetPageIndexHandler()?.()\n onFilteringChange?.(currentFilters)\n },\n [onFilteringChange, getFiltering, autoResetPageIndexHandler]\n )\n\n const clearFilters = React.useCallback(() => {\n autoResetPageIndexHandler()?.()\n onFilteringChange?.({})\n }, [onFilteringChange, autoResetPageIndexHandler])\n\n const updateFilter = React.useCallback(\n (filter: ColumnFilter) => {\n addFilter(filter)\n },\n [addFilter]\n )\n\n const { state: searchState, onSearchChange, debounce = 300 } = search ?? {}\n\n const [localSearch, setLocalSearch] = React.useState(searchState ?? \"\")\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout>>()\n\n React.useEffect(() => {\n setLocalSearch(searchState ?? \"\")\n }, [searchState])\n\n const getSearch = React.useCallback(() => {\n return localSearch\n }, [localSearch])\n\n const debouncedSearchChange = React.useMemo(() => {\n if (!onSearchChange) {\n return undefined\n }\n\n return (value: string) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n if (debounce <= 0) {\n autoResetPageIndexHandler()?.()\n onSearchChange(value)\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n autoResetPageIndexHandler()?.()\n onSearchChange(value)\n }, debounce)\n }\n }, [onSearchChange, debounce, autoResetPageIndexHandler])\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [])\n\n const onSearchChangeHandler = React.useCallback(\n (search: string) => {\n setLocalSearch(search)\n debouncedSearchChange?.(search)\n },\n [debouncedSearchChange]\n )\n\n const getCommands = React.useCallback(() => {\n return commands ?? []\n }, [commands])\n\n const getRowSelection = React.useCallback(() => {\n return instance.getState().rowSelection\n }, [instance])\n\n const rows = instance.getRowModel().rows\n\n const emptyState = React.useMemo(() => {\n const hasRows = rows.length > 0\n const hasSearch = Boolean(searchState)\n const hasFilters = Object.keys(filteringState ?? {}).length > 0\n\n if (hasRows) {\n return DataTableEmptyState.POPULATED\n }\n\n if (hasSearch || hasFilters) {\n return DataTableEmptyState.FILTERED_EMPTY\n }\n\n return DataTableEmptyState.EMPTY\n }, [rows, searchState, filteringState])\n\n const showSkeleton = React.useMemo(() => {\n return isLoading === true && rows.length === 0\n }, [isLoading, rows])\n\n const enablePagination: boolean = !!pagination\n const enableFiltering: boolean = !!filtering\n const enableSorting: boolean = !!sorting\n const enableSearch: boolean = !!search\n const enableColumnVisibility: boolean = !!columnVisibility\n const enableColumnOrder: boolean = !!columnOrder\n\n const setColumnOrderFromArray = React.useCallback((order: string[]) => {\n instance.setColumnOrder(order)\n }, [instance])\n\n return {\n // Table\n getHeaderGroups: instance.getHeaderGroups,\n getRowModel: instance.getRowModel,\n getAllColumns: instance.getAllColumns,\n setColumnVisibility: instance.setColumnVisibility,\n setColumnOrder: instance.setColumnOrder,\n // Pagination\n enablePagination,\n getCanNextPage: instance.getCanNextPage,\n getCanPreviousPage: instance.getCanPreviousPage,\n nextPage: instance.nextPage,\n previousPage: instance.previousPage,\n getPageCount: instance.getPageCount,\n pageIndex: instance.getState()?.pagination?.pageIndex ?? 0,\n pageSize: instance.getState()?.pagination?.pageSize ?? 10,\n rowCount,\n // Search\n enableSearch,\n getSearch,\n onSearchChange: onSearchChangeHandler,\n // Sorting\n enableSorting,\n getSorting,\n setSorting,\n // Filtering\n enableFiltering,\n getFilters,\n getFilterOptions,\n getFilterMeta,\n getFiltering,\n addFilter,\n removeFilter,\n clearFilters,\n updateFilter,\n // Commands\n getCommands,\n getRowSelection,\n // Handlers\n onRowClick,\n // Empty State\n emptyState,\n // Loading\n isLoading,\n showSkeleton,\n // Column Visibility\n enableColumnVisibility,\n // Column Order\n enableColumnOrder,\n columnOrder: instance.getState().columnOrder,\n setColumnOrderFromArray,\n }\n}\n\nfunction onSortingChangeTransformer(\n onSortingChange: (state: ColumnSort) => void,\n state?: ColumnSort | null\n) {\n return (updaterOrValue: Updater<SortingState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ? [state] : [])\n : updaterOrValue\n const columnSort = value[0]\n\n onSortingChange(columnSort)\n }\n}\n\nfunction onRowSelectionChangeTransformer(\n onRowSelectionChange: (state: RowSelectionState) => void,\n state?: RowSelectionState\n) {\n return (updaterOrValue: Updater<RowSelectionState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ?? {})\n : updaterOrValue\n\n onRowSelectionChange(value)\n }\n}\n\nfunction onFilteringChangeTransformer(\n onFilteringChange: (state: DataTableFilteringState) => void,\n state?: DataTableFilteringState\n) {\n return (updaterOrValue: Updater<ColumnFiltersState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(\n Object.entries(state ?? {}).map(([id, filter]) => ({\n id,\n value: filter,\n }))\n )\n : updaterOrValue\n\n const transformedValue = Object.fromEntries(\n value.map((filter) => [filter.id, filter.value])\n )\n\n onFilteringChange(transformedValue)\n }\n}\n\nfunction onPaginationChangeTransformer(\n onPaginationChange: (state: PaginationState) => void,\n state?: PaginationState\n) {\n return (updaterOrValue: Updater<PaginationState>) => {\n const value =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(state ?? { pageIndex: 0, pageSize: 10 })\n : updaterOrValue\n\n onPaginationChange(value)\n }\n}\n\nexport { useDataTable }\nexport type { DataTableOptions, UseDataTableReturn }\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create-data-table-column-helper.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-column-helper.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,qBAAqB,
|
1
|
+
{"version":3,"file":"create-data-table-column-helper.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-column-helper.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,qBAAqB,EAMtB,MAAM,UAAU,CAAA;AAEjB,QAAA,MAAM,2BAA2B,eAE5B,sBAAsB,KAAK,CAkD/B,CAAA;AAQD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
|
@@ -11,9 +11,10 @@ const createDataTableColumnHelper = () => {
|
|
11
11
|
const { accessor: accessorTanstack, display } = (0, react_table_1.createColumnHelper)();
|
12
12
|
return {
|
13
13
|
accessor: (accessor, column) => {
|
14
|
-
const { sortLabel, sortAscLabel, sortDescLabel, meta, enableSorting, ...rest } = column;
|
14
|
+
const { sortLabel, sortAscLabel, sortDescLabel, headerAlign, meta, enableSorting, ...rest } = column;
|
15
15
|
const extendedMeta = {
|
16
16
|
___sortMetaData: { sortLabel, sortAscLabel, sortDescLabel },
|
17
|
+
___alignMetaData: { headerAlign },
|
17
18
|
...(meta || {}),
|
18
19
|
};
|
19
20
|
return accessorTanstack(accessor, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create-data-table-column-helper.js","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-column-helper.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;AAEZ,uDAAwF;AACxF,qDAA8B;AAC9B,iFAA0E;AAC1E,iFAG6C;
|
1
|
+
{"version":3,"file":"create-data-table-column-helper.js","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-column-helper.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;AAEZ,uDAAwF;AACxF,qDAA8B;AAC9B,iFAA0E;AAC1E,iFAG6C;AAW7C,MAAM,2BAA2B,GAAG,GAEF,EAAE;IAClC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAC3C,IAAA,gCAA0B,GAAS,CAAA;IAErC,OAAO;QACL,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,IAAI,EACJ,aAAa,EACb,GAAG,IAAI,EACR,GAAG,MAAwE,CAAA;YAE5E,MAAM,YAAY,GAAqE;gBACrF,eAAe,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE;gBAC3D,gBAAgB,EAAE,EAAE,WAAW,EAAE;gBACjC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;aAChB,CAAA;YAED,OAAO,gBAAgB,CAAC,QAAQ,EAAE;gBAChC,GAAG,IAAI;gBACP,aAAa,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,KAAK;gBACrC,IAAI,EAAE,YAAY;aACnB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO;QACP,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAmC,EAAE,EAAE,CACjE,OAAO,CAAC;YACN,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAC,4CAAmB,IAAC,GAAG,EAAE,GAAG,GAAI;YAChD,IAAI,EAAE;gBACJ,UAAU,EAAE,OAAO;gBACnB,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;aACtB;YACD,GAAG,KAAK;SACT,CAAC;QACJ,MAAM,EAAE,CAAC,KAAuC,EAAE,EAAE,CAClD,OAAO,CAAC;YACN,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM;gBACnB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAC,8CAAqB,IAAC,GAAG,EAAE,GAAG,GAAI;YAChD,IAAI,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI;gBACf,CAAC,CAAC,KAAK,CAAC,IAAI;gBACZ,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAC,4CAAmB,IAAC,GAAG,EAAE,GAAG,GAAI;SAC/C,CAAC;KACL,CAAA;AACH,CAAC,CAAA;AAQQ,kEAA2B;AANpC,MAAM,MAAM,GAAG,IAAA,gCAA0B,GAAE,CAAA;AAE3C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,EAAE;CACT,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport { createColumnHelper as createColumnHelperTanstack } from \"@tanstack/react-table\"\nimport * as React from \"react\"\nimport { DataTableActionCell } from \"../components/data-table-action-cell\"\nimport {\n DataTableSelectCell,\n DataTableSelectHeader,\n} from \"../components/data-table-select-cell\"\nimport {\n DataTableActionColumnDef,\n DataTableColumnHelper,\n DataTableSelectColumnDef,\n DataTableSortableColumnDef,\n DataTableSortableColumnDefMeta,\n DataTableAlignableColumnDef,\n DataTableAlignableColumnDefMeta,\n} from \"../types\"\n\nconst createDataTableColumnHelper = <\n TData,\n>(): DataTableColumnHelper<TData> => {\n const { accessor: accessorTanstack, display } =\n createColumnHelperTanstack<TData>()\n\n return {\n accessor: (accessor, column) => {\n const {\n sortLabel,\n sortAscLabel,\n sortDescLabel,\n headerAlign,\n meta,\n enableSorting,\n ...rest\n } = column as any & DataTableSortableColumnDef & DataTableAlignableColumnDef\n\n const extendedMeta: DataTableSortableColumnDefMeta & DataTableAlignableColumnDefMeta = {\n ___sortMetaData: { sortLabel, sortAscLabel, sortDescLabel },\n ___alignMetaData: { headerAlign },\n ...(meta || {}),\n }\n\n return accessorTanstack(accessor, {\n ...rest,\n enableSorting: enableSorting ?? false,\n meta: extendedMeta,\n })\n },\n display,\n action: ({ actions, ...props }: DataTableActionColumnDef<TData>) =>\n display({\n id: \"action\",\n cell: (ctx) => <DataTableActionCell ctx={ctx} />,\n meta: {\n ___actions: actions,\n ...(props.meta || {}),\n },\n ...props,\n }),\n select: (props?: DataTableSelectColumnDef<TData>) =>\n display({\n id: \"select\",\n header: props?.header\n ? props.header\n : (ctx) => <DataTableSelectHeader ctx={ctx} />,\n cell: props?.cell\n ? props.cell\n : (ctx) => <DataTableSelectCell ctx={ctx} />,\n }),\n }\n}\n\nconst helper = createColumnHelperTanstack()\n\nhelper.accessor(\"name\", {\n meta: {},\n})\n\nexport { createDataTableColumnHelper }\n"]}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/// <reference types="react" />
|
1
2
|
import { DeepKeys } from "@tanstack/react-table";
|
2
3
|
import { DataTableFilter, DataTableFilterProps } from "../types";
|
3
4
|
declare const createDataTableFilterHelper: <TData>() => {
|
@@ -22,6 +23,32 @@ declare const createDataTableFilterHelper: <TData>() => {
|
|
22
23
|
options: import("../types").DataTableFilterOption<import("../types").DataTableDateComparisonOperator>[];
|
23
24
|
label: string;
|
24
25
|
id: DeepKeys<TData>;
|
26
|
+
} | {
|
27
|
+
type: "multiselect";
|
28
|
+
options: import("../types").DataTableFilterOption<string>[];
|
29
|
+
searchable?: boolean | undefined;
|
30
|
+
label: string;
|
31
|
+
id: DeepKeys<TData>;
|
32
|
+
} | {
|
33
|
+
type: "string";
|
34
|
+
placeholder?: string | undefined;
|
35
|
+
label: string;
|
36
|
+
id: DeepKeys<TData>;
|
37
|
+
} | {
|
38
|
+
type: "number";
|
39
|
+
placeholder?: string | undefined;
|
40
|
+
includeOperators?: boolean | undefined;
|
41
|
+
label: string;
|
42
|
+
id: DeepKeys<TData>;
|
43
|
+
} | {
|
44
|
+
type: "custom";
|
45
|
+
render: (props: {
|
46
|
+
value: any;
|
47
|
+
onChange: (value: any) => void;
|
48
|
+
onRemove: () => void;
|
49
|
+
}) => import("react").ReactNode;
|
50
|
+
label: string;
|
51
|
+
id: DeepKeys<TData>;
|
25
52
|
};
|
26
53
|
custom: <T extends DataTableFilterProps>(props: DataTableFilter<T>) => DataTableFilter<T>;
|
27
54
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create-data-table-filter-helper.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-filter-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAGhE,QAAA,MAAM,2BAA2B;yBACV,SAAS,KAAK,CAAC,SAAS,oBAAoB
|
1
|
+
{"version":3,"file":"create-data-table-filter-helper.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/utils/create-data-table-filter-helper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAGhE,QAAA,MAAM,2BAA2B;yBACV,SAAS,KAAK,CAAC,SAAS,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAIjB,gBAAgB,CAAC,CAAC;CAClE,CAAA;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React from "react";
|
2
|
+
interface DataTableColumnVisibilityMenuProps {
|
3
|
+
className?: string;
|
4
|
+
tooltip?: string;
|
5
|
+
}
|
6
|
+
declare const DataTableColumnVisibilityMenu: ({ className, tooltip, }: DataTableColumnVisibilityMenuProps) => React.JSX.Element | null;
|
7
|
+
export { DataTableColumnVisibilityMenu };
|
8
|
+
export type { DataTableColumnVisibilityMenuProps };
|
9
|
+
//# sourceMappingURL=data-table-column-visibility-menu.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-table-column-visibility-menu.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/components/data-table-column-visibility-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,UAAU,kCAAkC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,QAAA,MAAM,6BAA6B,4BAGhC,kCAAkC,6BA8EpC,CAAA;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAA;AACxC,YAAY,EAAE,kCAAkC,EAAE,CAAA"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { Checkbox } from "../../../components/checkbox";
|
3
|
+
import { DropdownMenu } from "../../../components/dropdown-menu";
|
4
|
+
import { IconButton } from "../../../components/icon-button";
|
5
|
+
import { Tooltip } from "../../../components/tooltip";
|
6
|
+
import { Adjustments } from "@medusajs/icons";
|
7
|
+
import { useDataTableContext } from "../context/use-data-table-context";
|
8
|
+
const DataTableColumnVisibilityMenu = ({ className, tooltip, }) => {
|
9
|
+
const { instance, enableColumnVisibility } = useDataTableContext();
|
10
|
+
if (!enableColumnVisibility) {
|
11
|
+
return null;
|
12
|
+
}
|
13
|
+
const columns = instance
|
14
|
+
.getAllColumns()
|
15
|
+
.filter((column) => column.getCanHide());
|
16
|
+
const handleToggleColumn = (column) => {
|
17
|
+
column.toggleVisibility();
|
18
|
+
};
|
19
|
+
const handleToggleAll = (value) => {
|
20
|
+
instance.setColumnVisibility(Object.fromEntries(columns.map((column) => [column.id, value])));
|
21
|
+
};
|
22
|
+
const allColumnsVisible = columns.every((column) => column.getIsVisible());
|
23
|
+
const someColumnsVisible = columns.some((column) => column.getIsVisible());
|
24
|
+
const Wrapper = tooltip ? Tooltip : React.Fragment;
|
25
|
+
const wrapperProps = tooltip ? { content: tooltip } : {};
|
26
|
+
return (React.createElement(DropdownMenu, null,
|
27
|
+
React.createElement(Wrapper, { ...wrapperProps },
|
28
|
+
React.createElement(DropdownMenu.Trigger, { asChild: true },
|
29
|
+
React.createElement(IconButton, { size: "small", className: className },
|
30
|
+
React.createElement(Adjustments, null)))),
|
31
|
+
React.createElement(DropdownMenu.Content, { align: "end", className: "min-w-[200px] max-h-[400px] overflow-hidden" },
|
32
|
+
React.createElement(DropdownMenu.Label, null, "Toggle columns"),
|
33
|
+
React.createElement(DropdownMenu.Separator, null),
|
34
|
+
React.createElement(DropdownMenu.Item, { onSelect: (e) => {
|
35
|
+
e.preventDefault();
|
36
|
+
handleToggleAll(!allColumnsVisible);
|
37
|
+
} },
|
38
|
+
React.createElement("div", { className: "flex items-center gap-x-2" },
|
39
|
+
React.createElement(Checkbox, { checked: allColumnsVisible ? true : (someColumnsVisible && !allColumnsVisible) ? "indeterminate" : false }),
|
40
|
+
React.createElement("span", null, "Toggle all"))),
|
41
|
+
React.createElement(DropdownMenu.Separator, null),
|
42
|
+
React.createElement("div", { className: "max-h-[250px] overflow-y-auto" }, columns.map((column) => {
|
43
|
+
var _a;
|
44
|
+
return (React.createElement(DropdownMenu.Item, { key: column.id, onSelect: (e) => {
|
45
|
+
e.preventDefault();
|
46
|
+
handleToggleColumn(column);
|
47
|
+
} },
|
48
|
+
React.createElement("div", { className: "flex items-center gap-x-2" },
|
49
|
+
React.createElement(Checkbox, { checked: column.getIsVisible() }),
|
50
|
+
React.createElement("span", { className: "truncate" }, ((_a = column.columnDef.meta) === null || _a === void 0 ? void 0 : _a.name) || column.id))));
|
51
|
+
})))));
|
52
|
+
};
|
53
|
+
export { DataTableColumnVisibilityMenu };
|
54
|
+
//# sourceMappingURL=data-table-column-visibility-menu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-table-column-visibility-menu.js","sourceRoot":"","sources":["../../../../../src/blocks/data-table/components/data-table-column-visibility-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\"\nimport { Column } from \"@tanstack/react-table\"\n\nimport { Checkbox } from \"@/components/checkbox\"\nimport { DropdownMenu } from \"@/components/dropdown-menu\"\nimport { IconButton } from \"@/components/icon-button\"\nimport { Tooltip } from \"@/components/tooltip\"\nimport { Adjustments } from \"@medusajs/icons\"\nimport { clx } from \"@/utils/clx\"\n\nimport { useDataTableContext } from \"../context/use-data-table-context\"\n\ninterface DataTableColumnVisibilityMenuProps {\n className?: string\n tooltip?: string\n}\n\nconst DataTableColumnVisibilityMenu = ({\n className,\n tooltip,\n}: DataTableColumnVisibilityMenuProps) => {\n const { instance, enableColumnVisibility } = useDataTableContext()\n\n if (!enableColumnVisibility) {\n return null\n }\n\n const columns = instance\n .getAllColumns()\n .filter((column) => column.getCanHide())\n\n const handleToggleColumn = (column: Column<any, any>) => {\n column.toggleVisibility()\n }\n\n const handleToggleAll = (value: boolean) => {\n instance.setColumnVisibility(\n Object.fromEntries(\n columns.map((column: Column<any, any>) => [column.id, value])\n )\n )\n }\n\n const allColumnsVisible = columns.every((column: Column<any, any>) => column.getIsVisible())\n const someColumnsVisible = columns.some((column: Column<any, any>) => column.getIsVisible())\n\n const Wrapper = tooltip ? Tooltip : React.Fragment\n const wrapperProps = tooltip ? { content: tooltip } : ({} as any)\n\n return (\n <DropdownMenu>\n <Wrapper {...wrapperProps}>\n <DropdownMenu.Trigger asChild>\n <IconButton size=\"small\" className={className}>\n <Adjustments />\n </IconButton>\n </DropdownMenu.Trigger>\n </Wrapper>\n <DropdownMenu.Content align=\"end\" className=\"min-w-[200px] max-h-[400px] overflow-hidden\">\n <DropdownMenu.Label>Toggle columns</DropdownMenu.Label>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n onSelect={(e: Event) => {\n e.preventDefault()\n handleToggleAll(!allColumnsVisible)\n }}\n >\n <div className=\"flex items-center gap-x-2\">\n <Checkbox\n checked={allColumnsVisible ? true : (someColumnsVisible && !allColumnsVisible) ? \"indeterminate\" : false}\n />\n <span>Toggle all</span>\n </div>\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <div className=\"max-h-[250px] overflow-y-auto\">\n {columns.map((column: Column<any, any>) => {\n return (\n <DropdownMenu.Item\n key={column.id}\n onSelect={(e: Event) => {\n e.preventDefault()\n handleToggleColumn(column)\n }}\n >\n <div className=\"flex items-center gap-x-2\">\n <Checkbox checked={column.getIsVisible()} />\n <span className=\"truncate\">\n {(column.columnDef.meta as any)?.name || column.id}\n </span>\n </div>\n </DropdownMenu.Item>\n )\n })}\n </div>\n </DropdownMenu.Content>\n </DropdownMenu>\n )\n}\n\nexport { DataTableColumnVisibilityMenu }\nexport type { DataTableColumnVisibilityMenuProps }\n"]}
|
@@ -1,9 +1,13 @@
|
|
1
1
|
import * as React from "react";
|
2
2
|
interface DataTableFilterBarProps {
|
3
3
|
clearAllFiltersLabel?: string;
|
4
|
+
alwaysShow?: boolean;
|
5
|
+
sortingTooltip?: string;
|
6
|
+
columnsTooltip?: string;
|
7
|
+
children?: React.ReactNode;
|
4
8
|
}
|
5
9
|
declare const DataTableFilterBar: {
|
6
|
-
({ clearAllFiltersLabel, }: DataTableFilterBarProps): React.JSX.Element | null;
|
10
|
+
({ clearAllFiltersLabel, alwaysShow, sortingTooltip, columnsTooltip, children, }: DataTableFilterBarProps): React.JSX.Element | null;
|
7
11
|
displayName: string;
|
8
12
|
};
|
9
13
|
export { DataTableFilterBar };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-table-filter-bar.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/components/data-table-filter-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
1
|
+
{"version":3,"file":"data-table-filter-bar.d.ts","sourceRoot":"","sources":["../../../../../src/blocks/data-table/components/data-table-filter-bar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,UAAU,uBAAuB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAQD,QAAA,MAAM,kBAAkB;sFAMrB,uBAAuB;;CAgHzB,CAAA;AAkBD,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,YAAY,EAAE,uBAAuB,EAAE,CAAA"}
|
@@ -1,25 +1,87 @@
|
|
1
1
|
"use client";
|
2
2
|
import * as React from "react";
|
3
3
|
import { DataTableFilter } from "../../data-table/components/data-table-filter";
|
4
|
+
import { DataTableFilterMenu } from "../../data-table/components/data-table-filter-menu";
|
5
|
+
import { DataTableSortingMenu } from "../../data-table/components/data-table-sorting-menu";
|
6
|
+
import { DataTableColumnVisibilityMenu } from "../../data-table/components/data-table-column-visibility-menu";
|
4
7
|
import { useDataTableContext } from "../../data-table/context/use-data-table-context";
|
5
|
-
import { Button } from "../../../components/button";
|
6
8
|
import { Skeleton } from "../../../components/skeleton";
|
7
|
-
const DataTableFilterBar = ({ clearAllFiltersLabel = "Clear all", }) => {
|
8
|
-
const { instance } = useDataTableContext();
|
9
|
-
|
9
|
+
const DataTableFilterBar = ({ clearAllFiltersLabel = "Clear all", alwaysShow = false, sortingTooltip, columnsTooltip, children, }) => {
|
10
|
+
const { instance, enableColumnVisibility } = useDataTableContext();
|
11
|
+
// Local state for managing intermediate filters
|
12
|
+
const [localFilters, setLocalFilters] = React.useState([]);
|
13
|
+
const parentFilterState = instance.getFiltering();
|
14
|
+
const availableFilters = instance.getFilters();
|
15
|
+
// Sync parent filters with local state
|
16
|
+
React.useEffect(() => {
|
17
|
+
setLocalFilters(prevLocalFilters => {
|
18
|
+
const parentIds = Object.keys(parentFilterState);
|
19
|
+
const localIds = prevLocalFilters.map(f => f.id);
|
20
|
+
// Remove local filters that have been removed from parent
|
21
|
+
const updatedLocalFilters = prevLocalFilters.filter(f => parentIds.includes(f.id) || f.isNew);
|
22
|
+
// Add parent filters that don't exist locally
|
23
|
+
parentIds.forEach(id => {
|
24
|
+
if (!localIds.includes(id)) {
|
25
|
+
updatedLocalFilters.push({
|
26
|
+
id,
|
27
|
+
value: parentFilterState[id],
|
28
|
+
isNew: false
|
29
|
+
});
|
30
|
+
}
|
31
|
+
});
|
32
|
+
// Only update if there's an actual change
|
33
|
+
if (updatedLocalFilters.length !== prevLocalFilters.length ||
|
34
|
+
updatedLocalFilters.some((f, i) => { var _a; return f.id !== ((_a = prevLocalFilters[i]) === null || _a === void 0 ? void 0 : _a.id); })) {
|
35
|
+
return updatedLocalFilters;
|
36
|
+
}
|
37
|
+
return prevLocalFilters;
|
38
|
+
});
|
39
|
+
}, [parentFilterState]);
|
40
|
+
// Add a new filter locally
|
41
|
+
const addLocalFilter = React.useCallback((id, value) => {
|
42
|
+
setLocalFilters(prev => [...prev, { id, value, isNew: true }]);
|
43
|
+
}, []);
|
44
|
+
// Update a local filter's value
|
45
|
+
const updateLocalFilter = React.useCallback((id, value) => {
|
46
|
+
setLocalFilters(prev => prev.map(f => f.id === id ? { ...f, value, isNew: false } : f));
|
47
|
+
// If the filter has a meaningful value, propagate to parent
|
48
|
+
if (value !== undefined && value !== null && value !== '' &&
|
49
|
+
!(Array.isArray(value) && value.length === 0)) {
|
50
|
+
instance.updateFilter({ id, value });
|
51
|
+
}
|
52
|
+
}, [instance]);
|
53
|
+
// Remove a local filter
|
54
|
+
const removeLocalFilter = React.useCallback((id) => {
|
55
|
+
setLocalFilters(prev => prev.filter(f => f.id !== id));
|
56
|
+
// Also remove from parent if it exists there
|
57
|
+
if (parentFilterState[id] !== undefined) {
|
58
|
+
instance.removeFilter(id);
|
59
|
+
}
|
60
|
+
}, [instance, parentFilterState]);
|
10
61
|
const clearFilters = React.useCallback(() => {
|
62
|
+
setLocalFilters([]);
|
11
63
|
instance.clearFilters();
|
12
64
|
}, [instance]);
|
13
|
-
const filterCount =
|
14
|
-
|
65
|
+
const filterCount = localFilters.length;
|
66
|
+
const hasAvailableFilters = availableFilters.length > 0;
|
67
|
+
// Check if sorting is enabled
|
68
|
+
const sortableColumns = instance.getAllColumns().filter((column) => column.getCanSort());
|
69
|
+
const hasSorting = instance.enableSorting && sortableColumns.length > 0;
|
70
|
+
// Always show the filter bar when there are available filters, sorting, column visibility, or when forced
|
71
|
+
if (filterCount === 0 && !hasAvailableFilters && !hasSorting && !enableColumnVisibility && !alwaysShow && !children) {
|
15
72
|
return null;
|
16
73
|
}
|
17
74
|
if (instance.showSkeleton) {
|
18
75
|
return React.createElement(DataTableFilterBarSkeleton, { filterCount: filterCount });
|
19
76
|
}
|
20
|
-
return (React.createElement("div", { className: "bg-ui-bg-subtle flex w-full flex-nowrap items-center gap-2 overflow-x-auto border-t px-6 py-2
|
21
|
-
|
22
|
-
|
77
|
+
return (React.createElement("div", { className: "bg-ui-bg-subtle flex w-full flex-nowrap items-center justify-between gap-2 overflow-x-auto border-t px-6 py-2" },
|
78
|
+
React.createElement("div", { className: "flex flex-nowrap items-center gap-2 md:flex-wrap" },
|
79
|
+
localFilters.map((localFilter) => (React.createElement(DataTableFilter, { key: localFilter.id, id: localFilter.id, filter: localFilter.value, isNew: localFilter.isNew, onUpdate: (value) => updateLocalFilter(localFilter.id, value), onRemove: () => removeLocalFilter(localFilter.id) }))),
|
80
|
+
hasAvailableFilters && (React.createElement(DataTableFilterMenu, { onAddFilter: addLocalFilter }))),
|
81
|
+
React.createElement("div", { className: "flex flex-shrink-0 items-center gap-2" },
|
82
|
+
hasSorting && React.createElement(DataTableSortingMenu, { tooltip: sortingTooltip }),
|
83
|
+
enableColumnVisibility && React.createElement(DataTableColumnVisibilityMenu, { tooltip: columnsTooltip }),
|
84
|
+
children)));
|
23
85
|
};
|
24
86
|
DataTableFilterBar.displayName = "DataTable.FilterBar";
|
25
87
|
const DataTableFilterBarSkeleton = ({ filterCount, }) => {
|