@jmruthers/pace-core 0.5.81 → 0.5.83
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.
- package/dist/{DataTable-OBT663FS.js → DataTable-7NVDMWPY.js} +2 -2
- package/dist/{chunk-3FV24IOD.js → chunk-IGMNHF3A.js} +2 -2
- package/dist/{chunk-CACHCRZS.js → chunk-JAA6F35O.js} +109 -12
- package/dist/{chunk-CACHCRZS.js.map → chunk-JAA6F35O.js.map} +1 -1
- package/dist/components.js +2 -2
- package/dist/index.js +2 -2
- package/dist/utils.js +1 -1
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +1 -1
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +1 -1
- package/docs/api/interfaces/DataTableColumn.md +1 -1
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventLogoProps.md +1 -1
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +2 -2
- package/package.json +1 -1
- package/src/components/DataTable/components/DataTableCore.tsx +63 -0
- package/src/components/DataTable/components/UnifiedTableBody.tsx +35 -0
- package/src/components/DataTable/hooks/useDataTableConfiguration.ts +33 -7
- package/src/components/DataTable/hooks/useDataTableDataPipeline.ts +12 -1
- /package/dist/{DataTable-OBT663FS.js.map → DataTable-7NVDMWPY.js.map} +0 -0
- /package/dist/{chunk-3FV24IOD.js.map → chunk-IGMNHF3A.js.map} +0 -0
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
sortHierarchicalDataWithSorting,
|
|
54
54
|
validateHierarchicalData,
|
|
55
55
|
validatePaginationConfig
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-JAA6F35O.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-
|
|
157
|
+
//# sourceMappingURL=DataTable-7NVDMWPY.js.map
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
SelectSeparator,
|
|
23
23
|
SelectTrigger,
|
|
24
24
|
SelectValue
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-JAA6F35O.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-
|
|
3886
|
+
//# sourceMappingURL=chunk-IGMNHF3A.js.map
|
|
@@ -7660,6 +7660,37 @@ function UnifiedTableBody({
|
|
|
7660
7660
|
const shouldVirtualize = forceVirtualization || dataLength > VIRTUALIZATION_THRESHOLD;
|
|
7661
7661
|
const rows = table.getRowModel().rows;
|
|
7662
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]);
|
|
7663
7694
|
const virtualizer = useVirtualizer({
|
|
7664
7695
|
count: shouldVirtualize ? rows.length : 0,
|
|
7665
7696
|
getScrollElement: () => parentRef.current,
|
|
@@ -9555,7 +9586,10 @@ function useDataTableDataPipeline({
|
|
|
9555
9586
|
);
|
|
9556
9587
|
const baseData = useMemo8(() => {
|
|
9557
9588
|
if (finalPaginationMode === "server") {
|
|
9558
|
-
|
|
9589
|
+
if (serverData?.data && serverData.data.length > 0) {
|
|
9590
|
+
return serverData.data;
|
|
9591
|
+
}
|
|
9592
|
+
return structuredHierarchicalData;
|
|
9559
9593
|
}
|
|
9560
9594
|
return structuredHierarchicalData;
|
|
9561
9595
|
}, [finalPaginationMode, serverData?.data, structuredHierarchicalData]);
|
|
@@ -9774,7 +9808,8 @@ function useDataTableConfiguration({
|
|
|
9774
9808
|
getRowId,
|
|
9775
9809
|
finalPaginationMode,
|
|
9776
9810
|
finalDataCount,
|
|
9777
|
-
pageSize
|
|
9811
|
+
pageSize,
|
|
9812
|
+
hasServerSideConfig = false
|
|
9778
9813
|
}) {
|
|
9779
9814
|
return useMemo11(() => {
|
|
9780
9815
|
let normalizedColumnOrder = [...stateSnapshot.columnOrder];
|
|
@@ -9782,6 +9817,9 @@ function useDataTableConfiguration({
|
|
|
9782
9817
|
normalizedColumnOrder = normalizedColumnOrder.filter((id) => id !== "select");
|
|
9783
9818
|
normalizedColumnOrder = ["select", ...normalizedColumnOrder];
|
|
9784
9819
|
}
|
|
9820
|
+
const shouldUseManualPagination = finalPaginationMode === "server" && hasServerSideConfig;
|
|
9821
|
+
const shouldUseManualFiltering = shouldUseManualPagination;
|
|
9822
|
+
const shouldUseManualSorting = shouldUseManualPagination;
|
|
9785
9823
|
return {
|
|
9786
9824
|
data,
|
|
9787
9825
|
columns,
|
|
@@ -9804,15 +9842,18 @@ function useDataTableConfiguration({
|
|
|
9804
9842
|
getRowId,
|
|
9805
9843
|
...handlers,
|
|
9806
9844
|
getCoreRowModel: getCoreRowModel(),
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9845
|
+
// Only disable client-side filtering/sorting if we're ACTUALLY using manual (server-side) mode
|
|
9846
|
+
getFilteredRowModel: shouldUseManualFiltering ? void 0 : getFilteredRowModel(),
|
|
9847
|
+
getSortedRowModel: shouldUseManualSorting ? void 0 : getSortedRowModel(),
|
|
9848
|
+
// CRITICAL: When manualPagination is true, do NOT provide getPaginationRowModel
|
|
9849
|
+
// TanStack Table expects data to be pre-paginated and will not paginate it again
|
|
9850
|
+
getPaginationRowModel: features.pagination && !shouldUseManualPagination ? getPaginationRowModel() : void 0,
|
|
9810
9851
|
getGroupedRowModel: features.grouping ? getGroupedRowModel() : void 0,
|
|
9811
9852
|
getExpandedRowModel: features.grouping ? getExpandedRowModel() : void 0,
|
|
9812
|
-
manualSorting:
|
|
9813
|
-
manualFiltering:
|
|
9814
|
-
manualPagination:
|
|
9815
|
-
pageCount:
|
|
9853
|
+
manualSorting: shouldUseManualSorting,
|
|
9854
|
+
manualFiltering: shouldUseManualFiltering,
|
|
9855
|
+
manualPagination: shouldUseManualPagination,
|
|
9856
|
+
pageCount: shouldUseManualPagination ? Math.ceil(finalDataCount / pageSize) : void 0
|
|
9816
9857
|
};
|
|
9817
9858
|
}, [
|
|
9818
9859
|
data,
|
|
@@ -9825,7 +9866,8 @@ function useDataTableConfiguration({
|
|
|
9825
9866
|
getRowId,
|
|
9826
9867
|
finalPaginationMode,
|
|
9827
9868
|
finalDataCount,
|
|
9828
|
-
pageSize
|
|
9869
|
+
pageSize,
|
|
9870
|
+
hasServerSideConfig
|
|
9829
9871
|
]);
|
|
9830
9872
|
}
|
|
9831
9873
|
|
|
@@ -11131,6 +11173,20 @@ function DataTableInternal({
|
|
|
11131
11173
|
console.error("[DataTable] Hierarchical data validation failed:", hierarchicalValidation.errors);
|
|
11132
11174
|
}
|
|
11133
11175
|
}, [hierarchicalValidation]);
|
|
11176
|
+
useEffect12(() => {
|
|
11177
|
+
if (import.meta.env?.MODE === "development" && finalTableData.length === 0 && data.length > 0) {
|
|
11178
|
+
console.warn("[DataTable] Diagnostic: finalTableData empty but input data exists", {
|
|
11179
|
+
inputDataLength: data.length,
|
|
11180
|
+
finalTableDataLength: finalTableData.length,
|
|
11181
|
+
dataCount: finalDataCount,
|
|
11182
|
+
finalPaginationMode,
|
|
11183
|
+
hasServerData: !!serverData,
|
|
11184
|
+
serverDataLength: serverData?.data?.length || 0,
|
|
11185
|
+
hierarchicalEnabled: Boolean(secureFeatures.hierarchical && hierarchical?.enabled),
|
|
11186
|
+
hierarchicalValid: hierarchicalValidation.isValid
|
|
11187
|
+
});
|
|
11188
|
+
}
|
|
11189
|
+
}, [finalTableData.length, data.length, finalDataCount, finalPaginationMode, serverData, secureFeatures.hierarchical, hierarchical, hierarchicalValidation.isValid]);
|
|
11134
11190
|
const {
|
|
11135
11191
|
columnOrder: savedColumnOrder,
|
|
11136
11192
|
isLoaded: isColumnOrderLoaded,
|
|
@@ -11373,9 +11429,50 @@ function DataTableInternal({
|
|
|
11373
11429
|
getRowId: resolvedGetRowId,
|
|
11374
11430
|
finalPaginationMode,
|
|
11375
11431
|
finalDataCount,
|
|
11376
|
-
pageSize: effectivePageSize
|
|
11432
|
+
pageSize: effectivePageSize,
|
|
11433
|
+
hasServerSideConfig: !!serverSide
|
|
11377
11434
|
});
|
|
11435
|
+
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]);
|
|
11378
11447
|
const table = useReactTable(tableConfig);
|
|
11448
|
+
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
|
+
}
|
|
11474
|
+
}
|
|
11475
|
+
}, [table, finalTableData.length, tableConfig, resolvedGetRowId]);
|
|
11379
11476
|
if (!user) {
|
|
11380
11477
|
throw new Error("DataTable requires authenticated user for RBAC");
|
|
11381
11478
|
}
|
|
@@ -11872,4 +11969,4 @@ lodash/lodash.js:
|
|
|
11872
11969
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
11873
11970
|
*)
|
|
11874
11971
|
*/
|
|
11875
|
-
//# sourceMappingURL=chunk-
|
|
11972
|
+
//# sourceMappingURL=chunk-JAA6F35O.js.map
|