@commercetools-frontend/application-shell 22.30.2 → 22.31.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.
- package/dist/{application-entry-point-2365588d.esm.js → application-entry-point-44f059a0.esm.js} +3 -3
- package/dist/{application-entry-point-257a1cbc.cjs.prod.js → application-entry-point-654951a6.cjs.prod.js} +2 -2
- package/dist/{application-entry-point-a403a123.cjs.dev.js → application-entry-point-c2f77f23.cjs.dev.js} +3 -3
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +11 -5
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +11 -5
- package/dist/commercetools-frontend-application-shell.esm.js +5 -5
- package/dist/{custom-view-dev-host-2dbeffde.cjs.dev.js → custom-view-dev-host-1ef244b8.cjs.dev.js} +12 -16
- package/dist/{custom-view-dev-host-54b19a22.esm.js → custom-view-dev-host-83d6228b.esm.js} +12 -15
- package/dist/{custom-view-dev-host-55efb1ea.cjs.prod.js → custom-view-dev-host-9469b02c.cjs.prod.js} +12 -16
- package/dist/declarations/src/components/application-page-title/application-page-title.d.ts +16 -0
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +17 -0
- package/dist/declarations/src/components/application-shell-authenticated/application-shell-authenticated.d.ts +4 -0
- package/dist/declarations/src/components/workspaces-navigation-button/index.d.ts +1 -0
- package/dist/declarations/src/components/workspaces-navigation-button/messages.d.ts +8 -0
- package/dist/declarations/src/components/workspaces-navigation-button/workspaces-navigation-button.d.ts +3 -0
- package/dist/declarations/src/configure-store.d.ts +3 -0
- package/dist/declarations/src/hooks/use-routes-creator/use-routes-creator.d.ts +3 -0
- package/dist/declarations/src/index.d.ts +16 -1
- package/dist/declarations/src/types/generated/ctp.d.ts +562 -0
- package/dist/declarations/src/types/generated/mc.d.ts +5 -0
- package/dist/declarations/src/types/generated/proxy.d.ts +3 -0
- package/dist/declarations/src/types/generated/settings.d.ts +22 -0
- package/dist/declarations/src/utils/get-mc-origin/get-mc-origin.d.ts +16 -0
- package/dist/{index-055ebc13.cjs.prod.js → index-91985d64.cjs.prod.js} +2 -2
- package/dist/{index-ca28cb0d.esm.js → index-9475648a.esm.js} +185 -154
- package/dist/{index-ca730730.cjs.dev.js → index-b1476d46.cjs.dev.js} +2 -2
- package/dist/{index-4e5248df.esm.js → index-b6081c20.esm.js} +2 -2
- package/dist/{index-8974720c.cjs.dev.js → index-bd1c5108.cjs.dev.js} +190 -153
- package/dist/{index-176564c3.cjs.prod.js → index-ff4b1f1e.cjs.prod.js} +175 -144
- package/dist/{navbar-e3ee2a76.esm.js → navbar-18ab9da8.esm.js} +80 -97
- package/dist/{navbar-ced649a9.cjs.prod.js → navbar-32ad8010.cjs.prod.js} +80 -98
- package/dist/{navbar-f981de75.cjs.dev.js → navbar-4068efee.cjs.dev.js} +80 -98
- package/dist/oidc-6c6599a2.cjs.dev.js +98 -0
- package/dist/oidc-8275c04f.esm.js +84 -0
- package/dist/{oidc-callback-b6c08a0a.cjs.prod.js → oidc-callback-365669c2.cjs.prod.js} +11 -12
- package/dist/{oidc-callback-394ce33e.cjs.dev.js → oidc-callback-910e1e1c.cjs.dev.js} +11 -12
- package/dist/{oidc-callback-96d0d22a.esm.js → oidc-callback-a622f3a5.esm.js} +11 -12
- package/dist/oidc-d02d4ab8.cjs.prod.js +98 -0
- package/dist/{project-container-d690330d.cjs.prod.js → project-container-4cc1a369.cjs.prod.js} +15 -17
- package/dist/{project-container-4c04ecd0.cjs.dev.js → project-container-ba49f3db.cjs.dev.js} +15 -17
- package/dist/{project-container-66355b01.esm.js → project-container-edb85c22.esm.js} +15 -17
- package/dist/{project-expired-e9d9a604.cjs.dev.js → project-expired-378bcfb0.cjs.dev.js} +8 -8
- package/dist/{project-expired-6f0e2ae2.cjs.prod.js → project-expired-59d50031.cjs.prod.js} +8 -8
- package/dist/{project-expired-4768f135.esm.js → project-expired-ef791516.esm.js} +8 -8
- package/dist/{project-not-found-dcc624b2.cjs.dev.js → project-not-found-543b8e4f.cjs.dev.js} +7 -7
- package/dist/{project-not-found-06f0f8b0.cjs.prod.js → project-not-found-a7faf93c.cjs.prod.js} +7 -7
- package/dist/{project-not-found-412af385.esm.js → project-not-found-bc7cea0c.esm.js} +7 -7
- package/dist/{project-not-initialized-dcb97eb4.esm.js → project-not-initialized-88376a4a.esm.js} +8 -8
- package/dist/{project-not-initialized-702e4e28.cjs.dev.js → project-not-initialized-a9c3afa0.cjs.dev.js} +8 -8
- package/dist/{project-not-initialized-610860be.cjs.prod.js → project-not-initialized-e9560ddb.cjs.prod.js} +8 -8
- package/dist/{project-suspended-ab653b2d.cjs.prod.js → project-suspended-0686fc53.cjs.prod.js} +7 -7
- package/dist/{project-suspended-40040cb1.cjs.dev.js → project-suspended-5cc4bc59.cjs.dev.js} +7 -7
- package/dist/{project-suspended-50e15143.esm.js → project-suspended-8fa0b06e.esm.js} +7 -7
- package/dist/{quick-access-438951ba.cjs.dev.js → quick-access-3479fec8.cjs.dev.js} +204 -133
- package/dist/{quick-access-8efb79f3.esm.js → quick-access-72e35fc8.esm.js} +204 -132
- package/dist/{quick-access-0d122c64.cjs.prod.js → quick-access-96ea968d.cjs.prod.js} +204 -133
- package/dist/{redirect-to-login-3ebce35d.cjs.dev.js → redirect-to-login-32ebe009.cjs.dev.js} +10 -13
- package/dist/{redirect-to-login-3c5a3f4a.cjs.prod.js → redirect-to-login-60a00442.cjs.prod.js} +10 -13
- package/dist/{redirect-to-login-af9860c8.esm.js → redirect-to-login-b69fb5ce.esm.js} +10 -13
- package/dist/{redirect-to-logout-7b30e94c.esm.js → redirect-to-logout-4ee944fa.esm.js} +9 -10
- package/dist/{redirect-to-logout-1fa97ad0.cjs.prod.js → redirect-to-logout-d017b04b.cjs.prod.js} +9 -10
- package/dist/{redirect-to-logout-78fabe18.cjs.dev.js → redirect-to-logout-edf8d35c.cjs.dev.js} +9 -10
- package/dist/{redirector-0a16c1d1.cjs.prod.js → redirector-01f35da8.cjs.prod.js} +3 -4
- package/dist/{redirector-d2fd2b5e.esm.js → redirector-76670a54.esm.js} +3 -4
- package/dist/{redirector-e58b9bc3.cjs.dev.js → redirector-98dfc5f0.cjs.dev.js} +3 -4
- package/dist/{requests-in-flight-loader-04924584.cjs.dev.js → requests-in-flight-loader-0a78e347.cjs.dev.js} +7 -7
- package/dist/{requests-in-flight-loader-ef8411a8.cjs.prod.js → requests-in-flight-loader-61257a90.cjs.prod.js} +7 -7
- package/dist/{requests-in-flight-loader-020da4f3.esm.js → requests-in-flight-loader-efda7302.esm.js} +7 -7
- package/dist/{service-page-project-switcher-893c4acc.cjs.prod.js → service-page-project-switcher-9310d282.cjs.prod.js} +1 -1
- package/dist/{service-page-project-switcher-550025cd.cjs.dev.js → service-page-project-switcher-ae1cd6fa.cjs.dev.js} +1 -1
- package/dist/{service-page-project-switcher-eec5d6be.esm.js → service-page-project-switcher-fb693a35.esm.js} +1 -1
- package/dist/{use-applications-menu-2fe3d465.cjs.dev.js → use-applications-menu-222b9106.cjs.prod.js} +40 -49
- package/dist/{use-applications-menu-0d3f4ffc.cjs.prod.js → use-applications-menu-302a0ac8.cjs.dev.js} +40 -49
- package/dist/{use-applications-menu-03759eab.esm.js → use-applications-menu-b583e9c3.esm.js} +38 -46
- package/dist/{user-settings-menu-bbc43c88.cjs.dev.js → user-settings-menu-7c17f227.cjs.dev.js} +22 -29
- package/dist/{user-settings-menu-3f86267c.cjs.prod.js → user-settings-menu-8bba9f50.cjs.prod.js} +22 -29
- package/dist/{user-settings-menu-36bea559.esm.js → user-settings-menu-ff4a6c63.esm.js} +22 -29
- package/dist/{version-tracker-7cce73f6.cjs.dev.js → version-tracker-54afa816.cjs.dev.js} +6 -6
- package/dist/{version-tracker-1ca99690.cjs.prod.js → version-tracker-5aea360a.cjs.prod.js} +6 -6
- package/dist/{version-tracker-610f66eb.esm.js → version-tracker-935e29c6.esm.js} +6 -6
- package/package.json +32 -31
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +1 -2
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +1 -2
- package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +1 -2
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +21 -26
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +21 -26
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +16 -20
- package/dist/oidc-63e926e1.cjs.dev.js +0 -115
- package/dist/oidc-cfa56c46.cjs.prod.js +0 -115
- package/dist/oidc-ff53dfd3.esm.js +0 -100
|
@@ -5,7 +5,6 @@ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
|
5
5
|
var _pt = require('prop-types');
|
|
6
6
|
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
7
7
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
8
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
9
8
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
10
9
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
11
10
|
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
@@ -23,12 +22,11 @@ var LogoSVG = require('@commercetools-frontend/assets/logos/commercetools_small-
|
|
|
23
22
|
var constants = require('@commercetools-frontend/constants');
|
|
24
23
|
var icons = require('@commercetools-uikit/icons');
|
|
25
24
|
var Spacings = require('@commercetools-uikit/spacings');
|
|
26
|
-
var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
|
|
27
25
|
var _styled = require('@emotion/styled/base');
|
|
28
26
|
var react = require('@emotion/react');
|
|
29
27
|
var applicationComponents = require('@commercetools-frontend/application-components');
|
|
30
28
|
var designSystem = require('@commercetools-uikit/design-system');
|
|
31
|
-
var oidc = require('./oidc-
|
|
29
|
+
var oidc = require('./oidc-d02d4ab8.cjs.prod.js');
|
|
32
30
|
var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
33
31
|
var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
|
|
34
32
|
var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
|
|
@@ -46,7 +44,7 @@ var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/insta
|
|
|
46
44
|
var isNil = require('lodash/isNil');
|
|
47
45
|
var throttle = require('lodash/throttle');
|
|
48
46
|
var sentry = require('@commercetools-frontend/sentry');
|
|
49
|
-
var useApplicationsMenu = require('./use-applications-menu-
|
|
47
|
+
var useApplicationsMenu = require('./use-applications-menu-222b9106.cjs.prod.js');
|
|
50
48
|
require('@apollo/client');
|
|
51
49
|
require('@commercetools-frontend/l10n');
|
|
52
50
|
|
|
@@ -55,7 +53,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
|
|
|
55
53
|
var _pt__default = /*#__PURE__*/_interopDefault(_pt);
|
|
56
54
|
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
57
55
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
58
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
59
56
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
60
57
|
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
61
58
|
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
@@ -159,8 +156,14 @@ const MenuListItem = /*#__PURE__*/_styled__default["default"]("li", {
|
|
|
159
156
|
target: "e1i568cv0"
|
|
160
157
|
} )("height:", oidc.NAVBAR.itemSize, ";width:", oidc.NAVBAR.itemSize, ";margin:0;background:", applicationComponents.designTokens.backgroundColorForNavbar, ";list-style:none;cursor:pointer;", IconWrapper, "{width:auto;display:flex;justify-content:center;}", props => [props.isRouteActive && /*#__PURE__*/react.css("background:", designSystem.designTokens.colorPrimary25, ";border-radius:", designSystem.designTokens.borderRadius8, ";" + ("" ), "" ), !props.isRouteActive && /*#__PURE__*/react.css(":hover,:focus-within{background-color:", designSystem.designTokens.colorPrimary20, ";border-radius:", designSystem.designTokens.borderRadius8, ";}" + ("" ), "" ), props.isActive && /*#__PURE__*/react.css(ItemIconText, "{justify-content:flex-start;}" + ("" ), "" ), !props.isActive && /*#__PURE__*/react.css(":hover ", Icon, ">svg *:not([fill='none']),:focus-within ", Icon, ">svg *:not([fill='none']){fill:", designSystem.designTokens.colorSurface, ";}:hover .", Title, ",:focus-within ", Title, "{color:", designSystem.designTokens.colorSurface, ";}" + ("" ), "" ), props.isCollapsed && _ref], " :hover ", Title, ",:focus-within ", Title, "{margin-left:calc(", designSystem.designTokens.spacing25, " + 2px);}:hover ", Icon, ",:focus-within ", Icon, "{transform:scale(1.2);}:hover ", MenuList, ".sublist-collapsed__active,:hover ", MenuList, ".sublist-collapsed__active__above,:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-collapsed__active,:focus-within ", MenuList, ".sublist-collapsed__active__above,:focus-within ", MenuList, ".sublist-expanded__active{display:flex;flex-direction:column;align-items:flex-start;background-color:", designSystem.designTokens.colorSurface, ";min-height:", oidc.NAVBAR.sublistItemMinHeight, ";width:", oidc.NAVBAR.sublistWidth, ";border-radius:", designSystem.designTokens.borderRadius8, ";z-index:20001;box-shadow:-2px 4px 25px 0 rgba(89, 89, 89, 0.5);}:hover ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:hover ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active.sublist-collapsed__empty,:focus-within ", MenuList, ".sublist-collapsed__active__above.sublist-collapsed__empty{visibility:hidden;}:hover ", MenuList, ".sublist-expanded__active,:focus-within ", MenuList, ".sublist-expanded__active{left:", oidc.NAVBAR.sublistIndentationWhenExpanded, ";}" + ("" ));
|
|
161
158
|
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
const visible = react.keyframes`
|
|
160
|
+
from {
|
|
161
|
+
opacity: 0;
|
|
162
|
+
}
|
|
163
|
+
to {
|
|
164
|
+
opacity: 1;
|
|
165
|
+
}
|
|
166
|
+
`;
|
|
164
167
|
const FixedMenu = /*#__PURE__*/_styled__default["default"]("div", {
|
|
165
168
|
target: "e1meml8k10"
|
|
166
169
|
} )("position:relative;width:", oidc.NAVBAR.widthLeftNavigation, ";", MenuListItem, " ", ItemIconText, "{justify-content:center;display:flex;width:100%;}" + ("" ));
|
|
@@ -308,8 +311,8 @@ const MenuGroup = /*#__PURE__*/react$1.forwardRef((props, ref) => {
|
|
|
308
311
|
return jsxRuntime.jsx(MenuList, {
|
|
309
312
|
ref: ref && props.level === 2 ? ref : null,
|
|
310
313
|
level: props.level,
|
|
311
|
-
id:
|
|
312
|
-
"data-testid":
|
|
314
|
+
id: `group-${props.id}`,
|
|
315
|
+
"data-testid": `group-${props.id}`,
|
|
313
316
|
role: "menu",
|
|
314
317
|
"aria-expanded": isSublistActiveWhileIsMenuExpanded || isSublistActiveWhileIsMenuCollapsed,
|
|
315
318
|
onKeyDown: props.handleKeyDown,
|
|
@@ -411,7 +414,7 @@ const restrictedMenuItemDefaultProps = {
|
|
|
411
414
|
permissions: []
|
|
412
415
|
};
|
|
413
416
|
function isLongLivedFlag(flag) {
|
|
414
|
-
return typeof
|
|
417
|
+
return typeof flag?.value === 'boolean';
|
|
415
418
|
}
|
|
416
419
|
const RestrictedMenuItem = props => {
|
|
417
420
|
// NOTE: Custom application are activated/deactivated while their
|
|
@@ -634,15 +637,13 @@ const reducer = (state, action) => {
|
|
|
634
637
|
return state;
|
|
635
638
|
}
|
|
636
639
|
};
|
|
637
|
-
const isFocusOutEventCalledBySubmenuItem = event =>
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
);
|
|
645
|
-
};
|
|
640
|
+
const isFocusOutEventCalledBySubmenuItem = event =>
|
|
641
|
+
// a case when a submenu item loses focus
|
|
642
|
+
event.type === 'focusout' &&
|
|
643
|
+
// element receiving focus
|
|
644
|
+
event.relatedTarget?.matches('a[data-link-level="text-link"]') &&
|
|
645
|
+
// element losing focus
|
|
646
|
+
event.target?.matches('a[data-link-level="text-link-sublist"]');
|
|
646
647
|
const useNavbarStateManager = props => {
|
|
647
648
|
var _context, _context2, _context4, _context5;
|
|
648
649
|
const navBarNode = react$1.useRef(null);
|
|
@@ -742,8 +743,7 @@ const useNavbarStateManager = props => {
|
|
|
742
743
|
}
|
|
743
744
|
}, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
|
|
744
745
|
const shouldCloseMenuFly = react$1.useCallback(event => {
|
|
745
|
-
|
|
746
|
-
if (!(navBarNode !== null && navBarNode !== void 0 && (_navBarNode$current = navBarNode.current) !== null && _navBarNode$current !== void 0 && _navBarNode$current.contains(event.target)) && !state.isMenuOpen) {
|
|
746
|
+
if (!navBarNode?.current?.contains(event.target) && !state.isMenuOpen) {
|
|
747
747
|
dispatch({
|
|
748
748
|
type: 'unsetActiveItemIndex'
|
|
749
749
|
});
|
|
@@ -797,7 +797,7 @@ const useNavbarStateManager = props => {
|
|
|
797
797
|
const allApplicationsNavbarMenuGroups = _sortInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](_context5 = applicationsNavBarMenuGroups || []).call(_context5, navbarMenuGroup => navbarMenuGroup.key === '2' && allCustomApplicationsNavbarMenu.length > 0 ? {
|
|
798
798
|
key: navbarMenuGroup.key,
|
|
799
799
|
items: [...navbarMenuGroup.items, ...allCustomApplicationsNavbarMenu]
|
|
800
|
-
} : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA
|
|
800
|
+
} : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA?.key) - Number(navBarMenuGroupB?.key));
|
|
801
801
|
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
802
802
|
navBarNode,
|
|
803
803
|
handleToggleItem,
|
|
@@ -808,22 +808,19 @@ const useNavbarStateManager = props => {
|
|
|
808
808
|
};
|
|
809
809
|
|
|
810
810
|
function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
811
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
811
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(t), !0)).call(_context5, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys(Object(t))).call(_context6, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
812
812
|
const getMenuVisibilitiesOfSubmenus = menu => {
|
|
813
813
|
var _context, _context2;
|
|
814
814
|
return _filterInstanceProperty__default["default"](_context = _mapInstanceProperty__default["default"](_context2 = menu.submenu).call(_context2, submenu => submenu.menuVisibility)).call(_context, nonNullable);
|
|
815
815
|
};
|
|
816
816
|
const getMenuVisibilityOfMainmenu = menu => menu.menuVisibility ? [menu.menuVisibility] : [];
|
|
817
|
-
const getIsSubmenuRouteActive = (uriPath, props) => {
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
strict: false
|
|
823
|
-
}));
|
|
824
|
-
};
|
|
817
|
+
const getIsSubmenuRouteActive = (uriPath, props) => Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
818
|
+
path: `/${props.projectKey}/${uriPath}`,
|
|
819
|
+
exact: true,
|
|
820
|
+
strict: false
|
|
821
|
+
}));
|
|
825
822
|
const ApplicationMenu = props => {
|
|
826
|
-
var
|
|
823
|
+
var _context3;
|
|
827
824
|
const _useState = react$1.useState(0),
|
|
828
825
|
_useState2 = _slicedToArray(_useState, 2),
|
|
829
826
|
submenuVerticalPosition = _useState2[0],
|
|
@@ -841,10 +838,9 @@ const ApplicationMenu = props => {
|
|
|
841
838
|
const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
|
|
842
839
|
const menuItemIdentifier = snakeCase__default["default"](props.menu.key);
|
|
843
840
|
const callbackFn = react$1.useCallback(entries => {
|
|
844
|
-
|
|
845
|
-
const
|
|
846
|
-
const
|
|
847
|
-
const menuItemBottom = (menuItemBoundingClientRect === null || menuItemBoundingClientRect === void 0 ? void 0 : menuItemBoundingClientRect.bottom) || 0;
|
|
841
|
+
const menuItemBoundingClientRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
|
|
842
|
+
const menuItemTop = menuItemBoundingClientRect?.top || 0;
|
|
843
|
+
const menuItemBottom = menuItemBoundingClientRect?.bottom || 0;
|
|
848
844
|
const _entries = _slicedToArray(entries, 1),
|
|
849
845
|
entry = _entries[0];
|
|
850
846
|
const doesSubmenuFitWithinViewportBelowMenuItem = entry.boundingClientRect.height + (props.isMenuOpen ? menuItemTop : menuItemBottom) > window.innerHeight;
|
|
@@ -862,10 +858,7 @@ const ApplicationMenu = props => {
|
|
|
862
858
|
observerRef.current = new IntersectionObserver(callbackFn, {
|
|
863
859
|
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
|
|
864
860
|
});
|
|
865
|
-
return () =>
|
|
866
|
-
var _observerRef$current;
|
|
867
|
-
return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
|
|
868
|
-
};
|
|
861
|
+
return () => observerRef.current?.disconnect();
|
|
869
862
|
}, [callbackFn, props.isMenuOpen]);
|
|
870
863
|
react$1.useLayoutEffect(() => {
|
|
871
864
|
const currentSubmenuRef = submenuRef.current;
|
|
@@ -875,10 +868,10 @@ const ApplicationMenu = props => {
|
|
|
875
868
|
observer.observe(currentSubmenuRef);
|
|
876
869
|
}
|
|
877
870
|
setIsSubmenuFocused(false);
|
|
878
|
-
return () => observer
|
|
871
|
+
return () => observer?.disconnect();
|
|
879
872
|
}, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
|
|
880
873
|
const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
881
|
-
path:
|
|
874
|
+
path: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
882
875
|
exact: false,
|
|
883
876
|
strict: false
|
|
884
877
|
}));
|
|
@@ -893,22 +886,20 @@ const ApplicationMenu = props => {
|
|
|
893
886
|
|
|
894
887
|
const namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
|
|
895
888
|
const handleKeyDown = e => {
|
|
896
|
-
|
|
897
|
-
const currentlyFocusedItem = (_submenuRef$current = submenuRef.current) === null || _submenuRef$current === void 0 ? void 0 : _submenuRef$current.querySelector(':focus');
|
|
889
|
+
const currentlyFocusedItem = submenuRef.current?.querySelector(':focus');
|
|
898
890
|
if (e.key === 'Enter') {
|
|
899
891
|
setIsSubmenuFocused(true);
|
|
900
892
|
if (!currentlyFocusedItem) {
|
|
901
|
-
|
|
902
|
-
(_submenuRef$current2 = submenuRef.current) === null || _submenuRef$current2 === void 0 || (_submenuRef$current2 = _submenuRef$current2.querySelector('a')) === null || _submenuRef$current2 === void 0 || _submenuRef$current2.focus();
|
|
893
|
+
submenuRef.current?.querySelector('a')?.focus();
|
|
903
894
|
}
|
|
904
895
|
}
|
|
905
896
|
};
|
|
906
897
|
return jsxRuntime.jsx(RestrictedMenuItem, {
|
|
907
898
|
keyOfMenuItem: props.menu.key,
|
|
908
|
-
featureToggle:
|
|
899
|
+
featureToggle: props.menu.featureToggle ?? undefined,
|
|
909
900
|
permissions: props.menu.permissions,
|
|
910
|
-
actionRights:
|
|
911
|
-
dataFences:
|
|
901
|
+
actionRights: props.menu.actionRights ?? undefined,
|
|
902
|
+
dataFences: props.menu.dataFences ?? undefined,
|
|
912
903
|
projectPermissions: props.projectPermissions,
|
|
913
904
|
menuVisibilities: props.menuVisibilities,
|
|
914
905
|
namesOfMenuVisibilities: namesOfMenuVisibilitiesOfAllSubmenus,
|
|
@@ -923,7 +914,7 @@ const ApplicationMenu = props => {
|
|
|
923
914
|
onMouseLeave: props.shouldCloseMenuFly,
|
|
924
915
|
identifier: menuItemIdentifier,
|
|
925
916
|
children: [jsxRuntime.jsx(MenuItemLink, {
|
|
926
|
-
linkTo:
|
|
917
|
+
linkTo: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
927
918
|
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
928
919
|
onClick: props.onMenuItemClick,
|
|
929
920
|
children: jsxRuntime.jsx(ItemContainer, {
|
|
@@ -934,7 +925,7 @@ const ApplicationMenu = props => {
|
|
|
934
925
|
isMenuOpen: props.isMenuOpen
|
|
935
926
|
})
|
|
936
927
|
}), jsxRuntime.jsxs(MenuGroup, {
|
|
937
|
-
id:
|
|
928
|
+
id: `group-${props.menu.key}`,
|
|
938
929
|
level: 2,
|
|
939
930
|
isActive: props.isActive,
|
|
940
931
|
isExpanded: props.isMenuOpen,
|
|
@@ -945,7 +936,7 @@ const ApplicationMenu = props => {
|
|
|
945
936
|
children: [!props.isMenuOpen && jsxRuntime.jsx(TooltipContainer, {
|
|
946
937
|
alignsAgainstBottom: isSubmenuAboveMenuItem,
|
|
947
938
|
children: jsxRuntime.jsx(Tooltip, {
|
|
948
|
-
"aria-owns":
|
|
939
|
+
"aria-owns": `group-${props.menu.key}`,
|
|
949
940
|
role: "tooltip",
|
|
950
941
|
children: jsxRuntime.jsx(MenuLabel, {
|
|
951
942
|
labelAllLocales: props.menu.labelAllLocales,
|
|
@@ -953,40 +944,37 @@ const ApplicationMenu = props => {
|
|
|
953
944
|
applicationLocale: props.applicationLocale
|
|
954
945
|
})
|
|
955
946
|
})
|
|
956
|
-
}), hasSubmenu ? _mapInstanceProperty__default["default"](
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
children: jsxRuntime.jsx(
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
defaultLabel: submenu.defaultLabel,
|
|
983
|
-
applicationLocale: props.applicationLocale
|
|
984
|
-
})
|
|
947
|
+
}), hasSubmenu ? _mapInstanceProperty__default["default"](_context3 = props.menu.submenu).call(_context3, submenu => jsxRuntime.jsx(RestrictedMenuItem, {
|
|
948
|
+
keyOfMenuItem: submenu.key,
|
|
949
|
+
featureToggle: submenu.featureToggle ?? undefined,
|
|
950
|
+
permissions: submenu.permissions,
|
|
951
|
+
actionRights: submenu.actionRights ?? undefined,
|
|
952
|
+
dataFences: submenu.dataFences ?? undefined,
|
|
953
|
+
projectPermissions: props.projectPermissions,
|
|
954
|
+
menuVisibilities: props.menuVisibilities,
|
|
955
|
+
namesOfMenuVisibilities: submenu.menuVisibility ? [submenu.menuVisibility] : undefined,
|
|
956
|
+
children: jsxRuntime.jsx(SublistItem, {
|
|
957
|
+
isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
|
|
958
|
+
children: jsxRuntime.jsx(Text, {
|
|
959
|
+
children: jsxRuntime.jsx(MenuItemLink, {
|
|
960
|
+
linkTo: `/${props.projectKey}/${submenu.uriPath}`
|
|
961
|
+
// We want to use an exact matching strategy to avoid multiple
|
|
962
|
+
// links matching sub-routes.
|
|
963
|
+
,
|
|
964
|
+
exactMatch: true,
|
|
965
|
+
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
966
|
+
onClick: props.onMenuItemClick,
|
|
967
|
+
isSubmenuLink: true,
|
|
968
|
+
isSubmenuFocused: isSubmenuFocused,
|
|
969
|
+
children: jsxRuntime.jsx(MenuLabel, {
|
|
970
|
+
labelAllLocales: submenu.labelAllLocales,
|
|
971
|
+
defaultLabel: submenu.defaultLabel,
|
|
972
|
+
applicationLocale: props.applicationLocale
|
|
985
973
|
})
|
|
986
974
|
})
|
|
987
975
|
})
|
|
988
|
-
}
|
|
989
|
-
}) : null]
|
|
976
|
+
})
|
|
977
|
+
}, `${props.menu.key}-submenu-${submenu.key}`)) : null]
|
|
990
978
|
})]
|
|
991
979
|
})
|
|
992
980
|
}, props.menu.key);
|
|
@@ -1008,18 +996,12 @@ const NavBar = props => {
|
|
|
1008
996
|
allApplicationsNavbarMenuGroups = _useNavbarStateManage.allApplicationsNavbarMenuGroups;
|
|
1009
997
|
const useFullRedirectsForLinks = Boolean(props.environment.useFullRedirectsForLinks);
|
|
1010
998
|
const location = reactRouterDom.useLocation();
|
|
1011
|
-
const projectPermissions = react$1.useMemo(() => {
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
};
|
|
1018
|
-
}, [props.project]);
|
|
1019
|
-
const menuVisibilities = react$1.useMemo(() => {
|
|
1020
|
-
var _props$project4;
|
|
1021
|
-
return applicationShellConnectors.normalizeAllAppliedMenuVisibilities((_props$project4 = props.project) === null || _props$project4 === void 0 ? void 0 : _props$project4.allPermissionsForAllApplications.allAppliedMenuVisibilities);
|
|
1022
|
-
}, [props.project]);
|
|
999
|
+
const projectPermissions = react$1.useMemo(() => ({
|
|
1000
|
+
permissions: applicationShellConnectors.normalizeAllAppliedPermissions(props.project?.allPermissionsForAllApplications.allAppliedPermissions),
|
|
1001
|
+
actionRights: applicationShellConnectors.normalizeAllAppliedActionRights(props.project?.allPermissionsForAllApplications.allAppliedActionRights),
|
|
1002
|
+
dataFences: applicationShellConnectors.normalizeAllAppliedDataFences(props.project?.allPermissionsForAllApplications.allAppliedDataFences)
|
|
1003
|
+
}), [props.project]);
|
|
1004
|
+
const menuVisibilities = react$1.useMemo(() => applicationShellConnectors.normalizeAllAppliedMenuVisibilities(props.project?.allPermissionsForAllApplications.allAppliedMenuVisibilities), [props.project]);
|
|
1023
1005
|
const applicationLocale = props.applicationLocale;
|
|
1024
1006
|
|
|
1025
1007
|
// Render the loading navbar as long as all the data
|
|
@@ -1050,11 +1032,11 @@ const NavBar = props => {
|
|
|
1050
1032
|
children: jsxRuntime.jsx(Spacings__default["default"].Stack, {
|
|
1051
1033
|
scale: "l",
|
|
1052
1034
|
children: _mapInstanceProperty__default["default"](allApplicationsNavbarMenuGroups).call(allApplicationsNavbarMenuGroups, navbarMenuGroup => {
|
|
1053
|
-
var
|
|
1035
|
+
var _context4;
|
|
1054
1036
|
return jsxRuntime.jsx("div", {
|
|
1055
|
-
children: _mapInstanceProperty__default["default"](
|
|
1037
|
+
children: _mapInstanceProperty__default["default"](_context4 = navbarMenuGroup.items).call(_context4, menu => {
|
|
1056
1038
|
const menuType = 'scrollable';
|
|
1057
|
-
const itemIndex =
|
|
1039
|
+
const itemIndex = `${menuType}-${menu.key}`;
|
|
1058
1040
|
return jsxRuntime.jsx(ApplicationMenu, {
|
|
1059
1041
|
location: location,
|
|
1060
1042
|
menu: menu,
|