@jmruthers/pace-core 0.5.83 → 0.5.85

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-7NVDMWPY.js → DataTable-4W5UPIJT.js} +2 -2
  2. package/dist/{chunk-JAA6F35O.js → chunk-X7R6NVYQ.js} +116 -46
  3. package/dist/{chunk-JAA6F35O.js.map → chunk-X7R6NVYQ.js.map} +1 -1
  4. package/dist/{chunk-IGMNHF3A.js → chunk-YEQDKCPW.js} +2 -2
  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/DataTable.tsx +7 -0
  110. package/src/components/DataTable/components/DataTableCore.tsx +93 -40
  111. package/src/components/DataTable/components/UnifiedTableBody.tsx +27 -8
  112. /package/dist/{DataTable-7NVDMWPY.js.map → DataTable-4W5UPIJT.js.map} +0 -0
  113. /package/dist/{chunk-IGMNHF3A.js.map → chunk-YEQDKCPW.js.map} +0 -0
@@ -53,7 +53,7 @@ import {
53
53
  sortHierarchicalDataWithSorting,
54
54
  validateHierarchicalData,
55
55
  validatePaginationConfig
56
- } from "./chunk-JAA6F35O.js";
56
+ } from "./chunk-X7R6NVYQ.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-7NVDMWPY.js.map
157
+ //# sourceMappingURL=DataTable-4W5UPIJT.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]);
@@ -11042,6 +11058,12 @@ function DataTableInternal({
11042
11058
  storageKey,
11043
11059
  onLayoutChange
11044
11060
  }) {
11061
+ console.log("[DataTable] \u{1F680} DataTableInternal RENDERED:", {
11062
+ dataLength: data.length,
11063
+ columnsCount: columns.length,
11064
+ isLoading: externalIsLoading,
11065
+ pageName: rbac?.pageName || rbac?.pageId
11066
+ });
11045
11067
  const authResult = useUnifiedAuth();
11046
11068
  const user = authResult.user;
11047
11069
  const requestedFeatures = useMemo14(
@@ -11433,55 +11455,98 @@ function DataTableInternal({
11433
11455
  hasServerSideConfig: !!serverSide
11434
11456
  });
11435
11457
  useEffect12(() => {
11436
- if (import.meta.env?.MODE === "development" && finalTableData.length > 0) {
11437
- const configDataLength = tableConfig.data?.length || 0;
11438
- if (configDataLength === 0) {
11439
- console.warn("[DataTable] Diagnostic: tableConfig.data is empty but finalTableData has items", {
11440
- finalTableDataLength: finalTableData.length,
11441
- configDataLength,
11442
- enhancedColumnsCount: enhancedColumns.length
11443
- });
11444
- }
11445
- }
11446
- }, [finalTableData.length, tableConfig.data]);
11458
+ console.log("[DataTable] \u{1F50D} Table Config Created:", {
11459
+ finalTableDataLength: finalTableData.length,
11460
+ configDataLength: tableConfig.data?.length || 0,
11461
+ columnsCount: enhancedColumns.length,
11462
+ finalPaginationMode,
11463
+ hasServerSideConfig: !!serverSide,
11464
+ manualPagination: tableConfig.manualPagination,
11465
+ hasGetPaginationRowModel: !!tableConfig.getPaginationRowModel,
11466
+ effectivePageSize,
11467
+ paginationState: tableStateSnapshot.pagination
11468
+ });
11469
+ }, [finalTableData.length, tableConfig.data, tableConfig.manualPagination, tableConfig.getPaginationRowModel, finalPaginationMode, serverSide, effectivePageSize, tableStateSnapshot.pagination, enhancedColumns.length]);
11447
11470
  const table = useReactTable(tableConfig);
11448
11471
  useEffect12(() => {
11449
- if (import.meta.env?.MODE === "development" && finalTableData.length > 0) {
11450
- const rows = table.getRowModel().rows;
11451
- if (rows.length === 0) {
11452
- const coreRows = table.getCoreRowModel().rows;
11453
- const prePaginationRows = table.getPrePaginationRowModel?.()?.rows || [];
11454
- const filteredRows = table.getFilteredRowModel?.()?.rows || [];
11455
- const sortedRows = table.getSortedRowModel?.()?.rows || [];
11456
- console.warn("[DataTable] Diagnostic: Table created but rows are empty", {
11457
- finalTableDataLength: finalTableData.length,
11458
- tableConfigDataLength: tableConfig.data?.length || 0,
11459
- coreRowsLength: coreRows.length,
11460
- prePaginationRowsLength: prePaginationRows.length,
11461
- filteredRowsLength: filteredRows.length,
11462
- sortedRowsLength: sortedRows.length,
11463
- finalRowsLength: rows.length,
11464
- pagination: table.getState().pagination,
11465
- tableOptions: {
11466
- getCoreRowModel: !!tableConfig.getCoreRowModel,
11467
- getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11468
- getSortedRowModel: !!tableConfig.getSortedRowModel,
11469
- getPaginationRowModel: !!tableConfig.getPaginationRowModel
11470
- },
11471
- hasRowId: !!resolvedGetRowId
11472
- });
11473
- }
11472
+ const rows = table.getRowModel().rows;
11473
+ const coreRows = table.getCoreRowModel().rows;
11474
+ const prePaginationRows = table.getPrePaginationRowModel?.()?.rows || [];
11475
+ const filteredRows = table.getFilteredRowModel?.()?.rows || [];
11476
+ const sortedRows = table.getSortedRowModel?.()?.rows || [];
11477
+ const tableState = table.getState();
11478
+ console.log("[DataTable] \u{1F50D} Table Created - Row Counts:", {
11479
+ finalTableDataLength: finalTableData.length,
11480
+ tableConfigDataLength: tableConfig.data?.length || 0,
11481
+ coreRowsLength: coreRows.length,
11482
+ prePaginationRowsLength: prePaginationRows.length,
11483
+ filteredRowsLength: filteredRows.length,
11484
+ sortedRowsLength: sortedRows.length,
11485
+ finalRowsLength: rows.length,
11486
+ pagination: tableState.pagination,
11487
+ finalPaginationMode,
11488
+ hasServerSideConfig: !!serverSide,
11489
+ tableOptions: {
11490
+ getCoreRowModel: !!tableConfig.getCoreRowModel,
11491
+ getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11492
+ getSortedRowModel: !!tableConfig.getSortedRowModel,
11493
+ getPaginationRowModel: !!tableConfig.getPaginationRowModel,
11494
+ manualPagination: tableConfig.manualPagination,
11495
+ manualFiltering: tableConfig.manualFiltering,
11496
+ manualSorting: tableConfig.manualSorting,
11497
+ pageCount: tableConfig.pageCount
11498
+ },
11499
+ hasRowId: !!resolvedGetRowId,
11500
+ effectivePageSize
11501
+ });
11502
+ if (rows.length === 0 && finalTableData.length > 0) {
11503
+ console.warn("[DataTable] \u26A0\uFE0F CRITICAL: Table created but rows are empty!", {
11504
+ finalTableDataLength: finalTableData.length,
11505
+ tableConfigDataLength: tableConfig.data?.length || 0,
11506
+ coreRowsLength: coreRows.length,
11507
+ prePaginationRowsLength: prePaginationRows.length,
11508
+ filteredRowsLength: filteredRows.length,
11509
+ sortedRowsLength: sortedRows.length,
11510
+ finalRowsLength: rows.length,
11511
+ pagination: tableState.pagination,
11512
+ finalPaginationMode,
11513
+ hasServerSideConfig: !!serverSide,
11514
+ tableOptions: {
11515
+ getCoreRowModel: !!tableConfig.getCoreRowModel,
11516
+ getFilteredRowModel: !!tableConfig.getFilteredRowModel,
11517
+ getSortedRowModel: !!tableConfig.getSortedRowModel,
11518
+ getPaginationRowModel: !!tableConfig.getPaginationRowModel,
11519
+ manualPagination: tableConfig.manualPagination,
11520
+ manualFiltering: tableConfig.manualFiltering,
11521
+ manualSorting: tableConfig.manualSorting,
11522
+ pageCount: tableConfig.pageCount
11523
+ },
11524
+ hasRowId: !!resolvedGetRowId,
11525
+ effectivePageSize
11526
+ });
11474
11527
  }
11475
- }, [table, finalTableData.length, tableConfig, resolvedGetRowId]);
11528
+ }, [table, finalTableData.length, tableConfig, resolvedGetRowId, finalPaginationMode, serverSide, effectivePageSize]);
11476
11529
  if (!user) {
11477
11530
  throw new Error("DataTable requires authenticated user for RBAC");
11478
11531
  }
11479
11532
  if (!permissions.canRead.can) {
11533
+ console.warn("[DataTable] \u{1F6AB} Access denied - no read permission:", {
11534
+ canRead: permissions.canRead,
11535
+ pageId: effectivePageId,
11536
+ isLoading: permissions.canRead.isLoading
11537
+ });
11480
11538
  return /* @__PURE__ */ jsx24(AccessDeniedPage, { resource: effectivePageId || "unknown-page", operation: "read" });
11481
11539
  }
11540
+ console.log("[DataTable] \u2705 Permission check passed - rendering table");
11482
11541
  if (isLoading) {
11542
+ console.log("[DataTable] \u23F3 Loading state - showing loading component");
11483
11543
  return /* @__PURE__ */ jsx24(LoadingComponent, {});
11484
11544
  }
11545
+ console.log("[DataTable] \u{1F4CA} About to render table with data:", {
11546
+ finalTableDataLength: finalTableData.length,
11547
+ tableExists: !!table,
11548
+ canGetRows: !!table?.getRowModel
11549
+ });
11485
11550
  const PaginationComponent = enhancedPagination || finalPaginationMode !== "client" ? EnhancedPaginationControls : PaginationControls;
11486
11551
  const visibleColumns = table?.getVisibleFlatColumns() || [];
11487
11552
  const dataColumns = visibleColumns.filter(
@@ -11741,6 +11806,11 @@ import { jsx as jsx25 } from "react/jsx-runtime";
11741
11806
  function DataTable(props) {
11742
11807
  const logger = React18.useMemo(() => createLogger("DataTable"), []);
11743
11808
  const { features, ...rest } = props;
11809
+ console.log("[DataTable] \u{1F3AF} DataTable WRAPPER called:", {
11810
+ dataLength: props.data?.length || 0,
11811
+ columnsCount: props.columns?.length || 0,
11812
+ pageName: props.rbac?.pageName || props.rbac?.pageId
11813
+ });
11744
11814
  const normalizedFeatures = React18.useMemo(
11745
11815
  () => normalizeDataTableFeatures(features),
11746
11816
  [features]
@@ -11969,4 +12039,4 @@ lodash/lodash.js:
11969
12039
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
11970
12040
  *)
11971
12041
  */
11972
- //# sourceMappingURL=chunk-JAA6F35O.js.map
12042
+ //# sourceMappingURL=chunk-X7R6NVYQ.js.map