@jmruthers/pace-core 0.5.107 → 0.5.108
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-H2WIR2DN.js → DataTable-WFCHVWTY.js} +2 -2
- package/dist/{PublicLoadingSpinner-48ewSMKK.d.ts → PublicLoadingSpinner-DgDWTFqn.d.ts} +4 -2
- package/dist/{chunk-EWKCROSF.js → chunk-B3QX32P5.js} +47 -8
- package/dist/chunk-B3QX32P5.js.map +1 -0
- package/dist/{chunk-5JJCXTVE.js → chunk-IMZGJ2X7.js} +105 -83
- package/dist/{chunk-5JJCXTVE.js.map → chunk-IMZGJ2X7.js.map} +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +2 -2
- package/dist/index.d.ts +1 -1
- 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/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/ProtectedRouteProps.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/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayReturn.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 +7 -5
- package/package.json +1 -1
- package/src/components/DataTable/components/ColumnFilter.tsx +2 -1
- package/src/components/DataTable/components/EditableRow.tsx +7 -2
- package/src/components/DataTable/components/FilterRow.tsx +22 -11
- package/src/components/DataTable/components/PaginationControls.tsx +1 -1
- package/src/components/DataTable/components/UnifiedTableBody.tsx +39 -10
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +79 -10
- package/dist/chunk-EWKCROSF.js.map +0 -1
- /package/dist/{DataTable-H2WIR2DN.js.map → DataTable-WFCHVWTY.js.map} +0 -0
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
sortHierarchicalDataWithSorting,
|
|
55
55
|
validateHierarchicalData,
|
|
56
56
|
validatePaginationConfig
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-IMZGJ2X7.js";
|
|
58
58
|
import "./chunk-QDDUU625.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-
|
|
160
|
+
//# sourceMappingURL=DataTable-WFCHVWTY.js.map
|
|
@@ -2329,7 +2329,7 @@ interface PaceAppLayoutProps {
|
|
|
2329
2329
|
*
|
|
2330
2330
|
*
|
|
2331
2331
|
* @example
|
|
2332
|
-
* Custom navigation items with permission filtering:
|
|
2332
|
+
* Custom navigation items with permission filtering (works independently of route enforcement):
|
|
2333
2333
|
* ```tsx
|
|
2334
2334
|
* import { NavigationItem } from '@jmruthers/pace-core';
|
|
2335
2335
|
*
|
|
@@ -2347,13 +2347,15 @@ interface PaceAppLayoutProps {
|
|
|
2347
2347
|
* <PaceAppLayout
|
|
2348
2348
|
* appName="My Custom App"
|
|
2349
2349
|
* navItems={customNavItems}
|
|
2350
|
-
* enforcePermissions
|
|
2350
|
+
* // Navigation filtering works independently - no need for enforcePermissions
|
|
2351
2351
|
* filterNavigationByPermissions={true}
|
|
2352
2352
|
* routePermissions={{
|
|
2353
2353
|
* '/components': 'read',
|
|
2354
2354
|
* '/styles': 'read',
|
|
2355
2355
|
* '/meals': 'read'
|
|
2356
2356
|
* }}
|
|
2357
|
+
* // Optionally enable route-level enforcement (separate from navigation filtering)
|
|
2358
|
+
* // enforcePermissions={true}
|
|
2357
2359
|
* />
|
|
2358
2360
|
* }>
|
|
2359
2361
|
* <Route path="components" element={<ComponentsPage />} />
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
SelectSeparator,
|
|
26
26
|
SelectTrigger,
|
|
27
27
|
SelectValue
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-IMZGJ2X7.js";
|
|
29
29
|
import {
|
|
30
30
|
usePermissions,
|
|
31
31
|
useRBAC,
|
|
@@ -1378,10 +1378,17 @@ function PaceAppLayout({
|
|
|
1378
1378
|
eventId: user.user_metadata?.eventId || user.app_metadata?.eventId,
|
|
1379
1379
|
appId: user.user_metadata?.appId || user.app_metadata?.appId
|
|
1380
1380
|
};
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1381
|
+
try {
|
|
1382
|
+
const { isSuperAdmin: isSuperAdmin2 } = await import("./api-KG4A2X7P.js");
|
|
1383
|
+
const isSuper = await isSuperAdmin2(user.id);
|
|
1384
|
+
if (isSuper) {
|
|
1385
|
+
return true;
|
|
1386
|
+
}
|
|
1387
|
+
} catch (error) {
|
|
1388
|
+
if (error && typeof error === "object" && "code" in error && error.code === "RBAC_NOT_INITIALIZED") {
|
|
1389
|
+
} else {
|
|
1390
|
+
throw error;
|
|
1391
|
+
}
|
|
1385
1392
|
}
|
|
1386
1393
|
if (!scope.organisationId) {
|
|
1387
1394
|
console.warn("No organisation context available for permission check, denying access");
|
|
@@ -1473,12 +1480,44 @@ function PaceAppLayout({
|
|
|
1473
1480
|
}, [enforcePermissions, currentRoutePermission, currentPageId, strictMode, user?.id]);
|
|
1474
1481
|
const [filteredMenuItems, setFilteredMenuItems] = useState5(baseMenuItems);
|
|
1475
1482
|
useEffect3(() => {
|
|
1476
|
-
if (!filterNavigationByPermissions
|
|
1483
|
+
if (!filterNavigationByPermissions) {
|
|
1477
1484
|
setFilteredMenuItems(baseMenuItems);
|
|
1478
1485
|
return;
|
|
1479
1486
|
}
|
|
1480
1487
|
let isMounted = true;
|
|
1481
1488
|
const filterItems = async () => {
|
|
1489
|
+
if (!user?.id) {
|
|
1490
|
+
if (isMounted) {
|
|
1491
|
+
setFilteredMenuItems(baseMenuItems);
|
|
1492
|
+
}
|
|
1493
|
+
return;
|
|
1494
|
+
}
|
|
1495
|
+
const scope = {
|
|
1496
|
+
organisationId: user.user_metadata?.organisationId || user.app_metadata?.organisationId,
|
|
1497
|
+
eventId: user.user_metadata?.eventId || user.app_metadata?.eventId,
|
|
1498
|
+
appId: user.user_metadata?.appId || user.app_metadata?.appId
|
|
1499
|
+
};
|
|
1500
|
+
try {
|
|
1501
|
+
const { isSuperAdmin: isSuperAdmin2 } = await import("./api-KG4A2X7P.js");
|
|
1502
|
+
const isSuper = await isSuperAdmin2(user.id);
|
|
1503
|
+
if (isSuper) {
|
|
1504
|
+
if (isMounted) {
|
|
1505
|
+
setFilteredMenuItems(baseMenuItems);
|
|
1506
|
+
}
|
|
1507
|
+
return;
|
|
1508
|
+
}
|
|
1509
|
+
} catch (error) {
|
|
1510
|
+
if (error && typeof error === "object" && "code" in error && error.code === "RBAC_NOT_INITIALIZED") {
|
|
1511
|
+
} else {
|
|
1512
|
+
throw error;
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
if (!scope.organisationId) {
|
|
1516
|
+
if (isMounted) {
|
|
1517
|
+
setFilteredMenuItems(baseMenuItems);
|
|
1518
|
+
}
|
|
1519
|
+
return;
|
|
1520
|
+
}
|
|
1482
1521
|
const filtered = await Promise.all(
|
|
1483
1522
|
baseMenuItems.map(async (item) => {
|
|
1484
1523
|
if (!item.href) return { item, hasAccess: true };
|
|
@@ -1500,7 +1539,7 @@ function PaceAppLayout({
|
|
|
1500
1539
|
return () => {
|
|
1501
1540
|
isMounted = false;
|
|
1502
1541
|
};
|
|
1503
|
-
}, [baseMenuItems, filterNavigationByPermissions,
|
|
1542
|
+
}, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, checkPermission, user?.id, user?.user_metadata, user?.app_metadata]);
|
|
1504
1543
|
useEffect3(() => {
|
|
1505
1544
|
if (!roleBasedRouting || routeConfig.length === 0) return;
|
|
1506
1545
|
let isMounted = true;
|
|
@@ -4357,4 +4396,4 @@ export {
|
|
|
4357
4396
|
PublicPageDiagnostic,
|
|
4358
4397
|
PublicPageContextChecker
|
|
4359
4398
|
};
|
|
4360
|
-
//# sourceMappingURL=chunk-
|
|
4399
|
+
//# sourceMappingURL=chunk-B3QX32P5.js.map
|