@commercetools-frontend/application-shell 25.0.0 → 25.2.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-1b23fb6b.esm.js → application-entry-point-10a5e1a5.esm.js} +4 -6
- package/dist/{application-entry-point-74a06151.cjs.prod.js → application-entry-point-8c4b8e53.cjs.prod.js} +3 -4
- package/dist/{application-entry-point-18d8fba0.cjs.dev.js → application-entry-point-c87294b0.cjs.dev.js} +4 -7
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +4 -5
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +4 -5
- package/dist/commercetools-frontend-application-shell.esm.js +4 -5
- package/dist/{custom-view-dev-host-dc7f2835.cjs.dev.js → custom-view-dev-host-116479c1.cjs.dev.js} +10 -15
- package/dist/{custom-view-dev-host-d72f9ae0.cjs.prod.js → custom-view-dev-host-8dd01b96.cjs.prod.js} +10 -15
- package/dist/{custom-view-dev-host-98432fc5.esm.js → custom-view-dev-host-c47927c7.esm.js} +10 -14
- package/dist/{index-208c3cdd.cjs.dev.js → index-1bdcc336.cjs.dev.js} +108 -132
- package/dist/{index-52c724ed.cjs.prod.js → index-245e2980.cjs.prod.js} +2 -2
- package/dist/{index-25183095.cjs.dev.js → index-614accc4.cjs.dev.js} +2 -2
- package/dist/{index-5aaa33bb.esm.js → index-86039df7.esm.js} +2 -2
- package/dist/{index-af2cc053.cjs.prod.js → index-aa7211d5.cjs.prod.js} +108 -132
- package/dist/{index-75206fba.esm.js → index-b26c8745.esm.js} +108 -131
- package/dist/{navbar-0bad8bc8.esm.js → navbar-9a40ead9.esm.js} +89 -104
- package/dist/{navbar-d4189469.cjs.dev.js → navbar-c51e0607.cjs.dev.js} +89 -105
- package/dist/{navbar-7653417f.cjs.prod.js → navbar-e287ce25.cjs.prod.js} +89 -105
- package/dist/oidc-8827f9fe.cjs.dev.js +98 -0
- package/dist/oidc-b2520905.esm.js +84 -0
- package/dist/{oidc-callback-3f9e25bc.cjs.prod.js → oidc-callback-13f8e123.cjs.prod.js} +8 -10
- package/dist/{oidc-callback-b6584fe8.esm.js → oidc-callback-39ea9b04.esm.js} +8 -10
- package/dist/{oidc-callback-f2f37906.cjs.dev.js → oidc-callback-59160485.cjs.dev.js} +8 -10
- package/dist/oidc-d74e6aa2.cjs.prod.js +98 -0
- package/dist/{project-container-27db6a7e.cjs.dev.js → project-container-a6c01dbf.cjs.dev.js} +11 -14
- package/dist/{project-container-0c9ee557.cjs.prod.js → project-container-ad2b76c9.cjs.prod.js} +11 -14
- package/dist/{project-container-8f8e017f.esm.js → project-container-f874583d.esm.js} +11 -14
- package/dist/{project-expired-b35819a4.cjs.dev.js → project-expired-743bae82.cjs.dev.js} +5 -6
- package/dist/{project-expired-da5d431c.cjs.prod.js → project-expired-a52200df.cjs.prod.js} +5 -6
- package/dist/{project-expired-bfa29d75.esm.js → project-expired-d917372c.esm.js} +5 -6
- package/dist/{project-not-found-fdb50d15.cjs.dev.js → project-not-found-5f0b2a72.cjs.dev.js} +4 -5
- package/dist/{project-not-found-695fadf6.cjs.prod.js → project-not-found-e4f79d38.cjs.prod.js} +4 -5
- package/dist/{project-not-found-5fc657c1.esm.js → project-not-found-ee259f9b.esm.js} +4 -5
- package/dist/{project-not-initialized-06d78b62.cjs.dev.js → project-not-initialized-58002613.cjs.dev.js} +5 -6
- package/dist/{project-not-initialized-a3b358cc.esm.js → project-not-initialized-6a3a2473.esm.js} +5 -6
- package/dist/{project-not-initialized-1603b228.cjs.prod.js → project-not-initialized-cfbd7c01.cjs.prod.js} +5 -6
- package/dist/{project-suspended-324978bc.cjs.prod.js → project-suspended-18764104.cjs.prod.js} +4 -5
- package/dist/{project-suspended-7e2257ac.cjs.dev.js → project-suspended-9cc251b0.cjs.dev.js} +4 -5
- package/dist/{project-suspended-d85025fe.esm.js → project-suspended-befd6810.esm.js} +4 -5
- package/dist/{redirect-to-login-3e4a6434.cjs.prod.js → redirect-to-login-12f467b8.cjs.prod.js} +10 -13
- package/dist/{redirect-to-login-edbfacbc.esm.js → redirect-to-login-2944c890.esm.js} +10 -13
- package/dist/{redirect-to-login-66ea895a.cjs.dev.js → redirect-to-login-3bee13ba.cjs.dev.js} +10 -13
- package/dist/{redirect-to-logout-ab5d2b07.cjs.dev.js → redirect-to-logout-7a1fd867.cjs.dev.js} +6 -8
- package/dist/{redirect-to-logout-aea7e913.esm.js → redirect-to-logout-ace73e1b.esm.js} +6 -8
- package/dist/{redirect-to-logout-f96c0c4b.cjs.prod.js → redirect-to-logout-ba4a0b0b.cjs.prod.js} +6 -8
- package/dist/{redirector-c858d578.cjs.prod.js → redirector-0c72d0a4.cjs.prod.js} +3 -4
- package/dist/{redirector-0efdd994.cjs.dev.js → redirector-72ccfbc2.cjs.dev.js} +3 -4
- package/dist/{redirector-656c6ee7.esm.js → redirector-d856975f.esm.js} +3 -4
- package/dist/{requests-in-flight-loader-5f216050.esm.js → requests-in-flight-loader-78c4428e.esm.js} +4 -5
- package/dist/{requests-in-flight-loader-3ffee0c0.cjs.prod.js → requests-in-flight-loader-b7225f9e.cjs.prod.js} +4 -5
- package/dist/{requests-in-flight-loader-08ef339c.cjs.dev.js → requests-in-flight-loader-cbc5faa0.cjs.dev.js} +4 -5
- package/dist/{service-page-project-switcher-9c5c86df.cjs.dev.js → service-page-project-switcher-09e3adc9.cjs.dev.js} +1 -1
- package/dist/{service-page-project-switcher-99b35fc0.esm.js → service-page-project-switcher-9cac7971.esm.js} +1 -1
- package/dist/{service-page-project-switcher-b21619c0.cjs.prod.js → service-page-project-switcher-d8772801.cjs.prod.js} +1 -1
- package/dist/{use-applications-menu-21c7420b.cjs.prod.js → use-applications-menu-8984efa1.cjs.prod.js} +39 -47
- package/dist/{use-applications-menu-8ff2d130.esm.js → use-applications-menu-bc2b9a66.esm.js} +37 -44
- package/dist/{use-applications-menu-7a85c3ee.cjs.dev.js → use-applications-menu-bd718ac8.cjs.dev.js} +39 -47
- package/dist/{user-settings-menu-2d3bfa75.cjs.prod.js → user-settings-menu-013f0041.cjs.prod.js} +22 -29
- package/dist/{user-settings-menu-31e6bb38.esm.js → user-settings-menu-16e8d020.esm.js} +22 -29
- package/dist/{user-settings-menu-c37b343f.cjs.dev.js → user-settings-menu-dc598434.cjs.dev.js} +22 -29
- package/package.json +17 -17
- 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 +22 -26
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +22 -26
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +17 -20
- package/dist/oidc-258fc018.cjs.prod.js +0 -115
- package/dist/oidc-35e8e62a.esm.js +0 -100
- package/dist/oidc-87d116c1.cjs.dev.js +0 -115
|
@@ -4,7 +4,6 @@ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
|
4
4
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
5
5
|
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
6
6
|
var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
|
|
7
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
8
7
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
9
8
|
var _Number$isFinite = require('@babel/runtime-corejs3/core-js-stable/number/is-finite');
|
|
10
9
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
@@ -25,12 +24,11 @@ var LogoSVG = require('@commercetools-frontend/assets/logos/commercetools_small-
|
|
|
25
24
|
var constants = require('@commercetools-frontend/constants');
|
|
26
25
|
var icons = require('@commercetools-uikit/icons');
|
|
27
26
|
var Spacings = require('@commercetools-uikit/spacings');
|
|
28
|
-
var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
|
|
29
27
|
var _styled = require('@emotion/styled/base');
|
|
30
28
|
var react = require('@emotion/react');
|
|
31
29
|
var applicationComponents = require('@commercetools-frontend/application-components');
|
|
32
30
|
var designSystem = require('@commercetools-uikit/design-system');
|
|
33
|
-
var oidc = require('./oidc-
|
|
31
|
+
var oidc = require('./oidc-d74e6aa2.cjs.prod.js');
|
|
34
32
|
var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
35
33
|
var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
|
|
36
34
|
var reactBroadcast = require('@flopflip/react-broadcast');
|
|
@@ -44,7 +42,7 @@ var _keysInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/insta
|
|
|
44
42
|
var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
|
|
45
43
|
var isNil = require('lodash/isNil');
|
|
46
44
|
var throttle = require('lodash/throttle');
|
|
47
|
-
var useApplicationsMenu = require('./use-applications-menu-
|
|
45
|
+
var useApplicationsMenu = require('./use-applications-menu-8984efa1.cjs.prod.js');
|
|
48
46
|
require('@apollo/client');
|
|
49
47
|
require('@commercetools-frontend/l10n');
|
|
50
48
|
|
|
@@ -52,7 +50,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
|
|
|
52
50
|
|
|
53
51
|
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
54
52
|
var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
|
|
55
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
56
53
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
57
54
|
var _Number$isFinite__default = /*#__PURE__*/_interopDefault(_Number$isFinite);
|
|
58
55
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
@@ -96,7 +93,6 @@ const Title = /*#__PURE__*/_styled__default["default"]("div", {
|
|
|
96
93
|
target: "e1wv1pdj0"
|
|
97
94
|
} )("flex:1;font-weight:600;font-size:", designSystem.designTokens.fontSize20, ";line-height:", designSystem.designTokens.lineHeight20, ";color:", designSystem.designTokens.colorNeutral, ";opacity:0;transition:", oidc.NAVBAR.leftNavigationTransition, ";text-align:left;text-decoration:none;z-index:1;" + ("" ));
|
|
98
95
|
|
|
99
|
-
var _templateObject$1;
|
|
100
96
|
const getSubmenuPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, submenuVerticalPosition) => /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":", submenuVerticalPosition, "px;" + ("" ), "" );
|
|
101
97
|
var _ref4 = {
|
|
102
98
|
name: "abcix4",
|
|
@@ -107,7 +103,10 @@ var _ref5 = {
|
|
|
107
103
|
styles: "bottom:0"
|
|
108
104
|
} ;
|
|
109
105
|
const getContainerPositionBasedOnMenuItemPosition = (isSubmenuAboveMenuItem, isSublistActiveWhileIsMenuExpanded, isSublistActiveWhileIsMenuCollapsed) => [isSublistActiveWhileIsMenuCollapsed && /*#__PURE__*/react.css(isSubmenuAboveMenuItem ? 'bottom' : 'top', ":-", oidc.NAVBAR.itemSize, ";" + ("" ), "" ), isSublistActiveWhileIsMenuExpanded && isSubmenuAboveMenuItem && _ref5, isSublistActiveWhileIsMenuExpanded && !isSubmenuAboveMenuItem && _ref4];
|
|
110
|
-
const fadeIn = react.keyframes
|
|
106
|
+
const fadeIn = react.keyframes`
|
|
107
|
+
from {opacity: 0;}
|
|
108
|
+
to { opacity: 1;}
|
|
109
|
+
`;
|
|
111
110
|
var _ref3 = {
|
|
112
111
|
name: "eivff4",
|
|
113
112
|
styles: "display:none"
|
|
@@ -158,8 +157,14 @@ const SafeArea = /*#__PURE__*/_styled__default["default"]("span", {
|
|
|
158
157
|
target: "e1i568cv0"
|
|
159
158
|
} )("position:absolute;top:0;bottom:0;right:100%;width:calc(100% - ", designSystem.designTokens.spacing30, ");clip-path:polygon(var(--safe-start), 100% 100%, 100% 0);" + ("" ));
|
|
160
159
|
|
|
161
|
-
|
|
162
|
-
|
|
160
|
+
const visible = react.keyframes`
|
|
161
|
+
from {
|
|
162
|
+
opacity: 0;
|
|
163
|
+
}
|
|
164
|
+
to {
|
|
165
|
+
opacity: 1;
|
|
166
|
+
}
|
|
167
|
+
`;
|
|
163
168
|
const FixedMenu = /*#__PURE__*/_styled__default["default"]("div", {
|
|
164
169
|
target: "e1meml8k10"
|
|
165
170
|
} )("position:relative;width:", oidc.NAVBAR.widthLeftNavigation, ";", MenuListItem, " ", ItemIconText, "{justify-content:center;display:flex;width:100%;}" + ("" ));
|
|
@@ -326,8 +331,8 @@ const MenuGroup = /*#__PURE__*/react$1.forwardRef((props, ref) => {
|
|
|
326
331
|
return jsxRuntime.jsx(MenuList, {
|
|
327
332
|
ref: ref && props.level === 2 ? ref : null,
|
|
328
333
|
level: props.level,
|
|
329
|
-
id:
|
|
330
|
-
"data-testid":
|
|
334
|
+
id: `group-${props.id}`,
|
|
335
|
+
"data-testid": `group-${props.id}`,
|
|
331
336
|
role: "menu",
|
|
332
337
|
onKeyDown: props.handleKeyDown,
|
|
333
338
|
className: classnames__default["default"]({
|
|
@@ -426,7 +431,7 @@ const MenuItemLink = _ref3 => {
|
|
|
426
431
|
};
|
|
427
432
|
MenuItemLink.displayName = 'MenuItemLink';
|
|
428
433
|
function isLongLivedFlag(flag) {
|
|
429
|
-
return typeof
|
|
434
|
+
return typeof flag?.value === 'boolean';
|
|
430
435
|
}
|
|
431
436
|
const RestrictedMenuItem = _ref4 => {
|
|
432
437
|
let _ref4$permissions = _ref4.permissions,
|
|
@@ -645,15 +650,13 @@ const reducer = (state, action) => {
|
|
|
645
650
|
return state;
|
|
646
651
|
}
|
|
647
652
|
};
|
|
648
|
-
const isFocusOutEventCalledBySubmenuItem = event =>
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
);
|
|
656
|
-
};
|
|
653
|
+
const isFocusOutEventCalledBySubmenuItem = event =>
|
|
654
|
+
// a case when a submenu item loses focus
|
|
655
|
+
event.type === 'focusout' &&
|
|
656
|
+
// element receiving focus
|
|
657
|
+
event.relatedTarget?.matches('a[data-link-level="text-link"]') &&
|
|
658
|
+
// element losing focus
|
|
659
|
+
event.target?.matches('a[data-link-level="text-link-sublist"]');
|
|
657
660
|
const useNavbarStateManager = props => {
|
|
658
661
|
var _context, _context2, _context4, _context5;
|
|
659
662
|
const navBarNode = react$1.useRef(null);
|
|
@@ -747,8 +750,7 @@ const useNavbarStateManager = props => {
|
|
|
747
750
|
}
|
|
748
751
|
}, 100), [isForcedMenuOpen, state.isExpanderVisible, state.isMenuOpen]);
|
|
749
752
|
const shouldCloseMenuFly = react$1.useCallback(event => {
|
|
750
|
-
|
|
751
|
-
if (!(navBarNode !== null && navBarNode !== void 0 && (_navBarNode$current = navBarNode.current) !== null && _navBarNode$current !== void 0 && _navBarNode$current.contains(event.target)) && !state.isMenuOpen) {
|
|
753
|
+
if (!navBarNode?.current?.contains(event.target) && !state.isMenuOpen) {
|
|
752
754
|
dispatch({
|
|
753
755
|
type: 'unsetActiveItemIndex'
|
|
754
756
|
});
|
|
@@ -813,7 +815,7 @@ const useNavbarStateManager = props => {
|
|
|
813
815
|
const allApplicationsNavbarMenuGroups = _sortInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](_context5 = applicationsNavBarMenuGroups || []).call(_context5, navbarMenuGroup => navbarMenuGroup.key === '2' && allCustomApplicationsNavbarMenu.length > 0 ? {
|
|
814
816
|
key: navbarMenuGroup.key,
|
|
815
817
|
items: [...navbarMenuGroup.items, ...allCustomApplicationsNavbarMenu]
|
|
816
|
-
} : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA
|
|
818
|
+
} : navbarMenuGroup)).call(_context4, (navBarMenuGroupA, navBarMenuGroupB) => Number(navBarMenuGroupA?.key) - Number(navBarMenuGroupB?.key));
|
|
817
819
|
return _objectSpread$1(_objectSpread$1({}, state), {}, {
|
|
818
820
|
navBarNode,
|
|
819
821
|
handleToggleItem,
|
|
@@ -825,7 +827,7 @@ const useNavbarStateManager = props => {
|
|
|
825
827
|
};
|
|
826
828
|
|
|
827
829
|
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; }
|
|
828
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
830
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
829
831
|
// Helper function to extract accessible label from menu objects
|
|
830
832
|
const getMenuAccessibleLabel = (labelAllLocales, defaultLabel, applicationLocale) => {
|
|
831
833
|
const localizedLabel = _findInstanceProperty__default["default"](labelAllLocales).call(labelAllLocales, loc => _startsWithInstanceProperty__default["default"](applicationLocale).call(applicationLocale, loc.locale));
|
|
@@ -833,16 +835,13 @@ const getMenuAccessibleLabel = (labelAllLocales, defaultLabel, applicationLocale
|
|
|
833
835
|
if (defaultLabel) return defaultLabel;
|
|
834
836
|
return constants.NO_VALUE_FALLBACK;
|
|
835
837
|
};
|
|
836
|
-
const getIsSubmenuRouteActive = (uriPath, props) => {
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
strict: false
|
|
842
|
-
}));
|
|
843
|
-
};
|
|
838
|
+
const getIsSubmenuRouteActive = (uriPath, props) => Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
839
|
+
path: `/${props.projectKey}/${uriPath}`,
|
|
840
|
+
exact: true,
|
|
841
|
+
strict: false
|
|
842
|
+
}));
|
|
844
843
|
const ApplicationMenu = props => {
|
|
845
|
-
var
|
|
844
|
+
var _context;
|
|
846
845
|
const _useState = react$1.useState(0),
|
|
847
846
|
_useState2 = _slicedToArray(_useState, 2),
|
|
848
847
|
submenuVerticalPosition = _useState2[0],
|
|
@@ -869,13 +868,12 @@ const ApplicationMenu = props => {
|
|
|
869
868
|
const hasSubmenu = _Array$isArray__default["default"](props.menu.submenu) && props.menu.submenu.length > 0;
|
|
870
869
|
const menuItemIdentifier = snakeCase__default["default"](props.menu.key);
|
|
871
870
|
const calculateSafeAreaStartPositon = react$1.useCallback(e => {
|
|
872
|
-
|
|
873
|
-
const
|
|
874
|
-
const
|
|
875
|
-
const
|
|
876
|
-
const
|
|
877
|
-
const
|
|
878
|
-
const currentSafeAreaHeight = (currentSafeAreaRect === null || currentSafeAreaRect === void 0 ? void 0 : currentSafeAreaRect.height) || 0;
|
|
871
|
+
const currentSafeAreaRect = submenuSafeAreaRef.current?.getBoundingClientRect();
|
|
872
|
+
const menuItemRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
|
|
873
|
+
const currentSafeAreaLeft = currentSafeAreaRect?.left || 0;
|
|
874
|
+
const currentSafeAreaTop = currentSafeAreaRect?.top || 0;
|
|
875
|
+
const currentSafeAreaWidth = currentSafeAreaRect?.width || 0;
|
|
876
|
+
const currentSafeAreaHeight = currentSafeAreaRect?.height || 0;
|
|
879
877
|
const localX = e.clientX - currentSafeAreaLeft;
|
|
880
878
|
const localY = e.clientY - currentSafeAreaTop;
|
|
881
879
|
let minXPercent = 0;
|
|
@@ -921,17 +919,15 @@ const ApplicationMenu = props => {
|
|
|
921
919
|
};
|
|
922
920
|
}, [calculateSafeAreaStartPositon]);
|
|
923
921
|
react$1.useLayoutEffect(() => {
|
|
924
|
-
var _context2;
|
|
925
922
|
if (!submenuRef.current) return;
|
|
926
923
|
const safeX = _Number$isFinite__default["default"](percentageX) ? percentageX : 0;
|
|
927
924
|
const safeY = _Number$isFinite__default["default"](percentageY) ? percentageY : 100;
|
|
928
|
-
submenuRef.current.style.setProperty('--safe-start',
|
|
925
|
+
submenuRef.current.style.setProperty('--safe-start', `${safeX}% ${safeY}%`);
|
|
929
926
|
}, [percentageX, percentageY]);
|
|
930
927
|
const callbackFn = react$1.useCallback(entries => {
|
|
931
|
-
|
|
932
|
-
const
|
|
933
|
-
const
|
|
934
|
-
const menuItemBottom = (menuItemBoundingClientRect === null || menuItemBoundingClientRect === void 0 ? void 0 : menuItemBoundingClientRect.bottom) || 0;
|
|
928
|
+
const menuItemBoundingClientRect = document.querySelector(`[data-menuitem="${menuItemIdentifier}"]`)?.getBoundingClientRect();
|
|
929
|
+
const menuItemTop = menuItemBoundingClientRect?.top || 0;
|
|
930
|
+
const menuItemBottom = menuItemBoundingClientRect?.bottom || 0;
|
|
935
931
|
const _entries = _slicedToArray(entries, 1),
|
|
936
932
|
entry = _entries[0];
|
|
937
933
|
|
|
@@ -957,10 +953,7 @@ const ApplicationMenu = props => {
|
|
|
957
953
|
observerRef.current = new IntersectionObserver(callbackFn, {
|
|
958
954
|
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
|
|
959
955
|
});
|
|
960
|
-
return () =>
|
|
961
|
-
var _observerRef$current;
|
|
962
|
-
return (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 ? void 0 : _observerRef$current.disconnect();
|
|
963
|
-
};
|
|
956
|
+
return () => observerRef.current?.disconnect();
|
|
964
957
|
}, [callbackFn, props.isMenuOpen]);
|
|
965
958
|
react$1.useLayoutEffect(() => {
|
|
966
959
|
const currentSubmenuRef = submenuRef.current;
|
|
@@ -970,10 +963,10 @@ const ApplicationMenu = props => {
|
|
|
970
963
|
observer.observe(currentSubmenuRef);
|
|
971
964
|
}
|
|
972
965
|
setIsSubmenuFocused(false);
|
|
973
|
-
return () => observer
|
|
966
|
+
return () => observer?.disconnect();
|
|
974
967
|
}, [menuItemIdentifier, props.isMenuOpen, props.handleToggleItem, callbackFn]);
|
|
975
968
|
const isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
976
|
-
path:
|
|
969
|
+
path: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
977
970
|
exact: false,
|
|
978
971
|
strict: false
|
|
979
972
|
}));
|
|
@@ -987,22 +980,20 @@ const ApplicationMenu = props => {
|
|
|
987
980
|
}, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
|
|
988
981
|
|
|
989
982
|
const handleKeyDown = e => {
|
|
990
|
-
|
|
991
|
-
const currentlyFocusedItem = (_submenuRef$current = submenuRef.current) === null || _submenuRef$current === void 0 ? void 0 : _submenuRef$current.querySelector(':focus');
|
|
983
|
+
const currentlyFocusedItem = submenuRef.current?.querySelector(':focus');
|
|
992
984
|
if (e.key === 'Enter') {
|
|
993
985
|
setIsSubmenuFocused(true);
|
|
994
986
|
if (!currentlyFocusedItem) {
|
|
995
|
-
|
|
996
|
-
(_submenuRef$current2 = submenuRef.current) === null || _submenuRef$current2 === void 0 || (_submenuRef$current2 = _submenuRef$current2.querySelector('a')) === null || _submenuRef$current2 === void 0 || _submenuRef$current2.focus();
|
|
987
|
+
submenuRef.current?.querySelector('a')?.focus();
|
|
997
988
|
}
|
|
998
989
|
}
|
|
999
990
|
};
|
|
1000
991
|
return jsxRuntime.jsx(RestrictedMenuItem, {
|
|
1001
992
|
keyOfMenuItem: props.menu.key,
|
|
1002
|
-
featureToggle:
|
|
993
|
+
featureToggle: props.menu.featureToggle ?? undefined,
|
|
1003
994
|
permissions: props.menu.permissions,
|
|
1004
|
-
actionRights:
|
|
1005
|
-
dataFences:
|
|
995
|
+
actionRights: props.menu.actionRights ?? undefined,
|
|
996
|
+
dataFences: props.menu.dataFences ?? undefined,
|
|
1006
997
|
projectPermissions: props.projectPermissions,
|
|
1007
998
|
children: jsxRuntime.jsxs(MenuItem$1, {
|
|
1008
999
|
hasSubmenu: hasSubmenu,
|
|
@@ -1017,7 +1008,7 @@ const ApplicationMenu = props => {
|
|
|
1017
1008
|
identifier: menuItemIdentifier,
|
|
1018
1009
|
ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
|
|
1019
1010
|
children: [jsxRuntime.jsx(MenuItemLink, {
|
|
1020
|
-
linkTo:
|
|
1011
|
+
linkTo: `/${props.projectKey}/${props.menu.uriPath}`,
|
|
1021
1012
|
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
1022
1013
|
onClick: props.onMenuItemClick,
|
|
1023
1014
|
ariaLabel: getMenuAccessibleLabel(props.menu.labelAllLocales, props.menu.defaultLabel, props.applicationLocale),
|
|
@@ -1029,7 +1020,7 @@ const ApplicationMenu = props => {
|
|
|
1029
1020
|
isMenuOpen: props.isMenuOpen
|
|
1030
1021
|
})
|
|
1031
1022
|
}), jsxRuntime.jsxs(MenuGroup, {
|
|
1032
|
-
id:
|
|
1023
|
+
id: `group-${props.menu.key}`,
|
|
1033
1024
|
level: 2,
|
|
1034
1025
|
isActive: props.isActive,
|
|
1035
1026
|
isExpanded: props.isMenuOpen,
|
|
@@ -1040,7 +1031,7 @@ const ApplicationMenu = props => {
|
|
|
1040
1031
|
children: [!props.isMenuOpen && jsxRuntime.jsx(TooltipContainer, {
|
|
1041
1032
|
alignsAgainstBottom: isSubmenuAboveMenuItem,
|
|
1042
1033
|
children: jsxRuntime.jsx(Tooltip, {
|
|
1043
|
-
"aria-owns":
|
|
1034
|
+
"aria-owns": `group-${props.menu.key}`,
|
|
1044
1035
|
role: "tooltip",
|
|
1045
1036
|
children: jsxRuntime.jsx(MenuLabel, {
|
|
1046
1037
|
labelAllLocales: props.menu.labelAllLocales,
|
|
@@ -1048,39 +1039,36 @@ const ApplicationMenu = props => {
|
|
|
1048
1039
|
applicationLocale: props.applicationLocale
|
|
1049
1040
|
})
|
|
1050
1041
|
})
|
|
1051
|
-
}), hasSubmenu ? _mapInstanceProperty__default["default"](
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
children: jsxRuntime.jsx(
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
defaultLabel: submenu.defaultLabel,
|
|
1077
|
-
applicationLocale: props.applicationLocale
|
|
1078
|
-
})
|
|
1042
|
+
}), hasSubmenu ? _mapInstanceProperty__default["default"](_context = props.menu.submenu).call(_context, submenu => jsxRuntime.jsx(RestrictedMenuItem, {
|
|
1043
|
+
keyOfMenuItem: submenu.key,
|
|
1044
|
+
featureToggle: submenu.featureToggle ?? undefined,
|
|
1045
|
+
permissions: submenu.permissions,
|
|
1046
|
+
actionRights: submenu.actionRights ?? undefined,
|
|
1047
|
+
dataFences: submenu.dataFences ?? undefined,
|
|
1048
|
+
projectPermissions: props.projectPermissions,
|
|
1049
|
+
children: jsxRuntime.jsx(SublistItem, {
|
|
1050
|
+
isActive: getIsSubmenuRouteActive(submenu.uriPath, props),
|
|
1051
|
+
children: jsxRuntime.jsx(Text, {
|
|
1052
|
+
children: jsxRuntime.jsx(MenuItemLink, {
|
|
1053
|
+
linkTo: `/${props.projectKey}/${submenu.uriPath}`
|
|
1054
|
+
// We want to use an exact matching strategy to avoid multiple
|
|
1055
|
+
// links matching sub-routes.
|
|
1056
|
+
,
|
|
1057
|
+
exactMatch: true,
|
|
1058
|
+
useFullRedirectsForLinks: props.useFullRedirectsForLinks,
|
|
1059
|
+
onClick: props.onMenuItemClick,
|
|
1060
|
+
isSubmenuLink: true,
|
|
1061
|
+
isSubmenuFocused: isSubmenuFocused,
|
|
1062
|
+
ariaLabel: getMenuAccessibleLabel(submenu.labelAllLocales, submenu.defaultLabel, props.applicationLocale),
|
|
1063
|
+
children: jsxRuntime.jsx(MenuLabel, {
|
|
1064
|
+
labelAllLocales: submenu.labelAllLocales,
|
|
1065
|
+
defaultLabel: submenu.defaultLabel,
|
|
1066
|
+
applicationLocale: props.applicationLocale
|
|
1079
1067
|
})
|
|
1080
1068
|
})
|
|
1081
1069
|
})
|
|
1082
|
-
}
|
|
1083
|
-
}) : null, jsxRuntime.jsx(SafeArea, {
|
|
1070
|
+
})
|
|
1071
|
+
}, `${props.menu.key}-submenu-${submenu.key}`)) : null, jsxRuntime.jsx(SafeArea, {
|
|
1084
1072
|
ref: submenuSafeAreaRef
|
|
1085
1073
|
})]
|
|
1086
1074
|
})]
|
|
@@ -1107,14 +1095,11 @@ const NavBar = props => {
|
|
|
1107
1095
|
const location = reactRouterDom.useLocation();
|
|
1108
1096
|
const _useIntl = reactIntl.useIntl(),
|
|
1109
1097
|
formatMessage = _useIntl.formatMessage;
|
|
1110
|
-
const projectPermissions = react$1.useMemo(() => {
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
dataFences: applicationShellConnectors.normalizeAllAppliedDataFences((_props$project3 = props.project) === null || _props$project3 === void 0 ? void 0 : _props$project3.allPermissionsForAllApplications.allAppliedDataFences)
|
|
1116
|
-
};
|
|
1117
|
-
}, [props.project]);
|
|
1098
|
+
const projectPermissions = react$1.useMemo(() => ({
|
|
1099
|
+
permissions: applicationShellConnectors.normalizeAllAppliedPermissions(props.project?.allPermissionsForAllApplications.allAppliedPermissions),
|
|
1100
|
+
actionRights: applicationShellConnectors.normalizeAllAppliedActionRights(props.project?.allPermissionsForAllApplications.allAppliedActionRights),
|
|
1101
|
+
dataFences: applicationShellConnectors.normalizeAllAppliedDataFences(props.project?.allPermissionsForAllApplications.allAppliedDataFences)
|
|
1102
|
+
}), [props.project]);
|
|
1118
1103
|
const applicationLocale = props.applicationLocale;
|
|
1119
1104
|
|
|
1120
1105
|
// Render the loading navbar as long as all the data
|
|
@@ -1145,12 +1130,11 @@ const NavBar = props => {
|
|
|
1145
1130
|
children: jsxRuntime.jsx(Spacings__default["default"].Stack, {
|
|
1146
1131
|
scale: "l",
|
|
1147
1132
|
children: _mapInstanceProperty__default["default"](allApplicationsNavbarMenuGroups).call(allApplicationsNavbarMenuGroups, navbarMenuGroup => {
|
|
1148
|
-
var
|
|
1133
|
+
var _context2;
|
|
1149
1134
|
return jsxRuntime.jsx("div", {
|
|
1150
|
-
children: _mapInstanceProperty__default["default"](
|
|
1151
|
-
var _context9;
|
|
1135
|
+
children: _mapInstanceProperty__default["default"](_context2 = navbarMenuGroup.items).call(_context2, menu => {
|
|
1152
1136
|
const menuType = 'scrollable';
|
|
1153
|
-
const itemIndex =
|
|
1137
|
+
const itemIndex = `${menuType}-${menu.key}`;
|
|
1154
1138
|
return jsxRuntime.jsx(ApplicationMenu, {
|
|
1155
1139
|
location: location,
|
|
1156
1140
|
menu: menu,
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
4
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
9
|
+
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
10
|
+
|
|
11
|
+
const DIMENSIONS = {
|
|
12
|
+
header: '56px'
|
|
13
|
+
};
|
|
14
|
+
const NAVBAR = {
|
|
15
|
+
expanderHeight: '50px',
|
|
16
|
+
expanderSize: '40px',
|
|
17
|
+
iconSize: '24px',
|
|
18
|
+
iconSizeHover: '28px',
|
|
19
|
+
itemSize: '48px',
|
|
20
|
+
itemHeight: '56px',
|
|
21
|
+
sublistIndentationWhenCollapsed: '72px',
|
|
22
|
+
sublistIndentationWhenExpanded: '248px',
|
|
23
|
+
sublistItemMinHeight: '50px',
|
|
24
|
+
sublistWidth: '272px',
|
|
25
|
+
leftNavigationTransition: 'all 150ms cubic-bezier(1, 0, 0.58, 1)',
|
|
26
|
+
widthLeftNavigation: '80px',
|
|
27
|
+
widthLeftNavigationWhenExpanded: '256px'
|
|
28
|
+
};
|
|
29
|
+
const WINDOW_SIZES = {
|
|
30
|
+
STANDARD: 1024,
|
|
31
|
+
WIDE: 1200
|
|
32
|
+
};
|
|
33
|
+
const CONTAINERS = {
|
|
34
|
+
LOCALE_SWITCHER: 'locale-switcher-container',
|
|
35
|
+
LEFT_OF_PROFILE: 'left-of-profile'
|
|
36
|
+
};
|
|
37
|
+
const SUSPENSION_REASONS = {
|
|
38
|
+
TEMPORARY_MAINTENANCE: 'TemporaryMaintenance',
|
|
39
|
+
PAYMENT: 'Payment',
|
|
40
|
+
OTHER: 'Other'
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// OIDC params
|
|
44
|
+
const OIDC_RESPONSE_TYPES = {
|
|
45
|
+
ID_TOKEN: 'id_token'
|
|
46
|
+
};
|
|
47
|
+
const OIDC_CLAIMS = {
|
|
48
|
+
OPEN_ID: 'openid',
|
|
49
|
+
PROJECT_KEY: 'project_key',
|
|
50
|
+
TEAM_ID: 'team_id',
|
|
51
|
+
APPLICATION_ID: 'application_id',
|
|
52
|
+
VIEW: 'view',
|
|
53
|
+
MANAGE: 'manage'
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const buildOidcScope = options => {
|
|
57
|
+
var _context, _context2;
|
|
58
|
+
const claims = [];
|
|
59
|
+
|
|
60
|
+
// Set the projectKey
|
|
61
|
+
if (options.projectKey) {
|
|
62
|
+
claims.push(`${OIDC_CLAIMS.PROJECT_KEY}:${options.projectKey}`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Set the OAuth Scopes
|
|
66
|
+
claims.push(..._mapInstanceProperty__default["default"](_context = options.oAuthScopes?.view ?? []).call(_context, scope => `${OIDC_CLAIMS.VIEW}:${scope}`));
|
|
67
|
+
claims.push(..._mapInstanceProperty__default["default"](_context2 = options.oAuthScopes?.manage ?? []).call(_context2, scope => `${OIDC_CLAIMS.MANAGE}:${scope}`));
|
|
68
|
+
// Set additional OAuth scopes
|
|
69
|
+
if (options?.additionalOAuthScopes) {
|
|
70
|
+
var _context3;
|
|
71
|
+
_forEachInstanceProperty__default["default"](_context3 = options.additionalOAuthScopes).call(_context3, additionalOAuthScope => {
|
|
72
|
+
var _context4, _context5;
|
|
73
|
+
claims.push(..._mapInstanceProperty__default["default"](_context4 = additionalOAuthScope.view ?? []).call(_context4, viewOAuthScope => `view/${additionalOAuthScope.name}:${viewOAuthScope}`), ..._mapInstanceProperty__default["default"](_context5 = additionalOAuthScope.manage ?? []).call(_context5, manageOAuthScope => `manage/${additionalOAuthScope.name}:${manageOAuthScope}`));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Set the teamId and applicationId
|
|
78
|
+
if (options.teamId) {
|
|
79
|
+
claims.push(`${OIDC_CLAIMS.TEAM_ID}:${options.teamId}`);
|
|
80
|
+
if (options.applicationId) {
|
|
81
|
+
claims.push(`${OIDC_CLAIMS.APPLICATION_ID}:${options.applicationId}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return [
|
|
85
|
+
// This is required as per OIDC spec.
|
|
86
|
+
OIDC_CLAIMS.OPEN_ID,
|
|
87
|
+
// Custom claims
|
|
88
|
+
...claims].join(' ');
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.CONTAINERS = CONTAINERS;
|
|
92
|
+
exports.DIMENSIONS = DIMENSIONS;
|
|
93
|
+
exports.NAVBAR = NAVBAR;
|
|
94
|
+
exports.OIDC_CLAIMS = OIDC_CLAIMS;
|
|
95
|
+
exports.OIDC_RESPONSE_TYPES = OIDC_RESPONSE_TYPES;
|
|
96
|
+
exports.SUSPENSION_REASONS = SUSPENSION_REASONS;
|
|
97
|
+
exports.WINDOW_SIZES = WINDOW_SIZES;
|
|
98
|
+
exports.buildOidcScope = buildOidcScope;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
2
|
+
import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
|
|
3
|
+
|
|
4
|
+
const DIMENSIONS = {
|
|
5
|
+
header: '56px'
|
|
6
|
+
};
|
|
7
|
+
const NAVBAR = {
|
|
8
|
+
expanderHeight: '50px',
|
|
9
|
+
expanderSize: '40px',
|
|
10
|
+
iconSize: '24px',
|
|
11
|
+
iconSizeHover: '28px',
|
|
12
|
+
itemSize: '48px',
|
|
13
|
+
itemHeight: '56px',
|
|
14
|
+
sublistIndentationWhenCollapsed: '72px',
|
|
15
|
+
sublistIndentationWhenExpanded: '248px',
|
|
16
|
+
sublistItemMinHeight: '50px',
|
|
17
|
+
sublistWidth: '272px',
|
|
18
|
+
leftNavigationTransition: 'all 150ms cubic-bezier(1, 0, 0.58, 1)',
|
|
19
|
+
widthLeftNavigation: '80px',
|
|
20
|
+
widthLeftNavigationWhenExpanded: '256px'
|
|
21
|
+
};
|
|
22
|
+
const WINDOW_SIZES = {
|
|
23
|
+
STANDARD: 1024,
|
|
24
|
+
WIDE: 1200
|
|
25
|
+
};
|
|
26
|
+
const CONTAINERS = {
|
|
27
|
+
LOCALE_SWITCHER: 'locale-switcher-container',
|
|
28
|
+
LEFT_OF_PROFILE: 'left-of-profile'
|
|
29
|
+
};
|
|
30
|
+
const SUSPENSION_REASONS = {
|
|
31
|
+
TEMPORARY_MAINTENANCE: 'TemporaryMaintenance',
|
|
32
|
+
PAYMENT: 'Payment',
|
|
33
|
+
OTHER: 'Other'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// OIDC params
|
|
37
|
+
const OIDC_RESPONSE_TYPES = {
|
|
38
|
+
ID_TOKEN: 'id_token'
|
|
39
|
+
};
|
|
40
|
+
const OIDC_CLAIMS = {
|
|
41
|
+
OPEN_ID: 'openid',
|
|
42
|
+
PROJECT_KEY: 'project_key',
|
|
43
|
+
TEAM_ID: 'team_id',
|
|
44
|
+
APPLICATION_ID: 'application_id',
|
|
45
|
+
VIEW: 'view',
|
|
46
|
+
MANAGE: 'manage'
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const buildOidcScope = options => {
|
|
50
|
+
var _context, _context2;
|
|
51
|
+
const claims = [];
|
|
52
|
+
|
|
53
|
+
// Set the projectKey
|
|
54
|
+
if (options.projectKey) {
|
|
55
|
+
claims.push(`${OIDC_CLAIMS.PROJECT_KEY}:${options.projectKey}`);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Set the OAuth Scopes
|
|
59
|
+
claims.push(..._mapInstanceProperty(_context = options.oAuthScopes?.view ?? []).call(_context, scope => `${OIDC_CLAIMS.VIEW}:${scope}`));
|
|
60
|
+
claims.push(..._mapInstanceProperty(_context2 = options.oAuthScopes?.manage ?? []).call(_context2, scope => `${OIDC_CLAIMS.MANAGE}:${scope}`));
|
|
61
|
+
// Set additional OAuth scopes
|
|
62
|
+
if (options?.additionalOAuthScopes) {
|
|
63
|
+
var _context3;
|
|
64
|
+
_forEachInstanceProperty(_context3 = options.additionalOAuthScopes).call(_context3, additionalOAuthScope => {
|
|
65
|
+
var _context4, _context5;
|
|
66
|
+
claims.push(..._mapInstanceProperty(_context4 = additionalOAuthScope.view ?? []).call(_context4, viewOAuthScope => `view/${additionalOAuthScope.name}:${viewOAuthScope}`), ..._mapInstanceProperty(_context5 = additionalOAuthScope.manage ?? []).call(_context5, manageOAuthScope => `manage/${additionalOAuthScope.name}:${manageOAuthScope}`));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Set the teamId and applicationId
|
|
71
|
+
if (options.teamId) {
|
|
72
|
+
claims.push(`${OIDC_CLAIMS.TEAM_ID}:${options.teamId}`);
|
|
73
|
+
if (options.applicationId) {
|
|
74
|
+
claims.push(`${OIDC_CLAIMS.APPLICATION_ID}:${options.applicationId}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return [
|
|
78
|
+
// This is required as per OIDC spec.
|
|
79
|
+
OIDC_CLAIMS.OPEN_ID,
|
|
80
|
+
// Custom claims
|
|
81
|
+
...claims].join(' ');
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { CONTAINERS as C, DIMENSIONS as D, NAVBAR as N, OIDC_CLAIMS as O, SUSPENSION_REASONS as S, WINDOW_SIZES as W, OIDC_RESPONSE_TYPES as a, buildOidcScope as b };
|
|
@@ -7,7 +7,7 @@ var jwtDecode = require('jwt-decode');
|
|
|
7
7
|
var qss = require('qss');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
9
|
var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
|
|
10
|
-
var redirector = require('./redirector-
|
|
10
|
+
var redirector = require('./redirector-0c72d0a4.cjs.prod.js');
|
|
11
11
|
var _styled = require('@emotion/styled/base');
|
|
12
12
|
var applicationComponents = require('@commercetools-frontend/application-components');
|
|
13
13
|
var FailedAuthenticationSVG = require('@commercetools-frontend/assets/images/doors-closed.svg');
|
|
@@ -20,7 +20,7 @@ var icons = require('@commercetools-uikit/icons');
|
|
|
20
20
|
var notifications = require('@commercetools-uikit/notifications');
|
|
21
21
|
var Spacings = require('@commercetools-uikit/spacings');
|
|
22
22
|
var Text = require('@commercetools-uikit/text');
|
|
23
|
-
var dist_commercetoolsFrontendApplicationShell = require('./index-
|
|
23
|
+
var dist_commercetoolsFrontendApplicationShell = require('./index-aa7211d5.cjs.prod.js');
|
|
24
24
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
25
25
|
require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
26
26
|
require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
@@ -32,7 +32,7 @@ require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
|
|
|
32
32
|
require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
33
33
|
require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
34
34
|
require('./location-537e0660.cjs.prod.js');
|
|
35
|
-
require('./index-
|
|
35
|
+
require('./index-245e2980.cjs.prod.js');
|
|
36
36
|
require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
37
37
|
require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
38
38
|
require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
@@ -55,10 +55,9 @@ require('redux-logger');
|
|
|
55
55
|
require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
56
56
|
require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
57
57
|
require('@emotion/react');
|
|
58
|
-
require('./oidc-
|
|
58
|
+
require('./oidc-d74e6aa2.cjs.prod.js');
|
|
59
59
|
require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
60
60
|
require('react-intl');
|
|
61
|
-
require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
|
|
62
61
|
require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
63
62
|
require('memoize-one');
|
|
64
63
|
require('react-select');
|
|
@@ -198,9 +197,8 @@ const OidcCallback = props => {
|
|
|
198
197
|
}
|
|
199
198
|
}
|
|
200
199
|
if (!errorMessage) {
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
const hasValidApplicationId = window.app.applicationId === (sessionState === null || sessionState === void 0 ? void 0 : sessionState.applicationId);
|
|
200
|
+
const hasValidSessionId = decodedSessionToken?.nonce === fragments.state;
|
|
201
|
+
const hasValidApplicationId = window.app.applicationId === sessionState?.applicationId;
|
|
204
202
|
if (!sessionState || !hasValidSessionId || !hasValidApplicationId) {
|
|
205
203
|
errorMessage = 'Invalid client session';
|
|
206
204
|
}
|
|
@@ -210,7 +208,7 @@ const OidcCallback = props => {
|
|
|
210
208
|
} else {
|
|
211
209
|
applicationShellConnectors.oidcStorage.setActiveSession(sessionToken);
|
|
212
210
|
applicationShellConnectors.oidcStorage.removeSessionState(fragments.state);
|
|
213
|
-
if (sessionState
|
|
211
|
+
if (sessionState?.query.redirectTo) {
|
|
214
212
|
try {
|
|
215
213
|
const redirectToUrl = new _URL__default["default"](sessionState.query.redirectTo);
|
|
216
214
|
redirector$1({
|
|
@@ -218,7 +216,7 @@ const OidcCallback = props => {
|
|
|
218
216
|
});
|
|
219
217
|
return;
|
|
220
218
|
} catch (error) {
|
|
221
|
-
console.warn(
|
|
219
|
+
console.warn(`Invalid "redirectTo" URL`, sessionState.query.redirectTo);
|
|
222
220
|
// ignore
|
|
223
221
|
}
|
|
224
222
|
}
|