@medusajs/ui 4.0.22-snapshot-20250829152522 → 4.0.22-snapshot-20250901165744

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.
Files changed (113) hide show
  1. package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.d.ts +9 -0
  2. package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.d.ts.map +1 -0
  3. package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.js +58 -0
  4. package/dist/cjs/blocks/data-table/components/data-table-column-visibility-menu.js.map +1 -0
  5. package/dist/cjs/blocks/data-table/components/data-table-filter-bar.d.ts +5 -1
  6. package/dist/cjs/blocks/data-table/components/data-table-filter-bar.d.ts.map +1 -1
  7. package/dist/cjs/blocks/data-table/components/data-table-filter-bar.js +71 -9
  8. package/dist/cjs/blocks/data-table/components/data-table-filter-bar.js.map +1 -1
  9. package/dist/cjs/blocks/data-table/components/data-table-filter-menu.d.ts +5 -1
  10. package/dist/cjs/blocks/data-table/components/data-table-filter-menu.d.ts.map +1 -1
  11. package/dist/cjs/blocks/data-table/components/data-table-filter-menu.js +35 -7
  12. package/dist/cjs/blocks/data-table/components/data-table-filter-menu.js.map +1 -1
  13. package/dist/cjs/blocks/data-table/components/data-table-filter.d.ts +4 -1
  14. package/dist/cjs/blocks/data-table/components/data-table-filter.d.ts.map +1 -1
  15. package/dist/cjs/blocks/data-table/components/data-table-filter.js +488 -73
  16. package/dist/cjs/blocks/data-table/components/data-table-filter.js.map +1 -1
  17. package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts +9 -0
  18. package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts.map +1 -0
  19. package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.js +42 -0
  20. package/dist/cjs/blocks/data-table/components/data-table-non-sortable-header-cell.js.map +1 -0
  21. package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.d.ts +9 -0
  22. package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.d.ts.map +1 -0
  23. package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.js +44 -0
  24. package/dist/cjs/blocks/data-table/components/data-table-sortable-header-cell.js.map +1 -0
  25. package/dist/cjs/blocks/data-table/components/data-table-table.d.ts.map +1 -1
  26. package/dist/cjs/blocks/data-table/components/data-table-table.js +132 -4
  27. package/dist/cjs/blocks/data-table/components/data-table-table.js.map +1 -1
  28. package/dist/cjs/blocks/data-table/components/data-table-toolbar.d.ts +12 -0
  29. package/dist/cjs/blocks/data-table/components/data-table-toolbar.d.ts.map +1 -1
  30. package/dist/cjs/blocks/data-table/components/data-table-toolbar.js +5 -2
  31. package/dist/cjs/blocks/data-table/components/data-table-toolbar.js.map +1 -1
  32. package/dist/cjs/blocks/data-table/context/data-table-context-provider.d.ts.map +1 -1
  33. package/dist/cjs/blocks/data-table/context/data-table-context-provider.js +5 -1
  34. package/dist/cjs/blocks/data-table/context/data-table-context-provider.js.map +1 -1
  35. package/dist/cjs/blocks/data-table/context/data-table-context.d.ts +2 -0
  36. package/dist/cjs/blocks/data-table/context/data-table-context.d.ts.map +1 -1
  37. package/dist/cjs/blocks/data-table/context/data-table-context.js.map +1 -1
  38. package/dist/cjs/blocks/data-table/data-table.d.ts +6 -1
  39. package/dist/cjs/blocks/data-table/data-table.d.ts.map +1 -1
  40. package/dist/cjs/blocks/data-table/data-table.js +4 -0
  41. package/dist/cjs/blocks/data-table/data-table.js.map +1 -1
  42. package/dist/cjs/blocks/data-table/index.d.ts +2 -1
  43. package/dist/cjs/blocks/data-table/index.d.ts.map +1 -1
  44. package/dist/cjs/blocks/data-table/index.js.map +1 -1
  45. package/dist/cjs/blocks/data-table/types.d.ts +75 -3
  46. package/dist/cjs/blocks/data-table/types.d.ts.map +1 -1
  47. package/dist/cjs/blocks/data-table/types.js.map +1 -1
  48. package/dist/cjs/blocks/data-table/use-data-table.d.ts +21 -3
  49. package/dist/cjs/blocks/data-table/use-data-table.d.ts.map +1 -1
  50. package/dist/cjs/blocks/data-table/use-data-table.js +47 -7
  51. package/dist/cjs/blocks/data-table/use-data-table.js.map +1 -1
  52. package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.d.ts.map +1 -1
  53. package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.js +2 -1
  54. package/dist/cjs/blocks/data-table/utils/create-data-table-column-helper.js.map +1 -1
  55. package/dist/cjs/blocks/data-table/utils/create-data-table-filter-helper.d.ts +27 -0
  56. package/dist/cjs/blocks/data-table/utils/create-data-table-filter-helper.d.ts.map +1 -1
  57. package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.d.ts +9 -0
  58. package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.d.ts.map +1 -0
  59. package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.js +54 -0
  60. package/dist/esm/blocks/data-table/components/data-table-column-visibility-menu.js.map +1 -0
  61. package/dist/esm/blocks/data-table/components/data-table-filter-bar.d.ts +5 -1
  62. package/dist/esm/blocks/data-table/components/data-table-filter-bar.d.ts.map +1 -1
  63. package/dist/esm/blocks/data-table/components/data-table-filter-bar.js +71 -9
  64. package/dist/esm/blocks/data-table/components/data-table-filter-bar.js.map +1 -1
  65. package/dist/esm/blocks/data-table/components/data-table-filter-menu.d.ts +5 -1
  66. package/dist/esm/blocks/data-table/components/data-table-filter-menu.d.ts.map +1 -1
  67. package/dist/esm/blocks/data-table/components/data-table-filter-menu.js +35 -7
  68. package/dist/esm/blocks/data-table/components/data-table-filter-menu.js.map +1 -1
  69. package/dist/esm/blocks/data-table/components/data-table-filter.d.ts +4 -1
  70. package/dist/esm/blocks/data-table/components/data-table-filter.d.ts.map +1 -1
  71. package/dist/esm/blocks/data-table/components/data-table-filter.js +489 -74
  72. package/dist/esm/blocks/data-table/components/data-table-filter.js.map +1 -1
  73. package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts +9 -0
  74. package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.d.ts.map +1 -0
  75. package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.js +38 -0
  76. package/dist/esm/blocks/data-table/components/data-table-non-sortable-header-cell.js.map +1 -0
  77. package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.d.ts +9 -0
  78. package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.d.ts.map +1 -0
  79. package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.js +40 -0
  80. package/dist/esm/blocks/data-table/components/data-table-sortable-header-cell.js.map +1 -0
  81. package/dist/esm/blocks/data-table/components/data-table-table.d.ts.map +1 -1
  82. package/dist/esm/blocks/data-table/components/data-table-table.js +132 -4
  83. package/dist/esm/blocks/data-table/components/data-table-table.js.map +1 -1
  84. package/dist/esm/blocks/data-table/components/data-table-toolbar.d.ts +12 -0
  85. package/dist/esm/blocks/data-table/components/data-table-toolbar.d.ts.map +1 -1
  86. package/dist/esm/blocks/data-table/components/data-table-toolbar.js +5 -2
  87. package/dist/esm/blocks/data-table/components/data-table-toolbar.js.map +1 -1
  88. package/dist/esm/blocks/data-table/context/data-table-context-provider.d.ts.map +1 -1
  89. package/dist/esm/blocks/data-table/context/data-table-context-provider.js +5 -1
  90. package/dist/esm/blocks/data-table/context/data-table-context-provider.js.map +1 -1
  91. package/dist/esm/blocks/data-table/context/data-table-context.d.ts +2 -0
  92. package/dist/esm/blocks/data-table/context/data-table-context.d.ts.map +1 -1
  93. package/dist/esm/blocks/data-table/context/data-table-context.js.map +1 -1
  94. package/dist/esm/blocks/data-table/data-table.d.ts +6 -1
  95. package/dist/esm/blocks/data-table/data-table.d.ts.map +1 -1
  96. package/dist/esm/blocks/data-table/data-table.js +4 -0
  97. package/dist/esm/blocks/data-table/data-table.js.map +1 -1
  98. package/dist/esm/blocks/data-table/index.d.ts +2 -1
  99. package/dist/esm/blocks/data-table/index.d.ts.map +1 -1
  100. package/dist/esm/blocks/data-table/index.js.map +1 -1
  101. package/dist/esm/blocks/data-table/types.d.ts +75 -3
  102. package/dist/esm/blocks/data-table/types.d.ts.map +1 -1
  103. package/dist/esm/blocks/data-table/types.js.map +1 -1
  104. package/dist/esm/blocks/data-table/use-data-table.d.ts +21 -3
  105. package/dist/esm/blocks/data-table/use-data-table.d.ts.map +1 -1
  106. package/dist/esm/blocks/data-table/use-data-table.js +47 -7
  107. package/dist/esm/blocks/data-table/use-data-table.js.map +1 -1
  108. package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.d.ts.map +1 -1
  109. package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.js +2 -1
  110. package/dist/esm/blocks/data-table/utils/create-data-table-column-helper.js.map +1 -1
  111. package/dist/esm/blocks/data-table/utils/create-data-table-filter-helper.d.ts +27 -0
  112. package/dist/esm/blocks/data-table/utils/create-data-table-filter-helper.d.ts.map +1 -1
  113. 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":"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"}
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
- if (filter.value) {
106
- (_a = autoResetPageIndexHandler()) === null || _a === void 0 ? void 0 : _a();
107
- }
108
- onFilteringChange === null || onFilteringChange === void 0 ? void 0 : onFilteringChange({ ...getFiltering(), [filter.id]: filter.value });
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,EAItB,MAAM,UAAU,CAAA;AAEjB,QAAA,MAAM,2BAA2B,eAE5B,sBAAsB,KAAK,CAgD/B,CAAA;AAQD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
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;AAS7C,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,IAAI,EACJ,aAAa,EACb,GAAG,IAAI,EACR,GAAG,MAA0C,CAAA;YAE9C,MAAM,YAAY,GAAmC;gBACnD,eAAe,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE;gBAC3D,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} 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 meta,\n enableSorting,\n ...rest\n } = column as any & DataTableSortableColumnDef\n\n const extendedMeta: DataTableSortableColumnDefMeta = {\n ___sortMetaData: { sortLabel, sortAscLabel, sortDescLabel },\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
+ {"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;;;;;;;;;;;;;;;;;;;;;;oDAIjB,gBAAgB,CAAC,CAAC;CAClE,CAAA;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAOvE,MAAM,6BAA6B,GAAG,CAAC,EACrC,SAAS,EACT,OAAO,GAC4B,EAAE,EAAE;IACvC,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAElE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ;SACrB,aAAa,EAAE;SACf,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IAE1C,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAE,EAAE;QACtD,MAAM,CAAC,gBAAgB,EAAE,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,EAAE;QACzC,QAAQ,CAAC,mBAAmB,CAC1B,MAAM,CAAC,WAAW,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAC9D,CACF,CAAA;IACH,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;IAC5F,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;IAE5F,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAE,EAAU,CAAA;IAEjE,OAAO,CACL,oBAAC,YAAY;QACX,oBAAC,OAAO,OAAK,YAAY;YACvB,oBAAC,YAAY,CAAC,OAAO,IAAC,OAAO;gBAC3B,oBAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAE,SAAS;oBAC3C,oBAAC,WAAW,OAAG,CACJ,CACQ,CACf;QACV,oBAAC,YAAY,CAAC,OAAO,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,6CAA6C;YACvF,oBAAC,YAAY,CAAC,KAAK,yBAAoC;YACvD,oBAAC,YAAY,CAAC,SAAS,OAAG;YAC1B,oBAAC,YAAY,CAAC,IAAI,IAChB,QAAQ,EAAE,CAAC,CAAQ,EAAE,EAAE;oBACrB,CAAC,CAAC,cAAc,EAAE,CAAA;oBAClB,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAA;gBACrC,CAAC;gBAED,6BAAK,SAAS,EAAC,2BAA2B;oBACxC,oBAAC,QAAQ,IACP,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,GACxG;oBACF,+CAAuB,CACnB,CACY;YACpB,oBAAC,YAAY,CAAC,SAAS,OAAG;YAC1B,6BAAK,SAAS,EAAC,+BAA+B,IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAwB,EAAE,EAAE;;gBACxC,OAAO,CACL,oBAAC,YAAY,CAAC,IAAI,IAChB,GAAG,EAAE,MAAM,CAAC,EAAE,EACd,QAAQ,EAAE,CAAC,CAAQ,EAAE,EAAE;wBACrB,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,kBAAkB,CAAC,MAAM,CAAC,CAAA;oBAC5B,CAAC;oBAED,6BAAK,SAAS,EAAC,2BAA2B;wBACxC,oBAAC,QAAQ,IAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,GAAI;wBAC5C,8BAAM,SAAS,EAAC,UAAU,IACvB,CAAA,MAAC,MAAM,CAAC,SAAS,CAAC,IAAY,0CAAE,IAAI,KAAI,MAAM,CAAC,EAAE,CAC7C,CACH,CACY,CACrB,CAAA;YACH,CAAC,CAAC,CACE,CACe,CACV,CAChB,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAA","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;AAO9B,UAAU,uBAAuB;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,QAAA,MAAM,kBAAkB;gCAErB,uBAAuB;;CAqCzB,CAAA;AAkBD,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,YAAY,EAAE,uBAAuB,EAAE,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
- const filterState = instance.getFiltering();
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 = Object.keys(filterState).length;
14
- if (filterCount === 0) {
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 md:flex-wrap" },
21
- Object.entries(filterState).map(([id, filter]) => (React.createElement(DataTableFilter, { key: id, id: id, filter: filter }))),
22
- filterCount > 0 ? (React.createElement(Button, { variant: "transparent", size: "small", className: "text-ui-fg-muted hover:text-ui-fg-subtle flex-shrink-0 whitespace-nowrap", type: "button", onClick: clearFilters }, clearAllFiltersLabel)) : null));
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, }) => {