@atlaskit/navigation-system 11.1.2 → 11.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlassian/navigation-system
2
2
 
3
+ ## 11.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`b536adef43f98`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b536adef43f98) -
8
+ Add a self-hiding Chat action with focus restoration and persistent TopNavEnd items behind
9
+ platform-dst-chat-panel-layout.
10
+
11
+ Persistent groups retain popup-layer protection and hide their complete accessible group when
12
+ inactive.
13
+
14
+ Persistent actions render last, after the other top-nav actions or their overflow button.
15
+
16
+ ## 11.1.3
17
+
18
+ ### Patch Changes
19
+
20
+ - [`dc134f854c5c0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dc134f854c5c0) -
21
+ Remove the platform-dst-keep-desired-fhs-features gate and enable the desired FHS behavior by
22
+ default.
23
+ - Updated dependencies
24
+
3
25
  ## 11.1.2
4
26
 
5
27
  ### Patch Changes
@@ -117,8 +117,7 @@ var MaybeTooltip = function MaybeTooltip(_ref2) {
117
117
  shortcut = _ref2.shortcut,
118
118
  children = _ref2.children,
119
119
  testId = _ref2.testId;
120
- var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
121
- if (tooltipContent && (isFhsEnabled || (0, _fg.fg)('platform-dst-keep-desired-fhs-features'))) {
120
+ if (tooltipContent) {
122
121
  return /*#__PURE__*/React.createElement(_Tooltip.default, {
123
122
  testId: testId,
124
123
  content: tooltipContent,
@@ -17,8 +17,6 @@ var _useAnalyticsEvents2 = require("@atlaskit/analytics-next/useAnalyticsEvents"
17
17
  var _sidebarCollapse = _interopRequireDefault(require("@atlaskit/icon/core/sidebar-collapse"));
18
18
  var _sidebarExpand = _interopRequireDefault(require("@atlaskit/icon/core/sidebar-expand"));
19
19
  var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
20
- var _fg = require("@atlaskit/platform-feature-flags/fg");
21
- var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
22
20
  var _iconButton = require("../../top-nav-items/themed/icon-button");
23
21
  var _sideNavToggleButtonAttachRef = require("./side-nav-toggle-button-attach-ref");
24
22
  var _sideNavToggleTooltipKeyboardShortcut = require("./side-nav-toggle-tooltip-keyboard-shortcut");
@@ -54,7 +52,6 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
54
52
  testId = _ref.testId,
55
53
  interactionName = _ref.interactionName,
56
54
  onClick = _ref.onClick;
57
- var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
58
55
  var _useSideNavVisibility = (0, _useSideNavVisibility2.useSideNavVisibility)({
59
56
  defaultCollapsed: defaultCollapsed
60
57
  }),
@@ -111,10 +108,8 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
111
108
  isSideNavVisible: isSideNavExpanded
112
109
  });
113
110
  toggleVisibility();
114
- if (isFhsEnabled || (0, _fg.fg)('platform-dst-keep-desired-fhs-features')) {
115
- openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
116
- }
117
- }, [isFhsEnabled, isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
111
+ openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
112
+ }, [isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
118
113
  var handlePointerEnter = (0, _react.useCallback)(function () {
119
114
  // Hovers don't do anything on mobile, so not capturing
120
115
  var isDesktop = window.matchMedia('(min-width: 64rem)').matches;
@@ -155,13 +150,10 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
155
150
  };
156
151
  var isShortcutEnabled = (0, _useIsSideNavShortcutEnabled.useIsSideNavShortcutEnabled)();
157
152
  var tooltipProps = (0, _react.useMemo)(function () {
158
- if (isFhsEnabled || (0, _fg.fg)('platform-dst-keep-desired-fhs-features')) {
159
- return _objectSpread(_objectSpread({}, toggleButtonTooltipOptions), {}, {
160
- shortcut: isShortcutEnabled ? _sideNavToggleTooltipKeyboardShortcut.sideNavToggleTooltipKeyboardShortcut : undefined
161
- });
162
- }
163
- return toggleButtonTooltipOptions;
164
- }, [isFhsEnabled, isShortcutEnabled]);
153
+ return _objectSpread(_objectSpread({}, toggleButtonTooltipOptions), {}, {
154
+ shortcut: isShortcutEnabled ? _sideNavToggleTooltipKeyboardShortcut.sideNavToggleTooltipKeyboardShortcut : undefined
155
+ });
156
+ }, [isShortcutEnabled]);
165
157
  return /*#__PURE__*/_react.default.createElement(_iconButton.IconButton, {
166
158
  appearance: "subtle",
167
159
  label: isSideNavExpanded ? collapseLabel : expandLabel,
@@ -9,8 +9,6 @@ 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
11
  var _useOpenLayerObserver = require("@atlaskit/layering/use-open-layer-observer");
12
- var _fg = require("@atlaskit/platform-feature-flags/fg");
13
- var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
14
12
  var _useIsSideNavShortcutEnabled = require("./use-is-side-nav-shortcut-enabled");
15
13
  var _useToggleSideNav = require("./use-toggle-side-nav");
16
14
  /**
@@ -18,7 +16,6 @@ var _useToggleSideNav = require("./use-toggle-side-nav");
18
16
  */
19
17
  function useSideNavToggleKeyboardShortcut(_ref) {
20
18
  var canToggleWithShortcut = _ref.canToggleWithShortcut;
21
- var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
22
19
  var openLayerObserver = (0, _useOpenLayerObserver.useOpenLayerObserver)();
23
20
  var toggleVisibilityByShortcut = (0, _useToggleSideNav.useToggleSideNav)({
24
21
  trigger: 'keyboard'
@@ -26,9 +23,6 @@ function useSideNavToggleKeyboardShortcut(_ref) {
26
23
  var canToggleWithShortcutStableRef = (0, _useStableRef.default)(canToggleWithShortcut);
27
24
  var isSideNavShortcutEnabled = (0, _useIsSideNavShortcutEnabled.useIsSideNavShortcutEnabled)();
28
25
  (0, _react.useEffect)(function () {
29
- if (!isFhsEnabled && !(0, _fg.fg)('platform-dst-keep-desired-fhs-features')) {
30
- return;
31
- }
32
26
  if (!isSideNavShortcutEnabled) {
33
27
  return;
34
28
  }
@@ -56,5 +50,5 @@ function useSideNavToggleKeyboardShortcut(_ref) {
56
50
  }
57
51
  }
58
52
  });
59
- }, [canToggleWithShortcutStableRef, isFhsEnabled, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
53
+ }, [canToggleWithShortcutStableRef, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
60
54
  }
@@ -16,6 +16,7 @@ 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
18
  var _openLayerObserverNamespaceProvider = require("@atlaskit/layering/open-layer-observer-namespace-provider");
19
+ var _fg = require("@atlaskit/platform-feature-flags/fg");
19
20
  var _popup = require("@atlaskit/popup/popup");
20
21
  var _compiled = require("@atlaskit/primitives/compiled");
21
22
  var _list = require("../../../components/list");
@@ -26,6 +27,7 @@ var _constants = require("../constants");
26
27
  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); }
27
28
  var containerStyles = {
28
29
  root: "_yyhy11wp _1e0c1txw _1bahh9n0 _1ul9zwfg _1d2y1ris _glte1ris _15rip2n4 _1gs5usvi _ndwch9n0",
30
+ withPersistentItems: "_zulp1b66 _4cvr1h6o",
29
31
  fullHeightSidebar: "_y4tiutpp"
30
32
  };
31
33
  var listStyles = {
@@ -44,10 +46,12 @@ var listStyles = {
44
46
  */
45
47
  function TopNavEnd(_ref) {
46
48
  var children = _ref.children,
49
+ persistentItems = _ref.persistentItems,
47
50
  _ref$label = _ref.label,
48
51
  label = _ref$label === void 0 ? 'Actions' : _ref$label,
49
52
  _ref$showMoreButtonLa = _ref.showMoreButtonLabel,
50
53
  showMoreButtonLabel = _ref$showMoreButtonLa === void 0 ? 'Show more' : _ref$showMoreButtonLa;
54
+ var hasPersistentItems = (0, _fg.fg)('platform-dst-chat-panel-layout') && persistentItems != null;
51
55
  var isFhsEnabled = (0, _useIsFhsEnabled.useIsFhsEnabled)();
52
56
  var _useState = (0, _react.useState)(false),
53
57
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -73,7 +77,7 @@ function TopNavEnd(_ref) {
73
77
  }, [query]);
74
78
  return /*#__PURE__*/_react.default.createElement("nav", {
75
79
  "aria-label": label,
76
- className: (0, _runtime.ax)([containerStyles.root, isFhsEnabled && containerStyles.fullHeightSidebar])
80
+ className: (0, _runtime.ax)([containerStyles.root, hasPersistentItems && containerStyles.withPersistentItems, isFhsEnabled && containerStyles.fullHeightSidebar])
77
81
  }, isMobile ? /*#__PURE__*/_react.default.createElement(_popup.Popup, {
78
82
  isOpen: isOpen,
79
83
  onClose: function onClose() {
@@ -105,5 +109,7 @@ function TopNavEnd(_ref) {
105
109
  xcss: (0, _react2.cx)(listStyles.root, listStyles.hideOnSmallViewport)
106
110
  }, /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
107
111
  namespace: _constants.openLayerObserverTopNavEndNamespace
108
- }, children)));
112
+ }, children)), hasPersistentItems && /*#__PURE__*/_react.default.createElement(_openLayerObserverNamespaceProvider.OpenLayerObserverNamespaceProvider, {
113
+ namespace: _constants.openLayerObserverTopNavEndNamespace
114
+ }, persistentItems));
109
115
  }
@@ -105,8 +105,7 @@ const MaybeTooltip = ({
105
105
  children,
106
106
  testId
107
107
  }) => {
108
- const isFhsEnabled = useIsFhsEnabled();
109
- if (tooltipContent && (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features'))) {
108
+ if (tooltipContent) {
110
109
  return /*#__PURE__*/React.createElement(Tooltip, {
111
110
  testId: testId,
112
111
  content: tooltipContent,
@@ -7,8 +7,6 @@ import { useAnalyticsEvents } from '@atlaskit/analytics-next/useAnalyticsEvents'
7
7
  import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
8
8
  import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
9
9
  import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
10
- import { fg } from '@atlaskit/platform-feature-flags/fg';
11
- import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
12
10
  import { IconButton } from '../../top-nav-items/themed/icon-button';
13
11
  import { SideNavToggleButtonAttachRef } from './side-nav-toggle-button-attach-ref';
14
12
  import { sideNavToggleTooltipKeyboardShortcut } from './side-nav-toggle-tooltip-keyboard-shortcut';
@@ -41,7 +39,6 @@ export const SideNavToggleButton = ({
41
39
  interactionName,
42
40
  onClick
43
41
  }) => {
44
- const isFhsEnabled = useIsFhsEnabled();
45
42
  const {
46
43
  isExpandedOnDesktop: isSideNavExpandedOnDesktop,
47
44
  isExpandedOnMobile: isSideNavExpandedOnMobile
@@ -95,10 +92,8 @@ export const SideNavToggleButton = ({
95
92
  isSideNavVisible: isSideNavExpanded
96
93
  });
97
94
  toggleVisibility();
98
- if (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features')) {
99
- openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.closeLayers();
100
- }
101
- }, [isFhsEnabled, isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
95
+ openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.closeLayers();
96
+ }, [isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
102
97
  const handlePointerEnter = useCallback(() => {
103
98
  // Hovers don't do anything on mobile, so not capturing
104
99
  const isDesktop = window.matchMedia('(min-width: 64rem)').matches;
@@ -136,15 +131,10 @@ export const SideNavToggleButton = ({
136
131
  className: ax(["_1e0c1bgi _lcxvglyw"])
137
132
  }, isSideNavExpanded ? /*#__PURE__*/React.createElement(SidebarCollapseIcon, props) : /*#__PURE__*/React.createElement(SidebarExpandIcon, props));
138
133
  const isShortcutEnabled = useIsSideNavShortcutEnabled();
139
- const tooltipProps = useMemo(() => {
140
- if (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features')) {
141
- return {
142
- ...toggleButtonTooltipOptions,
143
- shortcut: isShortcutEnabled ? sideNavToggleTooltipKeyboardShortcut : undefined
144
- };
145
- }
146
- return toggleButtonTooltipOptions;
147
- }, [isFhsEnabled, isShortcutEnabled]);
134
+ const tooltipProps = useMemo(() => ({
135
+ ...toggleButtonTooltipOptions,
136
+ shortcut: isShortcutEnabled ? sideNavToggleTooltipKeyboardShortcut : undefined
137
+ }), [isShortcutEnabled]);
148
138
  return /*#__PURE__*/React.createElement(IconButton, {
149
139
  appearance: "subtle",
150
140
  label: isSideNavExpanded ? collapseLabel : expandLabel,
@@ -2,8 +2,6 @@ import { useEffect } from 'react';
2
2
  import { bind } from 'bind-event-listener';
3
3
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
4
4
  import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
5
- import { fg } from '@atlaskit/platform-feature-flags/fg';
6
- import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
7
5
  import { useIsSideNavShortcutEnabled } from './use-is-side-nav-shortcut-enabled';
8
6
  import { useToggleSideNav } from './use-toggle-side-nav';
9
7
 
@@ -13,7 +11,6 @@ import { useToggleSideNav } from './use-toggle-side-nav';
13
11
  export function useSideNavToggleKeyboardShortcut({
14
12
  canToggleWithShortcut
15
13
  }) {
16
- const isFhsEnabled = useIsFhsEnabled();
17
14
  const openLayerObserver = useOpenLayerObserver();
18
15
  const toggleVisibilityByShortcut = useToggleSideNav({
19
16
  trigger: 'keyboard'
@@ -21,9 +18,6 @@ export function useSideNavToggleKeyboardShortcut({
21
18
  const canToggleWithShortcutStableRef = useStableRef(canToggleWithShortcut);
22
19
  const isSideNavShortcutEnabled = useIsSideNavShortcutEnabled();
23
20
  useEffect(() => {
24
- if (!isFhsEnabled && !fg('platform-dst-keep-desired-fhs-features')) {
25
- return;
26
- }
27
21
  if (!isSideNavShortcutEnabled) {
28
22
  return;
29
23
  }
@@ -51,5 +45,5 @@ export function useSideNavToggleKeyboardShortcut({
51
45
  }
52
46
  }
53
47
  });
54
- }, [canToggleWithShortcutStableRef, isFhsEnabled, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
48
+ }, [canToggleWithShortcutStableRef, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
55
49
  }
@@ -7,6 +7,7 @@ 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
9
  import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
10
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
10
11
  import { Popup } from '@atlaskit/popup/popup';
11
12
  import { UNSAFE_useMediaQuery as useMediaQuery } from '@atlaskit/primitives/compiled';
12
13
  import { List } from '../../../components/list';
@@ -16,6 +17,7 @@ import { IconButton } from '../../top-nav-items/themed/icon-button';
16
17
  import { openLayerObserverTopNavEndNamespace } from '../constants';
17
18
  const containerStyles = {
18
19
  root: "_yyhy11wp _1e0c1txw _1bahh9n0 _1ul9zwfg _1d2y1ris _glte1ris _15rip2n4 _1gs5usvi _ndwch9n0",
20
+ withPersistentItems: "_zulp1b66 _4cvr1h6o",
19
21
  fullHeightSidebar: "_y4tiutpp"
20
22
  };
21
23
  const listStyles = {
@@ -34,9 +36,11 @@ const listStyles = {
34
36
  */
35
37
  export function TopNavEnd({
36
38
  children,
39
+ persistentItems,
37
40
  label = 'Actions',
38
41
  showMoreButtonLabel = 'Show more'
39
42
  }) {
43
+ const hasPersistentItems = fg('platform-dst-chat-panel-layout') && persistentItems != null;
40
44
  const isFhsEnabled = useIsFhsEnabled();
41
45
  const [isOpen, setIsOpen] = useState(false);
42
46
  // Always setting to `false` for the initial render (will flip in an effect for mobile)
@@ -56,7 +60,7 @@ export function TopNavEnd({
56
60
  }, [query]);
57
61
  return /*#__PURE__*/React.createElement("nav", {
58
62
  "aria-label": label,
59
- className: ax([containerStyles.root, isFhsEnabled && containerStyles.fullHeightSidebar])
63
+ className: ax([containerStyles.root, hasPersistentItems && containerStyles.withPersistentItems, isFhsEnabled && containerStyles.fullHeightSidebar])
60
64
  }, isMobile ? /*#__PURE__*/React.createElement(Popup, {
61
65
  isOpen: isOpen,
62
66
  onClose: () => setIsOpen(false),
@@ -80,5 +84,7 @@ export function TopNavEnd({
80
84
  xcss: cx(listStyles.root, listStyles.hideOnSmallViewport)
81
85
  }, /*#__PURE__*/React.createElement(OpenLayerObserverNamespaceProvider, {
82
86
  namespace: openLayerObserverTopNavEndNamespace
83
- }, children)));
87
+ }, children)), hasPersistentItems && /*#__PURE__*/React.createElement(OpenLayerObserverNamespaceProvider, {
88
+ namespace: openLayerObserverTopNavEndNamespace
89
+ }, persistentItems));
84
90
  }
@@ -108,8 +108,7 @@ var MaybeTooltip = function MaybeTooltip(_ref2) {
108
108
  shortcut = _ref2.shortcut,
109
109
  children = _ref2.children,
110
110
  testId = _ref2.testId;
111
- var isFhsEnabled = useIsFhsEnabled();
112
- if (tooltipContent && (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features'))) {
111
+ if (tooltipContent) {
113
112
  return /*#__PURE__*/React.createElement(Tooltip, {
114
113
  testId: testId,
115
114
  content: tooltipContent,
@@ -11,8 +11,6 @@ import { useAnalyticsEvents } from '@atlaskit/analytics-next/useAnalyticsEvents'
11
11
  import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
12
12
  import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
13
13
  import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
14
- import { fg } from '@atlaskit/platform-feature-flags/fg';
15
- import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
16
14
  import { IconButton } from '../../top-nav-items/themed/icon-button';
17
15
  import { SideNavToggleButtonAttachRef } from './side-nav-toggle-button-attach-ref';
18
16
  import { sideNavToggleTooltipKeyboardShortcut } from './side-nav-toggle-tooltip-keyboard-shortcut';
@@ -45,7 +43,6 @@ export var SideNavToggleButton = function SideNavToggleButton(_ref) {
45
43
  testId = _ref.testId,
46
44
  interactionName = _ref.interactionName,
47
45
  onClick = _ref.onClick;
48
- var isFhsEnabled = useIsFhsEnabled();
49
46
  var _useSideNavVisibility = useSideNavVisibility({
50
47
  defaultCollapsed: defaultCollapsed
51
48
  }),
@@ -102,10 +99,8 @@ export var SideNavToggleButton = function SideNavToggleButton(_ref) {
102
99
  isSideNavVisible: isSideNavExpanded
103
100
  });
104
101
  toggleVisibility();
105
- if (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features')) {
106
- openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
107
- }
108
- }, [isFhsEnabled, isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
102
+ openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
103
+ }, [isSideNavExpanded, onClick, openLayerObserver, toggleVisibility]);
109
104
  var handlePointerEnter = useCallback(function () {
110
105
  // Hovers don't do anything on mobile, so not capturing
111
106
  var isDesktop = window.matchMedia('(min-width: 64rem)').matches;
@@ -146,13 +141,10 @@ export var SideNavToggleButton = function SideNavToggleButton(_ref) {
146
141
  };
147
142
  var isShortcutEnabled = useIsSideNavShortcutEnabled();
148
143
  var tooltipProps = useMemo(function () {
149
- if (isFhsEnabled || fg('platform-dst-keep-desired-fhs-features')) {
150
- return _objectSpread(_objectSpread({}, toggleButtonTooltipOptions), {}, {
151
- shortcut: isShortcutEnabled ? sideNavToggleTooltipKeyboardShortcut : undefined
152
- });
153
- }
154
- return toggleButtonTooltipOptions;
155
- }, [isFhsEnabled, isShortcutEnabled]);
144
+ return _objectSpread(_objectSpread({}, toggleButtonTooltipOptions), {}, {
145
+ shortcut: isShortcutEnabled ? sideNavToggleTooltipKeyboardShortcut : undefined
146
+ });
147
+ }, [isShortcutEnabled]);
156
148
  return /*#__PURE__*/React.createElement(IconButton, {
157
149
  appearance: "subtle",
158
150
  label: isSideNavExpanded ? collapseLabel : expandLabel,
@@ -2,8 +2,6 @@ import { useEffect } from 'react';
2
2
  import { bind } from 'bind-event-listener';
3
3
  import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
4
4
  import { useOpenLayerObserver } from '@atlaskit/layering/use-open-layer-observer';
5
- import { fg } from '@atlaskit/platform-feature-flags/fg';
6
- import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
7
5
  import { useIsSideNavShortcutEnabled } from './use-is-side-nav-shortcut-enabled';
8
6
  import { useToggleSideNav } from './use-toggle-side-nav';
9
7
 
@@ -12,7 +10,6 @@ import { useToggleSideNav } from './use-toggle-side-nav';
12
10
  */
13
11
  export function useSideNavToggleKeyboardShortcut(_ref) {
14
12
  var canToggleWithShortcut = _ref.canToggleWithShortcut;
15
- var isFhsEnabled = useIsFhsEnabled();
16
13
  var openLayerObserver = useOpenLayerObserver();
17
14
  var toggleVisibilityByShortcut = useToggleSideNav({
18
15
  trigger: 'keyboard'
@@ -20,9 +17,6 @@ export function useSideNavToggleKeyboardShortcut(_ref) {
20
17
  var canToggleWithShortcutStableRef = useStableRef(canToggleWithShortcut);
21
18
  var isSideNavShortcutEnabled = useIsSideNavShortcutEnabled();
22
19
  useEffect(function () {
23
- if (!isFhsEnabled && !fg('platform-dst-keep-desired-fhs-features')) {
24
- return;
25
- }
26
20
  if (!isSideNavShortcutEnabled) {
27
21
  return;
28
22
  }
@@ -50,5 +44,5 @@ export function useSideNavToggleKeyboardShortcut(_ref) {
50
44
  }
51
45
  }
52
46
  });
53
- }, [canToggleWithShortcutStableRef, isFhsEnabled, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
47
+ }, [canToggleWithShortcutStableRef, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
54
48
  }
@@ -8,6 +8,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
10
  import { OpenLayerObserverNamespaceProvider } from '@atlaskit/layering/open-layer-observer-namespace-provider';
11
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
11
12
  import { Popup } from '@atlaskit/popup/popup';
12
13
  import { UNSAFE_useMediaQuery as useMediaQuery } from '@atlaskit/primitives/compiled';
13
14
  import { List } from '../../../components/list';
@@ -17,6 +18,7 @@ import { IconButton } from '../../top-nav-items/themed/icon-button';
17
18
  import { openLayerObserverTopNavEndNamespace } from '../constants';
18
19
  var containerStyles = {
19
20
  root: "_yyhy11wp _1e0c1txw _1bahh9n0 _1ul9zwfg _1d2y1ris _glte1ris _15rip2n4 _1gs5usvi _ndwch9n0",
21
+ withPersistentItems: "_zulp1b66 _4cvr1h6o",
20
22
  fullHeightSidebar: "_y4tiutpp"
21
23
  };
22
24
  var listStyles = {
@@ -35,10 +37,12 @@ var listStyles = {
35
37
  */
36
38
  export function TopNavEnd(_ref) {
37
39
  var children = _ref.children,
40
+ persistentItems = _ref.persistentItems,
38
41
  _ref$label = _ref.label,
39
42
  label = _ref$label === void 0 ? 'Actions' : _ref$label,
40
43
  _ref$showMoreButtonLa = _ref.showMoreButtonLabel,
41
44
  showMoreButtonLabel = _ref$showMoreButtonLa === void 0 ? 'Show more' : _ref$showMoreButtonLa;
45
+ var hasPersistentItems = fg('platform-dst-chat-panel-layout') && persistentItems != null;
42
46
  var isFhsEnabled = useIsFhsEnabled();
43
47
  var _useState = useState(false),
44
48
  _useState2 = _slicedToArray(_useState, 2),
@@ -64,7 +68,7 @@ export function TopNavEnd(_ref) {
64
68
  }, [query]);
65
69
  return /*#__PURE__*/React.createElement("nav", {
66
70
  "aria-label": label,
67
- className: ax([containerStyles.root, isFhsEnabled && containerStyles.fullHeightSidebar])
71
+ className: ax([containerStyles.root, hasPersistentItems && containerStyles.withPersistentItems, isFhsEnabled && containerStyles.fullHeightSidebar])
68
72
  }, isMobile ? /*#__PURE__*/React.createElement(Popup, {
69
73
  isOpen: isOpen,
70
74
  onClose: function onClose() {
@@ -96,5 +100,7 @@ export function TopNavEnd(_ref) {
96
100
  xcss: cx(listStyles.root, listStyles.hideOnSmallViewport)
97
101
  }, /*#__PURE__*/React.createElement(OpenLayerObserverNamespaceProvider, {
98
102
  namespace: openLayerObserverTopNavEndNamespace
99
- }, children)));
103
+ }, children)), hasPersistentItems && /*#__PURE__*/React.createElement(OpenLayerObserverNamespaceProvider, {
104
+ namespace: openLayerObserverTopNavEndNamespace
105
+ }, persistentItems));
100
106
  }
@@ -17,7 +17,7 @@ type SideNavPanelSplitterProps = Omit<PanelSplitterProps, 'onDoubleClick' | 'too
17
17
  *
18
18
  * If the `isSideNavShortcutEnabled` prop is enabled on `<Root />`, the built-in keyboard shortcut will be displayed with the tooltip.
19
19
  *
20
- * Only used if `platform-dst-keep-desired-fhs-features` or `useIsFhsEnabled` is enabled.
20
+ * Used when the panel splitter tooltip is enabled.
21
21
  */
22
22
  tooltipContent?: PanelSplitterProps['tooltipContent'];
23
23
  };
@@ -65,8 +65,7 @@ export declare function Root({ children, xcss, UNSAFE_dangerouslyHoistSlotSizes,
65
65
  * is pressed, before the SideNav is toggled. You can use this to conditionally disable the shortcut based on your
66
66
  * your own custom checks, e.g. if there is a legacy dialog open.
67
67
  *
68
- * Note: The built-in keyboard shortcut is behind the `platform-dst-keep-desired-fhs-features`
69
- * feature gate, or `useIsFhsEnabled` for backwards compatibility.
68
+ * The built-in keyboard shortcut is available whenever this prop is enabled.
70
69
  */
71
70
  isSideNavShortcutEnabled?: boolean;
72
71
  }): JSX.Element;
@@ -11,13 +11,23 @@ import React from 'react';
11
11
  * On small viewports, the children will be placed inside a popup, and a button will be rendered to open the popup.
12
12
  * This is to prevent the actions from overflowing the top navigation.
13
13
  */
14
- export declare function TopNavEnd({ children, label, showMoreButtonLabel, }: {
14
+ export declare function TopNavEnd({ children, persistentItems, label, showMoreButtonLabel, }: {
15
15
  /**
16
16
  * The content of the layout area.
17
17
  *
18
18
  * Should contain top nav end item components like `Notifications`, `Help`, `LogIn` etc.
19
19
  */
20
20
  children: React.ReactNode;
21
+ /**
22
+ * Actions at the inline end, after the other actions or their overflow button,
23
+ * that stay in the top nav at every viewport size outside the overflow popup.
24
+ * Items stay mounted when the viewport changes. Consumers must ensure
25
+ * that this content fits on small screens. Supply complete accessible groups
26
+ * (lists containing list items), and hide each group at its outermost element
27
+ * so hidden or absent actions do not leave empty lists or spacing behind.
28
+ * Enabled behind `platform-dst-chat-panel-layout`.
29
+ */
30
+ persistentItems?: React.ReactNode;
21
31
  /**
22
32
  * Provide an accessible label, often used by screen readers.
23
33
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/navigation-system",
3
- "version": "11.1.2",
3
+ "version": "11.2.0",
4
4
  "description": "The latest navigation system for Atlassian apps.",
5
5
  "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
6
6
  "license": "Apache-2.0",
@@ -66,7 +66,7 @@
66
66
  "@atlaskit/icon": "^38.0.0",
67
67
  "@atlaskit/layering": "^6.0.0",
68
68
  "@atlaskit/logo": "^23.3.0",
69
- "@atlaskit/motion": "^9.1.0",
69
+ "@atlaskit/motion": "^9.3.0",
70
70
  "@atlaskit/platform-feature-flags": "^2.2.0",
71
71
  "@atlaskit/platform-feature-flags-react": "^1.2.0",
72
72
  "@atlaskit/popup": "^9.0.0",
@@ -74,7 +74,7 @@
74
74
  "@atlaskit/primitives": "^22.5.0",
75
75
  "@atlaskit/react-compiler-gating": "^0.2.0",
76
76
  "@atlaskit/side-nav-items": "^2.5.0",
77
- "@atlaskit/tokens": "^20.1.0",
77
+ "@atlaskit/tokens": "^20.3.0",
78
78
  "@atlaskit/tooltip": "^24.4.0",
79
79
  "@atlaskit/visually-hidden": "^4.4.0",
80
80
  "@babel/runtime": "^7.0.0",
@@ -96,7 +96,7 @@
96
96
  "@atlaskit/breadcrumbs": "^17.8.0",
97
97
  "@atlaskit/dropdown-menu": "^21.0.0",
98
98
  "@atlaskit/flag": "^19.0.0",
99
- "@atlaskit/form": "^18.0.0",
99
+ "@atlaskit/form": "^18.1.0",
100
100
  "@atlaskit/heading": "^8.0.0",
101
101
  "@atlaskit/image": "^5.2.0",
102
102
  "@atlaskit/inline-dialog": "^20.3.0",
@@ -116,13 +116,13 @@
116
116
  "@atlaskit/tabs": "^21.3.0",
117
117
  "@atlaskit/tag": "^17.0.0",
118
118
  "@atlaskit/textfield": "^10.2.0",
119
- "@atlaskit/top-layer": "^6.1.0",
119
+ "@atlaskit/top-layer": "^6.2.0",
120
120
  "@atlassian/feature-flags-test-utils": "^1.3.0",
121
121
  "@atlassian/gemini": "^1.54.0",
122
122
  "@atlassian/panel-system": "^1.12.0",
123
123
  "@atlassian/react-async": "^0.23.0",
124
124
  "@atlassian/react-entrypoint": "^1.1.0",
125
- "@atlassian/search-dialog": "^10.18.0",
125
+ "@atlassian/search-dialog": "^10.19.0",
126
126
  "@atlassian/ssr-tests": "workspace:^",
127
127
  "@atlassian/test-utils": "^1.1.0",
128
128
  "@atlassian/testing-library": "^0.11.0",
@@ -152,9 +152,6 @@
152
152
  "navx-full-height-sidebar": {
153
153
  "type": "boolean"
154
154
  },
155
- "platform-dst-keep-desired-fhs-features": {
156
- "type": "boolean"
157
- },
158
155
  "platform_dst_button_chevron_sizing": {
159
156
  "type": "boolean"
160
157
  },