udp-react-enterprise-component-library 26.8.0-beta.9 → 26.8.0

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 (38) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.mjs +2 -2
  3. package/dist/routes/PrivateRoute.d.ts.map +1 -1
  4. package/dist/routes/PrivateRoute.js +7 -3
  5. package/dist/routes/PrivateRoute.js.map +1 -1
  6. package/dist/routes/PrivateRoute.mjs +4 -4
  7. package/dist/routes/PrivateRoute.mjs.map +1 -1
  8. package/dist/routes/components/PageForbiddenRoute.d.ts.map +1 -1
  9. package/dist/routes/components/PageForbiddenRoute.js +4 -11
  10. package/dist/routes/components/PageForbiddenRoute.js.map +1 -1
  11. package/dist/routes/components/PageForbiddenRoute.mjs +35 -45
  12. package/dist/routes/components/PageForbiddenRoute.mjs.map +1 -1
  13. package/dist/routes/components/PageNotFoundRoute.d.ts.map +1 -1
  14. package/dist/routes/components/PageNotFoundRoute.js +4 -11
  15. package/dist/routes/components/PageNotFoundRoute.js.map +1 -1
  16. package/dist/routes/components/PageNotFoundRoute.mjs +32 -42
  17. package/dist/routes/components/PageNotFoundRoute.mjs.map +1 -1
  18. package/dist/routes/components/PageStatus.d.ts.map +1 -1
  19. package/dist/routes/components/PageStatus.js +16 -39
  20. package/dist/routes/components/PageStatus.js.map +1 -1
  21. package/dist/routes/components/PageStatus.mjs +55 -131
  22. package/dist/routes/components/PageStatus.mjs.map +1 -1
  23. package/dist/shell/Shell.d.ts +4 -1
  24. package/dist/shell/Shell.d.ts.map +1 -1
  25. package/dist/shell/Shell.js +21 -5
  26. package/dist/shell/Shell.js.map +1 -1
  27. package/dist/shell/Shell.mjs +13 -5
  28. package/dist/shell/Shell.mjs.map +1 -1
  29. package/dist/udp/pages/UdpTransactionsPage/UdpTransactionsPage.d.ts.map +1 -1
  30. package/dist/udp/pages/UdpTransactionsPage/UdpTransactionsPage.js +64 -5
  31. package/dist/udp/pages/UdpTransactionsPage/UdpTransactionsPage.js.map +1 -1
  32. package/dist/udp/pages/UdpTransactionsPage/UdpTransactionsPage.mjs +249 -160
  33. package/dist/udp/pages/UdpTransactionsPage/UdpTransactionsPage.mjs.map +1 -1
  34. package/dist/utilities/i18n/locales/es-US.json +5 -5
  35. package/dist/utilities/i18n/locales/es-US.mjs +5 -5
  36. package/dist/utilities/i18n/locales/fr-CA.json +5 -5
  37. package/dist/utilities/i18n/locales/fr-CA.mjs +5 -5
  38. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -317,8 +317,6 @@ import { useTheme } from "./utilities/theme/useTheme.mjs";
317
317
  import { corporateColors, corporateColorsHint, productCategoryColors } from "./utilities/theme/brand.mjs";
318
318
  import { useSystemColor } from "./utilities/theme/systemColors.mjs";
319
319
  import { getCurrentThemeMode, setThemeMode } from "./utilities/theme/index.mjs";
320
- import { PageStatus } from "./routes/components/PageStatus.mjs";
321
- import { PageForbiddenRoute } from "./routes/components/PageForbiddenRoute.mjs";
322
320
  import { isI18nStackEnabled, setI18nEnabled } from "./utilities/i18n/i18nEnabled.mjs";
323
321
  import { createDefaultLanguageLoader, fetchAvailableLanguages, setLanguageLoader, useAvailableLanguages } from "./utilities/i18n/languageSource.mjs";
324
322
  import { findHomeRoute, findHomeRouteSlug, getMenuItemsRecursively, getRouteRolesMapAndMenuActiveMap } from "./utilities/menus/menuUtilities.mjs";
@@ -435,6 +433,8 @@ import { PrivateRoute } from "./routes/PrivateRoute.mjs";
435
433
  import { PublicRoute } from "./routes/PublicRoute.mjs";
436
434
  import { UdpRoutes } from "./routes/UdpRoutes.mjs";
437
435
  import { Link, NavLink, Prompt, Redirect, Route, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from "./routes/index.mjs";
436
+ import { PageStatus } from "./routes/components/PageStatus.mjs";
437
+ import { PageForbiddenRoute } from "./routes/components/PageForbiddenRoute.mjs";
438
438
  import { PageNotFoundRoute } from "./routes/components/PageNotFoundRoute.mjs";
439
439
  import { BreadCrumbMenu } from "./UI/inputs/link/BreadCrumbMenu.mjs";
440
440
  import { AmbientProjectSwitcher } from "./shell/ui/AmbientProjectSwitcher.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateRoute.d.ts","sourceRoot":"","sources":["../../src/routes/PrivateRoute.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkCrD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,uHAwLxB,CAAC"}
1
+ {"version":3,"file":"PrivateRoute.d.ts","sourceRoot":"","sources":["../../src/routes/PrivateRoute.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyCrD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,uHA0LxB,CAAC"}
@@ -9,7 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import React, { useMemo } from 'react';
12
+ import React, { lazy, Suspense, useMemo } from 'react';
13
13
  import { Route } from 'react-router-dom';
14
14
  import { useTheme } from '../utilities/theme';
15
15
  import { useTranslation } from 'react-i18next';
@@ -17,7 +17,6 @@ import { InteractionType, InteractionStatus } from '@azure/msal-browser';
17
17
  import { MsalAuthenticationTemplate, useMsal } from '@azure/msal-react';
18
18
  import { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';
19
19
  import { useUser } from '../utilities/auth/useUser';
20
- import { PageForbiddenRoute } from './components/PageForbiddenRoute';
21
20
  import { useMenuContext } from '../utilities/menus/MenuProvider';
22
21
  import { useRegisterRoute } from './useRegisterRoute';
23
22
  import { LoadingIndicator } from '../UI/loading/LoadingIndicator';
@@ -28,6 +27,11 @@ import { storeRedirectPath } from '../utilities/redirect/LocalRedirectUrlStorage
28
27
  import { useAxiosGet } from '../utilities';
29
28
  import { ConfigService } from '../configService';
30
29
  import { PageLoading } from '../UI';
30
+ // Matches the PageNotFoundRoute treatment in UdpRoutes: a 403 screen is not on
31
+ // the hot path, so it does not belong in the eager graph.
32
+ const PageForbiddenRoute = lazy(() => import('./components/PageForbiddenRoute').then((m) => ({
33
+ default: m.PageForbiddenRoute
34
+ })));
31
35
  const FORBIDDEN_REASONS = {
32
36
  INACTIVE_MENU: {
33
37
  key: 'routes.forbidden.inactiveMenu',
@@ -162,7 +166,7 @@ export const PrivateRoute = (_a) => {
162
166
  const forbiddenMessage = reason
163
167
  ? t(reason.key, { defaultValue: reason.defaultValue })
164
168
  : routeAccessResponse;
165
- return (React.createElement(Route, { path: "*", render: () => (React.createElement(PageForbiddenRoute, { message: forbiddenMessage, showButton: false })) }));
169
+ return (React.createElement(Route, { path: "*", render: () => (React.createElement(Suspense, { fallback: React.createElement(PageLoading, null) }, React.createElement(PageForbiddenRoute, { message: forbiddenMessage, showButton: false }))) }));
166
170
  }
167
171
  if (isUserInitialized) {
168
172
  return React.createElement(Route, Object.assign({}, routeProps));
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateRoute.js","sourceRoot":"","sources":["../../src/routes/PrivateRoute.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,MAAM,iBAAiB,GACrB;IACE,aAAa,EAAE;QACb,GAAG,EAAE,+BAA+B;QACpC,YAAY,EACV,uEAAuE;KAC1E;IACD,aAAa,EAAE;QACb,GAAG,EAAE,+BAA+B;QACpC,YAAY,EACV,uGAAuG;KAC1G;CACF,CAAC;AAsBJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAIT,EAAE,EAAE,CAAC;;;QAJI,EAC3B,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,iBAAiB,OAEd,EADf,UAAU,cAHc,6BAI5B,CADc;IAEb,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,uBAAuB,EAAE,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,EAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,IAAI,EAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IACnF,MAAM,aAAa,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,0CAAE,IAAI,EAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEvG,+GAA+G;IAC/G,MAAM,YAAY,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,MAAK,GAAG,CAAC;IAE9C,+DAA+D;IAC/D,mFAAmF;IACnF,gFAA8E;IAC9E,wCAAwC;IACxC,MAAM,eAAe,GACnB,OAAO,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;QACrD,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,MAAK,IAAI;QAC1D,EAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,0CAAE,MAAM,CAAA,CAAC;IAExD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC,CAAC;IAExD,MAAM,iBAAiB,GACrB,eAAe;QACf,CAAC,aAAa;QACd,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAA;QACtB,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAA,CAAC;IAE9B,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,gBAAgB,GACpB,eAAe;QACf,CAAC,iBAAiB;QAClB,OAAO,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC;QACtC,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC;QACrB,OAAO,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,QAAQ,CAAC;QACvC,CAAC,eAAe;QAChB,CAAC,YAAY,CAAC;IAEhB,MAAM,CACJ,EACE,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,gBAAgB,EACxB,CACF,GAAG,WAAW,CACb,aAAa,CAAC,cAAc,EAC5B,gBAAgB,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,QAAQ,yBAAyB,kBAAkB,OAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,mCAAI,EAAE,CAAC,WAAW,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,EACvJ,EAAE,EACF,CAAC,gBAAgB,CACiD,CAAC;IAErE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,EAAE,CAAC;IAAA,CACR,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;;QACjC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,IAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,EAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACb,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;;QACjC,IACE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,IAAG,CAAC;YACvB,aAAa,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,EAChD,CAAC;YACD,OAAO,aAAa,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;IAAA,CACF,EAAE,CAAC,aAAa,EAAE,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC,CAAC;IAEnD,MAAM,YAAY,SAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,IAAI,CAAC;IAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CAAC,CAAC;IAEzD,MAAM,6BAA6B,GACjC,eAAe,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,eAAe,IAAI,CAAC,kBAAkB,CAAC;IAClE,IAAI,6BAA6B,IAAI,kBAAkB,EAAE,CAAC;QACxD,OAAO,oBAAC,gBAAgB,OAAG,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,qFAAqF;QACrF,IAAI,UAAU,KAAK,iBAAiB,CAAC,OAAO,IAAI,UAAU,KAAK,iBAAiB,CAAC,cAAc,EAAE,CAAC;YAChG,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QACD,IAAI,UAAU,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QACD,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,YAAY,GAA2B,IAAI,CAAC;QAChD,IAAI,CAAC;YACH,YAAY,GAAG,eAAe,EAAE,CAAC;QACnC,CAAC;mBAAO,CAAC;YACP,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QAED,OAAO,CACL,oBAAC,0BAA0B,IACzB,eAAe,EAAE,eAAe,CAAC,QAAQ,EACzC,qBAAqB,EAAE,YAAY,EACnC,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,gBAAgB,OAAG,EAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;;;gBACzB,IAAI,UAAU,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC1C,OAAO,oBAAC,gBAAgB,OAAG,CAAC;gBAC9B,CAAC;gBACD,MAAM,YAAY,GAChB,OAAO,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,YAAY,CAAC;oBACnC,iCAAiC,CAAC,IAAI,OACpC,MAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,0CAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,mCAAI,EAAE,CAC9C,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,oBAAC,gBAAgB,OAAG,CAAC;gBAC9B,CAAC;gBACD,OAAO,oBAAC,qBAAqB,oBAAK,KAAK,EAAI,CAAC;YAAA,CAC7C,IAED,oBAAC,KAAK,oBAAK,UAAU,EAAI,CACE,CAC9B,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,iEAAiE;IACjE,IACE,CAAC,gBAAgB;QACf,CAAC,kBAAkB;YACjB,CAAC,mBAAmB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC9D,iBAAiB,EACjB,CAAC;QACD,OAAO,oBAAC,WAAW,OAAG,CAAC;IACzB,CAAC;IAED,kHAAkH;IAClH,MAAM,gBAAgB,GACpB,gBAAgB;QAChB,OAAO,CAAC,mBAAmB,CAAC;QAC5B,CAAC,CAAC,aAAa,IAAI,mBAAmB,KAAK,eAAe,CAAC,CAAC;IAE9D,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,MAAM;YAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,CAAC,CAAC,mBAAmB,CAAC;QACxB,OAAO,CACL,oBAAC,KAAK,IACJ,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,oBAAC,kBAAkB,IAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,GAAI,CACrE,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,oBAAC,KAAK,oBAAK,UAAU,EAAI,CAAC;IACnC,CAAC;IAED,OAAO,oBAAC,gBAAgB,OAAG,CAAC;AAAA,CAC7B,CAAC"}
1
+ {"version":3,"file":"PrivateRoute.js","sourceRoot":"","sources":["../../src/routes/PrivateRoute.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,+EAA+E;AAC/E,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CACnC,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,kBAAkB;CAC9B,CAAC,CAAC,CACJ,CAAC;AAEF,MAAM,iBAAiB,GACrB;IACE,aAAa,EAAE;QACb,GAAG,EAAE,+BAA+B;QACpC,YAAY,EACV,uEAAuE;KAC1E;IACD,aAAa,EAAE;QACb,GAAG,EAAE,+BAA+B;QACpC,YAAY,EACV,uGAAuG;KAC1G;CACF,CAAC;AAsBJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAIT,EAAE,EAAE,CAAC;;;QAJI,EAC3B,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,iBAAiB,OAEd,EADf,UAAU,cAHc,6BAI5B,CADc;IAEb,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,uBAAuB,EAAE,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,EAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,IAAI,EAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IACnF,MAAM,aAAa,GAAG,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,0CAAE,IAAI,EAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEvG,+GAA+G;IAC/G,MAAM,YAAY,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,MAAK,GAAG,CAAC;IAE9C,+DAA+D;IAC/D,mFAAmF;IACnF,gFAA8E;IAC9E,wCAAwC;IACxC,MAAM,eAAe,GACnB,OAAO,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;QACrD,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,MAAK,IAAI;QAC1D,EAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,0CAAE,MAAM,CAAA,CAAC;IAExD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC,CAAC;IAExD,MAAM,iBAAiB,GACrB,eAAe;QACf,CAAC,aAAa;QACd,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAA;QACtB,EAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAA,CAAC;IAE9B,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,gBAAgB,GACpB,eAAe;QACf,CAAC,iBAAiB;QAClB,OAAO,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC;QACtC,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC;QACrB,OAAO,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,QAAQ,CAAC;QACvC,CAAC,eAAe;QAChB,CAAC,YAAY,CAAC;IAEhB,MAAM,CACJ,EACE,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,gBAAgB,EACxB,CACF,GAAG,WAAW,CACb,aAAa,CAAC,cAAc,EAC5B,gBAAgB,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,QAAQ,yBAAyB,kBAAkB,OAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,mCAAI,EAAE,CAAC,WAAW,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,EACvJ,EAAE,EACF,CAAC,gBAAgB,CACiD,CAAC;IAErE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,EAAE,CAAC;IAAA,CACR,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;;QACjC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,IAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,EAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACb,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;;QACjC,IACE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,IAAG,CAAC;YACvB,aAAa,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,EAChD,CAAC;YACD,OAAO,aAAa,CAAC,GAAG,CAAC,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC;IAAA,CACF,EAAE,CAAC,aAAa,EAAE,MAAA,UAAU,CAAC,QAAQ,0CAAE,QAAQ,CAAC,CAAC,CAAC;IAEnD,MAAM,YAAY,SAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,mCAAI,IAAI,CAAC;IAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,CAAC,CAAC;IAEzD,MAAM,6BAA6B,GACjC,eAAe,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,eAAe,IAAI,CAAC,kBAAkB,CAAC;IAClE,IAAI,6BAA6B,IAAI,kBAAkB,EAAE,CAAC;QACxD,OAAO,oBAAC,gBAAgB,OAAG,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,qFAAqF;QACrF,IAAI,UAAU,KAAK,iBAAiB,CAAC,OAAO,IAAI,UAAU,KAAK,iBAAiB,CAAC,cAAc,EAAE,CAAC;YAChG,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QACD,IAAI,UAAU,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QACD,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,YAAY,GAA2B,IAAI,CAAC;QAChD,IAAI,CAAC;YACH,YAAY,GAAG,eAAe,EAAE,CAAC;QACnC,CAAC;mBAAO,CAAC;YACP,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,oBAAC,gBAAgB,OAAG,CAAC;QAC9B,CAAC;QAED,OAAO,CACL,oBAAC,0BAA0B,IACzB,eAAe,EAAE,eAAe,CAAC,QAAQ,EACzC,qBAAqB,EAAE,YAAY,EACnC,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAC,gBAAgB,OAAG,EAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;;;gBACzB,IAAI,UAAU,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC1C,OAAO,oBAAC,gBAAgB,OAAG,CAAC;gBAC9B,CAAC;gBACD,MAAM,YAAY,GAChB,OAAO,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,YAAY,CAAC;oBACnC,iCAAiC,CAAC,IAAI,OACpC,MAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,0CAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,mCAAI,EAAE,CAC9C,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,oBAAC,gBAAgB,OAAG,CAAC;gBAC9B,CAAC;gBACD,OAAO,oBAAC,qBAAqB,oBAAK,KAAK,EAAI,CAAC;YAAA,CAC7C,IAED,oBAAC,KAAK,oBAAK,UAAU,EAAI,CACE,CAC9B,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,iEAAiE;IACjE,IACE,CAAC,gBAAgB;QACf,CAAC,kBAAkB;YACjB,CAAC,mBAAmB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC9D,iBAAiB,EACjB,CAAC;QACD,OAAO,oBAAC,WAAW,OAAG,CAAC;IACzB,CAAC;IAED,kHAAkH;IAClH,MAAM,gBAAgB,GACpB,gBAAgB;QAChB,OAAO,CAAC,mBAAmB,CAAC;QAC5B,CAAC,CAAC,aAAa,IAAI,mBAAmB,KAAK,eAAe,CAAC,CAAC;IAE9D,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,MAAM;YAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,CAAC,CAAC,mBAAmB,CAAC;QACxB,OAAO,CACL,oBAAC,KAAK,IACJ,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,oBAAC,QAAQ,IAAC,QAAQ,EAAE,oBAAC,WAAW,OAAG,IACjC,oBAAC,kBAAkB,IAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,GAAI,CAC3D,CACZ,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,oBAAC,KAAK,oBAAK,UAAU,EAAI,CAAC;IACnC,CAAC;IAED,OAAO,oBAAC,gBAAgB,OAAG,CAAC;AAAA,CAC7B,CAAC"}
@@ -5,19 +5,19 @@ import { useAxiosGet } from "../utilities/useAxiosGet.mjs";
5
5
  import { PageLoading } from "../UI/feedback/PageLoading.mjs";
6
6
  import { useIsUnityAuthenticated } from "../utilities/auth/useIsUnityAuthenticated.mjs";
7
7
  import { useTheme } from "../utilities/theme/useTheme.mjs";
8
- import { PageForbiddenRoute } from "./components/PageForbiddenRoute.mjs";
9
8
  import { useMenuContext } from "../utilities/menus/MenuProvider.mjs";
10
9
  import { useRegisterRoute } from "./useRegisterRoute.mjs";
11
10
  import { LoadingIndicator } from "../UI/loading/LoadingIndicator/LoadingIndicator.mjs";
12
11
  import { storeRedirectPath } from "../utilities/redirect/LocalRedirectUrlStorage.mjs";
13
12
  import { PasswordResetRedirect } from "./components/PasswordResetRedirect.mjs";
14
13
  import { useTenant } from "../utilities/tenant/useTenant.mjs";
15
- import React, { useMemo } from "react";
14
+ import React, { Suspense, lazy, useMemo } from "react";
16
15
  import { InteractionStatus, InteractionType } from "@azure/msal-browser";
17
16
  import { Route } from "react-router-dom";
18
17
  import { useTranslation } from "react-i18next";
19
18
  import { MsalAuthenticationTemplate, useMsal } from "@azure/msal-react";
20
19
  //#region src/routes/PrivateRoute.tsx
20
+ const PageForbiddenRoute = lazy(() => import("./components/PageForbiddenRoute.mjs").then((m) => ({ default: m.PageForbiddenRoute })));
21
21
  const FORBIDDEN_REASONS = {
22
22
  INACTIVE_MENU: {
23
23
  key: "routes.forbidden.inactiveMenu",
@@ -97,10 +97,10 @@ const PrivateRoute = ({ rolesMap: propRolesMap, menuActiveMap: propMenuActiveMap
97
97
  const forbiddenMessage = reason ? t(reason.key, { defaultValue: reason.defaultValue }) : routeAccessResponse;
98
98
  return /* @__PURE__ */ React.createElement(Route, {
99
99
  path: "*",
100
- render: () => /* @__PURE__ */ React.createElement(PageForbiddenRoute, {
100
+ render: () => /* @__PURE__ */ React.createElement(Suspense, { fallback: /* @__PURE__ */ React.createElement(PageLoading, null) }, /* @__PURE__ */ React.createElement(PageForbiddenRoute, {
101
101
  message: forbiddenMessage,
102
102
  showButton: false
103
- })
103
+ }))
104
104
  });
105
105
  }
106
106
  if (isUserInitialized) return /* @__PURE__ */ React.createElement(Route, routeProps);
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateRoute.mjs","names":["React","useMemo","Route","RouteProps","useTheme","useTranslation","RedirectRequest","InteractionType","InteractionStatus","MsalAuthenticationTemplate","useMsal","useIsUnityAuthenticated","useUser","PageForbiddenRoute","useMenuContext","useRegisterRoute","LoadingIndicator","PasswordResetRedirect","getLoginRequest","useTenant","storeRedirectPath","useAxiosGet","ConfigService","PageLoading","FORBIDDEN_REASONS","Record","key","defaultValue","INACTIVE_MENU","MISSING_ROLES","PrivateRouteProps","rolesMap","Map","menuActiveMap","PrivateRoute","propRolesMap","propMenuActiveMap","routeProps","location","isPublic","isAuthenticated","inProgress","user","tenant","theme","t","menuContext","size","unknownRoute","path","mapProvesAccess","Boolean","has","pathname","get","length","isSystemAdmin","isUnitySystemAdmin","shouldWaitForMenu","leftMenu","leftMenuError","shouldCheckRoute","userId","activeTenant","tenantId","data","routeAccessResponse","loading","routeAccessLoading","error","routeAccessError","tenantV1ApiUrl","encodeURIComponent","userRoles","Array","isArray","roles","map","role","roleId","filter","userHasRoles","routeRoles","some","element","includes","menuIsActive","isUserInitialized","isTenantInitialized","isThemeInitialized","isInitialized","shouldWaitForProtectedContext","shouldWaitForTheme","Startup","HandleRedirect","None","search","loginRequest","Redirect","props","hasMsalError","errorMessage","test","window","hash","replace","undefined","isRouteForbidden","reason","forbiddenMessage"],"sources":["../../src/routes/PrivateRoute.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { useTheme } from '../utilities/theme';\nimport { useTranslation } from 'react-i18next';\nimport type { RedirectRequest } from '@azure/msal-browser';\nimport { InteractionType, InteractionStatus } from '@azure/msal-browser';\nimport { MsalAuthenticationTemplate, useMsal } from '@azure/msal-react';\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\nimport { useUser } from '../utilities/auth/useUser';\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { useRegisterRoute } from './useRegisterRoute';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { PasswordResetRedirect } from './components/PasswordResetRedirect';\nimport { getLoginRequest } from '../utilities/auth/signInAuthProvider';\nimport { useTenant } from '../utilities/tenant';\nimport { storeRedirectPath } from '../utilities/redirect/LocalRedirectUrlStorage';\nimport { useAxiosGet } from '../utilities';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI';\n\nconst FORBIDDEN_REASONS: Record<string, { key: string; defaultValue: string }> =\n {\n INACTIVE_MENU: {\n key: 'routes.forbidden.inactiveMenu',\n defaultValue:\n 'Trying to access inactive menu. Please check your menu configurations'\n },\n MISSING_ROLES: {\n key: 'routes.forbidden.missingRoles',\n defaultValue:\n 'You do not have the required roles to access this page. Please contact an administrator to get access'\n }\n };\n\n/**\n * Route guard for protected pages.\n *\n * - Triggers login redirect when the user is not authenticated.\n * - Blocks rendering until user/tenant/theme are initialized after login.\n * - Enforces menu activation and role-based access.\n */\nexport interface PrivateRouteProps extends RouteProps {\n /**\n * Optional map of pathname -> required role IDs.\n * If a path is present and has roles, the user must have at least one.\n */\n rolesMap?: Map<string, string[]>;\n /**\n * Optional map of pathname -> menu active status.\n * If a path is present and inactive, access is denied.\n */\n menuActiveMap?: Map<string, boolean>;\n}\n\nexport const PrivateRoute = ({\n rolesMap: propRolesMap,\n menuActiveMap: propMenuActiveMap,\n ...routeProps\n}: PrivateRouteProps) => {\n const location = useRegisterRoute({ isPublic: false });\n const isAuthenticated = useIsUnityAuthenticated();\n const { inProgress } = useMsal();\n const user = useUser();\n const tenant = useTenant();\n const theme = useTheme();\n const { t } = useTranslation();\n const menuContext = useMenuContext?.();\n const rolesMap = menuContext?.rolesMap?.size ? menuContext.rolesMap : propRolesMap;\n const menuActiveMap = menuContext?.menuActiveMap?.size ? menuContext.menuActiveMap : propMenuActiveMap;\n\n // The catch-all route: no menu backs it, so there is nothing to authorize helps avoid checking mistyped paths.\n const unknownRoute = routeProps?.path === '*';\n\n // The maps can prove access which saves a request. The backend\n // filters restricted paths out of the maps, so a path being present means the user\n // may access it — but only when the menu is active and the role list is empty\n // (empty array = no role restrictions).\n const mapProvesAccess =\n Boolean(rolesMap?.has(routeProps.location?.pathname)) &&\n menuActiveMap?.get(routeProps.location?.pathname) === true &&\n !rolesMap?.get(routeProps.location?.pathname)?.length;\n\n const isSystemAdmin = Boolean(user?.isUnitySystemAdmin);\n\n const shouldWaitForMenu =\n isAuthenticated &&\n !isSystemAdmin &&\n !menuContext?.leftMenu &&\n !menuContext?.leftMenuError;\n\n // Inverted into useAxiosGet's isManual below. Waits for the menu to settle so\n // the request is not fired and then cancelled when the menu proves access.\n const shouldCheckRoute =\n isAuthenticated &&\n !shouldWaitForMenu &&\n Boolean(routeProps.location?.pathname) &&\n Boolean(user?.userId) &&\n Boolean(tenant?.activeTenant?.tenantId) &&\n !mapProvesAccess &&\n !unknownRoute;\n\n const [\n {\n data: routeAccessResponse,\n loading: routeAccessLoading,\n error: routeAccessError\n }\n ] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/tenant/${tenant?.activeTenant?.tenantId}/routeForbidden?route=${encodeURIComponent(routeProps.location?.pathname ?? '')}&userId=${user?.userId}`,\n {},\n !shouldCheckRoute\n ) as [{ data?: string; loading: boolean; error?: unknown }, unknown];\n\n const userRoles = useMemo(() => {\n return Array.isArray(user?.roles)\n ? user.roles.map((role) => role.roleId).filter(Boolean)\n : [];\n }, [user?.roles]);\n\n const userHasRoles = useMemo(() => {\n if (rolesMap?.size > 0) {\n if (!rolesMap.has(routeProps.location?.pathname)) {\n return false;\n }\n const routeRoles = rolesMap.get(routeProps.location?.pathname);\n if (!routeRoles?.length) {\n return true;\n }\n return routeRoles.some((element) => userRoles.includes(element));\n }\n return true;\n }, [userRoles, rolesMap, routeProps.location?.pathname]);\n\n const menuIsActive = useMemo(() => {\n if (\n menuActiveMap?.size > 0 &&\n menuActiveMap.has(routeProps.location?.pathname)\n ) {\n return menuActiveMap.get(routeProps.location?.pathname);\n }\n }, [menuActiveMap, routeProps.location?.pathname]);\n\n const activeTenant = tenant?.activeTenant ?? null;\n const isUserInitialized = Boolean(user?.userId);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n const shouldWaitForProtectedContext =\n isAuthenticated && (!isUserInitialized || !isTenantInitialized);\n const shouldWaitForTheme = isAuthenticated && !isThemeInitialized;\n if (shouldWaitForProtectedContext || shouldWaitForTheme) {\n return <LoadingIndicator />;\n }\n\n if (!isAuthenticated) {\n // Prevent login redirect loops while MSAL is still processing the redirect response.\n if (inProgress === InteractionStatus.Startup || inProgress === InteractionStatus.HandleRedirect) {\n return <LoadingIndicator />;\n }\n if (inProgress !== InteractionStatus.None) {\n return <LoadingIndicator />;\n }\n storeRedirectPath(location.pathname, location.search);\n let loginRequest: RedirectRequest | null = null;\n try {\n loginRequest = getLoginRequest();\n } catch {\n loginRequest = null;\n }\n\n if (!loginRequest) {\n return <LoadingIndicator />;\n }\n\n return (\n <MsalAuthenticationTemplate\n interactionType={InteractionType.Redirect}\n authenticationRequest={loginRequest}\n loadingComponent={() => <LoadingIndicator />}\n errorComponent={(props) => {\n if (inProgress !== InteractionStatus.None) {\n return <LoadingIndicator />;\n }\n const hasMsalError =\n Boolean(props?.error?.errorMessage) ||\n /(^|&)(error|error_description)=/.test(\n window.location.hash?.replace(/^#/, '') ?? ''\n );\n if (!hasMsalError) {\n return <LoadingIndicator />;\n }\n return <PasswordResetRedirect {...props} />;\n }}\n >\n <Route {...routeProps} />\n </MsalAuthenticationTemplate>\n );\n }\n\n // Only consult the access request while the check is wanted. axios-hooks\n // leaves `loading` stuck at true when a request is cancelled mid-flight, so\n // reading it unconditionally would hold the page loader forever.\n if (\n (shouldCheckRoute &&\n (routeAccessLoading ||\n (routeAccessResponse === undefined && !routeAccessError))) ||\n shouldWaitForMenu\n ) {\n return <PageLoading />;\n }\n\n // An inactive menu blocks system admins too, but missing roles do not, so the reason has to be checked explicitly\n const isRouteForbidden =\n shouldCheckRoute &&\n Boolean(routeAccessResponse) &&\n (!isSystemAdmin || routeAccessResponse === 'INACTIVE_MENU');\n\n if (isRouteForbidden) {\n const reason = FORBIDDEN_REASONS[routeAccessResponse];\n const forbiddenMessage = reason\n ? t(reason.key, { defaultValue: reason.defaultValue })\n : routeAccessResponse;\n return (\n <Route\n path='*'\n render={() => (\n <PageForbiddenRoute message={forbiddenMessage} showButton={false} />\n )}\n />\n );\n }\n\n if (isUserInitialized) {\n return <Route {...routeProps} />;\n }\n\n return <LoadingIndicator />;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PrivateRoute.mjs","names":["React","lazy","Suspense","useMemo","Route","RouteProps","useTheme","useTranslation","RedirectRequest","InteractionType","InteractionStatus","MsalAuthenticationTemplate","useMsal","useIsUnityAuthenticated","useUser","useMenuContext","useRegisterRoute","LoadingIndicator","PasswordResetRedirect","getLoginRequest","useTenant","storeRedirectPath","useAxiosGet","ConfigService","PageLoading","PageForbiddenRoute","then","m","default","FORBIDDEN_REASONS","Record","key","defaultValue","INACTIVE_MENU","MISSING_ROLES","PrivateRouteProps","rolesMap","Map","menuActiveMap","PrivateRoute","propRolesMap","propMenuActiveMap","routeProps","location","isPublic","isAuthenticated","inProgress","user","tenant","theme","t","menuContext","size","unknownRoute","path","mapProvesAccess","Boolean","has","pathname","get","length","isSystemAdmin","isUnitySystemAdmin","shouldWaitForMenu","leftMenu","leftMenuError","shouldCheckRoute","userId","activeTenant","tenantId","data","routeAccessResponse","loading","routeAccessLoading","error","routeAccessError","tenantV1ApiUrl","encodeURIComponent","userRoles","Array","isArray","roles","map","role","roleId","filter","userHasRoles","routeRoles","some","element","includes","menuIsActive","isUserInitialized","isTenantInitialized","isThemeInitialized","isInitialized","shouldWaitForProtectedContext","shouldWaitForTheme","Startup","HandleRedirect","None","search","loginRequest","Redirect","props","hasMsalError","errorMessage","test","window","hash","replace","undefined","isRouteForbidden","reason","forbiddenMessage"],"sources":["../../src/routes/PrivateRoute.tsx"],"sourcesContent":["import React, { lazy, Suspense, useMemo } from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { useTheme } from '../utilities/theme';\nimport { useTranslation } from 'react-i18next';\nimport type { RedirectRequest } from '@azure/msal-browser';\nimport { InteractionType, InteractionStatus } from '@azure/msal-browser';\nimport { MsalAuthenticationTemplate, useMsal } from '@azure/msal-react';\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { useRegisterRoute } from './useRegisterRoute';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { PasswordResetRedirect } from './components/PasswordResetRedirect';\nimport { getLoginRequest } from '../utilities/auth/signInAuthProvider';\nimport { useTenant } from '../utilities/tenant';\nimport { storeRedirectPath } from '../utilities/redirect/LocalRedirectUrlStorage';\nimport { useAxiosGet } from '../utilities';\nimport { ConfigService } from '../configService';\nimport { PageLoading } from '../UI';\n\n// Matches the PageNotFoundRoute treatment in UdpRoutes: a 403 screen is not on\n// the hot path, so it does not belong in the eager graph.\nconst PageForbiddenRoute = lazy(() =>\n import('./components/PageForbiddenRoute').then((m) => ({\n default: m.PageForbiddenRoute\n }))\n);\n\nconst FORBIDDEN_REASONS: Record<string, { key: string; defaultValue: string }> =\n {\n INACTIVE_MENU: {\n key: 'routes.forbidden.inactiveMenu',\n defaultValue:\n 'Trying to access inactive menu. Please check your menu configurations'\n },\n MISSING_ROLES: {\n key: 'routes.forbidden.missingRoles',\n defaultValue:\n 'You do not have the required roles to access this page. Please contact an administrator to get access'\n }\n };\n\n/**\n * Route guard for protected pages.\n *\n * - Triggers login redirect when the user is not authenticated.\n * - Blocks rendering until user/tenant/theme are initialized after login.\n * - Enforces menu activation and role-based access.\n */\nexport interface PrivateRouteProps extends RouteProps {\n /**\n * Optional map of pathname -> required role IDs.\n * If a path is present and has roles, the user must have at least one.\n */\n rolesMap?: Map<string, string[]>;\n /**\n * Optional map of pathname -> menu active status.\n * If a path is present and inactive, access is denied.\n */\n menuActiveMap?: Map<string, boolean>;\n}\n\nexport const PrivateRoute = ({\n rolesMap: propRolesMap,\n menuActiveMap: propMenuActiveMap,\n ...routeProps\n}: PrivateRouteProps) => {\n const location = useRegisterRoute({ isPublic: false });\n const isAuthenticated = useIsUnityAuthenticated();\n const { inProgress } = useMsal();\n const user = useUser();\n const tenant = useTenant();\n const theme = useTheme();\n const { t } = useTranslation();\n const menuContext = useMenuContext?.();\n const rolesMap = menuContext?.rolesMap?.size ? menuContext.rolesMap : propRolesMap;\n const menuActiveMap = menuContext?.menuActiveMap?.size ? menuContext.menuActiveMap : propMenuActiveMap;\n\n // The catch-all route: no menu backs it, so there is nothing to authorize helps avoid checking mistyped paths.\n const unknownRoute = routeProps?.path === '*';\n\n // The maps can prove access which saves a request. The backend\n // filters restricted paths out of the maps, so a path being present means the user\n // may access it — but only when the menu is active and the role list is empty\n // (empty array = no role restrictions).\n const mapProvesAccess =\n Boolean(rolesMap?.has(routeProps.location?.pathname)) &&\n menuActiveMap?.get(routeProps.location?.pathname) === true &&\n !rolesMap?.get(routeProps.location?.pathname)?.length;\n\n const isSystemAdmin = Boolean(user?.isUnitySystemAdmin);\n\n const shouldWaitForMenu =\n isAuthenticated &&\n !isSystemAdmin &&\n !menuContext?.leftMenu &&\n !menuContext?.leftMenuError;\n\n // Inverted into useAxiosGet's isManual below. Waits for the menu to settle so\n // the request is not fired and then cancelled when the menu proves access.\n const shouldCheckRoute =\n isAuthenticated &&\n !shouldWaitForMenu &&\n Boolean(routeProps.location?.pathname) &&\n Boolean(user?.userId) &&\n Boolean(tenant?.activeTenant?.tenantId) &&\n !mapProvesAccess &&\n !unknownRoute;\n\n const [\n {\n data: routeAccessResponse,\n loading: routeAccessLoading,\n error: routeAccessError\n }\n ] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/tenant/${tenant?.activeTenant?.tenantId}/routeForbidden?route=${encodeURIComponent(routeProps.location?.pathname ?? '')}&userId=${user?.userId}`,\n {},\n !shouldCheckRoute\n ) as [{ data?: string; loading: boolean; error?: unknown }, unknown];\n\n const userRoles = useMemo(() => {\n return Array.isArray(user?.roles)\n ? user.roles.map((role) => role.roleId).filter(Boolean)\n : [];\n }, [user?.roles]);\n\n const userHasRoles = useMemo(() => {\n if (rolesMap?.size > 0) {\n if (!rolesMap.has(routeProps.location?.pathname)) {\n return false;\n }\n const routeRoles = rolesMap.get(routeProps.location?.pathname);\n if (!routeRoles?.length) {\n return true;\n }\n return routeRoles.some((element) => userRoles.includes(element));\n }\n return true;\n }, [userRoles, rolesMap, routeProps.location?.pathname]);\n\n const menuIsActive = useMemo(() => {\n if (\n menuActiveMap?.size > 0 &&\n menuActiveMap.has(routeProps.location?.pathname)\n ) {\n return menuActiveMap.get(routeProps.location?.pathname);\n }\n }, [menuActiveMap, routeProps.location?.pathname]);\n\n const activeTenant = tenant?.activeTenant ?? null;\n const isUserInitialized = Boolean(user?.userId);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n const shouldWaitForProtectedContext =\n isAuthenticated && (!isUserInitialized || !isTenantInitialized);\n const shouldWaitForTheme = isAuthenticated && !isThemeInitialized;\n if (shouldWaitForProtectedContext || shouldWaitForTheme) {\n return <LoadingIndicator />;\n }\n\n if (!isAuthenticated) {\n // Prevent login redirect loops while MSAL is still processing the redirect response.\n if (inProgress === InteractionStatus.Startup || inProgress === InteractionStatus.HandleRedirect) {\n return <LoadingIndicator />;\n }\n if (inProgress !== InteractionStatus.None) {\n return <LoadingIndicator />;\n }\n storeRedirectPath(location.pathname, location.search);\n let loginRequest: RedirectRequest | null = null;\n try {\n loginRequest = getLoginRequest();\n } catch {\n loginRequest = null;\n }\n\n if (!loginRequest) {\n return <LoadingIndicator />;\n }\n\n return (\n <MsalAuthenticationTemplate\n interactionType={InteractionType.Redirect}\n authenticationRequest={loginRequest}\n loadingComponent={() => <LoadingIndicator />}\n errorComponent={(props) => {\n if (inProgress !== InteractionStatus.None) {\n return <LoadingIndicator />;\n }\n const hasMsalError =\n Boolean(props?.error?.errorMessage) ||\n /(^|&)(error|error_description)=/.test(\n window.location.hash?.replace(/^#/, '') ?? ''\n );\n if (!hasMsalError) {\n return <LoadingIndicator />;\n }\n return <PasswordResetRedirect {...props} />;\n }}\n >\n <Route {...routeProps} />\n </MsalAuthenticationTemplate>\n );\n }\n\n // Only consult the access request while the check is wanted. axios-hooks\n // leaves `loading` stuck at true when a request is cancelled mid-flight, so\n // reading it unconditionally would hold the page loader forever.\n if (\n (shouldCheckRoute &&\n (routeAccessLoading ||\n (routeAccessResponse === undefined && !routeAccessError))) ||\n shouldWaitForMenu\n ) {\n return <PageLoading />;\n }\n\n // An inactive menu blocks system admins too, but missing roles do not, so the reason has to be checked explicitly\n const isRouteForbidden =\n shouldCheckRoute &&\n Boolean(routeAccessResponse) &&\n (!isSystemAdmin || routeAccessResponse === 'INACTIVE_MENU');\n\n if (isRouteForbidden) {\n const reason = FORBIDDEN_REASONS[routeAccessResponse];\n const forbiddenMessage = reason\n ? t(reason.key, { defaultValue: reason.defaultValue })\n : routeAccessResponse;\n return (\n <Route\n path='*'\n render={() => (\n <Suspense fallback={<PageLoading />}>\n <PageForbiddenRoute message={forbiddenMessage} showButton={false} />\n </Suspense>\n )}\n />\n );\n }\n\n if (isUserInitialized) {\n return <Route {...routeProps} />;\n }\n\n return <LoadingIndicator />;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageForbiddenRoute.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,eAAO,MAAM,kBAAkB,mCAkC9B,CAAC"}
1
+ {"version":3,"file":"PageForbiddenRoute.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,kBAAkB,mCAgC9B,CAAC"}
@@ -1,22 +1,15 @@
1
1
  import React from 'react';
2
- import { makeStyles } from '@material-ui/core';
3
2
  import { PageStatus } from './PageStatus';
4
3
  import { useTranslation } from 'react-i18next';
5
- const useStyles = makeStyles((theme) => ({
6
- root: {
7
- marginTop: theme.spacing(4)
8
- }
9
- }));
10
4
  export const PageForbiddenRoute = (props) => {
11
5
  const { title, statusCode, subheader, message, showButton } = props;
12
- const classes = useStyles();
13
6
  const { t } = useTranslation();
14
- return (React.createElement("div", { className: classes.root }, React.createElement(PageStatus, { title: title !== null && title !== void 0 ? title : t('routes.forbidden.title', { defaultValue: 'Page Forbidden' }), statusCode: statusCode !== null && statusCode !== void 0 ? statusCode : '403', subheader: subheader !== null && subheader !== void 0 ? subheader : t('routes.forbidden.subheader', {
15
- defaultValue: 'Sorry, you do not have permission to view this page.'
7
+ return (React.createElement(PageStatus, { title: title !== null && title !== void 0 ? title : t('routes.forbidden.title', { defaultValue: 'Access denied' }), statusCode: statusCode !== null && statusCode !== void 0 ? statusCode : '403', iconName: "shield", subheader: subheader !== null && subheader !== void 0 ? subheader : t('routes.forbidden.subheader', {
8
+ defaultValue: "You don't have permission to view this page."
16
9
  }), message: message !== null && message !== void 0 ? message : t('routes.forbidden.message', {
17
- defaultValue: 'Please contact an administrator to get access.'
10
+ defaultValue: 'If you think you should have access, contact your administrator.'
18
11
  }), to: "/", buttonLabel: t('routes.backToHome', {
19
12
  defaultValue: 'Back to Home Page'
20
- }), showButton: showButton })));
13
+ }), showButton: showButton }));
21
14
  };
22
15
  //# sourceMappingURL=PageForbiddenRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageForbiddenRoute.js","sourceRoot":"","sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE;QACJ,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5B;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,IAAI,IAC1B,oBAAC,UAAU,IACT,KAAK,EACH,KAAK,aAAL,KAAK,cAAL,KAAK,GACL,CAAC,CAAC,wBAAwB,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,EAEjE,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,KAAK,EAC/B,SAAS,EACP,SAAS,aAAT,SAAS,cAAT,SAAS,GACT,CAAC,CAAC,4BAA4B,EAAE;YAC9B,YAAY,EACV,sDAAsD;SACzD,CAAC,EAEJ,OAAO,EACL,OAAO,aAAP,OAAO,cAAP,OAAO,GACP,CAAC,CAAC,0BAA0B,EAAE;YAC5B,YAAY,EAAE,gDAAgD;SAC/D,CAAC,EAEJ,EAAE,EAAC,GAAG,EACN,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC,EACF,UAAU,EAAE,UAAU,GACtB,CACE,CACP,CAAC;AAAA,CACH,CAAC"}
1
+ {"version":3,"file":"PageForbiddenRoute.js","sourceRoot":"","sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/B,OAAO,CACL,oBAAC,UAAU,IACT,KAAK,EACH,KAAK,aAAL,KAAK,cAAL,KAAK,GACL,CAAC,CAAC,wBAAwB,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,EAEhE,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,KAAK,EAC/B,QAAQ,EAAC,QAAQ,EACjB,SAAS,EACP,SAAS,aAAT,SAAS,cAAT,SAAS,GACT,CAAC,CAAC,4BAA4B,EAAE;YAC9B,YAAY,EAAE,8CAA8C;SAC7D,CAAC,EAEJ,OAAO,EACL,OAAO,aAAP,OAAO,cAAP,OAAO,GACP,CAAC,CAAC,0BAA0B,EAAE;YAC5B,YAAY,EACV,kEAAkE;SACrE,CAAC,EAEJ,EAAE,EAAC,GAAG,EACN,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC,EACF,UAAU,EAAE,UAAU,GACtB,CACH,CAAC;AAAA,CACH,CAAC"}
@@ -1,71 +1,61 @@
1
1
  import { c } from "../../reactCompilerRuntime.mjs";
2
2
  import { PageStatus } from "./PageStatus.mjs";
3
3
  import React from "react";
4
- import { makeStyles } from "@material-ui/core";
5
4
  import { useTranslation } from "react-i18next";
6
5
  //#region src/routes/components/PageForbiddenRoute.jsx
7
- const useStyles = makeStyles((theme) => ({ root: { marginTop: theme.spacing(4) } }));
8
6
  const PageForbiddenRoute = (props) => {
9
- const $ = c(21);
7
+ const $ = c(18);
10
8
  const { title, statusCode, subheader, message, showButton } = props;
11
- const classes = useStyles();
12
9
  const { t } = useTranslation();
13
- const t0 = classes.root;
14
- let t1;
10
+ let t0;
15
11
  if ($[0] !== t || $[1] !== title) {
16
- t1 = title ?? t("routes.forbidden.title", { defaultValue: "Page Forbidden" });
12
+ t0 = title ?? t("routes.forbidden.title", { defaultValue: "Access denied" });
17
13
  $[0] = t;
18
14
  $[1] = title;
19
- $[2] = t1;
20
- } else t1 = $[2];
21
- const t2 = statusCode ?? "403";
22
- let t3;
15
+ $[2] = t0;
16
+ } else t0 = $[2];
17
+ const t1 = statusCode ?? "403";
18
+ let t2;
23
19
  if ($[3] !== subheader || $[4] !== t) {
24
- t3 = subheader ?? t("routes.forbidden.subheader", { defaultValue: "Sorry, you do not have permission to view this page." });
20
+ t2 = subheader ?? t("routes.forbidden.subheader", { defaultValue: "You don't have permission to view this page." });
25
21
  $[3] = subheader;
26
22
  $[4] = t;
27
- $[5] = t3;
28
- } else t3 = $[5];
29
- let t4;
23
+ $[5] = t2;
24
+ } else t2 = $[5];
25
+ let t3;
30
26
  if ($[6] !== message || $[7] !== t) {
31
- t4 = message ?? t("routes.forbidden.message", { defaultValue: "Please contact an administrator to get access." });
27
+ t3 = message ?? t("routes.forbidden.message", { defaultValue: "If you think you should have access, contact your administrator." });
32
28
  $[6] = message;
33
29
  $[7] = t;
34
- $[8] = t4;
35
- } else t4 = $[8];
36
- let t5;
30
+ $[8] = t3;
31
+ } else t3 = $[8];
32
+ let t4;
37
33
  if ($[9] !== t) {
38
- t5 = t("routes.backToHome", { defaultValue: "Back to Home Page" });
34
+ t4 = t("routes.backToHome", { defaultValue: "Back to Home Page" });
39
35
  $[9] = t;
40
- $[10] = t5;
41
- } else t5 = $[10];
42
- let t6;
43
- if ($[11] !== showButton || $[12] !== t1 || $[13] !== t2 || $[14] !== t3 || $[15] !== t4 || $[16] !== t5) {
44
- t6 = /* @__PURE__ */ React.createElement(PageStatus, {
45
- title: t1,
46
- statusCode: t2,
47
- subheader: t3,
48
- message: t4,
36
+ $[10] = t4;
37
+ } else t4 = $[10];
38
+ let t5;
39
+ if ($[11] !== showButton || $[12] !== t0 || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {
40
+ t5 = /* @__PURE__ */ React.createElement(PageStatus, {
41
+ title: t0,
42
+ statusCode: t1,
43
+ iconName: "shield",
44
+ subheader: t2,
45
+ message: t3,
49
46
  to: "/",
50
- buttonLabel: t5,
47
+ buttonLabel: t4,
51
48
  showButton
52
49
  });
53
50
  $[11] = showButton;
54
- $[12] = t1;
55
- $[13] = t2;
56
- $[14] = t3;
57
- $[15] = t4;
58
- $[16] = t5;
59
- $[17] = t6;
60
- } else t6 = $[17];
61
- let t7;
62
- if ($[18] !== classes.root || $[19] !== t6) {
63
- t7 = /* @__PURE__ */ React.createElement("div", { className: t0 }, t6);
64
- $[18] = classes.root;
65
- $[19] = t6;
66
- $[20] = t7;
67
- } else t7 = $[20];
68
- return t7;
51
+ $[12] = t0;
52
+ $[13] = t1;
53
+ $[14] = t2;
54
+ $[15] = t3;
55
+ $[16] = t4;
56
+ $[17] = t5;
57
+ } else t5 = $[17];
58
+ return t5;
69
59
  };
70
60
  //#endregion
71
61
  export { PageForbiddenRoute };
@@ -1 +1 @@
1
- {"version":3,"file":"PageForbiddenRoute.mjs","names":["React","makeStyles","PageStatus","useTranslation","useStyles","theme","root","marginTop","spacing","PageForbiddenRoute","props","$","_c","title","statusCode","subheader","message","showButton","classes","t","t0","t1","defaultValue","t2","t3","t4","t5","t6","t7"],"sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { PageStatus } from './PageStatus';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(4)\n }\n}));\n\nexport const PageForbiddenRoute = (props) => {\n const { title, statusCode, subheader, message, showButton } = props;\n const classes = useStyles();\n const { t } = useTranslation();\n\n return (\n <div className={classes.root}>\n <PageStatus\n title={\n title ??\n t('routes.forbidden.title', { defaultValue: 'Page Forbidden' })\n }\n statusCode={statusCode ?? '403'}\n subheader={\n subheader ??\n t('routes.forbidden.subheader', {\n defaultValue:\n 'Sorry, you do not have permission to view this page.'\n })\n }\n message={\n message ??\n t('routes.forbidden.message', {\n defaultValue: 'Please contact an administrator to get access.'\n })\n }\n to='/'\n buttonLabel={t('routes.backToHome', {\n defaultValue: 'Back to Home Page'\n })}\n showButton={showButton}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAMI,YAAYH,YAAYI,WAAW,EACvCC,MAAM,EACJC,WAAWF,MAAMG,QAAQ,EAAC,EAC5B,EACD,EAAE;AAEH,MAAaC,sBAAqBC,UAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAChC,MAAA,EAAAC,OAAAC,YAAAC,WAAAC,SAAAC,eAA8DP;CAC9D,MAAAQ,UAAgBd,WAAW;CAC3B,MAAA,EAAAe,MAAchB,gBAAgB;CAGZ,MAAAiB,KAAAF,QAAOZ;CAAK,IAAAe;AAAA,KAAAV,EAAA,OAAAQ,KAAAR,EAAA,OAAAE,OAAA;AAGtBQ,OAAAR,SACAM,EAAE,0BAA0B,EAAAG,cAAgB,kBAAkB,CAAC;AAAAX,IAAA,KAAAQ;AAAAR,IAAA,KAAAE;AAAAF,IAAA,KAAAU;OAAAA,MAAAV,EAAA;CAErD,MAAAY,KAAAT,cAAA;CAAmB,IAAAU;AAAA,KAAAb,EAAA,OAAAI,aAAAJ,EAAA,OAAAQ,GAAA;AAE7BK,OAAAT,aACAI,EAAE,8BAA8B,EAAAG,cAE5B,wDACH,CAAC;AAAAX,IAAA,KAAAI;AAAAJ,IAAA,KAAAQ;AAAAR,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,OAAAK,WAAAL,EAAA,OAAAQ,GAAA;AAGFM,OAAAT,WACAG,EAAE,4BAA4B,EAAAG,cACd,kDACf,CAAC;AAAAX,IAAA,KAAAK;AAAAL,IAAA,KAAAQ;AAAAR,IAAA,KAAAc;OAAAA,MAAAd,EAAA;CAAA,IAAAe;AAAA,KAAAf,EAAA,OAAAQ,GAAA;AAGSO,OAAAP,EAAE,qBAAqB,EAAAG,cACpB,qBACf,CAAC;AAAAX,IAAA,KAAAQ;AAAAR,IAAA,MAAAe;OAAAA,MAAAf,EAAA;CAAA,IAAAgB;AAAA,KAAAhB,EAAA,QAAAM,cAAAN,EAAA,QAAAU,MAAAV,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,MAAAd,EAAA,QAAAe,IAAA;AAtBJC,OAAA,sBAAA,cAAC,YAAD;GAEI,OAAAN;GAGU,YAAAE;GAEV,WAAAC;GAOA,SAAAC;GAKC,IAAA;GACU,aAAAC;GAGDT;GACZ,CAAA;AAAAN,IAAA,MAAAM;AAAAN,IAAA,MAAAU;AAAAV,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;AAAAd,IAAA,MAAAe;AAAAf,IAAA,MAAAgB;OAAAA,MAAAhB,EAAA;CAAA,IAAAiB;AAAA,KAAAjB,EAAA,QAAAO,QAAAZ,QAAAK,EAAA,QAAAgB,IAAA;AAzBJC,OAAA,sBAAA,cAAA,OAAA,EAAgB,WAAAR,IA0BV,EAzBJO,GAyBI;AAAAhB,IAAA,MAAAO,QAAAZ;AAAAK,IAAA,MAAAgB;AAAAhB,IAAA,MAAAiB;OAAAA,MAAAjB,EAAA;AAAA,QA1BNiB"}
1
+ {"version":3,"file":"PageForbiddenRoute.mjs","names":["React","PageStatus","useTranslation","PageForbiddenRoute","props","$","_c","title","statusCode","subheader","message","showButton","t","t0","defaultValue","t1","t2","t3","t4","t5"],"sources":["../../../src/routes/components/PageForbiddenRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { PageStatus } from './PageStatus';\nimport { useTranslation } from 'react-i18next';\n\nexport const PageForbiddenRoute = (props) => {\n const { title, statusCode, subheader, message, showButton } = props;\n const { t } = useTranslation();\n\n return (\n <PageStatus\n title={\n title ??\n t('routes.forbidden.title', { defaultValue: 'Access denied' })\n }\n statusCode={statusCode ?? '403'}\n iconName='shield'\n subheader={\n subheader ??\n t('routes.forbidden.subheader', {\n defaultValue: \"You don't have permission to view this page.\"\n })\n }\n message={\n message ??\n t('routes.forbidden.message', {\n defaultValue:\n 'If you think you should have access, contact your administrator.'\n })\n }\n to='/'\n buttonLabel={t('routes.backToHome', {\n defaultValue: 'Back to Home Page'\n })}\n showButton={showButton}\n />\n );\n};\n"],"mappings":";;;;;AAIA,MAAaG,sBAAqBC,UAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAChC,MAAA,EAAAC,OAAAC,YAAAC,WAAAC,SAAAC,eAA8DP;CAC9D,MAAA,EAAAQ,MAAcV,gBAAgB;CAAC,IAAAW;AAAA,KAAAR,EAAA,OAAAO,KAAAP,EAAA,OAAAE,OAAA;AAKzBM,OAAAN,SACAK,EAAE,0BAA0B,EAAAE,cAAgB,iBAAiB,CAAC;AAAAT,IAAA,KAAAO;AAAAP,IAAA,KAAAE;AAAAF,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAEpD,MAAAU,KAAAP,cAAA;CAAmB,IAAAQ;AAAA,KAAAX,EAAA,OAAAI,aAAAJ,EAAA,OAAAO,GAAA;AAG7BI,OAAAP,aACAG,EAAE,8BAA8B,EAAAE,cAChB,gDACf,CAAC;AAAAT,IAAA,KAAAI;AAAAJ,IAAA,KAAAO;AAAAP,IAAA,KAAAW;OAAAA,MAAAX,EAAA;CAAA,IAAAY;AAAA,KAAAZ,EAAA,OAAAK,WAAAL,EAAA,OAAAO,GAAA;AAGFK,OAAAP,WACAE,EAAE,4BAA4B,EAAAE,cAE1B,oEACH,CAAC;AAAAT,IAAA,KAAAK;AAAAL,IAAA,KAAAO;AAAAP,IAAA,KAAAY;OAAAA,MAAAZ,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAO,GAAA;AAGSM,OAAAN,EAAE,qBAAqB,EAAAE,cACpB,qBACf,CAAC;AAAAT,IAAA,KAAAO;AAAAP,IAAA,MAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,QAAAM,cAAAN,EAAA,QAAAQ,MAAAR,EAAA,QAAAU,MAAAV,EAAA,QAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;AAvBJC,OAAA,sBAAA,cAAC,YAAD;GAEI,OAAAN;GAGU,YAAAE;GACH,UAAA;GAEP,WAAAC;GAMA,SAAAC;GAMC,IAAA;GACU,aAAAC;GAGDP;GACZ,CAAA;AAAAN,IAAA,MAAAM;AAAAN,IAAA,MAAAQ;AAAAR,IAAA,MAAAU;AAAAV,IAAA,MAAAW;AAAAX,IAAA,MAAAY;AAAAZ,IAAA,MAAAa;AAAAb,IAAA,MAAAc;OAAAA,MAAAd,EAAA;AAAA,QAzBFc"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageNotFoundRoute.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,eAAO,MAAM,iBAAiB,yBAsB7B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PageNotFoundRoute.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,iBAAiB,yBAoB7B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,22 +1,15 @@
1
1
  import React from 'react';
2
- import { makeStyles } from '@material-ui/core';
3
2
  import { useTranslation } from 'react-i18next';
4
3
  import { PageStatus } from './PageStatus';
5
- const useStyles = makeStyles((theme) => ({
6
- root: {
7
- marginTop: theme.spacing(4)
8
- }
9
- }));
10
4
  export const PageNotFoundRoute = () => {
11
- const classes = useStyles();
12
5
  const { t } = useTranslation();
13
- return (React.createElement("div", { className: classes.root }, React.createElement(PageStatus, { statusCode: 404, title: t('routes.notFound.title', { defaultValue: 'Page Not Found' }), subheader: t('routes.notFound.subheader', {
14
- defaultValue: "Sorry, we can't find the page you are looking for."
6
+ return (React.createElement(PageStatus, { statusCode: 404, iconName: "search", title: t('routes.notFound.title', { defaultValue: 'Page not found' }), subheader: t('routes.notFound.subheader', {
7
+ defaultValue: "We can't find the page you're looking for."
15
8
  }), message: t('routes.notFound.message', {
16
- defaultValue: 'You may have typed the address incorrectly or you may have used an outdated link.'
9
+ defaultValue: 'It may have been moved or deleted, or the link may be out of date.'
17
10
  }), to: "/", buttonLabel: t('routes.backToHome', {
18
11
  defaultValue: 'Back to Home Page'
19
- }) })));
12
+ }) }));
20
13
  };
21
14
  export default PageNotFoundRoute;
22
15
  //# sourceMappingURL=PageNotFoundRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageNotFoundRoute.js","sourceRoot":"","sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE;QACJ,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC5B;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,IAAI,IAC1B,oBAAC,UAAU,IACT,UAAU,EAAE,GAAG,EACf,KAAK,EAAE,CAAC,CAAC,uBAAuB,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,EACrE,SAAS,EAAE,CAAC,CAAC,2BAA2B,EAAE;YACxC,YAAY,EAAE,oDAAoD;SACnE,CAAC,EACF,OAAO,EAAE,CAAC,CAAC,yBAAyB,EAAE;YACpC,YAAY,EACV,mFAAmF;SACtF,CAAC,EACF,EAAE,EAAC,GAAG,EACN,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC,GACF,CACE,CACP,CAAC;AAAA,CACH,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PageNotFoundRoute.js","sourceRoot":"","sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC;IACrC,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,CACL,oBAAC,UAAU,IACT,UAAU,EAAE,GAAG,EACf,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,CAAC,CAAC,uBAAuB,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,EACrE,SAAS,EAAE,CAAC,CAAC,2BAA2B,EAAE;YACxC,YAAY,EAAE,4CAA4C;SAC3D,CAAC,EACF,OAAO,EAAE,CAAC,CAAC,yBAAyB,EAAE;YACpC,YAAY,EACV,oEAAoE;SACvE,CAAC,EACF,EAAE,EAAC,GAAG,EACN,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC,GACF,CACH,CAAC;AAAA,CACH,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,63 +1,53 @@
1
1
  import { c } from "../../reactCompilerRuntime.mjs";
2
2
  import { PageStatus } from "./PageStatus.mjs";
3
3
  import React from "react";
4
- import { makeStyles } from "@material-ui/core";
5
4
  import { useTranslation } from "react-i18next";
6
5
  //#region src/routes/components/PageNotFoundRoute.jsx
7
- const useStyles = makeStyles((theme) => ({ root: { marginTop: theme.spacing(4) } }));
8
6
  const PageNotFoundRoute = () => {
9
- const $ = c(16);
10
- const classes = useStyles();
7
+ const $ = c(13);
11
8
  const { t } = useTranslation();
12
- const t0 = classes.root;
13
- let t1;
9
+ let t0;
14
10
  if ($[0] !== t) {
15
- t1 = t("routes.notFound.title", { defaultValue: "Page Not Found" });
11
+ t0 = t("routes.notFound.title", { defaultValue: "Page not found" });
16
12
  $[0] = t;
17
- $[1] = t1;
18
- } else t1 = $[1];
19
- let t2;
13
+ $[1] = t0;
14
+ } else t0 = $[1];
15
+ let t1;
20
16
  if ($[2] !== t) {
21
- t2 = t("routes.notFound.subheader", { defaultValue: "Sorry, we can't find the page you are looking for." });
17
+ t1 = t("routes.notFound.subheader", { defaultValue: "We can't find the page you're looking for." });
22
18
  $[2] = t;
23
- $[3] = t2;
24
- } else t2 = $[3];
25
- let t3;
19
+ $[3] = t1;
20
+ } else t1 = $[3];
21
+ let t2;
26
22
  if ($[4] !== t) {
27
- t3 = t("routes.notFound.message", { defaultValue: "You may have typed the address incorrectly or you may have used an outdated link." });
23
+ t2 = t("routes.notFound.message", { defaultValue: "It may have been moved or deleted, or the link may be out of date." });
28
24
  $[4] = t;
29
- $[5] = t3;
30
- } else t3 = $[5];
31
- let t4;
25
+ $[5] = t2;
26
+ } else t2 = $[5];
27
+ let t3;
32
28
  if ($[6] !== t) {
33
- t4 = t("routes.backToHome", { defaultValue: "Back to Home Page" });
29
+ t3 = t("routes.backToHome", { defaultValue: "Back to Home Page" });
34
30
  $[6] = t;
35
- $[7] = t4;
36
- } else t4 = $[7];
37
- let t5;
38
- if ($[8] !== t1 || $[9] !== t2 || $[10] !== t3 || $[11] !== t4) {
39
- t5 = /* @__PURE__ */ React.createElement(PageStatus, {
31
+ $[7] = t3;
32
+ } else t3 = $[7];
33
+ let t4;
34
+ if ($[8] !== t0 || $[9] !== t1 || $[10] !== t2 || $[11] !== t3) {
35
+ t4 = /* @__PURE__ */ React.createElement(PageStatus, {
40
36
  statusCode: 404,
41
- title: t1,
42
- subheader: t2,
43
- message: t3,
37
+ iconName: "search",
38
+ title: t0,
39
+ subheader: t1,
40
+ message: t2,
44
41
  to: "/",
45
- buttonLabel: t4
42
+ buttonLabel: t3
46
43
  });
47
- $[8] = t1;
48
- $[9] = t2;
49
- $[10] = t3;
50
- $[11] = t4;
51
- $[12] = t5;
52
- } else t5 = $[12];
53
- let t6;
54
- if ($[13] !== classes.root || $[14] !== t5) {
55
- t6 = /* @__PURE__ */ React.createElement("div", { className: t0 }, t5);
56
- $[13] = classes.root;
57
- $[14] = t5;
58
- $[15] = t6;
59
- } else t6 = $[15];
60
- return t6;
44
+ $[8] = t0;
45
+ $[9] = t1;
46
+ $[10] = t2;
47
+ $[11] = t3;
48
+ $[12] = t4;
49
+ } else t4 = $[12];
50
+ return t4;
61
51
  };
62
52
  //#endregion
63
53
  export { PageNotFoundRoute, PageNotFoundRoute as default };
@@ -1 +1 @@
1
- {"version":3,"file":"PageNotFoundRoute.mjs","names":["React","makeStyles","useTranslation","PageStatus","useStyles","theme","root","marginTop","spacing","PageNotFoundRoute","$","_c","classes","t","t0","t1","defaultValue","t2","t3","t4","t5","t6"],"sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PageStatus } from './PageStatus';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(4)\n }\n}));\n\nexport const PageNotFoundRoute = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n return (\n <div className={classes.root}>\n <PageStatus\n statusCode={404}\n title={t('routes.notFound.title', { defaultValue: 'Page Not Found' })}\n subheader={t('routes.notFound.subheader', {\n defaultValue: \"Sorry, we can't find the page you are looking for.\"\n })}\n message={t('routes.notFound.message', {\n defaultValue:\n 'You may have typed the address incorrectly or you may have used an outdated link.'\n })}\n to='/'\n buttonLabel={t('routes.backToHome', {\n defaultValue: 'Back to Home Page'\n })}\n />\n </div>\n );\n};\n\nexport default PageNotFoundRoute;\n"],"mappings":";;;;;;AAKA,MAAMI,YAAYH,YAAYI,WAAW,EACvCC,MAAM,EACJC,WAAWF,MAAMG,QAAQ,EAAC,EAC5B,EACD,EAAE;AAEH,MAAaC,0BAAoB;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAC/B,MAAAC,UAAgBR,WAAW;CAC3B,MAAA,EAAAS,MAAcX,gBAAgB;CAEZ,MAAAY,KAAAF,QAAON;CAAK,IAAAS;AAAA,KAAAL,EAAA,OAAAG,GAAA;AAGjBE,OAAAF,EAAE,yBAAyB,EAAAG,cAAgB,kBAAkB,CAAC;AAAAN,IAAA,KAAAG;AAAAH,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CAAA,IAAAO;AAAA,KAAAP,EAAA,OAAAG,GAAA;AAC1DI,OAAAJ,EAAE,6BAA6B,EAAAG,cAC1B,sDACf,CAAC;AAAAN,IAAA,KAAAG;AAAAH,IAAA,KAAAO;OAAAA,MAAAP,EAAA;CAAA,IAAAQ;AAAA,KAAAR,EAAA,OAAAG,GAAA;AACOK,OAAAL,EAAE,2BAA2B,EAAAG,cAElC,qFACH,CAAC;AAAAN,IAAA,KAAAG;AAAAH,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAAA,IAAAS;AAAA,KAAAT,EAAA,OAAAG,GAAA;AAEWM,OAAAN,EAAE,qBAAqB,EAAAG,cACpB,qBACf,CAAC;AAAAN,IAAA,KAAAG;AAAAH,IAAA,KAAAS;OAAAA,MAAAT,EAAA;CAAA,IAAAU;AAAA,KAAAV,EAAA,OAAAK,MAAAL,EAAA,OAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAS,IAAA;AAbJC,OAAA,sBAAA,cAAC,YAAD;GACc,YAAA;GACL,OAAAL;GACI,WAAAE;GAGF,SAAAC;GAIN,IAAA;GACU,aAAAC;GAGb,CAAA;AAAAT,IAAA,KAAAK;AAAAL,IAAA,KAAAO;AAAAP,IAAA,MAAAQ;AAAAR,IAAA,MAAAS;AAAAT,IAAA,MAAAU;OAAAA,MAAAV,EAAA;CAAA,IAAAW;AAAA,KAAAX,EAAA,QAAAE,QAAAN,QAAAI,EAAA,QAAAU,IAAA;AAfJC,OAAA,sBAAA,cAAA,OAAA,EAAgB,WAAAP,IAgBV,EAfJM,GAeI;AAAAV,IAAA,MAAAE,QAAAN;AAAAI,IAAA,MAAAU;AAAAV,IAAA,MAAAW;OAAAA,MAAAX,EAAA;AAAA,QAhBNW"}
1
+ {"version":3,"file":"PageNotFoundRoute.mjs","names":["React","useTranslation","PageStatus","PageNotFoundRoute","$","_c","t","t0","defaultValue","t1","t2","t3","t4"],"sources":["../../../src/routes/components/PageNotFoundRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PageStatus } from './PageStatus';\n\nexport const PageNotFoundRoute = () => {\n const { t } = useTranslation();\n return (\n <PageStatus\n statusCode={404}\n iconName='search'\n title={t('routes.notFound.title', { defaultValue: 'Page not found' })}\n subheader={t('routes.notFound.subheader', {\n defaultValue: \"We can't find the page you're looking for.\"\n })}\n message={t('routes.notFound.message', {\n defaultValue:\n 'It may have been moved or deleted, or the link may be out of date.'\n })}\n to='/'\n buttonLabel={t('routes.backToHome', {\n defaultValue: 'Back to Home Page'\n })}\n />\n );\n};\n\nexport default PageNotFoundRoute;\n"],"mappings":";;;;;AAIA,MAAaG,0BAAoB;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAC/B,MAAA,EAAAC,MAAcL,gBAAgB;CAAC,IAAAM;AAAA,KAAAH,EAAA,OAAAE,GAAA;AAKpBC,OAAAD,EAAE,yBAAyB,EAAAE,cAAgB,kBAAkB,CAAC;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAAA,IAAAK;AAAA,KAAAL,EAAA,OAAAE,GAAA;AAC1DG,OAAAH,EAAE,6BAA6B,EAAAE,cAC1B,8CACf,CAAC;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CAAA,IAAAM;AAAA,KAAAN,EAAA,OAAAE,GAAA;AACOI,OAAAJ,EAAE,2BAA2B,EAAAE,cAElC,sEACH,CAAC;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAM;OAAAA,MAAAN,EAAA;CAAA,IAAAO;AAAA,KAAAP,EAAA,OAAAE,GAAA;AAEWK,OAAAL,EAAE,qBAAqB,EAAAE,cACpB,qBACf,CAAC;AAAAJ,IAAA,KAAAE;AAAAF,IAAA,KAAAO;OAAAA,MAAAP,EAAA;CAAA,IAAAQ;AAAA,KAAAR,EAAA,OAAAG,MAAAH,EAAA,OAAAK,MAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAO,IAAA;AAdJC,OAAA,sBAAA,cAAC,YAAD;GACc,YAAA;GACH,UAAA;GACF,OAAAL;GACI,WAAAE;GAGF,SAAAC;GAIN,IAAA;GACU,aAAAC;GAGb,CAAA;AAAAP,IAAA,KAAAG;AAAAH,IAAA,KAAAK;AAAAL,IAAA,MAAAM;AAAAN,IAAA,MAAAO;AAAAP,IAAA,MAAAQ;OAAAA,MAAAR,EAAA;AAAA,QAfFQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageStatus.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageStatus.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA4C1B,eAAO,MAAM,UAAU,mCAwDtB,CAAC"}
1
+ {"version":3,"file":"PageStatus.d.ts","sourceRoot":"","sources":["../../../src/routes/components/PageStatus.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,UAAU,mCA+CtB,CAAC"}
@@ -1,43 +1,20 @@
1
1
  import React from 'react';
2
- import { Button, makeStyles, Typography, Card, CardContent, } from '@material-ui/core';
3
- import { Link } from 'react-router-dom';
4
- const useStyles = makeStyles(theme => ({
5
- root: {
6
- display: 'flex',
7
- justifyContent: 'center',
8
- alignItems: 'center',
9
- },
10
- card: {
11
- background: theme.palette.primary.main,
12
- minWidth: props => props === null || props === void 0 ? void 0 : props.minWidth,
13
- minHeight: props => props === null || props === void 0 ? void 0 : props.minHeight,
14
- },
15
- subHeader: {
16
- marginTop: theme.spacing(3),
17
- },
18
- content: {
19
- color: theme.palette.getContrastText(theme.palette.primary.main),
20
- },
21
- header: {
22
- textAlign: 'center',
23
- marginTop: theme.spacing(2),
24
- },
25
- button: {
26
- marginTop: theme.spacing(8),
27
- display: 'flex',
28
- justifyContent: 'center',
29
- },
30
- largeDisplay: {
31
- fontSize: '4rem',
32
- color: theme.palette.getContrastText(theme.palette.primary.main),
33
- },
34
- message: {
35
- marginTop: theme.spacing(3),
36
- },
37
- }));
2
+ import { useHistory } from 'react-router-dom';
3
+ import { UdpButton, UdpEmptyState } from '../../UI/fluent-web-components';
38
4
  export const PageStatus = props => {
39
- const classes = useStyles(props);
40
- const { title, subheader, message, to, buttonLabel, statusCode, showButton = true, } = props;
41
- return (React.createElement("div", { className: classes.root }, React.createElement(Card, { className: classes.card }, React.createElement(CardContent, null, React.createElement("div", { className: classes.content }, React.createElement("div", { className: classes.header }, statusCode && (React.createElement("div", null, React.createElement(Typography, { className: classes.largeDisplay }, statusCode))), React.createElement("div", { className: classes.subHeader }, React.createElement(Typography, { variant: "h6" }, title))), React.createElement("div", { className: classes.message }, React.createElement(Typography, { variant: "overline", style: { fontWeight: 700 } }, subheader), React.createElement("div", { style: { textAlign: 'left' } }, React.createElement(Typography, { variant: "caption" }, message))), showButton && (React.createElement("div", { className: classes.button }, React.createElement(Button, { component: Link, to: to, variant: "contained", color: "secondary", id: `udpRecord-PageStatus-${buttonLabel}`, udprecordid: `udpRecord-PageStatus-${buttonLabel}` }, buttonLabel))))))));
5
+ const { title, subheader, message, to, buttonLabel, statusCode, iconName = 'error', showButton = true, } = props;
6
+ const history = useHistory();
7
+ return (
8
+ // The shell gives pages no definite height (scrolling lives in the outer
9
+ // shell-content region), so center against the viewport instead: 60dvh
10
+ // lands the block at optical center, slightly above true center.
11
+ React.createElement("div", { style: {
12
+ display: 'flex',
13
+ justifyContent: 'center',
14
+ alignItems: 'center',
15
+ minHeight: '60dvh',
16
+ padding: 32,
17
+ boxSizing: 'border-box',
18
+ } }, React.createElement(UdpEmptyState, { size: "large", iconName: iconName, heading: statusCode ? `${statusCode} — ${title}` : title, description: [subheader, message].filter(Boolean).join(' ') }, showButton && (React.createElement(UdpButton, { slot: "action", appearance: "primary", id: `udpRecord-PageStatus-${buttonLabel}`, udprecordid: `udpRecord-PageStatus-${buttonLabel}`, onClick: () => history.push(to) }, buttonLabel)))));
42
19
  };
43
20
  //# sourceMappingURL=PageStatus.js.map