@commercetools-frontend/application-shell 22.6.0 → 22.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/{application-entry-point-2000359c.cjs.prod.js → application-entry-point-2bbea741.cjs.prod.js} +1 -1
  2. package/dist/{application-entry-point-8c1b932a.cjs.dev.js → application-entry-point-6853f92e.cjs.dev.js} +1 -1
  3. package/dist/{application-entry-point-afa36f4a.esm.js → application-entry-point-97efa554.esm.js} +1 -1
  4. package/dist/commercetools-frontend-application-shell.cjs.dev.js +6 -9
  5. package/dist/commercetools-frontend-application-shell.cjs.prod.js +6 -9
  6. package/dist/commercetools-frontend-application-shell.esm.js +3 -9
  7. package/dist/{configure-apollo-f632e6cf.cjs.prod.js → configure-apollo-2077e9e6.cjs.prod.js} +10 -2
  8. package/dist/{configure-apollo-010b521a.esm.js → configure-apollo-8bcf9317.esm.js} +10 -2
  9. package/dist/{configure-apollo-e0273cd1.cjs.dev.js → configure-apollo-99b8a3fe.cjs.dev.js} +10 -2
  10. package/dist/declarations/src/components/application-shell-authenticated/new-main-navigation-flag-wrapper.d.ts +7 -2
  11. package/dist/declarations/src/components/application-shell-provider/utils.d.ts +1 -1
  12. package/dist/declarations/src/components/custom-view-context/custom-view-context.d.ts +12 -0
  13. package/dist/declarations/src/components/custom-view-context/index.d.ts +1 -0
  14. package/dist/declarations/src/components/custom-view-shell/custom-view-shell.d.ts +9 -0
  15. package/dist/declarations/src/components/custom-view-shell/index.d.ts +1 -0
  16. package/dist/declarations/src/components/custom-view-shell-authenticated/custom-view-shell-authenticated.d.ts +12 -0
  17. package/dist/declarations/src/components/custom-view-shell-authenticated/index.d.ts +1 -0
  18. package/dist/declarations/src/components/navbar/compiled/navbar.css.json.d.ts +1 -1
  19. package/dist/declarations/src/components/navbar/index.d.ts +5 -2
  20. package/dist/declarations/src/components/navbar/menu-items.d.ts +5 -4
  21. package/dist/declarations/src/components/navbar/navbar-skeleton.d.ts +6 -0
  22. package/dist/declarations/src/components/navbar/navbar-skeleton.styles.d.ts +43 -0
  23. package/dist/declarations/src/components/navbar/navbar.d.ts +5 -2
  24. package/dist/declarations/src/index.d.ts +2 -0
  25. package/dist/declarations/src/types/generated/ctp.d.ts +124 -51
  26. package/dist/declarations/src/types/generated/mc.d.ts +0 -83
  27. package/dist/declarations/src/types/generated/settings.d.ts +106 -0
  28. package/dist/index-6c0bc333.cjs.dev.js +2099 -0
  29. package/dist/index-975c5225.esm.js +2032 -0
  30. package/dist/{index-0bfb96a9.cjs.prod.js → index-f85c276c.cjs.prod.js} +265 -472
  31. package/dist/navbar-0cdfe0f7.cjs.prod.js +1173 -0
  32. package/dist/navbar-383d5297.cjs.dev.js +1269 -0
  33. package/dist/navbar-cd29b896.esm.js +1239 -0
  34. package/dist/{oidc-callback-518b3a62.esm.js → oidc-callback-7221e7d2.esm.js} +4 -10
  35. package/dist/{oidc-callback-e0687f34.cjs.prod.js → oidc-callback-7c234583.cjs.prod.js} +4 -10
  36. package/dist/{oidc-callback-54e4b551.cjs.dev.js → oidc-callback-80416189.cjs.dev.js} +4 -10
  37. package/dist/{project-container-17d86e50.cjs.prod.js → project-container-20379b3d.cjs.prod.js} +9 -13
  38. package/dist/{project-container-3243f800.esm.js → project-container-84c7881c.esm.js} +9 -13
  39. package/dist/{project-container-9c7806ef.cjs.dev.js → project-container-c36e4793.cjs.dev.js} +9 -13
  40. package/dist/{project-expired-c3a6aa3c.esm.js → project-expired-6f9e5ff9.esm.js} +5 -11
  41. package/dist/{project-expired-443cd7e0.cjs.prod.js → project-expired-84871cc1.cjs.prod.js} +5 -11
  42. package/dist/{project-expired-6dab919c.cjs.dev.js → project-expired-fea5a2c6.cjs.dev.js} +5 -11
  43. package/dist/{project-not-found-1a5bad77.cjs.dev.js → project-not-found-382b664d.cjs.dev.js} +5 -11
  44. package/dist/{project-not-found-c728c4c2.esm.js → project-not-found-763dcf53.esm.js} +5 -11
  45. package/dist/{project-not-found-5fcc4b22.cjs.prod.js → project-not-found-e55553d5.cjs.prod.js} +5 -11
  46. package/dist/{project-not-initialized-86835aca.esm.js → project-not-initialized-8b3d52be.esm.js} +5 -11
  47. package/dist/{project-not-initialized-c48f8d83.cjs.dev.js → project-not-initialized-aee7541a.cjs.dev.js} +5 -11
  48. package/dist/{project-not-initialized-316131ae.cjs.prod.js → project-not-initialized-be040234.cjs.prod.js} +5 -11
  49. package/dist/{project-suspended-4db209e6.esm.js → project-suspended-02eb3c52.esm.js} +5 -11
  50. package/dist/{project-suspended-2d6404d2.cjs.prod.js → project-suspended-2df71dad.cjs.prod.js} +5 -11
  51. package/dist/{project-suspended-271303c3.cjs.dev.js → project-suspended-506c7b5f.cjs.dev.js} +5 -11
  52. package/dist/{quick-access-097009ce.cjs.dev.js → quick-access-98ac50ec.cjs.dev.js} +3 -8
  53. package/dist/{quick-access-8e4e90a0.cjs.prod.js → quick-access-bd5cc59f.cjs.prod.js} +3 -8
  54. package/dist/{quick-access-07b2fea2.esm.js → quick-access-e474562c.esm.js} +3 -8
  55. package/dist/{redirect-to-login-531c3d52.cjs.dev.js → redirect-to-login-1e136a4f.cjs.dev.js} +1 -1
  56. package/dist/{redirect-to-login-d9dcccac.esm.js → redirect-to-login-2b6962dd.esm.js} +1 -1
  57. package/dist/{redirect-to-login-7cb94c3e.cjs.prod.js → redirect-to-login-cc23cd31.cjs.prod.js} +1 -1
  58. package/dist/{redirect-to-logout-c4173114.esm.js → redirect-to-logout-47a5daea.esm.js} +4 -10
  59. package/dist/{redirect-to-logout-2e314afc.cjs.dev.js → redirect-to-logout-d6dce2e6.cjs.dev.js} +4 -10
  60. package/dist/{redirect-to-logout-54a2fc06.cjs.prod.js → redirect-to-logout-dd88770a.cjs.prod.js} +4 -10
  61. package/dist/{requests-in-flight-loader-0b09c194.esm.js → requests-in-flight-loader-2b781c0e.esm.js} +4 -10
  62. package/dist/{requests-in-flight-loader-ecde7bbe.cjs.prod.js → requests-in-flight-loader-84434d03.cjs.prod.js} +4 -10
  63. package/dist/{requests-in-flight-loader-6ba8df53.cjs.dev.js → requests-in-flight-loader-d908a6df.cjs.dev.js} +4 -10
  64. package/dist/{service-page-project-switcher-a0df49fc.cjs.prod.js → service-page-project-switcher-0546e7be.cjs.prod.js} +1 -1
  65. package/dist/{service-page-project-switcher-1977dcac.cjs.dev.js → service-page-project-switcher-51ec5202.cjs.dev.js} +1 -1
  66. package/dist/{service-page-project-switcher-8ee27c7e.esm.js → service-page-project-switcher-da4d68ce.esm.js} +1 -1
  67. package/dist/{use-applications-menu-4ba2061e.cjs.dev.js → use-applications-menu-08236536.cjs.prod.js} +9 -8
  68. package/dist/{use-applications-menu-f296617c.esm.js → use-applications-menu-1143a5ca.esm.js} +9 -8
  69. package/dist/{use-applications-menu-af860769.cjs.prod.js → use-applications-menu-5873c7ab.cjs.dev.js} +9 -8
  70. package/dist/{user-settings-menu-85485124.cjs.dev.js → user-settings-menu-6a7ff392.cjs.dev.js} +5 -11
  71. package/dist/{user-settings-menu-c7836a3c.esm.js → user-settings-menu-986485b8.esm.js} +5 -11
  72. package/dist/{user-settings-menu-6a7b4699.cjs.prod.js → user-settings-menu-a724a9b9.cjs.prod.js} +5 -11
  73. package/dist/{version-tracker-16b5844a.cjs.prod.js → version-tracker-3d9b5cf0.cjs.prod.js} +1 -1
  74. package/dist/{version-tracker-d30bd05d.cjs.dev.js → version-tracker-90a08689.cjs.dev.js} +1 -1
  75. package/dist/{version-tracker-de5d57b3.esm.js → version-tracker-cba298d4.esm.js} +1 -1
  76. package/package.json +33 -33
  77. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +2 -2
  78. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +2 -2
  79. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +2 -2
  80. package/dist/index-419189bf.cjs.dev.js +0 -2341
  81. package/dist/index-c24c3bbf.esm.js +0 -2262
  82. package/dist/navbar-1e90d18c.cjs.dev.js +0 -609
  83. package/dist/navbar-27c12ed8.esm.js +0 -589
  84. package/dist/navbar-c548a201.cjs.prod.js +0 -588
@@ -1,609 +0,0 @@
1
- 'use strict';
2
-
3
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
4
- var _pt = require('prop-types');
5
- var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
6
- var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
7
- var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
8
- var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
9
- var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
10
- var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
11
- var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
12
- var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
13
- var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
14
- var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
15
- var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
16
- var react = require('react');
17
- var classnames = require('classnames');
18
- var reactIntl = require('react-intl');
19
- var reactRouterDom = require('react-router-dom');
20
- var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
21
- var constants = require('@commercetools-frontend/constants');
22
- var icons = require('@commercetools-uikit/icons');
23
- var dist_commercetoolsFrontendApplicationShell = require('./index-419189bf.cjs.dev.js');
24
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
25
- var isNil = require('lodash/isNil');
26
- var throttle = require('lodash/throttle');
27
- var sentry = require('@commercetools-frontend/sentry');
28
- var constants$1 = require('./constants-a1140922.cjs.dev.js');
29
- var useApplicationsMenu = require('./use-applications-menu-4ba2061e.cjs.dev.js');
30
- var jsxRuntime = require('@emotion/react/jsx-runtime');
31
- require('./configure-apollo-e0273cd1.cjs.dev.js');
32
- require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
33
- require('@babel/runtime-corejs3/core-js-stable/object/entries');
34
- require('@babel/runtime-corejs3/core-js-stable/reflect/has');
35
- require('@reduxjs/toolkit');
36
- require('lodash/mapValues');
37
- require('omit-empty-es');
38
- require('redux-thunk');
39
- require('@commercetools-frontend/notifications');
40
- require('@commercetools-frontend/sdk');
41
- require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
42
- require('@babel/runtime-corejs3/core-js-stable/instance/slice');
43
- require('@babel/runtime-corejs3/core-js-stable/instance/includes');
44
- require('@commercetools-frontend/react-notifications');
45
- require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
46
- require('redux-logger');
47
- require('@babel/runtime-corejs3/core-js-stable/url');
48
- require('@babel/runtime-corejs3/core-js-stable/instance/find');
49
- require('@apollo/client');
50
- require('apollo-link-logger');
51
- require('@apollo/client/link/error');
52
- require('@commercetools-frontend/browser-history');
53
- require('@babel/runtime-corejs3/core-js-stable/instance/some');
54
- require('@babel/runtime-corejs3/core-js-stable/object/values');
55
- require('@commercetools/http-user-agent');
56
- require('uuid');
57
- require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
58
- require('@babel/runtime-corejs3/helpers/createClass');
59
- require('@babel/runtime-corejs3/helpers/classCallCheck');
60
- require('@babel/runtime-corejs3/helpers/assertThisInitialized');
61
- require('@babel/runtime-corejs3/helpers/inherits');
62
- require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
63
- require('@babel/runtime-corejs3/helpers/getPrototypeOf');
64
- require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
65
- require('@babel/runtime-corejs3/core-js-stable/json/stringify');
66
- require('@apollo/client/link/retry');
67
- require('@emotion/styled/base');
68
- require('@emotion/react');
69
- require('@commercetools-frontend/application-components');
70
- require('@commercetools-frontend/i18n');
71
- require('@commercetools-frontend/assets/images/logo.svg');
72
- require('@commercetools-uikit/design-system');
73
- require('@commercetools-uikit/spacings');
74
- require('@commercetools-uikit/flat-button');
75
- require('./use-is-served-by-proxy-ed411f45.cjs.dev.js');
76
- require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
77
- require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
78
- require('memoize-one');
79
- require('@commercetools-uikit/accessible-hidden');
80
- require('@commercetools-uikit/select-input');
81
- require('@apollo/client/react');
82
- require('@commercetools-frontend/assets/images/ct-logo.svg');
83
- require('@commercetools-uikit/loading-spinner');
84
- require('@commercetools-frontend/l10n');
85
- require('@babel/runtime-corejs3/core-js-stable/array/from');
86
- require('@babel/runtime-corejs3/core-js-stable/instance/every');
87
- require('@flopflip/react-broadcast');
88
- require('@commercetools-frontend/assets/images/diagonal-line.svg');
89
- require('@commercetools-frontend/permissions');
90
- require('@commercetools-uikit/icons/inline-svg');
91
- require('@babel/runtime-corejs3/core-js-stable/object/from-entries');
92
- require('@babel/runtime-corejs3/core-js-stable/instance/flags');
93
- require('@flopflip/combine-adapters');
94
- require('@flopflip/http-adapter');
95
- require('@flopflip/launchdarkly-adapter');
96
- require('react-redux');
97
- require('lodash/upperFirst');
98
- require('./oidc-244125d3.cjs.dev.js');
99
- require('@commercetools-uikit/design-system/materials/resets.css');
100
- require('@commercetools-frontend/actions-global');
101
- require('@commercetools-frontend/application-config/ssr');
102
-
103
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
104
-
105
- var _pt__default = /*#__PURE__*/_interopDefault(_pt);
106
- var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
107
- var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
108
- var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
109
- var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
110
- var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
111
- var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
112
- var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
113
- var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
114
- var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
115
- var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
116
- var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
117
- var classnames__default = /*#__PURE__*/_interopDefault(classnames);
118
- var isNil__default = /*#__PURE__*/_interopDefault(isNil);
119
- var throttle__default = /*#__PURE__*/_interopDefault(throttle);
120
-
121
- var messages = reactIntl.defineMessages({
122
- 'NavBar.MCSupport.title': {
123
- id: 'NavBar.MCSupport.title',
124
- defaultMessage: 'Support'
125
- }
126
- });
127
-
128
- // Type guard to help with filtering arrays for nullish elements.
129
- function nonNullable(value) {
130
- return value !== null && value !== undefined;
131
- }
132
-
133
- function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
134
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$1(Object(source), !0)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$1(Object(source))).call(_context5, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
135
- 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 } } } };
136
- const getInitialState = isForcedMenuOpen => ({
137
- isExpanderVisible: true,
138
- isMenuOpen: isNil__default["default"](isForcedMenuOpen) ? false : isForcedMenuOpen
139
- });
140
- const reducer = (state, action) => {
141
- switch (action.type) {
142
- case 'setActiveItemIndex':
143
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
144
- activeItemIndex: action.payload
145
- });
146
- case 'unsetActiveItemIndex':
147
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
148
- activeItemIndex: undefined
149
- });
150
- case 'setIsExpanderVisible':
151
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
152
- isExpanderVisible: true
153
- });
154
- case 'toggleIsMenuOpen':
155
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
156
- isMenuOpen: !state.isMenuOpen
157
- });
158
- case 'setIsMenuOpenAndMakeExpanderVisible':
159
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
160
- isExpanderVisible: true,
161
- isMenuOpen: action.payload
162
- });
163
- case 'reset':
164
- return {
165
- isExpanderVisible: false,
166
- isMenuOpen: false
167
- };
168
- default:
169
- return state;
170
- }
171
- };
172
- const useNavbarStateManager = props => {
173
- var _context, _context2;
174
- const navBarNode = react.useRef(null);
175
- const applicationsNavBarMenu = useApplicationsMenu.useApplicationsMenu('navBar', {
176
- queryOptions: {
177
- onError: sentry.reportErrorToSentry
178
- },
179
- environment: props.environment
180
- });
181
- const _useMcQuery = dist_commercetoolsFrontendApplicationShell.useMcQuery(FetchProjectExtensionsNavbar, {
182
- skip: !props.environment.servedByProxy,
183
- context: {
184
- target: constants.GRAPHQL_TARGETS.SETTINGS_SERVICE
185
- },
186
- fetchPolicy: 'cache-and-network',
187
- onError: sentry.reportErrorToSentry
188
- }),
189
- projectExtensionsQuery = _useMcQuery.data;
190
- const allCustomApplicationsNavbarMenu = projectExtensionsQuery && projectExtensionsQuery.projectExtension && projectExtensionsQuery.projectExtension.installedApplications ? _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = projectExtensionsQuery.projectExtension.installedApplications).call(_context2, installedApplication => {
191
- var _context3;
192
- const application = installedApplication.application;
193
- // Map the menu properties to match the one from the proxy schema.
194
- // This is to ensure that the menu object is the same from the proxy
195
- // config and the custom apps config, thus allowing them to be
196
- // concatenated and rendered the same way.
197
- return {
198
- key: application.id,
199
- uriPath: application.entryPointUriPath,
200
- labelAllLocales: application.mainMenuLink.labelAllLocales || [],
201
- icon: application.icon,
202
- permissions: application.mainMenuLink.permissions,
203
- defaultLabel: application.mainMenuLink.defaultLabel,
204
- featureToggle: undefined,
205
- menuVisibility: undefined,
206
- actionRights: undefined,
207
- dataFences: undefined,
208
- submenu: _mapInstanceProperty__default["default"](_context3 = application.submenuLinks || []).call(_context3, submenuLink => ({
209
- key: submenuLink.id,
210
- uriPath: submenuLink.uriPath,
211
- labelAllLocales: submenuLink.labelAllLocales || [],
212
- permissions: submenuLink.permissions,
213
- defaultLabel: submenuLink.defaultLabel,
214
- featureToggle: undefined,
215
- menuVisibility: undefined,
216
- actionRights: undefined,
217
- dataFences: undefined
218
- }))
219
- };
220
- })).call(_context, nonNullable) : [];
221
- const cachedIsForcedMenuOpen = window.localStorage.getItem(constants$1.STORAGE_KEYS.IS_FORCED_MENU_OPEN);
222
- const isForcedMenuOpen = isNil__default["default"](cachedIsForcedMenuOpen) ? null : JSON.parse(cachedIsForcedMenuOpen);
223
- const _useReducer = react.useReducer(reducer, getInitialState(isForcedMenuOpen)),
224
- _useReducer2 = _slicedToArray(_useReducer, 2),
225
- state = _useReducer2[0],
226
- dispatch = _useReducer2[1];
227
- const checkSize = react.useCallback(throttle__default["default"](() => {
228
- const shouldOpen = window.innerWidth > 1024;
229
- const canExpandMenu = window.innerWidth > 918;
230
-
231
- // If the screen is small, we should always keep the menu closed,
232
- // no matter the settings.
233
- if (!canExpandMenu) {
234
- if (state.isMenuOpen || state.isExpanderVisible) {
235
- // and resets the state to avoid conflicts
236
- dispatch({
237
- type: 'reset'
238
- });
239
- }
240
- } else if (canExpandMenu && state.isExpanderVisible !== true) {
241
- dispatch({
242
- type: 'setIsExpanderVisible'
243
- });
244
- } else if (isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== shouldOpen) {
245
- // User has no settings yet (this.props.isForcedMenuOpen === null)
246
- // We check the viewport size and:
247
- // - if screen is big, we open the menu
248
- // - if screen is small we close it
249
- dispatch({
250
- type: 'setIsMenuOpenAndMakeExpanderVisible',
251
- payload: shouldOpen
252
- });
253
- } else if (!isNil__default["default"](isForcedMenuOpen) && state.isMenuOpen !== isForcedMenuOpen) {
254
- // User has setting, we should use that and ignore the screen size.
255
- // Note: if viewport size is small, we should ignore the user settings.
256
- dispatch({
257
- type: 'setIsMenuOpenAndMakeExpanderVisible',
258
- payload: isForcedMenuOpen
259
- });
260
- }
261
- }, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
262
- const shouldCloseMenuFly = react.useCallback(event => {
263
- if (navBarNode && navBarNode.current && !navBarNode.current.contains(event.target) && !state.isMenuOpen) dispatch({
264
- type: 'unsetActiveItemIndex'
265
- });else if (event.type === 'mouseleave') dispatch({
266
- type: 'unsetActiveItemIndex'
267
- });
268
- }, [state.isMenuOpen]);
269
- react.useEffect(() => {
270
- window.addEventListener('resize', checkSize);
271
- window.addEventListener('click', shouldCloseMenuFly, true);
272
- return () => {
273
- window.removeEventListener('resize', checkSize);
274
- window.removeEventListener('click', shouldCloseMenuFly, true);
275
- };
276
- }, [checkSize, shouldCloseMenuFly]);
277
- react.useEffect(() => {
278
- checkSize();
279
- // eslint-disable-next-line react-hooks/exhaustive-deps
280
- }, []); // <-- run this only once!!
281
-
282
- react.useLayoutEffect(() => {
283
- if (state.isMenuOpen) document.body.classList.add('body__menu-open');
284
- if (!state.isMenuOpen) document.body.classList.remove('body__menu-open');
285
- }, [state.isMenuOpen]);
286
- const handleToggleItem = react.useCallback(nextActiveItemIndex => {
287
- if (state.activeItemIndex !== nextActiveItemIndex) dispatch({
288
- type: 'setActiveItemIndex',
289
- payload: nextActiveItemIndex
290
- });
291
- }, [state.activeItemIndex]);
292
- const handleToggleMenu = react.useCallback(() => {
293
- if (state.isMenuOpen && state.activeItemIndex) {
294
- dispatch({
295
- type: 'unsetActiveItemIndex'
296
- });
297
- }
298
- dispatch({
299
- type: 'toggleIsMenuOpen'
300
- });
301
- // Synchronize the menu state with local storage.
302
- window.localStorage.setItem(constants$1.STORAGE_KEYS.IS_FORCED_MENU_OPEN, String(!state.isMenuOpen));
303
- }, [state.activeItemIndex, state.isMenuOpen]);
304
- const allInternalApplicationsNavbarMenu = applicationsNavBarMenu || [];
305
- return _objectSpread$1(_objectSpread$1({}, state), {}, {
306
- navBarNode,
307
- handleToggleItem,
308
- handleToggleMenu,
309
- shouldCloseMenuFly,
310
- allInternalApplicationsNavbarMenu,
311
- allCustomApplicationsNavbarMenu
312
- });
313
- };
314
-
315
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
316
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context8, _context9; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context8 = ownKeys(Object(source), !0)).call(_context8, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context9 = ownKeys(Object(source))).call(_context9, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
317
- // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
318
- const compiledStyles = {
319
- "global": ":root {\n\n /* Left navigation */\n}\n\n/* Left Nav */\n\n.navbar-mod__left-navigation___n7yUt {\n display: flex;\n flex-grow: 1;\n width: 64px;\n z-index: 19999;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background: var(--background-color-for-navbar);\n}\n\n.navbar-mod__list___RCV3J {\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1 1 0;\n}\n\n.body__menu-open .navbar-mod__scrollable-menu___64pxJ {\n flex: 1 1 0;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.navbar-mod__list-item___MjK6t {\n width: 64px;\n min-height: 56px;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background: var(--background-color-for-navbar);\n margin: 0;\n list-style: none;\n cursor: pointer;\n}\n\n.navbar-mod__item-link___X2Ina {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n padding: var(--spacing-m);\n width: 100%;\n position: relative;\n display: block;\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__item-icon-text___a-8JY {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__icon___bLsep {\n width: 24px;\n height: 24px;\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__icon___bLsep > svg *:not([fill='none']) {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n fill: var(--color-for-navbar-icon);\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__icon__active___asorg > svg *:not([fill='none']) {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n fill: var(--color-for-navbar-icon-when-active);\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__title___eRWUj {\n flex: 1;\n font-weight: 500;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-size: var(--font-size-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n line-height: var(--line-height-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n display: none;\n opacity: 0;\n transition: all 0.25s ease-in-out;\n text-align: left;\n text-decoration: none;\n}\n\n.navbar-mod__expander___jyAUi {\n border-top: 1px solid var(--color-neutral-40);\n height: 50px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n}\n\n.navbar-mod__expander___jyAUi:hover {\n background: transparent !important;\n}\n\n.navbar-mod__expand-icon___BtmRa {\n align-items: center;\n border-radius: 32px;\n cursor: pointer;\n display: flex;\n height: 24px;\n justify-content: center;\n transform: translateX(0) rotateZ(0deg);\n width: 24px;\n}\n\n.navbar-mod__item--bottom___eW7nh {\n position: absolute;\n bottom: 50px;\n}\n\n.navbar-mod__list-item___MjK6t:hover {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background-color: var(--background-color-for-navbar-when-hovered);\n}\n\n.navbar-mod__item__active___lo1sr .navbar-mod__title___eRWUj {\n opacity: 1;\n display: block;\n transition: all 0.2s ease;\n}\n\n.navbar-mod__item_menu-open___zk0zh {\n height: auto !important;\n}\n\n/* NO SUBMENU */\n\n.navbar-mod__item_menu-collapsed___cluyY .navbar-mod__item-link___X2Ina {\n text-align: center;\n}\n\n.navbar-mod__item__no-submenu___0lmiH .navbar-mod__title___eRWUj {\n border-bottom: 0;\n}\n\n.navbar-mod__item__no-submenu___0lmiH .navbar-mod__sublist___os1s7 {\n padding-top: 40px;\n}\n\n/* left-nav open */\n\n.body__menu-open .navbar-mod__title___eRWUj {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n font-weight: 500;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-size: var(--font-size-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n line-height: var(--line-height-for-navbar-link);\n}\n\n.body__menu-open .navbar-mod__left-navigation___n7yUt {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n box-shadow: var(--shadow-for-navbar);\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t {\n height: auto;\n min-height: 56px;\n transition: max-height 0.15s ease-out;\n overflow: hidden;\n}\n\n.body__menu-open .navbar-mod__left-navigation___n7yUt,\n.body__menu-open .navbar-mod__list-item___MjK6t {\n width: 245px;\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t .navbar-mod__title___eRWUj {\n display: block;\n opacity: 1;\n margin-left: var(--spacing-m);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n}\n\n.navbar-mod__list-item___MjK6t:not(.navbar-mod__item__active___lo1sr):hover .navbar-mod__icon___bLsep > svg *:not([fill='none']) {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n fill: var(--color-for-navbar-icon-when-active);\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__title___eRWUj:hover {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-hovered);\n}\n\n.navbar-mod__list-item___MjK6t:not(.navbar-mod__item__active___lo1sr):hover .navbar-mod__title___eRWUj {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-hovered);\n}\n\n.body__menu-open .navbar-mod__expand-icon___BtmRa {\n transform: translateX(0) rotateZ(180deg);\n}\n\n.body__menu-open .navbar-mod__item__active___lo1sr {\n max-height: 500px;\n transition: max-height 0.25s ease-in;\n}\n\n.body__menu-open .navbar-mod__sublist___os1s7 {\n position: relative;\n z-index: 1;\n left: 0;\n margin: 0 0 0 calc(\n 24px + var(--spacing-m) + 4px + 4px\n );\n padding: var(--spacing-m) 0 0;\n background-color: transparent;\n}\n\n.body__menu-open .navbar-mod__sublist___os1s7.navbar-mod__sublist-no-children___Dy-h- {\n border: 0;\n}\n\n.body__menu-open .navbar-mod__title-copy___o2y1q {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-size: var(--font-size-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n text-decoration: none;\n transition: all 0.15s ease;\n}\n\n.body__menu-open .navbar-mod__title-copy___o2y1q:hover {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-hovered);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link-when-hovered);\n}\n\n.body__menu-open .navbar-mod__expander___jyAUi {\n min-height: 50px;\n justify-content: flex-end;\n padding: var(--spacing-m);\n}\n\n/* Second level menu */\n\n.navbar-mod__sublist___os1s7 {\n padding: 75px var(--spacing-l) var(--spacing-m);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-size: var(--font-size-for-navbar-link);\n position: absolute;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background-color: var(--background-color-for-navbar);\n top: 0;\n left: 64px;\n z-index: -1;\n list-style: none;\n opacity: 0.01;\n visibility: hidden;\n}\n\n.navbar-mod__sublist__inactive___kJvf- {\n /* empty block */\n}\n\n.navbar-mod__sublist-item___gafkS {\n padding: var(--spacing-s) 0 0;\n}\n\n.navbar-mod__sublist-item___gafkS:first-of-type {\n padding: 0;\n}\n\n.navbar-mod__sublist-item___gafkS:hover {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-hovered);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link-when-hovered);\n}\n\n.navbar-mod__text___ccHEu {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-size: var(--font-size-for-navbar-link);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n line-height: var(--line-height-for-navbar-link);\n}\n\n.navbar-mod__text-link___dhtj6 {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link);\n text-decoration: none;\n transition: all 0.15s ease;\n}\n\n.navbar-mod__text-link___dhtj6:hover {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-hovered);\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link-when-hovered);\n}\n\n/* Item active */\n\n.navbar-mod__item__active___lo1sr,\n.navbar-mod__item_menu__active___5xFRw {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background: var(--background-color-for-navbar-when-active);\n}\n\n.navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY {\n width: calc(\n 205px + 64px -\n var(--spacing-m) * 2\n );\n justify-content: flex-start;\n}\n\n.navbar-mod__list-item___MjK6t .navbar-mod__icon-container___w3FtA {\n width: calc(24px + 4px * 2);\n display: flex;\n justify-content: center;\n align-self: flex-start;\n}\n\n.navbar-mod__fixed-menu___42tD9 .navbar-mod__list-item___MjK6t .navbar-mod__item-icon-text___a-8JY {\n justify-content: flex-start;\n display: flex;\n width: 100%;\n}\n\n.navbar-mod__fixed-menu___42tD9 .navbar-mod__list-item___MjK6t .navbar-mod__icon-container___w3FtA {\n /* empty block */\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY {\n position: relative;\n width: auto;\n}\n\n.navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY .navbar-mod__title___eRWUj {\n margin-left: 40px;\n}\n\n.navbar-mod__item_menu-collapsed___cluyY.navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY .navbar-mod__title___eRWUj {\n max-height: 44px;\n overflow: hidden;\n /* stylelint-disable-next-line value-no-vendor-prefix */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY .navbar-mod__title___eRWUj {\n margin-left: var(--spacing-m);\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__item-icon-text___a-8JY {\n margin-left: 0;\n}\n\n.navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__sublist___os1s7 {\n width: 205px;\n min-height: 100%;\n}\n\n.body__menu-open .navbar-mod__list-item___MjK6t.navbar-mod__item__active___lo1sr .navbar-mod__sublist___os1s7 {\n width: calc(100% - calc(\n 24px + var(--spacing-m) + 4px + 4px\n ));\n}\n\n.navbar-mod__sublist-expanded__active___240JK,\n.navbar-mod__sublist-collapsed__active___-9vYh {\n opacity: 1;\n visibility: visible;\n text-align: left;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n background-color: var(--background-color-for-navbar-when-active);\n}\n\n.navbar-mod__highlighted___oJWkA,\n.navbar-mod__highlighted___oJWkA .navbar-mod__title___eRWUj {\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n color: var(--color-for-navbar-link-when-active) !important;\n /* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */\n font-weight: var(--font-weight-for-navbar-link-when-active);\n}\n\n.navbar-mod__hidden___TQLSs {\n display: none;\n}\n\n.navbar-mod__divider___TpVzu {\n border-top: 1px solid var(--color-neutral-40);\n}\n\n.navbar-mod__loading-dot-container___G2LVb {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.navbar-mod__scrollable-menu___64pxJ {\n flex: 1 1 0;\n padding-bottom: 32px;\n /* \n FIXME: Make the navbar scrollable in collapsed state.\n NOTE: do not use `overflow-x: hidden; overflow-y: auto;` as this prevents submenus from showing up on hover \n */\n}\n\n.navbar-mod__fixed-menu___42tD9 {\n flex: 0 0 0;\n position: relative;\n}\n",
320
- "jsonMap": {
321
- "left-navigation": "navbar-mod__left-navigation___n7yUt",
322
- "list": "navbar-mod__list___RCV3J",
323
- "scrollable-menu": "navbar-mod__scrollable-menu___64pxJ",
324
- "list-item": "navbar-mod__list-item___MjK6t",
325
- "item-link": "navbar-mod__item-link___X2Ina",
326
- "item-icon-text": "navbar-mod__item-icon-text___a-8JY",
327
- "icon": "navbar-mod__icon___bLsep",
328
- "icon__active": "navbar-mod__icon__active___asorg",
329
- "title": "navbar-mod__title___eRWUj",
330
- "expander": "navbar-mod__expander___jyAUi",
331
- "expand-icon": "navbar-mod__expand-icon___BtmRa",
332
- "item--bottom": "navbar-mod__item--bottom___eW7nh",
333
- "item__active": "navbar-mod__item__active___lo1sr",
334
- "item_menu-open": "navbar-mod__item_menu-open___zk0zh",
335
- "item_menu-collapsed": "navbar-mod__item_menu-collapsed___cluyY",
336
- "item__no-submenu": "navbar-mod__item__no-submenu___0lmiH",
337
- "sublist": "navbar-mod__sublist___os1s7",
338
- "sublist-no-children": "navbar-mod__sublist-no-children___Dy-h-",
339
- "title-copy": "navbar-mod__title-copy___o2y1q",
340
- "sublist__inactive": "navbar-mod__sublist__inactive___kJvf-",
341
- "sublist-item": "navbar-mod__sublist-item___gafkS",
342
- "text": "navbar-mod__text___ccHEu",
343
- "text-link": "navbar-mod__text-link___dhtj6",
344
- "item_menu__active": "navbar-mod__item_menu__active___5xFRw",
345
- "icon-container": "navbar-mod__icon-container___w3FtA",
346
- "fixed-menu": "navbar-mod__fixed-menu___42tD9",
347
- "sublist-expanded__active": "navbar-mod__sublist-expanded__active___240JK",
348
- "sublist-collapsed__active": "navbar-mod__sublist-collapsed__active___-9vYh",
349
- "highlighted": "navbar-mod__highlighted___oJWkA",
350
- "hidden": "navbar-mod__hidden___TQLSs",
351
- "divider": "navbar-mod__divider___TpVzu",
352
- "loading-dot-container": "navbar-mod__loading-dot-container___G2LVb"
353
- }
354
- };
355
- const styles = compiledStyles.jsonMap;
356
- const getMenuVisibilitiesOfSubmenus = menu => {
357
- var _context, _context2;
358
- return _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = menu.submenu).call(_context2, submenu => submenu.menuVisibility)).call(_context, nonNullable);
359
- };
360
- const getMenuVisibilityOfMainmenu = menu => menu.menuVisibility ? [menu.menuVisibility] : [];
361
- const ApplicationMenu = props => {
362
- var _context3, _props$menu$featureTo, _props$menu$actionRig, _props$menu$dataFence, _context4, _context5;
363
- const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
364
- path: _concatInstanceProperty__default["default"](_context3 = "/".concat(props.projectKey, "/")).call(_context3, props.menu.uriPath),
365
- exact: false,
366
- strict: false
367
- }));
368
- const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
369
- react.useEffect(() => {
370
- // On first render, check which menu is active for the current application and expand
371
- // the submenu automatically unless the all navbar is collapsed or there are no submenu links.
372
- if (props.isMenuOpen && isMainMenuRouteActive && hasSubmenu) {
373
- props.handleToggleItem();
374
- }
375
- // eslint-disable-next-line react-hooks/exhaustive-deps
376
- }, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
377
-
378
- const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
379
- const isMainMenuItemALink =
380
- // 1. When the navbar is collapsed
381
- !props.isMenuOpen ||
382
- // 2. When there is no submenu
383
- !hasSubmenu ||
384
- // 3. When the submenu group is active/visible
385
- props.isActive;
386
- return jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.RestrictedMenuItem, {
387
- keyOfMenuItem: props.menu.key,
388
- featureToggle: (_props$menu$featureTo = props.menu.featureToggle) !== null && _props$menu$featureTo !== void 0 ? _props$menu$featureTo : undefined,
389
- permissions: props.menu.permissions,
390
- actionRights: (_props$menu$actionRig = props.menu.actionRights) !== null && _props$menu$actionRig !== void 0 ? _props$menu$actionRig : undefined,
391
- dataFences: (_props$menu$dataFence = props.menu.dataFences) !== null && _props$menu$dataFence !== void 0 ? _props$menu$dataFence : undefined,
392
- projectPermissions: props.projectPermissions,
393
- menuVisibilities: props.menuVisibilities,
394
- namesOfMenuVisibilities: namesOfMenuVisibilitiesOfAllSubmenus,
395
- children: jsxRuntime.jsxs(dist_commercetoolsFrontendApplicationShell.MenuItem, {
396
- hasSubmenu: hasSubmenu,
397
- isActive: props.isActive,
398
- isMainMenuRouteActive: isMainMenuRouteActive,
399
- isMenuOpen: props.isMenuOpen,
400
- onClick: props.handleToggleItem,
401
- onMouseEnter: props.isMenuOpen ? undefined : props.handleToggleItem,
402
- onMouseLeave: props.isMenuOpen ? undefined : props.shouldCloseMenuFly,
403
- children: [jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuItemLink, {
404
- linkTo: isMainMenuItemALink ? _concatInstanceProperty__default["default"](_context4 = "/".concat(props.projectKey, "/")).call(_context4, props.menu.uriPath) : undefined,
405
- useFullRedirectsForLinks: props.useFullRedirectsForLinks,
406
- onClick: props.onMenuItemClick,
407
- children: jsxRuntime.jsxs("div", {
408
- className: styles['item-icon-text'],
409
- children: [jsxRuntime.jsx("div", {
410
- className: styles['icon-container'],
411
- children: jsxRuntime.jsx("div", {
412
- className: classnames__default["default"](styles.icon, {
413
- [styles.icon__active]: props.isActive || isMainMenuRouteActive
414
- }),
415
- children: jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.IconSwitcher, {
416
- icon: props.menu.icon,
417
- size: "scale"
418
- })
419
- })
420
- }), jsxRuntime.jsx("div", {
421
- className: styles.title,
422
- "aria-owns": "group-".concat(props.menu.key),
423
- children: jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuLabel, {
424
- labelAllLocales: props.menu.labelAllLocales,
425
- defaultLabel: props.menu.defaultLabel,
426
- applicationLocale: props.applicationLocale
427
- })
428
- })]
429
- })
430
- }), jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuGroup, {
431
- id: props.menu.key,
432
- level: 2,
433
- isActive: props.isActive,
434
- isExpanded: props.isMenuOpen,
435
- hasSubmenu: hasSubmenu,
436
- children: hasSubmenu ? _mapInstanceProperty__default["default"](_context5 = props.menu.submenu).call(_context5, submenu => {
437
- var _context6, _submenu$featureToggl, _submenu$actionRights, _submenu$dataFences, _context7;
438
- return jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.RestrictedMenuItem, {
439
- keyOfMenuItem: submenu.key,
440
- featureToggle: (_submenu$featureToggl = submenu.featureToggle) !== null && _submenu$featureToggl !== void 0 ? _submenu$featureToggl : undefined,
441
- permissions: submenu.permissions,
442
- actionRights: (_submenu$actionRights = submenu.actionRights) !== null && _submenu$actionRights !== void 0 ? _submenu$actionRights : undefined,
443
- dataFences: (_submenu$dataFences = submenu.dataFences) !== null && _submenu$dataFences !== void 0 ? _submenu$dataFences : undefined,
444
- projectPermissions: props.projectPermissions,
445
- menuVisibilities: props.menuVisibilities,
446
- namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
447
- children: jsxRuntime.jsx("li", {
448
- className: styles['sublist-item'],
449
- children: jsxRuntime.jsx("div", {
450
- className: styles.text,
451
- children: jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuItemLink, {
452
- linkTo: _concatInstanceProperty__default["default"](_context7 = "/".concat(props.projectKey, "/")).call(_context7, submenu.uriPath)
453
- // We want to use an exact matching strategy to avoid multiple
454
- // links matching sub-routes.
455
- ,
456
- exactMatch: true,
457
- useFullRedirectsForLinks: props.useFullRedirectsForLinks,
458
- onClick: props.onMenuItemClick,
459
- children: jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuLabel, {
460
- labelAllLocales: submenu.labelAllLocales,
461
- defaultLabel: submenu.defaultLabel,
462
- applicationLocale: props.applicationLocale
463
- })
464
- })
465
- })
466
- })
467
- }, _concatInstanceProperty__default["default"](_context6 = "".concat(props.menu.key, "-submenu-")).call(_context6, submenu.key));
468
- }) : null
469
- })]
470
- })
471
- }, props.menu.key);
472
- };
473
- ApplicationMenu.propTypes = process.env.NODE_ENV !== "production" ? {
474
- menu: _pt__default["default"].oneOfType([_pt__default["default"].any, _pt__default["default"].shape({
475
- defaultLabel: _pt__default["default"].string
476
- })]).isRequired,
477
- isActive: _pt__default["default"].bool.isRequired,
478
- isMenuOpen: _pt__default["default"].bool.isRequired,
479
- shouldCloseMenuFly: _pt__default["default"].func.isRequired,
480
- projectPermissions: _pt__default["default"].shape({
481
- permissions: _pt__default["default"].oneOfType([_pt__default["default"].any, _pt__default["default"].oneOf([null])]),
482
- actionRights: _pt__default["default"].oneOfType([_pt__default["default"].any, _pt__default["default"].oneOf([null])]),
483
- dataFences: _pt__default["default"].oneOfType([_pt__default["default"].any, _pt__default["default"].oneOf([null])])
484
- }).isRequired,
485
- menuVisibilities: _pt__default["default"].oneOfType([_pt__default["default"].any, _pt__default["default"].oneOf([null])]),
486
- handleToggleItem: _pt__default["default"].func.isRequired,
487
- applicationLocale: _pt__default["default"].string.isRequired,
488
- projectKey: _pt__default["default"].string.isRequired,
489
- useFullRedirectsForLinks: _pt__default["default"].bool.isRequired
490
- } : {};
491
- ApplicationMenu.displayName = 'ApplicationMenu';
492
- const NavBar = props => {
493
- const _useNavbarStateManage = useNavbarStateManager({
494
- environment: props.environment
495
- }),
496
- navBarNode = _useNavbarStateManage.navBarNode,
497
- isMenuOpen = _useNavbarStateManage.isMenuOpen,
498
- isExpanderVisible = _useNavbarStateManage.isExpanderVisible,
499
- activeItemIndex = _useNavbarStateManage.activeItemIndex,
500
- handleToggleItem = _useNavbarStateManage.handleToggleItem,
501
- handleToggleMenu = _useNavbarStateManage.handleToggleMenu,
502
- shouldCloseMenuFly = _useNavbarStateManage.shouldCloseMenuFly,
503
- allInternalApplicationsNavbarMenu = _useNavbarStateManage.allInternalApplicationsNavbarMenu,
504
- allCustomApplicationsNavbarMenu = _useNavbarStateManage.allCustomApplicationsNavbarMenu;
505
- const useFullRedirectsForLinks = Boolean(props.environment.useFullRedirectsForLinks);
506
- const location = reactRouterDom.useLocation();
507
- const projectPermissions = react.useMemo(() => {
508
- var _props$project, _props$project2, _props$project3;
509
- return {
510
- permissions: applicationShellConnectors.normalizeAllAppliedPermissions((_props$project = props.project) === null || _props$project === void 0 ? void 0 : _props$project.allPermissionsForAllApplications.allAppliedPermissions),
511
- actionRights: applicationShellConnectors.normalizeAllAppliedActionRights((_props$project2 = props.project) === null || _props$project2 === void 0 ? void 0 : _props$project2.allPermissionsForAllApplications.allAppliedActionRights),
512
- dataFences: applicationShellConnectors.normalizeAllAppliedDataFences((_props$project3 = props.project) === null || _props$project3 === void 0 ? void 0 : _props$project3.allPermissionsForAllApplications.allAppliedDataFences)
513
- };
514
- }, [props.project]);
515
- const menuVisibilities = react.useMemo(() => {
516
- var _props$project4;
517
- return applicationShellConnectors.normalizeAllAppliedMenuVisibilities((_props$project4 = props.project) === null || _props$project4 === void 0 ? void 0 : _props$project4.allPermissionsForAllApplications.allAppliedMenuVisibilities);
518
- }, [props.project]);
519
- return jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.NavBarLayout, {
520
- ref: navBarNode,
521
- children: jsxRuntime.jsxs(dist_commercetoolsFrontendApplicationShell.MenuGroup, {
522
- id: "main",
523
- level: 1,
524
- children: [jsxRuntime.jsxs("div", {
525
- className: styles['scrollable-menu'],
526
- children: [_mapInstanceProperty__default["default"](allInternalApplicationsNavbarMenu).call(allInternalApplicationsNavbarMenu, menu => {
527
- const menuType = 'scrollable';
528
- const itemIndex = "".concat(menuType, "-").concat(menu.key);
529
- return jsxRuntime.jsx(ApplicationMenu, {
530
- location: location,
531
- menu: menu,
532
- isActive: activeItemIndex === itemIndex,
533
- handleToggleItem: () => handleToggleItem(itemIndex),
534
- isMenuOpen: isMenuOpen,
535
- shouldCloseMenuFly: shouldCloseMenuFly,
536
- projectPermissions: projectPermissions,
537
- menuVisibilities: menuVisibilities,
538
- applicationLocale: props.applicationLocale,
539
- projectKey: props.projectKey,
540
- useFullRedirectsForLinks: useFullRedirectsForLinks,
541
- onMenuItemClick: props.onMenuItemClick
542
- }, menu.key);
543
- }), jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuItemDivider, {}), _mapInstanceProperty__default["default"](allCustomApplicationsNavbarMenu).call(allCustomApplicationsNavbarMenu, menu => {
544
- const menuType = 'scrollable';
545
- const itemIndex = "".concat(menuType, "-").concat(menu.key);
546
- return jsxRuntime.jsx(ApplicationMenu, {
547
- location: location,
548
- menu: menu,
549
- isActive: activeItemIndex === itemIndex,
550
- handleToggleItem: () => handleToggleItem(itemIndex),
551
- isMenuOpen: isMenuOpen,
552
- shouldCloseMenuFly: shouldCloseMenuFly,
553
- projectPermissions: projectPermissions,
554
- menuVisibilities: menuVisibilities,
555
- applicationLocale: props.applicationLocale,
556
- projectKey: props.projectKey,
557
- useFullRedirectsForLinks: useFullRedirectsForLinks,
558
- onMenuItemClick: props.onMenuItemClick
559
- }, menu.key);
560
- })]
561
- }), jsxRuntime.jsxs("div", {
562
- className: styles['fixed-menu'],
563
- children: [jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.Faded, {}), jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuItem, {
564
- hasSubmenu: false,
565
- isActive: false,
566
- isMenuOpen: isMenuOpen,
567
- onClick: () => {
568
- handleToggleItem('fixed-support');
569
- },
570
- onMouseEnter: isMenuOpen ? undefined : () => handleToggleItem('fixed-support'),
571
- onMouseLeave: isMenuOpen ? undefined : shouldCloseMenuFly,
572
- children: jsxRuntime.jsx("a", {
573
- href: constants.SUPPORT_PORTAL_URL,
574
- rel: "noopener noreferrer",
575
- target: "_blank",
576
- children: jsxRuntime.jsxs("div", {
577
- className: styles['item-icon-text'],
578
- children: [jsxRuntime.jsx("div", {
579
- className: styles['icon-container'],
580
- children: jsxRuntime.jsx("div", {
581
- className: classnames__default["default"](styles.icon, {
582
- [styles.icon__active]: activeItemIndex === 'fixed-support'
583
- }),
584
- children: jsxRuntime.jsx(icons.SupportIcon, {
585
- size: "scale"
586
- })
587
- })
588
- }), jsxRuntime.jsx("div", {
589
- className: styles.title,
590
- children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages['NavBar.MCSupport.title']))
591
- })]
592
- })
593
- })
594
- }), jsxRuntime.jsx(dist_commercetoolsFrontendApplicationShell.MenuExpander, {
595
- isVisible: isExpanderVisible,
596
- onClick: handleToggleMenu,
597
- isMenuOpen: isMenuOpen
598
- })]
599
- })]
600
- })
601
- });
602
- };
603
- NavBar.propTypes = process.env.NODE_ENV !== "production" ? {
604
- applicationLocale: _pt__default["default"].string.isRequired,
605
- projectKey: _pt__default["default"].string.isRequired
606
- } : {};
607
- NavBar.displayName = 'NavBar';
608
-
609
- exports["default"] = NavBar;