@osdk/react-components 0.1.0-beta.4 → 0.1.0-beta.5

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 (133) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/build/browser/base-components/checkbox/Checkbox.module.css +1 -2
  3. package/build/browser/object-table/ObjectTable.js +35 -9
  4. package/build/browser/object-table/ObjectTable.js.map +1 -1
  5. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  6. package/build/browser/object-table/Table.js +1 -1
  7. package/build/browser/object-table/Table.js.map +1 -1
  8. package/build/browser/object-table/Table.module.css +1 -0
  9. package/build/browser/object-table/TableCell.js +7 -4
  10. package/build/browser/object-table/TableCell.js.map +1 -1
  11. package/build/browser/object-table/TableCell.module.css +18 -1
  12. package/build/browser/object-table/TableHeader.js +28 -13
  13. package/build/browser/object-table/TableHeader.js.map +1 -1
  14. package/build/browser/object-table/TableHeader.module.css +17 -0
  15. package/build/browser/object-table/TableHeaderContent.js +27 -0
  16. package/build/browser/object-table/TableHeaderContent.js.map +1 -0
  17. package/build/browser/object-table/TableHeaderContent.module.css +30 -0
  18. package/build/browser/object-table/TableHeaderWithPopover.js +155 -0
  19. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -0
  20. package/build/browser/object-table/TableHeaderWithPopover.module.css +105 -0
  21. package/build/browser/object-table/hooks/__tests__/useColumnPinning.test.js +266 -0
  22. package/build/browser/object-table/hooks/__tests__/useColumnPinning.test.js.map +1 -0
  23. package/build/browser/object-table/hooks/__tests__/{useDefaultTableStates.test.js → useColumnVisibility.test.js} +16 -16
  24. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -0
  25. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +2 -1
  26. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  27. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +211 -0
  28. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -0
  29. package/build/browser/object-table/hooks/useColumnPinning.js +95 -0
  30. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -0
  31. package/build/{esm/object-table/hooks/useDefaultTableStates.js → browser/object-table/hooks/useColumnVisibility.js} +3 -5
  32. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -0
  33. package/build/browser/object-table/hooks/useObjectTableData.js +15 -3
  34. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  35. package/build/browser/object-table/hooks/useSelectionColumn.js +3 -2
  36. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  37. package/build/browser/object-table/hooks/useTableSorting.js +66 -0
  38. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -0
  39. package/build/browser/object-table/utils/constants.js +18 -0
  40. package/build/browser/object-table/utils/constants.js.map +1 -0
  41. package/build/browser/object-table/utils/getColumnPinningStyles.js +27 -0
  42. package/build/browser/object-table/utils/getColumnPinningStyles.js.map +1 -0
  43. package/build/browser/public/experimental.js +4 -0
  44. package/build/browser/public/experimental.js.map +1 -1
  45. package/build/cjs/public/experimental.cjs +412 -85
  46. package/build/cjs/public/experimental.cjs.map +1 -1
  47. package/build/cjs/public/experimental.css +113 -1
  48. package/build/cjs/public/experimental.css.map +1 -1
  49. package/build/cjs/public/experimental.d.cts +25 -3
  50. package/build/esm/base-components/checkbox/Checkbox.module.css +1 -2
  51. package/build/esm/object-table/ObjectTable.js +35 -9
  52. package/build/esm/object-table/ObjectTable.js.map +1 -1
  53. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  54. package/build/esm/object-table/Table.js +1 -1
  55. package/build/esm/object-table/Table.js.map +1 -1
  56. package/build/esm/object-table/Table.module.css +1 -0
  57. package/build/esm/object-table/TableCell.js +7 -4
  58. package/build/esm/object-table/TableCell.js.map +1 -1
  59. package/build/esm/object-table/TableCell.module.css +18 -1
  60. package/build/esm/object-table/TableHeader.js +28 -13
  61. package/build/esm/object-table/TableHeader.js.map +1 -1
  62. package/build/esm/object-table/TableHeader.module.css +17 -0
  63. package/build/esm/object-table/TableHeaderContent.js +27 -0
  64. package/build/esm/object-table/TableHeaderContent.js.map +1 -0
  65. package/build/esm/object-table/TableHeaderContent.module.css +30 -0
  66. package/build/esm/object-table/TableHeaderWithPopover.js +155 -0
  67. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -0
  68. package/build/esm/object-table/TableHeaderWithPopover.module.css +105 -0
  69. package/build/esm/object-table/hooks/__tests__/useColumnPinning.test.js +266 -0
  70. package/build/esm/object-table/hooks/__tests__/useColumnPinning.test.js.map +1 -0
  71. package/build/esm/object-table/hooks/__tests__/{useDefaultTableStates.test.js → useColumnVisibility.test.js} +16 -16
  72. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -0
  73. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +2 -1
  74. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  75. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +211 -0
  76. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -0
  77. package/build/esm/object-table/hooks/useColumnPinning.js +95 -0
  78. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -0
  79. package/build/{browser/object-table/hooks/useDefaultTableStates.js → esm/object-table/hooks/useColumnVisibility.js} +3 -5
  80. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -0
  81. package/build/esm/object-table/hooks/useObjectTableData.js +15 -3
  82. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  83. package/build/esm/object-table/hooks/useSelectionColumn.js +3 -2
  84. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  85. package/build/esm/object-table/hooks/useTableSorting.js +66 -0
  86. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -0
  87. package/build/esm/object-table/utils/constants.js +18 -0
  88. package/build/esm/object-table/utils/constants.js.map +1 -0
  89. package/build/esm/object-table/utils/getColumnPinningStyles.js +27 -0
  90. package/build/esm/object-table/utils/getColumnPinningStyles.js.map +1 -0
  91. package/build/esm/public/experimental.js +4 -0
  92. package/build/esm/public/experimental.js.map +1 -1
  93. package/build/types/object-table/ObjectTable.d.ts +1 -1
  94. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  95. package/build/types/object-table/ObjectTableApi.d.ts +10 -0
  96. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  97. package/build/types/object-table/Table.d.ts +2 -3
  98. package/build/types/object-table/Table.d.ts.map +1 -1
  99. package/build/types/object-table/TableCell.d.ts.map +1 -1
  100. package/build/types/object-table/TableHeader.d.ts.map +1 -1
  101. package/build/types/object-table/TableHeaderContent.d.ts +7 -0
  102. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -0
  103. package/build/types/object-table/TableHeaderWithPopover.d.ts +13 -0
  104. package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -0
  105. package/build/types/object-table/hooks/__tests__/useColumnPinning.test.d.ts.map +1 -0
  106. package/build/types/object-table/hooks/__tests__/useColumnVisibility.test.d.ts +1 -0
  107. package/build/types/object-table/hooks/__tests__/useColumnVisibility.test.d.ts.map +1 -0
  108. package/build/types/object-table/hooks/__tests__/useTableSorting.test.d.ts +1 -0
  109. package/build/types/object-table/hooks/__tests__/useTableSorting.test.d.ts.map +1 -0
  110. package/build/types/object-table/hooks/useColumnPinning.d.ts +22 -0
  111. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -0
  112. package/build/types/object-table/hooks/{useDefaultTableStates.d.ts → useColumnVisibility.d.ts} +3 -6
  113. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -0
  114. package/build/types/object-table/hooks/useObjectTableData.d.ts +2 -1
  115. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  116. package/build/types/object-table/hooks/useSelectionColumn.d.ts +0 -1
  117. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  118. package/build/types/object-table/hooks/useTableSorting.d.ts +22 -0
  119. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -0
  120. package/build/types/object-table/utils/constants.d.ts +1 -0
  121. package/build/types/object-table/utils/constants.d.ts.map +1 -0
  122. package/build/types/object-table/utils/getColumnPinningStyles.d.ts +7 -0
  123. package/build/types/object-table/utils/getColumnPinningStyles.d.ts.map +1 -0
  124. package/build/types/public/experimental.d.ts +2 -0
  125. package/build/types/public/experimental.d.ts.map +1 -1
  126. package/package.json +5 -5
  127. package/build/browser/object-table/hooks/__tests__/useDefaultTableStates.test.js.map +0 -1
  128. package/build/browser/object-table/hooks/useDefaultTableStates.js.map +0 -1
  129. package/build/esm/object-table/hooks/__tests__/useDefaultTableStates.test.js.map +0 -1
  130. package/build/esm/object-table/hooks/useDefaultTableStates.js.map +0 -1
  131. package/build/types/object-table/hooks/__tests__/useDefaultTableStates.test.d.ts.map +0 -1
  132. package/build/types/object-table/hooks/useDefaultTableStates.d.ts.map +0 -1
  133. /package/build/types/object-table/hooks/__tests__/{useDefaultTableStates.test.d.ts → useColumnPinning.test.d.ts} +0 -0
@@ -1,19 +1,20 @@
1
1
  'use strict';
2
2
 
3
3
  var reactTable = require('@tanstack/react-table');
4
- var React5 = require('react');
4
+ var React9 = require('react');
5
5
  var react = require('@osdk/react');
6
6
  var experimental = require('@osdk/react/experimental');
7
7
  var checkbox = require('@base-ui/react/checkbox');
8
8
  var icons = require('@blueprintjs/icons');
9
- var classnames = require('classnames');
9
+ var classNames = require('classnames');
10
10
  var reactVirtual = require('@tanstack/react-virtual');
11
11
  var reactDom = require('react-dom');
12
+ var menu = require('@base-ui/react/menu');
12
13
 
13
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
15
 
15
- var React5__default = /*#__PURE__*/_interopDefault(React5);
16
- var classnames__default = /*#__PURE__*/_interopDefault(classnames);
16
+ var React9__default = /*#__PURE__*/_interopDefault(React9);
17
+ var classNames__default = /*#__PURE__*/_interopDefault(classNames);
17
18
 
18
19
  // src/object-table/ObjectTable.tsx
19
20
  function useColumnDefs(objectType, columnDefinitions) {
@@ -22,7 +23,7 @@ function useColumnDefs(objectType, columnDefinitions) {
22
23
  loading,
23
24
  error
24
25
  } = react.useOsdkMetadata(objectType);
25
- const columns = React5.useMemo(() => {
26
+ const columns = React9.useMemo(() => {
26
27
  const objectProperties = metadata?.properties;
27
28
  if (columnDefinitions) {
28
29
  return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);
@@ -78,10 +79,86 @@ function getDefaultColumns(objectProperties) {
78
79
  return colDef;
79
80
  });
80
81
  }
81
- var useDefaultTableStates = ({
82
+
83
+ // src/object-table/utils/constants.ts
84
+ var SELECTION_COLUMN_ID = "__selection__";
85
+
86
+ // src/object-table/hooks/useColumnPinning.ts
87
+ var useColumnPinning = ({
88
+ columnDefinitions,
89
+ hasSelectionColumn,
90
+ onColumnsPinnedChanged
91
+ }) => {
92
+ const [columnPinning, setColumnPinning] = React9.useState({
93
+ left: [],
94
+ right: []
95
+ });
96
+ React9.useEffect(() => {
97
+ const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);
98
+ const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];
99
+ setColumnPinning({
100
+ left: [...selectionCol, ...defaultState.left ?? []],
101
+ right: [...defaultState.right ?? []]
102
+ });
103
+ }, [columnDefinitions, hasSelectionColumn]);
104
+ const onColumnPinningChange = React9.useCallback((updater) => {
105
+ setColumnPinning((prev) => {
106
+ const newPinning = typeof updater === "function" ? updater(prev) : updater;
107
+ if (onColumnsPinnedChanged) {
108
+ const newStates = convertColumnPinningStateToArray(newPinning);
109
+ const stateWithoutSelectionCol = newStates.filter((state) => state.columnId !== SELECTION_COLUMN_ID);
110
+ onColumnsPinnedChanged(stateWithoutSelectionCol);
111
+ }
112
+ return newPinning;
113
+ });
114
+ }, [onColumnsPinnedChanged]);
115
+ return {
116
+ columnPinning,
117
+ onColumnPinningChange
118
+ };
119
+ };
120
+ var getColumnPinningStateFromColumnDefs = (columnDefinitions) => {
121
+ if (!columnDefinitions) {
122
+ return {};
123
+ }
124
+ const columnPinningState = columnDefinitions.reduce((acc, {
125
+ locator,
126
+ pinned
127
+ }) => {
128
+ const colKey = locator.id.toString();
129
+ const isPinned = pinned != null && pinned !== "none";
130
+ if (!isPinned) {
131
+ return acc;
132
+ }
133
+ if (pinned === "left") {
134
+ return {
135
+ ...acc,
136
+ left: [...acc.left ?? [], colKey]
137
+ };
138
+ }
139
+ return {
140
+ ...acc,
141
+ right: [...acc.right ?? [], colKey]
142
+ };
143
+ }, {
144
+ left: [],
145
+ right: []
146
+ });
147
+ return columnPinningState;
148
+ };
149
+ function convertColumnPinningStateToArray(pinningState) {
150
+ return [...(pinningState.left ?? []).map((columnId) => ({
151
+ columnId,
152
+ pinned: "left"
153
+ })), ...(pinningState.right ?? []).map((columnId) => ({
154
+ columnId,
155
+ pinned: "right"
156
+ }))];
157
+ }
158
+ var useColumnVisibility = ({
82
159
  columnDefinitions
83
160
  }) => {
84
- const columnVisibility = React5.useMemo(() => {
161
+ const columnVisibility = React9.useMemo(() => {
85
162
  if (columnDefinitions) {
86
163
  const colVisibility = columnDefinitions.reduce((acc, colDef) => {
87
164
  if (colDef.isVisible !== void 0) {
@@ -99,13 +176,20 @@ var useDefaultTableStates = ({
99
176
  return colVisibility;
100
177
  }
101
178
  }, [columnDefinitions]);
102
- return {
103
- columnVisibility
104
- };
179
+ return columnVisibility;
105
180
  };
106
181
  var PAGE_SIZE = 50;
107
- function useObjectTableData(objectSet, columnDefinitions, filter) {
108
- const withProperties = React5.useMemo(() => {
182
+ function useObjectTableData(objectSet, columnDefinitions, filter, sorting) {
183
+ const orderBy = React9.useMemo(() => {
184
+ if (!sorting || sorting.length === 0) {
185
+ return void 0;
186
+ }
187
+ return sorting.reduce((acc, sort) => {
188
+ acc[sort.id] = sort.desc ? "desc" : "asc";
189
+ return acc;
190
+ }, {});
191
+ }, [sorting]);
192
+ const withProperties = React9.useMemo(() => {
109
193
  if (!columnDefinitions) {
110
194
  return;
111
195
  }
@@ -122,7 +206,8 @@ function useObjectTableData(objectSet, columnDefinitions, filter) {
122
206
  return experimental.useObjectSet(objectSet, {
123
207
  withProperties,
124
208
  pageSize: PAGE_SIZE,
125
- where: filter
209
+ where: filter,
210
+ orderBy
126
211
  });
127
212
  }
128
213
 
@@ -139,11 +224,11 @@ function useRowSelection({
139
224
  onRowSelection,
140
225
  data
141
226
  }) {
142
- const [internalRowSelection, setInternalRowSelection] = React5.useState({});
143
- const [lastSelectedRowIndex, setLastSelectedRowIndex] = React5.useState(null);
227
+ const [internalRowSelection, setInternalRowSelection] = React9.useState({});
228
+ const [lastSelectedRowIndex, setLastSelectedRowIndex] = React9.useState(null);
144
229
  const isControlled = selectedRows !== void 0;
145
230
  const isSelectionEnabled = selectionMode !== "none";
146
- const rowSelectionState = React5.useMemo(() => {
231
+ const rowSelectionState = React9.useMemo(() => {
147
232
  if (!isSelectionEnabled) return {};
148
233
  if (isControlled && selectedRows) {
149
234
  return getRowSelectionState(selectedRows);
@@ -154,7 +239,7 @@ function useRowSelection({
154
239
  const totalCount = data?.length ?? 0;
155
240
  const isAllSelected = totalCount > 0 && selectedCount === totalCount;
156
241
  const hasSelection = selectedCount > 0;
157
- const onToggleAll = React5.useCallback(() => {
242
+ const onToggleAll = React9.useCallback(() => {
158
243
  if (!isSelectionEnabled || !data) return;
159
244
  const newSelectedRows = isAllSelected ? [] : data.map((item) => item.$primaryKey);
160
245
  if (!isControlled) {
@@ -162,7 +247,7 @@ function useRowSelection({
162
247
  }
163
248
  onRowSelection?.(newSelectedRows);
164
249
  }, [isSelectionEnabled, data, isAllSelected, isControlled, onRowSelection]);
165
- const onToggleRow = React5.useCallback((rowId, rowIndex, isShiftClick = false) => {
250
+ const onToggleRow = React9.useCallback((rowId, rowIndex, isShiftClick = false) => {
166
251
  if (!isSelectionEnabled || !data) return;
167
252
  let newSelectedRows = [];
168
253
  if (selectionMode === "single") {
@@ -284,14 +369,14 @@ function Checkbox({
284
369
  indicatorProps,
285
370
  ...rest
286
371
  }) {
287
- return /* @__PURE__ */ React5__default.default.createElement(checkbox.Checkbox.Root, _extends({
288
- className: classnames__default.default(Checkbox_default.osdkCheckboxRoot, className),
372
+ return /* @__PURE__ */ React9__default.default.createElement(checkbox.Checkbox.Root, _extends({
373
+ className: classNames__default.default(Checkbox_default.osdkCheckboxRoot, className),
289
374
  indeterminate
290
- }, rest), /* @__PURE__ */ React5__default.default.createElement(checkbox.Checkbox.Indicator, _extends({}, indicatorProps, {
291
- className: classnames__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
292
- }), indeterminate ? /* @__PURE__ */ React5__default.default.createElement(icons.Minus, {
375
+ }, rest), /* @__PURE__ */ React9__default.default.createElement(checkbox.Checkbox.Indicator, _extends({}, indicatorProps, {
376
+ className: classNames__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
377
+ }), indeterminate ? /* @__PURE__ */ React9__default.default.createElement(icons.Minus, {
293
378
  color: "currentColor"
294
- }) : /* @__PURE__ */ React5__default.default.createElement(icons.Tick, {
379
+ }) : /* @__PURE__ */ React9__default.default.createElement(icons.Tick, {
295
380
  color: "currentColor"
296
381
  })));
297
382
  }
@@ -302,7 +387,7 @@ function SelectionHeaderCell({
302
387
  hasSelection,
303
388
  onToggleAll
304
389
  }) {
305
- return /* @__PURE__ */ React5__default.default.createElement(Checkbox, {
390
+ return /* @__PURE__ */ React9__default.default.createElement(Checkbox, {
306
391
  indeterminate: hasSelection && !isAllSelected,
307
392
  checked: isAllSelected,
308
393
  onCheckedChange: onToggleAll,
@@ -313,11 +398,11 @@ function SelectionCell({
313
398
  row,
314
399
  onToggleRow
315
400
  }) {
316
- const handleClick = React5.useCallback((event) => {
401
+ const handleClick = React9.useCallback((event) => {
317
402
  const isShiftClick = event.shiftKey;
318
403
  onToggleRow(row.id, row.index, isShiftClick);
319
404
  }, [row, onToggleRow]);
320
- return /* @__PURE__ */ React5__default.default.createElement(Checkbox, {
405
+ return /* @__PURE__ */ React9__default.default.createElement(Checkbox, {
321
406
  checked: row.getIsSelected(),
322
407
  onClick: handleClick,
323
408
  "aria-label": `Select row ${row.index + 1}`
@@ -325,7 +410,6 @@ function SelectionCell({
325
410
  }
326
411
 
327
412
  // src/object-table/hooks/useSelectionColumn.tsx
328
- var SELECTION_COLUMN_ID = "__selection__";
329
413
  var useSelectionColumn = ({
330
414
  selectionMode,
331
415
  isAllSelected,
@@ -333,18 +417,18 @@ var useSelectionColumn = ({
333
417
  onToggleAll,
334
418
  onToggleRow
335
419
  }) => {
336
- const selectionColumn = React5.useMemo(() => {
420
+ const selectionColumn = React9.useMemo(() => {
337
421
  if (selectionMode === "none") return null;
338
- return {
422
+ const colDef = {
339
423
  id: SELECTION_COLUMN_ID,
340
- header: () => selectionMode === "multiple" ? /* @__PURE__ */ React5__default.default.createElement(SelectionHeaderCell, {
424
+ header: () => selectionMode === "multiple" ? /* @__PURE__ */ React9__default.default.createElement(SelectionHeaderCell, {
341
425
  isAllSelected,
342
426
  hasSelection,
343
427
  onToggleAll
344
428
  }) : null,
345
429
  cell: ({
346
430
  row
347
- }) => /* @__PURE__ */ React5__default.default.createElement(SelectionCell, {
431
+ }) => /* @__PURE__ */ React9__default.default.createElement(SelectionCell, {
348
432
  row,
349
433
  onToggleRow
350
434
  }),
@@ -352,11 +436,54 @@ var useSelectionColumn = ({
352
436
  minSize: 50,
353
437
  maxSize: 50,
354
438
  enableSorting: false,
355
- enableResizing: false
439
+ enableResizing: false,
440
+ enablePinning: false
356
441
  };
442
+ return colDef;
357
443
  }, [selectionMode, isAllSelected, hasSelection, onToggleAll, onToggleRow]);
358
444
  return selectionColumn;
359
445
  };
446
+ var useTableSorting = ({
447
+ orderBy,
448
+ defaultOrderBy,
449
+ onOrderByChanged
450
+ }) => {
451
+ const [internalSorting, setInternalSorting] = React9.useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);
452
+ const isControlled = orderBy !== void 0;
453
+ const sortingState = React9.useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);
454
+ const onSortingChange = React9.useCallback((updater) => {
455
+ const newSorting = typeof updater === "function" ? updater(sortingState) : updater;
456
+ if (!isControlled) {
457
+ setInternalSorting(newSorting);
458
+ }
459
+ if (onOrderByChanged) {
460
+ const newOrderBy = convertSortingStateToOrderBy(newSorting);
461
+ onOrderByChanged(newOrderBy);
462
+ }
463
+ }, [isControlled, sortingState, onOrderByChanged]);
464
+ return {
465
+ sorting: sortingState,
466
+ onSortingChange
467
+ };
468
+ };
469
+ function convertOrderByToSortingState(orderBy) {
470
+ return orderBy.map(({
471
+ property,
472
+ direction
473
+ }) => ({
474
+ id: property,
475
+ desc: direction === "desc"
476
+ }));
477
+ }
478
+ function convertSortingStateToOrderBy(sorting) {
479
+ return sorting.map(({
480
+ id,
481
+ desc
482
+ }) => ({
483
+ property: id,
484
+ direction: desc ? "desc" : "asc"
485
+ }));
486
+ }
360
487
 
361
488
  // src/object-table/Table.module.css
362
489
  var Table_default = {};
@@ -374,8 +501,8 @@ function CellContextMenu({
374
501
  onClose,
375
502
  renderContent
376
503
  }) {
377
- const ref = React5.useRef(null);
378
- React5.useEffect(() => {
504
+ const ref = React9.useRef(null);
505
+ React9.useEffect(() => {
379
506
  const handleClickOutside = (event) => {
380
507
  if (ref.current && !ref.current.contains(event.target)) {
381
508
  onClose();
@@ -386,7 +513,7 @@ function CellContextMenu({
386
513
  document.removeEventListener("mousedown", handleClickOutside);
387
514
  };
388
515
  }, [onClose]);
389
- return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React5__default.default.createElement("div", {
516
+ return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React9__default.default.createElement("div", {
390
517
  ref,
391
518
  className: CellContextMenu_default.osdkCellContextMenu,
392
519
  style: {
@@ -399,9 +526,9 @@ function CellContextMenu({
399
526
  var useCellContextMenu = ({
400
527
  tdRef
401
528
  }) => {
402
- const [popoverPosition, setPopoverPosition] = React5.useState(null);
403
- const [isContextMenuOpen, setIsContextMenuOpen] = React5.useState(false);
404
- const handleOpenContextMenu = React5.useCallback((event) => {
529
+ const [popoverPosition, setPopoverPosition] = React9.useState(null);
530
+ const [isContextMenuOpen, setIsContextMenuOpen] = React9.useState(false);
531
+ const handleOpenContextMenu = React9.useCallback((event) => {
405
532
  event.preventDefault();
406
533
  event.stopPropagation();
407
534
  if (tdRef.current) {
@@ -415,7 +542,7 @@ var useCellContextMenu = ({
415
542
  setIsContextMenuOpen(true);
416
543
  }
417
544
  }, [tdRef]);
418
- const handleCloseContextMenu = React5.useCallback(() => {
545
+ const handleCloseContextMenu = React9.useCallback(() => {
419
546
  setIsContextMenuOpen(false);
420
547
  setPopoverPosition(null);
421
548
  }, []);
@@ -430,12 +557,24 @@ var useCellContextMenu = ({
430
557
  // src/object-table/TableCell.module.css
431
558
  var TableCell_default = {};
432
559
 
560
+ // src/object-table/utils/getColumnPinningStyles.ts
561
+ function getColumnPinningStyles(column) {
562
+ const isPinned = column.getIsPinned();
563
+ return {
564
+ columnStyles: {
565
+ left: isPinned === "left" ? `${column.getStart("left")}px` : void 0,
566
+ right: isPinned === "right" ? `${column.getAfter("right")}px` : void 0,
567
+ width: column.getSize()
568
+ }
569
+ };
570
+ }
571
+
433
572
  // src/object-table/TableCell.tsx
434
573
  function TableCell({
435
574
  cell,
436
575
  renderCellContextMenu
437
576
  }) {
438
- const tdRef = React5.useRef(null);
577
+ const tdRef = React9.useRef(null);
439
578
  const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;
440
579
  const {
441
580
  isContextMenuOpen,
@@ -446,16 +585,18 @@ function TableCell({
446
585
  tdRef
447
586
  });
448
587
  const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;
449
- return /* @__PURE__ */ React5__default.default.createElement(React5__default.default.Fragment, null, /* @__PURE__ */ React5__default.default.createElement("td", {
588
+ const {
589
+ columnStyles
590
+ } = getColumnPinningStyles(cell.column);
591
+ return /* @__PURE__ */ React9__default.default.createElement(React9__default.default.Fragment, null, /* @__PURE__ */ React9__default.default.createElement("td", {
450
592
  ref: tdRef,
593
+ "data-pinned": cell.column.getIsPinned(),
451
594
  className: TableCell_default.osdkTableCell,
452
- style: {
453
- width: cell.column.getSize()
454
- },
595
+ style: columnStyles,
455
596
  onContextMenu: handleOpenContextMenu
456
- }, /* @__PURE__ */ React5__default.default.createElement("div", {
597
+ }, /* @__PURE__ */ React9__default.default.createElement("div", {
457
598
  className: TableCell_default.osdkTableCellContent
458
- }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React5__default.default.createElement(CellContextMenu, {
599
+ }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React9__default.default.createElement(CellContextMenu, {
459
600
  cell,
460
601
  position: popoverPosition,
461
602
  onClose: handleCloseContextMenu,
@@ -473,10 +614,10 @@ function TableRow({
473
614
  onRowClick,
474
615
  renderCellContextMenu
475
616
  }) {
476
- const handleClick = React5.useCallback(() => {
617
+ const handleClick = React9.useCallback(() => {
477
618
  onRowClick?.(row.original);
478
619
  }, [onRowClick, row.original]);
479
- return /* @__PURE__ */ React5__default.default.createElement("tr", {
620
+ return /* @__PURE__ */ React9__default.default.createElement("tr", {
480
621
  "data-selected": row.getIsSelected(),
481
622
  className: TableRow_default.osdkTableRow,
482
623
  style: {
@@ -484,7 +625,7 @@ function TableRow({
484
625
  transform: `translateY(${virtualRow.start}px)`
485
626
  },
486
627
  onClick: handleClick
487
- }, row.getVisibleCells().map((cell) => /* @__PURE__ */ React5__default.default.createElement(TableCell, {
628
+ }, row.getVisibleCells().map((cell) => /* @__PURE__ */ React9__default.default.createElement(TableCell, {
488
629
  key: cell.id,
489
630
  cell,
490
631
  renderCellContextMenu
@@ -505,17 +646,17 @@ function TableBody({
505
646
  getScrollElement: () => tableContainerRef.current,
506
647
  overscan: 5
507
648
  });
508
- React5.useLayoutEffect(() => {
649
+ React9.useLayoutEffect(() => {
509
650
  rowVirtualizer.measure();
510
651
  }, [rowVirtualizer, rows.length]);
511
- return /* @__PURE__ */ React5__default.default.createElement("tbody", {
652
+ return /* @__PURE__ */ React9__default.default.createElement("tbody", {
512
653
  className: TableBody_default.osdkTableBody,
513
654
  style: {
514
655
  height: `${rowVirtualizer.getTotalSize()}px`
515
656
  }
516
657
  }, rowVirtualizer.getVirtualItems().map((virtualRow) => {
517
658
  const row = rows[virtualRow.index];
518
- return /* @__PURE__ */ React5__default.default.createElement(TableRow, {
659
+ return /* @__PURE__ */ React9__default.default.createElement(TableRow, {
519
660
  key: row.id,
520
661
  row,
521
662
  virtualRow,
@@ -528,33 +669,194 @@ function TableBody({
528
669
  // src/object-table/TableHeader.module.css
529
670
  var TableHeader_default = {};
530
671
 
672
+ // src/object-table/TableHeaderContent.module.css
673
+ var TableHeaderContent_default = {};
674
+
675
+ // src/object-table/TableHeaderContent.tsx
676
+ function TableHeaderContent({
677
+ header
678
+ }) {
679
+ return /* @__PURE__ */ React9__default.default.createElement("div", {
680
+ className: TableHeaderContent_default.osdkHeaderContent
681
+ }, reactTable.flexRender(header.column.columnDef.header, header.getContext()));
682
+ }
683
+
684
+ // src/object-table/TableHeaderWithPopover.module.css
685
+ var TableHeaderWithPopover_default = {};
686
+
687
+ // src/object-table/TableHeaderWithPopover.tsx
688
+ function HeaderMenuItem({
689
+ onClick,
690
+ icon: Icon,
691
+ label,
692
+ active = false
693
+ }) {
694
+ return /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Item, {
695
+ closeOnClick: true,
696
+ className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
697
+ onClick
698
+ }, /* @__PURE__ */ React9__default.default.createElement(Icon, {
699
+ className: TableHeaderWithPopover_default.osdkHeaderIcon,
700
+ color: "currentColor"
701
+ }), /* @__PURE__ */ React9__default.default.createElement("span", null, label));
702
+ }
703
+ function TableHeaderWithPopover({
704
+ header,
705
+ isColumnPinned,
706
+ setColumnPinning,
707
+ onSortChange,
708
+ onResetSize
709
+ }) {
710
+ const [isOpen, setIsOpen] = React9.useState(false);
711
+ const handlePinLeft = React9.useCallback(() => {
712
+ setColumnPinning((prev) => {
713
+ return {
714
+ left: [...prev.left || [], header.column.id],
715
+ right: prev.right?.filter((id) => id !== header.column.id) || []
716
+ };
717
+ });
718
+ }, [header.column.id, setColumnPinning]);
719
+ const handleUnpin = React9.useCallback(() => {
720
+ setColumnPinning((prev) => {
721
+ return {
722
+ left: prev.left?.filter((id) => id !== header.column.id) || [],
723
+ right: prev.right?.filter((id) => id !== header.column.id) || []
724
+ };
725
+ });
726
+ }, [header.column.id, setColumnPinning]);
727
+ const handleSortAscending = React9.useCallback(() => {
728
+ header.column.toggleSorting(false);
729
+ onSortChange?.([{
730
+ id: header.column.id,
731
+ desc: false
732
+ }]);
733
+ }, [header.column, onSortChange]);
734
+ const handleSortDescending = React9.useCallback(() => {
735
+ header.column.toggleSorting(true);
736
+ onSortChange?.([{
737
+ id: header.column.id,
738
+ desc: true
739
+ }]);
740
+ }, [header.column, onSortChange]);
741
+ const handleClearAllSorts = React9.useCallback(() => {
742
+ header.column.clearSorting();
743
+ onSortChange?.([]);
744
+ }, [header.column, onSortChange]);
745
+ const handleResetSize = React9.useCallback(() => {
746
+ header.column.resetSize();
747
+ if (onResetSize) {
748
+ onResetSize();
749
+ }
750
+ }, [header.column, onResetSize]);
751
+ const handleInteraction = React9.useCallback((e) => {
752
+ e.preventDefault();
753
+ setIsOpen((prev) => !prev);
754
+ }, []);
755
+ const isSorted = header.column.getIsSorted();
756
+ const isSortable = header.column.getCanSort();
757
+ return /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Root, {
758
+ open: isOpen,
759
+ onOpenChange: setIsOpen
760
+ }, /* @__PURE__ */ React9__default.default.createElement("div", {
761
+ className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
762
+ onContextMenu: handleInteraction
763
+ }, /* @__PURE__ */ React9__default.default.createElement("div", {
764
+ className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
765
+ }, isColumnPinned && /* @__PURE__ */ React9__default.default.createElement(icons.Pin, {
766
+ className: TableHeaderWithPopover_default.osdkHeaderIcon,
767
+ color: "currentColor"
768
+ }), /* @__PURE__ */ React9__default.default.createElement(TableHeaderContent, {
769
+ header
770
+ })), /* @__PURE__ */ React9__default.default.createElement("div", {
771
+ className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
772
+ }, isSorted && /* @__PURE__ */ React9__default.default.createElement("div", {
773
+ className: TableHeaderWithPopover_default.osdkCenterContainer
774
+ }, isSorted === "asc" ? /* @__PURE__ */ React9__default.default.createElement(icons.SortAlphabetical, {
775
+ className: TableHeaderWithPopover_default.osdkHeaderIcon,
776
+ color: "currentColor"
777
+ }) : /* @__PURE__ */ React9__default.default.createElement(icons.SortAlphabeticalDesc, {
778
+ className: TableHeaderWithPopover_default.osdkHeaderIcon,
779
+ color: "currentColor"
780
+ })), /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Trigger, {
781
+ "aria-label": `Open header menu for column with id=${header.column.id}`,
782
+ className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
783
+ }, /* @__PURE__ */ React9__default.default.createElement(icons.ChevronDown, {
784
+ className: TableHeaderWithPopover_default.osdkHeaderIcon
785
+ }))), /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Portal, {
786
+ container: document.body
787
+ }, /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Positioner, {
788
+ sideOffset: 4
789
+ }, /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Popup, {
790
+ className: TableHeaderWithPopover_default.osdkHeaderPopup
791
+ }, !isColumnPinned && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
792
+ onClick: handlePinLeft,
793
+ icon: icons.Pin,
794
+ label: "Pin column"
795
+ }), isColumnPinned && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
796
+ onClick: handleUnpin,
797
+ icon: icons.Unpin,
798
+ label: "Unpin Column",
799
+ active: true
800
+ }), isSortable && /* @__PURE__ */ React9__default.default.createElement(React9__default.default.Fragment, null, /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
801
+ onClick: handleSortAscending,
802
+ icon: icons.SortAlphabetical,
803
+ label: "Sort ascending",
804
+ active: isSorted === "asc"
805
+ }), /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
806
+ onClick: handleSortDescending,
807
+ icon: icons.SortAlphabeticalDesc,
808
+ label: "Sort descending",
809
+ active: isSorted === "desc"
810
+ })), !!isSorted && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
811
+ onClick: handleClearAllSorts,
812
+ icon: icons.Remove,
813
+ label: "Clear all sorts"
814
+ }), /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
815
+ onClick: handleResetSize,
816
+ icon: icons.VerticalDistribution,
817
+ label: "Reset Column Size"
818
+ }))))));
819
+ }
820
+
531
821
  // src/object-table/TableHeader.tsx
532
822
  function TableHeader({
533
823
  table
534
824
  }) {
535
825
  const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;
536
- return /* @__PURE__ */ React5__default.default.createElement("thead", {
826
+ return /* @__PURE__ */ React9__default.default.createElement("thead", {
537
827
  className: TableHeader_default.osdkTableHeader,
538
828
  "data-resizing": isResizing
539
- }, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React5__default.default.createElement("tr", {
829
+ }, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React9__default.default.createElement("tr", {
540
830
  key: headerGroup.id,
541
831
  className: TableHeader_default.osdkTableHeaderRow
542
- }, headerGroup.headers.map((header) => /* @__PURE__ */ React5__default.default.createElement("th", {
543
- key: header.id,
544
- className: TableHeader_default.osdkTableHeaderCell,
545
- style: {
546
- width: header.getSize()
547
- }
548
- }, header.isPlaceholder ? null : reactTable.flexRender(header.column.columnDef.header, header.getContext()), header.column.getCanResize() && /* @__PURE__ */ React5__default.default.createElement("div", {
549
- className: TableHeader_default.osdkTableHeaderResizer,
550
- onDoubleClick: () => header.column.resetSize(),
551
- onMouseDown: header.getResizeHandler(),
552
- onTouchStart: header.getResizeHandler()
553
- }))))));
832
+ }, headerGroup.headers.map((header) => {
833
+ const {
834
+ columnStyles
835
+ } = getColumnPinningStyles(header.column);
836
+ const isColumnPinned = header.column.getIsPinned();
837
+ const isSelectColumn = header.id === SELECTION_COLUMN_ID;
838
+ return /* @__PURE__ */ React9__default.default.createElement("th", {
839
+ key: header.id,
840
+ "data-pinned": header.column.getIsPinned(),
841
+ className: TableHeader_default.osdkTableHeaderCell,
842
+ style: columnStyles
843
+ }, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */ React9__default.default.createElement(TableHeaderContent, {
844
+ header
845
+ }) : /* @__PURE__ */ React9__default.default.createElement(TableHeaderWithPopover, {
846
+ header,
847
+ isColumnPinned,
848
+ setColumnPinning: table.setColumnPinning
849
+ }), header.column.getCanResize() && /* @__PURE__ */ React9__default.default.createElement("div", {
850
+ className: TableHeader_default.osdkTableHeaderResizer,
851
+ onDoubleClick: () => header.column.resetSize(),
852
+ onMouseDown: header.getResizeHandler(),
853
+ onTouchStart: header.getResizeHandler()
854
+ }));
855
+ }))));
554
856
  }
555
857
 
556
858
  // src/object-table/Table.tsx
557
- function Table({
859
+ function BaseTable({
558
860
  table,
559
861
  isLoading,
560
862
  fetchNextPage,
@@ -563,9 +865,9 @@ function Table({
563
865
  renderCellContextMenu,
564
866
  className
565
867
  }) {
566
- const tableContainerRef = React5.useRef(null);
567
- const fetchingRef = React5.useRef(false);
568
- const fetchMoreOnEndReached = React5.useCallback(async (containerRefElement) => {
868
+ const tableContainerRef = React9.useRef(null);
869
+ const fetchingRef = React9.useRef(false);
870
+ const fetchMoreOnEndReached = React9.useCallback(async (containerRefElement) => {
569
871
  if (containerRefElement && !fetchingRef.current) {
570
872
  const {
571
873
  scrollHeight,
@@ -582,16 +884,16 @@ function Table({
582
884
  }
583
885
  }
584
886
  }, [fetchNextPage, isLoading]);
585
- const handleScroll = React5.useCallback(async (e) => {
887
+ const handleScroll = React9.useCallback(async (e) => {
586
888
  await fetchMoreOnEndReached(e.currentTarget);
587
889
  }, [fetchMoreOnEndReached]);
588
- return /* @__PURE__ */ React5__default.default.createElement("div", {
890
+ return /* @__PURE__ */ React9__default.default.createElement("div", {
589
891
  ref: tableContainerRef,
590
- className: classnames__default.default(Table_default.osdkTableContainer, className),
892
+ className: classNames__default.default(Table_default.osdkTableContainer, className),
591
893
  onScroll: handleScroll
592
- }, /* @__PURE__ */ React5__default.default.createElement("table", null, /* @__PURE__ */ React5__default.default.createElement(TableHeader, {
894
+ }, /* @__PURE__ */ React9__default.default.createElement("table", null, /* @__PURE__ */ React9__default.default.createElement(TableHeader, {
593
895
  table
594
- }), /* @__PURE__ */ React5__default.default.createElement(TableBody, {
896
+ }), /* @__PURE__ */ React9__default.default.createElement(TableBody, {
595
897
  rows: table.getRowModel().rows,
596
898
  tableContainerRef,
597
899
  onRowClick,
@@ -606,27 +908,37 @@ function ObjectTable({
606
908
  objectType,
607
909
  columnDefinitions,
608
910
  filter,
911
+ orderBy,
912
+ defaultOrderBy,
913
+ onOrderByChanged,
914
+ onColumnsPinnedChanged,
609
915
  onRowSelection,
610
916
  renderCellContextMenu,
611
917
  selectionMode = "none",
612
918
  selectedRows,
613
919
  ...props
614
920
  }) {
921
+ const [columnSizing, setColumnSizing] = React9.useState({});
922
+ const {
923
+ sorting,
924
+ onSortingChange
925
+ } = useTableSorting({
926
+ orderBy,
927
+ defaultOrderBy,
928
+ onOrderByChanged
929
+ });
615
930
  const {
616
931
  data,
617
932
  fetchMore,
618
933
  isLoading
619
- } = useObjectTableData(objectSet, columnDefinitions, filter);
934
+ } = useObjectTableData(objectSet, columnDefinitions, filter, sorting);
620
935
  const {
621
936
  columns,
622
937
  loading: isColumnsLoading
623
938
  } = useColumnDefs(objectType, columnDefinitions);
624
- const {
625
- columnVisibility
626
- } = useDefaultTableStates({
939
+ const columnVisibility = useColumnVisibility({
627
940
  columnDefinitions
628
941
  });
629
- const [columnSizing, setColumnSizing] = React5.useState({});
630
942
  const {
631
943
  rowSelection,
632
944
  isAllSelected,
@@ -646,9 +958,17 @@ function ObjectTable({
646
958
  onToggleAll,
647
959
  onToggleRow
648
960
  });
649
- const allColumns = React5.useMemo(() => {
961
+ const allColumns = React9.useMemo(() => {
650
962
  return selectionColumn ? [selectionColumn, ...columns] : columns;
651
963
  }, [selectionColumn, columns]);
964
+ const {
965
+ columnPinning,
966
+ onColumnPinningChange
967
+ } = useColumnPinning({
968
+ columnDefinitions,
969
+ hasSelectionColumn: selectionColumn != null,
970
+ onColumnsPinnedChanged
971
+ });
652
972
  const table = reactTable.useReactTable({
653
973
  data: data ?? [],
654
974
  columns: allColumns,
@@ -656,22 +976,28 @@ function ObjectTable({
656
976
  state: {
657
977
  columnVisibility,
658
978
  rowSelection,
659
- columnSizing
979
+ sorting,
980
+ columnSizing,
981
+ columnPinning
660
982
  },
983
+ onSortingChange,
661
984
  onColumnSizingChange: setColumnSizing,
985
+ onColumnPinningChange,
662
986
  enableRowSelection: selectionMode !== "none",
663
987
  columnResizeMode: "onChange",
664
988
  columnResizeDirection: "ltr",
989
+ manualSorting: true,
990
+ // Enable manual sorting to indicate server-side sorting
665
991
  defaultColumn: {
666
992
  minSize: 80
667
993
  },
668
994
  getRowId
669
995
  });
670
- const onRenderCellContextMenu = React5.useCallback((row, cell) => {
996
+ const onRenderCellContextMenu = React9.useCallback((row, cell) => {
671
997
  return renderCellContextMenu?.(row, cell.getValue());
672
998
  }, [renderCellContextMenu]);
673
999
  const isTableLoading = isLoading || isColumnsLoading;
674
- return /* @__PURE__ */ React5__default.default.createElement(Table, {
1000
+ return /* @__PURE__ */ React9__default.default.createElement(BaseTable, {
675
1001
  table,
676
1002
  isLoading: isTableLoading,
677
1003
  fetchNextPage: fetchMore,
@@ -682,6 +1008,7 @@ function ObjectTable({
682
1008
  });
683
1009
  }
684
1010
 
1011
+ exports.BaseTable = BaseTable;
685
1012
  exports.ObjectTable = ObjectTable;
686
1013
  //# sourceMappingURL=experimental.cjs.map
687
1014
  //# sourceMappingURL=experimental.cjs.map