@atlaskit/navigation-system 2.12.0 → 2.14.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 +31 -0
- package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +57 -29
- package/dist/cjs/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +6 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav.compiled.css +1 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav.js +3 -6
- package/dist/cjs/ui/page-layout/side-nav/toggle-button.js +14 -2
- package/dist/cjs/ui/top-nav-items/themed/button.js +29 -25
- package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +33 -4
- package/dist/es2019/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +6 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav.compiled.css +1 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav.js +3 -6
- package/dist/es2019/ui/page-layout/side-nav/toggle-button.js +13 -3
- package/dist/es2019/ui/top-nav-items/themed/button.js +29 -25
- package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +57 -29
- package/dist/esm/ui/page-layout/panel-splitter/side-nav-panel-splitter.js +6 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav.compiled.css +1 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav.js +3 -6
- package/dist/esm/ui/page-layout/side-nav/toggle-button.js +15 -3
- package/dist/esm/ui/top-nav-items/themed/button.js +29 -25
- package/dist/types/ui/menu-item/link-menu-item.d.ts +1 -17
- package/dist/types/ui/menu-item/menu-item.d.ts +19 -14
- package/dist/types/ui/menu-item/menu-list-item.d.ts +6 -5
- package/dist/types/ui/page-layout/panel-splitter/panel-splitter.d.ts +15 -1
- package/dist/types/ui/page-layout/panel-splitter/side-nav-panel-splitter.d.ts +1 -1
- package/dist/types/ui/page-layout/side-nav/toggle-button.d.ts +7 -1
- package/dist/types-ts4.5/ui/menu-item/link-menu-item.d.ts +1 -17
- package/dist/types-ts4.5/ui/menu-item/menu-item.d.ts +19 -14
- package/dist/types-ts4.5/ui/menu-item/menu-list-item.d.ts +6 -5
- package/dist/types-ts4.5/ui/page-layout/panel-splitter/panel-splitter.d.ts +15 -1
- package/dist/types-ts4.5/ui/page-layout/panel-splitter/side-nav-panel-splitter.d.ts +1 -1
- package/dist/types-ts4.5/ui/page-layout/side-nav/toggle-button.d.ts +7 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @atlassian/navigation-system
|
|
2
2
|
|
|
3
|
+
## 2.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`3ea3fab89f015`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3ea3fab89f015) -
|
|
8
|
+
`SideNavToggleButton` now supports displaying keyboard shortcuts in its tooltip through the
|
|
9
|
+
`shortcut` prop.
|
|
10
|
+
|
|
11
|
+
`PanelSplitter` can now display a tooltip with an optional keyboard shortcut on hover or focus. A
|
|
12
|
+
tooltip will be rendered when either the `tooltipContent` or `shortcut` prop is set.
|
|
13
|
+
|
|
14
|
+
These new props are currently behind the `platform-dst-tooltip-shortcuts` feature flag.
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
20
|
+
## 2.13.0
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- [`9d65ef412f30c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9d65ef412f30c) -
|
|
25
|
+
Cleans up the `platform_design_system_nav4_sidenav_border` feature gate. The side nav border is
|
|
26
|
+
now only applied when it does not have a shadow.
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- [`437668dfbdec9`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/437668dfbdec9) -
|
|
31
|
+
Add explicit types to a number of DST components
|
|
32
|
+
- Updated dependencies
|
|
33
|
+
|
|
3
34
|
## 2.12.0
|
|
4
35
|
|
|
5
36
|
### Minor Changes
|
|
@@ -26,6 +26,7 @@ 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");
|
|
27
27
|
var _disableNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
|
|
28
28
|
var _preventUnhandled = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
|
|
29
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
29
30
|
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
30
31
|
var _context = require("./context");
|
|
31
32
|
var _convertResizeBoundToPixels = require("./convert-resize-bound-to-pixels");
|
|
@@ -51,6 +52,24 @@ var panelSplitterDragDataSymbol = Symbol('panel-splitter-drag-data');
|
|
|
51
52
|
function signPanelSplitterDragData(data) {
|
|
52
53
|
return _objectSpread(_objectSpread({}, data), {}, (0, _defineProperty2.default)({}, panelSplitterDragDataSymbol, true));
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* A wrapper component that renders a tooltip if the tooltipContent or shortcut is provided.
|
|
57
|
+
*/
|
|
58
|
+
var MaybeTooltip = function MaybeTooltip(_ref) {
|
|
59
|
+
var tooltipContent = _ref.tooltipContent,
|
|
60
|
+
shortcut = _ref.shortcut,
|
|
61
|
+
children = _ref.children;
|
|
62
|
+
if ((tooltipContent || shortcut) && (0, _platformFeatureFlags.fg)('platform-dst-tooltip-shortcuts')) {
|
|
63
|
+
return /*#__PURE__*/React.createElement(_tooltip.default, {
|
|
64
|
+
content: tooltipContent,
|
|
65
|
+
shortcut: shortcut,
|
|
66
|
+
position: "mouse",
|
|
67
|
+
mousePosition: "right",
|
|
68
|
+
isScreenReaderAnnouncementDisabled: true
|
|
69
|
+
}, children);
|
|
70
|
+
}
|
|
71
|
+
return children;
|
|
72
|
+
};
|
|
54
73
|
function isPanelSplitterDragData(data) {
|
|
55
74
|
return data[panelSplitterDragDataSymbol] === true;
|
|
56
75
|
}
|
|
@@ -59,19 +78,21 @@ function getTextDirection(element) {
|
|
|
59
78
|
direction = _window$getComputedSt.direction;
|
|
60
79
|
return direction === 'rtl' ? 'rtl' : 'ltr';
|
|
61
80
|
}
|
|
62
|
-
var PortaledPanelSplitter = function PortaledPanelSplitter(
|
|
63
|
-
var label =
|
|
64
|
-
onResizeStart =
|
|
65
|
-
onResizeEnd =
|
|
66
|
-
testId =
|
|
67
|
-
panelId =
|
|
68
|
-
panelWidth =
|
|
69
|
-
onCompleteResize =
|
|
70
|
-
getResizeBounds =
|
|
71
|
-
panel =
|
|
72
|
-
portal =
|
|
73
|
-
resizingCssVar =
|
|
74
|
-
position =
|
|
81
|
+
var PortaledPanelSplitter = function PortaledPanelSplitter(_ref2) {
|
|
82
|
+
var label = _ref2.label,
|
|
83
|
+
onResizeStart = _ref2.onResizeStart,
|
|
84
|
+
onResizeEnd = _ref2.onResizeEnd,
|
|
85
|
+
testId = _ref2.testId,
|
|
86
|
+
panelId = _ref2.panelId,
|
|
87
|
+
panelWidth = _ref2.panelWidth,
|
|
88
|
+
onCompleteResize = _ref2.onCompleteResize,
|
|
89
|
+
getResizeBounds = _ref2.getResizeBounds,
|
|
90
|
+
panel = _ref2.panel,
|
|
91
|
+
portal = _ref2.portal,
|
|
92
|
+
resizingCssVar = _ref2.resizingCssVar,
|
|
93
|
+
position = _ref2.position,
|
|
94
|
+
tooltipContent = _ref2.tooltipContent,
|
|
95
|
+
shortcut = _ref2.shortcut;
|
|
75
96
|
var splitterRef = (0, _react.useRef)(null);
|
|
76
97
|
var labelId = (0, _useId.useId)();
|
|
77
98
|
// Separate state used for the input range width to remove the UI's dependency on the "persisted" layout state value being updated
|
|
@@ -108,8 +129,8 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
108
129
|
element: splitter
|
|
109
130
|
}), (0, _adapter.draggable)({
|
|
110
131
|
element: splitter,
|
|
111
|
-
onGenerateDragPreview: function onGenerateDragPreview(
|
|
112
|
-
var nativeSetDragImage =
|
|
132
|
+
onGenerateDragPreview: function onGenerateDragPreview(_ref3) {
|
|
133
|
+
var nativeSetDragImage = _ref3.nativeSetDragImage;
|
|
113
134
|
// We will be moving the line to indicate a drag. We can disable the native drag preview
|
|
114
135
|
(0, _disableNativeDragPreview.disableNativeDragPreview)({
|
|
115
136
|
nativeSetDragImage: nativeSetDragImage
|
|
@@ -136,8 +157,8 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
136
157
|
direction: getTextDirection(panel)
|
|
137
158
|
});
|
|
138
159
|
},
|
|
139
|
-
onDragStart: function onDragStart(
|
|
140
|
-
var source =
|
|
160
|
+
onDragStart: function onDragStart(_ref4) {
|
|
161
|
+
var source = _ref4.source;
|
|
141
162
|
(0, _tinyInvariant.default)(isPanelSplitterDragData(source.data));
|
|
142
163
|
onResizeStart === null || onResizeStart === void 0 || onResizeStart({
|
|
143
164
|
initialWidth: source.data.initialWidth
|
|
@@ -146,9 +167,9 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
146
167
|
// Close any open layers when the user starts resizing
|
|
147
168
|
openLayerObserver === null || openLayerObserver === void 0 || openLayerObserver.closeLayers();
|
|
148
169
|
},
|
|
149
|
-
onDrag: function onDrag(
|
|
150
|
-
var location =
|
|
151
|
-
source =
|
|
170
|
+
onDrag: function onDrag(_ref5) {
|
|
171
|
+
var location = _ref5.location,
|
|
172
|
+
source = _ref5.source;
|
|
152
173
|
(0, _tinyInvariant.default)(isPanelSplitterDragData(source.data));
|
|
153
174
|
var _source$data = source.data,
|
|
154
175
|
initialWidth = _source$data.initialWidth,
|
|
@@ -169,8 +190,8 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
169
190
|
panel.style.setProperty(resizingCssVar, resizingWidth);
|
|
170
191
|
source.data.resizingWidth = resizingWidth;
|
|
171
192
|
},
|
|
172
|
-
onDrop: function onDrop(
|
|
173
|
-
var source =
|
|
193
|
+
onDrop: function onDrop(_ref6) {
|
|
194
|
+
var source = _ref6.source;
|
|
174
195
|
(0, _tinyInvariant.default)(isPanelSplitterDragData(source.data));
|
|
175
196
|
_preventUnhandled.preventUnhandled.stop();
|
|
176
197
|
var finalWidth = (0, _getWidth.getPixelWidth)(panel);
|
|
@@ -281,6 +302,9 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
281
302
|
return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/React.createElement("div", {
|
|
282
303
|
"data-testid": testId ? "".concat(testId, "-container") : undefined,
|
|
283
304
|
className: (0, _runtime.ax)([containerStyles.root, position === 'start' && containerStyles.positionStart, position === 'end' && containerStyles.positionEnd])
|
|
305
|
+
}, /*#__PURE__*/React.createElement(MaybeTooltip, {
|
|
306
|
+
tooltipContent: tooltipContent,
|
|
307
|
+
shortcut: shortcut
|
|
284
308
|
}, /*#__PURE__*/React.createElement("div", {
|
|
285
309
|
ref: splitterRef,
|
|
286
310
|
"data-testid": testId,
|
|
@@ -301,7 +325,7 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
301
325
|
id: labelId
|
|
302
326
|
}, label)), /*#__PURE__*/React.createElement("span", {
|
|
303
327
|
className: (0, _runtime.ax)([lineStyles.root])
|
|
304
|
-
}))), portal);
|
|
328
|
+
})))), portal);
|
|
305
329
|
};
|
|
306
330
|
|
|
307
331
|
/**
|
|
@@ -319,11 +343,13 @@ var PortaledPanelSplitter = function PortaledPanelSplitter(_ref) {
|
|
|
319
343
|
* </SideNav>
|
|
320
344
|
* ```
|
|
321
345
|
*/
|
|
322
|
-
var PanelSplitter = exports.PanelSplitter = function PanelSplitter(
|
|
323
|
-
var label =
|
|
324
|
-
onResizeStart =
|
|
325
|
-
onResizeEnd =
|
|
326
|
-
testId =
|
|
346
|
+
var PanelSplitter = exports.PanelSplitter = function PanelSplitter(_ref7) {
|
|
347
|
+
var label = _ref7.label,
|
|
348
|
+
onResizeStart = _ref7.onResizeStart,
|
|
349
|
+
onResizeEnd = _ref7.onResizeEnd,
|
|
350
|
+
testId = _ref7.testId,
|
|
351
|
+
tooltipContent = _ref7.tooltipContent,
|
|
352
|
+
shortcut = _ref7.shortcut;
|
|
327
353
|
var _useState7 = (0, _react.useState)(null),
|
|
328
354
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
329
355
|
panel = _useState8[0],
|
|
@@ -437,6 +463,8 @@ var PanelSplitter = exports.PanelSplitter = function PanelSplitter(_ref6) {
|
|
|
437
463
|
onCompleteResize: onCompleteResize,
|
|
438
464
|
getResizeBounds: getResizeBounds,
|
|
439
465
|
resizingCssVar: resizingCssVar,
|
|
440
|
-
position: position
|
|
466
|
+
position: position,
|
|
467
|
+
tooltipContent: tooltipContent,
|
|
468
|
+
shortcut: shortcut
|
|
441
469
|
});
|
|
442
470
|
};
|
|
@@ -32,7 +32,9 @@ var SideNavPanelSplitter = exports.SideNavPanelSplitter = function SideNavPanelS
|
|
|
32
32
|
onResizeEnd = _ref.onResizeEnd,
|
|
33
33
|
testId = _ref.testId,
|
|
34
34
|
_ref$shouldCollapseOn = _ref.shouldCollapseOnDoubleClick,
|
|
35
|
-
shouldCollapseOnDoubleClick = _ref$shouldCollapseOn === void 0 ? true : _ref$shouldCollapseOn
|
|
35
|
+
shouldCollapseOnDoubleClick = _ref$shouldCollapseOn === void 0 ? true : _ref$shouldCollapseOn,
|
|
36
|
+
tooltipContent = _ref.tooltipContent,
|
|
37
|
+
shortcut = _ref.shortcut;
|
|
36
38
|
var context = (0, _react.useContext)(_context.PanelSplitterContext);
|
|
37
39
|
(0, _tinyInvariant.default)((context === null || context === void 0 ? void 0 : context.panelId) === _constants.sideNavPanelSplitterId, 'SideNavPanelSplitter must be rendered as a child of <SideNav />.');
|
|
38
40
|
var toggleSideNav = (0, _useToggleSideNav.useToggleSideNav)({
|
|
@@ -44,6 +46,8 @@ var SideNavPanelSplitter = exports.SideNavPanelSplitter = function SideNavPanelS
|
|
|
44
46
|
label: label,
|
|
45
47
|
onResizeStart: onResizeStart,
|
|
46
48
|
onResizeEnd: onResizeEnd,
|
|
47
|
-
testId: testId
|
|
49
|
+
testId: testId,
|
|
50
|
+
tooltipContent: tooltipContent,
|
|
51
|
+
shortcut: shortcut
|
|
48
52
|
}));
|
|
49
53
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
._nd5l1b6c{grid-area:main/aside/aside/aside}
|
|
3
3
|
._191wglyw{border-inline-start:none}
|
|
4
|
-
._t51z7r9e{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#091e4224)}
|
|
5
4
|
._t51zglyw{border-inline-end:none}._152timx3{inset-block-start:calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))}
|
|
6
5
|
._16qs1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}
|
|
7
6
|
._1bah1yb4{justify-content:space-between}
|
|
@@ -16,5 +15,5 @@
|
|
|
16
15
|
._kqsw1if8{position:sticky}
|
|
17
16
|
._vchhusvi{box-sizing:border-box}
|
|
18
17
|
@media (min-width:48rem){._14b5hc79{width:var(--n_snvRsz,var(--n_sNvw))}}
|
|
19
|
-
@media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._180k1wjm{inset-block-start:calc(var(--n_bnrM, 0px))}._26vxoned{padding-block-start:calc(var(--n_tNvM, 0px))}._1mt19dtb{margin-block-start:calc(var(--n_tNvM, 0px)*-1)}._dm2518uv{display:initial}._dm25glyw{display:none}.
|
|
18
|
+
@media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._180k1wjm{inset-block-start:calc(var(--n_bnrM, 0px))}._26vxoned{padding-block-start:calc(var(--n_tNvM, 0px))}._1mt19dtb{margin-block-start:calc(var(--n_tNvM, 0px)*-1)}._dm2518uv{display:initial}._dm25glyw{display:none}._qiln1gzg{grid-area:main}._p5clglyw{border-inline-end:none}._4ap31bhr{background-color:var(--ds-surface-overlay,#fff)}._scbp1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}._qilnk0mc{grid-area:side-nav}._p5cl7r9e{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#091e4224)}._4ap3vuon{background-color:var(--ds-surface,#fff)}._scbpglyw{box-shadow:none}}
|
|
20
19
|
@supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}}
|
|
@@ -51,11 +51,8 @@ function getResizeBounds() {
|
|
|
51
51
|
}
|
|
52
52
|
var openLayerObserverSideNavNamespace = 'side-nav';
|
|
53
53
|
var styles = {
|
|
54
|
-
root: "_nd5l1b6c _bfhk1bhr _16qs1cd0 _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _4ap3vuon _scbpglyw",
|
|
55
|
-
|
|
56
|
-
newBorder: "_191wglyw _t51zglyw _p5cl7r9e",
|
|
57
|
-
newBorderFlyoutOpen: "_p5clglyw",
|
|
58
|
-
flyoutOpen: "_qiln1gzg _4ap31bhr _scbp1cd0 _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
|
|
54
|
+
root: "_nd5l1b6c _191wglyw _t51zglyw _bfhk1bhr _16qs1cd0 _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5cl7r9e _4ap3vuon _scbpglyw",
|
|
55
|
+
flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp1cd0 _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
|
|
59
56
|
flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _139f8iot _1tpvfnf5 _sylc1a5r _1uwsjq3t",
|
|
60
57
|
flexContainer: "_4t3i1osq _1e0c1txw _2lx21bp4 _1bah1yb4",
|
|
61
58
|
hiddenMobileAndDesktop: "_1e0cglyw",
|
|
@@ -583,7 +580,7 @@ function SideNavInternal(_ref) {
|
|
|
583
580
|
style: (0, _defineProperty2.default)({}, _constants.sideNavVar, clampedWidth),
|
|
584
581
|
ref: mergedRef,
|
|
585
582
|
"data-testid": testId,
|
|
586
|
-
className: (0, _runtime.ax)([styles.root,
|
|
583
|
+
className: (0, _runtime.ax)([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && styles.flyoutAnimateClosed, isFlyoutClosed && (0, _platformFeatureFlags.fg)('navx-full-height-sidebar') && styles.fullHeightSidebar])
|
|
587
584
|
}), /*#__PURE__*/React.createElement(_hoistUtils.DangerouslyHoistCssVarToDocumentRoot, {
|
|
588
585
|
variableName: _constants.sideNavLiveWidthVar,
|
|
589
586
|
value: "0px",
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.SideNavToggleButton = void 0;
|
|
10
10
|
require("./toggle-button.compiled.css");
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
13
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
15
|
var _bindEventListener = require("bind-event-listener");
|
|
@@ -20,6 +21,8 @@ var _toggleButtonContext = require("./toggle-button-context");
|
|
|
20
21
|
var _useSideNavVisibility2 = require("./use-side-nav-visibility");
|
|
21
22
|
var _useToggleSideNav = require("./use-toggle-side-nav");
|
|
22
23
|
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); }
|
|
24
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
25
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
26
|
var toggleButtonTooltipOptions = {
|
|
24
27
|
// We're disabling pointer events on the tooltip to prevent it from blocking mouse events, so that the side nav flyout stays open
|
|
25
28
|
// when moving the mouse from the top bar to the side nav.
|
|
@@ -47,7 +50,8 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
|
|
|
47
50
|
collapseLabel = _ref.collapseLabel,
|
|
48
51
|
testId = _ref.testId,
|
|
49
52
|
interactionName = _ref.interactionName,
|
|
50
|
-
onClick = _ref.onClick
|
|
53
|
+
onClick = _ref.onClick,
|
|
54
|
+
shortcut = _ref.shortcut;
|
|
51
55
|
var _useSideNavVisibility = (0, _useSideNavVisibility2.useSideNavVisibility)({
|
|
52
56
|
defaultCollapsed: defaultCollapsed
|
|
53
57
|
}),
|
|
@@ -111,6 +115,14 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
|
|
|
111
115
|
className: (0, _runtime.ax)(["_1e0c1bgi _lcxvglyw"])
|
|
112
116
|
}, isSideNavExpanded ? /*#__PURE__*/_react.default.createElement(_sidebarCollapse.default, props) : /*#__PURE__*/_react.default.createElement(_sidebarExpand.default, props));
|
|
113
117
|
};
|
|
118
|
+
var tooltipProps = (0, _react.useMemo)(function () {
|
|
119
|
+
if ((0, _platformFeatureFlags.fg)('platform-dst-tooltip-shortcuts')) {
|
|
120
|
+
return _objectSpread(_objectSpread({}, toggleButtonTooltipOptions), {}, {
|
|
121
|
+
shortcut: shortcut
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return toggleButtonTooltipOptions;
|
|
125
|
+
}, [shortcut]);
|
|
114
126
|
var iconButton = /*#__PURE__*/_react.default.createElement(_migration.IconButton, {
|
|
115
127
|
appearance: "subtle",
|
|
116
128
|
label: isSideNavExpanded ? collapseLabel : expandLabel,
|
|
@@ -120,7 +132,7 @@ var SideNavToggleButton = exports.SideNavToggleButton = function SideNavToggleBu
|
|
|
120
132
|
isTooltipDisabled: false,
|
|
121
133
|
interactionName: interactionName,
|
|
122
134
|
ref: (0, _platformFeatureFlags.fg)('platform_fix_component_state_update_for_suspense') ? elementRef : ref,
|
|
123
|
-
tooltip:
|
|
135
|
+
tooltip: tooltipProps
|
|
124
136
|
});
|
|
125
137
|
var isInsideSlot = (0, _react.useContext)(_toggleButtonContext.SideNavToggleButtonSlotContext);
|
|
126
138
|
|
|
@@ -132,16 +132,7 @@ var ThemedPressable = /*#__PURE__*/(0, _react.forwardRef)(function ThemedPressab
|
|
|
132
132
|
isDisabled: isDisabled
|
|
133
133
|
}));
|
|
134
134
|
});
|
|
135
|
-
|
|
136
|
-
* Intentionally an almost-duplicate of `ThemedPressable` - make sure to update both.
|
|
137
|
-
*
|
|
138
|
-
* More 'clever' solutions were tried but I couldn't get them working in an acceptable state.
|
|
139
|
-
*
|
|
140
|
-
* Polymorphism had many typing issues and required sacrificing type safety.
|
|
141
|
-
*
|
|
142
|
-
* Render props had problems passing down styles through `xcss` to the `children` function.
|
|
143
|
-
*/
|
|
144
|
-
var ThemedAnchor = (0, _forwardRefWithGeneric.default)(function ThemedAnchor(_ref3, ref) {
|
|
135
|
+
function ThemedAnchorFn(_ref3, ref) {
|
|
145
136
|
var _ref3$appearance = _ref3.appearance,
|
|
146
137
|
appearance = _ref3$appearance === void 0 ? 'default' : _ref3$appearance,
|
|
147
138
|
_ref3$shape = _ref3.shape,
|
|
@@ -161,7 +152,17 @@ var ThemedAnchor = (0, _forwardRefWithGeneric.default)(function ThemedAnchor(_re
|
|
|
161
152
|
,
|
|
162
153
|
xcss: (0, _react2.cx)(styles.root, shapeStyles[shape], hasBorder && styles.border, appearanceStyles[appearance], isSelected && styles.selected, isDisabled && styles.disabled)
|
|
163
154
|
}));
|
|
164
|
-
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Intentionally an almost-duplicate of `ThemedPressable` - make sure to update both.
|
|
158
|
+
*
|
|
159
|
+
* More 'clever' solutions were tried but I couldn't get them working in an acceptable state.
|
|
160
|
+
*
|
|
161
|
+
* Polymorphism had many typing issues and required sacrificing type safety.
|
|
162
|
+
*
|
|
163
|
+
* Render props had problems passing down styles through `xcss` to the `children` function.
|
|
164
|
+
*/
|
|
165
|
+
var ThemedAnchor = (0, _forwardRefWithGeneric.default)(ThemedAnchorFn);
|
|
165
166
|
var textButtonStyles = {
|
|
166
167
|
iconBefore: "_vwz4idpf",
|
|
167
168
|
text: "_k48p1wq8"
|
|
@@ -191,12 +192,7 @@ var ThemedButton = exports.ThemedButton = /*#__PURE__*/(0, _react.forwardRef)(fu
|
|
|
191
192
|
className: (0, _runtime.ax)([textButtonStyles.text])
|
|
192
193
|
}, children));
|
|
193
194
|
});
|
|
194
|
-
|
|
195
|
-
* __Themed link button__
|
|
196
|
-
*
|
|
197
|
-
* A themed link button for the top bar.
|
|
198
|
-
*/
|
|
199
|
-
var ThemedLinkButton = exports.ThemedLinkButton = (0, _forwardRefWithGeneric.default)(function ThemedLinkButton(_ref5, ref) {
|
|
195
|
+
function ThemedLinkButtonFn(_ref5, ref) {
|
|
200
196
|
var IconBefore = _ref5.iconBefore,
|
|
201
197
|
children = _ref5.children,
|
|
202
198
|
props = (0, _objectWithoutProperties2.default)(_ref5, _excluded5);
|
|
@@ -210,7 +206,13 @@ var ThemedLinkButton = exports.ThemedLinkButton = (0, _forwardRefWithGeneric.def
|
|
|
210
206
|
})), /*#__PURE__*/_react.default.createElement("span", {
|
|
211
207
|
className: (0, _runtime.ax)([textButtonStyles.text])
|
|
212
208
|
}, children));
|
|
213
|
-
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* __Themed link button__
|
|
212
|
+
*
|
|
213
|
+
* A themed link button for the top bar.
|
|
214
|
+
*/
|
|
215
|
+
var ThemedLinkButton = exports.ThemedLinkButton = (0, _forwardRefWithGeneric.default)(ThemedLinkButtonFn);
|
|
214
216
|
|
|
215
217
|
/**
|
|
216
218
|
* Props shared by `ThemedIconButtonProps` and `ThemedLinkIconButton`
|
|
@@ -283,12 +285,7 @@ var ThemedIconButton = exports.ThemedIconButton = /*#__PURE__*/(0, _react.forwar
|
|
|
283
285
|
);
|
|
284
286
|
});
|
|
285
287
|
});
|
|
286
|
-
|
|
287
|
-
* __Themed link icon button__
|
|
288
|
-
*
|
|
289
|
-
* A themed link icon button for the top bar.
|
|
290
|
-
*/
|
|
291
|
-
var ThemedLinkIconButton = exports.ThemedLinkIconButton = (0, _forwardRefWithGeneric.default)(function ThemedLinkIconButton(_ref7, ref) {
|
|
288
|
+
function ThemedLinkIconButtonFn(_ref7, ref) {
|
|
292
289
|
var _tooltip$content2;
|
|
293
290
|
var Icon = _ref7.icon,
|
|
294
291
|
label = _ref7.label,
|
|
@@ -349,4 +346,11 @@ var ThemedLinkIconButton = exports.ThemedLinkIconButton = (0, _forwardRefWithGen
|
|
|
349
346
|
}), /*#__PURE__*/_react.default.createElement(_visuallyHidden.default, null, label))
|
|
350
347
|
);
|
|
351
348
|
});
|
|
352
|
-
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* __Themed link icon button__
|
|
353
|
+
*
|
|
354
|
+
* A themed link icon button for the top bar.
|
|
355
|
+
*/
|
|
356
|
+
var ThemedLinkIconButton = exports.ThemedLinkIconButton = (0, _forwardRefWithGeneric.default)(ThemedLinkIconButtonFn);
|
|
@@ -15,6 +15,7 @@ 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';
|
|
16
16
|
import { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';
|
|
17
17
|
import { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';
|
|
18
|
+
import Tooltip from '@atlaskit/tooltip';
|
|
18
19
|
import VisuallyHidden from '@atlaskit/visually-hidden';
|
|
19
20
|
import { OnDoubleClickContext, PanelSplitterContext } from './context';
|
|
20
21
|
import { convertResizeBoundToPixels } from './convert-resize-bound-to-pixels';
|
|
@@ -40,6 +41,25 @@ function signPanelSplitterDragData(data) {
|
|
|
40
41
|
[panelSplitterDragDataSymbol]: true
|
|
41
42
|
};
|
|
42
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* A wrapper component that renders a tooltip if the tooltipContent or shortcut is provided.
|
|
46
|
+
*/
|
|
47
|
+
const MaybeTooltip = ({
|
|
48
|
+
tooltipContent,
|
|
49
|
+
shortcut,
|
|
50
|
+
children
|
|
51
|
+
}) => {
|
|
52
|
+
if ((tooltipContent || shortcut) && fg('platform-dst-tooltip-shortcuts')) {
|
|
53
|
+
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
54
|
+
content: tooltipContent,
|
|
55
|
+
shortcut: shortcut,
|
|
56
|
+
position: "mouse",
|
|
57
|
+
mousePosition: "right",
|
|
58
|
+
isScreenReaderAnnouncementDisabled: true
|
|
59
|
+
}, children);
|
|
60
|
+
}
|
|
61
|
+
return children;
|
|
62
|
+
};
|
|
43
63
|
export function isPanelSplitterDragData(data) {
|
|
44
64
|
return data[panelSplitterDragDataSymbol] === true;
|
|
45
65
|
}
|
|
@@ -61,7 +81,9 @@ const PortaledPanelSplitter = ({
|
|
|
61
81
|
panel,
|
|
62
82
|
portal,
|
|
63
83
|
resizingCssVar,
|
|
64
|
-
position
|
|
84
|
+
position,
|
|
85
|
+
tooltipContent,
|
|
86
|
+
shortcut
|
|
65
87
|
}) => {
|
|
66
88
|
const splitterRef = useRef(null);
|
|
67
89
|
const labelId = useId();
|
|
@@ -259,6 +281,9 @@ const PortaledPanelSplitter = ({
|
|
|
259
281
|
return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement("div", {
|
|
260
282
|
"data-testid": testId ? `${testId}-container` : undefined,
|
|
261
283
|
className: ax([containerStyles.root, position === 'start' && containerStyles.positionStart, position === 'end' && containerStyles.positionEnd])
|
|
284
|
+
}, /*#__PURE__*/React.createElement(MaybeTooltip, {
|
|
285
|
+
tooltipContent: tooltipContent,
|
|
286
|
+
shortcut: shortcut
|
|
262
287
|
}, /*#__PURE__*/React.createElement("div", {
|
|
263
288
|
ref: splitterRef,
|
|
264
289
|
"data-testid": testId,
|
|
@@ -279,7 +304,7 @@ const PortaledPanelSplitter = ({
|
|
|
279
304
|
id: labelId
|
|
280
305
|
}, label)), /*#__PURE__*/React.createElement("span", {
|
|
281
306
|
className: ax([lineStyles.root])
|
|
282
|
-
}))), portal);
|
|
307
|
+
})))), portal);
|
|
283
308
|
};
|
|
284
309
|
|
|
285
310
|
/**
|
|
@@ -301,7 +326,9 @@ export const PanelSplitter = ({
|
|
|
301
326
|
label,
|
|
302
327
|
onResizeStart,
|
|
303
328
|
onResizeEnd,
|
|
304
|
-
testId
|
|
329
|
+
testId,
|
|
330
|
+
tooltipContent,
|
|
331
|
+
shortcut
|
|
305
332
|
}) => {
|
|
306
333
|
const [panel, setPanel] = useState(null);
|
|
307
334
|
const [portal, setPortal] = useState(null);
|
|
@@ -412,6 +439,8 @@ export const PanelSplitter = ({
|
|
|
412
439
|
onCompleteResize: onCompleteResize,
|
|
413
440
|
getResizeBounds: getResizeBounds,
|
|
414
441
|
resizingCssVar: resizingCssVar,
|
|
415
|
-
position: position
|
|
442
|
+
position: position,
|
|
443
|
+
tooltipContent: tooltipContent,
|
|
444
|
+
shortcut: shortcut
|
|
416
445
|
});
|
|
417
446
|
};
|
|
@@ -22,7 +22,9 @@ export const SideNavPanelSplitter = ({
|
|
|
22
22
|
onResizeStart,
|
|
23
23
|
onResizeEnd,
|
|
24
24
|
testId,
|
|
25
|
-
shouldCollapseOnDoubleClick = true
|
|
25
|
+
shouldCollapseOnDoubleClick = true,
|
|
26
|
+
tooltipContent,
|
|
27
|
+
shortcut
|
|
26
28
|
}) => {
|
|
27
29
|
const context = useContext(PanelSplitterContext);
|
|
28
30
|
invariant((context === null || context === void 0 ? void 0 : context.panelId) === sideNavPanelSplitterId, 'SideNavPanelSplitter must be rendered as a child of <SideNav />.');
|
|
@@ -35,6 +37,8 @@ export const SideNavPanelSplitter = ({
|
|
|
35
37
|
label: label,
|
|
36
38
|
onResizeStart: onResizeStart,
|
|
37
39
|
onResizeEnd: onResizeEnd,
|
|
38
|
-
testId: testId
|
|
40
|
+
testId: testId,
|
|
41
|
+
tooltipContent: tooltipContent,
|
|
42
|
+
shortcut: shortcut
|
|
39
43
|
}));
|
|
40
44
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
._nd5l1b6c{grid-area:main/aside/aside/aside}
|
|
3
3
|
._191wglyw{border-inline-start:none}
|
|
4
|
-
._t51z7r9e{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#091e4224)}
|
|
5
4
|
._t51zglyw{border-inline-end:none}._152timx3{inset-block-start:calc(var(--n_bnrM, 0px) + var(--n_tNvM, 0px))}
|
|
6
5
|
._16qs1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}
|
|
7
6
|
._1bah1yb4{justify-content:space-between}
|
|
@@ -16,5 +15,5 @@
|
|
|
16
15
|
._kqsw1if8{position:sticky}
|
|
17
16
|
._vchhusvi{box-sizing:border-box}
|
|
18
17
|
@media (min-width:48rem){._14b5hc79{width:var(--n_snvRsz,var(--n_sNvw))}}
|
|
19
|
-
@media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._180k1wjm{inset-block-start:calc(var(--n_bnrM, 0px))}._26vxoned{padding-block-start:calc(var(--n_tNvM, 0px))}._1mt19dtb{margin-block-start:calc(var(--n_tNvM, 0px)*-1)}._dm2518uv{display:initial}._dm25glyw{display:none}.
|
|
18
|
+
@media (min-width:64rem){._165t56xv{height:calc(100vh - var(--n_bnrM, 0px))}._180k1wjm{inset-block-start:calc(var(--n_bnrM, 0px))}._26vxoned{padding-block-start:calc(var(--n_tNvM, 0px))}._1mt19dtb{margin-block-start:calc(var(--n_tNvM, 0px)*-1)}._dm2518uv{display:initial}._dm25glyw{display:none}._qiln1gzg{grid-area:main}._p5clglyw{border-inline-end:none}._4ap31bhr{background-color:var(--ds-surface-overlay,#fff)}._scbp1cd0{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #091e4226,0 0 1px #091e424f)}._qilnk0mc{grid-area:side-nav}._p5cl7r9e{border-inline-end:var(--ds-border-width,1px) solid var(--ds-border,#091e4224)}._4ap3vuon{background-color:var(--ds-surface,#fff)}._scbpglyw{box-shadow:none}}
|
|
20
19
|
@supports not (-moz-appearance:none){@media (prefers-reduced-motion:no-preference){._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}._1uwsjq3t{transform:translateX(-100%)}}@media (prefers-reduced-motion:no-preference){@starting-style{._oyeijq3t{transform:translateX(-100%)}}._139f8iot{transition-property:transform,display}._1tpvfnf5{transition-duration:.2s}._sylc1a5r{transition-behavior:allow-discrete}}}
|
|
@@ -38,11 +38,8 @@ function getResizeBounds() {
|
|
|
38
38
|
}
|
|
39
39
|
const openLayerObserverSideNavNamespace = 'side-nav';
|
|
40
40
|
const styles = {
|
|
41
|
-
root: "_nd5l1b6c _bfhk1bhr _16qs1cd0 _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _4ap3vuon _scbpglyw",
|
|
42
|
-
|
|
43
|
-
newBorder: "_191wglyw _t51zglyw _p5cl7r9e",
|
|
44
|
-
newBorderFlyoutOpen: "_p5clglyw",
|
|
45
|
-
flyoutOpen: "_qiln1gzg _4ap31bhr _scbp1cd0 _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
|
|
41
|
+
root: "_nd5l1b6c _191wglyw _t51zglyw _bfhk1bhr _16qs1cd0 _vchhusvi _4t3ieqxy _152timx3 _kqsw1if8 _1bsb1ego _1pbycs5v _14b5hc79 _qilnk0mc _p5cl7r9e _4ap3vuon _scbpglyw",
|
|
42
|
+
flyoutOpen: "_qiln1gzg _p5clglyw _4ap31bhr _scbp1cd0 _139f8iot _1tpvfnf5 _sylc1a5r _oyeijq3t",
|
|
46
43
|
flyoutAnimateClosed: "_1e0cglyw _qiln1gzg _139f8iot _1tpvfnf5 _sylc1a5r _1uwsjq3t",
|
|
47
44
|
flexContainer: "_4t3i1osq _1e0c1txw _2lx21bp4 _1bah1yb4",
|
|
48
45
|
hiddenMobileAndDesktop: "_1e0cglyw",
|
|
@@ -575,7 +572,7 @@ function SideNavInternal({
|
|
|
575
572
|
},
|
|
576
573
|
ref: mergedRef,
|
|
577
574
|
"data-testid": testId,
|
|
578
|
-
className: ax([styles.root,
|
|
575
|
+
className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && styles.flyoutAnimateClosed, isFlyoutClosed && fg('navx-full-height-sidebar') && styles.fullHeightSidebar])
|
|
579
576
|
}), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
|
|
580
577
|
variableName: sideNavLiveWidthVar,
|
|
581
578
|
value: "0px",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* toggle-button.tsx generated by @compiled/babel-plugin v0.38.1 */
|
|
2
2
|
import "./toggle-button.compiled.css";
|
|
3
3
|
import { ax, ix } from "@compiled/react/runtime";
|
|
4
|
-
import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import { bind } from 'bind-event-listener';
|
|
6
6
|
import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
|
|
7
7
|
import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
|
|
@@ -36,7 +36,8 @@ export const SideNavToggleButton = ({
|
|
|
36
36
|
collapseLabel,
|
|
37
37
|
testId,
|
|
38
38
|
interactionName,
|
|
39
|
-
onClick
|
|
39
|
+
onClick,
|
|
40
|
+
shortcut
|
|
40
41
|
}) => {
|
|
41
42
|
const {
|
|
42
43
|
isExpandedOnDesktop: isSideNavExpandedOnDesktop,
|
|
@@ -98,6 +99,15 @@ export const SideNavToggleButton = ({
|
|
|
98
99
|
const icon = props => /*#__PURE__*/React.createElement("span", {
|
|
99
100
|
className: ax(["_1e0c1bgi _lcxvglyw"])
|
|
100
101
|
}, isSideNavExpanded ? /*#__PURE__*/React.createElement(SidebarCollapseIcon, props) : /*#__PURE__*/React.createElement(SidebarExpandIcon, props));
|
|
102
|
+
const tooltipProps = useMemo(() => {
|
|
103
|
+
if (fg('platform-dst-tooltip-shortcuts')) {
|
|
104
|
+
return {
|
|
105
|
+
...toggleButtonTooltipOptions,
|
|
106
|
+
shortcut
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return toggleButtonTooltipOptions;
|
|
110
|
+
}, [shortcut]);
|
|
101
111
|
const iconButton = /*#__PURE__*/React.createElement(IconButton, {
|
|
102
112
|
appearance: "subtle",
|
|
103
113
|
label: isSideNavExpanded ? collapseLabel : expandLabel,
|
|
@@ -107,7 +117,7 @@ export const SideNavToggleButton = ({
|
|
|
107
117
|
isTooltipDisabled: false,
|
|
108
118
|
interactionName: interactionName,
|
|
109
119
|
ref: fg('platform_fix_component_state_update_for_suspense') ? elementRef : ref,
|
|
110
|
-
tooltip:
|
|
120
|
+
tooltip: tooltipProps
|
|
111
121
|
});
|
|
112
122
|
const isInsideSlot = useContext(SideNavToggleButtonSlotContext);
|
|
113
123
|
|