@jmruthers/pace-core 0.5.98 → 0.5.99

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 (117) hide show
  1. package/dist/{DataTable-YK5UZGRI.js → DataTable-VSJWLCVT.js} +2 -2
  2. package/dist/{chunk-DIKQ7AB6.js → chunk-2PWJ6NFH.js} +2 -2
  3. package/dist/{chunk-UWBDIT5N.js → chunk-D7CZVI3K.js} +85 -11
  4. package/dist/{chunk-UWBDIT5N.js.map → chunk-D7CZVI3K.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/ProtectedRouteProps.md +1 -1
  68. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  69. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  70. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  71. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  72. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  73. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  74. package/docs/api/interfaces/RBACConfig.md +1 -1
  75. package/docs/api/interfaces/RBACLogger.md +1 -1
  76. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  77. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  78. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  79. package/docs/api/interfaces/RouteConfig.md +1 -1
  80. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  81. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  82. package/docs/api/interfaces/StorageConfig.md +1 -1
  83. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  84. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  85. package/docs/api/interfaces/StorageListOptions.md +1 -1
  86. package/docs/api/interfaces/StorageListResult.md +1 -1
  87. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  88. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  89. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  90. package/docs/api/interfaces/StyleImport.md +1 -1
  91. package/docs/api/interfaces/SwitchProps.md +1 -1
  92. package/docs/api/interfaces/ToastActionElement.md +1 -1
  93. package/docs/api/interfaces/ToastProps.md +1 -1
  94. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  95. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  96. package/docs/api/interfaces/UseEventLogoOptions.md +1 -1
  97. package/docs/api/interfaces/UseEventLogoReturn.md +1 -1
  98. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  99. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  100. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  101. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  102. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  103. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  104. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  105. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  106. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  107. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  108. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  109. package/docs/api/interfaces/UserEventAccess.md +1 -1
  110. package/docs/api/interfaces/UserMenuProps.md +1 -1
  111. package/docs/api/interfaces/UserProfile.md +1 -1
  112. package/docs/api/modules.md +2 -2
  113. package/package.json +1 -1
  114. package/src/components/DataTable/components/DataTableCore.tsx +32 -3
  115. package/src/components/DataTable/components/DataTableModals.tsx +67 -8
  116. /package/dist/{DataTable-YK5UZGRI.js.map → DataTable-VSJWLCVT.js.map} +0 -0
  117. /package/dist/{chunk-DIKQ7AB6.js.map → chunk-2PWJ6NFH.js.map} +0 -0
@@ -54,7 +54,7 @@ import {
54
54
  sortHierarchicalDataWithSorting,
55
55
  validateHierarchicalData,
56
56
  validatePaginationConfig
57
- } from "./chunk-UWBDIT5N.js";
57
+ } from "./chunk-D7CZVI3K.js";
58
58
  import "./chunk-2KLAOD4M.js";
59
59
  import "./chunk-S63MFSY6.js";
60
60
  import "./chunk-Q7APDV6H.js";
@@ -157,4 +157,4 @@ export {
157
157
  validateHierarchicalData,
158
158
  validatePaginationConfig
159
159
  };
160
- //# sourceMappingURL=DataTable-YK5UZGRI.js.map
160
+ //# sourceMappingURL=DataTable-VSJWLCVT.js.map
@@ -25,7 +25,7 @@ import {
25
25
  SelectSeparator,
26
26
  SelectTrigger,
27
27
  SelectValue
28
- } from "./chunk-UWBDIT5N.js";
28
+ } from "./chunk-D7CZVI3K.js";
29
29
  import {
30
30
  isPermitted,
31
31
  isSuperAdmin
@@ -4799,4 +4799,4 @@ export {
4799
4799
  EventLogoCompact,
4800
4800
  EventLogoLarge
4801
4801
  };
4802
- //# sourceMappingURL=chunk-DIKQ7AB6.js.map
4802
+ //# sourceMappingURL=chunk-2PWJ6NFH.js.map
@@ -8916,31 +8916,60 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
8916
8916
  import { Fragment as Fragment3, jsx as jsx19 } from "react/jsx-runtime";
8917
8917
  function mapCSVToTableColumns(csvData, columns) {
8918
8918
  const columnMap = /* @__PURE__ */ new Map();
8919
+ console.log("[mapCSVToTableColumns] Building column map from", columns.length, "column definitions");
8919
8920
  columns.forEach((col) => {
8920
8921
  const fieldName = col.editAccessorKey || col.accessorKey || col.id;
8921
8922
  const header = typeof col.header === "string" ? col.header : "";
8922
8923
  if (fieldName && header) {
8923
8924
  columnMap.set(header.toLowerCase(), fieldName);
8925
+ console.log(`[mapCSVToTableColumns] Mapped "${header}" -> "${fieldName}"`);
8924
8926
  const colId = col.id || col.accessorKey;
8925
8927
  if (colId && colId !== header && colId !== fieldName) {
8926
8928
  columnMap.set(colId.toLowerCase(), fieldName);
8929
+ console.log(`[mapCSVToTableColumns] Also mapped "${colId}" -> "${fieldName}"`);
8927
8930
  }
8928
8931
  if (col.editAccessorKey && header) {
8929
8932
  const idColumnHeader = `${header} (ID)`;
8930
8933
  columnMap.set(idColumnHeader.toLowerCase(), col.editAccessorKey);
8934
+ console.log(`[mapCSVToTableColumns] Mapped ID column "${idColumnHeader}" -> "${col.editAccessorKey}"`);
8931
8935
  columnMap.set(col.editAccessorKey.toLowerCase(), col.editAccessorKey);
8936
+ console.log(`[mapCSVToTableColumns] Also mapped "${col.editAccessorKey}" -> "${col.editAccessorKey}"`);
8932
8937
  }
8938
+ } else {
8939
+ console.warn("[mapCSVToTableColumns] Skipping column with missing fieldName or header:", col);
8933
8940
  }
8934
8941
  });
8935
- return csvData.map((row) => {
8942
+ if (csvData.length === 0) {
8943
+ console.warn("[mapCSVToTableColumns] No CSV data to map");
8944
+ return [];
8945
+ }
8946
+ const csvHeaders = Object.keys(csvData[0]);
8947
+ console.log("[mapCSVToTableColumns] CSV headers found:", csvHeaders);
8948
+ console.log("[mapCSVToTableColumns] Column map size:", columnMap.size);
8949
+ const mappedData = csvData.map((row, index) => {
8936
8950
  const mappedRow = {};
8937
8951
  Object.keys(row).forEach((csvHeader) => {
8938
8952
  const csvHeaderLower = csvHeader.toLowerCase();
8939
- const fieldName = columnMap.get(csvHeaderLower) || csvHeaderLower;
8940
- mappedRow[fieldName] = row[csvHeader];
8953
+ const fieldName = columnMap.get(csvHeaderLower);
8954
+ if (fieldName) {
8955
+ mappedRow[fieldName] = row[csvHeader];
8956
+ if (index === 0) {
8957
+ console.log(`[mapCSVToTableColumns] Row 0: "${csvHeader}" -> "${fieldName}"`);
8958
+ }
8959
+ } else {
8960
+ mappedRow[csvHeaderLower] = row[csvHeader];
8961
+ if (index === 0) {
8962
+ console.warn(`[mapCSVToTableColumns] No mapping found for "${csvHeader}", using as-is`);
8963
+ }
8964
+ }
8941
8965
  });
8942
8966
  return mappedRow;
8943
8967
  });
8968
+ console.log("[mapCSVToTableColumns] Mapped", mappedData.length, "rows");
8969
+ if (mappedData.length > 0) {
8970
+ console.log("[mapCSVToTableColumns] First mapped row keys:", Object.keys(mappedData[0]));
8971
+ }
8972
+ return mappedData;
8944
8973
  }
8945
8974
  function DataTableModals({
8946
8975
  showImportModal,
@@ -8967,10 +8996,30 @@ function DataTableModals({
8967
8996
  isOpen: showImportModal,
8968
8997
  onClose: onCloseImportModal,
8969
8998
  onImport: async (rawData) => {
8970
- const mappedData = columns ? mapCSVToTableColumns(rawData, columns) : rawData;
8971
- const result = onImport(mappedData);
8972
- if (result && typeof result.then === "function") {
8973
- await result;
8999
+ try {
9000
+ let mappedData;
9001
+ if (columns && columns.length > 0) {
9002
+ console.log("[DataTableModals] Mapping CSV data with", columns.length, "column definitions");
9003
+ console.log("[DataTableModals] Raw CSV headers:", rawData.length > 0 ? Object.keys(rawData[0]) : []);
9004
+ mappedData = mapCSVToTableColumns(rawData, columns);
9005
+ console.log("[DataTableModals] Mapped data sample:", mappedData.length > 0 ? mappedData[0] : null);
9006
+ } else {
9007
+ console.warn("[DataTableModals] No columns provided for mapping, using raw data");
9008
+ mappedData = rawData;
9009
+ }
9010
+ if (!onImport) {
9011
+ console.error("[DataTableModals] onImport callback is not provided");
9012
+ throw new Error("Import handler is not configured. Please provide an onImport callback.");
9013
+ }
9014
+ console.log("[DataTableModals] Calling onImport with", mappedData.length, "rows");
9015
+ const result = onImport(mappedData);
9016
+ if (result && typeof result.then === "function") {
9017
+ await result;
9018
+ }
9019
+ console.log("[DataTableModals] Import completed successfully");
9020
+ } catch (error) {
9021
+ console.error("[DataTableModals] Import error:", error);
9022
+ throw error;
8974
9023
  }
8975
9024
  },
8976
9025
  config: importModalConfig
@@ -12009,10 +12058,35 @@ function DataTableInternal({
12009
12058
  onCloseImportModal: () => stateActions.setImportModal(false),
12010
12059
  onImport: async (data2) => {
12011
12060
  if (onImport) {
12012
- const result = onImport(data2);
12013
- if (result && typeof result.then === "function") {
12014
- await result;
12061
+ try {
12062
+ console.log("[DataTableCore] onImport called with", data2.length, "rows");
12063
+ const result = onImport(data2);
12064
+ if (result && typeof result.then === "function") {
12065
+ await result;
12066
+ }
12067
+ console.log("[DataTableCore] onImport completed successfully");
12068
+ toast({
12069
+ title: "Import Successful",
12070
+ description: `Successfully imported ${data2.length} ${data2.length === 1 ? "row" : "rows"}`,
12071
+ variant: "default"
12072
+ });
12073
+ } catch (error) {
12074
+ console.error("[DataTableCore] Import error:", error);
12075
+ toast({
12076
+ title: "Import Failed",
12077
+ description: error instanceof Error ? error.message : "Failed to import data",
12078
+ variant: "destructive"
12079
+ });
12080
+ return;
12015
12081
  }
12082
+ } else {
12083
+ console.error("[DataTableCore] onImport handler not provided");
12084
+ toast({
12085
+ title: "Import Not Configured",
12086
+ description: "Import functionality requires an onImport handler to be provided.",
12087
+ variant: "destructive"
12088
+ });
12089
+ return;
12016
12090
  }
12017
12091
  stateActions.setImportModal(false);
12018
12092
  },
@@ -12270,4 +12344,4 @@ lodash/lodash.js:
12270
12344
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
12271
12345
  *)
12272
12346
  */
12273
- //# sourceMappingURL=chunk-UWBDIT5N.js.map
12347
+ //# sourceMappingURL=chunk-D7CZVI3K.js.map