@atlaskit/navigation-system 10.7.0 → 10.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +2 -2
  3. package/dist/cjs/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +2 -2
  4. package/dist/cjs/ui/page-layout/panel.js +10 -6
  5. package/dist/cjs/ui/page-layout/root.js +1 -1
  6. package/dist/cjs/ui/page-layout/side-nav/side-nav.js +4 -3
  7. package/dist/cjs/ui/page-layout/side-nav/toggle-button.js +2 -2
  8. package/dist/cjs/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +2 -2
  9. package/dist/cjs/ui/page-layout/top-nav/top-nav-end.js +3 -3
  10. package/dist/cjs/ui/page-layout/top-nav/top-nav-middle.js +2 -2
  11. package/dist/cjs/ui/page-layout/top-nav/top-nav-start.js +2 -2
  12. package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +1 -1
  13. package/dist/es2019/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +1 -1
  14. package/dist/es2019/ui/page-layout/panel.js +10 -6
  15. package/dist/es2019/ui/page-layout/root.js +1 -1
  16. package/dist/es2019/ui/page-layout/side-nav/side-nav.js +2 -1
  17. package/dist/es2019/ui/page-layout/side-nav/toggle-button.js +1 -1
  18. package/dist/es2019/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +1 -1
  19. package/dist/es2019/ui/page-layout/top-nav/top-nav-end.js +1 -1
  20. package/dist/es2019/ui/page-layout/top-nav/top-nav-middle.js +1 -1
  21. package/dist/es2019/ui/page-layout/top-nav/top-nav-start.js +1 -1
  22. package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +1 -1
  23. package/dist/esm/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +1 -1
  24. package/dist/esm/ui/page-layout/panel.js +10 -6
  25. package/dist/esm/ui/page-layout/root.js +1 -1
  26. package/dist/esm/ui/page-layout/side-nav/side-nav.js +2 -1
  27. package/dist/esm/ui/page-layout/side-nav/toggle-button.js +1 -1
  28. package/dist/esm/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +1 -1
  29. package/dist/esm/ui/page-layout/top-nav/top-nav-end.js +1 -1
  30. package/dist/esm/ui/page-layout/top-nav/top-nav-middle.js +1 -1
  31. package/dist/esm/ui/page-layout/top-nav/top-nav-start.js +1 -1
  32. package/dist/types/ui/page-layout/panel.d.ts +14 -1
  33. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # @atlassian/navigation-system
2
2
 
3
+ ## 10.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`5dd6269af3c70`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5dd6269af3c70) -
8
+ Add an opt-in `maxWidth` to the `Panel` layout slot and preview panel `Panel` config, letting a
9
+ single consumer request a wider resize bound (e.g. `70vw`) than the default cap of half the
10
+ viewport width. Defaults are unchanged, so all existing consumers remain capped at the default.
11
+
12
+ **`@atlaskit/navigation-system`** — the `Panel` layout slot accepts a `maxWidth` (`vw`/`px`),
13
+ applied to both the rendered width and the resize bounds (mouse and keyboard):
14
+
15
+ ```tsx
16
+ import { Panel } from '@atlaskit/navigation-system/layout/panel';
17
+
18
+ <Panel defaultWidth={600} maxWidth="70vw">
19
+ {/* ...panel content... */}
20
+ </Panel>;
21
+ ```
22
+
23
+ **`@atlassian/preview-panels-api`** — the opened panel config takes the same `maxWidth`:
24
+
25
+ ```tsx
26
+ import { usePreviewPanelsActions } from '@atlassian/preview-panels-api';
27
+
28
+ const { open } = usePreviewPanelsActions();
29
+
30
+ open({
31
+ panel: {
32
+ id: 'issue-123',
33
+ type: 'issue',
34
+ product: 'jira',
35
+ content: () => <IssuePreview />,
36
+ maxWidth: '70vw',
37
+ },
38
+ });
39
+ ```
40
+
41
+ **`@atlassian/preview-panel-global-objects`** — `useGlobalObjectPreviewPanels` accepts a
42
+ `maxWidth` option that it forwards onto the panel it opens, so global-object preview panels
43
+ (Confluence page, goals, teams, CMDB object, etc.) share the same wider bound. Omitting it keeps
44
+ the default cap:
45
+
46
+ ```tsx
47
+ const previewPanels = useGlobalObjectPreviewPanels('jira', cloudId, { maxWidth: '70vw' });
48
+ ```
49
+
50
+ ## 10.7.1
51
+
52
+ ### Patch Changes
53
+
54
+ - Updated dependencies
55
+
3
56
  ## 10.7.0
4
57
 
5
58
  ### Minor Changes
@@ -20,7 +20,7 @@ var _reactDom = require("react-dom");
20
20
  var _tinyInvariant = _interopRequireDefault(require("tiny-invariant"));
21
21
  var _useId = require("@atlaskit/ds-lib/use-id");
22
22
  var _useStableRef = _interopRequireDefault(require("@atlaskit/ds-lib/use-stable-ref"));
23
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
23
+ var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
24
24
  var _combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
25
25
  var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
26
26
  var _blockDraggingToIframes = require("@atlaskit/pragmatic-drag-and-drop/element/block-dragging-to-iframes");
@@ -173,7 +173,7 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref3) {
173
173
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
174
174
  rangeInputBounds = _useState4[0],
175
175
  setRangeInputBounds = _useState4[1];
176
- var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
176
+ var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
177
177
 
178
178
  /**
179
179
  * This is a temporary workaround to enable the `SideNavPanelSplitter` component
@@ -9,7 +9,7 @@ exports.SideNavPanelSplitter = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _tinyInvariant = _interopRequireDefault(require("tiny-invariant"));
12
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
12
+ var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
13
13
  var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
14
14
  var _constants = require("../constants");
15
15
  var _useToggleSideNav = require("../side-nav/use-toggle-side-nav");
@@ -33,7 +33,7 @@ _constants.openLayerObserverTopNavStartNamespace, _constants.openLayerObserverTo
33
33
  */
34
34
  function useHasOpenPopupsInSideNavOrTopNav() {
35
35
  var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
36
- var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
36
+ var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
37
37
  // Setting the initial state to false, as it is unlikely that there would be any open popups when the app starts.
38
38
  var _useState = (0, _react.useState)(false),
39
39
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -67,7 +67,8 @@ function Panel(_ref) {
67
67
  providedId = _ref.id,
68
68
  xcss = _ref.xcss,
69
69
  _ref$hasBorder = _ref.hasBorder,
70
- hasBorder = _ref$hasBorder === void 0 ? true : _ref$hasBorder;
70
+ hasBorder = _ref$hasBorder === void 0 ? true : _ref$hasBorder,
71
+ maxWidth = _ref.maxWidth;
71
72
  var dangerouslyHoistSlotSizes = (0, _react.useContext)(_hoistSlotSizesContext.DangerouslyHoistSlotSizes);
72
73
  var id = (0, _useLayoutId.useLayoutId)({
73
74
  providedId: providedId
@@ -166,20 +167,23 @@ function Panel(_ref) {
166
167
  var _sideNavRef$current$o, _sideNavRef$current;
167
168
  var sideNavWidth = (_sideNavRef$current$o = (_sideNavRef$current = sideNavRef.current) === null || _sideNavRef$current === void 0 ? void 0 : _sideNavRef$current.offsetWidth) !== null && _sideNavRef$current$o !== void 0 ? _sideNavRef$current$o : 0;
168
169
  /**
169
- * The panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
170
+ * By default the panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
170
171
  *
171
172
  * This maximum width is equivalent to half the viewport width, after removing the sidebar width.
173
+ *
174
+ * Consumers can opt in to a larger maximum via the `maxWidth` prop.
172
175
  */
173
- var maxWidth = Math.round((window.innerWidth - sideNavWidth) / 2);
176
+ var defaultMaxWidth = "".concat(Math.round((window.innerWidth - sideNavWidth) / 2), "px");
174
177
  return {
175
178
  min: "".concat(minWidth, "px"),
176
- max: "".concat(maxWidth, "px")
179
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : defaultMaxWidth
177
180
  };
178
- }, [minWidth, sideNavRef]);
181
+ }, [maxWidth, minWidth, sideNavRef]);
179
182
  var panelWidthSlotBounds = {
180
183
  min: "".concat(minWidth, "px"),
181
184
  // `sideNavLiveWidthVar` is not defined if the `SideNav` is not mounted, so we fallback to `0px`.
182
- max: "round(nearest, calc((100vw - var(".concat(_constants.sideNavLiveWidthVar, ", 0px)) / 2), 1px)")
185
+ // Consumers can opt in to a larger maximum via the `maxWidth` prop.
186
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : "round(nearest, calc((100vw - var(".concat(_constants.sideNavLiveWidthVar, ", 0px)) / 2), 1px)")
183
187
  };
184
188
  var panelVariableWidth = "clamp(".concat(panelWidthSlotBounds.min, ", ").concat(width, "px, ").concat(panelWidthSlotBounds.max, ")");
185
189
  (0, _useResizingWidthCssVarOnRootElement.useResizingWidthCssVarOnRootElement)({
@@ -10,7 +10,7 @@ exports.gridRootId = void 0;
10
10
  require("./root.compiled.css");
11
11
  var _runtime = require("@compiled/react/runtime");
12
12
  var _react = _interopRequireWildcard(require("react"));
13
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
13
+ var _openLayerObserver = require("@atlaskit/layering/open-layer-observer");
14
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
15
  var _skipLinksProvider = require("../../context/skip-links/skip-links-provider");
16
16
  var _topNavStartContextProvider = require("../../context/top-nav-start/top-nav-start-context-provider");
@@ -19,7 +19,8 @@ var _reactDom = require("react-dom");
19
19
  var _analyticsNext = require("@atlaskit/analytics-next");
20
20
  var _mergeRefs = _interopRequireDefault(require("@atlaskit/ds-lib/merge-refs"));
21
21
  var _useStableRef = _interopRequireDefault(require("@atlaskit/ds-lib/use-stable-ref"));
22
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
22
+ var _openLayerObserverNamespaceProvider = require("@atlaskit/layering/open-layer-observer-namespace-provider");
23
+ var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
23
24
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
24
25
  var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
25
26
  var _responsive = require("@atlaskit/primitives/responsive");
@@ -242,7 +243,7 @@ function SideNavInternal(_ref) {
242
243
  var toggleButtonElement = (0, _react.useContext)(_sideNavToggleButtonElement.SideNavToggleButtonElement);
243
244
  var topNavStartElement = (0, _react.useContext)(_topNavStartElement.TopNavStartElement);
244
245
  var devTimeOnlyAttributes = {};
245
- var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
246
+ var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
246
247
  var flyoutStateRef = (0, _react.useRef)({
247
248
  type: 'not-active'
248
249
  });
@@ -852,7 +853,7 @@ function SideNav(_ref9) {
852
853
  onPeekEnd = _ref9.onPeekEnd,
853
854
  canToggleWithShortcut = _ref9.canToggleWithShortcut,
854
855
  id = _ref9.id;
855
- return /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
856
+ return /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
856
857
  namespace: _constants.openLayerObserverSideNavNamespace
857
858
  }, /*#__PURE__*/_react.default.createElement(SideNavInternal, {
858
859
  defaultCollapsed: defaultCollapsed,
@@ -16,7 +16,7 @@ var _bindEventListener = require("bind-event-listener");
16
16
  var _analyticsNext = require("@atlaskit/analytics-next");
17
17
  var _sidebarCollapse = _interopRequireDefault(require("@atlaskit/icon/core/sidebar-collapse"));
18
18
  var _sidebarExpand = _interopRequireDefault(require("@atlaskit/icon/core/sidebar-expand"));
19
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
19
+ var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
20
20
  var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
21
21
  var _iconButton = require("../../top-nav-items/themed/icon-button");
22
22
  var _sideNavToggleButtonAttachRef = require("./side-nav-toggle-button-attach-ref");
@@ -101,7 +101,7 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
101
101
  });
102
102
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
103
103
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
104
- var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
104
+ var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
105
105
  var handleClick = (0, _react.useCallback)(function (event, analyticsEvent) {
106
106
  onClick === null || onClick === void 0 || onClick(event, analyticsEvent, {
107
107
  isSideNavVisible: isSideNavExpanded
@@ -8,7 +8,7 @@ exports.useSideNavToggleKeyboardShortcut = useSideNavToggleKeyboardShortcut;
8
8
  var _react = require("react");
9
9
  var _bindEventListener = require("bind-event-listener");
10
10
  var _useStableRef = _interopRequireDefault(require("@atlaskit/ds-lib/use-stable-ref"));
11
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
11
+ var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
12
12
  var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
13
13
  var _useIsSideNavShortcutEnabled = require("./use-is-side-nav-shortcut-enabled");
14
14
  var _useToggleSideNav = require("./use-toggle-side-nav");
@@ -18,7 +18,7 @@ var _useToggleSideNav = require("./use-toggle-side-nav");
18
18
  function useSideNavToggleKeyboardShortcut(_ref) {
19
19
  var canToggleWithShortcut = _ref.canToggleWithShortcut;
20
20
  var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
21
- var openLayerObserver = (0, _openLayerObserver.useOpenLayerObserver)();
21
+ var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
22
22
  var toggleVisibilityByShortcut = (0, _useToggleSideNav.useToggleSideNav)({
23
23
  trigger: 'keyboard'
24
24
  });
@@ -15,7 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
15
15
  var _react2 = require("@compiled/react");
16
16
  var _useLayoutEffect = require("@atlaskit/ds-lib/use-layout-effect");
17
17
  var _showMoreHorizontal = _interopRequireDefault(require("@atlaskit/icon/core/show-more-horizontal"));
18
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
18
+ var _openLayerObserverNamespaceProvider = require("@atlaskit/layering/open-layer-observer-namespace-provider");
19
19
  var _popup = _interopRequireDefault(require("@atlaskit/popup"));
20
20
  var _compiled = require("@atlaskit/primitives/compiled");
21
21
  var _list = require("../../../components/list");
@@ -86,7 +86,7 @@ function TopNavEnd(_ref) {
86
86
  value: false
87
87
  }, /*#__PURE__*/_react.default.createElement(_list.List, {
88
88
  xcss: (0, _react2.cx)(listStyles.root, listStyles.popupContainer)
89
- }, /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
89
+ }, /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
90
90
  namespace: _constants.openLayerObserverTopNavEndNamespace
91
91
  }, children)));
92
92
  },
@@ -103,7 +103,7 @@ function TopNavEnd(_ref) {
103
103
  }
104
104
  }) : /*#__PURE__*/_react.default.createElement(_list.List, {
105
105
  xcss: (0, _react2.cx)(listStyles.root, listStyles.hideOnSmallViewport)
106
- }, /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
106
+ }, /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
107
107
  namespace: _constants.openLayerObserverTopNavEndNamespace
108
108
  }, children)));
109
109
  }
@@ -9,7 +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 _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
12
+ var _openLayerObserverNamespaceProvider = require("@atlaskit/layering/open-layer-observer-namespace-provider");
13
13
  var _constants = require("../constants");
14
14
  var styles = {
15
15
  root: "_zulpu2gc _yyhycs5v _1bsb1osq _4cvr1h6o _1e0c1txw _1bahh9n0 _181n11p5 _1j8b15b0 _lagd1bp4 _1t4c1ris _12e8h9n0"
@@ -27,7 +27,7 @@ function TopNavMiddle(_ref) {
27
27
  var children = _ref.children;
28
28
  return /*#__PURE__*/_react.default.createElement("div", {
29
29
  className: (0, _runtime.ax)([styles.root])
30
- }, /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
30
+ }, /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
31
31
  namespace: _constants.openLayerObserverTopNavMiddleNamespace
32
32
  }, children));
33
33
  }
@@ -12,7 +12,7 @@ var _runtime = require("@compiled/react/runtime");
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _useStableRef = _interopRequireDefault(require("@atlaskit/ds-lib/use-stable-ref"));
15
- var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
15
+ var _openLayerObserverNamespaceProvider = require("@atlaskit/layering/open-layer-observer-namespace-provider");
16
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
17
  var _compiled = require("@atlaskit/primitives/compiled");
18
18
  var _topNavStartAttachRef = require("../../../context/top-nav-start/top-nav-start-attach-ref");
@@ -145,7 +145,7 @@ var TopNavStartInnerFHS = /*#__PURE__*/(0, _react.forwardRef)(function TopNavSta
145
145
  ref: ref,
146
146
  "data-testid": testId,
147
147
  className: (0, _runtime.ax)([innerStyles.root, isExpandedOnDesktop && innerStyles.fullHeightSidebarExpanded])
148
- }, /*#__PURE__*/_react.default.createElement(_openLayerObserver.OpenLayerObserverNamespaceProvider, {
148
+ }, /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
149
149
  namespace: _constants.openLayerObserverTopNavStartNamespace
150
150
  }, children)));
151
151
  });
@@ -9,7 +9,7 @@ import { createPortal } from 'react-dom';
9
9
  import invariant from 'tiny-invariant';
10
10
  import { useId } from '@atlaskit/ds-lib/use-id';
11
11
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
12
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
12
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
13
13
  import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
14
14
  import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
15
15
  import { blockDraggingToIFrames } from '@atlaskit/pragmatic-drag-and-drop/element/block-dragging-to-iframes';
@@ -1,6 +1,6 @@
1
1
  import React, { useContext, useEffect, useState } from 'react';
2
2
  import invariant from 'tiny-invariant';
3
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
3
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
4
4
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
5
5
  import { openLayerObserverSideNavNamespace, openLayerObserverTopNavEndNamespace, openLayerObserverTopNavMiddleNamespace, openLayerObserverTopNavStartNamespace, sideNavPanelSplitterId } from '../constants';
6
6
  import { useToggleSideNav } from '../side-nav/use-toggle-side-nav';
@@ -52,7 +52,8 @@ export function Panel({
52
52
  testId,
53
53
  id: providedId,
54
54
  xcss,
55
- hasBorder = true
55
+ hasBorder = true,
56
+ maxWidth
56
57
  }) {
57
58
  const dangerouslyHoistSlotSizes = useContext(DangerouslyHoistSlotSizes);
58
59
  const id = useLayoutId({
@@ -148,20 +149,23 @@ export function Panel({
148
149
  var _sideNavRef$current$o, _sideNavRef$current;
149
150
  const sideNavWidth = (_sideNavRef$current$o = (_sideNavRef$current = sideNavRef.current) === null || _sideNavRef$current === void 0 ? void 0 : _sideNavRef$current.offsetWidth) !== null && _sideNavRef$current$o !== void 0 ? _sideNavRef$current$o : 0;
150
151
  /**
151
- * The panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
152
+ * By default the panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
152
153
  *
153
154
  * This maximum width is equivalent to half the viewport width, after removing the sidebar width.
155
+ *
156
+ * Consumers can opt in to a larger maximum via the `maxWidth` prop.
154
157
  */
155
- const maxWidth = Math.round((window.innerWidth - sideNavWidth) / 2);
158
+ const defaultMaxWidth = `${Math.round((window.innerWidth - sideNavWidth) / 2)}px`;
156
159
  return {
157
160
  min: `${minWidth}px`,
158
- max: `${maxWidth}px`
161
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : defaultMaxWidth
159
162
  };
160
- }, [minWidth, sideNavRef]);
163
+ }, [maxWidth, minWidth, sideNavRef]);
161
164
  const panelWidthSlotBounds = {
162
165
  min: `${minWidth}px`,
163
166
  // `sideNavLiveWidthVar` is not defined if the `SideNav` is not mounted, so we fallback to `0px`.
164
- max: `round(nearest, calc((100vw - var(${sideNavLiveWidthVar}, 0px)) / 2), 1px)`
167
+ // Consumers can opt in to a larger maximum via the `maxWidth` prop.
168
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : `round(nearest, calc((100vw - var(${sideNavLiveWidthVar}, 0px)) / 2), 1px)`
165
169
  };
166
170
  const panelVariableWidth = `clamp(${panelWidthSlotBounds.min}, ${width}px, ${panelWidthSlotBounds.max})`;
167
171
  useResizingWidthCssVarOnRootElement({
@@ -2,7 +2,7 @@
2
2
  import "./root.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { useEffect, useRef } from 'react';
5
- import { OpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
5
+ import { OpenLayerObserver } from '@atlaskit/layering/open-layer-observer';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { SkipLinksProvider } from '../../context/skip-links/skip-links-provider';
8
8
  import { TopNavStartProvider } from '../../context/top-nav-start/top-nav-start-context-provider';
@@ -8,7 +8,8 @@ import { flushSync } from 'react-dom';
8
8
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
9
9
  import mergeRefs from '@atlaskit/ds-lib/merge-refs';
10
10
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
11
- import { OpenLayerObserverNamespaceProvider, useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
11
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
12
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
12
13
  import { fg } from '@atlaskit/platform-feature-flags';
13
14
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
14
15
  // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- TODO: migrate to @atlaskit/primitives/compiled
@@ -6,7 +6,7 @@ import { bind } from 'bind-event-listener';
6
6
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
7
7
  import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
8
8
  import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
9
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
9
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
10
10
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
11
11
  import { IconButton } from '../../top-nav-items/themed/icon-button';
12
12
  import { SideNavToggleButtonAttachRef } from './side-nav-toggle-button-attach-ref';
@@ -1,7 +1,7 @@
1
1
  import { useEffect } from 'react';
2
2
  import { bind } from 'bind-event-listener';
3
3
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
4
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
4
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
5
5
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
6
6
  import { useIsSideNavShortcutEnabled } from './use-is-side-nav-shortcut-enabled';
7
7
  import { useToggleSideNav } from './use-toggle-side-nav';
@@ -6,7 +6,7 @@ import React, { useState } from 'react';
6
6
  import { cx } from '@compiled/react';
7
7
  import { useLayoutEffect } from '@atlaskit/ds-lib/use-layout-effect';
8
8
  import ShowMoreHorizontalIcon from '@atlaskit/icon/core/show-more-horizontal';
9
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
9
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
10
10
  import Popup from '@atlaskit/popup';
11
11
  import { UNSAFE_useMediaQuery as useMediaQuery } from '@atlaskit/primitives/compiled';
12
12
  import { List } from '../../../components/list';
@@ -2,7 +2,7 @@
2
2
  import "./top-nav-middle.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React from 'react';
5
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
5
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
6
6
  import { openLayerObserverTopNavMiddleNamespace } from '../constants';
7
7
  const styles = {
8
8
  root: "_zulpu2gc _yyhycs5v _1bsb1osq _4cvr1h6o _1e0c1txw _1bahh9n0 _181n11p5 _1j8b15b0 _lagd1bp4 _1t4c1ris _12e8h9n0"
@@ -3,7 +3,7 @@ import "./top-nav-start.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { forwardRef, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';
5
5
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
6
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
6
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
8
  import { UNSAFE_useMediaQuery } from '@atlaskit/primitives/compiled';
9
9
  import { TopNavStartAttachRef } from '../../../context/top-nav-start/top-nav-start-attach-ref';
@@ -15,7 +15,7 @@ import { createPortal } from 'react-dom';
15
15
  import invariant from 'tiny-invariant';
16
16
  import { useId } from '@atlaskit/ds-lib/use-id';
17
17
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
18
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
18
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
19
19
  import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
20
20
  import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
21
21
  import { blockDraggingToIFrames } from '@atlaskit/pragmatic-drag-and-drop/element/block-dragging-to-iframes';
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import React, { useContext, useEffect, useState } from 'react';
3
3
  import invariant from 'tiny-invariant';
4
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
4
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
5
5
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
6
6
  import { openLayerObserverSideNavNamespace, openLayerObserverTopNavEndNamespace, openLayerObserverTopNavMiddleNamespace, openLayerObserverTopNavStartNamespace, sideNavPanelSplitterId } from '../constants';
7
7
  import { useToggleSideNav } from '../side-nav/use-toggle-side-nav';
@@ -58,7 +58,8 @@ export function Panel(_ref) {
58
58
  providedId = _ref.id,
59
59
  xcss = _ref.xcss,
60
60
  _ref$hasBorder = _ref.hasBorder,
61
- hasBorder = _ref$hasBorder === void 0 ? true : _ref$hasBorder;
61
+ hasBorder = _ref$hasBorder === void 0 ? true : _ref$hasBorder,
62
+ maxWidth = _ref.maxWidth;
62
63
  var dangerouslyHoistSlotSizes = useContext(DangerouslyHoistSlotSizes);
63
64
  var id = useLayoutId({
64
65
  providedId: providedId
@@ -157,20 +158,23 @@ export function Panel(_ref) {
157
158
  var _sideNavRef$current$o, _sideNavRef$current;
158
159
  var sideNavWidth = (_sideNavRef$current$o = (_sideNavRef$current = sideNavRef.current) === null || _sideNavRef$current === void 0 ? void 0 : _sideNavRef$current.offsetWidth) !== null && _sideNavRef$current$o !== void 0 ? _sideNavRef$current$o : 0;
159
160
  /**
160
- * The panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
161
+ * By default the panel should not resize larger than the page content, equivalent to the `Main` + `Aside` slots.
161
162
  *
162
163
  * This maximum width is equivalent to half the viewport width, after removing the sidebar width.
164
+ *
165
+ * Consumers can opt in to a larger maximum via the `maxWidth` prop.
163
166
  */
164
- var maxWidth = Math.round((window.innerWidth - sideNavWidth) / 2);
167
+ var defaultMaxWidth = "".concat(Math.round((window.innerWidth - sideNavWidth) / 2), "px");
165
168
  return {
166
169
  min: "".concat(minWidth, "px"),
167
- max: "".concat(maxWidth, "px")
170
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : defaultMaxWidth
168
171
  };
169
- }, [minWidth, sideNavRef]);
172
+ }, [maxWidth, minWidth, sideNavRef]);
170
173
  var panelWidthSlotBounds = {
171
174
  min: "".concat(minWidth, "px"),
172
175
  // `sideNavLiveWidthVar` is not defined if the `SideNav` is not mounted, so we fallback to `0px`.
173
- max: "round(nearest, calc((100vw - var(".concat(sideNavLiveWidthVar, ", 0px)) / 2), 1px)")
176
+ // Consumers can opt in to a larger maximum via the `maxWidth` prop.
177
+ max: maxWidth !== null && maxWidth !== void 0 ? maxWidth : "round(nearest, calc((100vw - var(".concat(sideNavLiveWidthVar, ", 0px)) / 2), 1px)")
174
178
  };
175
179
  var panelVariableWidth = "clamp(".concat(panelWidthSlotBounds.min, ", ").concat(width, "px, ").concat(panelWidthSlotBounds.max, ")");
176
180
  useResizingWidthCssVarOnRootElement({
@@ -2,7 +2,7 @@
2
2
  import "./root.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { useEffect, useRef } from 'react';
5
- import { OpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
5
+ import { OpenLayerObserver } from '@atlaskit/layering/open-layer-observer';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { SkipLinksProvider } from '../../context/skip-links/skip-links-provider';
8
8
  import { TopNavStartProvider } from '../../context/top-nav-start/top-nav-start-context-provider';
@@ -12,7 +12,8 @@ import { flushSync } from 'react-dom';
12
12
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
13
13
  import mergeRefs from '@atlaskit/ds-lib/merge-refs';
14
14
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
15
- import { OpenLayerObserverNamespaceProvider, useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
15
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
16
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
16
17
  import { fg } from '@atlaskit/platform-feature-flags';
17
18
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
18
19
  // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- TODO: migrate to @atlaskit/primitives/compiled
@@ -10,7 +10,7 @@ import { bind } from 'bind-event-listener';
10
10
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
11
11
  import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
12
12
  import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
13
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
13
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
14
14
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
15
15
  import { IconButton } from '../../top-nav-items/themed/icon-button';
16
16
  import { SideNavToggleButtonAttachRef } from './side-nav-toggle-button-attach-ref';
@@ -1,7 +1,7 @@
1
1
  import { useEffect } from 'react';
2
2
  import { bind } from 'bind-event-listener';
3
3
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
4
- import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
4
+ import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
5
5
  import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
6
6
  import { useIsSideNavShortcutEnabled } from './use-is-side-nav-shortcut-enabled';
7
7
  import { useToggleSideNav } from './use-toggle-side-nav';
@@ -7,7 +7,7 @@ import React, { useState } from 'react';
7
7
  import { cx } from '@compiled/react';
8
8
  import { useLayoutEffect } from '@atlaskit/ds-lib/use-layout-effect';
9
9
  import ShowMoreHorizontalIcon from '@atlaskit/icon/core/show-more-horizontal';
10
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
10
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
11
11
  import Popup from '@atlaskit/popup';
12
12
  import { UNSAFE_useMediaQuery as useMediaQuery } from '@atlaskit/primitives/compiled';
13
13
  import { List } from '../../../components/list';
@@ -2,7 +2,7 @@
2
2
  import "./top-nav-middle.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React from 'react';
5
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
5
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
6
6
  import { openLayerObserverTopNavMiddleNamespace } from '../constants';
7
7
  var styles = {
8
8
  root: "_zulpu2gc _yyhycs5v _1bsb1osq _4cvr1h6o _1e0c1txw _1bahh9n0 _181n11p5 _1j8b15b0 _lagd1bp4 _1t4c1ris _12e8h9n0"
@@ -4,7 +4,7 @@ import "./top-nav-start.compiled.css";
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import React, { forwardRef, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';
6
6
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
7
- import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/experimental/open-layer-observer';
7
+ import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
8
8
  import { fg } from '@atlaskit/platform-feature-flags';
9
9
  import { UNSAFE_useMediaQuery } from '@atlaskit/primitives/compiled';
10
10
  import { TopNavStartAttachRef } from '../../../context/top-nav-start/top-nav-start-attach-ref';
@@ -1,4 +1,5 @@
1
1
  import type { StrictXCSSProp } from '@atlaskit/css';
2
+ import type { ResizeBound } from './panel-splitter/types';
2
3
  import type { CommonSlotProps } from './types';
3
4
  /**
4
5
  * The Panel layout area is rendered to the right (inline end) of the Main area, or the Aside area if it is present.
@@ -7,7 +8,7 @@ import type { CommonSlotProps } from './types';
7
8
  *
8
9
  * You can optionally render a `PanelSplitter` as a child to make the panel area resizable.
9
10
  */
10
- export declare function Panel({ children, defaultWidth: defaultWidthProp, label, skipLinkLabel, testId, id: providedId, xcss, hasBorder, }: CommonSlotProps & {
11
+ export declare function Panel({ children, defaultWidth: defaultWidthProp, label, skipLinkLabel, testId, id: providedId, xcss, hasBorder, maxWidth, }: CommonSlotProps & {
11
12
  /**
12
13
  * The content of the layout area.
13
14
  */
@@ -25,6 +26,18 @@ export declare function Panel({ children, defaultWidth: defaultWidthProp, label,
25
26
  * in which case `400px` will be used as the minimum resizing width instead.
26
27
  */
27
28
  defaultWidth?: number;
29
+ /**
30
+ * Opt-in override for the maximum width the panel can be resized to, applied to both the rendered
31
+ * width and the resize bounds (mouse and keyboard).
32
+ *
33
+ * When omitted, the panel defaults to half the viewport width (after removing the sidebar width),
34
+ * which keeps it from growing larger than the page content. Provide a `vw` or `px` value (e.g.
35
+ * `'70vw'`) to allow a wider panel.
36
+ *
37
+ * This is currently used by Jira's Issue Navigator native issue preview panel; other consumers
38
+ * should leave it unset to keep the default cap.
39
+ */
40
+ maxWidth?: ResizeBound;
28
41
  /**
29
42
  * Bounded style overrides.
30
43
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/navigation-system",
3
- "version": "10.7.0",
3
+ "version": "10.8.0",
4
4
  "description": "The latest navigation system for Atlassian apps.",
5
5
  "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
6
6
  "author": "Atlassian Pty Ltd",
@@ -60,21 +60,21 @@
60
60
  "@atlaskit/css": "^1.0.0",
61
61
  "@atlaskit/ds-lib": "^8.0.0",
62
62
  "@atlaskit/icon": "^37.1.0",
63
- "@atlaskit/layering": "^4.1.0",
63
+ "@atlaskit/layering": "^5.0.0",
64
64
  "@atlaskit/logo": "^21.4.0",
65
65
  "@atlaskit/motion": "^7.5.0",
66
- "@atlaskit/platform-feature-flags": "^2.0.0",
66
+ "@atlaskit/platform-feature-flags": "^2.1.0",
67
67
  "@atlaskit/platform-feature-flags-react": "^1.1.0",
68
68
  "@atlaskit/popup": "^5.1.0",
69
69
  "@atlaskit/pragmatic-drag-and-drop": "^2.0.0",
70
- "@atlaskit/primitives": "^22.0.0",
70
+ "@atlaskit/primitives": "^22.2.0",
71
71
  "@atlaskit/react-compiler-gating": "^0.2.0",
72
72
  "@atlaskit/side-nav-items": "^2.3.0",
73
- "@atlaskit/tokens": "^16.1.0",
73
+ "@atlaskit/tokens": "^16.3.0",
74
74
  "@atlaskit/tooltip": "^23.1.0",
75
75
  "@atlaskit/visually-hidden": "^4.2.0",
76
76
  "@babel/runtime": "^7.0.0",
77
- "@compiled/react": "^0.22.2",
77
+ "@compiled/react": "^1.0.0",
78
78
  "bind-event-listener": "^3.0.0",
79
79
  "raf-schd": "^4.0.3",
80
80
  "tiny-invariant": "^1.2.0"
@@ -108,7 +108,7 @@
108
108
  "@atlaskit/skeleton": "^4.2.0",
109
109
  "@atlaskit/spotlight": "^3.0.0",
110
110
  "@atlaskit/textfield": "^9.1.0",
111
- "@atlaskit/top-layer": "^1.8.0",
111
+ "@atlaskit/top-layer": "^1.10.0",
112
112
  "@atlassian/feature-flags-test-utils": "^1.2.0",
113
113
  "@atlassian/gemini": "^1.51.0",
114
114
  "@atlassian/search-dialog": "^10.5.0",