@jmruthers/pace-core 0.5.80 → 0.5.82

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 (115) hide show
  1. package/dist/{DataTable-OOZS7YTJ.js → DataTable-AK65GULE.js} +2 -2
  2. package/dist/{chunk-MJWN5JKI.js → chunk-IEFWXF2A.js} +2 -2
  3. package/dist/{chunk-MVFZYTIZ.js → chunk-VCYSL54W.js} +115 -15
  4. package/dist/{chunk-MVFZYTIZ.js.map → chunk-VCYSL54W.js.map} +1 -1
  5. package/dist/components.js +2 -2
  6. package/dist/index.js +2 -2
  7. package/dist/utils.js +1 -1
  8. package/docs/api/classes/ColumnFactory.md +1 -1
  9. package/docs/api/classes/ErrorBoundary.md +1 -1
  10. package/docs/api/classes/InvalidScopeError.md +1 -1
  11. package/docs/api/classes/MissingUserContextError.md +1 -1
  12. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  13. package/docs/api/classes/PermissionDeniedError.md +1 -1
  14. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  15. package/docs/api/classes/RBACAuditManager.md +1 -1
  16. package/docs/api/classes/RBACCache.md +1 -1
  17. package/docs/api/classes/RBACEngine.md +1 -1
  18. package/docs/api/classes/RBACError.md +1 -1
  19. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  20. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  21. package/docs/api/classes/StorageUtils.md +1 -1
  22. package/docs/api/enums/FileCategory.md +1 -1
  23. package/docs/api/interfaces/AggregateConfig.md +1 -1
  24. package/docs/api/interfaces/ButtonProps.md +1 -1
  25. package/docs/api/interfaces/CardProps.md +1 -1
  26. package/docs/api/interfaces/ColorPalette.md +1 -1
  27. package/docs/api/interfaces/ColorShade.md +1 -1
  28. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  29. package/docs/api/interfaces/DataRecord.md +1 -1
  30. package/docs/api/interfaces/DataTableAction.md +1 -1
  31. package/docs/api/interfaces/DataTableColumn.md +1 -1
  32. package/docs/api/interfaces/DataTableProps.md +1 -1
  33. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  34. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  35. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  36. package/docs/api/interfaces/EventLogoProps.md +1 -1
  37. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  38. package/docs/api/interfaces/FileMetadata.md +1 -1
  39. package/docs/api/interfaces/FileReference.md +1 -1
  40. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  41. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  42. package/docs/api/interfaces/FileUploadProps.md +1 -1
  43. package/docs/api/interfaces/FooterProps.md +1 -1
  44. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  45. package/docs/api/interfaces/InputProps.md +1 -1
  46. package/docs/api/interfaces/LabelProps.md +1 -1
  47. package/docs/api/interfaces/LoginFormProps.md +1 -1
  48. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  49. package/docs/api/interfaces/NavigationContextType.md +1 -1
  50. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  51. package/docs/api/interfaces/NavigationItem.md +1 -1
  52. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  53. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  54. package/docs/api/interfaces/Organisation.md +1 -1
  55. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  56. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  57. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  58. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  59. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  60. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  61. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  62. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  63. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  64. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  65. package/docs/api/interfaces/PaletteData.md +1 -1
  66. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  67. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  68. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  69. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  70. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  71. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  72. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  73. package/docs/api/interfaces/RBACConfig.md +1 -1
  74. package/docs/api/interfaces/RBACLogger.md +1 -1
  75. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  76. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  77. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  78. package/docs/api/interfaces/RouteConfig.md +1 -1
  79. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  80. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  81. package/docs/api/interfaces/StorageConfig.md +1 -1
  82. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  83. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  84. package/docs/api/interfaces/StorageListOptions.md +1 -1
  85. package/docs/api/interfaces/StorageListResult.md +1 -1
  86. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  87. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  88. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  89. package/docs/api/interfaces/StyleImport.md +1 -1
  90. package/docs/api/interfaces/SwitchProps.md +1 -1
  91. package/docs/api/interfaces/ToastActionElement.md +1 -1
  92. package/docs/api/interfaces/ToastProps.md +1 -1
  93. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  94. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  95. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  96. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  97. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  98. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  99. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  100. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  101. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  102. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  103. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  104. package/docs/api/interfaces/UserEventAccess.md +1 -1
  105. package/docs/api/interfaces/UserMenuProps.md +1 -1
  106. package/docs/api/interfaces/UserProfile.md +1 -1
  107. package/docs/api/modules.md +2 -2
  108. package/package.json +1 -1
  109. package/src/components/DataTable/__tests__/styles.test.ts +5 -5
  110. package/src/components/DataTable/components/DataTableCore.tsx +99 -17
  111. package/src/components/DataTable/components/UnifiedTableBody.tsx +47 -4
  112. package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +12 -1
  113. package/src/components/DataTable/styles.ts +1 -1
  114. /package/dist/{DataTable-OOZS7YTJ.js.map → DataTable-AK65GULE.js.map} +0 -0
  115. /package/dist/{chunk-MJWN5JKI.js.map → chunk-IEFWXF2A.js.map} +0 -0
@@ -53,7 +53,7 @@ import {
53
53
  sortHierarchicalDataWithSorting,
54
54
  validateHierarchicalData,
55
55
  validatePaginationConfig
56
- } from "./chunk-MVFZYTIZ.js";
56
+ } from "./chunk-VCYSL54W.js";
57
57
  import "./chunk-YVUZWLQG.js";
58
58
  import "./chunk-S63MFSY6.js";
59
59
  import "./chunk-Q7APDV6H.js";
@@ -154,4 +154,4 @@ export {
154
154
  validateHierarchicalData,
155
155
  validatePaginationConfig
156
156
  };
157
- //# sourceMappingURL=DataTable-OOZS7YTJ.js.map
157
+ //# sourceMappingURL=DataTable-AK65GULE.js.map
@@ -22,7 +22,7 @@ import {
22
22
  SelectSeparator,
23
23
  SelectTrigger,
24
24
  SelectValue
25
- } from "./chunk-MVFZYTIZ.js";
25
+ } from "./chunk-VCYSL54W.js";
26
26
  import {
27
27
  isPermitted,
28
28
  isSuperAdmin
@@ -3883,4 +3883,4 @@ export {
3883
3883
  PublicPageDiagnostic,
3884
3884
  PublicPageContextChecker
3885
3885
  };
3886
- //# sourceMappingURL=chunk-MJWN5JKI.js.map
3886
+ //# sourceMappingURL=chunk-IEFWXF2A.js.map
@@ -5600,7 +5600,7 @@ IconButton.displayName = "IconButton";
5600
5600
  // src/components/DataTable/styles.ts
5601
5601
  var tableStyles = {
5602
5602
  // Main table container
5603
- table: "w-full caption-bottom text-sm",
5603
+ table: "w-full caption-top text-sm",
5604
5604
  tableFixed: "w-full table-fixed",
5605
5605
  // Table sections
5606
5606
  header: "[&_tr]:border-b",
@@ -7537,9 +7537,6 @@ var RowComponent = React8.memo(({
7537
7537
  })
7538
7538
  ] });
7539
7539
  }
7540
- if (grouping.length > 0 && typeof row.getParentRow === "function" && row.getParentRow() && (!row.getIsGrouped || !row.getIsGrouped())) {
7541
- return null;
7542
- }
7543
7540
  if (isEditing && editingData && onEditingDataChange && onSaveEditing && onCancelEditing) {
7544
7541
  return /* @__PURE__ */ jsx14(
7545
7542
  EditableRow,
@@ -7663,6 +7660,37 @@ function UnifiedTableBody({
7663
7660
  const shouldVirtualize = forceVirtualization || dataLength > VIRTUALIZATION_THRESHOLD;
7664
7661
  const rows = table.getRowModel().rows;
7665
7662
  const headerGroups = table.getHeaderGroups();
7663
+ useEffect3(() => {
7664
+ if (import.meta.env?.MODE === "development" && rows.length === 0 && dataLength > 0) {
7665
+ const tableState = table.getState();
7666
+ const pagination = tableState.pagination;
7667
+ const columnFilters = tableState.columnFilters;
7668
+ const globalFilter = tableState.globalFilter;
7669
+ const allRows = table.getPrePaginationRowModel?.()?.rows || [];
7670
+ const rowCount = table.getRowCount();
7671
+ const pageCount = table.getPageCount();
7672
+ console.warn("[DataTable] Diagnostic: Rows empty but data exists", {
7673
+ dataLength,
7674
+ rowsLength: rows.length,
7675
+ allRowsLength: allRows.length,
7676
+ rowCount,
7677
+ pageCount,
7678
+ pagination: {
7679
+ pageIndex: pagination.pageIndex,
7680
+ pageSize: pagination.pageSize
7681
+ },
7682
+ columnFilters,
7683
+ globalFilter,
7684
+ hasFilteredRows: table.getFilteredRowModel?.()?.rows?.length || 0,
7685
+ hasSortedRows: table.getSortedRowModel?.()?.rows?.length || 0,
7686
+ tableOptions: {
7687
+ getFilteredRowModel: !!table.options.getFilteredRowModel,
7688
+ getSortedRowModel: !!table.options.getSortedRowModel,
7689
+ getPaginationRowModel: !!table.options.getPaginationRowModel
7690
+ }
7691
+ });
7692
+ }
7693
+ }, [rows.length, dataLength, table]);
7666
7694
  const virtualizer = useVirtualizer({
7667
7695
  count: shouldVirtualize ? rows.length : 0,
7668
7696
  getScrollElement: () => parentRef.current,
@@ -9558,7 +9586,10 @@ function useDataTableDataPipeline({
9558
9586
  );
9559
9587
  const baseData = useMemo8(() => {
9560
9588
  if (finalPaginationMode === "server") {
9561
- return serverData?.data ?? [];
9589
+ if (serverData?.data && serverData.data.length > 0) {
9590
+ return serverData.data;
9591
+ }
9592
+ return structuredHierarchicalData;
9562
9593
  }
9563
9594
  return structuredHierarchicalData;
9564
9595
  }, [finalPaginationMode, serverData?.data, structuredHierarchicalData]);
@@ -11134,6 +11165,20 @@ function DataTableInternal({
11134
11165
  console.error("[DataTable] Hierarchical data validation failed:", hierarchicalValidation.errors);
11135
11166
  }
11136
11167
  }, [hierarchicalValidation]);
11168
+ useEffect12(() => {
11169
+ if (import.meta.env?.MODE === "development" && finalTableData.length === 0 && data.length > 0) {
11170
+ console.warn("[DataTable] Diagnostic: finalTableData empty but input data exists", {
11171
+ inputDataLength: data.length,
11172
+ finalTableDataLength: finalTableData.length,
11173
+ dataCount: finalDataCount,
11174
+ finalPaginationMode,
11175
+ hasServerData: !!serverData,
11176
+ serverDataLength: serverData?.data?.length || 0,
11177
+ hierarchicalEnabled: Boolean(secureFeatures.hierarchical && hierarchical?.enabled),
11178
+ hierarchicalValid: hierarchicalValidation.isValid
11179
+ });
11180
+ }
11181
+ }, [finalTableData.length, data.length, finalDataCount, finalPaginationMode, serverData, secureFeatures.hierarchical, hierarchical, hierarchicalValidation.isValid]);
11137
11182
  const {
11138
11183
  columnOrder: savedColumnOrder,
11139
11184
  isLoaded: isColumnOrderLoaded,
@@ -11184,15 +11229,6 @@ function DataTableInternal({
11184
11229
  }
11185
11230
  return closestOption;
11186
11231
  }, [initialPageSize, finalPageSizeOptions, secureFeatures.pagination]);
11187
- useEffect12(() => {
11188
- if (secureFeatures.pagination && validatedInitialPageSize !== state.pagination.pageSize && finalPageSizeOptions.includes(validatedInitialPageSize)) {
11189
- stateActions.setPagination({
11190
- ...state.pagination,
11191
- pageSize: validatedInitialPageSize,
11192
- pageIndex: 0
11193
- });
11194
- }
11195
- }, [validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions, stateActions, state.pagination.pageSize]);
11196
11232
  const effectivePageSize = useMemo14(() => {
11197
11233
  if (!secureFeatures.pagination || !finalPageSizeOptions.length) {
11198
11234
  return state.pagination.pageSize;
@@ -11202,6 +11238,30 @@ function DataTableInternal({
11202
11238
  }
11203
11239
  return state.pagination.pageSize;
11204
11240
  }, [state.pagination.pageSize, validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions]);
11241
+ useEffect12(() => {
11242
+ if (secureFeatures.pagination && finalPageSizeOptions.length > 0) {
11243
+ const needsFix = !finalPageSizeOptions.includes(state.pagination.pageSize);
11244
+ const currentPageSize = effectivePageSize || validatedInitialPageSize;
11245
+ const totalPages = currentPageSize > 0 ? Math.ceil(finalDataCount / currentPageSize) : 0;
11246
+ const pageIndexOutOfBounds = totalPages > 0 && state.pagination.pageIndex >= totalPages;
11247
+ if (needsFix || pageIndexOutOfBounds) {
11248
+ stateActions.setPagination({
11249
+ pageSize: validatedInitialPageSize,
11250
+ pageIndex: 0
11251
+ // Reset to first page when correcting pagination issues
11252
+ });
11253
+ }
11254
+ }
11255
+ }, [
11256
+ secureFeatures.pagination,
11257
+ finalPageSizeOptions,
11258
+ state.pagination.pageSize,
11259
+ state.pagination.pageIndex,
11260
+ validatedInitialPageSize,
11261
+ stateActions,
11262
+ effectivePageSize,
11263
+ finalDataCount
11264
+ ]);
11205
11265
  const isLoading = externalIsLoading || performanceLoading;
11206
11266
  const handleSearch = useCallback10((value) => {
11207
11267
  stateActions.setSearchQuery(value);
@@ -11363,7 +11423,47 @@ function DataTableInternal({
11363
11423
  finalDataCount,
11364
11424
  pageSize: effectivePageSize
11365
11425
  });
11426
+ useEffect12(() => {
11427
+ if (import.meta.env?.MODE === "development" && finalTableData.length > 0) {
11428
+ const configDataLength = tableConfig.data?.length || 0;
11429
+ if (configDataLength === 0) {
11430
+ console.warn("[DataTable] Diagnostic: tableConfig.data is empty but finalTableData has items", {
11431
+ finalTableDataLength: finalTableData.length,
11432
+ configDataLength,
11433
+ enhancedColumnsCount: enhancedColumns.length
11434
+ });
11435
+ }
11436
+ }
11437
+ }, [finalTableData.length, tableConfig.data]);
11366
11438
  const table = useReactTable(tableConfig);
11439
+ useEffect12(() => {
11440
+ if (import.meta.env?.MODE === "development" && finalTableData.length > 0) {
11441
+ const rows = table.getRowModel().rows;
11442
+ if (rows.length === 0) {
11443
+ const coreRows = table.getCoreRowModel().rows;
11444
+ const prePaginationRows = table.getPrePaginationRowModel?.()?.rows || [];
11445
+ const filteredRows = table.getFilteredRowModel?.()?.rows || [];
11446
+ const sortedRows = table.getSortedRowModel?.()?.rows || [];
11447
+ console.warn("[DataTable] Diagnostic: Table created but rows are empty", {
11448
+ finalTableDataLength: finalTableData.length,
11449
+ tableConfigDataLength: tableConfig.data?.length || 0,
11450
+ coreRowsLength: coreRows.length,
11451
+ prePaginationRowsLength: prePaginationRows.length,
11452
+ filteredRowsLength: filteredRows.length,
11453
+ sortedRowsLength: sortedRows.length,
11454
+ finalRowsLength: rows.length,
11455
+ pagination: table.getState().pagination,
11456
+ tableOptions: {
11457
+ getCoreRowModel: !!tableConfig.getCoreRowModel,
11458
+ getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11459
+ getSortedRowModel: !!tableConfig.getSortedRowModel,
11460
+ getPaginationRowModel: !!tableConfig.getPaginationRowModel
11461
+ },
11462
+ hasRowId: !!resolvedGetRowId
11463
+ });
11464
+ }
11465
+ }
11466
+ }, [table, finalTableData.length, tableConfig, resolvedGetRowId]);
11367
11467
  if (!user) {
11368
11468
  throw new Error("DataTable requires authenticated user for RBAC");
11369
11469
  }
@@ -11860,4 +11960,4 @@ lodash/lodash.js:
11860
11960
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
11861
11961
  *)
11862
11962
  */
11863
- //# sourceMappingURL=chunk-MVFZYTIZ.js.map
11963
+ //# sourceMappingURL=chunk-VCYSL54W.js.map