@atlaskit/navigation-system 5.15.0 → 5.16.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/CHANGELOG.md +27 -0
- package/dist/cjs/ui/page-layout/banner.compiled.css +1 -0
- package/dist/cjs/ui/page-layout/banner.js +6 -2
- package/dist/cjs/ui/page-layout/constants.js +16 -2
- package/dist/cjs/ui/page-layout/panel-splitter/provider.js +5 -3
- package/dist/cjs/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +59 -0
- package/dist/cjs/ui/page-layout/root.compiled.css +1 -0
- package/dist/cjs/ui/page-layout/root.js +7 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav-content.compiled.css +2 -1
- package/dist/cjs/ui/page-layout/side-nav/side-nav-content.js +8 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav-header.js +17 -0
- package/dist/cjs/ui/page-layout/side-nav/side-nav.compiled.css +3 -0
- package/dist/cjs/ui/page-layout/side-nav/side-nav.js +28 -17
- package/dist/cjs/ui/page-layout/top-nav/top-nav-end.js +3 -2
- package/dist/cjs/ui/page-layout/top-nav/top-nav-middle.js +2 -1
- package/dist/cjs/ui/page-layout/top-nav/top-nav-start.compiled.css +2 -1
- package/dist/cjs/ui/page-layout/top-nav/top-nav-start.js +30 -3
- package/dist/cjs/ui/page-layout/top-nav/top-nav.compiled.css +11 -0
- package/dist/cjs/ui/page-layout/top-nav/top-nav.js +44 -5
- package/dist/es2019/ui/page-layout/banner.compiled.css +1 -0
- package/dist/es2019/ui/page-layout/banner.js +6 -2
- package/dist/es2019/ui/page-layout/constants.js +15 -1
- package/dist/es2019/ui/page-layout/panel-splitter/provider.js +5 -3
- package/dist/es2019/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +57 -2
- package/dist/es2019/ui/page-layout/root.compiled.css +1 -0
- package/dist/es2019/ui/page-layout/root.js +7 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav-content.compiled.css +2 -1
- package/dist/es2019/ui/page-layout/side-nav/side-nav-content.js +9 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav-header.js +17 -0
- package/dist/es2019/ui/page-layout/side-nav/side-nav.compiled.css +3 -0
- package/dist/es2019/ui/page-layout/side-nav/side-nav.js +19 -8
- package/dist/es2019/ui/page-layout/top-nav/top-nav-end.js +3 -2
- package/dist/es2019/ui/page-layout/top-nav/top-nav-middle.js +2 -1
- package/dist/es2019/ui/page-layout/top-nav/top-nav-start.compiled.css +2 -1
- package/dist/es2019/ui/page-layout/top-nav/top-nav-start.js +30 -3
- package/dist/es2019/ui/page-layout/top-nav/top-nav.compiled.css +11 -0
- package/dist/es2019/ui/page-layout/top-nav/top-nav.js +42 -7
- package/dist/esm/ui/page-layout/banner.compiled.css +1 -0
- package/dist/esm/ui/page-layout/banner.js +6 -2
- package/dist/esm/ui/page-layout/constants.js +15 -1
- package/dist/esm/ui/page-layout/panel-splitter/provider.js +5 -3
- package/dist/esm/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +61 -2
- package/dist/esm/ui/page-layout/root.compiled.css +1 -0
- package/dist/esm/ui/page-layout/root.js +7 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav-content.compiled.css +2 -1
- package/dist/esm/ui/page-layout/side-nav/side-nav-content.js +8 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav-header.js +17 -0
- package/dist/esm/ui/page-layout/side-nav/side-nav.compiled.css +3 -0
- package/dist/esm/ui/page-layout/side-nav/side-nav.js +19 -8
- package/dist/esm/ui/page-layout/top-nav/top-nav-end.js +3 -2
- package/dist/esm/ui/page-layout/top-nav/top-nav-middle.js +2 -1
- package/dist/esm/ui/page-layout/top-nav/top-nav-start.compiled.css +2 -1
- package/dist/esm/ui/page-layout/top-nav/top-nav-start.js +30 -3
- package/dist/esm/ui/page-layout/top-nav/top-nav.compiled.css +11 -0
- package/dist/esm/ui/page-layout/top-nav/top-nav.js +46 -7
- package/dist/types/ui/page-layout/constants.d.ts +10 -0
- package/dist/types/ui/page-layout/panel-splitter/context.d.ts +7 -2
- package/dist/types/ui/page-layout/panel-splitter/provider.d.ts +20 -2
- package/dist/types/ui/page-layout/side-nav/side-nav.d.ts +6 -0
- package/dist/types-ts4.5/ui/page-layout/constants.d.ts +10 -0
- package/dist/types-ts4.5/ui/page-layout/panel-splitter/context.d.ts +7 -2
- package/dist/types-ts4.5/ui/page-layout/panel-splitter/provider.d.ts +20 -2
- package/dist/types-ts4.5/ui/page-layout/side-nav/side-nav.d.ts +6 -0
- package/package.json +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @atlassian/navigation-system
|
|
2
2
|
|
|
3
|
+
## 5.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`e1393235a54cb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e1393235a54cb) -
|
|
8
|
+
Layering improvements have been made to the top nav and full height sidebar:
|
|
9
|
+
- Layers inside the side nav that are rendered to parent (`shouldRenderToParent`) will now
|
|
10
|
+
correctly be layered above the top nav and banner. This includes some z-index changes to top nav
|
|
11
|
+
and banner, and changes to where the side nav panel splitter is rendered (portalled) to.
|
|
12
|
+
- The side nav panel splitter will be disabled when there the side nav or top nav contains any
|
|
13
|
+
open popups.
|
|
14
|
+
- The `portalRef` prop has also been added to `PanelSplitterProvider` to support these
|
|
15
|
+
improvements.
|
|
16
|
+
|
|
17
|
+
These changes are behind the `platform-dst-side-nav-layering-fixes` feature flag, when full height
|
|
18
|
+
sidebar is enabled.
|
|
19
|
+
|
|
20
|
+
- [`e1393235a54cb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e1393235a54cb) -
|
|
21
|
+
Fixes a bug where the side nav would not be resizable on screen widths between 48rem and 64rem
|
|
22
|
+
(768px and 1024px) if the desktop side nav was collapsed.
|
|
23
|
+
|
|
24
|
+
This change is behind the feature flag `platform-dst-side-nav-layering-fixes`.
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- Updated dependencies
|
|
29
|
+
|
|
3
30
|
## 5.15.0
|
|
4
31
|
|
|
5
32
|
### Minor Changes
|
|
@@ -10,14 +10,17 @@ require("./banner.compiled.css");
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var React = _react;
|
|
12
12
|
var _runtime = require("@compiled/react/runtime");
|
|
13
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
13
14
|
var _skipLinksContext = require("../../context/skip-links/skip-links-context");
|
|
15
|
+
var _useIsFhsEnabled = require("../fhs-rollout/use-is-fhs-enabled");
|
|
14
16
|
var _constants = require("./constants");
|
|
15
17
|
var _hoistSlotSizesContext = require("./hoist-slot-sizes-context");
|
|
16
18
|
var _hoistUtils = require("./hoist-utils");
|
|
17
19
|
var _idUtils = require("./id-utils");
|
|
18
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
21
|
var styles = {
|
|
20
|
-
root: "_nd5ldkfm _1reo15vq _18m915vq _4t3iutvi _152tidpf _kqsw1if8 _1pbyegat"
|
|
22
|
+
root: "_nd5ldkfm _1reo15vq _18m915vq _4t3iutvi _152tidpf _kqsw1if8 _1pbyegat",
|
|
23
|
+
fullHeightSidebarWithLayeringFixes: "_1pbycs5v"
|
|
21
24
|
};
|
|
22
25
|
|
|
23
26
|
/**
|
|
@@ -38,6 +41,7 @@ function Banner(_ref) {
|
|
|
38
41
|
var id = (0, _idUtils.useLayoutId)({
|
|
39
42
|
providedId: providedId
|
|
40
43
|
});
|
|
44
|
+
var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
|
|
41
45
|
|
|
42
46
|
/**
|
|
43
47
|
* Don't show the skip link if the slot has 0 height.
|
|
@@ -50,7 +54,7 @@ function Banner(_ref) {
|
|
|
50
54
|
return /*#__PURE__*/React.createElement("div", {
|
|
51
55
|
id: id,
|
|
52
56
|
"data-layout-slot": true,
|
|
53
|
-
className: (0, _runtime.ax)([styles.root, xcss]),
|
|
57
|
+
className: (0, _runtime.ax)([styles.root, isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && styles.fullHeightSidebarWithLayeringFixes, xcss]),
|
|
54
58
|
"data-testid": testId
|
|
55
59
|
}, /*#__PURE__*/React.createElement(_hoistUtils.HoistCssVarToLocalGrid, {
|
|
56
60
|
variableName: _constants.bannerMountedVar,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.topNavMountedVar = exports.sideNavVar = exports.sideNavPanelSplitterId = exports.sideNavLiveWidthVar = exports.panelVar = exports.panelPanelSplitterId = exports.localSlotLayers = exports.contentInsetBlockStart = exports.contentHeightWhenFixed = exports.bannerMountedVar = exports.asideVar = exports.asidePanelSplitterId = exports.UNSAFE_topNavVar = exports.UNSAFE_sideNavLayoutVar = exports.UNSAFE_panelLayoutVar = exports.UNSAFE_bannerVar = exports.UNSAFE_asideLayoutVar = exports.UNSAFE_MAIN_INLINE_START_FOR_LEGACY_PAGES_ONLY = exports.UNSAFE_MAIN_INLINE_END_FOR_LEGACY_PAGES_ONLY = exports.UNSAFE_MAIN_BLOCK_START_FOR_LEGACY_PAGES_ONLY = void 0;
|
|
6
|
+
exports.topNavMountedVar = exports.sideNavVar = exports.sideNavPanelSplitterId = exports.sideNavLiveWidthVar = exports.sideNavContentScrollTimelineVar = exports.panelVar = exports.panelPanelSplitterId = exports.openLayerObserverTopNavNamespace = exports.openLayerObserverSideNavNamespace = exports.localSlotLayers = exports.contentInsetBlockStart = exports.contentHeightWhenFixed = exports.bannerMountedVar = exports.asideVar = exports.asidePanelSplitterId = exports.UNSAFE_topNavVar = exports.UNSAFE_sideNavLayoutVar = exports.UNSAFE_panelLayoutVar = exports.UNSAFE_bannerVar = exports.UNSAFE_asideLayoutVar = exports.UNSAFE_MAIN_INLINE_START_FOR_LEGACY_PAGES_ONLY = exports.UNSAFE_MAIN_INLINE_END_FOR_LEGACY_PAGES_ONLY = exports.UNSAFE_MAIN_BLOCK_START_FOR_LEGACY_PAGES_ONLY = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* These variables are shared across the different page layout slots.
|
|
9
9
|
* This violates the [UI styling standard](https://atlassian.design/components/eslint-plugin-ui-styling-standard/no-imported-style-values/usage).
|
|
@@ -56,6 +56,20 @@ var UNSAFE_MAIN_INLINE_END_FOR_LEGACY_PAGES_ONLY = exports.UNSAFE_MAIN_INLINE_EN
|
|
|
56
56
|
var localSlotLayers = exports.localSlotLayers = {
|
|
57
57
|
topBar: 4,
|
|
58
58
|
banner: 4,
|
|
59
|
+
// With the FHS layering refactors, the banner and top nav have a lower z-index to allow layers from the side nav to overlay them.
|
|
60
|
+
// When they all have equal z-index values, the DOM order determines the layering - meaning the side nav will be layered above the rest.
|
|
61
|
+
// But, when the top bar contains an open layer, it needs to be layered above the side nav, so has a higher value.
|
|
62
|
+
topNavFHSWithOpenLayer: 3,
|
|
63
|
+
bannerFHS: 2,
|
|
64
|
+
topNavFHS: 2,
|
|
59
65
|
sideNav: 2,
|
|
60
66
|
panelSmallViewports: 1
|
|
61
|
-
};
|
|
67
|
+
};
|
|
68
|
+
var openLayerObserverSideNavNamespace = exports.openLayerObserverSideNavNamespace = 'side-nav';
|
|
69
|
+
var openLayerObserverTopNavNamespace = exports.openLayerObserverTopNavNamespace = 'top-nav';
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* CSS scroll timeline variable for the side nav content scroll indicator.
|
|
73
|
+
* The scroll timeline is created in SideNavContent, and then used by TopNavStart to apply the scroll indicator line.
|
|
74
|
+
*/
|
|
75
|
+
var sideNavContentScrollTimelineVar = exports.sideNavContentScrollTimelineVar = '--sNcst';
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.PanelSplitterProvider = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
9
10
|
var _context = require("./context");
|
|
10
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
11
12
|
/**
|
|
@@ -20,6 +21,7 @@ var PanelSplitterProvider = exports.PanelSplitterProvider = function PanelSplitt
|
|
|
20
21
|
getResizeBounds = _ref.getResizeBounds,
|
|
21
22
|
resizingCssVar = _ref.resizingCssVar,
|
|
22
23
|
panelRef = _ref.panelRef,
|
|
24
|
+
providedPortalRef = _ref.portalRef,
|
|
23
25
|
_ref$position = _ref.position,
|
|
24
26
|
position = _ref$position === void 0 ? 'end' : _ref$position,
|
|
25
27
|
_ref$isEnabled = _ref.isEnabled,
|
|
@@ -37,13 +39,13 @@ var PanelSplitterProvider = exports.PanelSplitterProvider = function PanelSplitt
|
|
|
37
39
|
position: position,
|
|
38
40
|
panelRef: panelRef,
|
|
39
41
|
isEnabled: isEnabled,
|
|
40
|
-
portalRef: portalRef,
|
|
42
|
+
portalRef: typeof providedPortalRef !== 'undefined' && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') ? providedPortalRef : portalRef,
|
|
41
43
|
shortcut: shortcut
|
|
42
44
|
};
|
|
43
|
-
}, [panelId, panelWidth, onCompleteResize, getResizeBounds, resizingCssVar, position,
|
|
45
|
+
}, [panelId, panelWidth, onCompleteResize, getResizeBounds, resizingCssVar, position, panelRef, isEnabled, providedPortalRef, shortcut]);
|
|
44
46
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_context.PanelSplitterContext.Provider, {
|
|
45
47
|
value: context
|
|
46
|
-
}, children), /*#__PURE__*/_react.default.createElement("div", {
|
|
48
|
+
}, children), typeof providedPortalRef !== 'undefined' && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') ? null : /*#__PURE__*/_react.default.createElement("div", {
|
|
47
49
|
ref: portalRef
|
|
48
50
|
}));
|
|
49
51
|
};
|
|
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.SideNavPanelSplitter = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _tinyInvariant = _interopRequireDefault(require("tiny-invariant"));
|
|
12
|
+
var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
|
|
13
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
|
+
var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
|
|
11
15
|
var _constants = require("../constants");
|
|
12
16
|
var _useToggleSideNav = require("../side-nav/use-toggle-side-nav");
|
|
13
17
|
var _context = require("./context");
|
|
@@ -39,6 +43,61 @@ var SideNavPanelSplitter = exports.SideNavPanelSplitter = function SideNavPanelS
|
|
|
39
43
|
var toggleSideNav = (0, _useToggleSideNav.useToggleSideNav)({
|
|
40
44
|
trigger: 'double-click'
|
|
41
45
|
});
|
|
46
|
+
var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
|
|
47
|
+
|
|
48
|
+
// The logic and state for disabling the panel splitter when there are open popups
|
|
49
|
+
// in the side nav or top nav is being placed here, instead of in `SideNav`, to prevent
|
|
50
|
+
// re-rendering the side nav anytime the number of open popups changes.
|
|
51
|
+
var _useState = (0, _react.useState)(true),
|
|
52
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
53
|
+
isEnabled = _useState2[0],
|
|
54
|
+
setIsEnabled = _useState2[1];
|
|
55
|
+
var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
|
|
56
|
+
(0, _react.useEffect)(function () {
|
|
57
|
+
if (!openLayerObserver || !isFhsEnabled || !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes')) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
function checkAndSetState() {
|
|
61
|
+
if (!openLayerObserver) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// We don't technically need to check the side nav for open layers, as they wouldn't overlay the
|
|
66
|
+
// panel splitter, as it sits within the same stacking context as the side nav. For consistency however,
|
|
67
|
+
// we check it as well.
|
|
68
|
+
var openPopupsInSideNav = openLayerObserver.getCount({
|
|
69
|
+
namespace: _constants.openLayerObserverSideNavNamespace,
|
|
70
|
+
type: 'popup'
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// When there is an open layer in the top nav, the top nav is given a higher z-index than the side nav.
|
|
74
|
+
// This means the part of the side nav panel splitter that was sitting above the top nav will no longer
|
|
75
|
+
// be interactive (as it is now behind the top nav). So, we need to disable the entire panel splitter.
|
|
76
|
+
var openPopupsInTopNav = openLayerObserver.getCount({
|
|
77
|
+
namespace: _constants.openLayerObserverTopNavNamespace,
|
|
78
|
+
type: 'popup'
|
|
79
|
+
});
|
|
80
|
+
setIsEnabled(openPopupsInSideNav + openPopupsInTopNav === 0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Initial check, in case the app has loaded with an open popup.
|
|
84
|
+
checkAndSetState();
|
|
85
|
+
|
|
86
|
+
// Creating separate listeners for each namespace, to avoid running them when layers in other parts of the app change.
|
|
87
|
+
var cleanupSideNavListener = openLayerObserver.onChange(checkAndSetState, {
|
|
88
|
+
namespace: _constants.openLayerObserverSideNavNamespace
|
|
89
|
+
});
|
|
90
|
+
var cleanupTopNavListener = openLayerObserver.onChange(checkAndSetState, {
|
|
91
|
+
namespace: _constants.openLayerObserverTopNavNamespace
|
|
92
|
+
});
|
|
93
|
+
return function cleanup() {
|
|
94
|
+
cleanupSideNavListener();
|
|
95
|
+
cleanupTopNavListener();
|
|
96
|
+
};
|
|
97
|
+
}, [isFhsEnabled, openLayerObserver]);
|
|
98
|
+
if (!isEnabled && isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes')) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
42
101
|
return /*#__PURE__*/_react.default.createElement(_context.OnDoubleClickContext.Provider, {
|
|
43
102
|
value: shouldCollapseOnDoubleClick ? toggleSideNav : undefined
|
|
44
103
|
}, /*#__PURE__*/_react.default.createElement(_panelSplitter.PanelSplitter, {
|
|
@@ -11,8 +11,11 @@ require("./root.compiled.css");
|
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
15
|
var _skipLinksProvider = require("../../context/skip-links/skip-links-provider");
|
|
15
16
|
var _topNavStartContextProvider = require("../../context/top-nav-start/top-nav-start-context-provider");
|
|
17
|
+
var _useIsFhsEnabled = require("../fhs-rollout/use-is-fhs-enabled");
|
|
18
|
+
var _constants = require("./constants");
|
|
16
19
|
var _hoistSlotSizesContext = require("./hoist-slot-sizes-context");
|
|
17
20
|
var _elementContext = require("./side-nav/element-context");
|
|
18
21
|
var _isSideNavShortcutEnabledContext = require("./side-nav/is-side-nav-shortcut-enabled-context");
|
|
@@ -22,7 +25,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
22
25
|
// ID of the root element that the banner and top bar slots hoist their sizes to. Only internally exported.
|
|
23
26
|
var gridRootId = exports.gridRootId = 'unsafe-design-system-page-layout-root';
|
|
24
27
|
var styles = {
|
|
25
|
-
root: "_1e0c11p5 _1tke1kxc _1lmcq9em _yv0ei47z _2z0516ab _1ciragmp _12fkuz0r _12qzrxre _1rqt70if _xkmgbaui _jbc7rxre _tyve1jg8"
|
|
28
|
+
root: "_1e0c11p5 _1tke1kxc _1lmcq9em _yv0ei47z _2z0516ab _1ciragmp _12fkuz0r _12qzrxre _1rqt70if _xkmgbaui _jbc7rxre _tyve1jg8",
|
|
29
|
+
sideNavScrollTimeline: "_10iwgc9s"
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
/**
|
|
@@ -41,6 +45,7 @@ function Root(_ref) {
|
|
|
41
45
|
_ref$isSideNavShortcu = _ref.isSideNavShortcutEnabled,
|
|
42
46
|
isSideNavShortcutEnabled = _ref$isSideNavShortcu === void 0 ? false : _ref$isSideNavShortcu;
|
|
43
47
|
var ref = (0, _react.useRef)(null);
|
|
48
|
+
var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
|
|
44
49
|
(0, _react.useEffect)(function () {
|
|
45
50
|
if (process.env.NODE_ENV !== 'production') {
|
|
46
51
|
var IGNORED_ELEMENTS = ['SCRIPT', 'STYLE'];
|
|
@@ -65,7 +70,7 @@ function Root(_ref) {
|
|
|
65
70
|
testId: testId
|
|
66
71
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
67
72
|
ref: ref,
|
|
68
|
-
className: (0, _runtime.ax)([styles.root, xcss]),
|
|
73
|
+
className: (0, _runtime.ax)([styles.root, isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && styles.sideNavScrollTimeline, xcss]),
|
|
69
74
|
id: gridRootId,
|
|
70
75
|
"data-testid": testId
|
|
71
76
|
}, children)))))))));
|
|
@@ -10,4 +10,5 @@
|
|
|
10
10
|
._i0dlf1ug{flex-basis:0%}
|
|
11
11
|
._j7hq4n8p{animation-name:k1gwhnxc}
|
|
12
12
|
._y4tiutpp{padding-inline-end:var(--ds-space-150,9pt)}
|
|
13
|
-
@keyframes k1gwhnxc{0%{box-shadow:none}0.1%{box-shadow:0 -1px var(--ds-border,#0b120e24)}to{box-shadow:0 -1px var(--ds-border,#0b120e24)}}
|
|
13
|
+
@keyframes k1gwhnxc{0%{box-shadow:none}0.1%{box-shadow:0 -1px var(--ds-border,#0b120e24)}to{box-shadow:0 -1px var(--ds-border,#0b120e24)}}
|
|
14
|
+
@media (min-width:64rem){@supports (scroll-timeline-axis:block){._1sfqgc9s{scroll-timeline-name:--sNcst}._1q1x1ule{scroll-timeline-axis:block}html:has([data-private-side-nav-header]) ._8pm2gc9s{animation-timeline:--sNcst}html:has([data-private-side-nav-header]) ._1gd94n8p{animation-name:k1gwhnxc}}@supports (scroll-timeline-axis:block){@keyframes k1gwhnxc{0%{box-shadow:none}0.1%{box-shadow:0 -1px var(--ds-border,#0b120e24)}to{box-shadow:0 -1px var(--ds-border,#0b120e24)}}}}
|
|
@@ -11,7 +11,10 @@ require("./side-nav-content.compiled.css");
|
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _mergeRefs = _interopRequireDefault(require("@atlaskit/ds-lib/merge-refs"));
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
15
|
var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
|
|
16
|
+
var _constants = require("../constants");
|
|
17
|
+
var _useSideNavVisibility2 = require("./use-side-nav-visibility");
|
|
15
18
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
16
19
|
/**
|
|
17
20
|
* The main content of the side nav, filling up the middle section. It acts as a scroll container.
|
|
@@ -39,7 +42,8 @@ var styles = {
|
|
|
39
42
|
var scrolledBorder = null;
|
|
40
43
|
var scrollTimelineVar = '--sNcst';
|
|
41
44
|
var fullHeightSidebarStyles = {
|
|
42
|
-
scrollContainer: "_1un9baqb _21o1gc9s _j7hq4n8p"
|
|
45
|
+
scrollContainer: "_1un9baqb _21o1gc9s _j7hq4n8p",
|
|
46
|
+
scrollContainerWithLayeringFixes: "_1sfqgc9s _1q1x1ule _8pm2gc9s _1gd94n8p"
|
|
43
47
|
};
|
|
44
48
|
function _SideNavContent(_ref, forwardedRef) {
|
|
45
49
|
var children = _ref.children,
|
|
@@ -49,10 +53,12 @@ function _SideNavContent(_ref, forwardedRef) {
|
|
|
49
53
|
var mergedRef = (0, _react.useMemo)(function () {
|
|
50
54
|
return (0, _mergeRefs.default)([internalRef, forwardedRef]);
|
|
51
55
|
}, [forwardedRef]);
|
|
56
|
+
var _useSideNavVisibility = (0, _useSideNavVisibility2.useSideNavVisibility)(),
|
|
57
|
+
isExpandedOnDesktop = _useSideNavVisibility.isExpandedOnDesktop;
|
|
52
58
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
53
59
|
ref: isFhsEnabled ? mergedRef : forwardedRef,
|
|
54
60
|
"data-testid": testId,
|
|
55
|
-
className: (0, _runtime.ax)([styles.scrollContainer, isFhsEnabled && fullHeightSidebarStyles.scrollContainer])
|
|
61
|
+
className: (0, _runtime.ax)([styles.scrollContainer, isFhsEnabled && !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && fullHeightSidebarStyles.scrollContainer, isFhsEnabled && isExpandedOnDesktop && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && fullHeightSidebarStyles.scrollContainerWithLayeringFixes])
|
|
56
62
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
57
63
|
className: (0, _runtime.ax)([styles.paddingContainer])
|
|
58
64
|
}, children));
|
|
@@ -9,6 +9,7 @@ exports.SideNavHeader = void 0;
|
|
|
9
9
|
require("./side-nav-header.compiled.css");
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
13
14
|
var styles = {
|
|
14
15
|
root: "_18zrutpp _1q51utpp _85i51b66"
|
|
@@ -20,6 +21,22 @@ var styles = {
|
|
|
20
21
|
var SideNavHeader = exports.SideNavHeader = function SideNavHeader(_ref) {
|
|
21
22
|
var children = _ref.children;
|
|
22
23
|
return /*#__PURE__*/React.createElement("div", {
|
|
24
|
+
/**
|
|
25
|
+
* This attribute is used to identify whether the SideNavHeader is mounted, to determine where the
|
|
26
|
+
* SideNavContent's scroll indicator line should be applied. This is for layering reasons -
|
|
27
|
+
* if the scroll indicator line intersects with the top nav, it could incorrectly be hidden beneath
|
|
28
|
+
* the top nav (depending on if a layer is open, which raises the top nav'z z-index).
|
|
29
|
+
*
|
|
30
|
+
* We are using a data attribute and CSS for this logic to ensure it is SSR safe.
|
|
31
|
+
*
|
|
32
|
+
* - If SideNavHeader exists, the scroll indicator line is applied to the SideNavContent. This is safe
|
|
33
|
+
* because the SideNavHeader is between the SideNavContent and TopNavStart, so the scroll indicator line
|
|
34
|
+
* will not intersect with the top nav.
|
|
35
|
+
*
|
|
36
|
+
* - If SideNavHeader does not exist, the scroll indicator line is applied to TopNavStart. This ensures
|
|
37
|
+
* the scroll indicator line is visible even when the top nav has a z-index higher than the side nav.
|
|
38
|
+
*/
|
|
39
|
+
"data-private-side-nav-header": (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') ? 'true' : undefined,
|
|
23
40
|
className: (0, _runtime.ax)([styles.root])
|
|
24
41
|
}, children);
|
|
25
42
|
};
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
._4t3ieqxy{height:calc(100vh - var(--n_bnrM, 0px) - var(--n_tNvM, 0px))}
|
|
15
15
|
._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
|
|
16
16
|
._kqsw1if8{position:sticky}
|
|
17
|
+
._kqswstnw{position:absolute}
|
|
18
|
+
._rjxpidpf{inset-inline-end:0}
|
|
19
|
+
._u7coidpf{inset-block-end:0}
|
|
17
20
|
._vchhusvi{box-sizing:border-box}
|
|
18
21
|
[dir=rtl] ._65m41mrw{--animation-direction:-1}
|
|
19
22
|
@media (prefers-reduced-motion:no-preference){._10t88iot{transition-property:transform,display}._1vrh1a5r{transition-behavior:allow-discrete}._xrrpfnf5{transition-duration:.2s}._1lh81gzg{grid-area:main}._1xq51mm8{transition-timing-function:cubic-bezier(0,.4,0,1)}@starting-style{._1nu51p9u{transform:translateX(calc(-100%*var(--animation-direction)))}}._1xq51ku9{transition-timing-function:cubic-bezier(.6,0,0,1)}}
|
|
@@ -9,12 +9,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.SideNav = SideNav;
|
|
10
10
|
exports.onPeekStartDelayMs = void 0;
|
|
11
11
|
require("./side-nav.compiled.css");
|
|
12
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
-
var React = _react;
|
|
14
12
|
var _runtime = require("@compiled/react/runtime");
|
|
15
13
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
16
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
18
17
|
var _bindEventListener = require("bind-event-listener");
|
|
19
18
|
var _reactDom = require("react-dom");
|
|
20
19
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
@@ -63,7 +62,9 @@ function getResizeBounds() {
|
|
|
63
62
|
* Avoiding nesting the `@supports` at-rule inside of `@media` means Compiled can remove duplicate styles from the generated CSS.
|
|
64
63
|
*/
|
|
65
64
|
var isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
|
66
|
-
var
|
|
65
|
+
var panelSplitterPortalTargetStyles = {
|
|
66
|
+
root: "_kqswstnw _rjxpidpf _u7coidpf _4t3i1osq _165t56xv"
|
|
67
|
+
};
|
|
67
68
|
var styles = {
|
|
68
69
|
root: "_nd5l1b6c _191wglyw _t51zglyw _bfhk1bhr _16qs130s _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5clia51 _4ap3vuon _scbpglyw",
|
|
69
70
|
flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp130s _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
|
|
@@ -187,6 +188,7 @@ function SideNavInternal(_ref) {
|
|
|
187
188
|
var clampedWidth = "clamp(".concat(widthResizeBounds.min, ", ").concat(width, "px, ").concat(widthResizeBounds.max, ")");
|
|
188
189
|
var dangerouslyHoistSlotSizes = (0, _react.useContext)(_hoistSlotSizesContext.DangerouslyHoistSlotSizes);
|
|
189
190
|
var navRef = (0, _react.useRef)(null);
|
|
191
|
+
var panelSplitterPortalTargetRef = (0, _react.useRef)(null);
|
|
190
192
|
/**
|
|
191
193
|
* Used to share the side nav element with the `Panel`,
|
|
192
194
|
* which observes the side nav to determine its maximum width.
|
|
@@ -313,7 +315,7 @@ function SideNavInternal(_ref) {
|
|
|
313
315
|
if (action === 'ready-to-close') {
|
|
314
316
|
// If there are no open layers, we can close the flyout.
|
|
315
317
|
if ((openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.getCount({
|
|
316
|
-
namespace: openLayerObserverSideNavNamespace
|
|
318
|
+
namespace: _constants.openLayerObserverSideNavNamespace
|
|
317
319
|
})) === 0) {
|
|
318
320
|
close();
|
|
319
321
|
return;
|
|
@@ -676,7 +678,7 @@ function SideNavInternal(_ref) {
|
|
|
676
678
|
updateFlyoutState('force-close');
|
|
677
679
|
}
|
|
678
680
|
}, {
|
|
679
|
-
namespace: openLayerObserverSideNavNamespace
|
|
681
|
+
namespace: _constants.openLayerObserverSideNavNamespace
|
|
680
682
|
});
|
|
681
683
|
}, [openLayerObserver, updateFlyoutState]);
|
|
682
684
|
(0, _react.useEffect)(function () {
|
|
@@ -760,7 +762,7 @@ function SideNavInternal(_ref) {
|
|
|
760
762
|
* Avoiding nesting the `@supports` at-rule inside of `@media` means Compiled can remove duplicate styles from the generated CSS.
|
|
761
763
|
*/
|
|
762
764
|
!isFirefox;
|
|
763
|
-
return /*#__PURE__*/
|
|
765
|
+
return /*#__PURE__*/_react.default.createElement("nav", (0, _extends2.default)({
|
|
764
766
|
id: id
|
|
765
767
|
}, devTimeOnlyAttributes, {
|
|
766
768
|
"data-layout-slot": true,
|
|
@@ -768,8 +770,8 @@ function SideNavInternal(_ref) {
|
|
|
768
770
|
style: (0, _defineProperty2.default)({}, _constants.sideNavVar, clampedWidth),
|
|
769
771
|
ref: mergedRef,
|
|
770
772
|
"data-testid": testId,
|
|
771
|
-
className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
|
|
772
|
-
}), /*#__PURE__*/
|
|
773
|
+
className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && styles.fullHeightSidebar])
|
|
774
|
+
}), /*#__PURE__*/_react.default.createElement(_hoistUtils.DangerouslyHoistCssVarToDocumentRoot, {
|
|
773
775
|
variableName: _constants.sideNavLiveWidthVar,
|
|
774
776
|
value: "0px",
|
|
775
777
|
mediaQuery: _responsive.media.above.md,
|
|
@@ -779,23 +781,32 @@ function SideNavInternal(_ref) {
|
|
|
779
781
|
// ------ START UNSAFE STYLES ------
|
|
780
782
|
// These styles are only needed for the UNSAFE legacy use case for Jira + Confluence.
|
|
781
783
|
// When they aren't needed anymore we can delete them wholesale.
|
|
782
|
-
|
|
784
|
+
_react.default.createElement(_hoistUtils.DangerouslyHoistCssVarToDocumentRoot, {
|
|
783
785
|
variableName: _constants.UNSAFE_sideNavLayoutVar,
|
|
784
786
|
value: "var(".concat(_constants.sideNavLiveWidthVar, ")")
|
|
785
787
|
})
|
|
786
788
|
// ------ END UNSAFE STYLES ------
|
|
787
|
-
, /*#__PURE__*/
|
|
789
|
+
, /*#__PURE__*/_react.default.createElement(_provider.PanelSplitterProvider, {
|
|
788
790
|
panelId: _constants.sideNavPanelSplitterId,
|
|
789
791
|
panelRef: navRef,
|
|
792
|
+
portalRef: isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') ? panelSplitterPortalTargetRef : undefined,
|
|
790
793
|
panelWidth: width,
|
|
791
794
|
onCompleteResize: setWidth,
|
|
792
795
|
getResizeBounds: getResizeBounds,
|
|
793
|
-
resizingCssVar: panelSplitterResizingVar
|
|
794
|
-
|
|
796
|
+
resizingCssVar: panelSplitterResizingVar
|
|
797
|
+
// Not resizable when in peek (flyout) mode.
|
|
798
|
+
,
|
|
799
|
+
isEnabled: (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') ? !isFlyoutVisible :
|
|
800
|
+
// Old behaviour has a bug: the panel splitter would only be visible on sm screens (between 48rem and 64rem)
|
|
801
|
+
// if the side nav was expanded on desktop.
|
|
802
|
+
isExpandedOnDesktop && !isFlyoutVisible,
|
|
795
803
|
shortcut: isShortcutEnabled ? _sideNavToggleTooltipKeyboardShortcut.sideNavToggleTooltipKeyboardShortcut : undefined
|
|
796
|
-
}, /*#__PURE__*/
|
|
804
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
797
805
|
className: (0, _runtime.ax)([styles.flexContainer])
|
|
798
|
-
}, children)))
|
|
806
|
+
}, children)), isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && /*#__PURE__*/_react.default.createElement("div", {
|
|
807
|
+
ref: panelSplitterPortalTargetRef,
|
|
808
|
+
className: (0, _runtime.ax)([panelSplitterPortalTargetStyles.root])
|
|
809
|
+
}));
|
|
799
810
|
}
|
|
800
811
|
|
|
801
812
|
/**
|
|
@@ -821,9 +832,9 @@ function SideNav(_ref8) {
|
|
|
821
832
|
onPeekEnd = _ref8.onPeekEnd,
|
|
822
833
|
canToggleWithShortcut = _ref8.canToggleWithShortcut,
|
|
823
834
|
id = _ref8.id;
|
|
824
|
-
return /*#__PURE__*/
|
|
825
|
-
namespace: openLayerObserverSideNavNamespace
|
|
826
|
-
}, /*#__PURE__*/
|
|
835
|
+
return /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
|
|
836
|
+
namespace: _constants.openLayerObserverSideNavNamespace
|
|
837
|
+
}, /*#__PURE__*/_react.default.createElement(SideNavInternal, {
|
|
827
838
|
defaultCollapsed: defaultCollapsed,
|
|
828
839
|
defaultWidth: defaultWidth,
|
|
829
840
|
testId: testId,
|
|
@@ -26,7 +26,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
26
26
|
var containerStyles = {
|
|
27
27
|
root: "_yyhy11wp _1e0c1txw _1bahh9n0 _1ul9zwfg _1d2y1ris _glte1ris _15ri1mjv _1gs5usvi _ndwch9n0",
|
|
28
28
|
jiraProductLogoUpdate: "_15rip2n4",
|
|
29
|
-
fullHeightSidebar: "_lcxv1wug
|
|
29
|
+
fullHeightSidebar: "_y4tiutpp _lcxv1wug",
|
|
30
|
+
fullHeightSidebarWithLayeringFixes: "_y4tiutpp"
|
|
30
31
|
};
|
|
31
32
|
var listStyles = {
|
|
32
33
|
root: "_zulp1b66 _4cvr1h6o _1e0c1txw",
|
|
@@ -73,7 +74,7 @@ function TopNavEnd(_ref) {
|
|
|
73
74
|
}, [query]);
|
|
74
75
|
return /*#__PURE__*/_react.default.createElement("nav", {
|
|
75
76
|
"aria-label": label,
|
|
76
|
-
className: (0, _runtime.ax)([containerStyles.root, isFhsEnabled && containerStyles.fullHeightSidebar, (0, _platformFeatureFlags.fg)('team25-eu-jira-logo-updates-csm-jsm') && containerStyles.jiraProductLogoUpdate])
|
|
77
|
+
className: (0, _runtime.ax)([containerStyles.root, isFhsEnabled && !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && containerStyles.fullHeightSidebar, isFhsEnabled && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && containerStyles.fullHeightSidebarWithLayeringFixes, (0, _platformFeatureFlags.fg)('team25-eu-jira-logo-updates-csm-jsm') && containerStyles.jiraProductLogoUpdate])
|
|
77
78
|
}, isMobile ? /*#__PURE__*/_react.default.createElement(_popup.default, {
|
|
78
79
|
isOpen: isOpen,
|
|
79
80
|
onClose: function onClose() {
|
|
@@ -9,6 +9,7 @@ exports.TopNavMiddle = TopNavMiddle;
|
|
|
9
9
|
require("./top-nav-middle.compiled.css");
|
|
10
10
|
var _runtime = require("@compiled/react/runtime");
|
|
11
11
|
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
|
|
13
14
|
var styles = {
|
|
14
15
|
root: "_zulpu2gc _yyhycs5v _1bsb1osq _4cvr1h6o _1e0c1txw _1bahh9n0 _181n11p5 _1j8b15b0 _lagd1bp4 _1t4c1ris _12e8h9n0",
|
|
@@ -27,6 +28,6 @@ function TopNavMiddle(_ref) {
|
|
|
27
28
|
var children = _ref.children;
|
|
28
29
|
var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
|
|
29
30
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
30
|
-
className: (0, _runtime.ax)([styles.root, isFhsEnabled && styles.fullHeightSidebar])
|
|
31
|
+
className: (0, _runtime.ax)([styles.root, isFhsEnabled && !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && styles.fullHeightSidebar])
|
|
31
32
|
}, children);
|
|
32
33
|
}
|
|
@@ -13,4 +13,5 @@
|
|
|
13
13
|
._vchhusvi{box-sizing:border-box}
|
|
14
14
|
[dir=rtl] ._65m41mrw{--animation-direction:-1}
|
|
15
15
|
@media (prefers-reduced-motion:no-preference){._10t81e03{transition-property:transform}._10t81rjc{transition-property:transform,opacity}._1xq51ytf{transition-timing-function:ease-in-out}._1xq55ucs{transition-timing-function:ease}._mjvc1efy{transform:translateX(calc(100%*var(--animation-direction)))}._bgpzidpf{opacity:0}._mjvc1p9u{transform:translateX(calc(-100%*var(--animation-direction)))}._mjvco0k7{transform:translateX(calc((-2rem + var(--ds-space-050, 4px)*-1)*var(--animation-direction)))}._mjvcyrjp{transform:translateX(calc((2rem + var(--ds-space-050, 4px))*var(--animation-direction)))}._mjvcz12g{transform:translateX(0)}._xrrpfnf5{transition-duration:.2s}._bgpzkb7n{opacity:1}}
|
|
16
|
-
@media (min-width:64rem){._15rin7od{min-width:unset}._glte1osq{width:100%}._15rip2n4{min-width:330px}._glte1ris{width:max-content}._15ri1mjv{min-width:300px}._1gs5usvi{box-sizing:border-box}._glte93mn{width:var(--n_sNvlw,100%)}._exxmpxbi{padding-inline-end:var(--ds-space-200,1pc)}}
|
|
16
|
+
@media (min-width:64rem){._13wnh2mm{position:relative}._1l3vb3bt:after{content:""}._juxdstnw:after{position:absolute}._1vinidpf:after{inset-block-start:0}._1719idpf:after{inset-block-end:0}._e6znidpf:after{inset-inline-end:0}._1kyhe4h9:after{border-inline-end-width:var(--ds-border-width,1px)}._4cwynqa1:after{border-inline-end-style:solid}._435s1l7x:after{border-inline-end-color:var(--ds-border,#0b120e24)}._m7c3idpf:after{opacity:0}._15rin7od{min-width:unset}._glte1osq{width:100%}._15rip2n4{min-width:330px}@supports (scroll-timeline-axis:block){html:not(:has([data-private-side-nav-header])) ._1kilgc9s{animation-timeline:--sNcst}html:not(:has([data-private-side-nav-header])) ._1m3l1ybg{animation-name:khj1qz3}html:not(:has([data-private-side-nav-header])) ._12g81hrf{animation-fill-mode:both}}._4ap3vuon{background-color:var(--ds-surface,#fff)}._m7c3kb7n:after{opacity:1}._glte1ris{width:max-content}._15ri1mjv{min-width:300px}._1gs5usvi{box-sizing:border-box}._glte93mn{width:var(--n_sNvlw,100%)}._exxmpxbi{padding-inline-end:var(--ds-space-200,1pc)}@supports (scroll-timeline-axis:block){@keyframes khj1qz3{0%{box-shadow:inset 0 -1px 0 0 transparent}0.1%{box-shadow:inset 0 -1px 0 0 var(--ds-border,#0b120e24)}to{box-shadow:inset 0 -1px 0 0 var(--ds-border,#0b120e24)}}}}
|
|
17
|
+
@media (prefers-reduced-motion:no-preference) and (min-width:64rem){._n8qabrmi:after{transition-property:opacity}._wc72fnf5:after{transition-duration:.2s}._j3mr1v42:after{transition-timing-function:ease-in}}
|
|
@@ -16,6 +16,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
16
16
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
17
17
|
var _topNavStartContext = require("../../../context/top-nav-start/top-nav-start-context");
|
|
18
18
|
var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
|
|
19
|
+
var _constants = require("../constants");
|
|
19
20
|
var _useSideNavVisibility3 = require("../side-nav/use-side-nav-visibility");
|
|
20
21
|
var _visibilityContext = require("../side-nav/visibility-context");
|
|
21
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -44,6 +45,12 @@ var innerStyles = {
|
|
|
44
45
|
fullHeightSidebarExpanded: "_15rin7od _glte1osq"
|
|
45
46
|
};
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The scroll indicator is usually applied in SideNavContent, but if there is no SideNavHeader it is
|
|
50
|
+
* applied in TopNavStart instead for layering reasons. See the comment in SideNavHeader for more details.
|
|
51
|
+
*/
|
|
52
|
+
var scrolledShadow = null;
|
|
53
|
+
|
|
47
54
|
/**
|
|
48
55
|
* Styles for the outer element, that does not have re-enabled pointer events and spans the entire
|
|
49
56
|
* width of the TopNavStart area.
|
|
@@ -52,7 +59,10 @@ var innerStyles = {
|
|
|
52
59
|
*/
|
|
53
60
|
var wrapperStyles = {
|
|
54
61
|
root: "_vchhusvi _bozgutpp _4t3i1osq",
|
|
55
|
-
fullHeightSidebarExpanded: "_glte93mn _exxmpxbi"
|
|
62
|
+
fullHeightSidebarExpanded: "_glte93mn _exxmpxbi",
|
|
63
|
+
fullHeightSidebarWithLayeringFixes: "_13wnh2mm _1l3vb3bt _juxdstnw _1vinidpf _1719idpf _e6znidpf _1kyhe4h9 _4cwynqa1 _435s1l7x _m7c3idpf",
|
|
64
|
+
fullHeightSidebarExpandedWithLayeringFixes: "_4ap3vuon _1kilgc9s _1m3l1ybg _12g81hrf _m7c3kb7n",
|
|
65
|
+
fullHeightSidebarBorderTransition: "_n8qabrmi _wc72fnf5 _j3mr1v42"
|
|
56
66
|
};
|
|
57
67
|
|
|
58
68
|
/**
|
|
@@ -120,12 +130,29 @@ var TopNavStartInnerFHS = /*#__PURE__*/(0, _react.forwardRef)(function TopNavSta
|
|
|
120
130
|
defaultCollapsed: true
|
|
121
131
|
}),
|
|
122
132
|
isExpandedOnDesktop = _useSideNavVisibility.isExpandedOnDesktop;
|
|
133
|
+
var sideNavState = (0, _react.useContext)(_visibilityContext.SideNavVisibilityState);
|
|
134
|
+
var isFirstRenderRef = (0, _react.useRef)(true);
|
|
135
|
+
(0, _react.useEffect)(function () {
|
|
136
|
+
if (!(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes')) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Ignore renders until the side nav state is initialized
|
|
141
|
+
// So that apps using the legacy API for setting side nav default state do not see
|
|
142
|
+
// animations when they shouldn't
|
|
143
|
+
if (sideNavState === null) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (isFirstRenderRef.current) {
|
|
147
|
+
isFirstRenderRef.current = false;
|
|
148
|
+
}
|
|
149
|
+
}, [sideNavState]);
|
|
123
150
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
124
|
-
className: (0, _runtime.ax)([wrapperStyles.root, isExpandedOnDesktop && wrapperStyles.fullHeightSidebarExpanded])
|
|
151
|
+
className: (0, _runtime.ax)([wrapperStyles.root, isExpandedOnDesktop && wrapperStyles.fullHeightSidebarExpanded, (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && wrapperStyles.fullHeightSidebarWithLayeringFixes, !isFirstRenderRef.current && isExpandedOnDesktop && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && wrapperStyles.fullHeightSidebarBorderTransition, isExpandedOnDesktop && (0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && wrapperStyles.fullHeightSidebarExpandedWithLayeringFixes])
|
|
125
152
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
126
153
|
ref: ref,
|
|
127
154
|
"data-testid": testId,
|
|
128
|
-
className: (0, _runtime.ax)([innerStyles.root, innerStyles.fullHeightSidebar, (0, _platformFeatureFlags.fg)('team25-eu-jira-logo-updates-csm-jsm') && innerStyles.jiraProductLogoUpdate, isExpandedOnDesktop && innerStyles.fullHeightSidebarExpanded])
|
|
155
|
+
className: (0, _runtime.ax)([innerStyles.root, !(0, _platformFeatureFlags.fg)('platform-dst-side-nav-layering-fixes') && innerStyles.fullHeightSidebar, (0, _platformFeatureFlags.fg)('team25-eu-jira-logo-updates-csm-jsm') && innerStyles.jiraProductLogoUpdate, isExpandedOnDesktop && innerStyles.fullHeightSidebarExpanded])
|
|
129
156
|
}, children));
|
|
130
157
|
});
|
|
131
158
|
|
|
@@ -5,17 +5,28 @@
|
|
|
5
5
|
._18zrze3t{padding-inline:var(--ds-space-0,0)}
|
|
6
6
|
._179rglyw{border-block-end:none}
|
|
7
7
|
._179ria51{border-block-end:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}._152t1nws{inset-block-start:var(--n_bnrM,0)}
|
|
8
|
+
._18postnw:after{position:absolute}
|
|
9
|
+
._1beue4h9:after{border-block-end-width:var(--ds-border-width,1px)}
|
|
8
10
|
._1bsb1osq{width:100%}
|
|
11
|
+
._1cte1l7x:after{border-block-end-color:var(--ds-border,#0b120e24)}
|
|
12
|
+
._1czdidpf:after{inset-inline-end:0}
|
|
9
13
|
._1e0c11p5{display:grid}
|
|
14
|
+
._1gufidpf:after{inset-block-end:0}
|
|
15
|
+
._1pby11wp{z-index:3}
|
|
16
|
+
._1pbycs5v{z-index:2}
|
|
10
17
|
._1pbyegat{z-index:4}
|
|
11
18
|
._4cvr1h6o{align-items:center}
|
|
12
19
|
._4t3i1dgc{height:var(--n_tNvM)}
|
|
13
20
|
._4t3i1osq{height:100%}
|
|
21
|
+
._aetrb3bt:after{content:""}
|
|
14
22
|
._bfhkglyw{background-color:none}
|
|
15
23
|
._bfhkvuon{background-color:var(--ds-surface,#fff)}
|
|
16
24
|
._d6vu1bgi >span[data-ep-placeholder-id=top_navigation_skeleton]{display:contents}
|
|
25
|
+
._g0nf3tht:after{inset-inline-start:var(--n_sNvlw,0)}
|
|
17
26
|
._kqsw1if8{position:sticky}
|
|
27
|
+
._lcxv1wug{pointer-events:auto}
|
|
18
28
|
._lcxvglyw{pointer-events:none}
|
|
29
|
+
._uaeunqa1:after{border-block-end-style:solid}
|
|
19
30
|
._vchhusvi{box-sizing:border-box}
|
|
20
31
|
._yv0e1mfv{grid-template-columns:auto 1fr auto}
|
|
21
32
|
@media (min-width:48rem){._1j8b18ax{grid-template-columns:1fr minmax(min-content,max-content) 1fr}}
|