@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 +22 -0
- package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +1 -2
- package/dist/cjs/ui/page-layout/side-nav/toggle-button.js +6 -14
- package/dist/cjs/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +1 -7
- package/dist/cjs/ui/page-layout/top-nav/top-nav-end.js +8 -2
- package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +1 -2
- package/dist/es2019/ui/page-layout/side-nav/toggle-button.js +6 -16
- package/dist/es2019/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +1 -7
- package/dist/es2019/ui/page-layout/top-nav/top-nav-end.js +8 -2
- package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +1 -2
- package/dist/esm/ui/page-layout/side-nav/toggle-button.js +6 -14
- package/dist/esm/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +1 -7
- package/dist/esm/ui/page-layout/top-nav/top-nav-end.js +8 -2
- package/dist/types/ui/page-layout/panel-splitter/side-nav-panel-splitter.d.ts +1 -1
- package/dist/types/ui/page-layout/root.d.ts +1 -2
- package/dist/types/ui/page-layout/top-nav/top-nav-end.d.ts +11 -1
- package/package.json +6 -9
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
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
106
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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,
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
},
|