@commercetools-frontend/application-shell 0.0.0-CRAFT-1791-20251006162610
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/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/application-entry-point-10a5e1a5.esm.js +82 -0
- package/dist/application-entry-point-8c4b8e53.cjs.prod.js +86 -0
- package/dist/application-entry-point-c87294b0.cjs.dev.js +96 -0
- package/dist/box-09bf50e1.cjs.prod.js +30 -0
- package/dist/box-4857aa65.cjs.dev.js +30 -0
- package/dist/box-9cf180c1.esm.js +17 -0
- package/dist/cart-645074db.cjs.prod.js +30 -0
- package/dist/cart-b0044279.cjs.dev.js +30 -0
- package/dist/cart-bb491ca1.esm.js +17 -0
- package/dist/commercetools-frontend-application-shell.cjs.d.ts +2 -0
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +214 -0
- package/dist/commercetools-frontend-application-shell.cjs.js +7 -0
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +214 -0
- package/dist/commercetools-frontend-application-shell.esm.js +82 -0
- package/dist/connected-square-2d046cb8.cjs.prod.js +30 -0
- package/dist/connected-square-a2fea344.cjs.dev.js +30 -0
- package/dist/connected-square-fe6a790f.esm.js +17 -0
- package/dist/custom-view-dev-host-864a12e2.cjs.dev.js +197 -0
- package/dist/custom-view-dev-host-8e2f6aa7.cjs.prod.js +197 -0
- package/dist/custom-view-dev-host-d9c410aa.esm.js +186 -0
- package/dist/declarations/src/components/application-page-title/application-page-title.d.ts +24 -0
- package/dist/declarations/src/components/application-page-title/index.d.ts +1 -0
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +45 -0
- package/dist/declarations/src/components/application-shell/index.d.ts +1 -0
- package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +17 -0
- package/dist/declarations/src/components/application-shell-provider/index.d.ts +1 -0
- package/dist/declarations/src/components/application-shell-provider/utils.d.ts +3 -0
- package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +12 -0
- package/dist/declarations/src/components/configure-intl-provider/index.d.ts +1 -0
- package/dist/declarations/src/components/custom-view-shell/custom-view-shell.d.ts +12 -0
- package/dist/declarations/src/components/custom-view-shell/index.d.ts +1 -0
- package/dist/declarations/src/components/error-apologizer/index.d.ts +5 -0
- package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +16 -0
- package/dist/declarations/src/components/fetch-user/index.d.ts +1 -0
- package/dist/declarations/src/components/inject-reducers/index.d.ts +1 -0
- package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +13 -0
- package/dist/declarations/src/components/redirect-to-login/index.d.ts +5 -0
- package/dist/declarations/src/components/redirect-to-logout/index.d.ts +4 -0
- package/dist/declarations/src/components/route-catch-all/index.d.ts +2 -0
- package/dist/declarations/src/components/setup-flop-flip-provider/index.d.ts +1 -0
- package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +17 -0
- package/dist/declarations/src/components/suspended-route/index.d.ts +3 -0
- package/dist/declarations/src/components/suspended-route/protected-route.d.ts +7 -0
- package/dist/declarations/src/components/suspended-route/suspended-protected-route.d.ts +7 -0
- package/dist/declarations/src/components/suspended-route/suspended-route.d.ts +10 -0
- package/dist/declarations/src/configure-store.d.ts +22 -0
- package/dist/declarations/src/export-types.d.ts +8 -0
- package/dist/declarations/src/hooks/use-routes-creator/index.d.ts +1 -0
- package/dist/declarations/src/hooks/use-routes-creator/use-routes-creator.d.ts +22 -0
- package/dist/declarations/src/index.d.ts +33 -0
- package/dist/declarations/src/ssr/index.d.ts +2 -0
- package/dist/declarations/src/test-utils/custom-views-utils.d.ts +21 -0
- package/dist/declarations/src/test-utils/index.d.ts +2 -0
- package/dist/declarations/src/test-utils/test-utils.d.ts +87 -0
- package/dist/declarations/src/types/generated/mc.d.ts +742 -0
- package/dist/declarations/src/utils/get-previous-project-key/get-previous-project-key.d.ts +2 -0
- package/dist/declarations/src/utils/get-previous-project-key/index.d.ts +1 -0
- package/dist/declarations/src/utils/oidc.d.ts +10 -0
- package/dist/declarations/src/utils/setup-global-error-listener/index.d.ts +1 -0
- package/dist/declarations/src/utils/setup-global-error-listener/setup-global-error-listener.d.ts +1 -0
- package/dist/declarations/src/version.d.ts +2 -0
- package/dist/declarations-connectors/dist/commercetools-frontend-application-shell-connectors.cjs.d.ts +2 -0
- package/dist/declarations-connectors/src/components/application-context/application-context.d.ts +109 -0
- package/dist/declarations-connectors/src/components/application-context/index.d.ts +10 -0
- package/dist/declarations-connectors/src/components/application-context/normalizers.d.ts +48 -0
- package/dist/declarations-connectors/src/components/custom-view-context/custom-view-context.d.ts +19 -0
- package/dist/declarations-connectors/src/components/custom-view-context/index.d.ts +4 -0
- package/dist/declarations-connectors/src/components/project-extension-image-regex/index.d.ts +3 -0
- package/dist/declarations-connectors/src/components/project-extension-image-regex/project-extension-image-regex.d.ts +37 -0
- package/dist/declarations-connectors/src/configure-apollo.d.ts +7 -0
- package/dist/declarations-connectors/src/export-types.d.ts +21 -0
- package/dist/declarations-connectors/src/hooks/apollo-hooks/apollo-hooks.d.ts +12 -0
- package/dist/declarations-connectors/src/hooks/apollo-hooks/index.d.ts +1 -0
- package/dist/declarations-connectors/src/hooks/custom-views/use-custom-view-parent-data-refresher.d.ts +5 -0
- package/dist/declarations-connectors/src/index.d.ts +12 -0
- package/dist/declarations-connectors/src/types/generated/mc.d.ts +742 -0
- package/dist/declarations-connectors/src/types/generated/settings.d.ts +2116 -0
- package/dist/declarations-connectors/src/utils/apollo-client-runtime-cache.d.ts +4 -0
- package/dist/declarations-connectors/src/utils/apollo-context.d.ts +16 -0
- package/dist/declarations-connectors/src/utils/get-correlation-id/get-correlation-id.d.ts +3 -0
- package/dist/declarations-connectors/src/utils/get-correlation-id/index.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/get-mc-api-url/get-mc-api-url.d.ts +3 -0
- package/dist/declarations-connectors/src/utils/get-mc-api-url/index.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/http-client.d.ts +107 -0
- package/dist/declarations-connectors/src/utils/index.d.ts +7 -0
- package/dist/declarations-connectors/src/utils/logger.d.ts +10 -0
- package/dist/declarations-connectors/src/utils/oidc-storage.d.ts +12 -0
- package/dist/declarations-connectors/src/utils/select-project-key-from-url/index.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/select-project-key-from-url/select-project-key-from-url.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/select-team-id-from-storage/index.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/select-team-id-from-storage/select-team-id-from-storage.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/select-user-id/index.d.ts +1 -0
- package/dist/declarations-connectors/src/utils/select-user-id/select-user-id.d.ts +1 -0
- package/dist/declarations-connectors/src/version.d.ts +2 -0
- package/dist/error-apologizer-76f087f4.esm.js +39 -0
- package/dist/error-apologizer-84dc825c.cjs.prod.js +53 -0
- package/dist/error-apologizer-f6793491.cjs.dev.js +53 -0
- package/dist/gear-4f7cde98.cjs.prod.js +30 -0
- package/dist/gear-ee90ba83.esm.js +17 -0
- package/dist/gear-f2668579.cjs.dev.js +30 -0
- package/dist/get-mc-origin-8f7a578c.cjs.prod.js +51 -0
- package/dist/get-mc-origin-a86dff20.cjs.dev.js +51 -0
- package/dist/get-mc-origin-fecfee07.esm.js +44 -0
- package/dist/heart-01f01038.cjs.prod.js +30 -0
- package/dist/heart-86f780f3.esm.js +17 -0
- package/dist/heart-e49dd92a.cjs.dev.js +30 -0
- package/dist/index-245e2980.cjs.prod.js +237 -0
- package/dist/index-60cd194b.cjs.prod.js +2053 -0
- package/dist/index-614accc4.cjs.dev.js +237 -0
- package/dist/index-86039df7.esm.js +211 -0
- package/dist/index-8637a317.esm.js +2072 -0
- package/dist/index-f0f4fbcd.cjs.dev.js +2134 -0
- package/dist/list-with-search-027ab8eb.cjs.dev.js +30 -0
- package/dist/list-with-search-6462447e.cjs.prod.js +30 -0
- package/dist/list-with-search-d2901e34.esm.js +17 -0
- package/dist/location-537e0660.cjs.prod.js +32 -0
- package/dist/location-c835b8df.cjs.dev.js +32 -0
- package/dist/location-f21dbc25.esm.js +30 -0
- package/dist/navbar-022383bd.cjs.dev.js +1364 -0
- package/dist/navbar-844d350d.esm.js +1332 -0
- package/dist/navbar-acc2cd1b.cjs.prod.js +1225 -0
- package/dist/oidc-8827f9fe.cjs.dev.js +98 -0
- package/dist/oidc-b2520905.esm.js +84 -0
- package/dist/oidc-callback-2800b1f0.cjs.prod.js +243 -0
- package/dist/oidc-callback-5213e755.cjs.dev.js +246 -0
- package/dist/oidc-callback-619f18d9.esm.js +232 -0
- package/dist/oidc-d74e6aa2.cjs.prod.js +98 -0
- package/dist/paperclip-005ec544.cjs.dev.js +30 -0
- package/dist/paperclip-a820ee87.esm.js +17 -0
- package/dist/paperclip-fe72a70d.cjs.prod.js +30 -0
- package/dist/plugin-81ae1044.cjs.prod.js +30 -0
- package/dist/plugin-c7bf9e53.esm.js +17 -0
- package/dist/plugin-feb22442.cjs.dev.js +30 -0
- package/dist/project-container-22619059.cjs.prod.js +378 -0
- package/dist/project-container-96f2d671.cjs.dev.js +378 -0
- package/dist/project-container-ef2dfb60.esm.js +357 -0
- package/dist/project-expired-8c4cd8a0.cjs.dev.js +137 -0
- package/dist/project-expired-9994ed78.cjs.prod.js +137 -0
- package/dist/project-expired-dc881501.esm.js +123 -0
- package/dist/project-not-found-3933434f.cjs.prod.js +130 -0
- package/dist/project-not-found-3a76e8d7.cjs.dev.js +130 -0
- package/dist/project-not-found-57a3a216.esm.js +116 -0
- package/dist/project-not-initialized-2eebb2c7.esm.js +123 -0
- package/dist/project-not-initialized-3cfd0aed.cjs.dev.js +137 -0
- package/dist/project-not-initialized-91af2604.cjs.prod.js +137 -0
- package/dist/project-suspended-0c98a90e.cjs.dev.js +135 -0
- package/dist/project-suspended-dddbda8b.cjs.prod.js +135 -0
- package/dist/project-suspended-eeb5f62e.esm.js +121 -0
- package/dist/quick-access-1475bad4.cjs.dev.js +1893 -0
- package/dist/quick-access-ba70983f.cjs.prod.js +1875 -0
- package/dist/quick-access-d2f9b458.esm.js +1865 -0
- package/dist/redirect-to-login-12f467b8.cjs.prod.js +117 -0
- package/dist/redirect-to-login-2944c890.esm.js +115 -0
- package/dist/redirect-to-login-3bee13ba.cjs.dev.js +117 -0
- package/dist/redirect-to-logout-4587f4ed.cjs.dev.js +126 -0
- package/dist/redirect-to-logout-7bb3eb45.esm.js +113 -0
- package/dist/redirect-to-logout-a96985ce.cjs.prod.js +126 -0
- package/dist/redirect-to-project-create-9249e554.esm.js +60 -0
- package/dist/redirect-to-project-create-e4ff7797.cjs.prod.js +68 -0
- package/dist/redirect-to-project-create-f4f01842.cjs.dev.js +68 -0
- package/dist/redirector-0c72d0a4.cjs.prod.js +61 -0
- package/dist/redirector-72ccfbc2.cjs.dev.js +61 -0
- package/dist/redirector-d856975f.esm.js +46 -0
- package/dist/requests-in-flight-loader-0594117d.cjs.dev.js +122 -0
- package/dist/requests-in-flight-loader-59e8fb86.esm.js +107 -0
- package/dist/requests-in-flight-loader-a8288906.cjs.prod.js +122 -0
- package/dist/rocket-3372731a.cjs.dev.js +30 -0
- package/dist/rocket-bacf24be.esm.js +17 -0
- package/dist/rocket-cb99be06.cjs.prod.js +30 -0
- package/dist/route-catch-all-7803b1fd.esm.js +42 -0
- package/dist/route-catch-all-8e71a93c.cjs.prod.js +44 -0
- package/dist/route-catch-all-b979e1fd.cjs.dev.js +44 -0
- package/dist/service-page-project-switcher-37faf2fb.cjs.prod.js +37 -0
- package/dist/service-page-project-switcher-47296fb1.esm.js +39 -0
- package/dist/service-page-project-switcher-6cdff717.cjs.dev.js +45 -0
- package/dist/speedometer-26f52e73.cjs.prod.js +30 -0
- package/dist/speedometer-4c8e0b9c.esm.js +17 -0
- package/dist/speedometer-c1ec5a1d.cjs.dev.js +30 -0
- package/dist/star-6b9a91d2.cjs.dev.js +30 -0
- package/dist/star-af90a9c6.esm.js +17 -0
- package/dist/star-e4902bbb.cjs.prod.js +30 -0
- package/dist/tag-multi-1c065f61.cjs.prod.js +30 -0
- package/dist/tag-multi-4c2742de.esm.js +17 -0
- package/dist/tag-multi-abef3e15.cjs.dev.js +30 -0
- package/dist/tree-structure-3ec98cce.cjs.prod.js +30 -0
- package/dist/tree-structure-96ab0b7e.cjs.dev.js +30 -0
- package/dist/tree-structure-ca0498a0.esm.js +17 -0
- package/dist/use-applications-menu-14a5a1f4.cjs.prod.js +172 -0
- package/dist/use-applications-menu-1514af11.esm.js +157 -0
- package/dist/use-applications-menu-823a2492.cjs.dev.js +172 -0
- package/dist/use-is-served-by-proxy-28f19a6f.cjs.dev.js +10 -0
- package/dist/use-is-served-by-proxy-480e8de8.cjs.prod.js +10 -0
- package/dist/use-is-served-by-proxy-a383da4b.esm.js +8 -0
- package/dist/user-filled-26f333b2.cjs.prod.js +30 -0
- package/dist/user-filled-34aeebcc.cjs.dev.js +30 -0
- package/dist/user-filled-61d8a81b.esm.js +17 -0
- package/dist/user-settings-menu-6113cdd3.cjs.dev.js +338 -0
- package/dist/user-settings-menu-d75f4958.cjs.prod.js +326 -0
- package/dist/user-settings-menu-f98bea89.esm.js +313 -0
- package/dist/world-22189397.cjs.prod.js +30 -0
- package/dist/world-500baeb2.cjs.dev.js +30 -0
- package/dist/world-523efd61.esm.js +17 -0
- package/package.json +144 -0
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.d.ts +2 -0
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +20 -0
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.js +7 -0
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +20 -0
- package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +4 -0
- package/ssr/package.json +4 -0
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.d.ts +2 -0
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +554 -0
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.js +7 -0
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +554 -0
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +502 -0
- package/test-utils/package.json +4 -0
|
@@ -0,0 +1,1225 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
5
|
+
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
6
|
+
var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
|
|
7
|
+
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
8
|
+
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
9
|
+
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
10
|
+
var _Number$isFinite = require('@babel/runtime-corejs3/core-js-stable/number/is-finite');
|
|
11
|
+
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
12
|
+
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
13
|
+
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
14
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
15
|
+
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
|
|
16
|
+
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
|
|
17
|
+
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
18
|
+
var react$1 = require('react');
|
|
19
|
+
var snakeCase = require('lodash/snakeCase');
|
|
20
|
+
var reactIntl = require('react-intl');
|
|
21
|
+
var reactRouterDom = require('react-router-dom');
|
|
22
|
+
var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
|
|
23
|
+
var LogoSVG = require('@commercetools-frontend/assets/logos/commercetools_small-logo.svg');
|
|
24
|
+
var constants = require('@commercetools-frontend/constants');
|
|
25
|
+
var icons = require('@commercetools-uikit/icons');
|
|
26
|
+
var Spacings = require('@commercetools-uikit/spacings');
|
|
27
|
+
var _styled = require('@emotion/styled/base');
|
|
28
|
+
var react = require('@emotion/react');
|
|
29
|
+
var applicationComponents = require('@commercetools-frontend/application-components');
|
|
30
|
+
var designSystem = require('@commercetools-uikit/design-system');
|
|
31
|
+
var oidc = require('./oidc-d74e6aa2.cjs.prod.js');
|
|
32
|
+
var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
33
|
+
var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
|
|
34
|
+
var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
|
|
35
|
+
var reactBroadcast = require('@flopflip/react-broadcast');
|
|
36
|
+
var classnames = require('classnames');
|
|
37
|
+
var MissingImageSvg = require('@commercetools-frontend/assets/images/diagonal-line.svg');
|
|
38
|
+
var permissions = require('@commercetools-frontend/permissions');
|
|
39
|
+
var InlineSvg = require('@commercetools-uikit/icons/inline-svg');
|
|
40
|
+
var location = require('./location-537e0660.cjs.prod.js');
|
|
41
|
+
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
42
|
+
var _keysInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/keys');
|
|
43
|
+
var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
|
|
44
|
+
var isNil = require('lodash/isNil');
|
|
45
|
+
var throttle = require('lodash/throttle');
|
|
46
|
+
var useApplicationsMenu = require('./use-applications-menu-14a5a1f4.cjs.prod.js');
|
|
47
|
+
require('@apollo/client');
|
|
48
|
+
require('@commercetools-frontend/l10n');
|
|
49
|
+
|
|
50
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
51
|
+
|
|
52
|
+
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
53
|
+
var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
|
|
54
|
+
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
55
|
+
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
56
|
+
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
57
|
+
var _Number$isFinite__default = /*#__PURE__*/_interopDefault(_Number$isFinite);
|
|
58
|
+
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
59
|
+
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
60
|
+
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
61
|
+
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
62
|
+
var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
|
|
63
|
+
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
64
|
+
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
65
|
+
var snakeCase__default = /*#__PURE__*/_interopDefault(snakeCase);
|
|
66
|
+
var LogoSVG__default = /*#__PURE__*/_interopDefault(LogoSVG);
|
|
67
|
+
var Spacings__default = /*#__PURE__*/_interopDefault(Spacings);
|
|
68
|
+
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
69
|
+
var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
|
|
70
|
+
var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
|
|
71
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
72
|
+
var MissingImageSvg__default = /*#__PURE__*/_interopDefault(MissingImageSvg);
|
|
73
|
+
var InlineSvg__default = /*#__PURE__*/_interopDefault(InlineSvg);
|
|
74
|
+
var _keysInstanceProperty__default = /*#__PURE__*/_interopDefault(_keysInstanceProperty);
|
|
75
|
+
var _sortInstanceProperty__default = /*#__PURE__*/_interopDefault(_sortInstanceProperty);
|
|
76
|
+
var isNil__default = /*#__PURE__*/_interopDefault(isNil);
|
|
77
|
+
var throttle__default = /*#__PURE__*/_interopDefault(throttle);
|
|
78
|
+
|
|
79
|
+
const IconWrapper = /*#__PURE__*/_styled__default["default"]("div", {
|
|
80
|
+
target: "e1wv1pdj3"
|
|
81
|
+
} )({
|
|
82
|
+
name: "ex9e0f",
|
|
83
|
+
styles: "width:auto;display:flex;justify-content:center"
|
|
84
|
+
} );
|
|
85
|
+
const Icon = /*#__PURE__*/_styled__default["default"]("div", {
|
|
86
|
+
target: "e1wv1pdj2"
|
|
87
|
+
} )("width:", oidc.NAVBAR.iconSize, ";height:", oidc.NAVBAR.iconSize, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";>svg *:not([fill='none']){fill:", designSystem.designTokens.colorSurface, ";}" + ("" ));
|
|
88
|
+
const ItemIconText = /*#__PURE__*/_styled__default["default"]("div", {
|
|
89
|
+
target: "e1wv1pdj1"
|
|
90
|
+
} )({
|
|
91
|
+
name: "192s9p1",
|
|
92
|
+
styles: "display:flex;flex-direction:row;justify-content:center;align-items:center"
|
|
93
|
+
} );
|
|
94
|
+
const Title = /*#__PURE__*/_styled__default["default"]("div", {
|
|
95
|
+
target: "e1wv1pdj0"
|
|
96
|
+
} )("flex:1;font-weight:600;font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";color:", designSystem.designTokens.colorNeutral, ";opacity:0;transition:", oidc.NAVBAR.leftNavigationTransition, ";text-align:left;text-decoration:none;z-index:1;" + ("" ));
|
|
97
|
+
|
|
98
|
+
const getSubmenuPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, submenuVerticalPosition) => /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":", submenuVerticalPosition, "px;" + ("" ), "" );
|
|
99
|
+
var _ref4 = {
|
|
100
|
+
name: "abcix4",
|
|
101
|
+
styles: "top:0"
|
|
102
|
+
} ;
|
|
103
|
+
var _ref5 = {
|
|
104
|
+
name: "8tapst",
|
|
105
|
+
styles: "bottom:0"
|
|
106
|
+
} ;
|
|
107
|
+
const getContainerPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, isSublistActiveWhileIsMenuExpanded, isSublistActiveWhileIsMenuCollapsed) => [isSublistActiveWhileIsMenuCollapsed && /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":-", oidc.NAVBAR.itemSize, ";" + ("" ), "" ), isSublistActiveWhileIsMenuExpanded && isSubmenuAboveMenuItem && _ref5, isSublistActiveWhileIsMenuExpanded && !isSubmenuAboveMenuItem && _ref4];
|
|
108
|
+
const fadeIn = react.keyframes`
|
|
109
|
+
from {opacity: 0;}
|
|
110
|
+
to { opacity: 1;}
|
|
111
|
+
`;
|
|
112
|
+
var _ref3 = {
|
|
113
|
+
name: "eivff4",
|
|
114
|
+
styles: "display:none"
|
|
115
|
+
} ;
|
|
116
|
+
const Expander = /*#__PURE__*/_styled__default["default"]("li", {
|
|
117
|
+
target: "e1i568cv8"
|
|
118
|
+
} )("display:flex;align-items:center;justify-content:center;background:", designSystem.designTokens.colorPrimary10, ";padding:", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing25, ";", props => !props.isVisible && _ref3, "::before{content:'';position:absolute;top:", oidc.NAVBAR.itemHeight, ";height:1px;background:rgba(255, 255, 255, 0.5);width:calc(100% - 2 * ", designSystem.designTokens.spacing30, ");}" + ("" ));
|
|
119
|
+
const ExpanderIcon = /*#__PURE__*/_styled__default["default"]("div", {
|
|
120
|
+
target: "e1i568cv7"
|
|
121
|
+
} )("height:", oidc.NAVBAR.expanderSize, ";width:", oidc.NAVBAR.expanderSize, ";border-radius:", designSystem.designTokens.borderRadius4, ";padding:", designSystem.designTokens.spacing20, ";background:rgba(255, 255, 255, 0.2);display:flex;justify-content:center;align-items:center;:hover,:focus{background:rgba(255, 255, 255, 0.3);cursor:pointer;}" + ("" ));
|
|
122
|
+
const LeftNavigation = /*#__PURE__*/_styled__default["default"]("nav", {
|
|
123
|
+
target: "e1i568cv6"
|
|
124
|
+
} )("display:grid;width:", oidc.NAVBAR.widthLeftNavigation, ";background:", applicationComponents.designTokens.backgroundColorForNavbar, ";height:100%;grid-template-rows:56px 1fr;transition:", oidc.NAVBAR.leftNavigationTransition, ";" + ("" ));
|
|
125
|
+
const TextLinkSublistWrapper = /*#__PURE__*/_styled__default["default"]("div", {
|
|
126
|
+
target: "e1i568cv5"
|
|
127
|
+
} )({
|
|
128
|
+
name: "khglpi",
|
|
129
|
+
styles: "display:flex;flex-direction:column;position:relative;min-height:0"
|
|
130
|
+
} );
|
|
131
|
+
const NavlinkClickableContent = /*#__PURE__*/_styled__default["default"]("div", {
|
|
132
|
+
target: "e1i568cv4"
|
|
133
|
+
} )("height:100%;width:100%;display:block;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;transition:all 150ms ease-out;position:relative;left:calc(-1 * ", designSystem.designTokens.spacing20, ");" + ("" ));
|
|
134
|
+
const listStyles = {
|
|
135
|
+
name: "19z1op4",
|
|
136
|
+
styles: "margin:0;padding:0;display:flex;flex-direction:column;min-height:0;flex:1 1 0"
|
|
137
|
+
} ;
|
|
138
|
+
const sublistStyles = /*#__PURE__*/react.css("padding:", designSystem.designTokens.spacing30, ";font-weight:", designSystem.designTokens.fontWeight400, ";font-size:", designSystem.designTokens.fontSize20, ";background-color:", designSystem.designTokens.colorAccent10, ";left:", oidc.NAVBAR.sublistIndentationWhenCollapsed, ";z-index:-1;list-style:none;position:fixed;display:none;" + ("" ), "" );
|
|
139
|
+
var _ref2 = {
|
|
140
|
+
name: "6dhm9o",
|
|
141
|
+
styles: "visibility:hidden"
|
|
142
|
+
} ;
|
|
143
|
+
const MenuList = /*#__PURE__*/_styled__default["default"]("ul", {
|
|
144
|
+
target: "e1i568cv3"
|
|
145
|
+
} )(props => [props.level === 1 && listStyles, getSubmenuPositionBasedOnMenuItemPosition(props.isSubmenuAboveMenuItem, props.submenuVerticalPosition), props.level === 2 && sublistStyles,
|
|
146
|
+
// prevent glitchy behavior during the initial render when the submenu's vertical position is evaluated as 0
|
|
147
|
+
props.submenuVerticalPosition === 0 && _ref2, (props.isSublistActiveWhileIsMenuExpanded || props.isSublistCollapsedAndActive || props.isSublistCollapsedAndActiveAndAbove) && /*#__PURE__*/react.css("opacity:0;display:none;text-align:left;background-color:", designSystem.designTokens.colorAccent20, ";::before{content:'';position:absolute;display:block;width:calc(", oidc.NAVBAR.sublistWidth, " + ", designSystem.designTokens.spacing20, ");height:", oidc.NAVBAR.itemSize, ";left:calc(-1 * ", designSystem.designTokens.spacing20, ");", getContainerPositionBasedOnMenuItemPosition(props.isSubmenuAboveMenuItem, props.isSublistActiveWhileIsMenuExpanded, props.isSublistActiveWhileIsMenuCollapsed), ";}" + ("" ), "" )], " & .highlighted,& .highlighted ", Title, "{color:", designSystem.designTokens.colorSurface, "!important;font-weight:", designSystem.designTokens.fontWeight600, ";}" + ("" ));
|
|
148
|
+
const SublistItem = /*#__PURE__*/_styled__default["default"]("li", {
|
|
149
|
+
target: "e1i568cv2"
|
|
150
|
+
} )("display:flex;align-items:center;align-self:stretch;border-radius:", designSystem.designTokens.borderRadius4, ";", props => [props.isActive && /*#__PURE__*/react.css("background:", designSystem.designTokens.colorPrimary40, ";" + ("" ), "" ), !props.isActive && /*#__PURE__*/react.css(":hover,:focus-within{color:", designSystem.designTokens.colorSurface, ";font-weight:", designSystem.designTokens.fontWeight600, ";border-radius:", designSystem.designTokens.borderRadius4, ";background:", designSystem.designTokens.colorPrimary95, ";[data-link-level='text-link-sublist']{>", NavlinkClickableContent, "{left:0;}}}" + ("" ), "" )], ";" + ("" ));
|
|
151
|
+
var _ref = {
|
|
152
|
+
name: "1azakc",
|
|
153
|
+
styles: "text-align:center"
|
|
154
|
+
} ;
|
|
155
|
+
const MenuListItem = /*#__PURE__*/_styled__default["default"]("li", {
|
|
156
|
+
target: "e1i568cv1"
|
|
157
|
+
} )("height:", oidc.NAVBAR.itemSize, ";width:", oidc.NAVBAR.itemSize, ";margin:0;background:", applicationComponents.designTokens.backgroundColorForNavbar, ";list-style:none;cursor:pointer;", IconWrapper, "{width:auto;display:flex;justify-content:center;}", props => [props.isRouteActive && /*#__PURE__*/react.css("background:", designSystem.designTokens.colorPrimary25, ";border-radius:", designSystem.designTokens.borderRadius8, ";" + ("" ), "" ), !props.isRouteActive && /*#__PURE__*/react.css(":hover,:focus-within{background-color:", designSystem.designTokens.colorPrimary20, ";border-radius:", designSystem.designTokens.borderRadius8, ";}" + ("" ), "" ), props.isActive && /*#__PURE__*/react.css(ItemIconText, "{justify-content:flex-start;}" + ("" ), "" ), !props.isActive && /*#__PURE__*/react.css(":hover ", Icon, ">svg *:not([fill='none']),:focus-within ", Icon, ">svg *:not([fill='none']){fill:", designSystem.designTokens.colorSurface, ";}:hover .", Title, ",:focus-within ", Title, "{color:", designSystem.designTokens.colorSurface, ";}" + ("" ), "" ), props.isCollapsed && _ref], " :hover ", Title, ",:focus-within ", Title, "{margin-left:calc(", designSystem.designTokens.spacing25, " + 2px);}:hover ", Icon, ",:focus-within ", Icon, "{transform:scale(1.2);}:hover ", MenuList, ".sublist-collapsed__active,:hover ", MenuList, ".sublist-collapsed__active__above,:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-collapsed__active,:focus-within ", MenuList, ".sublist-collapsed__active__above,:focus-within ", MenuList, ".sublist-expanded__active{animation-name:", fadeIn, ";animation-duration:16ms;animation-delay:100ms;animation-fill-mode:forwards;display:flex;flex-direction:column;align-items:flex-start;background-color:", designSystem.designTokens.colorSurface, ";min-height:", oidc.NAVBAR.sublistItemMinHeight, ";width:", oidc.NAVBAR.sublistWidth, ";border-radius:", designSystem.designTokens.borderRadius8, ";z-index:20001;box-shadow:-2px 4px 25px 0 rgba(89, 89, 89, 0.5);}:hover ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:hover ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty{visibility:hidden;}:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-expanded__active{left:", oidc.NAVBAR.sublistIndentationWhenExpanded, ";}" + ("" ));
|
|
158
|
+
const SafeArea = /*#__PURE__*/_styled__default["default"]("span", {
|
|
159
|
+
target: "e1i568cv0"
|
|
160
|
+
} )("position:absolute;top:0;bottom:0;right:100%;width:calc(100% - ", designSystem.designTokens.spacing30, ");clip-path:polygon(var(--safe-start), 100% 100%, 100% 0);" + ("" ));
|
|
161
|
+
|
|
162
|
+
const visible = react.keyframes`
|
|
163
|
+
from {
|
|
164
|
+
opacity: 0;
|
|
165
|
+
}
|
|
166
|
+
to {
|
|
167
|
+
opacity: 1;
|
|
168
|
+
}
|
|
169
|
+
`;
|
|
170
|
+
const FixedMenu = /*#__PURE__*/_styled__default["default"]("div", {
|
|
171
|
+
target: "e1meml8k10"
|
|
172
|
+
} )("position:relative;width:", oidc.NAVBAR.widthLeftNavigation, ";", MenuListItem, " ", ItemIconText, "{justify-content:center;display:flex;width:100%;}" + ("" ));
|
|
173
|
+
const SupportMenuTooltipContainer = /*#__PURE__*/_styled__default["default"]("div", {
|
|
174
|
+
target: "e1meml8k9"
|
|
175
|
+
} )("position:fixed;left:", oidc.NAVBAR.sublistIndentationWhenCollapsed, ";display:none;align-items:center;justify-content:flex-start;height:", oidc.NAVBAR.itemSize, ";z-index:20001;" + ("" ));
|
|
176
|
+
const ItemContent = /*#__PURE__*/_styled__default["default"]("div", {
|
|
177
|
+
target: "e1meml8k8"
|
|
178
|
+
} )("color:", designSystem.designTokens.colorNeutral, ";width:", oidc.NAVBAR.itemSize, ";position:relative;display:block;:hover ", SupportMenuTooltipContainer, ",:focus-within ", SupportMenuTooltipContainer, "{display:flex;}" + ("" ));
|
|
179
|
+
const ScrollableMenu = /*#__PURE__*/_styled__default["default"]("div", {
|
|
180
|
+
target: "e1meml8k7"
|
|
181
|
+
} )("flex:1 1 0;overflow-x:hidden;overflow-y:hidden;padding:", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing30, " ", oidc.NAVBAR.itemSize, ";width:", oidc.NAVBAR.widthLeftNavigation, ";box-sizing:border-box;:hover{overflow-y:scroll;}scrollbar-width:thin;scrollbar-color:", designSystem.designTokens.colorPrimary40, " transparent;&::-webkit-scrollbar{width:8px;}&::-webkit-scrollbar-track{background:transparent;}&::-webkit-scrollbar-thumb{background-color:", designSystem.designTokens.colorPrimary40, ";border-radius:", designSystem.designTokens.borderRadius8, ";}" + ("" ));
|
|
182
|
+
const leftNavigationOpenStyles = /*#__PURE__*/react.css(".body__menu-open ", LeftNavigation, "{transition:", oidc.NAVBAR.leftNavigationTransition, ";width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open ", ScrollableMenu, "{width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open ", FixedMenu, "{width:", oidc.NAVBAR.widthLeftNavigationWhenExpanded, ";}.body__menu-open [data-link-level='text-link']{justify-content:start;}.body__menu-open ", MenuListItem, "{height:auto;min-height:", oidc.NAVBAR.itemSize, ";width:calc(\n ", oidc.NAVBAR.sublistIndentationWhenExpanded, " - 2 *\n ", designSystem.designTokens.spacing25, "\n );&.active{max-height:500px;transition:max-height 0.25s ease-in;", ItemIconText, "{position:relative;width:auto;margin-left:0;}}", Title, "{opacity:1;margin-left:", designSystem.designTokens.spacing25, ";color:", designSystem.designTokens.colorSurface, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";animation:", visible, " 150ms cubic-bezier(1, 0, 0.58, 1);}}.body__menu-open ", ItemContent, "{width:100%;}" + ("" ), "" );
|
|
183
|
+
const NavigationHeader = /*#__PURE__*/_styled__default["default"]("div", {
|
|
184
|
+
target: "e1meml8k6"
|
|
185
|
+
} )("background-color:", applicationComponents.designTokens.backgroundColorForNavbarHeader, ";color:", designSystem.designTokens.colorSurface, ";display:flex;justify-content:center;flex-direction:row;align-items:center;padding:", designSystem.designTokens.spacing30, ";" + ("" ));
|
|
186
|
+
const HeaderTitle = /*#__PURE__*/_styled__default["default"]("div", {
|
|
187
|
+
target: "e1meml8k5"
|
|
188
|
+
} )("font-weight:600;margin-left:", designSystem.designTokens.spacing20, ";transition:", oidc.NAVBAR.leftNavigationTransition, ";animation:", visible, " 150ms cubic-bezier(1, 0, 0.58, 1);" + ("" ));
|
|
189
|
+
const TooltipContainer = /*#__PURE__*/_styled__default["default"]("div", {
|
|
190
|
+
target: "e1meml8k4"
|
|
191
|
+
} )("position:absolute;left:0;display:flex;align-items:center;justify-content:flex-start;height:", oidc.NAVBAR.itemSize, ";visibility:visible;", props => props.alignsAgainstBottom ? 'bottom' : 'top', ":-", oidc.NAVBAR.itemSize, ";" + ("" ));
|
|
192
|
+
const Tooltip = /*#__PURE__*/_styled__default["default"]("div", {
|
|
193
|
+
target: "e1meml8k3"
|
|
194
|
+
} )("padding:", designSystem.designTokens.spacing10, " calc(", designSystem.designTokens.spacing20, " + ", designSystem.designTokens.spacing10, ");display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;border-radius:", designSystem.designTokens.borderRadius4, ";background:", designSystem.designTokens.colorAccent10, ";box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.25);font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";font-weight:", designSystem.designTokens.fontWeight400, ";color:", designSystem.designTokens.colorSurface, ";max-height:", oidc.NAVBAR.itemSize, ";visibility:inherit;" + ("" ));
|
|
195
|
+
const TextLink = /*#__PURE__*/_styled__default["default"]("a", {
|
|
196
|
+
target: "e1meml8k2"
|
|
197
|
+
} )("color:", designSystem.designTokens.colorNeutral, ";text-decoration:none;display:flex;padding:", designSystem.designTokens.spacing25, ";align-items:center;justify-content:center;" + ("" ));
|
|
198
|
+
const SupportMenu = /*#__PURE__*/_styled__default["default"]("div", {
|
|
199
|
+
target: "e1meml8k1"
|
|
200
|
+
} )("padding:", designSystem.designTokens.spacing10, " ", designSystem.designTokens.spacing30, " ", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";height:calc(", oidc.NAVBAR.itemSize, " + ", designSystem.designTokens.spacing20, ");" + ("" ));
|
|
201
|
+
const Text = /*#__PURE__*/_styled__default["default"]("div", {
|
|
202
|
+
target: "e1meml8k0"
|
|
203
|
+
} )("font-weight:", designSystem.designTokens.fontWeight400, ";font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";width:100%;height:100%;" + ("" ));
|
|
204
|
+
const getMenuItemLinkStyles = isSubmenuLink => [isSubmenuLink && /*#__PURE__*/react.css("display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:", designSystem.designTokens.colorSolid, ";font-weight:", designSystem.designTokens.fontWeight600, ";text-decoration:none;flex:1;padding:", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing25, " ", designSystem.designTokens.spacing30, ";transition:padding 150ms ease-out;" + ("" ), "" ), !isSubmenuLink && /*#__PURE__*/react.css("color:", designSystem.designTokens.colorNeutral, ";text-decoration:none;display:flex;padding:", designSystem.designTokens.spacing25, ";align-items:center;justify-content:center;" + ("" ), "" )];
|
|
205
|
+
|
|
206
|
+
var messages = reactIntl.defineMessages({
|
|
207
|
+
'NavBar.MCSupport.title': {
|
|
208
|
+
id: 'NavBar.MCSupport.title',
|
|
209
|
+
defaultMessage: 'Support'
|
|
210
|
+
},
|
|
211
|
+
'NavBar.MenuExpander.collapseMenu': {
|
|
212
|
+
id: 'NavBar.MenuExpander.collapseMenu',
|
|
213
|
+
defaultMessage: 'Collapse menu'
|
|
214
|
+
},
|
|
215
|
+
'NavBar.MenuExpander.expandMenu': {
|
|
216
|
+
id: 'NavBar.MenuExpander.expandMenu',
|
|
217
|
+
defaultMessage: 'Expand menu'
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
const _excluded = ["icon"],
|
|
222
|
+
_excluded2 = ["exactMatch"],
|
|
223
|
+
_excluded3 = ["permissions"];
|
|
224
|
+
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
225
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$2(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
226
|
+
const HeartIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./heart-01f01038.cjs.prod.js'); }));
|
|
227
|
+
const PaperclipIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./paperclip-fe72a70d.cjs.prod.js'); }));
|
|
228
|
+
const PluginIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./plugin-81ae1044.cjs.prod.js'); }));
|
|
229
|
+
const RocketIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./rocket-cb99be06.cjs.prod.js'); }));
|
|
230
|
+
const StarIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./star-e4902bbb.cjs.prod.js'); }));
|
|
231
|
+
const ConnectedSquareIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./connected-square-2d046cb8.cjs.prod.js'); }));
|
|
232
|
+
const WorldIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./world-22189397.cjs.prod.js'); }));
|
|
233
|
+
const TreeStructureIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./tree-structure-3ec98cce.cjs.prod.js'); }));
|
|
234
|
+
const UserFilledIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./user-filled-26f333b2.cjs.prod.js'); }));
|
|
235
|
+
const SpeedometerIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./speedometer-26f52e73.cjs.prod.js'); }));
|
|
236
|
+
const TagMultiIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./tag-multi-1c065f61.cjs.prod.js'); }));
|
|
237
|
+
const CartIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./cart-645074db.cjs.prod.js'); }));
|
|
238
|
+
const BoxIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./box-09bf50e1.cjs.prod.js'); }));
|
|
239
|
+
const GearIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./gear-4f7cde98.cjs.prod.js'); }));
|
|
240
|
+
const ListWithSearchIcon = /*#__PURE__*/react$1.lazy(() => Promise.resolve().then(function () { return require('./list-with-search-6462447e.cjs.prod.js'); }));
|
|
241
|
+
// The icon is expected to be the `svg` document as a string.
|
|
242
|
+
// For backwards compatibility purposes, we still support the legacy "icon name",
|
|
243
|
+
// which we then map to one of the pre-defined icons.
|
|
244
|
+
// Eventually, we want to get rid of this "switch" logic.
|
|
245
|
+
const IconSwitcher = _ref => {
|
|
246
|
+
let icon = _ref.icon,
|
|
247
|
+
iconProps = _objectWithoutProperties(_ref, _excluded);
|
|
248
|
+
if (_includesInstanceProperty__default["default"](icon).call(icon, '<svg')) {
|
|
249
|
+
return jsxRuntime.jsx(InlineSvg__default["default"], _objectSpread$2({
|
|
250
|
+
data: icon
|
|
251
|
+
}, iconProps));
|
|
252
|
+
}
|
|
253
|
+
// Backwards compatibility for apps using the "icon name".
|
|
254
|
+
switch (icon) {
|
|
255
|
+
// Legacy application icons
|
|
256
|
+
// TODO: To be removed once MC applications icons updates are published
|
|
257
|
+
case 'TreeStructureIcon':
|
|
258
|
+
return jsxRuntime.jsx(TreeStructureIcon, _objectSpread$2({}, iconProps));
|
|
259
|
+
case 'UserFilledIcon':
|
|
260
|
+
return jsxRuntime.jsx(UserFilledIcon, _objectSpread$2({}, iconProps));
|
|
261
|
+
case 'SpeedometerIcon':
|
|
262
|
+
return jsxRuntime.jsx(SpeedometerIcon, _objectSpread$2({}, iconProps));
|
|
263
|
+
case 'TagMultiIcon':
|
|
264
|
+
return jsxRuntime.jsx(TagMultiIcon, _objectSpread$2({}, iconProps));
|
|
265
|
+
case 'CartIcon':
|
|
266
|
+
return jsxRuntime.jsx(CartIcon, _objectSpread$2({}, iconProps));
|
|
267
|
+
case 'BoxIcon':
|
|
268
|
+
return jsxRuntime.jsx(BoxIcon, _objectSpread$2({}, iconProps));
|
|
269
|
+
case 'GearIcon':
|
|
270
|
+
return jsxRuntime.jsx(GearIcon, _objectSpread$2({}, iconProps));
|
|
271
|
+
case 'ListWithSearchIcon':
|
|
272
|
+
return jsxRuntime.jsx(ListWithSearchIcon, _objectSpread$2({}, iconProps));
|
|
273
|
+
|
|
274
|
+
// Custom application icons set
|
|
275
|
+
case 'HeartIcon':
|
|
276
|
+
return jsxRuntime.jsx(HeartIcon, _objectSpread$2({}, iconProps));
|
|
277
|
+
case 'PaperclipIcon':
|
|
278
|
+
return jsxRuntime.jsx(PaperclipIcon, _objectSpread$2({}, iconProps));
|
|
279
|
+
case 'PluginIcon':
|
|
280
|
+
return jsxRuntime.jsx(PluginIcon, _objectSpread$2({}, iconProps));
|
|
281
|
+
case 'RocketIcon':
|
|
282
|
+
return jsxRuntime.jsx(RocketIcon, _objectSpread$2({}, iconProps));
|
|
283
|
+
case 'StarIcon':
|
|
284
|
+
return jsxRuntime.jsx(StarIcon, _objectSpread$2({}, iconProps));
|
|
285
|
+
case 'ConnectedSquareIcon':
|
|
286
|
+
return jsxRuntime.jsx(ConnectedSquareIcon, _objectSpread$2({}, iconProps));
|
|
287
|
+
// For backwards compatibility
|
|
288
|
+
case 'WorldIcon':
|
|
289
|
+
return jsxRuntime.jsx(WorldIcon, _objectSpread$2({}, iconProps));
|
|
290
|
+
default:
|
|
291
|
+
return jsxRuntime.jsx("img", {
|
|
292
|
+
src: MissingImageSvg__default["default"],
|
|
293
|
+
alt: "missing icon"
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
IconSwitcher.displayName = 'IconSwitcher';
|
|
298
|
+
const getIcon = _ref2 => {
|
|
299
|
+
let isMenuOpen = _ref2.isMenuOpen;
|
|
300
|
+
const Icon = isMenuOpen ? icons.SidebarCollapseIcon : icons.SidebarExpandIcon;
|
|
301
|
+
return jsxRuntime.jsx(Icon, {
|
|
302
|
+
color: "surface",
|
|
303
|
+
size: "big"
|
|
304
|
+
});
|
|
305
|
+
};
|
|
306
|
+
const MenuExpander = props => {
|
|
307
|
+
const _useIntl = reactIntl.useIntl(),
|
|
308
|
+
formatMessage = _useIntl.formatMessage;
|
|
309
|
+
return jsxRuntime.jsx(Expander, {
|
|
310
|
+
isVisible: props.isVisible,
|
|
311
|
+
role: "menuitem",
|
|
312
|
+
children: jsxRuntime.jsx(ExpanderIcon, {
|
|
313
|
+
onClick: props.onClick,
|
|
314
|
+
onKeyDown: e => {
|
|
315
|
+
if (e.key === 'Enter') {
|
|
316
|
+
props.onClick(e);
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
tabIndex: 0,
|
|
320
|
+
"data-testid": "menu-expander",
|
|
321
|
+
"aria-label": props.isMenuOpen ? formatMessage(messages['NavBar.MenuExpander.collapseMenu']) : formatMessage(messages['NavBar.MenuExpander.expandMenu']),
|
|
322
|
+
children: getIcon(props)
|
|
323
|
+
})
|
|
324
|
+
}, "expander");
|
|
325
|
+
};
|
|
326
|
+
MenuExpander.displayName = 'MenuExpander';
|
|
327
|
+
const MenuGroup = /*#__PURE__*/react$1.forwardRef((props, ref) => {
|
|
328
|
+
if (props.isExpanded && (props.level === 2 && !props.hasSubmenu || props.level === 2 && !props.isActive)) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
const isSublistActiveWhileIsMenuExpanded = Boolean(props.level === 2 && props.isActive && props.isExpanded);
|
|
332
|
+
const isSublistActiveWhileIsMenuCollapsed = Boolean(props.level === 2 && props.isActive && !props.isExpanded);
|
|
333
|
+
return jsxRuntime.jsx(MenuList, {
|
|
334
|
+
ref: ref && props.level === 2 ? ref : null,
|
|
335
|
+
level: props.level,
|
|
336
|
+
id: `group-${props.id}`,
|
|
337
|
+
"data-testid": `group-${props.id}`,
|
|
338
|
+
role: "menu",
|
|
339
|
+
onKeyDown: props.handleKeyDown,
|
|
340
|
+
className: classnames__default["default"]({
|
|
341
|
+
'sublist-expanded__active': isSublistActiveWhileIsMenuExpanded
|
|
342
|
+
}, {
|
|
343
|
+
'sublist-collapsed__empty': isSublistActiveWhileIsMenuCollapsed && !props.hasSubmenu
|
|
344
|
+
}, {
|
|
345
|
+
'sublist-collapsed__active': isSublistActiveWhileIsMenuCollapsed && !props.isSubmenuAboveMenuItem
|
|
346
|
+
}, {
|
|
347
|
+
'sublist-collapsed__active__above': isSublistActiveWhileIsMenuCollapsed && props.isSubmenuAboveMenuItem
|
|
348
|
+
}),
|
|
349
|
+
isSublistActiveWhileIsMenuExpanded: isSublistActiveWhileIsMenuExpanded,
|
|
350
|
+
isSublistActiveWhileIsMenuCollapsed: isSublistActiveWhileIsMenuCollapsed,
|
|
351
|
+
isSublistCollapsedAndActive: isSublistActiveWhileIsMenuCollapsed && !props.isSubmenuAboveMenuItem,
|
|
352
|
+
isSublistCollapsedAndActiveAndAbove: Boolean(isSublistActiveWhileIsMenuCollapsed && props.isSubmenuAboveMenuItem),
|
|
353
|
+
isSubmenuAboveMenuItem: props.isSubmenuAboveMenuItem,
|
|
354
|
+
submenuVerticalPosition: props.submenuVerticalPosition,
|
|
355
|
+
children: props.children
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
MenuGroup.displayName = 'MenuGroup';
|
|
359
|
+
const MenuItem$1 = props => {
|
|
360
|
+
return jsxRuntime.jsx(MenuListItem, {
|
|
361
|
+
role: "menuitem",
|
|
362
|
+
"aria-label": props.ariaLabel,
|
|
363
|
+
onClick: props.onClick,
|
|
364
|
+
onMouseEnter: props.onMouseEnter,
|
|
365
|
+
onMouseLeave: props.onMouseLeave,
|
|
366
|
+
onFocus: props.onMouseEnter,
|
|
367
|
+
onBlur: props.onMouseLeave,
|
|
368
|
+
onKeyDown: props.onKeyDown,
|
|
369
|
+
"data-menuitem": props.identifier,
|
|
370
|
+
className: classnames__default["default"]({
|
|
371
|
+
active: props.isActive
|
|
372
|
+
}),
|
|
373
|
+
isActive: props.isActive,
|
|
374
|
+
isRouteActive: Boolean(props.isMainMenuRouteActive),
|
|
375
|
+
isCollapsed: !props.isMenuOpen,
|
|
376
|
+
onMouseMove: props.onMouseMove,
|
|
377
|
+
children: jsxRuntime.jsx(ItemContent, {
|
|
378
|
+
children: props.children
|
|
379
|
+
})
|
|
380
|
+
});
|
|
381
|
+
};
|
|
382
|
+
MenuItem$1.displayName = 'MenuItem';
|
|
383
|
+
const NavLinkWrapper = props => {
|
|
384
|
+
const Wrapper = props.isSubmenuLink ? TextLinkSublistWrapper : react$1.Fragment;
|
|
385
|
+
return jsxRuntime.jsx(Wrapper, {
|
|
386
|
+
children: props.children
|
|
387
|
+
});
|
|
388
|
+
};
|
|
389
|
+
const NavLinkClickableContentWrapper = props => {
|
|
390
|
+
const Wrapper = props.isSubmenuLink ? NavlinkClickableContent : react$1.Fragment;
|
|
391
|
+
return jsxRuntime.jsx(Wrapper, {
|
|
392
|
+
children: props.children
|
|
393
|
+
});
|
|
394
|
+
};
|
|
395
|
+
const MenuItemLink = _ref3 => {
|
|
396
|
+
let _ref3$exactMatch = _ref3.exactMatch,
|
|
397
|
+
exactMatch = _ref3$exactMatch === void 0 ? false : _ref3$exactMatch,
|
|
398
|
+
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
399
|
+
const redirectTo = targetUrl => location.location.replace(targetUrl);
|
|
400
|
+
if (props.linkTo) {
|
|
401
|
+
const linkLevel = props.isSubmenuLink ? 'text-link-sublist' : 'text-link';
|
|
402
|
+
return jsxRuntime.jsx(NavLinkWrapper, _objectSpread$2(_objectSpread$2({
|
|
403
|
+
exactMatch: exactMatch
|
|
404
|
+
}, props), {}, {
|
|
405
|
+
children: jsxRuntime.jsx(reactRouterDom.NavLink, {
|
|
406
|
+
to: props.linkTo,
|
|
407
|
+
exact: exactMatch,
|
|
408
|
+
activeClassName: "highlighted",
|
|
409
|
+
"data-link-level": linkLevel,
|
|
410
|
+
css: getMenuItemLinkStyles(Boolean(props.isSubmenuLink)),
|
|
411
|
+
tabIndex: props.isSubmenuLink && !props.isSubmenuFocused ? -1 : 0,
|
|
412
|
+
"aria-label": props.ariaLabel,
|
|
413
|
+
onClick: event => {
|
|
414
|
+
if (props.linkTo && props.useFullRedirectsForLinks) {
|
|
415
|
+
event.preventDefault();
|
|
416
|
+
redirectTo(props.linkTo);
|
|
417
|
+
} else if (props.onClick) {
|
|
418
|
+
event.persist();
|
|
419
|
+
props.onClick(event);
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
children: jsxRuntime.jsx(NavLinkClickableContentWrapper, _objectSpread$2(_objectSpread$2({
|
|
423
|
+
exactMatch: exactMatch
|
|
424
|
+
}, props), {}, {
|
|
425
|
+
children: props.children
|
|
426
|
+
}))
|
|
427
|
+
})
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
430
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
431
|
+
children: props.children
|
|
432
|
+
});
|
|
433
|
+
};
|
|
434
|
+
MenuItemLink.displayName = 'MenuItemLink';
|
|
435
|
+
const isEveryMenuVisibilitySetToHidden = (menuVisibilities, namesOfMenuVisibilities) => _Array$isArray__default["default"](namesOfMenuVisibilities) && namesOfMenuVisibilities.length > 0 && _everyInstanceProperty__default["default"](namesOfMenuVisibilities).call(namesOfMenuVisibilities, nameOfMenuVisibility => menuVisibilities && menuVisibilities[nameOfMenuVisibility] === true);
|
|
436
|
+
function isLongLivedFlag(flag) {
|
|
437
|
+
return typeof flag?.value === 'boolean';
|
|
438
|
+
}
|
|
439
|
+
const RestrictedMenuItem = _ref4 => {
|
|
440
|
+
let _ref4$permissions = _ref4.permissions,
|
|
441
|
+
permissions$1 = _ref4$permissions === void 0 ? [] : _ref4$permissions,
|
|
442
|
+
props = _objectWithoutProperties(_ref4, _excluded3);
|
|
443
|
+
// NOTE: Custom application are activated/deactivated while their
|
|
444
|
+
// visibility is not controlled via a visibiility overwrite.
|
|
445
|
+
const flagVariation = reactBroadcast.useFlagVariation(props.featureToggle);
|
|
446
|
+
if (isEveryMenuVisibilitySetToHidden(props.menuVisibilities, props.namesOfMenuVisibilities)) return null;
|
|
447
|
+
const permissionsWrapper = _Array$isArray__default["default"](permissions$1) && permissions$1.length > 0 || _Array$isArray__default["default"](props.dataFences) && props.dataFences.length > 0 ? jsxRuntime.jsx(permissions.RestrictedByPermissions, {
|
|
448
|
+
permissions: permissions$1,
|
|
449
|
+
actionRights: props.actionRights,
|
|
450
|
+
dataFences: props.dataFences,
|
|
451
|
+
selectDataFenceData: demandedDataFence => {
|
|
452
|
+
switch (demandedDataFence.type) {
|
|
453
|
+
case 'store':
|
|
454
|
+
return demandedDataFence.actualDataFenceValues;
|
|
455
|
+
default:
|
|
456
|
+
return null;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// Always check that some of the given permissions match.
|
|
460
|
+
,
|
|
461
|
+
shouldMatchSomePermissions: true,
|
|
462
|
+
projectPermissions: props.projectPermissions,
|
|
463
|
+
children: props.children
|
|
464
|
+
}) : jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
465
|
+
children: props.children
|
|
466
|
+
});
|
|
467
|
+
if (props.featureToggle) {
|
|
468
|
+
// A regular short-lived feature toggle
|
|
469
|
+
if (flagVariation === true) return permissionsWrapper;
|
|
470
|
+
// A long-lived feature toggle with `{ value: boolean, string: reason }`
|
|
471
|
+
if (isLongLivedFlag(flagVariation) && flagVariation.value === true) return permissionsWrapper;
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
474
|
+
return permissionsWrapper;
|
|
475
|
+
};
|
|
476
|
+
RestrictedMenuItem.displayName = 'RestrictedMenuItem';
|
|
477
|
+
const MenuLabel = props => {
|
|
478
|
+
var _context;
|
|
479
|
+
const localizedLabel = _findInstanceProperty__default["default"](_context = props.labelAllLocales).call(_context, loc => {
|
|
480
|
+
var _context2;
|
|
481
|
+
return _startsWithInstanceProperty__default["default"](_context2 = props.applicationLocale).call(_context2, loc.locale);
|
|
482
|
+
});
|
|
483
|
+
if (localizedLabel) return jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
484
|
+
children: localizedLabel.value
|
|
485
|
+
});
|
|
486
|
+
if (props.defaultLabel) return jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
487
|
+
children: props.defaultLabel
|
|
488
|
+
});
|
|
489
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
490
|
+
children: constants.NO_VALUE_FALLBACK
|
|
491
|
+
});
|
|
492
|
+
};
|
|
493
|
+
const NavBarLayout$1 = /*#__PURE__*/react$1.forwardRef((props, ref) => jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
494
|
+
children: [jsxRuntime.jsx(react.Global, {
|
|
495
|
+
styles: leftNavigationOpenStyles
|
|
496
|
+
}), jsxRuntime.jsx(LeftNavigation, {
|
|
497
|
+
ref: ref,
|
|
498
|
+
"data-testid": "left-navigation",
|
|
499
|
+
children: props.children
|
|
500
|
+
})]
|
|
501
|
+
}));
|
|
502
|
+
NavBarLayout$1.displayName = 'NavBarLayout';
|
|
503
|
+
const ItemContainer = props => {
|
|
504
|
+
return jsxRuntime.jsxs(ItemIconText, {
|
|
505
|
+
children: [jsxRuntime.jsx(IconWrapper, {
|
|
506
|
+
children: jsxRuntime.jsx(Icon, {
|
|
507
|
+
className: "icon",
|
|
508
|
+
children: jsxRuntime.jsx(IconSwitcher, {
|
|
509
|
+
icon: props.icon,
|
|
510
|
+
size: "scale"
|
|
511
|
+
})
|
|
512
|
+
})
|
|
513
|
+
}), props.isMenuOpen ? jsxRuntime.jsx(Title, {
|
|
514
|
+
children: jsxRuntime.jsx(MenuLabel, {
|
|
515
|
+
labelAllLocales: props.labelAllLocales,
|
|
516
|
+
defaultLabel: props.defaultLabel,
|
|
517
|
+
applicationLocale: props.applicationLocale
|
|
518
|
+
})
|
|
519
|
+
}) : null]
|
|
520
|
+
});
|
|
521
|
+
};
|
|
522
|
+
ItemContainer.displayName = 'ItemContainer';
|
|
523
|
+
|
|
524
|
+
const NavBarLayout = props => {
|
|
525
|
+
return jsxRuntime.jsx("nav", {
|
|
526
|
+
"aria-busy": true,
|
|
527
|
+
css: /*#__PURE__*/react.css("display:flex;flex-direction:column;height:100%;width:", props.isExpanded ? '256px' : '80px', ";" + ("" ), "" ),
|
|
528
|
+
children: props.children
|
|
529
|
+
});
|
|
530
|
+
};
|
|
531
|
+
const NavBarHeader = /*#__PURE__*/_styled__default["default"]("div", {
|
|
532
|
+
target: "epfjvz37"
|
|
533
|
+
} )("display:flex;justify-content:center;align-items:center;padding:", designSystem.designTokens.spacing30, ";height:", oidc.DIMENSIONS.header, ";background:", applicationComponents.designTokens.backgroundColorForNavbarHeader, ";" + ("" ));
|
|
534
|
+
const NavBarBody = /*#__PURE__*/_styled__default["default"]("div", {
|
|
535
|
+
target: "epfjvz36"
|
|
536
|
+
} )("display:flex;flex:1;padding:", designSystem.designTokens.spacing30, ";flex-direction:column;align-items:flex-start;gap:", designSystem.designTokens.spacing40, ";flex-shrink:0;background:", designSystem.designTokens.colorPrimary10, ";position:relative;" + ("" ));
|
|
537
|
+
const NavBarFooter = /*#__PURE__*/_styled__default["default"]("div", {
|
|
538
|
+
target: "epfjvz35"
|
|
539
|
+
} )("position:relative;display:flex;width:100%;flex-direction:column;background:", designSystem.designTokens.colorPrimary10, ";padding:", designSystem.designTokens.spacing30, " ", props => props.isExpanded ? '58px' : '0px', ";justify-content:center;align-items:center;&::before{content:'';position:absolute;top:0;height:1px;width:calc(100% - 2 * ", designSystem.designTokens.spacing30, ");background:rgba(255, 255, 255, 0.5);}" + ("" ));
|
|
540
|
+
const ExpandIcon = /*#__PURE__*/_styled__default["default"]("div", {
|
|
541
|
+
target: "epfjvz34"
|
|
542
|
+
} )("width:40px;height:40px;border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);" + ("" ));
|
|
543
|
+
const MenuItemContainer = /*#__PURE__*/_styled__default["default"]("div", {
|
|
544
|
+
target: "epfjvz33"
|
|
545
|
+
} )("display:flex;align-items:center;justify-content:center;gap:12px;padding:", props => props.contentWidth === 'wide' || !props.isExpanded ? '12px' : '12px 28px', ";height:48px;" + ("" ));
|
|
546
|
+
const MenuItemIcon = /*#__PURE__*/_styled__default["default"]("div", {
|
|
547
|
+
target: "epfjvz32"
|
|
548
|
+
} )("width:24px;height:24px;border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);" + ("" ));
|
|
549
|
+
const MenuItemTitle = /*#__PURE__*/_styled__default["default"]("div", {
|
|
550
|
+
target: "epfjvz31"
|
|
551
|
+
} )("border-radius:", designSystem.designTokens.borderRadius4, ";background:rgba(255, 255, 255, 0.2);flex:1;height:18px;" + ("" ));
|
|
552
|
+
const MenuItemGroup = /*#__PURE__*/_styled__default["default"]("div", {
|
|
553
|
+
target: "epfjvz30"
|
|
554
|
+
} )({
|
|
555
|
+
name: "1d3w5wq",
|
|
556
|
+
styles: "width:100%"
|
|
557
|
+
} );
|
|
558
|
+
|
|
559
|
+
const MenuItem = props => {
|
|
560
|
+
return jsxRuntime.jsxs(MenuItemContainer, {
|
|
561
|
+
isExpanded: props.isExpanded,
|
|
562
|
+
contentWidth: props.contentWidth,
|
|
563
|
+
children: [jsxRuntime.jsx(MenuItemIcon, {}), props.isExpanded && jsxRuntime.jsx(MenuItemTitle, {})]
|
|
564
|
+
});
|
|
565
|
+
};
|
|
566
|
+
const NavBarSkeleton = props => {
|
|
567
|
+
var _context, _context2, _context3, _context4;
|
|
568
|
+
return jsxRuntime.jsxs(NavBarLayout, {
|
|
569
|
+
isExpanded: props.isExpanded,
|
|
570
|
+
children: [jsxRuntime.jsx(NavBarHeader, {
|
|
571
|
+
children: jsxRuntime.jsx(MenuItemGroup, {
|
|
572
|
+
children: jsxRuntime.jsx(MenuItem, {
|
|
573
|
+
contentWidth: "narrow",
|
|
574
|
+
isExpanded: props.isExpanded
|
|
575
|
+
})
|
|
576
|
+
})
|
|
577
|
+
}), jsxRuntime.jsxs(NavBarBody, {
|
|
578
|
+
children: [jsxRuntime.jsx(MenuItemGroup, {
|
|
579
|
+
children: _mapInstanceProperty__default["default"](_context = [..._keysInstanceProperty__default["default"](_context2 = Array(2)).call(_context2)]).call(_context, index => jsxRuntime.jsx(MenuItem, {
|
|
580
|
+
contentWidth: "wide",
|
|
581
|
+
isExpanded: props.isExpanded
|
|
582
|
+
}, index))
|
|
583
|
+
}), jsxRuntime.jsx(MenuItemGroup, {
|
|
584
|
+
children: _mapInstanceProperty__default["default"](_context3 = [..._keysInstanceProperty__default["default"](_context4 = Array(10)).call(_context4)]).call(_context3, index => jsxRuntime.jsx(MenuItem, {
|
|
585
|
+
contentWidth: "wide",
|
|
586
|
+
isExpanded: props.isExpanded
|
|
587
|
+
}, index))
|
|
588
|
+
}), jsxRuntime.jsx(MenuItemGroup, {
|
|
589
|
+
children: jsxRuntime.jsx(MenuItem, {
|
|
590
|
+
contentWidth: "wide",
|
|
591
|
+
isExpanded: props.isExpanded
|
|
592
|
+
})
|
|
593
|
+
})]
|
|
594
|
+
}), jsxRuntime.jsx(NavBarFooter, {
|
|
595
|
+
isExpanded: props.isExpanded,
|
|
596
|
+
children: jsxRuntime.jsx(ExpandIcon, {})
|
|
597
|
+
})]
|
|
598
|
+
});
|
|
599
|
+
};
|
|
600
|
+
NavBarSkeleton.displayName = 'NavBarSkeleton';
|
|
601
|
+
|
|
602
|
+
// Type guard to help with filtering arrays for nullish elements.
|
|
603
|
+
function nonNullable(value) {
|
|
604
|
+
return value !== null && value !== undefined;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
608
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
609
|
+
var FetchProjectExtensionsNavbar = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchProjectExtensionsNavbar" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "projectExtension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "installedApplications" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "application" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "entryPointUriPath" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "icon" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "mainMenuLink" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "permissions" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "defaultLabel" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "labelAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }, { kind: "Field", name: { kind: "Name", value: "submenuLinks" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "uriPath" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "permissions" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "defaultLabel" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "labelAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }] } }], loc: { start: 0, end: 537, source: { body: "query FetchProjectExtensionsNavbar {\n projectExtension {\n id\n installedApplications {\n application {\n id\n entryPointUriPath\n icon\n mainMenuLink {\n id\n permissions\n defaultLabel\n labelAllLocales {\n locale\n value\n }\n }\n submenuLinks {\n id\n uriPath\n permissions\n defaultLabel\n labelAllLocales {\n locale\n value\n }\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
|
|
610
|
+
const getInitialState = isForcedMenuOpen => ({
|
|
611
|
+
isExpanderVisible: true,
|
|
612
|
+
isMenuOpen: isNil__default["default"](isForcedMenuOpen) ? false : isForcedMenuOpen,
|
|
613
|
+
mousePosition: {
|
|
614
|
+
clientX: 0,
|
|
615
|
+
clientY: 0
|
|
616
|
+
}
|
|
617
|
+
});
|
|
618
|
+
const isForcedMenuOpenDefaultValue = false;
|
|
619
|
+
const reducer = (state, action) => {
|
|
620
|
+
switch (action.type) {
|
|
621
|
+
case 'setActiveItemIndex':
|
|
622
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
623
|
+
activeItemIndex: action.payload
|
|
624
|
+
});
|
|
625
|
+
case 'unsetActiveItemIndex':
|
|
626
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
627
|
+
activeItemIndex: undefined
|
|
628
|
+
});
|
|
629
|
+
case 'setIsExpanderVisible':
|
|
630
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
631
|
+
isExpanderVisible: true
|
|
632
|
+
});
|
|
633
|
+
case 'toggleIsMenuOpen':
|
|
634
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
635
|
+
isMenuOpen: !state.isMenuOpen
|
|
636
|
+
});
|
|
637
|
+
case 'setIsMenuOpenAndMakeExpanderVisible':
|
|
638
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
639
|
+
isExpanderVisible: true,
|
|
640
|
+
isMenuOpen: action.payload
|
|
641
|
+
});
|
|
642
|
+
case 'getMousePosition':
|
|
643
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
644
|
+
mousePosition: action.payload
|
|
645
|
+
});
|
|
646
|
+
case 'reset':
|
|
647
|
+
return {
|
|
648
|
+
isExpanderVisible: false,
|
|
649
|
+
isMenuOpen: false,
|
|
650
|
+
mousePosition: {
|
|
651
|
+
clientX: 0,
|
|
652
|
+
clientY: 0
|
|
653
|
+
}
|
|
654
|
+
};
|
|
655
|
+
default:
|
|
656
|
+
return state;
|
|
657
|
+
}
|
|
658
|
+
};
|
|
659
|
+
const isFocusOutEventCalledBySubmenuItem = event =>
|
|
660
|
+
// a case when a submenu item loses focus
|
|
661
|
+
event.type === 'focusout' &&
|
|
662
|
+
// element receiving focus
|
|
663
|
+
event.relatedTarget?.matches('a[data-link-level="text-link"]') &&
|
|
664
|
+
// element losing focus
|
|
665
|
+
event.target?.matches('a[data-link-level="text-link-sublist"]');
|
|
666
|
+
const useNavbarStateManager = props => {
|
|
667
|
+
var _context, _context2, _context4, _context5;
|
|
668
|
+
const navBarNode = react$1.useRef(null);
|
|
669
|
+
const applicationsNavBarMenuGroups = useApplicationsMenu.useApplicationsMenu('navBarGroups', {
|
|
670
|
+
environment: props.environment
|
|
671
|
+
});
|
|
672
|
+
const _useMcQuery = applicationShellConnectors.useMcQuery(FetchProjectExtensionsNavbar, {
|
|
673
|
+
skip: !props.project || !props.environment.servedByProxy,
|
|
674
|
+
context: {
|
|
675
|
+
target: constants.GRAPHQL_TARGETS.SETTINGS_SERVICE
|
|
676
|
+
},
|
|
677
|
+
fetchPolicy: 'cache-and-network'
|
|
678
|
+
}),
|
|
679
|
+
projectExtensionsQuery = _useMcQuery.data;
|
|
680
|
+
const allCustomApplicationsNavbarMenu = projectExtensionsQuery && projectExtensionsQuery.projectExtension && projectExtensionsQuery.projectExtension.installedApplications ? _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = projectExtensionsQuery.projectExtension.installedApplications).call(_context2, installedApplication => {
|
|
681
|
+
var _context3;
|
|
682
|
+
const application = installedApplication.application;
|
|
683
|
+
// Map the menu properties to match the one from the proxy schema.
|
|
684
|
+
// This is to ensure that the menu object is the same from the proxy
|
|
685
|
+
// config and the custom apps config, thus allowing them to be
|
|
686
|
+
// concatenated and rendered the same way.
|
|
687
|
+
return {
|
|
688
|
+
key: application.id,
|
|
689
|
+
uriPath: application.entryPointUriPath,
|
|
690
|
+
labelAllLocales: application.mainMenuLink.labelAllLocales || [],
|
|
691
|
+
icon: application.icon,
|
|
692
|
+
permissions: application.mainMenuLink.permissions,
|
|
693
|
+
defaultLabel: application.mainMenuLink.defaultLabel,
|
|
694
|
+
featureToggle: undefined,
|
|
695
|
+
menuVisibility: undefined,
|
|
696
|
+
actionRights: undefined,
|
|
697
|
+
dataFences: undefined,
|
|
698
|
+
submenu: _mapInstanceProperty__default["default"](_context3 = application.submenuLinks || []).call(_context3, submenuLink => ({
|
|
699
|
+
key: submenuLink.id,
|
|
700
|
+
uriPath: submenuLink.uriPath,
|
|
701
|
+
labelAllLocales: submenuLink.labelAllLocales || [],
|
|
702
|
+
permissions: submenuLink.permissions,
|
|
703
|
+
defaultLabel: submenuLink.defaultLabel,
|
|
704
|
+
featureToggle: undefined,
|
|
705
|
+
menuVisibility: undefined,
|
|
706
|
+
actionRights: undefined,
|
|
707
|
+
dataFences: undefined
|
|
708
|
+
}))
|
|
709
|
+
};
|
|
710
|
+
})).call(_context, nonNullable) : [];
|
|
711
|
+
const cachedIsForcedMenuOpen = window.localStorage.getItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN);
|
|
712
|
+
const isForcedMenuOpen = isNil__default["default"](cachedIsForcedMenuOpen) ? isForcedMenuOpenDefaultValue : JSON.parse(cachedIsForcedMenuOpen);
|
|
713
|
+
if (isNil__default["default"](cachedIsForcedMenuOpen)) {
|
|
714
|
+
window.localStorage.setItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN, String(isForcedMenuOpen));
|
|
715
|
+
}
|
|
716
|
+
const _useReducer = react$1.useReducer(reducer, getInitialState(isForcedMenuOpen)),
|
|
717
|
+
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
718
|
+
state = _useReducer2[0],
|
|
719
|
+
dispatch = _useReducer2[1];
|
|
720
|
+
const checkSize = react$1.useCallback(throttle__default["default"](() => {
|
|
721
|
+
const shouldOpen = window.innerWidth > oidc.WINDOW_SIZES.STANDARD;
|
|
722
|
+
const canExpandMenu = window.innerWidth > oidc.WINDOW_SIZES.WIDE;
|
|
723
|
+
|
|
724
|
+
// If the screen is small, we should always keep the menu closed,
|
|
725
|
+
// no matter the settings.
|
|
726
|
+
if (!canExpandMenu) {
|
|
727
|
+
if (state.isMenuOpen || state.isExpanderVisible) {
|
|
728
|
+
// and resets the state to avoid conflicts
|
|
729
|
+
dispatch({
|
|
730
|
+
type: 'reset'
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
} else if (isForcedMenuOpen) {
|
|
734
|
+
dispatch({
|
|
735
|
+
type: 'setIsMenuOpenAndMakeExpanderVisible',
|
|
736
|
+
payload: true
|
|
737
|
+
});
|
|
738
|
+
} else if (canExpandMenu && state.isExpanderVisible !== true) {
|
|
739
|
+
dispatch({
|
|
740
|
+
type: 'setIsExpanderVisible'
|
|
741
|
+
});
|
|
742
|
+
} else if (isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== shouldOpen) {
|
|
743
|
+
// User has no settings yet (this.props.isForcedMenuOpen === null)
|
|
744
|
+
// We check the viewport size and:
|
|
745
|
+
// - if screen is big, we open the menu
|
|
746
|
+
// - if screen is small we close it
|
|
747
|
+
dispatch({
|
|
748
|
+
type: 'setIsMenuOpenAndMakeExpanderVisible',
|
|
749
|
+
payload: shouldOpen
|
|
750
|
+
});
|
|
751
|
+
} else if (!isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== isForcedMenuOpen) {
|
|
752
|
+
// User has setting, we should use that and ignore the screen size.
|
|
753
|
+
// Note: if viewport size is small, we should ignore the user settings.
|
|
754
|
+
dispatch({
|
|
755
|
+
type: 'setIsMenuOpenAndMakeExpanderVisible',
|
|
756
|
+
payload: isForcedMenuOpen
|
|
757
|
+
});
|
|
758
|
+
}
|
|
759
|
+
}, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
|
|
760
|
+
const shouldCloseMenuFly = react$1.useCallback(event => {
|
|
761
|
+
if (!navBarNode?.current?.contains(event.target) && !state.isMenuOpen) {
|
|
762
|
+
dispatch({
|
|
763
|
+
type: 'unsetActiveItemIndex'
|
|
764
|
+
});
|
|
765
|
+
} else if (event.type === 'mouseleave') {
|
|
766
|
+
dispatch({
|
|
767
|
+
type: 'unsetActiveItemIndex'
|
|
768
|
+
});
|
|
769
|
+
} else if (isFocusOutEventCalledBySubmenuItem(event)) {
|
|
770
|
+
dispatch({
|
|
771
|
+
type: 'unsetActiveItemIndex'
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
}, [state.isMenuOpen]);
|
|
775
|
+
react$1.useEffect(() => {
|
|
776
|
+
window.addEventListener('resize', checkSize);
|
|
777
|
+
window.addEventListener('click', shouldCloseMenuFly, true);
|
|
778
|
+
window.addEventListener('focusout', shouldCloseMenuFly, true);
|
|
779
|
+
return () => {
|
|
780
|
+
window.removeEventListener('resize', checkSize);
|
|
781
|
+
window.removeEventListener('click', shouldCloseMenuFly, true);
|
|
782
|
+
window.removeEventListener('focusout', shouldCloseMenuFly, true);
|
|
783
|
+
};
|
|
784
|
+
}, [checkSize, shouldCloseMenuFly]);
|
|
785
|
+
react$1.useEffect(() => {
|
|
786
|
+
checkSize();
|
|
787
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
788
|
+
}, []); // <-- run this only once!!
|
|
789
|
+
|
|
790
|
+
react$1.useLayoutEffect(() => {
|
|
791
|
+
if (state.isMenuOpen) document.body.classList.add('body__menu-open');
|
|
792
|
+
if (!state.isMenuOpen) document.body.classList.remove('body__menu-open');
|
|
793
|
+
}, [state.isMenuOpen]);
|
|
794
|
+
const handleToggleItem = react$1.useCallback(nextActiveItemIndex => {
|
|
795
|
+
if (state.activeItemIndex !== nextActiveItemIndex) dispatch({
|
|
796
|
+
type: 'setActiveItemIndex',
|
|
797
|
+
payload: nextActiveItemIndex
|
|
798
|
+
});
|
|
799
|
+
}, [state.activeItemIndex]);
|
|
800
|
+
const getMousePosition = react$1.useCallback((e, itemIndex) => {
|
|
801
|
+
if (state.activeItemIndex === itemIndex) {
|
|
802
|
+
dispatch({
|
|
803
|
+
type: 'getMousePosition',
|
|
804
|
+
payload: {
|
|
805
|
+
clientX: e.clientX,
|
|
806
|
+
clientY: e.clientY
|
|
807
|
+
}
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
}, [state.activeItemIndex]);
|
|
811
|
+
const handleToggleMenu = react$1.useCallback(() => {
|
|
812
|
+
if (state.isMenuOpen && state.activeItemIndex) {
|
|
813
|
+
dispatch({
|
|
814
|
+
type: 'unsetActiveItemIndex'
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
dispatch({
|
|
818
|
+
type: 'toggleIsMenuOpen'
|
|
819
|
+
});
|
|
820
|
+
// Synchronize the menu state with local storage.
|
|
821
|
+
window.localStorage.setItem(constants.STORAGE_KEYS.IS_FORCED_MENU_OPEN, String(!state.isMenuOpen));
|
|
822
|
+
}, [state.activeItemIndex, state.isMenuOpen]);
|
|
823
|
+
const allApplicationsNavbarMenuGroups = _sortInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](_context5 = applicationsNavBarMenuGroups || []).call(_context5, navbarMenuGroup => navbarMenuGroup.key === '2' && allCustomApplicationsNavbarMenu.length > 0 ? {
|
|
824
|
+
key: navbarMenuGroup.key,
|
|
825
|
+
items: [...navbarMenuGroup.items, ...allCustomApplicationsNavbarMenu]
|
|
826
|
+
} : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA?.key) - Number(navBarMenuGroupB?.key));
|
|
827
|
+
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
828
|
+
navBarNode,
|
|
829
|
+
handleToggleItem,
|
|
830
|
+
handleToggleMenu,
|
|
831
|
+
shouldCloseMenuFly,
|
|
832
|
+
getMousePosition,
|
|
833
|
+
allApplicationsNavbarMenuGroups
|
|
834
|
+
});
|
|
835
|
+
};
|
|
836
|
+
|
|
837
|
+
function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
838
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(t), !0)).call(_context5, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys(Object(t))).call(_context6, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
839
|
+
// Helper function to extract accessible label from menu objects
|
|
840
|
+
const getMenuAccessibleLabel = (labelAllLocales, defaultLabel, applicationLocale) => {
|
|
841
|
+
const localizedLabel = _findInstanceProperty__default["default"](labelAllLocales).call(labelAllLocales, loc => _startsWithInstanceProperty__default["default"](applicationLocale).call(applicationLocale, loc.locale));
|
|
842
|
+
if (localizedLabel) return localizedLabel.value;
|
|
843
|
+
if (defaultLabel) return defaultLabel;
|
|
844
|
+
return constants.NO_VALUE_FALLBACK;
|
|
845
|
+
};
|
|
846
|
+
const getMenuVisibilitiesOfSubmenus = menu => {
|
|
847
|
+
var _context, _context2;
|
|
848
|
+
return _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = menu.submenu).call(_context2, submenu => submenu.menuVisibility)).call(_context, nonNullable);
|
|
849
|
+
};
|
|
850
|
+
const getMenuVisibilityOfMainmenu = menu => menu.menuVisibility ? [menu.menuVisibility] : [];
|
|
851
|
+
const getIsSubmenuRouteActive = (uriPath, props) => Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
852
|
+
path: `/${props.projectKey}/${uriPath}`,
|
|
853
|
+
exact: true,
|
|
854
|
+
strict: false
|
|
855
|
+
}));
|
|
856
|
+
const ApplicationMenu = props => {
|
|
857
|
+
var _context3;
|
|
858
|
+
const _useState = react$1.useState(0),
|
|
859
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
860
|
+
submenuVerticalPosition = _useState2[0],
|
|
861
|
+
setSubmenuVerticalPosition = _useState2[1];
|
|
862
|
+
const _useState3 = react$1.useState(false),
|
|
863
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
864
|
+
isSubmenuAboveMenuItem = _useState4[0],
|
|
865
|
+
setIsSubmenuAboveMenuItem = _useState4[1];
|
|
866
|
+
const _useState5 = react$1.useState(false),
|
|
867
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
868
|
+
isSubmenuFocused = _useState6[0],
|
|
869
|
+
setIsSubmenuFocused = _useState6[1];
|
|
870
|
+
const _useState7 = react$1.useState(0),
|
|
871
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
872
|
+
percentageX = _useState8[0],
|
|
873
|
+
setPercentageX = _useState8[1];
|
|
874
|
+
const _useState9 = react$1.useState(0),
|
|
875
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
876
|
+
percentageY = _useState0[0],
|
|
877
|
+
setPercentageY = _useState0[1];
|
|
878
|
+
const observerRef = react$1.useRef(null);
|
|
879
|
+
const submenuRef = react$1.useRef(null);
|
|
880
|
+
const submenuSafeAreaRef = react$1.useRef(null);
|
|
881
|
+
const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
|
|
882
|
+
const menuItemIdentifier = snakeCase__default["default"](props.menu.key);
|
|
883
|
+
const calculateSafeAreaStartPositon = react$1.useCallback(e => {
|
|
884
|
+
const currentSafeAreaRect = submenuSafeAreaRef.current?.getBoundingClientRect();
|
|
885
|
+
const menuItemRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
|
|
886
|
+
const currentSafeAreaLeft = currentSafeAreaRect?.left || 0;
|
|
887
|
+
const currentSafeAreaTop = currentSafeAreaRect?.top || 0;
|
|
888
|
+
const currentSafeAreaWidth = currentSafeAreaRect?.width || 0;
|
|
889
|
+
const currentSafeAreaHeight = currentSafeAreaRect?.height || 0;
|
|
890
|
+
const localX = e.clientX - currentSafeAreaLeft;
|
|
891
|
+
const localY = e.clientY - currentSafeAreaTop;
|
|
892
|
+
let minXPercent = 0;
|
|
893
|
+
if (menuItemRect && currentSafeAreaRect && currentSafeAreaWidth > 0) {
|
|
894
|
+
const minX = Math.max(menuItemRect.left - currentSafeAreaRect.left, 0);
|
|
895
|
+
minXPercent = minX / currentSafeAreaWidth * 100;
|
|
896
|
+
} else if (menuItemRect && currentSafeAreaRect && currentSafeAreaWidth === 0) {
|
|
897
|
+
// If safe area has no width but menu item exists, consider minXPercent to be 0
|
|
898
|
+
minXPercent = 0;
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
// Calculate nextX, ensuring not to divide by zero
|
|
902
|
+
let nextX = minXPercent;
|
|
903
|
+
if (currentSafeAreaWidth > 0) {
|
|
904
|
+
nextX = localX / currentSafeAreaWidth * 100;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// Calculate nextY, ensuring not to divide by zero
|
|
908
|
+
let nextY = 0;
|
|
909
|
+
if (currentSafeAreaHeight > 0) {
|
|
910
|
+
nextY = localY / currentSafeAreaHeight * 100;
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
// Clamp X to menu item's left border (minXPercent) and safe area bounds (100%)
|
|
914
|
+
nextX = Math.max(nextX, minXPercent);
|
|
915
|
+
nextX = Math.min(nextX, 100);
|
|
916
|
+
if (!_Number$isFinite__default["default"](nextX)) {
|
|
917
|
+
nextX = minXPercent;
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
// Clamp Y to safe area bounds (0% to 100%)
|
|
921
|
+
nextY = Math.min(Math.max(nextY, 0), 100);
|
|
922
|
+
if (!_Number$isFinite__default["default"](nextY)) {
|
|
923
|
+
nextY = 0;
|
|
924
|
+
}
|
|
925
|
+
setPercentageX(nextX);
|
|
926
|
+
setPercentageY(nextY);
|
|
927
|
+
}, [menuItemIdentifier, setPercentageX, setPercentageY]);
|
|
928
|
+
react$1.useEffect(() => {
|
|
929
|
+
window.addEventListener('mousemove', calculateSafeAreaStartPositon);
|
|
930
|
+
return () => {
|
|
931
|
+
window.removeEventListener('mousemove', calculateSafeAreaStartPositon);
|
|
932
|
+
};
|
|
933
|
+
}, [calculateSafeAreaStartPositon]);
|
|
934
|
+
react$1.useLayoutEffect(() => {
|
|
935
|
+
if (!submenuRef.current) return;
|
|
936
|
+
const safeX = _Number$isFinite__default["default"](percentageX) ? percentageX : 0;
|
|
937
|
+
const safeY = _Number$isFinite__default["default"](percentageY) ? percentageY : 100;
|
|
938
|
+
submenuRef.current.style.setProperty('--safe-start', `${safeX}% ${safeY}%`);
|
|
939
|
+
}, [percentageX, percentageY]);
|
|
940
|
+
const callbackFn = react$1.useCallback(entries => {
|
|
941
|
+
const menuItemBoundingClientRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
|
|
942
|
+
const menuItemTop = menuItemBoundingClientRect?.top || 0;
|
|
943
|
+
const menuItemBottom = menuItemBoundingClientRect?.bottom || 0;
|
|
944
|
+
const _entries = _slicedToArray(entries, 1),
|
|
945
|
+
entry = _entries[0];
|
|
946
|
+
|
|
947
|
+
/**
|
|
948
|
+
* Adding a 12 pixel buffer to the height calculation when determining if the submenu fits within the viewport below the menu item.
|
|
949
|
+
* This buffer accounts for the padding added during link hover, accommodating one additional line height.
|
|
950
|
+
* We need this to account for the additional card height when a hovered submenu text link wraps to the next line,
|
|
951
|
+
* as otherwise the submenu would extend beyond the viewport's bottom edge and flip above the menu item.
|
|
952
|
+
*/
|
|
953
|
+
const SINGLE_LINE_HEIGHT_BUFFER = 12;
|
|
954
|
+
const doesSubmenuFitWithinViewportBelowMenuItem = entry.boundingClientRect.height + (props.isMenuOpen ? menuItemTop : menuItemBottom) + SINGLE_LINE_HEIGHT_BUFFER > window.innerHeight;
|
|
955
|
+
// if the submenu does not fit at the bottom of the viewport (below the menu item)
|
|
956
|
+
if (doesSubmenuFitWithinViewportBelowMenuItem) {
|
|
957
|
+
setIsSubmenuAboveMenuItem(true);
|
|
958
|
+
setSubmenuVerticalPosition(window.innerHeight - (props.isMenuOpen ? menuItemBottom : menuItemTop));
|
|
959
|
+
// show the submenu above the menu item
|
|
960
|
+
} else {
|
|
961
|
+
setIsSubmenuAboveMenuItem(false);
|
|
962
|
+
setSubmenuVerticalPosition(props.isMenuOpen ? menuItemTop : menuItemBottom);
|
|
963
|
+
}
|
|
964
|
+
}, [menuItemIdentifier, props.isMenuOpen]);
|
|
965
|
+
react$1.useLayoutEffect(() => {
|
|
966
|
+
observerRef.current = new IntersectionObserver(callbackFn, {
|
|
967
|
+
rootMargin: '-100% 0px 0px 0px' // we want to observe if the submenu crosses the bottom line of the viewport - therefore we set the root element top margin to -100% of the viewport height
|
|
968
|
+
});
|
|
969
|
+
return () => observerRef.current?.disconnect();
|
|
970
|
+
}, [callbackFn, props.isMenuOpen]);
|
|
971
|
+
react$1.useLayoutEffect(() => {
|
|
972
|
+
const currentSubmenuRef = submenuRef.current;
|
|
973
|
+
const observer = observerRef.current;
|
|
974
|
+
if (!currentSubmenuRef) return;
|
|
975
|
+
if (observer && currentSubmenuRef) {
|
|
976
|
+
observer.observe(currentSubmenuRef);
|
|
977
|
+
}
|
|
978
|
+
setIsSubmenuFocused(false);
|
|
979
|
+
return () => observer?.disconnect();
|
|
980
|
+
}, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
|
|
981
|
+
const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
982
|
+
path: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
983
|
+
exact: false,
|
|
984
|
+
strict: false
|
|
985
|
+
}));
|
|
986
|
+
react$1.useEffect(() => {
|
|
987
|
+
// On first render, check which menu is active for the current application and expand
|
|
988
|
+
// the submenu automatically unless the all navbar is collapsed or there are no submenu links.
|
|
989
|
+
if (props.isMenuOpen && isMainMenuRouteActive && hasSubmenu) {
|
|
990
|
+
props.handleToggleItem();
|
|
991
|
+
}
|
|
992
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
993
|
+
}, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
|
|
994
|
+
|
|
995
|
+
const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
|
|
996
|
+
const handleKeyDown = e => {
|
|
997
|
+
const currentlyFocusedItem = submenuRef.current?.querySelector(':focus');
|
|
998
|
+
if (e.key === 'Enter') {
|
|
999
|
+
setIsSubmenuFocused(true);
|
|
1000
|
+
if (!currentlyFocusedItem) {
|
|
1001
|
+
submenuRef.current?.querySelector('a')?.focus();
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
};
|
|
1005
|
+
return jsxRuntime.jsx(RestrictedMenuItem, {
|
|
1006
|
+
keyOfMenuItem: props.menu.key,
|
|
1007
|
+
featureToggle: props.menu.featureToggle ?? undefined,
|
|
1008
|
+
permissions: props.menu.permissions,
|
|
1009
|
+
actionRights: props.menu.actionRights ?? undefined,
|
|
1010
|
+
dataFences: props.menu.dataFences ?? undefined,
|
|
1011
|
+
projectPermissions: props.projectPermissions,
|
|
1012
|
+
menuVisibilities: props.menuVisibilities,
|
|
1013
|
+
namesOfMenuVisibilities: namesOfMenuVisibilitiesOfAllSubmenus,
|
|
1014
|
+
children: jsxRuntime.jsxs(MenuItem$1, {
|
|
1015
|
+
hasSubmenu: hasSubmenu,
|
|
1016
|
+
isActive: props.isActive,
|
|
1017
|
+
isMainMenuRouteActive: isMainMenuRouteActive,
|
|
1018
|
+
isMenuOpen: props.isMenuOpen,
|
|
1019
|
+
onClick: props.handleToggleItem,
|
|
1020
|
+
onKeyDown: handleKeyDown,
|
|
1021
|
+
onMouseEnter: props.handleToggleItem,
|
|
1022
|
+
onMouseLeave: props.shouldCloseMenuFly,
|
|
1023
|
+
onMouseMove: props.onMouseMove,
|
|
1024
|
+
identifier: menuItemIdentifier,
|
|
1025
|
+
ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
|
|
1026
|
+
children: [jsxRuntime.jsx(MenuItemLink, {
|
|
1027
|
+
linkTo: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
1028
|
+
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
1029
|
+
onClick: props.onMenuItemClick,
|
|
1030
|
+
ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
|
|
1031
|
+
children: jsxRuntime.jsx(ItemContainer, {
|
|
1032
|
+
labelAllLocales: props.menu.labelAllLocales,
|
|
1033
|
+
defaultLabel: props.menu.defaultLabel,
|
|
1034
|
+
applicationLocale: props.applicationLocale,
|
|
1035
|
+
icon: props.menu.icon,
|
|
1036
|
+
isMenuOpen: props.isMenuOpen
|
|
1037
|
+
})
|
|
1038
|
+
}), jsxRuntime.jsxs(MenuGroup, {
|
|
1039
|
+
id: `group-${props.menu.key}`,
|
|
1040
|
+
level: 2,
|
|
1041
|
+
isActive: props.isActive,
|
|
1042
|
+
isExpanded: props.isMenuOpen,
|
|
1043
|
+
hasSubmenu: hasSubmenu,
|
|
1044
|
+
submenuVerticalPosition: submenuVerticalPosition,
|
|
1045
|
+
isSubmenuAboveMenuItem: isSubmenuAboveMenuItem,
|
|
1046
|
+
ref: submenuRef,
|
|
1047
|
+
children: [!props.isMenuOpen && jsxRuntime.jsx(TooltipContainer, {
|
|
1048
|
+
alignsAgainstBottom: isSubmenuAboveMenuItem,
|
|
1049
|
+
children: jsxRuntime.jsx(Tooltip, {
|
|
1050
|
+
"aria-owns": `group-${props.menu.key}`,
|
|
1051
|
+
role: "tooltip",
|
|
1052
|
+
children: jsxRuntime.jsx(MenuLabel, {
|
|
1053
|
+
labelAllLocales: props.menu.labelAllLocales,
|
|
1054
|
+
defaultLabel: props.menu.defaultLabel,
|
|
1055
|
+
applicationLocale: props.applicationLocale
|
|
1056
|
+
})
|
|
1057
|
+
})
|
|
1058
|
+
}), hasSubmenu ? _mapInstanceProperty__default["default"](_context3 = props.menu.submenu).call(_context3, submenu => jsxRuntime.jsx(RestrictedMenuItem, {
|
|
1059
|
+
keyOfMenuItem: submenu.key,
|
|
1060
|
+
featureToggle: submenu.featureToggle ?? undefined,
|
|
1061
|
+
permissions: submenu.permissions,
|
|
1062
|
+
actionRights: submenu.actionRights ?? undefined,
|
|
1063
|
+
dataFences: submenu.dataFences ?? undefined,
|
|
1064
|
+
projectPermissions: props.projectPermissions,
|
|
1065
|
+
menuVisibilities: props.menuVisibilities,
|
|
1066
|
+
namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
|
|
1067
|
+
children: jsxRuntime.jsx(SublistItem, {
|
|
1068
|
+
isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
|
|
1069
|
+
children: jsxRuntime.jsx(Text, {
|
|
1070
|
+
children: jsxRuntime.jsx(MenuItemLink, {
|
|
1071
|
+
linkTo: `/${props.projectKey}/${submenu.uriPath}`
|
|
1072
|
+
// We want to use an exact matching strategy to avoid multiple
|
|
1073
|
+
// links matching sub-routes.
|
|
1074
|
+
,
|
|
1075
|
+
exactMatch: true,
|
|
1076
|
+
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
1077
|
+
onClick: props.onMenuItemClick,
|
|
1078
|
+
isSubmenuLink: true,
|
|
1079
|
+
isSubmenuFocused: isSubmenuFocused,
|
|
1080
|
+
ariaLabel: getMenuAccessibleLabel(submenu.labelAllLocales, submenu.defaultLabel, props.applicationLocale),
|
|
1081
|
+
children: jsxRuntime.jsx(MenuLabel, {
|
|
1082
|
+
labelAllLocales: submenu.labelAllLocales,
|
|
1083
|
+
defaultLabel: submenu.defaultLabel,
|
|
1084
|
+
applicationLocale: props.applicationLocale
|
|
1085
|
+
})
|
|
1086
|
+
})
|
|
1087
|
+
})
|
|
1088
|
+
})
|
|
1089
|
+
}, `${props.menu.key}-submenu-${submenu.key}`)) : null, jsxRuntime.jsx(SafeArea, {
|
|
1090
|
+
ref: submenuSafeAreaRef
|
|
1091
|
+
})]
|
|
1092
|
+
})]
|
|
1093
|
+
})
|
|
1094
|
+
}, props.menu.key);
|
|
1095
|
+
};
|
|
1096
|
+
ApplicationMenu.displayName = 'ApplicationMenu';
|
|
1097
|
+
const NavBar = props => {
|
|
1098
|
+
const _useNavbarStateManage = useNavbarStateManager({
|
|
1099
|
+
environment: props.environment,
|
|
1100
|
+
project: props.project
|
|
1101
|
+
}),
|
|
1102
|
+
navBarNode = _useNavbarStateManage.navBarNode,
|
|
1103
|
+
isMenuOpen = _useNavbarStateManage.isMenuOpen,
|
|
1104
|
+
isExpanderVisible = _useNavbarStateManage.isExpanderVisible,
|
|
1105
|
+
activeItemIndex = _useNavbarStateManage.activeItemIndex,
|
|
1106
|
+
mousePosition = _useNavbarStateManage.mousePosition,
|
|
1107
|
+
handleToggleItem = _useNavbarStateManage.handleToggleItem,
|
|
1108
|
+
handleToggleMenu = _useNavbarStateManage.handleToggleMenu,
|
|
1109
|
+
shouldCloseMenuFly = _useNavbarStateManage.shouldCloseMenuFly,
|
|
1110
|
+
allApplicationsNavbarMenuGroups = _useNavbarStateManage.allApplicationsNavbarMenuGroups,
|
|
1111
|
+
getMousePosition = _useNavbarStateManage.getMousePosition;
|
|
1112
|
+
const useFullRedirectsForLinks = Boolean(props.environment.useFullRedirectsForLinks);
|
|
1113
|
+
const location = reactRouterDom.useLocation();
|
|
1114
|
+
const _useIntl = reactIntl.useIntl(),
|
|
1115
|
+
formatMessage = _useIntl.formatMessage;
|
|
1116
|
+
const projectPermissions = react$1.useMemo(() => ({
|
|
1117
|
+
permissions: applicationShellConnectors.normalizeAllAppliedPermissions(props.project?.allPermissionsForAllApplications.allAppliedPermissions),
|
|
1118
|
+
actionRights: applicationShellConnectors.normalizeAllAppliedActionRights(props.project?.allPermissionsForAllApplications.allAppliedActionRights),
|
|
1119
|
+
dataFences: applicationShellConnectors.normalizeAllAppliedDataFences(props.project?.allPermissionsForAllApplications.allAppliedDataFences)
|
|
1120
|
+
}), [props.project]);
|
|
1121
|
+
const menuVisibilities = react$1.useMemo(() => applicationShellConnectors.normalizeAllAppliedMenuVisibilities(props.project?.allPermissionsForAllApplications.allAppliedMenuVisibilities), [props.project]);
|
|
1122
|
+
const applicationLocale = props.applicationLocale;
|
|
1123
|
+
|
|
1124
|
+
// Render the loading navbar as long as all the data
|
|
1125
|
+
// hasn't been loaded, or if the project does not exist.
|
|
1126
|
+
if (props.isLoading || typeof applicationLocale === 'undefined') {
|
|
1127
|
+
return jsxRuntime.jsx(NavBarSkeleton, {
|
|
1128
|
+
isExpanded: isMenuOpen
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
return jsxRuntime.jsxs(NavBarLayout$1, {
|
|
1132
|
+
ref: navBarNode,
|
|
1133
|
+
children: [jsxRuntime.jsxs(NavigationHeader, {
|
|
1134
|
+
children: [jsxRuntime.jsx(IconWrapper, {
|
|
1135
|
+
children: jsxRuntime.jsx(Icon, {
|
|
1136
|
+
children: jsxRuntime.jsx("img", {
|
|
1137
|
+
src: LogoSVG__default["default"],
|
|
1138
|
+
width: "100%",
|
|
1139
|
+
alt: "Logo"
|
|
1140
|
+
})
|
|
1141
|
+
})
|
|
1142
|
+
}), isMenuOpen ? jsxRuntime.jsx(HeaderTitle, {
|
|
1143
|
+
children: "Merchant Center"
|
|
1144
|
+
}) : null]
|
|
1145
|
+
}), jsxRuntime.jsxs(MenuGroup, {
|
|
1146
|
+
id: "main",
|
|
1147
|
+
level: 1,
|
|
1148
|
+
children: [jsxRuntime.jsx(ScrollableMenu, {
|
|
1149
|
+
children: jsxRuntime.jsx(Spacings__default["default"].Stack, {
|
|
1150
|
+
scale: "l",
|
|
1151
|
+
children: _mapInstanceProperty__default["default"](allApplicationsNavbarMenuGroups).call(allApplicationsNavbarMenuGroups, navbarMenuGroup => {
|
|
1152
|
+
var _context4;
|
|
1153
|
+
return jsxRuntime.jsx("div", {
|
|
1154
|
+
children: _mapInstanceProperty__default["default"](_context4 = navbarMenuGroup.items).call(_context4, menu => {
|
|
1155
|
+
const menuType = 'scrollable';
|
|
1156
|
+
const itemIndex = `${menuType}-${menu.key}`;
|
|
1157
|
+
return jsxRuntime.jsx(ApplicationMenu, {
|
|
1158
|
+
location: location,
|
|
1159
|
+
menu: menu,
|
|
1160
|
+
isActive: activeItemIndex === itemIndex,
|
|
1161
|
+
handleToggleItem: () => handleToggleItem(itemIndex),
|
|
1162
|
+
isMenuOpen: isMenuOpen,
|
|
1163
|
+
shouldCloseMenuFly: shouldCloseMenuFly,
|
|
1164
|
+
projectPermissions: projectPermissions,
|
|
1165
|
+
menuVisibilities: menuVisibilities,
|
|
1166
|
+
applicationLocale: applicationLocale,
|
|
1167
|
+
projectKey: props.projectKey,
|
|
1168
|
+
useFullRedirectsForLinks: useFullRedirectsForLinks,
|
|
1169
|
+
onMenuItemClick: props.onMenuItemClick,
|
|
1170
|
+
onMouseMove: e => getMousePosition(e, itemIndex),
|
|
1171
|
+
mousePosition: mousePosition
|
|
1172
|
+
}, menu.key);
|
|
1173
|
+
})
|
|
1174
|
+
}, navbarMenuGroup.key);
|
|
1175
|
+
})
|
|
1176
|
+
})
|
|
1177
|
+
}), jsxRuntime.jsxs(FixedMenu, {
|
|
1178
|
+
children: [jsxRuntime.jsx(SupportMenu, {
|
|
1179
|
+
children: jsxRuntime.jsxs(MenuItem$1, {
|
|
1180
|
+
hasSubmenu: false,
|
|
1181
|
+
isActive: false,
|
|
1182
|
+
isMenuOpen: isMenuOpen,
|
|
1183
|
+
onClick: () => {
|
|
1184
|
+
handleToggleItem('fixed-support');
|
|
1185
|
+
},
|
|
1186
|
+
onMouseEnter: isMenuOpen ? undefined : () => handleToggleItem('fixed-support'),
|
|
1187
|
+
onMouseLeave: isMenuOpen ? undefined : shouldCloseMenuFly,
|
|
1188
|
+
ariaLabel: formatMessage(messages['NavBar.MCSupport.title']),
|
|
1189
|
+
children: [!isMenuOpen && jsxRuntime.jsx(SupportMenuTooltipContainer, {
|
|
1190
|
+
children: jsxRuntime.jsx(Tooltip, {
|
|
1191
|
+
role: "tooltip",
|
|
1192
|
+
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages['NavBar.MCSupport.title']))
|
|
1193
|
+
})
|
|
1194
|
+
}), jsxRuntime.jsx(TextLink, {
|
|
1195
|
+
href: constants.SUPPORT_PORTAL_URL,
|
|
1196
|
+
rel: "noopener noreferrer",
|
|
1197
|
+
target: "_blank",
|
|
1198
|
+
"aria-label": formatMessage(messages['NavBar.MCSupport.title']),
|
|
1199
|
+
children: jsxRuntime.jsxs(ItemIconText, {
|
|
1200
|
+
children: [jsxRuntime.jsx(IconWrapper, {
|
|
1201
|
+
children: jsxRuntime.jsx(Icon, {
|
|
1202
|
+
className: "icon",
|
|
1203
|
+
children: jsxRuntime.jsx(icons.SupportIcon, {
|
|
1204
|
+
size: "scale"
|
|
1205
|
+
})
|
|
1206
|
+
})
|
|
1207
|
+
}), isMenuOpen ? jsxRuntime.jsx(Title, {
|
|
1208
|
+
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages['NavBar.MCSupport.title']))
|
|
1209
|
+
}) : null]
|
|
1210
|
+
})
|
|
1211
|
+
})]
|
|
1212
|
+
})
|
|
1213
|
+
}), jsxRuntime.jsx(MenuExpander, {
|
|
1214
|
+
isVisible: isExpanderVisible,
|
|
1215
|
+
onClick: handleToggleMenu,
|
|
1216
|
+
isMenuOpen: isMenuOpen
|
|
1217
|
+
})]
|
|
1218
|
+
})]
|
|
1219
|
+
})]
|
|
1220
|
+
});
|
|
1221
|
+
};
|
|
1222
|
+
NavBar.displayName = 'NavBar';
|
|
1223
|
+
|
|
1224
|
+
exports.ApplicationMenu = ApplicationMenu;
|
|
1225
|
+
exports["default"] = NavBar;
|