@jmruthers/pace-core 0.5.82 → 0.5.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/{DataTable-AK65GULE.js → DataTable-HVJFHI4N.js} +2 -2
  2. package/dist/{chunk-IEFWXF2A.js → chunk-3R7LPLNK.js} +2 -2
  3. package/dist/{chunk-VCYSL54W.js → chunk-BOKQCAWD.js} +112 -56
  4. package/dist/{chunk-VCYSL54W.js.map → chunk-BOKQCAWD.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/components/DataTableCore.tsx +73 -40
  110. package/src/components/DataTable/components/UnifiedTableBody.tsx +27 -8
  111. package/src/components/DataTable/hooks/useDataTableConfiguration.ts +33 -7
  112. /package/dist/{DataTable-AK65GULE.js.map → DataTable-HVJFHI4N.js.map} +0 -0
  113. /package/dist/{chunk-IEFWXF2A.js.map → chunk-3R7LPLNK.js.map} +0 -0
@@ -53,7 +53,7 @@ import {
53
53
  sortHierarchicalDataWithSorting,
54
54
  validateHierarchicalData,
55
55
  validatePaginationConfig
56
- } from "./chunk-VCYSL54W.js";
56
+ } from "./chunk-BOKQCAWD.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-AK65GULE.js.map
157
+ //# sourceMappingURL=DataTable-HVJFHI4N.js.map
@@ -22,7 +22,7 @@ import {
22
22
  SelectSeparator,
23
23
  SelectTrigger,
24
24
  SelectValue
25
- } from "./chunk-VCYSL54W.js";
25
+ } from "./chunk-BOKQCAWD.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-IEFWXF2A.js.map
3886
+ //# sourceMappingURL=chunk-3R7LPLNK.js.map
@@ -7660,19 +7660,32 @@ function UnifiedTableBody({
7660
7660
  const shouldVirtualize = forceVirtualization || dataLength > VIRTUALIZATION_THRESHOLD;
7661
7661
  const rows = table.getRowModel().rows;
7662
7662
  const headerGroups = table.getHeaderGroups();
7663
+ console.log("[DataTable] \u{1F50D} UnifiedTableBody Render:", {
7664
+ dataLength,
7665
+ rowsLength: rows.length,
7666
+ coreRowsLength: table.getCoreRowModel().rows.length,
7667
+ prePaginationRowsLength: table.getPrePaginationRowModel?.()?.rows?.length || 0,
7668
+ shouldVirtualize
7669
+ });
7663
7670
  useEffect3(() => {
7664
- if (import.meta.env?.MODE === "development" && rows.length === 0 && dataLength > 0) {
7671
+ if (rows.length === 0 && dataLength > 0) {
7665
7672
  const tableState = table.getState();
7666
7673
  const pagination = tableState.pagination;
7667
7674
  const columnFilters = tableState.columnFilters;
7668
7675
  const globalFilter = tableState.globalFilter;
7669
- const allRows = table.getPrePaginationRowModel?.()?.rows || [];
7676
+ const coreRows = table.getCoreRowModel().rows;
7677
+ const prePaginationRows = table.getPrePaginationRowModel?.()?.rows || [];
7678
+ const filteredRows = table.getFilteredRowModel?.()?.rows || [];
7679
+ const sortedRows = table.getSortedRowModel?.()?.rows || [];
7670
7680
  const rowCount = table.getRowCount();
7671
7681
  const pageCount = table.getPageCount();
7672
- console.warn("[DataTable] Diagnostic: Rows empty but data exists", {
7682
+ console.warn("[DataTable] \u26A0\uFE0F CRITICAL: Rows empty but data exists!", {
7673
7683
  dataLength,
7674
7684
  rowsLength: rows.length,
7675
- allRowsLength: allRows.length,
7685
+ coreRowsLength: coreRows.length,
7686
+ prePaginationRowsLength: prePaginationRows.length,
7687
+ filteredRowsLength: filteredRows.length,
7688
+ sortedRowsLength: sortedRows.length,
7676
7689
  rowCount,
7677
7690
  pageCount,
7678
7691
  pagination: {
@@ -7681,13 +7694,16 @@ function UnifiedTableBody({
7681
7694
  },
7682
7695
  columnFilters,
7683
7696
  globalFilter,
7684
- hasFilteredRows: table.getFilteredRowModel?.()?.rows?.length || 0,
7685
- hasSortedRows: table.getSortedRowModel?.()?.rows?.length || 0,
7686
7697
  tableOptions: {
7698
+ getCoreRowModel: !!table.options.getCoreRowModel,
7687
7699
  getFilteredRowModel: !!table.options.getFilteredRowModel,
7688
7700
  getSortedRowModel: !!table.options.getSortedRowModel,
7689
- getPaginationRowModel: !!table.options.getPaginationRowModel
7690
- }
7701
+ getPaginationRowModel: !!table.options.getPaginationRowModel,
7702
+ manualPagination: table.options.manualPagination,
7703
+ manualFiltering: table.options.manualFiltering,
7704
+ manualSorting: table.options.manualSorting
7705
+ },
7706
+ tableDataLength: table.options.data?.length || 0
7691
7707
  });
7692
7708
  }
7693
7709
  }, [rows.length, dataLength, table]);
@@ -9808,7 +9824,8 @@ function useDataTableConfiguration({
9808
9824
  getRowId,
9809
9825
  finalPaginationMode,
9810
9826
  finalDataCount,
9811
- pageSize
9827
+ pageSize,
9828
+ hasServerSideConfig = false
9812
9829
  }) {
9813
9830
  return useMemo11(() => {
9814
9831
  let normalizedColumnOrder = [...stateSnapshot.columnOrder];
@@ -9816,6 +9833,9 @@ function useDataTableConfiguration({
9816
9833
  normalizedColumnOrder = normalizedColumnOrder.filter((id) => id !== "select");
9817
9834
  normalizedColumnOrder = ["select", ...normalizedColumnOrder];
9818
9835
  }
9836
+ const shouldUseManualPagination = finalPaginationMode === "server" && hasServerSideConfig;
9837
+ const shouldUseManualFiltering = shouldUseManualPagination;
9838
+ const shouldUseManualSorting = shouldUseManualPagination;
9819
9839
  return {
9820
9840
  data,
9821
9841
  columns,
@@ -9838,15 +9858,18 @@ function useDataTableConfiguration({
9838
9858
  getRowId,
9839
9859
  ...handlers,
9840
9860
  getCoreRowModel: getCoreRowModel(),
9841
- getFilteredRowModel: finalPaginationMode === "client" ? getFilteredRowModel() : void 0,
9842
- getSortedRowModel: finalPaginationMode === "client" ? getSortedRowModel() : void 0,
9843
- getPaginationRowModel: features.pagination ? getPaginationRowModel() : void 0,
9861
+ // Only disable client-side filtering/sorting if we're ACTUALLY using manual (server-side) mode
9862
+ getFilteredRowModel: shouldUseManualFiltering ? void 0 : getFilteredRowModel(),
9863
+ getSortedRowModel: shouldUseManualSorting ? void 0 : getSortedRowModel(),
9864
+ // CRITICAL: When manualPagination is true, do NOT provide getPaginationRowModel
9865
+ // TanStack Table expects data to be pre-paginated and will not paginate it again
9866
+ getPaginationRowModel: features.pagination && !shouldUseManualPagination ? getPaginationRowModel() : void 0,
9844
9867
  getGroupedRowModel: features.grouping ? getGroupedRowModel() : void 0,
9845
9868
  getExpandedRowModel: features.grouping ? getExpandedRowModel() : void 0,
9846
- manualSorting: finalPaginationMode === "server",
9847
- manualFiltering: finalPaginationMode === "server",
9848
- manualPagination: finalPaginationMode === "server",
9849
- pageCount: finalPaginationMode === "server" ? Math.ceil(finalDataCount / pageSize) : void 0
9869
+ manualSorting: shouldUseManualSorting,
9870
+ manualFiltering: shouldUseManualFiltering,
9871
+ manualPagination: shouldUseManualPagination,
9872
+ pageCount: shouldUseManualPagination ? Math.ceil(finalDataCount / pageSize) : void 0
9850
9873
  };
9851
9874
  }, [
9852
9875
  data,
@@ -9859,7 +9882,8 @@ function useDataTableConfiguration({
9859
9882
  getRowId,
9860
9883
  finalPaginationMode,
9861
9884
  finalDataCount,
9862
- pageSize
9885
+ pageSize,
9886
+ hasServerSideConfig
9863
9887
  ]);
9864
9888
  }
9865
9889
 
@@ -11421,49 +11445,81 @@ function DataTableInternal({
11421
11445
  getRowId: resolvedGetRowId,
11422
11446
  finalPaginationMode,
11423
11447
  finalDataCount,
11424
- pageSize: effectivePageSize
11448
+ pageSize: effectivePageSize,
11449
+ hasServerSideConfig: !!serverSide
11425
11450
  });
11426
11451
  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]);
11452
+ console.log("[DataTable] \u{1F50D} Table Config Created:", {
11453
+ finalTableDataLength: finalTableData.length,
11454
+ configDataLength: tableConfig.data?.length || 0,
11455
+ columnsCount: enhancedColumns.length,
11456
+ finalPaginationMode,
11457
+ hasServerSideConfig: !!serverSide,
11458
+ manualPagination: tableConfig.manualPagination,
11459
+ hasGetPaginationRowModel: !!tableConfig.getPaginationRowModel,
11460
+ effectivePageSize,
11461
+ paginationState: tableStateSnapshot.pagination
11462
+ });
11463
+ }, [finalTableData.length, tableConfig.data, tableConfig.manualPagination, tableConfig.getPaginationRowModel, finalPaginationMode, serverSide, effectivePageSize, tableStateSnapshot.pagination, enhancedColumns.length]);
11438
11464
  const table = useReactTable(tableConfig);
11439
11465
  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
- }
11466
+ const rows = table.getRowModel().rows;
11467
+ const coreRows = table.getCoreRowModel().rows;
11468
+ const prePaginationRows = table.getPrePaginationRowModel?.()?.rows || [];
11469
+ const filteredRows = table.getFilteredRowModel?.()?.rows || [];
11470
+ const sortedRows = table.getSortedRowModel?.()?.rows || [];
11471
+ const tableState = table.getState();
11472
+ console.log("[DataTable] \u{1F50D} Table Created - Row Counts:", {
11473
+ finalTableDataLength: finalTableData.length,
11474
+ tableConfigDataLength: tableConfig.data?.length || 0,
11475
+ coreRowsLength: coreRows.length,
11476
+ prePaginationRowsLength: prePaginationRows.length,
11477
+ filteredRowsLength: filteredRows.length,
11478
+ sortedRowsLength: sortedRows.length,
11479
+ finalRowsLength: rows.length,
11480
+ pagination: tableState.pagination,
11481
+ finalPaginationMode,
11482
+ hasServerSideConfig: !!serverSide,
11483
+ tableOptions: {
11484
+ getCoreRowModel: !!tableConfig.getCoreRowModel,
11485
+ getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11486
+ getSortedRowModel: !!tableConfig.getSortedRowModel,
11487
+ getPaginationRowModel: !!tableConfig.getPaginationRowModel,
11488
+ manualPagination: tableConfig.manualPagination,
11489
+ manualFiltering: tableConfig.manualFiltering,
11490
+ manualSorting: tableConfig.manualSorting,
11491
+ pageCount: tableConfig.pageCount
11492
+ },
11493
+ hasRowId: !!resolvedGetRowId,
11494
+ effectivePageSize
11495
+ });
11496
+ if (rows.length === 0 && finalTableData.length > 0) {
11497
+ console.warn("[DataTable] \u26A0\uFE0F CRITICAL: Table created but rows are empty!", {
11498
+ finalTableDataLength: finalTableData.length,
11499
+ tableConfigDataLength: tableConfig.data?.length || 0,
11500
+ coreRowsLength: coreRows.length,
11501
+ prePaginationRowsLength: prePaginationRows.length,
11502
+ filteredRowsLength: filteredRows.length,
11503
+ sortedRowsLength: sortedRows.length,
11504
+ finalRowsLength: rows.length,
11505
+ pagination: tableState.pagination,
11506
+ finalPaginationMode,
11507
+ hasServerSideConfig: !!serverSide,
11508
+ tableOptions: {
11509
+ getCoreRowModel: !!tableConfig.getCoreRowModel,
11510
+ getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11511
+ getSortedRowModel: !!tableConfig.getSortedRowModel,
11512
+ getPaginationRowModel: !!tableConfig.getPaginationRowModel,
11513
+ manualPagination: tableConfig.manualPagination,
11514
+ manualFiltering: tableConfig.manualFiltering,
11515
+ manualSorting: tableConfig.manualSorting,
11516
+ pageCount: tableConfig.pageCount
11517
+ },
11518
+ hasRowId: !!resolvedGetRowId,
11519
+ effectivePageSize
11520
+ });
11465
11521
  }
11466
- }, [table, finalTableData.length, tableConfig, resolvedGetRowId]);
11522
+ }, [table, finalTableData.length, tableConfig, resolvedGetRowId, finalPaginationMode, serverSide, effectivePageSize]);
11467
11523
  if (!user) {
11468
11524
  throw new Error("DataTable requires authenticated user for RBAC");
11469
11525
  }
@@ -11960,4 +12016,4 @@ lodash/lodash.js:
11960
12016
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
11961
12017
  *)
11962
12018
  */
11963
- //# sourceMappingURL=chunk-VCYSL54W.js.map
12019
+ //# sourceMappingURL=chunk-BOKQCAWD.js.map