udp-react-enterprise-component-library 25.18.1-beta.63 → 25.18.1-beta.64

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 (33) hide show
  1. package/dist/{AuthProvider-C8qG0V63.js → AuthProvider-J79EBNDc.js} +2 -2
  2. package/dist/{AuthProvider-C8qG0V63.js.map → AuthProvider-J79EBNDc.js.map} +1 -1
  3. package/dist/{MenuProvider-BuTAUs0Z.js → MenuProvider-BqEZve2y.js} +2 -2
  4. package/dist/{MenuProvider-BuTAUs0Z.js.map → MenuProvider-BqEZve2y.js.map} +1 -1
  5. package/dist/{Shell-a2L-cKzs.js → Shell-BE_Aq6W2.js} +5 -5
  6. package/dist/{Shell-a2L-cKzs.js.map → Shell-BE_Aq6W2.js.map} +1 -1
  7. package/dist/{TenantProvider-CCrrxyiD.js → TenantProvider-BeFMHYP8.js} +2 -2
  8. package/dist/{TenantProvider-CCrrxyiD.js.map → TenantProvider-BeFMHYP8.js.map} +1 -1
  9. package/dist/{UdpAppProvider-BuJv7P-y.js → UdpAppProvider-DXgzyeHZ.js} +2 -2
  10. package/dist/{UdpAppProvider-BuJv7P-y.js.map → UdpAppProvider-DXgzyeHZ.js.map} +1 -1
  11. package/dist/{auth-DZmqyrT1.js → auth-BWJ4-JF-.js} +2 -2
  12. package/dist/{auth-DZmqyrT1.js.map → auth-BWJ4-JF-.js.map} +1 -1
  13. package/dist/index.js +9 -9
  14. package/dist/{menuUtilities-Da5uVIJ8.js → menuUtilities-BOnqojY6.js} +12 -10
  15. package/dist/menuUtilities-BOnqojY6.js.map +1 -0
  16. package/dist/{profile-BA_cbWI8.js → profile-7BieC5qc.js} +3 -3
  17. package/dist/{profile-BA_cbWI8.js.map → profile-7BieC5qc.js.map} +1 -1
  18. package/dist/providers/index.js +1 -1
  19. package/dist/routes/index.js +1 -1
  20. package/dist/{routes-DM7kVvCm.js → routes-DafRlYVQ.js} +11 -9
  21. package/dist/routes-DafRlYVQ.js.map +1 -0
  22. package/dist/shell/index.js +1 -1
  23. package/dist/shell/ui/profile/index.js +1 -1
  24. package/dist/types/src/routes/PrivateRoute.d.ts.map +1 -1
  25. package/dist/types/src/utilities/menus/menuUtilities.d.ts.map +1 -1
  26. package/dist/types/tsconfig.tsbuildinfo +1 -1
  27. package/dist/utilities/auth/index.js +3 -3
  28. package/dist/utilities/menus/index.js +1 -1
  29. package/dist/utilities/tenant/index.js +1 -1
  30. package/export-map.json +1 -1
  31. package/package.json +1 -1
  32. package/dist/menuUtilities-Da5uVIJ8.js.map +0 -1
  33. package/dist/routes-DM7kVvCm.js.map +0 -1
@@ -2,8 +2,8 @@ import { a as acquireAccessToken, c as useLogoutAction, d as getLoginRequest, f
2
2
  import { n as UserContext, r as UserDispatchContext, t as useUser } from "../../useUser-wpHGo6jU.js";
3
3
  import { t as useIsUnityAuthenticated } from "../../useIsUnityAuthenticated-Cc_l9meR.js";
4
4
  import { n as useCurrentPageReturnTo, r as useIsAuthed, t as useAuthedUser } from "../../useAuthedUser-Bhr7Yhlg.js";
5
- import { a as useUserActions, i as useLocalUserActions } from "../../TenantProvider-CCrrxyiD.js";
6
- import { n as createUser, t as AuthProvider } from "../../AuthProvider-C8qG0V63.js";
7
- import { n as useSingleLogout, r as AuthProviderWrapper, t as useAccessToken } from "../../auth-DZmqyrT1.js";
5
+ import { a as useUserActions, i as useLocalUserActions } from "../../TenantProvider-BeFMHYP8.js";
6
+ import { n as createUser, t as AuthProvider } from "../../AuthProvider-J79EBNDc.js";
7
+ import { n as useSingleLogout, r as AuthProviderWrapper, t as useAccessToken } from "../../auth-BWJ4-JF-.js";
8
8
 
9
9
  export { AuthProvider, AuthProviderWrapper, UserContext, UserDispatchContext, acquireAccessToken, createUser, getApiAccessScope, getLoginRequest, getSignInAuthProvider, getTokenRequest, initSignInAuthProvider, loginRedirect, useAccessToken, useAuthedUser, useCurrentPageReturnTo, useIsAuthed, useIsUnityAuthenticated, useLocalUserActions, useLoginAction, useLogoutAction, useSingleLogout, useUser, useUserActions, whitelistedPaths };
@@ -1,4 +1,4 @@
1
- import { n as getRouteRolesMapAndMenuActiveMap, t as getMenuItemsRecursively } from "../../menuUtilities-Da5uVIJ8.js";
1
+ import { n as getRouteRolesMapAndMenuActiveMap, t as getMenuItemsRecursively } from "../../menuUtilities-BOnqojY6.js";
2
2
  import { t as redirectToLinkOnClick } from "../../redirectToLink-CLI8MGFd.js";
3
3
 
4
4
  export { getMenuItemsRecursively, getRouteRolesMapAndMenuActiveMap, redirectToLinkOnClick };
@@ -1,5 +1,5 @@
1
1
  import { t as TenantContext } from "../../tenantContext-BpVIZ4sz.js";
2
2
  import { t as useTenant } from "../../useTenant-CGaZEBEJ.js";
3
- import { n as TenantAccessDialog, r as TenantSelect, t as TenantProvider } from "../../TenantProvider-CCrrxyiD.js";
3
+ import { n as TenantAccessDialog, r as TenantSelect, t as TenantProvider } from "../../TenantProvider-BeFMHYP8.js";
4
4
 
5
5
  export { TenantAccessDialog, TenantContext, TenantProvider, TenantSelect, useTenant };
package/export-map.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2025-12-30T18:33:20.968Z",
2
+ "generated": "2025-12-30T23:43:12.916Z",
3
3
  "library": "udp-react-enterprise-component-library",
4
4
  "totalExports": 815,
5
5
  "description": "Map of exported items to their module paths for tree-shaking",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-react-enterprise-component-library",
3
- "version": "25.18.1-beta.63",
3
+ "version": "25.18.1-beta.64",
4
4
  "description": "React-based UI component library implementing Fluent UI design for Univerus internal projects",
5
5
  "author": "Univerus",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"menuUtilities-Da5uVIJ8.js","names":[],"sources":["../src/utilities/menus/menuUtilities.js"],"sourcesContent":["import * as Icons from '@fluentui/react-icons';\nimport { UdpPageEnums } from '../../enums/pageEnums';\nimport { isMobileOnly, isTablet, isDesktop } from 'react-device-detect';\nimport { DeviceTypeEnums,MenuItemEnums } from '../../enums/unitySystemEnums';\nimport { getAccessToken } from '../apiHelpers';\nexport const getMenuItemsRecursively = (\n menuItems,\n activeOnly,\n user,\n checkDeviceSize = true\n) => {\n return menuItems.reduce((formattedItems, item) => {\n try {\n if (activeOnly && !item.menuItemInstance.isActive) {\n return formattedItems;\n }\n const parameters = JSON.parse(item.menuItemInstance.parameters);\n const {\n FluentIcon,\n WorkFlowIcon,\n AppIcon,\n Label,\n Slug,\n RedirectURL,\n AppendTokenToURL,\n DevicesHiddenOn,\n appendCurrentTenant,\n ...otherParams\n } = parameters;\n let redirectInfo = '';\n if (RedirectURL) {\n redirectInfo = RedirectURL;\n if (appendCurrentTenant) {\n redirectInfo = `${RedirectURL}?tenantId=${\n user?.currentTenantId || ''\n }`;\n }\n }\n const formattedParameters = {\n id: item.menuItemInstance.menuItemInstanceId,\n label: Label ?? '',\n link: getFormattedSlug(Slug, { ...otherParams }) ?? '',\n redirectInfo: redirectInfo,\n getAccessToken:\n getAccessToken && AppendTokenToURL ? getAccessToken : null,\n menuItemId: item.menuItemInstance.menuItemId,\n menuStructureId: item.menuStructureId,\n parentId: item.parentId,\n productId: item.menuItemInstance.productId,\n isActive: item.menuItemInstance.isActive,\n roleIds: item.menuItemInstance.roleIds,\n tenantSsoId: item?.menuItemInstance?.tenantSsoId,\n devicesHiddenOn: DevicesHiddenOn || [],\n params: { ...otherParams }\n };\n\n let iconName = '';\n if (FluentIcon) {\n iconName = FluentIcon;\n } else if (WorkFlowIcon) {\n iconName = WorkFlowIcon;\n }\n formattedParameters.icon = iconName ? Icons[iconName] : null;\n formattedParameters.iconName = iconName ? iconName : null;\n\n formattedParameters['items'] = item.menuItemInstanceStructures.length\n ? getMenuItemsRecursively(\n item.menuItemInstanceStructures,\n activeOnly,\n user,\n getAccessToken,\n checkDeviceSize\n )\n : [];\n if (checkDeviceSize) {\n if (\n !(\n isDesktop &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Desktop\n )\n ) &&\n !(\n isTablet &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Tablet\n )\n ) &&\n !(\n isMobileOnly &&\n formattedParameters?.devicesHiddenOn?.includes(\n DeviceTypeEnums.Mobile\n )\n )\n ) {\n formattedItems.push(formattedParameters);\n }\n } else {\n formattedItems.push(formattedParameters);\n }\n } catch {\n // catching parse error\n }\n return formattedItems;\n }, []);\n};\n\nconst getFormattedSlug = (slug, params) => {\n let formattedSlug = slug;\n if (params?.PageId === UdpPageEnums.Udp_Maintenance_Engine_Page) {\n formattedSlug = `${slug}${\n params?.entityName ? `?entityName=${params?.entityName}` : ''\n }`;\n } else if (params?.PageId === UdpPageEnums.Udp_Data_Browser_Page) {\n formattedSlug = `${slug}?queryId=${params?.queryId}`;\n }\n\n return formattedSlug;\n};\n\nexport const getRouteRolesMapAndMenuActiveMap = (menu) => {\n const updatedRolesMap = new Map()\n const updatedisMenuActiveMap = new Map()\n menu[0].menuItemInstanceStructureViews.map((menuItemInstanceStructureView) => {\n let menuItemInstance = menuItemInstanceStructureView.menuItemInstance\n if (menuItemInstance.menuItemId == MenuItemEnums.Route) {\n try {\n const menuparams = JSON.parse(menuItemInstance.parameters)\n const slug = menuparams?.Slug;\n updatedRolesMap.set(slug, menuItemInstance.roleIds)\n updatedisMenuActiveMap.set(slug, menuItemInstance.isActive)\n } catch (e) {\n console.error(\"Failed to parse menu item parameters\", e);\n }\n }\n })\n return {rolesMap: updatedRolesMap, menuActiveMap: updatedisMenuActiveMap}\n}\n"],"mappings":";;;;;;;AAKA,MAAa,2BACX,WACA,YACA,MACA,kBAAkB,SACf;AACH,QAAO,UAAU,QAAQ,gBAAgB,SAAS;AAChD,MAAI;AACF,OAAI,cAAc,CAAC,KAAK,iBAAiB,SACvC,QAAO;GAGT,MAAM,EACJ,YACA,cACA,SACA,OACA,MACA,aACA,kBACA,iBACA,qBACA,GAAG,gBAXc,KAAK,MAAM,KAAK,iBAAiB,WAAW;GAa/D,IAAI,eAAe;AACnB,OAAI,aAAa;AACf,mBAAe;AACf,QAAI,oBACF,gBAAe,GAAG,YAAY,YAC5B,MAAM,mBAAmB;;GAI/B,MAAM,sBAAsB;IAC1B,IAAI,KAAK,iBAAiB;IAC1B,OAAO,SAAS;IAChB,MAAM,iBAAiB,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI;IACtC;IACd,gBACE,kBAAkB,mBAAmB,iBAAiB;IACxD,YAAY,KAAK,iBAAiB;IAClC,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,WAAW,KAAK,iBAAiB;IACjC,UAAU,KAAK,iBAAiB;IAChC,SAAS,KAAK,iBAAiB;IAC/B,aAAa,MAAM,kBAAkB;IACrC,iBAAiB,mBAAmB,EAAE;IACtC,QAAQ,EAAE,GAAG,aAAa;IAC3B;GAED,IAAI,WAAW;AACf,OAAI,WACF,YAAW;YACF,aACT,YAAW;AAEb,uBAAoB,OAAO,WAAW,MAAM,YAAY;AACxD,uBAAoB,WAAW,WAAW,WAAW;AAErD,uBAAoB,WAAW,KAAK,2BAA2B,SAC3D,wBACE,KAAK,4BACL,YACA,MACA,gBACA,gBACD,GACD,EAAE;AACN,OAAI,iBACF;QACE,EACE,aACA,qBAAqB,iBAAiB,SACpC,gBAAgB,QACjB,KAEH,EACE,YACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,KAEH,EACE,gBACA,qBAAqB,iBAAiB,SACpC,gBAAgB,OACjB,EAGH,gBAAe,KAAK,oBAAoB;SAG1C,gBAAe,KAAK,oBAAoB;UAEpC;AAGR,SAAO;IACN,EAAE,CAAC;;AAGR,MAAM,oBAAoB,MAAM,WAAW;CACzC,IAAI,gBAAgB;AACpB,KAAI,QAAQ,WAAW,aAAa,4BAClC,iBAAgB,GAAG,OACjB,QAAQ,aAAa,eAAe,QAAQ,eAAe;UAEpD,QAAQ,WAAW,aAAa,sBACzC,iBAAgB,GAAG,KAAK,WAAW,QAAQ;AAG7C,QAAO;;AAGT,MAAa,oCAAoC,SAAS;CACxD,MAAM,kCAAkB,IAAI,KAAK;CACjC,MAAM,yCAAyB,IAAI,KAAK;AACxC,MAAK,GAAG,+BAA+B,KAAK,kCAAkC;EAC5E,IAAI,mBAAmB,8BAA8B;AACrD,MAAI,iBAAiB,cAAc,cAAc,MAC/C,KAAI;GAEF,MAAM,OADa,KAAK,MAAM,iBAAiB,WAAW,EACjC;AACzB,mBAAgB,IAAI,MAAM,iBAAiB,QAAQ;AACnD,0BAAuB,IAAI,MAAM,iBAAiB,SAAS;WACpD,GAAG;AACV,WAAQ,MAAM,wCAAwC,EAAE;;GAG5D;AACF,QAAO;EAAC,UAAU;EAAiB,eAAe;EAAuB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes-DM7kVvCm.js","names":["props"],"sources":["../src/routes/PrivateRoute.jsx","../src/routes/UdpRoutes.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\r\nimport { useUser } from '../utilities/auth/useUser';\r\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\r\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\r\n\r\nexport const PrivateRoute = ({ rolesMap: propRolesMap, menuActiveMap: propMenuActiveMap, ...routeProps }) => {\r\n const isAuthenticated = useIsUnityAuthenticated();\r\n const user = useUser();\r\n const { t } = useTranslation();\r\n const menuContext = useMenuContext?.();\r\n const rolesMap = menuContext?.rolesMap ?? propRolesMap;\r\n const menuActiveMap = menuContext?.menuActiveMap ?? propMenuActiveMap;\r\n const userRoles = user.roleIds;\r\n //path is passed from frontend so making sure it meets expected fromat of all lowercase, no spaces, and has format /pathname or /pathname/:param\r\n let pathAsKey = routeProps.path\r\n .toLowerCase()\r\n .replaceAll(' ', '')\r\n .replace('/', '');\r\n pathAsKey = pathAsKey.split('/:')[0];\r\n\r\n const userHasAccessToTenant = useMemo(() => {\r\n if (user?.tenantIds?.includes(user.currentTenantId)) {\r\n return true;\r\n }\r\n return false;\r\n }, [user]);\r\n\r\n const userHasRoles = useMemo(() => {\r\n if (rolesMap?.size > 0) {\r\n if (!rolesMap.has(routeProps.path)) {\r\n return true;\r\n }\r\n const routeRoles = rolesMap.get(routeProps.path);\r\n return routeRoles.every((element) => userRoles.includes(element));\r\n }\r\n return true\r\n }, [userRoles, rolesMap, routeProps.path]);\r\n\r\n const menuIsActive = useMemo(() => {\r\n if (menuActiveMap?.size > 0 && menuActiveMap.has(routeProps.path)) {\r\n return menuActiveMap.get(routeProps.path);\r\n }\r\n }, [menuActiveMap, routeProps.path]);\r\n\r\n if (!userHasAccessToTenant && isAuthenticated && user?.statusCode === 200) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have access to this tenant. Please select a different Tenant.'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (rolesMap?.has(routeProps.path) && !menuIsActive) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'Trying to access inactive menu. Please check your menu configurations'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (!user.isUnitySystemAdmin && rolesMap?.size > 0 && !userHasRoles) {\r\n return (\r\n <Route\r\n path='*'\r\n render={(props) => (\r\n <PageForbiddenRoute\r\n message={t(\r\n 'You do not have the required roles to access this page. Please contact an administrator to get access'\r\n )}\r\n showButton={false}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n if (isAuthenticated && user?.statusCode === 200) {\r\n return <Route {...routeProps} />;\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { Suspense, lazy } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport { UdpPageEnums } from '../enums/pageEnums';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI/feedback/PageLoading';\n\n// Lazy load route components\nconst VirtualBrowser = lazy(() =>\n import('../maintenanceEngine/virtualBrowser/VirtualBrowser')\n);\nconst MenuPage = lazy(() => import('../menuPage/MenuPage'));\nconst UdpPublicForm = lazy(() => import('../udp/pages/UdpFormsPublicForm'));\nconst WorkflowContainer = lazy(() => import('../workflow/WorkflowContainer'));\nconst PasswordResetRedirect = lazy(() =>\n import('./components/PasswordResetRedirect')\n);\nconst MyExportsPage = lazy(() => import('../udp/export/MyExportsPage'));\nconst PageNotFoundRoute = lazy(() => import('./components/PageNotFoundRoute'));\nconst UdpMaintenanceConfigPage = lazy(() =>\n import('../udp/pages/UdpMaintenanceConfigPage')\n);\nconst UdpMaintenanceEnginePage = lazy(() =>\n import('../udp/pages/UdpMaintenanceEnginePage')\n);\nconst AadCallback = lazy(() => import('../utilities/auth/AadCallback'));\n\n\nconst UdpTransactionsPage = lazy(() =>\n import('../udp/pages/UdpTransactionsPage')\n);\n\nconst UdpTransactionTypesPage = lazy(() =>\n import('../udp/pages/UdpTransactionTypesPage')\n);\n\nconst PageContainer = lazy(() =>\n import('../page/PageContainer').then(module => ({ default: module.PageContainer }))\n);\n\nconst Reports = lazy(() => import('../reports/Reports'));\n\nconst Inquiry = lazy(() => import('../inquiry/Inquiry'));\n\nexport const UdpRoutes = (props) => {\n const { ...other } = props;\n return (\n <Suspense fallback={<PageLoading />}>\n <Switch>\n <PrivateRoute\n path='/virtual/:id'\n render={(props) => <VirtualBrowser {...props} {...other} />}\n />\n <PrivateRoute\n path='/menupage/:id'\n render={(props) => <MenuPage {...props} {...other} />}\n />\n\n <Route\n path={`/page/${UdpPageEnums.Udp_Public_Forms_Page}`}\n render={(props) => <UdpPublicForm {...props} {...other} />}\n />\n <Route\n path={`/passwordresetsuccess`}\n render={(props) => <PasswordResetRedirect props={props} />}\n />\n <PrivateRoute\n path='/workflowtask/:id'\n render={(props) => <WorkflowContainer {...props} {...other} />}\n />\n <PrivateRoute\n path='/myexports'\n render={(props) => (\n <MyExportsPage\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n {...props}\n {...other}\n />\n )}\n />\n <PrivateRoute\n path='/crudbrowser'\n render={(props) => <UdpMaintenanceEnginePage {...props} />}\n />\n <PrivateRoute\n path='/tablebrowser'\n render={(props) => <UdpMaintenanceConfigPage {...props} />}\n />\n\n <Route path='/aad_callback' component={AadCallback} />\n <PrivateRoute\n path='/transactionsPage'\n render={(props) => <UdpTransactionsPage {...props} />}\n />\n <PrivateRoute\n path='/transactionTypesPage'\n render={(props) => <UdpTransactionTypesPage {...props} />}\n />\n <PrivateRoute path=\"/reports/:id\" exact component={Reports} />\n <PrivateRoute\n path=\"/inquiry/:id\"\n render={props => <Inquiry {...props} />}\n />\n <PrivateRoute\n path=\"/page/:id\"\n render={props => (\n <PageContainer fromMenu={true} {...props} />\n )}\n />\n <PrivateRoute path='*' component={PageNotFoundRoute} />\n </Switch>\n </Suspense>\n );\n};\n"],"mappings":"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"}