@jmruthers/pace-core 0.5.120 → 0.5.121

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 (124) hide show
  1. package/dist/chunk-BDZUMRBD.js 3.map +1 -0
  2. package/dist/chunk-CGURJ27Z.js 2.map +1 -0
  3. package/dist/chunk-GKHF54DI 2.js +619 -0
  4. package/dist/chunk-GKHF54DI.js 2.map +1 -0
  5. package/dist/chunk-NZ32EONV.js 2.map +1 -0
  6. package/dist/chunk-O3NWNXDY 2.js +76 -0
  7. package/dist/chunk-TDNI6ZWL.js 2.map +1 -0
  8. package/dist/chunk-VKOCWWVY.js 3.map +1 -0
  9. package/dist/chunk-WP5I5GLN 2.js +1564 -0
  10. package/dist/index 3.js +856 -0
  11. package/dist/providers 3.js +38 -0
  12. package/dist/providers.js 3.map +1 -0
  13. package/dist/types 3.js +128 -0
  14. package/dist/types.js 3.map +1 -0
  15. package/dist/useInactivityTracker-MRUU55XI.js 3.map +1 -0
  16. package/dist/utils.js 3.map +1 -0
  17. package/dist/validation 3.js +479 -0
  18. package/docs/api/classes/ColumnFactory.md +1 -1
  19. package/docs/api/classes/ErrorBoundary.md +1 -1
  20. package/docs/api/classes/InvalidScopeError.md +1 -1
  21. package/docs/api/classes/MissingUserContextError.md +1 -1
  22. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  23. package/docs/api/classes/PermissionDeniedError.md +1 -1
  24. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  25. package/docs/api/classes/RBACAuditManager.md +1 -1
  26. package/docs/api/classes/RBACCache.md +1 -1
  27. package/docs/api/classes/RBACEngine.md +1 -1
  28. package/docs/api/classes/RBACError.md +1 -1
  29. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  30. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  31. package/docs/api/classes/StorageUtils.md +1 -1
  32. package/docs/api/enums/FileCategory.md +1 -1
  33. package/docs/api/interfaces/AggregateConfig.md +1 -1
  34. package/docs/api/interfaces/ButtonProps.md +1 -1
  35. package/docs/api/interfaces/CardProps.md +1 -1
  36. package/docs/api/interfaces/ColorPalette.md +1 -1
  37. package/docs/api/interfaces/ColorShade.md +1 -1
  38. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  39. package/docs/api/interfaces/DataRecord.md +1 -1
  40. package/docs/api/interfaces/DataTableAction.md +1 -1
  41. package/docs/api/interfaces/DataTableColumn.md +1 -1
  42. package/docs/api/interfaces/DataTableProps.md +1 -1
  43. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  44. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  45. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  46. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  47. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  48. package/docs/api/interfaces/FileMetadata.md +1 -1
  49. package/docs/api/interfaces/FileReference.md +1 -1
  50. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  51. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  52. package/docs/api/interfaces/FileUploadProps.md +1 -1
  53. package/docs/api/interfaces/FooterProps.md +1 -1
  54. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  55. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  56. package/docs/api/interfaces/InputProps.md +1 -1
  57. package/docs/api/interfaces/LabelProps.md +1 -1
  58. package/docs/api/interfaces/LoginFormProps.md +1 -1
  59. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  60. package/docs/api/interfaces/NavigationContextType.md +1 -1
  61. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  62. package/docs/api/interfaces/NavigationItem.md +1 -1
  63. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  64. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  65. package/docs/api/interfaces/Organisation.md +1 -1
  66. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  67. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  68. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  69. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  70. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  71. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  72. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  73. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  74. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  75. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  76. package/docs/api/interfaces/PaletteData.md +1 -1
  77. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  78. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  79. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  80. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  81. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  82. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  83. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  84. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  85. package/docs/api/interfaces/RBACConfig.md +1 -1
  86. package/docs/api/interfaces/RBACLogger.md +1 -1
  87. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  88. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  89. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  90. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  91. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  92. package/docs/api/interfaces/RouteConfig.md +1 -1
  93. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  94. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  95. package/docs/api/interfaces/StorageConfig.md +1 -1
  96. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  97. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  98. package/docs/api/interfaces/StorageListOptions.md +1 -1
  99. package/docs/api/interfaces/StorageListResult.md +1 -1
  100. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  101. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  102. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  103. package/docs/api/interfaces/StyleImport.md +1 -1
  104. package/docs/api/interfaces/SwitchProps.md +1 -1
  105. package/docs/api/interfaces/ToastActionElement.md +1 -1
  106. package/docs/api/interfaces/ToastProps.md +1 -1
  107. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  108. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  109. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  110. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  111. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  112. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  113. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  114. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  115. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  116. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  117. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  118. package/docs/api/interfaces/UserEventAccess.md +1 -1
  119. package/docs/api/interfaces/UserMenuProps.md +1 -1
  120. package/docs/api/interfaces/UserProfile.md +1 -1
  121. package/docs/api/modules.md +2 -2
  122. package/package.json +1 -1
  123. package/src/components/DataTable/utils/flexibleImport.ts +27 -6
  124. package/src/types/database.generated.ts +1515 -424
@@ -316,22 +316,43 @@ export function flexibleImport<T extends Record<string, unknown>>(
316
316
  description: ['description', 'Description', 'desc', 'Desc', 'details', 'Details'],
317
317
  email: ['email', 'Email', 'e-mail', 'E-mail', 'email_address'],
318
318
  phone: ['phone', 'Phone', 'telephone', 'Telephone', 'mobile', 'Mobile'],
319
- address: ['address', 'Address', 'location', 'Location', 'addr', 'Addr']
319
+ address: ['address', 'Address', 'location', 'Location', 'addr', 'Addr'],
320
+ // Recipe/Dish field mappings (handle spaces and case variations)
321
+ dish_code: ['dish_code', 'dish code', 'Dish Code', 'Dish code', 'DISH CODE', 'dishcode', 'DishCode'],
322
+ dish_name: ['dish_name', 'dish name', 'Dish Name', 'Dish name', 'DISH NAME', 'dishname', 'DishName'],
323
+ mealtype_name: ['mealtype_name', 'mealtype name', 'Mealtype Name', 'Meal Type', 'meal type', 'Meal type', 'MEAL TYPE', 'mealtype', 'MealType'],
324
+ diettype_name: ['diettype_name', 'diettype name', 'Diettype Name', 'Diet Type', 'diet type', 'Diet type', 'DIET TYPE', 'diettype', 'DietType'],
325
+ item_name: ['item_name', 'item name', 'Item Name', 'Item name', 'ITEM NAME', 'itemname', 'ItemName'],
326
+ item_brand: ['item_brand', 'item brand', 'Item Brand', 'Item brand', 'ITEM BRAND', 'itembrand', 'ItemBrand', 'Brand', 'brand'],
327
+ recipe_qtypp: ['recipe_qtypp', 'recipe qtypp', 'Recipe Qtypp', 'Qty per Person', 'qty per person', 'Qty Per Person', 'qtypp', 'Qtypp', 'QTYPP'],
328
+ recipe_uptake: ['recipe_uptake', 'recipe uptake', 'Recipe Uptake', 'Uptake %', 'uptake %', 'Uptake', 'uptake', 'UPTAKE']
320
329
  };
321
330
 
322
331
  const columnMappings = { ...defaultMappings, ...options.columnMappings };
323
332
 
333
+ // Function to normalize column names for comparison (handles spaces, underscores, case)
334
+ const normalizeColumnName = (name: string): string => {
335
+ return name.toLowerCase()
336
+ .replace(/\s+/g, '_') // Replace spaces with underscores
337
+ .replace(/[_-]+/g, '_') // Normalize multiple underscores/hyphens to single underscore
338
+ .trim();
339
+ };
340
+
324
341
  // Function to find the best matching column name
325
342
  const findColumn = (targetField: string): string | null => {
326
343
  const possibleNames = columnMappings[targetField] || [targetField];
327
344
  const csvColumns = Object.keys(csvData[0] || {});
345
+ const normalizedTarget = normalizeColumnName(targetField);
328
346
 
329
347
  for (const possibleName of possibleNames) {
330
- const found = csvColumns.find(col =>
331
- col.toLowerCase() === possibleName.toLowerCase() ||
332
- col.toLowerCase().includes(possibleName.toLowerCase()) ||
333
- possibleName.toLowerCase().includes(col.toLowerCase())
334
- );
348
+ const normalizedPossible = normalizeColumnName(possibleName);
349
+ const found = csvColumns.find(col => {
350
+ const normalizedCol = normalizeColumnName(col);
351
+ return normalizedCol === normalizedPossible ||
352
+ normalizedCol === normalizedTarget ||
353
+ normalizedCol.includes(normalizedPossible) ||
354
+ normalizedPossible.includes(normalizedCol);
355
+ });
335
356
  if (found) {
336
357
  logger.debug(`Mapped ${targetField} -> ${found}`);
337
358
  return found;