@atlaskit/navigation-system 5.5.1 → 5.7.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/entry-points/fhs-rollout.js +26 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/ui/fhs-rollout/is-custom-is-fhs-enabled-context.js +14 -0
- package/dist/cjs/ui/fhs-rollout/is-fhs-enabled-context.js +17 -0
- package/dist/cjs/ui/fhs-rollout/is-fhs-enabled-provider.js +29 -0
- package/dist/cjs/ui/fhs-rollout/types.js +1 -0
- package/dist/cjs/ui/fhs-rollout/use-is-fhs-enabled.js +17 -0
- package/dist/cjs/ui/page-layout/panel-splitter/panel-splitter.js +9 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav-content.js +6 -2
- package/dist/cjs/ui/page-layout/side-nav/side-nav.js +10 -6
- package/dist/cjs/ui/page-layout/side-nav/toggle-button.js +12 -3
- package/dist/cjs/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +7 -3
- package/dist/cjs/ui/page-layout/top-nav/top-nav-end.js +5 -1
- package/dist/cjs/ui/page-layout/top-nav/top-nav-middle.js +5 -1
- package/dist/cjs/ui/page-layout/top-nav/top-nav-start.js +14 -10
- package/dist/cjs/ui/page-layout/top-nav/top-nav.js +8 -4
- package/dist/cjs/ui/top-nav-items/nav-logo/app-logo.js +7 -3
- package/dist/cjs/ui/top-nav-items/search.js +5 -1
- package/dist/es2019/entry-points/fhs-rollout.js +3 -0
- package/dist/es2019/index.js +3 -0
- package/dist/es2019/ui/fhs-rollout/is-custom-is-fhs-enabled-context.js +9 -0
- package/dist/es2019/ui/fhs-rollout/is-fhs-enabled-context.js +9 -0
- package/dist/es2019/ui/fhs-rollout/is-fhs-enabled-provider.js +23 -0
- package/dist/es2019/ui/fhs-rollout/types.js +0 -0
- package/dist/es2019/ui/fhs-rollout/use-is-fhs-enabled.js +12 -0
- package/dist/es2019/ui/page-layout/panel-splitter/panel-splitter.js +9 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav-content.js +7 -2
- package/dist/es2019/ui/page-layout/side-nav/side-nav.js +10 -6
- package/dist/es2019/ui/page-layout/side-nav/toggle-button.js +12 -3
- package/dist/es2019/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +7 -3
- package/dist/es2019/ui/page-layout/top-nav/top-nav-end.js +5 -1
- package/dist/es2019/ui/page-layout/top-nav/top-nav-middle.js +5 -1
- package/dist/es2019/ui/page-layout/top-nav/top-nav-start.js +14 -10
- package/dist/es2019/ui/page-layout/top-nav/top-nav.js +8 -4
- package/dist/es2019/ui/top-nav-items/nav-logo/app-logo.js +7 -3
- package/dist/es2019/ui/top-nav-items/search.js +40 -34
- package/dist/esm/entry-points/fhs-rollout.js +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/ui/fhs-rollout/is-custom-is-fhs-enabled-context.js +9 -0
- package/dist/esm/ui/fhs-rollout/is-fhs-enabled-context.js +11 -0
- package/dist/esm/ui/fhs-rollout/is-fhs-enabled-provider.js +22 -0
- package/dist/esm/ui/fhs-rollout/types.js +0 -0
- package/dist/esm/ui/fhs-rollout/use-is-fhs-enabled.js +12 -0
- package/dist/esm/ui/page-layout/panel-splitter/panel-splitter.js +9 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav-content.js +7 -2
- package/dist/esm/ui/page-layout/side-nav/side-nav.js +10 -6
- package/dist/esm/ui/page-layout/side-nav/toggle-button.js +12 -3
- package/dist/esm/ui/page-layout/side-nav/use-side-nav-toggle-keyboard-shortcut.js +7 -3
- package/dist/esm/ui/page-layout/top-nav/top-nav-end.js +5 -1
- package/dist/esm/ui/page-layout/top-nav/top-nav-middle.js +5 -1
- package/dist/esm/ui/page-layout/top-nav/top-nav-start.js +14 -10
- package/dist/esm/ui/page-layout/top-nav/top-nav.js +8 -4
- package/dist/esm/ui/top-nav-items/nav-logo/app-logo.js +7 -3
- package/dist/esm/ui/top-nav-items/search.js +5 -1
- package/dist/types/entry-points/fhs-rollout.d.ts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/ui/fhs-rollout/is-custom-is-fhs-enabled-context.d.ts +7 -0
- package/dist/types/ui/fhs-rollout/is-fhs-enabled-context.d.ts +8 -0
- package/dist/types/ui/fhs-rollout/is-fhs-enabled-provider.d.ts +10 -0
- package/dist/types/ui/fhs-rollout/types.d.ts +1 -0
- package/dist/types/ui/fhs-rollout/use-is-fhs-enabled.d.ts +6 -0
- package/dist/types/ui/page-layout/panel-splitter/panel-splitter.d.ts +1 -1
- 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 -1
- package/dist/types/ui/page-layout/side-nav/side-nav.d.ts +1 -1
- package/dist/types-ts4.5/entry-points/fhs-rollout.d.ts +3 -0
- package/dist/types-ts4.5/index.d.ts +3 -0
- package/dist/types-ts4.5/ui/fhs-rollout/is-custom-is-fhs-enabled-context.d.ts +7 -0
- package/dist/types-ts4.5/ui/fhs-rollout/is-fhs-enabled-context.d.ts +8 -0
- package/dist/types-ts4.5/ui/fhs-rollout/is-fhs-enabled-provider.d.ts +10 -0
- package/dist/types-ts4.5/ui/fhs-rollout/types.d.ts +1 -0
- package/dist/types-ts4.5/ui/fhs-rollout/use-is-fhs-enabled.d.ts +6 -0
- package/dist/types-ts4.5/ui/page-layout/panel-splitter/panel-splitter.d.ts +1 -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/root.d.ts +1 -1
- package/dist/types-ts4.5/ui/page-layout/side-nav/side-nav.d.ts +1 -1
- package/fhs-rollout/package.json +17 -0
- package/package.json +7 -4
|
@@ -14,6 +14,7 @@ var _react2 = require("@compiled/react");
|
|
|
14
14
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
15
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
16
16
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
17
|
+
var _useIsFhsEnabled = require("../../fhs-rollout/use-is-fhs-enabled");
|
|
17
18
|
var _hasCustomThemeContext = require("../themed/has-custom-theme-context");
|
|
18
19
|
var _logoRenderer = require("./logo-renderer");
|
|
19
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -53,6 +54,9 @@ var AppLogo = exports.AppLogo = function AppLogo(_ref) {
|
|
|
53
54
|
href = _ref.href,
|
|
54
55
|
icon = _ref.icon,
|
|
55
56
|
onClick = _ref.onClick;
|
|
57
|
+
var isFhsEnabled = (0, _platformFeatureFlags.fg)('navx-2566-implement-fhs-rollout') ?
|
|
58
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
59
|
+
(0, _useIsFhsEnabled.useIsFhsEnabled)() : (0, _platformFeatureFlags.fg)('navx-full-height-sidebar');
|
|
56
60
|
var ref = (0, _react.useRef)(null);
|
|
57
61
|
var nameRef = (0, _react.useRef)(null);
|
|
58
62
|
var hasCustomTheme = (0, _hasCustomThemeContext.useHasCustomTheme)();
|
|
@@ -71,14 +75,14 @@ var AppLogo = exports.AppLogo = function AppLogo(_ref) {
|
|
|
71
75
|
// @ts-expect-error - non-standard values for `borderRadius` and the custom theming interaction states
|
|
72
76
|
// eslint-disable-next-line @compiled/no-suppress-xcss
|
|
73
77
|
,
|
|
74
|
-
xcss: (0, _react2.cx)(anchorStyles.root, hasCustomTheme ? anchorStyles.interactionStatesCustomTheming : anchorStyles.interactionStates,
|
|
78
|
+
xcss: (0, _react2.cx)(anchorStyles.root, hasCustomTheme ? anchorStyles.interactionStatesCustomTheming : anchorStyles.interactionStates, isFhsEnabled && anchorStyles.fullHeightSidebar),
|
|
75
79
|
onClick: onClick
|
|
76
80
|
}, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
|
|
77
81
|
space: "space.075",
|
|
78
82
|
alignBlock: "center",
|
|
79
|
-
xcss: (0, _react2.cx)(logoWrapperStyles.root,
|
|
83
|
+
xcss: (0, _react2.cx)(logoWrapperStyles.root, isFhsEnabled && logoWrapperStyles.fullHeightSidebar)
|
|
80
84
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
81
|
-
className: (0, _runtime.ax)([iconContainerStyles.root,
|
|
85
|
+
className: (0, _runtime.ax)([iconContainerStyles.root, isFhsEnabled && iconContainerStyles.fullHeightSidebar])
|
|
82
86
|
}, /*#__PURE__*/_react.default.createElement(_logoRenderer.LogoRenderer
|
|
83
87
|
// Top nav always uses the new logo design
|
|
84
88
|
, {
|
|
@@ -14,6 +14,7 @@ var _css = require("@atlaskit/css");
|
|
|
14
14
|
var _search = _interopRequireDefault(require("@atlaskit/icon/core/search"));
|
|
15
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
16
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
17
|
+
var _useIsFhsEnabled = require("../fhs-rollout/use-is-fhs-enabled");
|
|
17
18
|
var _migration = require("./themed/migration");
|
|
18
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
20
|
var styles = {
|
|
@@ -37,6 +38,9 @@ var Search = exports.Search = function Search(_ref) {
|
|
|
37
38
|
elemAfter = _ref.elemAfter,
|
|
38
39
|
interactionName = _ref.interactionName,
|
|
39
40
|
ariaHaspopup = _ref['aria-haspopup'];
|
|
41
|
+
var isFhsEnabled = (0, _platformFeatureFlags.fg)('navx-2566-implement-fhs-rollout') ?
|
|
42
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
43
|
+
(0, _useIsFhsEnabled.useIsFhsEnabled)() : (0, _platformFeatureFlags.fg)('navx-full-height-sidebar');
|
|
40
44
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_compiled.Pressable, {
|
|
41
45
|
style: {
|
|
42
46
|
// To win the specificity war against Emotion we move this into inline styles
|
|
@@ -46,7 +50,7 @@ var Search = exports.Search = function Search(_ref) {
|
|
|
46
50
|
border: "var(--ds-border-width, 1px)".concat(" solid ", "var(--ds-border-input, #8C8F97)")
|
|
47
51
|
},
|
|
48
52
|
onClick: onClick,
|
|
49
|
-
xcss: (0, _css.cx)(styles.root,
|
|
53
|
+
xcss: (0, _css.cx)(styles.root, isFhsEnabled && styles.fullHeightSidebar),
|
|
50
54
|
interactionName: interactionName,
|
|
51
55
|
"aria-haspopup": ariaHaspopup
|
|
52
56
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
package/dist/es2019/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { IsFhsEnabledContext } from './ui/fhs-rollout/is-fhs-enabled-context';
|
|
2
|
+
export { IsFhsEnabledProvider } from './ui/fhs-rollout/is-fhs-enabled-provider';
|
|
3
|
+
export { useIsFhsEnabled } from './ui/fhs-rollout/use-is-fhs-enabled';
|
|
1
4
|
export { ExpandableMenuItem } from './ui/menu-item/expandable-menu-item/expandable-menu-item';
|
|
2
5
|
export { ExpandableMenuItemTrigger } from './ui/menu-item/expandable-menu-item/expandable-menu-item-trigger';
|
|
3
6
|
export { ExpandableMenuItemContent } from './ui/menu-item/expandable-menu-item/expandable-menu-item-content';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* __Is custom is fhs enabled context__
|
|
5
|
+
*
|
|
6
|
+
* Tracks if a custom value has been provided for `IsFhsEnabledContext`.
|
|
7
|
+
* Used to prevent nesting of the `IsFhsEnabledProvider`.
|
|
8
|
+
*/
|
|
9
|
+
export const IsCustomIsFhsEnabledContext = /*#__PURE__*/createContext(false);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
|
+
/**
|
|
4
|
+
* __Is fhs enabled context__
|
|
5
|
+
*
|
|
6
|
+
* Tracks is FHS enabled.
|
|
7
|
+
* Defaults to feature gate 'navx-full-height-sidebar'.
|
|
8
|
+
*/
|
|
9
|
+
export const IsFhsEnabledContext = /*#__PURE__*/createContext(() => fg('navx-full-height-sidebar'));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { IsCustomIsFhsEnabledContext } from './is-custom-is-fhs-enabled-context';
|
|
3
|
+
import { IsFhsEnabledContext } from './is-fhs-enabled-context';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* __Is fhs enabled provider__
|
|
7
|
+
*
|
|
8
|
+
* Used to provide a custom value for is FHS enabled.
|
|
9
|
+
*/
|
|
10
|
+
export const IsFhsEnabledProvider = ({
|
|
11
|
+
children,
|
|
12
|
+
value
|
|
13
|
+
}) => {
|
|
14
|
+
const isCustomIsFhsEnabled = useContext(IsCustomIsFhsEnabledContext);
|
|
15
|
+
if (isCustomIsFhsEnabled) {
|
|
16
|
+
throw new Error('A custom value for IsFhsEnabledContext has already been provided');
|
|
17
|
+
}
|
|
18
|
+
return /*#__PURE__*/React.createElement(IsCustomIsFhsEnabledContext.Provider, {
|
|
19
|
+
value: true
|
|
20
|
+
}, /*#__PURE__*/React.createElement(IsFhsEnabledContext.Provider, {
|
|
21
|
+
value: value
|
|
22
|
+
}, children));
|
|
23
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import { IsFhsEnabledContext } from './is-fhs-enabled-context';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* __Use is fhs enabled__
|
|
6
|
+
*
|
|
7
|
+
* Retrieves is FHS enabled.
|
|
8
|
+
*/
|
|
9
|
+
export const useIsFhsEnabled = () => {
|
|
10
|
+
const isFhsEnabled = useContext(IsFhsEnabledContext);
|
|
11
|
+
return typeof isFhsEnabled === 'boolean' ? isFhsEnabled : isFhsEnabled();
|
|
12
|
+
};
|
|
@@ -17,6 +17,7 @@ import { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/elem
|
|
|
17
17
|
import { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';
|
|
18
18
|
import Tooltip from '@atlaskit/tooltip';
|
|
19
19
|
import VisuallyHidden from '@atlaskit/visually-hidden';
|
|
20
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
20
21
|
import { OnDoubleClickContext, PanelSplitterContext } from './context';
|
|
21
22
|
import { convertResizeBoundToPixels } from './convert-resize-bound-to-pixels';
|
|
22
23
|
import { getPercentageWithinPixelBounds } from './get-percentage-within-pixel-bounds';
|
|
@@ -49,7 +50,10 @@ const MaybeTooltip = ({
|
|
|
49
50
|
shortcut,
|
|
50
51
|
children
|
|
51
52
|
}) => {
|
|
52
|
-
|
|
53
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
54
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
55
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
56
|
+
if (tooltipContent && isFhsEnabled) {
|
|
53
57
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
54
58
|
content: tooltipContent,
|
|
55
59
|
shortcut: shortcut,
|
|
@@ -85,6 +89,9 @@ const PortaledPanelSplitter = ({
|
|
|
85
89
|
tooltipContent,
|
|
86
90
|
shortcut
|
|
87
91
|
}) => {
|
|
92
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
93
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
94
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
88
95
|
const splitterRef = useRef(null);
|
|
89
96
|
const labelId = useId();
|
|
90
97
|
// Separate state used for the input range width to remove the UI's dependency on the "persisted" layout state value being updated
|
|
@@ -288,7 +295,7 @@ const PortaledPanelSplitter = ({
|
|
|
288
295
|
ref: splitterRef,
|
|
289
296
|
"data-testid": testId,
|
|
290
297
|
onDoubleClick: onDoubleClick,
|
|
291
|
-
className: ax([grabAreaStyles.root,
|
|
298
|
+
className: ax([grabAreaStyles.root, isFhsEnabled && grabAreaStyles.fullHeightSidebar])
|
|
292
299
|
}, /*#__PURE__*/React.createElement(VisuallyHidden, null, /*#__PURE__*/React.createElement("input", {
|
|
293
300
|
type: "range",
|
|
294
301
|
value: rangeInputValue,
|
|
@@ -4,6 +4,8 @@ import { ax, ix } from "@compiled/react/runtime";
|
|
|
4
4
|
import React, { forwardRef, useMemo, useRef } from 'react';
|
|
5
5
|
import mergeRefs from '@atlaskit/ds-lib/merge-refs';
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
8
|
+
|
|
7
9
|
/**
|
|
8
10
|
* The main content of the side nav, filling up the middle section. It acts as a scroll container.
|
|
9
11
|
*
|
|
@@ -36,12 +38,15 @@ function _SideNavContent({
|
|
|
36
38
|
children,
|
|
37
39
|
testId
|
|
38
40
|
}, forwardedRef) {
|
|
41
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
42
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
43
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
39
44
|
const internalRef = useRef(null);
|
|
40
45
|
const mergedRef = useMemo(() => mergeRefs([internalRef, forwardedRef]), [forwardedRef]);
|
|
41
46
|
return /*#__PURE__*/React.createElement("div", {
|
|
42
|
-
ref:
|
|
47
|
+
ref: isFhsEnabled ? mergedRef : forwardedRef,
|
|
43
48
|
"data-testid": testId,
|
|
44
|
-
className: ax([styles.scrollContainer,
|
|
49
|
+
className: ax([styles.scrollContainer, isFhsEnabled && fullHeightSidebarStyles.scrollContainer])
|
|
45
50
|
}, /*#__PURE__*/React.createElement("div", {
|
|
46
51
|
className: ax([styles.paddingContainer])
|
|
47
52
|
}, children));
|
|
@@ -15,6 +15,7 @@ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/ad
|
|
|
15
15
|
import { media } from '@atlaskit/primitives/responsive';
|
|
16
16
|
import { useSkipLinkInternal } from '../../../context/skip-links/skip-links-context';
|
|
17
17
|
import { TopNavStartElement } from '../../../context/top-nav-start/top-nav-start-context';
|
|
18
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
18
19
|
import { bannerMountedVar, contentHeightWhenFixed, contentInsetBlockStart, localSlotLayers, sideNavLiveWidthVar, sideNavPanelSplitterId, sideNavVar, topNavMountedVar, UNSAFE_sideNavLayoutVar } from '../constants';
|
|
19
20
|
import { DangerouslyHoistSlotSizes } from '../hoist-slot-sizes-context';
|
|
20
21
|
import { DangerouslyHoistCssVarToDocumentRoot } from '../hoist-utils';
|
|
@@ -90,6 +91,9 @@ function SideNavInternal({
|
|
|
90
91
|
canToggleWithShortcut
|
|
91
92
|
}) {
|
|
92
93
|
var _sideNavState$lastTri;
|
|
94
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
95
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
96
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
93
97
|
const id = useLayoutId({
|
|
94
98
|
providedId
|
|
95
99
|
});
|
|
@@ -291,9 +295,9 @@ function SideNavInternal({
|
|
|
291
295
|
}
|
|
292
296
|
if (action === 'ready-to-close') {
|
|
293
297
|
// If there are no open layers, we can close the flyout.
|
|
294
|
-
if (openLayerObserver.getCount({
|
|
298
|
+
if ((openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.getCount({
|
|
295
299
|
namespace: openLayerObserverSideNavNamespace
|
|
296
|
-
}) === 0) {
|
|
300
|
+
})) === 0) {
|
|
297
301
|
close();
|
|
298
302
|
return;
|
|
299
303
|
}
|
|
@@ -654,7 +658,7 @@ function SideNavInternal({
|
|
|
654
658
|
// Close the flyout if there are no more layers open and the user is not mousing over the
|
|
655
659
|
// flyout areas (side nav, TopNavStart element)
|
|
656
660
|
|
|
657
|
-
return openLayerObserver.onChange(({
|
|
661
|
+
return openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.onChange(({
|
|
658
662
|
count
|
|
659
663
|
}) => {
|
|
660
664
|
if (flyoutStateRef.current.type === 'ready-to-close' && count === 0) {
|
|
@@ -701,13 +705,13 @@ function SideNavInternal({
|
|
|
701
705
|
// Otherwise, the `@starting-style` rule will cause the sidebar to slide in initially.
|
|
702
706
|
const isFirstRenderRef = useRef(true);
|
|
703
707
|
useEffect(() => {
|
|
704
|
-
if (!
|
|
708
|
+
if (!isFhsEnabled) {
|
|
705
709
|
return;
|
|
706
710
|
}
|
|
707
711
|
if (isFirstRenderRef.current) {
|
|
708
712
|
isFirstRenderRef.current = false;
|
|
709
713
|
}
|
|
710
|
-
}, []);
|
|
714
|
+
}, [isFhsEnabled]);
|
|
711
715
|
|
|
712
716
|
// This is only used for the regular expand and collapse animations, not the flyout animations.
|
|
713
717
|
const shouldShowSidebarToggleAnimation =
|
|
@@ -744,7 +748,7 @@ function SideNavInternal({
|
|
|
744
748
|
},
|
|
745
749
|
ref: mergedRef,
|
|
746
750
|
"data-testid": testId,
|
|
747
|
-
className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop,
|
|
751
|
+
className: ax([styles.root, isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileOnly, !isExpandedOnDesktop && isExpandedOnMobile && !isFlyoutVisible && styles.hiddenDesktopOnly, !isExpandedOnDesktop && !isExpandedOnMobile && !isFlyoutVisible && styles.hiddenMobileAndDesktop, isFhsEnabled && styles.animationRTLSupport, shouldShowSidebarToggleAnimation && isFhsEnabled && styles.animationBaseStyles, isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationMobile, !isExpandedOnMobile && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationMobile, isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.expandAnimationDesktop, !isExpandedOnDesktop && shouldShowSidebarToggleAnimation && isFhsEnabled && styles.collapseAnimationDesktop, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFhsEnabled && styles.flyoutOpen, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFhsEnabled && styles.flyoutAnimateClosed, ((sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' || (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close') && !isFirefox && isFhsEnabled && styles.flyoutBaseStylesFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'open' && !isFirefox && isFhsEnabled && styles.flyoutOpenFullHeightSidebar, (sideNavState === null || sideNavState === void 0 ? void 0 : sideNavState.flyout) === 'triggered-animate-close' && !isFirefox && isFhsEnabled && styles.flyoutAnimateClosedFullHeightSidebar, isFlyoutClosed && isFhsEnabled && styles.fullHeightSidebar])
|
|
748
752
|
}), /*#__PURE__*/React.createElement(DangerouslyHoistCssVarToDocumentRoot, {
|
|
749
753
|
variableName: sideNavLiveWidthVar,
|
|
750
754
|
value: "0px",
|
|
@@ -6,7 +6,9 @@ import { bind } from 'bind-event-listener';
|
|
|
6
6
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
7
7
|
import SidebarCollapseIcon from '@atlaskit/icon/core/sidebar-collapse';
|
|
8
8
|
import SidebarExpandIcon from '@atlaskit/icon/core/sidebar-expand';
|
|
9
|
+
import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
|
|
9
10
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
11
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
10
12
|
import { IconButton } from '../../top-nav-items/themed/migration';
|
|
11
13
|
import { useIsSideNavShortcutEnabled } from './is-side-nav-shortcut-enabled-context';
|
|
12
14
|
import { sideNavToggleTooltipKeyboardShortcut } from './side-nav-toggle-tooltip-keyboard-shortcut';
|
|
@@ -36,6 +38,9 @@ export const SideNavToggleButton = ({
|
|
|
36
38
|
interactionName,
|
|
37
39
|
onClick
|
|
38
40
|
}) => {
|
|
41
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
42
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
43
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
39
44
|
const {
|
|
40
45
|
isExpandedOnDesktop: isSideNavExpandedOnDesktop,
|
|
41
46
|
isExpandedOnMobile: isSideNavExpandedOnMobile
|
|
@@ -92,12 +97,16 @@ export const SideNavToggleButton = ({
|
|
|
92
97
|
const {
|
|
93
98
|
createAnalyticsEvent
|
|
94
99
|
} = useAnalyticsEvents();
|
|
100
|
+
const openLayerObserver = useOpenLayerObserver();
|
|
95
101
|
const handleClick = useCallback((event, analyticsEvent) => {
|
|
96
102
|
onClick === null || onClick === void 0 ? void 0 : onClick(event, analyticsEvent, {
|
|
97
103
|
isSideNavVisible: isSideNavExpanded
|
|
98
104
|
});
|
|
99
105
|
toggleVisibility();
|
|
100
|
-
|
|
106
|
+
if (fg('navx-full-height-sidebar')) {
|
|
107
|
+
openLayerObserver === null || openLayerObserver === void 0 ? void 0 : openLayerObserver.closeLayers();
|
|
108
|
+
}
|
|
109
|
+
}, [onClick, isSideNavExpanded, toggleVisibility, openLayerObserver]);
|
|
101
110
|
const handlePointerEnter = useCallback(() => {
|
|
102
111
|
if (!fg('platform_dst_nav4_fhs_instrumentation_1')) {
|
|
103
112
|
return;
|
|
@@ -140,14 +149,14 @@ export const SideNavToggleButton = ({
|
|
|
140
149
|
}, isSideNavExpanded ? /*#__PURE__*/React.createElement(SidebarCollapseIcon, props) : /*#__PURE__*/React.createElement(SidebarExpandIcon, props));
|
|
141
150
|
const isShortcutEnabled = useIsSideNavShortcutEnabled();
|
|
142
151
|
const tooltipProps = useMemo(() => {
|
|
143
|
-
if (
|
|
152
|
+
if (isFhsEnabled) {
|
|
144
153
|
return {
|
|
145
154
|
...toggleButtonTooltipOptions,
|
|
146
155
|
shortcut: isShortcutEnabled ? sideNavToggleTooltipKeyboardShortcut : undefined
|
|
147
156
|
};
|
|
148
157
|
}
|
|
149
158
|
return toggleButtonTooltipOptions;
|
|
150
|
-
}, [isShortcutEnabled]);
|
|
159
|
+
}, [isFhsEnabled, isShortcutEnabled]);
|
|
151
160
|
return /*#__PURE__*/React.createElement(IconButton, {
|
|
152
161
|
appearance: "subtle",
|
|
153
162
|
label: isSideNavExpanded ? collapseLabel : expandLabel,
|
|
@@ -3,6 +3,7 @@ import { bind } from 'bind-event-listener';
|
|
|
3
3
|
import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
|
|
4
4
|
import { useOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
|
|
5
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
6
7
|
import { useIsSideNavShortcutEnabled } from './is-side-nav-shortcut-enabled-context';
|
|
7
8
|
import { useToggleSideNav } from './use-toggle-side-nav';
|
|
8
9
|
|
|
@@ -12,6 +13,9 @@ import { useToggleSideNav } from './use-toggle-side-nav';
|
|
|
12
13
|
export function useSideNavToggleKeyboardShortcut({
|
|
13
14
|
canToggleWithShortcut
|
|
14
15
|
}) {
|
|
16
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
17
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
18
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
15
19
|
const openLayerObserver = useOpenLayerObserver();
|
|
16
20
|
const toggleVisibilityByShortcut = useToggleSideNav({
|
|
17
21
|
trigger: 'keyboard'
|
|
@@ -19,7 +23,7 @@ export function useSideNavToggleKeyboardShortcut({
|
|
|
19
23
|
const canToggleWithShortcutStableRef = useStableRef(canToggleWithShortcut);
|
|
20
24
|
const isSideNavShortcutEnabled = useIsSideNavShortcutEnabled();
|
|
21
25
|
useEffect(() => {
|
|
22
|
-
if (!
|
|
26
|
+
if (!isFhsEnabled) {
|
|
23
27
|
return;
|
|
24
28
|
}
|
|
25
29
|
if (!isSideNavShortcutEnabled) {
|
|
@@ -38,7 +42,7 @@ export function useSideNavToggleKeyboardShortcut({
|
|
|
38
42
|
// Ignore repeated keydown events from holding down the keys
|
|
39
43
|
return;
|
|
40
44
|
}
|
|
41
|
-
if (openLayerObserver.getCount({
|
|
45
|
+
if (openLayerObserver && openLayerObserver.getCount({
|
|
42
46
|
type: 'modal'
|
|
43
47
|
}) > 0) {
|
|
44
48
|
// Return early if there are any open modals
|
|
@@ -48,5 +52,5 @@ export function useSideNavToggleKeyboardShortcut({
|
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
});
|
|
51
|
-
}, [canToggleWithShortcutStableRef, openLayerObserver, toggleVisibilityByShortcut
|
|
55
|
+
}, [canToggleWithShortcutStableRef, isFhsEnabled, isSideNavShortcutEnabled, openLayerObserver, toggleVisibilityByShortcut]);
|
|
52
56
|
}
|
|
@@ -10,6 +10,7 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
10
10
|
import Popup from '@atlaskit/popup';
|
|
11
11
|
import { UNSAFE_useMediaQuery as useMediaQuery } from '@atlaskit/primitives/compiled';
|
|
12
12
|
import { List } from '../../../components/list';
|
|
13
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
13
14
|
import { HasCustomThemeContext } from '../../top-nav-items/themed/has-custom-theme-context';
|
|
14
15
|
import { IconButton } from '../../top-nav-items/themed/migration';
|
|
15
16
|
const containerStyles = {
|
|
@@ -36,6 +37,9 @@ export function TopNavEnd({
|
|
|
36
37
|
label = 'Actions',
|
|
37
38
|
showMoreButtonLabel = 'Show more'
|
|
38
39
|
}) {
|
|
40
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
41
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
42
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
39
43
|
const [isOpen, setIsOpen] = useState(false);
|
|
40
44
|
// Always setting to `false` for the initial render (will flip in an effect for mobile)
|
|
41
45
|
const [isMobile, setIsMobile] = useState(false);
|
|
@@ -54,7 +58,7 @@ export function TopNavEnd({
|
|
|
54
58
|
}, [query]);
|
|
55
59
|
return /*#__PURE__*/React.createElement("nav", {
|
|
56
60
|
"aria-label": label,
|
|
57
|
-
className: ax([containerStyles.root,
|
|
61
|
+
className: ax([containerStyles.root, isFhsEnabled && containerStyles.fullHeightSidebar, fg('team25-eu-jira-logo-updates-csm-jsm') && containerStyles.jiraProductLogoUpdate])
|
|
58
62
|
}, isMobile ? /*#__PURE__*/React.createElement(Popup, {
|
|
59
63
|
isOpen: isOpen,
|
|
60
64
|
onClose: () => setIsOpen(false),
|
|
@@ -3,6 +3,7 @@ import "./top-nav-middle.compiled.css";
|
|
|
3
3
|
import { ax, ix } from "@compiled/react/runtime";
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
6
7
|
const styles = {
|
|
7
8
|
root: "_zulpu2gc _yyhycs5v _1bsb1osq _4cvr1h6o _1e0c1txw _1bahh9n0 _181n11p5 _1j8b15b0 _lagd1bp4 _1t4c1ris _12e8h9n0",
|
|
8
9
|
fullHeightSidebar: "_lcxv1wug"
|
|
@@ -19,7 +20,10 @@ const styles = {
|
|
|
19
20
|
export function TopNavMiddle({
|
|
20
21
|
children
|
|
21
22
|
}) {
|
|
23
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
24
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
25
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
22
26
|
return /*#__PURE__*/React.createElement("div", {
|
|
23
|
-
className: ax([styles.root,
|
|
27
|
+
className: ax([styles.root, isFhsEnabled && styles.fullHeightSidebar])
|
|
24
28
|
}, children);
|
|
25
29
|
}
|
|
@@ -6,6 +6,7 @@ import useStableRef from '@atlaskit/ds-lib/use-stable-ref';
|
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
import { UNSAFE_useMediaQuery } from '@atlaskit/primitives/compiled';
|
|
8
8
|
import { TopNavStartAttachRef } from '../../../context/top-nav-start/top-nav-start-context';
|
|
9
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
9
10
|
import { useSideNavVisibility } from '../side-nav/use-side-nav-visibility';
|
|
10
11
|
import { SideNavVisibilityState } from '../side-nav/visibility-context';
|
|
11
12
|
|
|
@@ -24,7 +25,7 @@ const flexGap = "var(--ds-space-050, 4px)";
|
|
|
24
25
|
/**
|
|
25
26
|
* Styles for the TopNavStart element.
|
|
26
27
|
*
|
|
27
|
-
* When `
|
|
28
|
+
* When `useIsFhsEnabled` is true this is the styling for the inner element,
|
|
28
29
|
* which re-enables pointer events.
|
|
29
30
|
*/
|
|
30
31
|
const innerStyles = {
|
|
@@ -38,7 +39,7 @@ const innerStyles = {
|
|
|
38
39
|
* Styles for the outer element, that does not have re-enabled pointer events and spans the entire
|
|
39
40
|
* width of the TopNavStart area.
|
|
40
41
|
*
|
|
41
|
-
* This wrapper element is only rendered when `
|
|
42
|
+
* This wrapper element is only rendered when `useIsFhsEnabled` is true.
|
|
42
43
|
*/
|
|
43
44
|
const wrapperStyles = {
|
|
44
45
|
root: "_vchhusvi _bozgutpp _4t3i1osq",
|
|
@@ -132,6 +133,9 @@ export function TopNavStart({
|
|
|
132
133
|
testId,
|
|
133
134
|
sideNavToggleButton
|
|
134
135
|
}) {
|
|
136
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
137
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
138
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
135
139
|
const ref = useContext(TopNavStartAttachRef);
|
|
136
140
|
const elementRef = useRef(null);
|
|
137
141
|
|
|
@@ -173,7 +177,7 @@ export function TopNavStart({
|
|
|
173
177
|
const isFirstRenderRef = useRef(true);
|
|
174
178
|
const sideNavState = useContext(SideNavVisibilityState);
|
|
175
179
|
useEffect(() => {
|
|
176
|
-
if (!
|
|
180
|
+
if (!isFhsEnabled) {
|
|
177
181
|
return;
|
|
178
182
|
}
|
|
179
183
|
|
|
@@ -186,13 +190,13 @@ export function TopNavStart({
|
|
|
186
190
|
if (isFirstRenderRef.current) {
|
|
187
191
|
isFirstRenderRef.current = false;
|
|
188
192
|
}
|
|
189
|
-
}, [sideNavState]);
|
|
193
|
+
}, [isFhsEnabled, sideNavState]);
|
|
190
194
|
|
|
191
195
|
// Using a stable ref to avoid re-running the animation layout effect when the toggle button prop value changes, which
|
|
192
196
|
// can happen a lot (e.g. if the parent re-renders)
|
|
193
197
|
const sideNavToggleButtonStableRef = useStableRef(sideNavToggleButton);
|
|
194
198
|
useLayoutEffect(() => {
|
|
195
|
-
if (!
|
|
199
|
+
if (!isFhsEnabled) {
|
|
196
200
|
return;
|
|
197
201
|
}
|
|
198
202
|
|
|
@@ -229,19 +233,19 @@ export function TopNavStart({
|
|
|
229
233
|
});
|
|
230
234
|
|
|
231
235
|
// This layout effect is called when the sidebar's desktop expansion state changes.
|
|
232
|
-
}, [isExpandedOnDesktop, sideNavToggleButtonStableRef]);
|
|
233
|
-
const TopNavStartInner =
|
|
236
|
+
}, [isExpandedOnDesktop, isFhsEnabled, sideNavToggleButtonStableRef]);
|
|
237
|
+
const TopNavStartInner = isFhsEnabled ? TopNavStartInnerFHS : TopNavStartInnerOld;
|
|
234
238
|
return /*#__PURE__*/React.createElement(TopNavStartInner, {
|
|
235
239
|
ref: elementRef,
|
|
236
240
|
testId: testId
|
|
237
|
-
}, !
|
|
241
|
+
}, !isFhsEnabled && sideNavToggleButton, sideNavToggleButton && (!isDesktop || !isExpandedOnDesktop) && isFhsEnabled && /*#__PURE__*/React.createElement("div", {
|
|
238
242
|
key: sideNavToggleButtonKey,
|
|
239
243
|
className: ax([!isFirefox && toggleButtonWrapperStyles.root, !isFirefox && animationState.type === 'idle' && toggleButtonWrapperStyles.finalPosition, !isFirefox &&
|
|
240
244
|
// Timing function is applied when the browser animates to the idle position.
|
|
241
245
|
animationState.type === 'idle' && toggleButtonWrapperStyles.collapseAnimationTimingFunction, !isFirefox && animationState.type === 'collapse' && toggleButtonWrapperStyles.collapseAnimationStartPosition])
|
|
242
|
-
}, sideNavToggleButton),
|
|
246
|
+
}, sideNavToggleButton), isFhsEnabled ? /*#__PURE__*/React.createElement("div", {
|
|
243
247
|
className: ax([childrenWrapperStyles.root, !isFirefox && childrenWrapperStyles.animationBaseStyles, !isFirefox && animationState.type === 'idle' && childrenWrapperStyles.finalPosition, !isFirefox && animationState.type === 'expand' && childrenWrapperStyles.expandAnimationStartPosition, !isFirefox && animationState.type === 'collapse' && childrenWrapperStyles.collapseAnimationStartPosition])
|
|
244
|
-
}, children) : children, sideNavToggleButton && isDesktop && isExpandedOnDesktop &&
|
|
248
|
+
}, children) : children, sideNavToggleButton && isDesktop && isExpandedOnDesktop && isFhsEnabled && /*#__PURE__*/React.createElement("div", {
|
|
245
249
|
key: sideNavToggleButtonKey,
|
|
246
250
|
className: ax([!isFirefox && toggleButtonWrapperStyles.root, toggleButtonWrapperStyles.alignEnd, !isFirefox && animationState.type === 'idle' && toggleButtonWrapperStyles.finalPosition, !isFirefox &&
|
|
247
251
|
// Timing function is applied when the browser animates to the idle position.
|
|
@@ -5,6 +5,7 @@ import { ax, ix } from "@compiled/react/runtime";
|
|
|
5
5
|
import { useContext, useMemo } from 'react';
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
import { useSkipLink } from '../../../context/skip-links/skip-links-context';
|
|
8
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
8
9
|
import { HasCustomThemeContext } from '../../top-nav-items/themed/has-custom-theme-context';
|
|
9
10
|
import { useCustomTheme } from '../../top-nav-items/themed/use-custom-theme';
|
|
10
11
|
import { bannerMountedVar, localSlotLayers, topNavMountedVar, UNSAFE_topNavVar } from '../constants';
|
|
@@ -48,6 +49,9 @@ export function TopNav({
|
|
|
48
49
|
id: providedId,
|
|
49
50
|
UNSAFE_theme
|
|
50
51
|
}) {
|
|
52
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
53
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
54
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
51
55
|
const dangerouslyHoistSlotSizes = useContext(DangerouslyHoistSlotSizes);
|
|
52
56
|
const id = useLayoutId({
|
|
53
57
|
providedId
|
|
@@ -88,21 +92,21 @@ export function TopNav({
|
|
|
88
92
|
} = useSideNavVisibility();
|
|
89
93
|
return /*#__PURE__*/React.createElement(HasCustomThemeContext.Provider, {
|
|
90
94
|
value: customTheme.isEnabled
|
|
91
|
-
},
|
|
95
|
+
}, isFhsEnabled && /*#__PURE__*/React.createElement("div", {
|
|
92
96
|
"data-layout-slot": true,
|
|
93
97
|
"aria-hidden": true
|
|
94
98
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
|
|
95
99
|
,
|
|
96
|
-
style:
|
|
100
|
+
style: isFhsEnabled ? backgroundStyle : undefined,
|
|
97
101
|
className: ax([backgroundStyles.root, isExpandedOnDesktop && backgroundStyles.sideNavExpanded])
|
|
98
102
|
}), /*#__PURE__*/React.createElement("header", {
|
|
99
103
|
id: id,
|
|
100
104
|
"data-layout-slot": true,
|
|
101
|
-
className: ax([styles.root,
|
|
105
|
+
className: ax([styles.root, isFhsEnabled && styles.fullHeightSidebar, isExpandedOnDesktop && isFhsEnabled && styles.fullHeightSidebarExpanded, xcss]),
|
|
102
106
|
"data-testid": testId
|
|
103
107
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
|
|
104
108
|
,
|
|
105
|
-
style:
|
|
109
|
+
style: isFhsEnabled ? foregroundStyle : customTheme.isEnabled ? customTheme.style : undefined
|
|
106
110
|
}, /*#__PURE__*/React.createElement(HoistCssVarToLocalGrid, {
|
|
107
111
|
variableName: topNavMountedVar,
|
|
108
112
|
value: height
|
|
@@ -6,6 +6,7 @@ import { cx } from '@compiled/react';
|
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
import { Anchor, Inline, Text } from '@atlaskit/primitives/compiled';
|
|
8
8
|
import Tooltip from '@atlaskit/tooltip';
|
|
9
|
+
import { useIsFhsEnabled } from '../../fhs-rollout/use-is-fhs-enabled';
|
|
9
10
|
import { useHasCustomTheme } from '../themed/has-custom-theme-context';
|
|
10
11
|
import { LogoRenderer } from './logo-renderer';
|
|
11
12
|
const anchorStyles = {
|
|
@@ -45,6 +46,9 @@ export const AppLogo = ({
|
|
|
45
46
|
icon,
|
|
46
47
|
onClick
|
|
47
48
|
}) => {
|
|
49
|
+
const isFhsEnabled = fg('navx-2566-implement-fhs-rollout') ?
|
|
50
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
51
|
+
useIsFhsEnabled() : fg('navx-full-height-sidebar');
|
|
48
52
|
const ref = useRef(null);
|
|
49
53
|
const nameRef = useRef(null);
|
|
50
54
|
const hasCustomTheme = useHasCustomTheme();
|
|
@@ -63,14 +67,14 @@ export const AppLogo = ({
|
|
|
63
67
|
// @ts-expect-error - non-standard values for `borderRadius` and the custom theming interaction states
|
|
64
68
|
// eslint-disable-next-line @compiled/no-suppress-xcss
|
|
65
69
|
,
|
|
66
|
-
xcss: cx(anchorStyles.root, hasCustomTheme ? anchorStyles.interactionStatesCustomTheming : anchorStyles.interactionStates,
|
|
70
|
+
xcss: cx(anchorStyles.root, hasCustomTheme ? anchorStyles.interactionStatesCustomTheming : anchorStyles.interactionStates, isFhsEnabled && anchorStyles.fullHeightSidebar),
|
|
67
71
|
onClick: onClick
|
|
68
72
|
}, /*#__PURE__*/React.createElement(Inline, {
|
|
69
73
|
space: "space.075",
|
|
70
74
|
alignBlock: "center",
|
|
71
|
-
xcss: cx(logoWrapperStyles.root,
|
|
75
|
+
xcss: cx(logoWrapperStyles.root, isFhsEnabled && logoWrapperStyles.fullHeightSidebar)
|
|
72
76
|
}, /*#__PURE__*/React.createElement("div", {
|
|
73
|
-
className: ax([iconContainerStyles.root,
|
|
77
|
+
className: ax([iconContainerStyles.root, isFhsEnabled && iconContainerStyles.fullHeightSidebar])
|
|
74
78
|
}, /*#__PURE__*/React.createElement(LogoRenderer
|
|
75
79
|
// Top nav always uses the new logo design
|
|
76
80
|
, {
|