@commercetools-frontend/application-shell 22.23.3 → 22.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +1 -1
  2. package/dist/commercetools-frontend-application-shell.cjs.dev.js +2 -1
  3. package/dist/commercetools-frontend-application-shell.cjs.prod.js +2 -1
  4. package/dist/commercetools-frontend-application-shell.esm.js +2 -1
  5. package/dist/{custom-view-dev-host-8631b4d9.esm.js → custom-view-dev-host-1f5a3bac.esm.js} +2 -1
  6. package/dist/{custom-view-dev-host-b0f0a6ae.cjs.dev.js → custom-view-dev-host-3c81dbc9.cjs.dev.js} +2 -1
  7. package/dist/{custom-view-dev-host-05e5dcd3.cjs.prod.js → custom-view-dev-host-a726d962.cjs.prod.js} +2 -1
  8. package/dist/declarations/src/components/navbar/menu-items.d.ts +3 -0
  9. package/dist/{index-10206202.cjs.dev.js → index-78c211fe.cjs.dev.js} +13 -10
  10. package/dist/{index-1bbb3873.esm.js → index-9828105b.esm.js} +13 -10
  11. package/dist/{index-2c36f4f7.cjs.prod.js → index-a5eb97d4.cjs.prod.js} +13 -10
  12. package/dist/{navbar-8ce541e6.esm.js → navbar-29f95525.esm.js} +30 -5
  13. package/dist/{navbar-900f1217.cjs.dev.js → navbar-7d310fda.cjs.dev.js} +30 -5
  14. package/dist/{navbar-70ce6631.cjs.prod.js → navbar-a1bf5ba3.cjs.prod.js} +22 -1
  15. package/dist/{oidc-callback-30a374f6.cjs.prod.js → oidc-callback-2dfff20c.cjs.prod.js} +2 -1
  16. package/dist/{oidc-callback-930051ce.esm.js → oidc-callback-88498ed3.esm.js} +2 -1
  17. package/dist/{oidc-callback-bad24d16.cjs.dev.js → oidc-callback-d2363f00.cjs.dev.js} +2 -1
  18. package/dist/{project-container-42e887d8.cjs.dev.js → project-container-0338b552.cjs.dev.js} +6 -5
  19. package/dist/{project-container-35388d7b.esm.js → project-container-9b279ff6.esm.js} +6 -5
  20. package/dist/{project-container-3d3beaf2.cjs.prod.js → project-container-e0240991.cjs.prod.js} +6 -5
  21. package/dist/{project-expired-60d5d6cd.cjs.prod.js → project-expired-5dff770f.cjs.prod.js} +3 -2
  22. package/dist/{project-expired-0616f064.cjs.dev.js → project-expired-dd0df4ea.cjs.dev.js} +3 -2
  23. package/dist/{project-expired-505ca5c2.esm.js → project-expired-e06491b1.esm.js} +3 -2
  24. package/dist/{project-not-found-fb858e35.cjs.dev.js → project-not-found-5b42ee21.cjs.dev.js} +3 -2
  25. package/dist/{project-not-found-437f75ec.cjs.prod.js → project-not-found-6906b9e9.cjs.prod.js} +3 -2
  26. package/dist/{project-not-found-db5a90d1.esm.js → project-not-found-af48d9f5.esm.js} +3 -2
  27. package/dist/{project-not-initialized-136ad96c.cjs.prod.js → project-not-initialized-0ef41a07.cjs.prod.js} +3 -2
  28. package/dist/{project-not-initialized-00cc5939.esm.js → project-not-initialized-3f34f705.esm.js} +3 -2
  29. package/dist/{project-not-initialized-fbb4283b.cjs.dev.js → project-not-initialized-73bebf67.cjs.dev.js} +3 -2
  30. package/dist/{project-suspended-a006244a.cjs.prod.js → project-suspended-1f632164.cjs.prod.js} +3 -2
  31. package/dist/{project-suspended-7390790f.cjs.dev.js → project-suspended-27945c59.cjs.dev.js} +3 -2
  32. package/dist/{project-suspended-b94bbb05.esm.js → project-suspended-364f6be9.esm.js} +3 -2
  33. package/dist/{quick-access-20ae9464.cjs.prod.js → quick-access-3ec8ebe1.cjs.prod.js} +2 -1
  34. package/dist/{quick-access-e6142028.cjs.dev.js → quick-access-4f451ac7.cjs.dev.js} +2 -1
  35. package/dist/{quick-access-00f2234a.esm.js → quick-access-da79d347.esm.js} +2 -1
  36. package/dist/{redirect-to-logout-5ba558ee.cjs.prod.js → redirect-to-logout-1ae3e81e.cjs.prod.js} +2 -1
  37. package/dist/{redirect-to-logout-1078fbe5.cjs.dev.js → redirect-to-logout-2a8354fd.cjs.dev.js} +2 -1
  38. package/dist/{redirect-to-logout-9f35fd1f.esm.js → redirect-to-logout-97e0e185.esm.js} +2 -1
  39. package/dist/{redirect-to-project-create-67d7cd03.cjs.dev.js → redirect-to-project-create-426cbb52.cjs.dev.js} +1 -1
  40. package/dist/{redirect-to-project-create-1d0c6b01.esm.js → redirect-to-project-create-a407c70e.esm.js} +1 -1
  41. package/dist/{redirect-to-project-create-c962f72f.cjs.prod.js → redirect-to-project-create-fade33c5.cjs.prod.js} +1 -1
  42. package/dist/{requests-in-flight-loader-a33e7797.cjs.dev.js → requests-in-flight-loader-62173295.cjs.dev.js} +2 -1
  43. package/dist/{requests-in-flight-loader-c12eef6e.esm.js → requests-in-flight-loader-b6efd83c.esm.js} +2 -1
  44. package/dist/{requests-in-flight-loader-8205dfe9.cjs.prod.js → requests-in-flight-loader-e71aa32e.cjs.prod.js} +2 -1
  45. package/dist/{service-page-project-switcher-f5fd64dc.cjs.dev.js → service-page-project-switcher-67efedb7.cjs.dev.js} +1 -1
  46. package/dist/{service-page-project-switcher-de137218.esm.js → service-page-project-switcher-f990e0e2.esm.js} +1 -1
  47. package/dist/{service-page-project-switcher-880dc44c.cjs.prod.js → service-page-project-switcher-fe12d7b6.cjs.prod.js} +1 -1
  48. package/dist/{version-tracker-e81e3722.cjs.dev.js → version-tracker-6d45f1c1.cjs.dev.js} +2 -1
  49. package/dist/{version-tracker-0b8227a5.cjs.prod.js → version-tracker-84581783.cjs.prod.js} +2 -1
  50. package/dist/{version-tracker-2b50518e.esm.js → version-tracker-e7f1181f.esm.js} +2 -1
  51. package/package.json +23 -23
package/README.md CHANGED
@@ -4,4 +4,4 @@
4
4
  <a href="https://www.npmjs.com/package/@commercetools-frontend/application-shell"><img src="https://badgen.net/npm/v/@commercetools-frontend/application-shell" alt="Latest release (latest dist-tag)" /></a> <a href="https://www.npmjs.com/package/@commercetools-frontend/application-shell"><img src="https://badgen.net/npm/v/@commercetools-frontend/application-shell/next" alt="Latest release (next dist-tag)" /></a> <a href="https://bundlephobia.com/result?p=@commercetools-frontend/application-shell"><img src="https://badgen.net/bundlephobia/minzip/@commercetools-frontend/application-shell" alt="Minified + GZipped size" /></a> <a href="https://github.com/commercetools/merchant-center-application-kit/blob/main/LICENSE"><img src="https://badgen.net/github/license/commercetools/merchant-center-application-kit" alt="GitHub license" /></a>
5
5
  </p>
6
6
 
7
- Check out the [documentation](https://docs.commercetools.com/custom-applications/api-reference/commercetools-frontend-application-shell) for more information.
7
+ Check out the [documentation](https://docs.commercetools.com/merchant-center-customizations/api-reference/commercetools-frontend-application-shell) for more information.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_commercetoolsFrontendApplicationShell = require('./index-10206202.cjs.dev.js');
5
+ var dist_commercetoolsFrontendApplicationShell = require('./index-78c211fe.cjs.dev.js');
6
6
  var index = require('./index-37a25e51.cjs.dev.js');
7
7
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
8
8
  var ssr = require('@commercetools-frontend/application-config/ssr');
@@ -66,6 +66,7 @@ require('@babel/runtime-corejs3/core-js-stable/instance/flags');
66
66
  require('@apollo/client/react');
67
67
  require('@flopflip/combine-adapters');
68
68
  require('@flopflip/http-adapter');
69
+ require('@flopflip/types');
69
70
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
70
71
  require('react-redux');
71
72
  require('lodash/upperFirst');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var dist_commercetoolsFrontendApplicationShell = require('./index-2c36f4f7.cjs.prod.js');
5
+ var dist_commercetoolsFrontendApplicationShell = require('./index-a5eb97d4.cjs.prod.js');
6
6
  var index = require('./index-6cd618cc.cjs.prod.js');
7
7
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
8
8
  var ssr = require('@commercetools-frontend/application-config/ssr');
@@ -66,6 +66,7 @@ require('@babel/runtime-corejs3/core-js-stable/instance/flags');
66
66
  require('@apollo/client/react');
67
67
  require('@flopflip/combine-adapters');
68
68
  require('@flopflip/http-adapter');
69
+ require('@flopflip/types');
69
70
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
70
71
  require('react-redux');
71
72
  require('lodash/upperFirst');
@@ -1,4 +1,4 @@
1
- export { g as ApplicationPageTitle, A as ApplicationShell, f as ApplicationShellProvider, C as ConfigureIntlProvider, h as CustomViewShell, I as InjectReducers, S as SetupFlopFlipProvider, i as SuspendedRoute, s as setupGlobalErrorListener, u as useRoutesCreator, d as version } from './index-1bbb3873.esm.js';
1
+ export { g as ApplicationPageTitle, A as ApplicationShell, f as ApplicationShellProvider, C as ConfigureIntlProvider, h as CustomViewShell, I as InjectReducers, S as SetupFlopFlipProvider, i as SuspendedRoute, s as setupGlobalErrorListener, u as useRoutesCreator, d as version } from './index-9828105b.esm.js';
2
2
  export { R as RouteCatchAll, a as applyDefaultMiddlewares } from './index-89e5711a.esm.js';
3
3
  export { buildApiUrl, createApolloClient, createApolloContextForProxyForwardTo, createHttpClientOptions, executeHttpClientRequest, getMcApiUrl, selectProjectKeyFromUrl, selectUserId, useMcLazyQuery, useMcMutation, useMcQuery } from '@commercetools-frontend/application-shell-connectors';
4
4
  export { entryPointUriPathToPermissionKeys, entryPointUriPathToResourceAccesses } from '@commercetools-frontend/application-config/ssr';
@@ -62,6 +62,7 @@ import '@babel/runtime-corejs3/core-js-stable/instance/flags';
62
62
  import '@apollo/client/react';
63
63
  import '@flopflip/combine-adapters';
64
64
  import '@flopflip/http-adapter';
65
+ import '@flopflip/types';
65
66
  import '@babel/runtime-corejs3/core-js-stable/instance/reduce';
66
67
  import 'react-redux';
67
68
  import 'lodash/upperFirst';
@@ -10,7 +10,7 @@ import Constraints from '@commercetools-uikit/constraints';
10
10
  import PrimaryButton from '@commercetools-uikit/primary-button';
11
11
  import Spacings from '@commercetools-uikit/spacings';
12
12
  import Text from '@commercetools-uikit/text';
13
- import { A as ApplicationShell } from './index-1bbb3873.esm.js';
13
+ import { A as ApplicationShell } from './index-9828105b.esm.js';
14
14
  import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
15
15
  import './index-89e5711a.esm.js';
16
16
  import '@babel/runtime-corejs3/core-js-stable/object/keys';
@@ -74,6 +74,7 @@ import '@flopflip/combine-adapters';
74
74
  import '@flopflip/http-adapter';
75
75
  import '@flopflip/launchdarkly-adapter';
76
76
  import '@flopflip/react-broadcast';
77
+ import '@flopflip/types';
77
78
  import 'react-redux';
78
79
  import 'lodash/upperFirst';
79
80
  import '@commercetools-uikit/design-system/materials/resets.css';
@@ -12,7 +12,7 @@ var Constraints = require('@commercetools-uikit/constraints');
12
12
  var PrimaryButton = require('@commercetools-uikit/primary-button');
13
13
  var Spacings = require('@commercetools-uikit/spacings');
14
14
  var Text = require('@commercetools-uikit/text');
15
- var dist_commercetoolsFrontendApplicationShell = require('./index-10206202.cjs.dev.js');
15
+ var dist_commercetoolsFrontendApplicationShell = require('./index-78c211fe.cjs.dev.js');
16
16
  var jsxRuntime = require('@emotion/react/jsx-runtime');
17
17
  require('./index-37a25e51.cjs.dev.js');
18
18
  require('@babel/runtime-corejs3/core-js-stable/object/keys');
@@ -76,6 +76,7 @@ require('@flopflip/combine-adapters');
76
76
  require('@flopflip/http-adapter');
77
77
  require('@flopflip/launchdarkly-adapter');
78
78
  require('@flopflip/react-broadcast');
79
+ require('@flopflip/types');
79
80
  require('react-redux');
80
81
  require('lodash/upperFirst');
81
82
  require('@commercetools-uikit/design-system/materials/resets.css');
@@ -12,7 +12,7 @@ var Constraints = require('@commercetools-uikit/constraints');
12
12
  var PrimaryButton = require('@commercetools-uikit/primary-button');
13
13
  var Spacings = require('@commercetools-uikit/spacings');
14
14
  var Text = require('@commercetools-uikit/text');
15
- var dist_commercetoolsFrontendApplicationShell = require('./index-2c36f4f7.cjs.prod.js');
15
+ var dist_commercetoolsFrontendApplicationShell = require('./index-a5eb97d4.cjs.prod.js');
16
16
  var jsxRuntime = require('@emotion/react/jsx-runtime');
17
17
  require('./index-6cd618cc.cjs.prod.js');
18
18
  require('@babel/runtime-corejs3/core-js-stable/object/keys');
@@ -76,6 +76,7 @@ require('@flopflip/combine-adapters');
76
76
  require('@flopflip/http-adapter');
77
77
  require('@flopflip/launchdarkly-adapter');
78
78
  require('@flopflip/react-broadcast');
79
+ require('@flopflip/types');
79
80
  require('react-redux');
80
81
  require('lodash/upperFirst');
81
82
  require('@commercetools-uikit/design-system/materials/resets.css');
@@ -34,6 +34,7 @@ export type MenuGroupProps = {
34
34
  children?: ReactNode;
35
35
  submenuVerticalPosition?: number;
36
36
  isSubmenuAboveMenuItem?: boolean;
37
+ handleKeyDown?: React.KeyboardEventHandler<HTMLUListElement>;
37
38
  };
38
39
  declare const MenuGroup: import("react").ForwardRefExoticComponent<MenuGroupProps & import("react").RefAttributes<HTMLUListElement>>;
39
40
  type MenuItemProps = {
@@ -46,6 +47,7 @@ type MenuItemProps = {
46
47
  onMouseLeave?: MouseEventHandler<HTMLElement> | FocusEventHandler<HTMLElement>;
47
48
  children: ReactNode;
48
49
  identifier?: string;
50
+ onKeyDown?: (e: React.KeyboardEvent<HTMLLIElement>) => void;
49
51
  };
50
52
  declare const MenuItem: {
51
53
  (props: MenuItemProps): import("@emotion/react/types/jsx-namespace").EmotionJSX.Element;
@@ -58,6 +60,7 @@ export type MenuItemLinkProps = {
58
60
  onClick?: (event: SyntheticEvent<HTMLAnchorElement>) => void;
59
61
  useFullRedirectsForLinks?: boolean;
60
62
  isSubmenuLink?: boolean;
63
+ isSubmenuFocused?: boolean;
61
64
  };
62
65
  declare const MenuItemLink: {
63
66
  (props: MenuItemLinkProps): import("@emotion/react/types/jsx-namespace").EmotionJSX.Element;
@@ -62,6 +62,7 @@ var combineAdapters = require('@flopflip/combine-adapters');
62
62
  var httpAdapter = require('@flopflip/http-adapter');
63
63
  var ldAdapter = require('@flopflip/launchdarkly-adapter');
64
64
  var reactBroadcast = require('@flopflip/react-broadcast');
65
+ var types = require('@flopflip/types');
65
66
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
66
67
  var reactRedux = require('react-redux');
67
68
  var upperFirst = require('lodash/upperFirst');
@@ -115,9 +116,9 @@ var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
115
116
  var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
116
117
 
117
118
  // NOTE: This string will be replaced on build time with the package version.
118
- var applicationShellVersion = "22.23.3";
119
+ var applicationShellVersion = "22.24.0";
119
120
 
120
- const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-a33e7797.cjs.dev.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
121
+ const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-62173295.cjs.dev.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
121
122
 
122
123
  // Attempt to load the `projectKey` from localStorage
123
124
  function selectProjectKeyFromLocalStorage() {
@@ -613,9 +614,9 @@ FetchUser.propTypes = {
613
614
  };
614
615
  FetchUser.displayName = 'FetchUser';
615
616
 
616
- const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-900f1217.cjs.dev.js' /* webpackChunkName: "navbar" */); }));
617
+ const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-7d310fda.cjs.dev.js' /* webpackChunkName: "navbar" */); }));
617
618
 
618
- const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-42e887d8.cjs.dev.js' /* webpackChunkName: "project-container" */); }));
619
+ const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-0338b552.cjs.dev.js' /* webpackChunkName: "project-container" */); }));
619
620
 
620
621
  const getSelectedDataLocaleForProject = projectLocales => {
621
622
  const cachedDataLocale = window.localStorage.getItem(constants.STORAGE_KEYS.SELECTED_DATA_LOCALE);
@@ -739,7 +740,7 @@ var pimIndexerStates = {
739
740
  NOT_INDEXED: 'NOT_INDEXED'
740
741
  };
741
742
 
742
- const QuickAccess = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./quick-access-e6142028.cjs.dev.js' /* webpackChunkName: "quick-access" */); }));
743
+ const QuickAccess = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./quick-access-4f451ac7.cjs.dev.js' /* webpackChunkName: "quick-access" */); }));
743
744
  const QuickAccessTrigger = props => {
744
745
  const _useState = react.useState(false),
745
746
  _useState2 = _slicedToArray(_useState, 2),
@@ -827,9 +828,9 @@ QuickAccessTrigger.propTypes = process.env.NODE_ENV !== "production" ? {
827
828
  } : {};
828
829
  QuickAccessTrigger.displayName = 'QuickAccessTrigger';
829
830
 
830
- const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-1078fbe5.cjs.dev.js' /* webpackChunkName: "redirect-to-logout" */); }));
831
+ const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-2a8354fd.cjs.dev.js' /* webpackChunkName: "redirect-to-logout" */); }));
831
832
 
832
- const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-67d7cd03.cjs.dev.js' /* webpackChunkName: "redirect-to-project-create" */); }));
833
+ const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-426cbb52.cjs.dev.js' /* webpackChunkName: "redirect-to-project-create" */); }));
833
834
 
834
835
  function ownKeys$8(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; }
835
836
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$8(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$8(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -903,6 +904,8 @@ const SetupFlopFlipProvider = props => {
903
904
  const adapterArgs = react.useMemo(() => {
904
905
  var _props$user, _props$ldClientSideId, _props$user2;
905
906
  return {
907
+ cacheIdentifier: types.cacheIdentifiers.local,
908
+ cacheMode: types.cacheModes.lazy,
906
909
  user: {
907
910
  key: (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.id
908
911
  },
@@ -985,7 +988,7 @@ const ThemeSwitcher = () => {
985
988
  });
986
989
  };
987
990
 
988
- const VersionTracker = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./version-tracker-e81e3722.cjs.dev.js' /* webpackChunkName: "version-tracker" */); }));
991
+ const VersionTracker = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./version-tracker-6d45f1c1.cjs.dev.js' /* webpackChunkName: "version-tracker" */); }));
989
992
 
990
993
  function ownKeys$6(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; }
991
994
  function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$6(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -1499,7 +1502,7 @@ const hasCachedAuthenticationState = () => {
1499
1502
  return window.localStorage.getItem(constants.STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1500
1503
  };
1501
1504
 
1502
- const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-bad24d16.cjs.dev.js' /* webpackChunkName: "oidc-callback" */); }));
1505
+ const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-d2363f00.cjs.dev.js' /* webpackChunkName: "oidc-callback" */); }));
1503
1506
 
1504
1507
  function ownKeys$4(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; }
1505
1508
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -1737,7 +1740,7 @@ ApplicationShell.propTypes = process.env.NODE_ENV !== "production" ? {
1737
1740
  ApplicationShell.displayName = 'ApplicationShell';
1738
1741
  ApplicationShell.version = applicationShellVersion;
1739
1742
 
1740
- const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-b0f0a6ae.cjs.dev.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1743
+ const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-3c81dbc9.cjs.dev.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1741
1744
 
1742
1745
  function CustomViewFlopFlipProvider(props) {
1743
1746
  var _props$user2;
@@ -60,6 +60,7 @@ import combineAdapters from '@flopflip/combine-adapters';
60
60
  import httpAdapter from '@flopflip/http-adapter';
61
61
  import ldAdapter from '@flopflip/launchdarkly-adapter';
62
62
  import { ConfigureFlopFlip } from '@flopflip/react-broadcast';
63
+ import { cacheIdentifiers, cacheModes } from '@flopflip/types';
63
64
  import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
64
65
  import { Provider, useStore } from 'react-redux';
65
66
  import upperFirst from 'lodash/upperFirst';
@@ -73,9 +74,9 @@ import _someInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instanc
73
74
  import { showUnexpectedErrorNotification } from '@commercetools-frontend/actions-global';
74
75
 
75
76
  // NOTE: This string will be replaced on build time with the package version.
76
- var applicationShellVersion = "22.23.3";
77
+ var applicationShellVersion = "22.24.0";
77
78
 
78
- const RequestsInFlightLoader = /*#__PURE__*/lazy(() => import('./requests-in-flight-loader-c12eef6e.esm.js' /* webpackChunkName: "requests-in-flight-loader" */));
79
+ const RequestsInFlightLoader = /*#__PURE__*/lazy(() => import('./requests-in-flight-loader-b6efd83c.esm.js' /* webpackChunkName: "requests-in-flight-loader" */));
79
80
 
80
81
  // Attempt to load the `projectKey` from localStorage
81
82
  function selectProjectKeyFromLocalStorage() {
@@ -571,9 +572,9 @@ FetchUser.propTypes = {
571
572
  };
572
573
  FetchUser.displayName = 'FetchUser';
573
574
 
574
- const Navbar = /*#__PURE__*/lazy(() => import('./navbar-8ce541e6.esm.js' /* webpackChunkName: "navbar" */));
575
+ const Navbar = /*#__PURE__*/lazy(() => import('./navbar-29f95525.esm.js' /* webpackChunkName: "navbar" */));
575
576
 
576
- const ProjectContainer = /*#__PURE__*/lazy(() => import('./project-container-35388d7b.esm.js' /* webpackChunkName: "project-container" */));
577
+ const ProjectContainer = /*#__PURE__*/lazy(() => import('./project-container-9b279ff6.esm.js' /* webpackChunkName: "project-container" */));
577
578
 
578
579
  const getSelectedDataLocaleForProject = projectLocales => {
579
580
  const cachedDataLocale = window.localStorage.getItem(STORAGE_KEYS.SELECTED_DATA_LOCALE);
@@ -697,7 +698,7 @@ var pimIndexerStates = {
697
698
  NOT_INDEXED: 'NOT_INDEXED'
698
699
  };
699
700
 
700
- const QuickAccess = /*#__PURE__*/lazy(() => import('./quick-access-00f2234a.esm.js' /* webpackChunkName: "quick-access" */));
701
+ const QuickAccess = /*#__PURE__*/lazy(() => import('./quick-access-da79d347.esm.js' /* webpackChunkName: "quick-access" */));
701
702
  const QuickAccessTrigger = props => {
702
703
  const _useState = useState(false),
703
704
  _useState2 = _slicedToArray(_useState, 2),
@@ -785,9 +786,9 @@ QuickAccessTrigger.propTypes = process.env.NODE_ENV !== "production" ? {
785
786
  } : {};
786
787
  QuickAccessTrigger.displayName = 'QuickAccessTrigger';
787
788
 
788
- const RedirectToLogout = /*#__PURE__*/lazy(() => import('./redirect-to-logout-9f35fd1f.esm.js' /* webpackChunkName: "redirect-to-logout" */));
789
+ const RedirectToLogout = /*#__PURE__*/lazy(() => import('./redirect-to-logout-97e0e185.esm.js' /* webpackChunkName: "redirect-to-logout" */));
789
790
 
790
- const RedirectToProjectCreate = /*#__PURE__*/lazy(() => import('./redirect-to-project-create-1d0c6b01.esm.js' /* webpackChunkName: "redirect-to-project-create" */));
791
+ const RedirectToProjectCreate = /*#__PURE__*/lazy(() => import('./redirect-to-project-create-a407c70e.esm.js' /* webpackChunkName: "redirect-to-project-create" */));
791
792
 
792
793
  function ownKeys$8(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
793
794
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys$8(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys$8(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -861,6 +862,8 @@ const SetupFlopFlipProvider = props => {
861
862
  const adapterArgs = useMemo(() => {
862
863
  var _props$user, _props$ldClientSideId, _props$user2;
863
864
  return {
865
+ cacheIdentifier: cacheIdentifiers.local,
866
+ cacheMode: cacheModes.lazy,
864
867
  user: {
865
868
  key: (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.id
866
869
  },
@@ -943,7 +946,7 @@ const ThemeSwitcher = () => {
943
946
  });
944
947
  };
945
948
 
946
- const VersionTracker = /*#__PURE__*/lazy(() => import('./version-tracker-2b50518e.esm.js' /* webpackChunkName: "version-tracker" */));
949
+ const VersionTracker = /*#__PURE__*/lazy(() => import('./version-tracker-e7f1181f.esm.js' /* webpackChunkName: "version-tracker" */));
947
950
 
948
951
  function ownKeys$6(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
949
952
  function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys$6(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys$6(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -1457,7 +1460,7 @@ const hasCachedAuthenticationState = () => {
1457
1460
  return window.localStorage.getItem(STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1458
1461
  };
1459
1462
 
1460
- const OidcCallback = /*#__PURE__*/lazy(() => import('./oidc-callback-930051ce.esm.js' /* webpackChunkName: "oidc-callback" */));
1463
+ const OidcCallback = /*#__PURE__*/lazy(() => import('./oidc-callback-88498ed3.esm.js' /* webpackChunkName: "oidc-callback" */));
1461
1464
 
1462
1465
  function ownKeys$4(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1463
1466
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -1695,7 +1698,7 @@ ApplicationShell.propTypes = process.env.NODE_ENV !== "production" ? {
1695
1698
  ApplicationShell.displayName = 'ApplicationShell';
1696
1699
  ApplicationShell.version = applicationShellVersion;
1697
1700
 
1698
- const CustomViewDevHost = /*#__PURE__*/lazy(() => import('./custom-view-dev-host-8631b4d9.esm.js' /* webpackChunkName: "custom-view-dev-host" */));
1701
+ const CustomViewDevHost = /*#__PURE__*/lazy(() => import('./custom-view-dev-host-1f5a3bac.esm.js' /* webpackChunkName: "custom-view-dev-host" */));
1699
1702
 
1700
1703
  function CustomViewFlopFlipProvider(props) {
1701
1704
  var _props$user2;
@@ -62,6 +62,7 @@ var combineAdapters = require('@flopflip/combine-adapters');
62
62
  var httpAdapter = require('@flopflip/http-adapter');
63
63
  var ldAdapter = require('@flopflip/launchdarkly-adapter');
64
64
  var reactBroadcast = require('@flopflip/react-broadcast');
65
+ var types = require('@flopflip/types');
65
66
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
66
67
  var reactRedux = require('react-redux');
67
68
  var upperFirst = require('lodash/upperFirst');
@@ -115,9 +116,9 @@ var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
115
116
  var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
116
117
 
117
118
  // NOTE: This string will be replaced on build time with the package version.
118
- var applicationShellVersion = "22.23.3";
119
+ var applicationShellVersion = "22.24.0";
119
120
 
120
- const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-8205dfe9.cjs.prod.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
121
+ const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-e71aa32e.cjs.prod.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
121
122
 
122
123
  // Attempt to load the `projectKey` from localStorage
123
124
  function selectProjectKeyFromLocalStorage() {
@@ -585,9 +586,9 @@ FetchUser.propTypes = {
585
586
  };
586
587
  FetchUser.displayName = 'FetchUser';
587
588
 
588
- const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-70ce6631.cjs.prod.js' /* webpackChunkName: "navbar" */); }));
589
+ const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-a1bf5ba3.cjs.prod.js' /* webpackChunkName: "navbar" */); }));
589
590
 
590
- const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-3d3beaf2.cjs.prod.js' /* webpackChunkName: "project-container" */); }));
591
+ const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-e0240991.cjs.prod.js' /* webpackChunkName: "project-container" */); }));
591
592
 
592
593
  const getSelectedDataLocaleForProject = projectLocales => {
593
594
  const cachedDataLocale = window.localStorage.getItem(constants.STORAGE_KEYS.SELECTED_DATA_LOCALE);
@@ -699,7 +700,7 @@ var pimIndexerStates = {
699
700
  NOT_INDEXED: 'NOT_INDEXED'
700
701
  };
701
702
 
702
- const QuickAccess = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./quick-access-20ae9464.cjs.prod.js' /* webpackChunkName: "quick-access" */); }));
703
+ const QuickAccess = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./quick-access-3ec8ebe1.cjs.prod.js' /* webpackChunkName: "quick-access" */); }));
703
704
  const QuickAccessTrigger = props => {
704
705
  const _useState = react.useState(false),
705
706
  _useState2 = _slicedToArray(_useState, 2),
@@ -785,9 +786,9 @@ const QuickAccessTrigger = props => {
785
786
  QuickAccessTrigger.propTypes = {};
786
787
  QuickAccessTrigger.displayName = 'QuickAccessTrigger';
787
788
 
788
- const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-5ba558ee.cjs.prod.js' /* webpackChunkName: "redirect-to-logout" */); }));
789
+ const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-1ae3e81e.cjs.prod.js' /* webpackChunkName: "redirect-to-logout" */); }));
789
790
 
790
- const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-c962f72f.cjs.prod.js' /* webpackChunkName: "redirect-to-project-create" */); }));
791
+ const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-fade33c5.cjs.prod.js' /* webpackChunkName: "redirect-to-project-create" */); }));
791
792
 
792
793
  function ownKeys$8(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; }
793
794
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$8(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$8(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -861,6 +862,8 @@ const SetupFlopFlipProvider = props => {
861
862
  const adapterArgs = react.useMemo(() => {
862
863
  var _props$user, _props$ldClientSideId, _props$user2;
863
864
  return {
865
+ cacheIdentifier: types.cacheIdentifiers.local,
866
+ cacheMode: types.cacheModes.lazy,
864
867
  user: {
865
868
  key: (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.id
866
869
  },
@@ -919,7 +922,7 @@ const ThemeSwitcher = () => {
919
922
  });
920
923
  };
921
924
 
922
- const VersionTracker = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./version-tracker-0b8227a5.cjs.prod.js' /* webpackChunkName: "version-tracker" */); }));
925
+ const VersionTracker = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./version-tracker-84581783.cjs.prod.js' /* webpackChunkName: "version-tracker" */); }));
923
926
 
924
927
  function ownKeys$6(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; }
925
928
  function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$6(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -1397,7 +1400,7 @@ const hasCachedAuthenticationState = () => {
1397
1400
  return window.localStorage.getItem(constants.STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1398
1401
  };
1399
1402
 
1400
- const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-30a374f6.cjs.prod.js' /* webpackChunkName: "oidc-callback" */); }));
1403
+ const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-2dfff20c.cjs.prod.js' /* webpackChunkName: "oidc-callback" */); }));
1401
1404
 
1402
1405
  function ownKeys$4(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; }
1403
1406
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
@@ -1613,7 +1616,7 @@ ApplicationShell.propTypes = {};
1613
1616
  ApplicationShell.displayName = 'ApplicationShell';
1614
1617
  ApplicationShell.version = applicationShellVersion;
1615
1618
 
1616
- const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-05e5dcd3.cjs.prod.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1619
+ const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-a726d962.cjs.prod.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1617
1620
 
1618
1621
  function CustomViewFlopFlipProvider(props) {
1619
1622
  var _props$user2;
@@ -413,6 +413,7 @@ const MenuGroup = /*#__PURE__*/forwardRef((props, ref) => {
413
413
  "data-testid": "group-".concat(props.id),
414
414
  role: "menu",
415
415
  "aria-expanded": isSublistActiveWhileIsMenuExpanded || isSublistActiveWhileIsMenuCollapsed,
416
+ onKeyDown: props.handleKeyDown,
416
417
  className: classnames({
417
418
  'sublist-expanded__active': isSublistActiveWhileIsMenuExpanded
418
419
  }, {
@@ -440,6 +441,7 @@ const MenuItem$1 = props => {
440
441
  onMouseLeave: props.onMouseLeave,
441
442
  onFocus: props.onMouseEnter,
442
443
  onBlur: props.onMouseLeave,
444
+ onKeyDown: props.onKeyDown,
443
445
  "data-menuitem": props.identifier,
444
446
  className: classnames({
445
447
  active: props.isActive
@@ -461,7 +463,8 @@ MenuItem$1.propTypes = process.env.NODE_ENV !== "production" ? {
461
463
  onMouseEnter: _pt.oneOfType([_pt.func, _pt.func]),
462
464
  onMouseLeave: _pt.oneOfType([_pt.func, _pt.func]),
463
465
  children: _pt.node.isRequired,
464
- identifier: _pt.string
466
+ identifier: _pt.string,
467
+ onKeyDown: _pt.func
465
468
  } : {};
466
469
  MenuItem$1.displayName = 'MenuItem';
467
470
  const menuItemLinkDefaultProps = {
@@ -479,7 +482,8 @@ NavLinkWrapper.propTypes = process.env.NODE_ENV !== "production" ? {
479
482
  children: _pt.node.isRequired,
480
483
  onClick: _pt.func,
481
484
  useFullRedirectsForLinks: _pt.bool,
482
- isSubmenuLink: _pt.bool
485
+ isSubmenuLink: _pt.bool,
486
+ isSubmenuFocused: _pt.bool
483
487
  } : {};
484
488
  const NavLinkClickableContentWrapper = props => {
485
489
  const Wrapper = props.isSubmenuLink ? NavlinkClickableContent : Fragment$1;
@@ -493,7 +497,8 @@ NavLinkClickableContentWrapper.propTypes = process.env.NODE_ENV !== "production"
493
497
  children: _pt.node.isRequired,
494
498
  onClick: _pt.func,
495
499
  useFullRedirectsForLinks: _pt.bool,
496
- isSubmenuLink: _pt.bool
500
+ isSubmenuLink: _pt.bool,
501
+ isSubmenuFocused: _pt.bool
497
502
  } : {};
498
503
  const MenuItemLink = props => {
499
504
  const redirectTo = targetUrl => location.replace(targetUrl);
@@ -506,6 +511,7 @@ const MenuItemLink = props => {
506
511
  activeClassName: "highlighted",
507
512
  "data-link-level": linkLevel,
508
513
  css: getMenuItemLinkStyles(Boolean(props.isSubmenuLink)),
514
+ tabIndex: props.isSubmenuLink && !props.isSubmenuFocused ? -1 : 0,
509
515
  onClick: event => {
510
516
  if (props.linkTo && props.useFullRedirectsForLinks) {
511
517
  event.preventDefault();
@@ -531,7 +537,8 @@ MenuItemLink.propTypes = process.env.NODE_ENV !== "production" ? {
531
537
  children: _pt.node.isRequired,
532
538
  onClick: _pt.func,
533
539
  useFullRedirectsForLinks: _pt.bool,
534
- isSubmenuLink: _pt.bool
540
+ isSubmenuLink: _pt.bool,
541
+ isSubmenuFocused: _pt.bool
535
542
  } : {};
536
543
  MenuItemLink.displayName = 'MenuItemLink';
537
544
  MenuItemLink.defaultProps = menuItemLinkDefaultProps;
@@ -1013,6 +1020,11 @@ const ApplicationMenu = props => {
1013
1020
  _useState4 = _slicedToArray(_useState3, 2),
1014
1021
  isSubmenuAboveMenuItem = _useState4[0],
1015
1022
  setIsSubmenuAboveMenuItem = _useState4[1];
1023
+ const _useState5 = useState(false),
1024
+ _useState6 = _slicedToArray(_useState5, 2),
1025
+ isSubmenuFocused = _useState6[0],
1026
+ setIsSubmenuFocused = _useState6[1];
1027
+ const observerRef = useRef(null);
1016
1028
  const submenuRef = useRef(null);
1017
1029
  const hasSubmenu = _Array$isArray(props.menu.submenu) && props.menu.submenu.length > 0;
1018
1030
  const menuItemIdentifier = snakeCase(props.menu.key);
@@ -1034,7 +1046,6 @@ const ApplicationMenu = props => {
1034
1046
  setSubmenuVerticalPosition(props.isMenuOpen ? menuItemTop : menuItemBottom);
1035
1047
  }
1036
1048
  }, [menuItemIdentifier, props.isMenuOpen]);
1037
- const observerRef = useRef(null);
1038
1049
  useLayoutEffect(() => {
1039
1050
  observerRef.current = new IntersectionObserver(callbackFn, {
1040
1051
  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
@@ -1051,6 +1062,7 @@ const ApplicationMenu = props => {
1051
1062
  if (observer && currentSubmenuRef) {
1052
1063
  observer.observe(currentSubmenuRef);
1053
1064
  }
1065
+ setIsSubmenuFocused(false);
1054
1066
  return () => observer === null || observer === void 0 ? void 0 : observer.disconnect();
1055
1067
  }, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
1056
1068
  const isMainMenuRouteActive = Boolean(matchPath(props.location.pathname, {
@@ -1068,6 +1080,17 @@ const ApplicationMenu = props => {
1068
1080
  }, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
1069
1081
 
1070
1082
  const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
1083
+ const handleKeyDown = e => {
1084
+ var _submenuRef$current;
1085
+ const currentlyFocusedItem = (_submenuRef$current = submenuRef.current) === null || _submenuRef$current === void 0 ? void 0 : _submenuRef$current.querySelector(':focus');
1086
+ if (e.key === 'Enter') {
1087
+ setIsSubmenuFocused(true);
1088
+ if (!currentlyFocusedItem) {
1089
+ var _submenuRef$current2;
1090
+ (_submenuRef$current2 = submenuRef.current) === null || _submenuRef$current2 === void 0 || (_submenuRef$current2 = _submenuRef$current2.querySelector('a')) === null || _submenuRef$current2 === void 0 || _submenuRef$current2.focus();
1091
+ }
1092
+ }
1093
+ };
1071
1094
  return jsx(RestrictedMenuItem, {
1072
1095
  keyOfMenuItem: props.menu.key,
1073
1096
  featureToggle: (_props$menu$featureTo = props.menu.featureToggle) !== null && _props$menu$featureTo !== void 0 ? _props$menu$featureTo : undefined,
@@ -1083,6 +1106,7 @@ const ApplicationMenu = props => {
1083
1106
  isMainMenuRouteActive: isMainMenuRouteActive,
1084
1107
  isMenuOpen: props.isMenuOpen,
1085
1108
  onClick: props.handleToggleItem,
1109
+ onKeyDown: handleKeyDown,
1086
1110
  onMouseEnter: props.handleToggleItem,
1087
1111
  onMouseLeave: props.shouldCloseMenuFly,
1088
1112
  identifier: menuItemIdentifier,
@@ -1140,6 +1164,7 @@ const ApplicationMenu = props => {
1140
1164
  useFullRedirectsForLinks: props.useFullRedirectsForLinks,
1141
1165
  onClick: props.onMenuItemClick,
1142
1166
  isSubmenuLink: true,
1167
+ isSubmenuFocused: isSubmenuFocused,
1143
1168
  children: jsx(MenuLabel, {
1144
1169
  labelAllLocales: submenu.labelAllLocales,
1145
1170
  defaultLabel: submenu.defaultLabel,