@osdk/react-components 0.1.0-beta.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +2 -5
  3. package/build/browser/base-components/checkbox/Checkbox.js +32 -27
  4. package/build/browser/object-table/CellContextMenu.js +20 -23
  5. package/build/browser/object-table/LoadingCell.js +38 -0
  6. package/build/browser/object-table/LoadingCell.js.map +1 -0
  7. package/build/browser/object-table/LoadingRow.js +69 -0
  8. package/build/browser/object-table/LoadingRow.js.map +1 -0
  9. package/build/browser/object-table/LoadingStateTable.js +395 -0
  10. package/build/browser/object-table/LoadingStateTable.js.map +1 -0
  11. package/build/browser/object-table/NonIdealState.js +25 -0
  12. package/build/browser/object-table/NonIdealState.js.map +1 -0
  13. package/build/browser/object-table/ObjectTable.js +6 -5
  14. package/build/browser/object-table/ObjectTable.js.map +1 -1
  15. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  16. package/build/browser/object-table/Table.js +948 -45
  17. package/build/browser/object-table/Table.js.map +1 -1
  18. package/build/browser/object-table/TableBody.js +269 -34
  19. package/build/browser/object-table/TableBody.js.map +1 -1
  20. package/build/browser/object-table/TableCell.js +111 -31
  21. package/build/browser/object-table/TableCell.js.map +1 -1
  22. package/build/browser/object-table/TableHeader.js +215 -38
  23. package/build/browser/object-table/TableHeaderContent.js +18 -21
  24. package/build/browser/object-table/TableHeaderContent.js.map +1 -1
  25. package/build/browser/object-table/TableHeaderWithPopover.js +80 -66
  26. package/build/browser/object-table/TableRow.js +144 -26
  27. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  28. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  29. package/build/browser/object-table/hooks/useColumnDefs.js +6 -2
  30. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  31. package/build/browser/object-table/hooks/useColumnPinning.js.map +1 -1
  32. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  33. package/build/browser/object-table/hooks/useObjectTableData.js +7 -6
  34. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  35. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  36. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  37. package/build/browser/object-table/hooks/useTableSorting.js.map +1 -1
  38. package/build/browser/object-table/utils/getRowId.js.map +1 -1
  39. package/build/cjs/public/experimental.cjs +435 -264
  40. package/build/cjs/public/experimental.cjs.map +1 -1
  41. package/build/cjs/public/experimental.css +114 -56
  42. package/build/cjs/public/experimental.css.map +1 -1
  43. package/build/cjs/public/experimental.d.cts +8 -11
  44. package/build/esm/base-components/checkbox/Checkbox.module.css +10 -3
  45. package/build/esm/object-table/CellContextMenu.module.css +1 -1
  46. package/build/{browser/object-table/CellContextMenu.module.css → esm/object-table/LoadingCell.js} +16 -3
  47. package/build/esm/object-table/LoadingCell.js.map +1 -0
  48. package/build/esm/object-table/LoadingCell.module.css +48 -0
  49. package/build/esm/object-table/LoadingRow.js +43 -0
  50. package/build/esm/object-table/LoadingRow.js.map +1 -0
  51. package/build/esm/object-table/LoadingStateTable.js +101 -0
  52. package/build/esm/object-table/LoadingStateTable.js.map +1 -0
  53. package/build/{browser/object-table/TableHeaderContent.module.css → esm/object-table/NonIdealState.js} +11 -13
  54. package/build/esm/object-table/NonIdealState.js.map +1 -0
  55. package/build/{browser/object-table/Table.module.css → esm/object-table/NonIdealState.module.css} +10 -4
  56. package/build/esm/object-table/ObjectTable.js +6 -5
  57. package/build/esm/object-table/ObjectTable.js.map +1 -1
  58. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  59. package/build/esm/object-table/Table.js +34 -13
  60. package/build/esm/object-table/Table.js.map +1 -1
  61. package/build/esm/object-table/Table.module.css +2 -2
  62. package/build/esm/object-table/TableBody.js +13 -2
  63. package/build/esm/object-table/TableBody.js.map +1 -1
  64. package/build/esm/object-table/TableCell.js.map +1 -1
  65. package/build/esm/object-table/TableCell.module.css +7 -8
  66. package/build/esm/object-table/TableHeader.module.css +15 -9
  67. package/build/esm/object-table/TableHeaderContent.js.map +1 -1
  68. package/build/esm/object-table/TableHeaderWithPopover.module.css +31 -26
  69. package/build/esm/object-table/TableRow.module.css +1 -1
  70. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +18 -20
  71. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  72. package/build/esm/object-table/hooks/useColumnDefs.js +6 -2
  73. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  74. package/build/esm/object-table/hooks/useColumnPinning.js.map +1 -1
  75. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  76. package/build/esm/object-table/hooks/useObjectTableData.js +7 -6
  77. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  78. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  79. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  80. package/build/esm/object-table/hooks/useTableSorting.js.map +1 -1
  81. package/build/esm/object-table/utils/getRowId.js.map +1 -1
  82. package/build/types/object-table/LoadingCell.d.ts +4 -0
  83. package/build/types/object-table/LoadingCell.d.ts.map +1 -0
  84. package/build/types/object-table/LoadingRow.d.ts +11 -0
  85. package/build/types/object-table/LoadingRow.d.ts.map +1 -0
  86. package/build/types/object-table/LoadingStateTable.d.ts +11 -0
  87. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -0
  88. package/build/types/object-table/NonIdealState.d.ts +6 -0
  89. package/build/types/object-table/NonIdealState.d.ts.map +1 -0
  90. package/build/types/object-table/ObjectTable.d.ts +4 -4
  91. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  92. package/build/types/object-table/ObjectTableApi.d.ts +4 -8
  93. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  94. package/build/types/object-table/Table.d.ts +2 -1
  95. package/build/types/object-table/Table.d.ts.map +1 -1
  96. package/build/types/object-table/TableBody.d.ts +4 -2
  97. package/build/types/object-table/TableBody.d.ts.map +1 -1
  98. package/build/types/object-table/TableHeaderContent.d.ts.map +1 -1
  99. package/build/types/object-table/hooks/useColumnDefs.d.ts +3 -3
  100. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  101. package/build/types/object-table/hooks/useColumnPinning.d.ts +3 -3
  102. package/build/types/object-table/hooks/useColumnPinning.d.ts.map +1 -1
  103. package/build/types/object-table/hooks/useColumnVisibility.d.ts +3 -3
  104. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  105. package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -6
  106. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  107. package/build/types/object-table/hooks/useRowSelection.d.ts +3 -3
  108. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  109. package/build/types/object-table/hooks/useSelectionColumn.d.ts +2 -2
  110. package/build/types/object-table/hooks/useSelectionColumn.d.ts.map +1 -1
  111. package/build/types/object-table/hooks/useTableSorting.d.ts +3 -3
  112. package/build/types/object-table/hooks/useTableSorting.d.ts.map +1 -1
  113. package/build/types/object-table/utils/getRowId.d.ts +3 -3
  114. package/build/types/object-table/utils/getRowId.d.ts.map +1 -1
  115. package/package.json +6 -6
  116. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -72
  117. package/build/browser/object-table/TableBody.module.css +0 -20
  118. package/build/browser/object-table/TableCell.module.css +0 -63
  119. package/build/browser/object-table/TableHeader.module.css +0 -95
  120. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -105
  121. package/build/browser/object-table/TableRow.module.css +0 -60
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
3
  var reactTable = require('@tanstack/react-table');
4
- var React9 = require('react');
4
+ var React7 = 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 classNames2 = require('classnames');
10
+ var menu = require('@base-ui/react/menu');
10
11
  var reactVirtual = require('@tanstack/react-virtual');
11
12
  var reactDom = require('react-dom');
12
- var menu = require('@base-ui/react/menu');
13
13
 
14
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
 
16
- var React9__default = /*#__PURE__*/_interopDefault(React9);
17
- var classNames__default = /*#__PURE__*/_interopDefault(classNames);
16
+ var React7__default = /*#__PURE__*/_interopDefault(React7);
17
+ var classNames2__default = /*#__PURE__*/_interopDefault(classNames2);
18
18
 
19
19
  // src/object-table/ObjectTable.tsx
20
20
  function useColumnDefs(objectType, columnDefinitions) {
@@ -23,7 +23,7 @@ function useColumnDefs(objectType, columnDefinitions) {
23
23
  loading,
24
24
  error
25
25
  } = react.useOsdkMetadata(objectType);
26
- const columns = React9.useMemo(() => {
26
+ const columns = React7.useMemo(() => {
27
27
  const objectProperties = metadata?.properties;
28
28
  if (columnDefinitions) {
29
29
  return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);
@@ -56,8 +56,12 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
56
56
  accessorKey: colKey,
57
57
  header: renderHeader ?? propertyMetadata?.displayName,
58
58
  size: width,
59
- minSize: minWidth,
60
- maxSize: maxWidth,
59
+ ...minWidth ? {
60
+ minSize: minWidth
61
+ } : {},
62
+ ...maxWidth ? {
63
+ maxSize: maxWidth
64
+ } : {},
61
65
  enableResizing: resizable,
62
66
  enableSorting: orderable,
63
67
  enableColumnFilter: filterable,
@@ -89,11 +93,11 @@ var useColumnPinning = ({
89
93
  hasSelectionColumn,
90
94
  onColumnsPinnedChanged
91
95
  }) => {
92
- const [columnPinning, setColumnPinning] = React9.useState({
96
+ const [columnPinning, setColumnPinning] = React7.useState({
93
97
  left: [],
94
98
  right: []
95
99
  });
96
- React9.useEffect(() => {
100
+ React7.useEffect(() => {
97
101
  const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);
98
102
  const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];
99
103
  setColumnPinning({
@@ -101,7 +105,7 @@ var useColumnPinning = ({
101
105
  right: [...defaultState.right ?? []]
102
106
  });
103
107
  }, [columnDefinitions, hasSelectionColumn]);
104
- const onColumnPinningChange = React9.useCallback((updater) => {
108
+ const onColumnPinningChange = React7.useCallback((updater) => {
105
109
  setColumnPinning((prev) => {
106
110
  const newPinning = typeof updater === "function" ? updater(prev) : updater;
107
111
  if (onColumnsPinnedChanged) {
@@ -158,7 +162,7 @@ function convertColumnPinningStateToArray(pinningState) {
158
162
  var useColumnVisibility = ({
159
163
  columnDefinitions
160
164
  }) => {
161
- const columnVisibility = React9.useMemo(() => {
165
+ const columnVisibility = React7.useMemo(() => {
162
166
  if (columnDefinitions) {
163
167
  const colVisibility = columnDefinitions.reduce((acc, colDef) => {
164
168
  if (colDef.isVisible !== void 0) {
@@ -179,8 +183,8 @@ var useColumnVisibility = ({
179
183
  return columnVisibility;
180
184
  };
181
185
  var PAGE_SIZE = 50;
182
- function useObjectTableData(objectSet, columnDefinitions, filter, sorting) {
183
- const orderBy = React9.useMemo(() => {
186
+ function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {
187
+ const orderBy = React7.useMemo(() => {
184
188
  if (!sorting || sorting.length === 0) {
185
189
  return void 0;
186
190
  }
@@ -189,13 +193,16 @@ function useObjectTableData(objectSet, columnDefinitions, filter, sorting) {
189
193
  return acc;
190
194
  }, {});
191
195
  }, [sorting]);
192
- const withProperties = React9.useMemo(() => {
196
+ const withProperties = React7.useMemo(() => {
193
197
  if (!columnDefinitions) {
194
198
  return;
195
199
  }
196
200
  const rdpColumns = columnDefinitions.map((colDef) => colDef.locator).filter((colLocator) => {
197
201
  return colLocator.type === "rdp";
198
202
  });
203
+ if (!rdpColumns.length) {
204
+ return;
205
+ }
199
206
  return rdpColumns.reduce((acc, cur) => {
200
207
  return {
201
208
  ...acc,
@@ -203,7 +210,7 @@ function useObjectTableData(objectSet, columnDefinitions, filter, sorting) {
203
210
  };
204
211
  }, {});
205
212
  }, [columnDefinitions]);
206
- return experimental.useObjectSet(objectSet, {
213
+ return experimental.useOsdkObjects(objectOrInterfaceType, {
207
214
  withProperties,
208
215
  pageSize: PAGE_SIZE,
209
216
  where: filter,
@@ -224,11 +231,11 @@ function useRowSelection({
224
231
  onRowSelection,
225
232
  data
226
233
  }) {
227
- const [internalRowSelection, setInternalRowSelection] = React9.useState({});
228
- const [lastSelectedRowIndex, setLastSelectedRowIndex] = React9.useState(null);
234
+ const [internalRowSelection, setInternalRowSelection] = React7.useState({});
235
+ const [lastSelectedRowIndex, setLastSelectedRowIndex] = React7.useState(null);
229
236
  const isControlled = selectedRows !== void 0;
230
237
  const isSelectionEnabled = selectionMode !== "none";
231
- const rowSelectionState = React9.useMemo(() => {
238
+ const rowSelectionState = React7.useMemo(() => {
232
239
  if (!isSelectionEnabled) return {};
233
240
  if (isControlled && selectedRows) {
234
241
  return getRowSelectionState(selectedRows);
@@ -239,7 +246,7 @@ function useRowSelection({
239
246
  const totalCount = data?.length ?? 0;
240
247
  const isAllSelected = totalCount > 0 && selectedCount === totalCount;
241
248
  const hasSelection = selectedCount > 0;
242
- const onToggleAll = React9.useCallback(() => {
249
+ const onToggleAll = React7.useCallback(() => {
243
250
  if (!isSelectionEnabled || !data) return;
244
251
  const newSelectedRows = isAllSelected ? [] : data.map((item) => item.$primaryKey);
245
252
  if (!isControlled) {
@@ -247,7 +254,7 @@ function useRowSelection({
247
254
  }
248
255
  onRowSelection?.(newSelectedRows);
249
256
  }, [isSelectionEnabled, data, isAllSelected, isControlled, onRowSelection]);
250
- const onToggleRow = React9.useCallback((rowId, rowIndex, isShiftClick = false) => {
257
+ const onToggleRow = React7.useCallback((rowId, rowIndex, isShiftClick = false) => {
251
258
  if (!isSelectionEnabled || !data) return;
252
259
  let newSelectedRows = [];
253
260
  if (selectionMode === "single") {
@@ -369,14 +376,14 @@ function Checkbox({
369
376
  indicatorProps,
370
377
  ...rest
371
378
  }) {
372
- return /* @__PURE__ */ React9__default.default.createElement(checkbox.Checkbox.Root, _extends({
373
- className: classNames__default.default(Checkbox_default.osdkCheckboxRoot, className),
379
+ return /* @__PURE__ */ React7__default.default.createElement(checkbox.Checkbox.Root, _extends({
380
+ className: classNames2__default.default(Checkbox_default.osdkCheckboxRoot, className),
374
381
  indeterminate
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, {
382
+ }, rest), /* @__PURE__ */ React7__default.default.createElement(checkbox.Checkbox.Indicator, _extends({}, indicatorProps, {
383
+ className: classNames2__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
384
+ }), indeterminate ? /* @__PURE__ */ React7__default.default.createElement(icons.Minus, {
378
385
  color: "currentColor"
379
- }) : /* @__PURE__ */ React9__default.default.createElement(icons.Tick, {
386
+ }) : /* @__PURE__ */ React7__default.default.createElement(icons.Tick, {
380
387
  color: "currentColor"
381
388
  })));
382
389
  }
@@ -387,7 +394,7 @@ function SelectionHeaderCell({
387
394
  hasSelection,
388
395
  onToggleAll
389
396
  }) {
390
- return /* @__PURE__ */ React9__default.default.createElement(Checkbox, {
397
+ return /* @__PURE__ */ React7__default.default.createElement(Checkbox, {
391
398
  indeterminate: hasSelection && !isAllSelected,
392
399
  checked: isAllSelected,
393
400
  onCheckedChange: onToggleAll,
@@ -398,11 +405,11 @@ function SelectionCell({
398
405
  row,
399
406
  onToggleRow
400
407
  }) {
401
- const handleClick = React9.useCallback((event) => {
408
+ const handleClick = React7.useCallback((event) => {
402
409
  const isShiftClick = event.shiftKey;
403
410
  onToggleRow(row.id, row.index, isShiftClick);
404
411
  }, [row, onToggleRow]);
405
- return /* @__PURE__ */ React9__default.default.createElement(Checkbox, {
412
+ return /* @__PURE__ */ React7__default.default.createElement(Checkbox, {
406
413
  checked: row.getIsSelected(),
407
414
  onClick: handleClick,
408
415
  "aria-label": `Select row ${row.index + 1}`
@@ -417,18 +424,18 @@ var useSelectionColumn = ({
417
424
  onToggleAll,
418
425
  onToggleRow
419
426
  }) => {
420
- const selectionColumn = React9.useMemo(() => {
427
+ const selectionColumn = React7.useMemo(() => {
421
428
  if (selectionMode === "none") return null;
422
429
  const colDef = {
423
430
  id: SELECTION_COLUMN_ID,
424
- header: () => selectionMode === "multiple" ? /* @__PURE__ */ React9__default.default.createElement(SelectionHeaderCell, {
431
+ header: () => selectionMode === "multiple" ? /* @__PURE__ */ React7__default.default.createElement(SelectionHeaderCell, {
425
432
  isAllSelected,
426
433
  hasSelection,
427
434
  onToggleAll
428
435
  }) : null,
429
436
  cell: ({
430
437
  row
431
- }) => /* @__PURE__ */ React9__default.default.createElement(SelectionCell, {
438
+ }) => /* @__PURE__ */ React7__default.default.createElement(SelectionCell, {
432
439
  row,
433
440
  onToggleRow
434
441
  }),
@@ -448,10 +455,10 @@ var useTableSorting = ({
448
455
  defaultOrderBy,
449
456
  onOrderByChanged
450
457
  }) => {
451
- const [internalSorting, setInternalSorting] = React9.useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);
458
+ const [internalSorting, setInternalSorting] = React7.useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);
452
459
  const isControlled = orderBy !== void 0;
453
- const sortingState = React9.useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);
454
- const onSortingChange = React9.useCallback((updater) => {
460
+ const sortingState = React7.useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);
461
+ const onSortingChange = React7.useCallback((updater) => {
455
462
  const newSorting = typeof updater === "function" ? updater(sortingState) : updater;
456
463
  if (!isControlled) {
457
464
  setInternalSorting(newSorting);
@@ -485,187 +492,57 @@ function convertSortingStateToOrderBy(sorting) {
485
492
  }));
486
493
  }
487
494
 
488
- // src/object-table/Table.module.css
489
- var Table_default = {};
490
-
491
- // src/object-table/TableBody.module.css
492
- var TableBody_default = {};
493
-
494
- // src/object-table/CellContextMenu.module.css
495
- var CellContextMenu_default = {};
496
-
497
- // src/object-table/CellContextMenu.tsx
498
- function CellContextMenu({
499
- cell,
500
- position,
501
- onClose,
502
- renderContent
503
- }) {
504
- const ref = React9.useRef(null);
505
- React9.useEffect(() => {
506
- const handleClickOutside = (event) => {
507
- if (ref.current && !ref.current.contains(event.target)) {
508
- onClose();
509
- }
510
- };
511
- document.addEventListener("mousedown", handleClickOutside);
512
- return () => {
513
- document.removeEventListener("mousedown", handleClickOutside);
514
- };
515
- }, [onClose]);
516
- return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React9__default.default.createElement("div", {
517
- ref,
518
- className: CellContextMenu_default.osdkCellContextMenu,
519
- style: {
520
- left: position.left,
521
- top: position.top,
522
- minWidth: position.width
523
- }
524
- }, renderContent(cell.row.original, cell)), document.body);
525
- }
526
- var useCellContextMenu = ({
527
- tdRef
528
- }) => {
529
- const [popoverPosition, setPopoverPosition] = React9.useState(null);
530
- const [isContextMenuOpen, setIsContextMenuOpen] = React9.useState(false);
531
- const handleOpenContextMenu = React9.useCallback((event) => {
532
- event.preventDefault();
533
- event.stopPropagation();
534
- if (tdRef.current) {
535
- const rect = tdRef.current.getBoundingClientRect();
536
- const position = {
537
- left: rect.left,
538
- top: rect.bottom,
539
- width: rect.width
540
- };
541
- setPopoverPosition(position);
542
- setIsContextMenuOpen(true);
543
- }
544
- }, [tdRef]);
545
- const handleCloseContextMenu = React9.useCallback(() => {
546
- setIsContextMenuOpen(false);
547
- setPopoverPosition(null);
548
- }, []);
549
- return {
550
- isContextMenuOpen,
551
- handleOpenContextMenu,
552
- handleCloseContextMenu,
553
- popoverPosition
554
- };
555
- };
495
+ // src/object-table/LoadingCell.module.css
496
+ var LoadingCell_default = {};
556
497
 
557
498
  // src/object-table/TableCell.module.css
558
499
  var TableCell_default = {};
559
500
 
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
-
572
- // src/object-table/TableCell.tsx
573
- function TableCell({
574
- cell,
575
- renderCellContextMenu
501
+ // src/object-table/LoadingCell.tsx
502
+ function LoadingCell({
503
+ width
576
504
  }) {
577
- const tdRef = React9.useRef(null);
578
- const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;
579
- const {
580
- isContextMenuOpen,
581
- handleOpenContextMenu,
582
- handleCloseContextMenu,
583
- popoverPosition
584
- } = useCellContextMenu({
585
- tdRef
586
- });
587
- const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;
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", {
592
- ref: tdRef,
593
- "data-pinned": cell.column.getIsPinned(),
505
+ return /* @__PURE__ */ React7__default.default.createElement("td", {
594
506
  className: TableCell_default.osdkTableCell,
595
- style: columnStyles,
596
- onContextMenu: handleOpenContextMenu
597
- }, /* @__PURE__ */ React9__default.default.createElement("div", {
598
- className: TableCell_default.osdkTableCellContent
599
- }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React9__default.default.createElement(CellContextMenu, {
600
- cell,
601
- position: popoverPosition,
602
- onClose: handleCloseContextMenu,
603
- renderContent: renderCellContextMenu
507
+ style: {
508
+ width
509
+ }
510
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
511
+ className: classNames2__default.default(LoadingCell_default.osdkLoadingCell, LoadingCell_default.osdkCellSkeleton)
604
512
  }));
605
513
  }
606
514
 
607
515
  // src/object-table/TableRow.module.css
608
516
  var TableRow_default = {};
609
517
 
610
- // src/object-table/TableRow.tsx
611
- function TableRow({
612
- row,
613
- virtualRow,
614
- onRowClick,
615
- renderCellContextMenu
518
+ // src/object-table/LoadingRow.tsx
519
+ function LoadingRow({
520
+ headers,
521
+ columnCount,
522
+ translateY,
523
+ rowHeight = 40,
524
+ columnWidth = 80
616
525
  }) {
617
- const handleClick = React9.useCallback(() => {
618
- onRowClick?.(row.original);
619
- }, [onRowClick, row.original]);
620
- return /* @__PURE__ */ React9__default.default.createElement("tr", {
621
- "data-selected": row.getIsSelected(),
526
+ return /* @__PURE__ */ React7__default.default.createElement("tr", {
622
527
  className: TableRow_default.osdkTableRow,
623
528
  style: {
624
- height: `${virtualRow.size}px`,
625
- transform: `translateY(${virtualRow.start}px)`
626
- },
627
- onClick: handleClick
628
- }, row.getVisibleCells().map((cell) => /* @__PURE__ */ React9__default.default.createElement(TableCell, {
629
- key: cell.id,
630
- cell,
631
- renderCellContextMenu
632
- })));
633
- }
634
-
635
- // src/object-table/TableBody.tsx
636
- function TableBody({
637
- rows,
638
- tableContainerRef,
639
- onRowClick,
640
- renderCellContextMenu,
641
- rowHeight = 40
642
- }) {
643
- const rowVirtualizer = reactVirtual.useVirtualizer({
644
- count: rows.length,
645
- estimateSize: () => rowHeight,
646
- getScrollElement: () => tableContainerRef.current,
647
- overscan: 5
648
- });
649
- React9.useLayoutEffect(() => {
650
- rowVirtualizer.measure();
651
- }, [rowVirtualizer, rows.length]);
652
- return /* @__PURE__ */ React9__default.default.createElement("tbody", {
653
- className: TableBody_default.osdkTableBody,
654
- style: {
655
- height: `${rowVirtualizer.getTotalSize()}px`
529
+ height: `${rowHeight}px`,
530
+ transform: `translateY(${translateY}px)`
656
531
  }
657
- }, rowVirtualizer.getVirtualItems().map((virtualRow) => {
658
- const row = rows[virtualRow.index];
659
- return /* @__PURE__ */ React9__default.default.createElement(TableRow, {
660
- key: row.id,
661
- row,
662
- virtualRow,
663
- onRowClick,
664
- renderCellContextMenu
532
+ }, /* @__PURE__ */ React7__default.default.createElement(React7__default.default.Fragment, null, Array.from({
533
+ length: columnCount
534
+ }).map((_, index) => {
535
+ const width = headers.length > index ? headers[index].getSize() : columnWidth;
536
+ return /* @__PURE__ */ React7__default.default.createElement(LoadingCell, {
537
+ key: `loading-cell-${index}`,
538
+ width
665
539
  });
666
- }));
540
+ })));
667
541
  }
668
542
 
543
+ // src/object-table/TableBody.module.css
544
+ var TableBody_default = {};
545
+
669
546
  // src/object-table/TableHeader.module.css
670
547
  var TableHeader_default = {};
671
548
 
@@ -676,7 +553,7 @@ var TableHeaderContent_default = {};
676
553
  function TableHeaderContent({
677
554
  header
678
555
  }) {
679
- return /* @__PURE__ */ React9__default.default.createElement("div", {
556
+ return /* @__PURE__ */ React7__default.default.createElement("div", {
680
557
  className: TableHeaderContent_default.osdkHeaderContent
681
558
  }, reactTable.flexRender(header.column.columnDef.header, header.getContext()));
682
559
  }
@@ -691,14 +568,14 @@ function HeaderMenuItem({
691
568
  label,
692
569
  active = false
693
570
  }) {
694
- return /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Item, {
571
+ return /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Item, {
695
572
  closeOnClick: true,
696
- className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
573
+ className: classNames2__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
697
574
  onClick
698
- }, /* @__PURE__ */ React9__default.default.createElement(Icon, {
575
+ }, /* @__PURE__ */ React7__default.default.createElement(Icon, {
699
576
  className: TableHeaderWithPopover_default.osdkHeaderIcon,
700
577
  color: "currentColor"
701
- }), /* @__PURE__ */ React9__default.default.createElement("span", null, label));
578
+ }), /* @__PURE__ */ React7__default.default.createElement("span", null, label));
702
579
  }
703
580
  function TableHeaderWithPopover({
704
581
  header,
@@ -707,8 +584,8 @@ function TableHeaderWithPopover({
707
584
  onSortChange,
708
585
  onResetSize
709
586
  }) {
710
- const [isOpen, setIsOpen] = React9.useState(false);
711
- const handlePinLeft = React9.useCallback(() => {
587
+ const [isOpen, setIsOpen] = React7.useState(false);
588
+ const handlePinLeft = React7.useCallback(() => {
712
589
  setColumnPinning((prev) => {
713
590
  return {
714
591
  left: [...prev.left || [], header.column.id],
@@ -716,7 +593,7 @@ function TableHeaderWithPopover({
716
593
  };
717
594
  });
718
595
  }, [header.column.id, setColumnPinning]);
719
- const handleUnpin = React9.useCallback(() => {
596
+ const handleUnpin = React7.useCallback(() => {
720
597
  setColumnPinning((prev) => {
721
598
  return {
722
599
  left: prev.left?.filter((id) => id !== header.column.id) || [],
@@ -724,109 +601,121 @@ function TableHeaderWithPopover({
724
601
  };
725
602
  });
726
603
  }, [header.column.id, setColumnPinning]);
727
- const handleSortAscending = React9.useCallback(() => {
604
+ const handleSortAscending = React7.useCallback(() => {
728
605
  header.column.toggleSorting(false);
729
606
  onSortChange?.([{
730
607
  id: header.column.id,
731
608
  desc: false
732
609
  }]);
733
610
  }, [header.column, onSortChange]);
734
- const handleSortDescending = React9.useCallback(() => {
611
+ const handleSortDescending = React7.useCallback(() => {
735
612
  header.column.toggleSorting(true);
736
613
  onSortChange?.([{
737
614
  id: header.column.id,
738
615
  desc: true
739
616
  }]);
740
617
  }, [header.column, onSortChange]);
741
- const handleClearAllSorts = React9.useCallback(() => {
618
+ const handleClearAllSorts = React7.useCallback(() => {
742
619
  header.column.clearSorting();
743
620
  onSortChange?.([]);
744
621
  }, [header.column, onSortChange]);
745
- const handleResetSize = React9.useCallback(() => {
622
+ const handleResetSize = React7.useCallback(() => {
746
623
  header.column.resetSize();
747
624
  if (onResetSize) {
748
625
  onResetSize();
749
626
  }
750
627
  }, [header.column, onResetSize]);
751
- const handleInteraction = React9.useCallback((e) => {
628
+ const handleInteraction = React7.useCallback((e) => {
752
629
  e.preventDefault();
753
630
  setIsOpen((prev) => !prev);
754
631
  }, []);
755
632
  const isSorted = header.column.getIsSorted();
756
633
  const isSortable = header.column.getCanSort();
757
- return /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Root, {
634
+ return /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Root, {
758
635
  open: isOpen,
759
636
  onOpenChange: setIsOpen
760
- }, /* @__PURE__ */ React9__default.default.createElement("div", {
761
- className: classNames__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
637
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
638
+ className: classNames2__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
762
639
  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, {
640
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
641
+ className: classNames2__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
642
+ }, isColumnPinned && /* @__PURE__ */ React7__default.default.createElement(icons.Pin, {
766
643
  className: TableHeaderWithPopover_default.osdkHeaderIcon,
767
644
  color: "currentColor"
768
- }), /* @__PURE__ */ React9__default.default.createElement(TableHeaderContent, {
645
+ }), /* @__PURE__ */ React7__default.default.createElement(TableHeaderContent, {
769
646
  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", {
647
+ })), /* @__PURE__ */ React7__default.default.createElement("div", {
648
+ className: classNames2__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
649
+ }, isSorted && /* @__PURE__ */ React7__default.default.createElement("div", {
773
650
  className: TableHeaderWithPopover_default.osdkCenterContainer
774
- }, isSorted === "asc" ? /* @__PURE__ */ React9__default.default.createElement(icons.SortAlphabetical, {
651
+ }, isSorted === "asc" ? /* @__PURE__ */ React7__default.default.createElement(icons.SortAlphabetical, {
775
652
  className: TableHeaderWithPopover_default.osdkHeaderIcon,
776
653
  color: "currentColor"
777
- }) : /* @__PURE__ */ React9__default.default.createElement(icons.SortAlphabeticalDesc, {
654
+ }) : /* @__PURE__ */ React7__default.default.createElement(icons.SortAlphabeticalDesc, {
778
655
  className: TableHeaderWithPopover_default.osdkHeaderIcon,
779
656
  color: "currentColor"
780
- })), /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Trigger, {
657
+ })), /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Trigger, {
781
658
  "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, {
659
+ className: classNames2__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
660
+ }, /* @__PURE__ */ React7__default.default.createElement(icons.ChevronDown, {
784
661
  className: TableHeaderWithPopover_default.osdkHeaderIcon
785
- }))), /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Portal, {
662
+ }))), /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Portal, {
786
663
  container: document.body
787
- }, /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Positioner, {
664
+ }, /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Positioner, {
788
665
  sideOffset: 4
789
- }, /* @__PURE__ */ React9__default.default.createElement(menu.Menu.Popup, {
666
+ }, /* @__PURE__ */ React7__default.default.createElement(menu.Menu.Popup, {
790
667
  className: TableHeaderWithPopover_default.osdkHeaderPopup
791
- }, !isColumnPinned && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
668
+ }, !isColumnPinned && /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
792
669
  onClick: handlePinLeft,
793
670
  icon: icons.Pin,
794
671
  label: "Pin column"
795
- }), isColumnPinned && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
672
+ }), isColumnPinned && /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
796
673
  onClick: handleUnpin,
797
674
  icon: icons.Unpin,
798
675
  label: "Unpin Column",
799
676
  active: true
800
- }), isSortable && /* @__PURE__ */ React9__default.default.createElement(React9__default.default.Fragment, null, /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
677
+ }), isSortable && /* @__PURE__ */ React7__default.default.createElement(React7__default.default.Fragment, null, /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
801
678
  onClick: handleSortAscending,
802
679
  icon: icons.SortAlphabetical,
803
680
  label: "Sort ascending",
804
681
  active: isSorted === "asc"
805
- }), /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
682
+ }), /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
806
683
  onClick: handleSortDescending,
807
684
  icon: icons.SortAlphabeticalDesc,
808
685
  label: "Sort descending",
809
686
  active: isSorted === "desc"
810
- })), !!isSorted && /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
687
+ })), !!isSorted && /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
811
688
  onClick: handleClearAllSorts,
812
689
  icon: icons.Remove,
813
690
  label: "Clear all sorts"
814
- }), /* @__PURE__ */ React9__default.default.createElement(HeaderMenuItem, {
691
+ }), /* @__PURE__ */ React7__default.default.createElement(HeaderMenuItem, {
815
692
  onClick: handleResetSize,
816
693
  icon: icons.VerticalDistribution,
817
694
  label: "Reset Column Size"
818
695
  }))))));
819
696
  }
820
697
 
698
+ // src/object-table/utils/getColumnPinningStyles.ts
699
+ function getColumnPinningStyles(column) {
700
+ const isPinned = column.getIsPinned();
701
+ return {
702
+ columnStyles: {
703
+ left: isPinned === "left" ? `${column.getStart("left")}px` : void 0,
704
+ right: isPinned === "right" ? `${column.getAfter("right")}px` : void 0,
705
+ width: column.getSize()
706
+ }
707
+ };
708
+ }
709
+
821
710
  // src/object-table/TableHeader.tsx
822
711
  function TableHeader({
823
712
  table
824
713
  }) {
825
714
  const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;
826
- return /* @__PURE__ */ React9__default.default.createElement("thead", {
715
+ return /* @__PURE__ */ React7__default.default.createElement("thead", {
827
716
  className: TableHeader_default.osdkTableHeader,
828
717
  "data-resizing": isResizing
829
- }, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React9__default.default.createElement("tr", {
718
+ }, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React7__default.default.createElement("tr", {
830
719
  key: headerGroup.id,
831
720
  className: TableHeader_default.osdkTableHeaderRow
832
721
  }, headerGroup.headers.map((header) => {
@@ -835,18 +724,18 @@ function TableHeader({
835
724
  } = getColumnPinningStyles(header.column);
836
725
  const isColumnPinned = header.column.getIsPinned();
837
726
  const isSelectColumn = header.id === SELECTION_COLUMN_ID;
838
- return /* @__PURE__ */ React9__default.default.createElement("th", {
727
+ return /* @__PURE__ */ React7__default.default.createElement("th", {
839
728
  key: header.id,
840
729
  "data-pinned": header.column.getIsPinned(),
841
730
  className: TableHeader_default.osdkTableHeaderCell,
842
731
  style: columnStyles
843
- }, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */ React9__default.default.createElement(TableHeaderContent, {
732
+ }, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */ React7__default.default.createElement(TableHeaderContent, {
844
733
  header
845
- }) : /* @__PURE__ */ React9__default.default.createElement(TableHeaderWithPopover, {
734
+ }) : /* @__PURE__ */ React7__default.default.createElement(TableHeaderWithPopover, {
846
735
  header,
847
736
  isColumnPinned,
848
737
  setColumnPinning: table.setColumnPinning
849
- }), header.column.getCanResize() && /* @__PURE__ */ React9__default.default.createElement("div", {
738
+ }), header.column.getCanResize() && /* @__PURE__ */ React7__default.default.createElement("div", {
850
739
  className: TableHeader_default.osdkTableHeaderResizer,
851
740
  onDoubleClick: () => header.column.resetSize(),
852
741
  onMouseDown: header.getResizeHandler(),
@@ -855,6 +744,265 @@ function TableHeader({
855
744
  }))));
856
745
  }
857
746
 
747
+ // src/object-table/LoadingStateTable.tsx
748
+ var MIN_ROWS = 5;
749
+ function LoadingStateTable({
750
+ table,
751
+ tableContainerRef,
752
+ headerGroups,
753
+ rowHeight = 40,
754
+ columnWidth = 120
755
+ }) {
756
+ const isSelectionEnabled = table.options.enableRowSelection;
757
+ const minHeaderCount = isSelectionEnabled ? 1 : 0;
758
+ const headers = headerGroups[0]?.headers ?? [];
759
+ const hasHeadersLoaded = headers.length > minHeaderCount;
760
+ const headerRef = React7.useRef(null);
761
+ const bodyRef = React7.useRef(null);
762
+ const [loadingRowCount, setLoadingRowCount] = React7.useState(MIN_ROWS);
763
+ const [loadingColumnCount, setLoadingColumnCount] = React7.useState(headers.length);
764
+ React7.useEffect(() => {
765
+ if (hasHeadersLoaded) {
766
+ setLoadingColumnCount(headers.length);
767
+ } else {
768
+ if (tableContainerRef.current) {
769
+ const tableWidth = tableContainerRef.current.clientWidth;
770
+ if (tableWidth > 0) {
771
+ const columnsNeeded = Math.ceil(tableWidth / columnWidth);
772
+ setLoadingColumnCount(columnsNeeded);
773
+ }
774
+ }
775
+ }
776
+ }, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);
777
+ React7.useEffect(() => {
778
+ if (tableContainerRef.current) {
779
+ const containerHeight = tableContainerRef.current.clientHeight;
780
+ const availableHeight = containerHeight - rowHeight;
781
+ if (availableHeight > 0) {
782
+ const rowsNeeded = Math.ceil(availableHeight / rowHeight);
783
+ setLoadingRowCount(Math.max(rowsNeeded, MIN_ROWS));
784
+ }
785
+ }
786
+ }, [tableContainerRef, rowHeight]);
787
+ return /* @__PURE__ */ React7__default.default.createElement(React7__default.default.Fragment, null, hasHeadersLoaded ? /* @__PURE__ */ React7__default.default.createElement(TableHeader, {
788
+ table
789
+ }) : /* @__PURE__ */ React7__default.default.createElement("thead", {
790
+ className: TableHeader_default.osdkTableHeader,
791
+ ref: headerRef
792
+ }, /* @__PURE__ */ React7__default.default.createElement("tr", {
793
+ className: TableHeader_default.osdkTableHeaderRow
794
+ }, Array.from({
795
+ length: loadingColumnCount
796
+ }).map((_, index) => {
797
+ const width = headers.length > index ? headers[index].getSize() : columnWidth;
798
+ return /* @__PURE__ */ React7__default.default.createElement("th", {
799
+ key: `loading-header-${index}`,
800
+ className: TableHeader_default.osdkTableHeaderCell,
801
+ style: {
802
+ width
803
+ }
804
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
805
+ className: classNames2__default.default(TableHeader_default.osdkLoadingHeaderCell, LoadingCell_default.osdkCellSkeleton)
806
+ }));
807
+ }))), /* @__PURE__ */ React7__default.default.createElement("tbody", {
808
+ className: TableBody_default.osdkTableBody,
809
+ ref: bodyRef
810
+ }, Array.from({
811
+ length: loadingRowCount
812
+ }).map((_, index) => /* @__PURE__ */ React7__default.default.createElement(LoadingRow, {
813
+ key: `skeleton-${index}`,
814
+ columnCount: loadingColumnCount,
815
+ headers,
816
+ translateY: rowHeight * index,
817
+ rowHeight,
818
+ columnWidth
819
+ }))));
820
+ }
821
+
822
+ // src/object-table/NonIdealState.module.css
823
+ var NonIdealState_default = {};
824
+
825
+ // src/object-table/NonIdealState.tsx
826
+ function NonIdealState({
827
+ message
828
+ }) {
829
+ return /* @__PURE__ */ React7__default.default.createElement("div", {
830
+ className: NonIdealState_default.container
831
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
832
+ className: NonIdealState_default.message
833
+ }, message));
834
+ }
835
+
836
+ // src/object-table/Table.module.css
837
+ var Table_default = {};
838
+
839
+ // src/object-table/CellContextMenu.module.css
840
+ var CellContextMenu_default = {};
841
+
842
+ // src/object-table/CellContextMenu.tsx
843
+ function CellContextMenu({
844
+ cell,
845
+ position,
846
+ onClose,
847
+ renderContent
848
+ }) {
849
+ const ref = React7.useRef(null);
850
+ React7.useEffect(() => {
851
+ const handleClickOutside = (event) => {
852
+ if (ref.current && !ref.current.contains(event.target)) {
853
+ onClose();
854
+ }
855
+ };
856
+ document.addEventListener("mousedown", handleClickOutside);
857
+ return () => {
858
+ document.removeEventListener("mousedown", handleClickOutside);
859
+ };
860
+ }, [onClose]);
861
+ return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React7__default.default.createElement("div", {
862
+ ref,
863
+ className: CellContextMenu_default.osdkCellContextMenu,
864
+ style: {
865
+ left: position.left,
866
+ top: position.top,
867
+ minWidth: position.width
868
+ }
869
+ }, renderContent(cell.row.original, cell)), document.body);
870
+ }
871
+ var useCellContextMenu = ({
872
+ tdRef
873
+ }) => {
874
+ const [popoverPosition, setPopoverPosition] = React7.useState(null);
875
+ const [isContextMenuOpen, setIsContextMenuOpen] = React7.useState(false);
876
+ const handleOpenContextMenu = React7.useCallback((event) => {
877
+ event.preventDefault();
878
+ event.stopPropagation();
879
+ if (tdRef.current) {
880
+ const rect = tdRef.current.getBoundingClientRect();
881
+ const position = {
882
+ left: rect.left,
883
+ top: rect.bottom,
884
+ width: rect.width
885
+ };
886
+ setPopoverPosition(position);
887
+ setIsContextMenuOpen(true);
888
+ }
889
+ }, [tdRef]);
890
+ const handleCloseContextMenu = React7.useCallback(() => {
891
+ setIsContextMenuOpen(false);
892
+ setPopoverPosition(null);
893
+ }, []);
894
+ return {
895
+ isContextMenuOpen,
896
+ handleOpenContextMenu,
897
+ handleCloseContextMenu,
898
+ popoverPosition
899
+ };
900
+ };
901
+
902
+ // src/object-table/TableCell.tsx
903
+ function TableCell({
904
+ cell,
905
+ renderCellContextMenu
906
+ }) {
907
+ const tdRef = React7.useRef(null);
908
+ const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;
909
+ const {
910
+ isContextMenuOpen,
911
+ handleOpenContextMenu,
912
+ handleCloseContextMenu,
913
+ popoverPosition
914
+ } = useCellContextMenu({
915
+ tdRef
916
+ });
917
+ const shouldRenderContextMenu = !isSelectColumn && isContextMenuOpen && !!popoverPosition && !!renderCellContextMenu;
918
+ const {
919
+ columnStyles
920
+ } = getColumnPinningStyles(cell.column);
921
+ return /* @__PURE__ */ React7__default.default.createElement(React7__default.default.Fragment, null, /* @__PURE__ */ React7__default.default.createElement("td", {
922
+ ref: tdRef,
923
+ "data-pinned": cell.column.getIsPinned(),
924
+ className: TableCell_default.osdkTableCell,
925
+ style: columnStyles,
926
+ onContextMenu: handleOpenContextMenu
927
+ }, /* @__PURE__ */ React7__default.default.createElement("div", {
928
+ className: TableCell_default.osdkTableCellContent
929
+ }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React7__default.default.createElement(CellContextMenu, {
930
+ cell,
931
+ position: popoverPosition,
932
+ onClose: handleCloseContextMenu,
933
+ renderContent: renderCellContextMenu
934
+ }));
935
+ }
936
+
937
+ // src/object-table/TableRow.tsx
938
+ function TableRow({
939
+ row,
940
+ virtualRow,
941
+ onRowClick,
942
+ renderCellContextMenu
943
+ }) {
944
+ const handleClick = React7.useCallback(() => {
945
+ onRowClick?.(row.original);
946
+ }, [onRowClick, row.original]);
947
+ return /* @__PURE__ */ React7__default.default.createElement("tr", {
948
+ "data-selected": row.getIsSelected(),
949
+ className: TableRow_default.osdkTableRow,
950
+ style: {
951
+ height: `${virtualRow.size}px`,
952
+ transform: `translateY(${virtualRow.start}px)`
953
+ },
954
+ onClick: handleClick
955
+ }, row.getVisibleCells().map((cell) => /* @__PURE__ */ React7__default.default.createElement(TableCell, {
956
+ key: cell.id,
957
+ cell,
958
+ renderCellContextMenu
959
+ })));
960
+ }
961
+
962
+ // src/object-table/TableBody.tsx
963
+ function TableBody({
964
+ rows,
965
+ tableContainerRef,
966
+ onRowClick,
967
+ renderCellContextMenu,
968
+ rowHeight = 40,
969
+ isLoadingMore = false,
970
+ headerGroups = []
971
+ }) {
972
+ const rowVirtualizer = reactVirtual.useVirtualizer({
973
+ count: rows.length,
974
+ estimateSize: () => rowHeight,
975
+ getScrollElement: () => tableContainerRef.current,
976
+ overscan: 5
977
+ });
978
+ React7.useLayoutEffect(() => {
979
+ rowVirtualizer.measure();
980
+ }, [rowVirtualizer, rows.length]);
981
+ const totalSize = rowVirtualizer.getTotalSize();
982
+ const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;
983
+ const headers = headerGroups[0]?.headers ?? [];
984
+ return /* @__PURE__ */ React7__default.default.createElement("tbody", {
985
+ className: TableBody_default.osdkTableBody,
986
+ style: {
987
+ height: `${bodyHeight}px`
988
+ }
989
+ }, rowVirtualizer.getVirtualItems().map((virtualRow) => {
990
+ const row = rows[virtualRow.index];
991
+ return /* @__PURE__ */ React7__default.default.createElement(TableRow, {
992
+ key: row.id,
993
+ row,
994
+ virtualRow,
995
+ onRowClick,
996
+ renderCellContextMenu
997
+ });
998
+ }), isLoadingMore && /* @__PURE__ */ React7__default.default.createElement(LoadingRow, {
999
+ headers,
1000
+ translateY: totalSize,
1001
+ rowHeight,
1002
+ columnCount: headers.length
1003
+ }));
1004
+ }
1005
+
858
1006
  // src/object-table/Table.tsx
859
1007
  function BaseTable({
860
1008
  table,
@@ -863,48 +1011,69 @@ function BaseTable({
863
1011
  onRowClick,
864
1012
  rowHeight,
865
1013
  renderCellContextMenu,
866
- className
1014
+ className,
1015
+ error
867
1016
  }) {
868
- const tableContainerRef = React9.useRef(null);
869
- const fetchingRef = React9.useRef(false);
870
- const fetchMoreOnEndReached = React9.useCallback(async (containerRefElement) => {
871
- if (containerRefElement && !fetchingRef.current) {
1017
+ const tableContainerRef = React7.useRef(null);
1018
+ const [isLoadingMore, setIsLoadingMore] = React7.useState(false);
1019
+ const fetchingRef = React7.useRef(false);
1020
+ React7.useEffect(() => {
1021
+ if (!isLoading || fetchNextPage == null) {
1022
+ setIsLoadingMore(false);
1023
+ }
1024
+ }, [isLoading, fetchNextPage]);
1025
+ const fetchMoreOnEndReached = React7.useCallback(async (containerRefElement) => {
1026
+ if (containerRefElement && !fetchingRef.current && !isLoadingMore) {
872
1027
  const {
873
1028
  scrollHeight,
874
1029
  scrollTop,
875
1030
  clientHeight
876
1031
  } = containerRefElement;
877
- if (scrollHeight - scrollTop - clientHeight < 100 && !isLoading) {
1032
+ if (scrollHeight - scrollTop - clientHeight < 100 && !isLoading && fetchNextPage != null) {
878
1033
  fetchingRef.current = true;
1034
+ setIsLoadingMore(true);
879
1035
  try {
880
- await fetchNextPage?.();
1036
+ await fetchNextPage();
881
1037
  } finally {
882
1038
  fetchingRef.current = false;
883
1039
  }
884
1040
  }
885
1041
  }
886
- }, [fetchNextPage, isLoading]);
887
- const handleScroll = React9.useCallback(async (e) => {
1042
+ }, [fetchNextPage, isLoading, isLoadingMore]);
1043
+ const handleScroll = React7.useCallback(async (e) => {
888
1044
  await fetchMoreOnEndReached(e.currentTarget);
889
1045
  }, [fetchMoreOnEndReached]);
890
- return /* @__PURE__ */ React9__default.default.createElement("div", {
1046
+ const rows = table.getRowModel().rows;
1047
+ const headerGroups = table.getHeaderGroups();
1048
+ const hasData = rows.length > 0;
1049
+ return /* @__PURE__ */ React7__default.default.createElement("div", {
891
1050
  ref: tableContainerRef,
892
- className: classNames__default.default(Table_default.osdkTableContainer, className),
1051
+ className: classNames2__default.default(Table_default.osdkTableContainer, className),
893
1052
  onScroll: handleScroll
894
- }, /* @__PURE__ */ React9__default.default.createElement("table", null, /* @__PURE__ */ React9__default.default.createElement(TableHeader, {
1053
+ }, /* @__PURE__ */ React7__default.default.createElement("table", null, isLoading && !hasData ? /* @__PURE__ */ React7__default.default.createElement(LoadingStateTable, {
1054
+ table,
1055
+ headerGroups,
1056
+ rowHeight,
1057
+ tableContainerRef
1058
+ }) : /* @__PURE__ */ React7__default.default.createElement(React7__default.default.Fragment, null, /* @__PURE__ */ React7__default.default.createElement(TableHeader, {
895
1059
  table
896
- }), /* @__PURE__ */ React9__default.default.createElement(TableBody, {
897
- rows: table.getRowModel().rows,
1060
+ }), !hasData && error == null ? /* @__PURE__ */ React7__default.default.createElement(NonIdealState, {
1061
+ message: "No Data"
1062
+ }) : /* @__PURE__ */ React7__default.default.createElement(TableBody, {
1063
+ rows,
898
1064
  tableContainerRef,
899
1065
  onRowClick,
900
1066
  rowHeight,
901
- renderCellContextMenu
1067
+ renderCellContextMenu,
1068
+ isLoadingMore,
1069
+ headerGroups
1070
+ })), error != null && /* @__PURE__ */ React7__default.default.createElement(NonIdealState, {
1071
+ message: `Error Loading Data: ${error.message}`
902
1072
  })));
903
1073
  }
904
1074
 
905
1075
  // src/object-table/ObjectTable.tsx
906
1076
  function ObjectTable({
907
- objectSet,
908
1077
  objectType,
909
1078
  columnDefinitions,
910
1079
  filter,
@@ -918,7 +1087,7 @@ function ObjectTable({
918
1087
  selectedRows,
919
1088
  ...props
920
1089
  }) {
921
- const [columnSizing, setColumnSizing] = React9.useState({});
1090
+ const [columnSizing, setColumnSizing] = React7.useState({});
922
1091
  const {
923
1092
  sorting,
924
1093
  onSortingChange
@@ -930,8 +1099,9 @@ function ObjectTable({
930
1099
  const {
931
1100
  data,
932
1101
  fetchMore,
933
- isLoading
934
- } = useObjectTableData(objectSet, columnDefinitions, filter, sorting);
1102
+ isLoading,
1103
+ error
1104
+ } = useObjectTableData(objectType, columnDefinitions, filter, sorting);
935
1105
  const {
936
1106
  columns,
937
1107
  loading: isColumnsLoading
@@ -958,7 +1128,7 @@ function ObjectTable({
958
1128
  onToggleAll,
959
1129
  onToggleRow
960
1130
  });
961
- const allColumns = React9.useMemo(() => {
1131
+ const allColumns = React7.useMemo(() => {
962
1132
  return selectionColumn ? [selectionColumn, ...columns] : columns;
963
1133
  }, [selectionColumn, columns]);
964
1134
  const {
@@ -993,18 +1163,19 @@ function ObjectTable({
993
1163
  },
994
1164
  getRowId
995
1165
  });
996
- const onRenderCellContextMenu = React9.useCallback((row, cell) => {
1166
+ const onRenderCellContextMenu = React7.useCallback((row, cell) => {
997
1167
  return renderCellContextMenu?.(row, cell.getValue());
998
1168
  }, [renderCellContextMenu]);
999
1169
  const isTableLoading = isLoading || isColumnsLoading;
1000
- return /* @__PURE__ */ React9__default.default.createElement(BaseTable, {
1170
+ return /* @__PURE__ */ React7__default.default.createElement(BaseTable, {
1001
1171
  table,
1002
1172
  isLoading: isTableLoading,
1003
1173
  fetchNextPage: fetchMore,
1004
1174
  onRowClick: props.onRowClick,
1005
1175
  rowHeight: props.rowHeight,
1006
1176
  renderCellContextMenu: onRenderCellContextMenu,
1007
- className: props.className
1177
+ className: props.className,
1178
+ error
1008
1179
  });
1009
1180
  }
1010
1181