@atlaskit/page-layout 1.7.13 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -79
- package/dist/cjs/common/constants.js +49 -98
- package/dist/cjs/common/hooks/use-is-sidebar-collapsing.js +1 -2
- package/dist/cjs/common/hooks/use-is-sidebar-dragging.js +1 -2
- package/dist/cjs/common/safe-local-storage.js +1 -2
- package/dist/cjs/common/utils.js +10 -19
- package/dist/cjs/components/resize-control/grab-area.js +30 -17
- package/dist/cjs/components/resize-control/index.js +13 -12
- package/dist/cjs/components/resize-control/resize-button.js +1 -2
- package/dist/cjs/components/resize-control/shadow.js +1 -2
- package/dist/cjs/components/skip-links/skip-link-components.js +3 -5
- package/dist/cjs/components/skip-links/use-custom-skip-link.js +2 -3
- package/dist/cjs/components/slots/banner-slot.js +1 -2
- package/dist/cjs/components/slots/content.js +1 -2
- package/dist/cjs/components/slots/internal/left-sidebar-inner.js +1 -2
- package/dist/cjs/components/slots/internal/left-sidebar-outer.js +1 -2
- package/dist/cjs/components/slots/internal/resizable-children-wrapper.js +1 -2
- package/dist/cjs/components/slots/internal/slot-focus-ring.js +1 -2
- package/dist/cjs/components/slots/left-panel.js +1 -2
- package/dist/cjs/components/slots/left-sidebar-without-resize.js +1 -2
- package/dist/cjs/components/slots/left-sidebar.js +5 -4
- package/dist/cjs/components/slots/main.js +1 -2
- package/dist/cjs/components/slots/page-layout.js +1 -2
- package/dist/cjs/components/slots/right-panel.js +1 -2
- package/dist/cjs/components/slots/right-sidebar.js +1 -2
- package/dist/cjs/components/slots/slot-dimensions.js +2 -3
- package/dist/cjs/components/slots/top-navigation.js +1 -2
- package/dist/cjs/controllers/sidebar-resize-context.js +4 -7
- package/dist/cjs/controllers/sidebar-resize-controller.js +9 -10
- package/dist/cjs/controllers/skip-link-context.js +4 -7
- package/dist/cjs/controllers/skip-link-controller.js +2 -3
- package/dist/cjs/controllers/use-page-layout-grid.js +1 -2
- package/dist/cjs/controllers/use-update-css-vars.js +1 -2
- package/dist/es2019/components/resize-control/grab-area.js +31 -18
- package/dist/es2019/components/resize-control/index.js +7 -6
- package/dist/es2019/components/slots/left-sidebar.js +2 -0
- package/dist/esm/components/resize-control/grab-area.js +30 -16
- package/dist/esm/components/resize-control/index.js +12 -10
- package/dist/esm/components/slots/left-sidebar.js +4 -2
- package/dist/esm/controllers/sidebar-resize-controller.js +7 -7
- package/dist/types/common/types.d.ts +10 -2
- package/dist/types/components/resize-control/grab-area.d.ts +3 -1
- package/dist/types/components/resize-control/index.d.ts +1 -1
- package/dist/types/components/resize-control/types.d.ts +1 -0
- package/dist/types-ts4.5/common/types.d.ts +10 -2
- package/dist/types-ts4.5/components/resize-control/grab-area.d.ts +3 -1
- package/dist/types-ts4.5/components/resize-control/index.d.ts +1 -1
- package/dist/types-ts4.5/components/resize-control/types.d.ts +1 -0
- package/package.json +9 -10
- package/report.api.md +1 -0
- package/tmp/api-report-tmp.d.ts +1 -0
|
@@ -8,10 +8,9 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
10
|
var _responsive = require("@atlaskit/primitives/responsive");
|
|
11
|
-
var _default = function _default(_ref) {
|
|
11
|
+
var _default = exports.default = function _default(_ref) {
|
|
12
12
|
var variableName = _ref.variableName,
|
|
13
13
|
value = _ref.value,
|
|
14
14
|
mobileValue = _ref.mobileValue;
|
|
15
15
|
return /*#__PURE__*/_react.default.createElement("style", null, ":root{--".concat(variableName, ":").concat(value, "px;}"), (0, _platformFeatureFlags.getBooleanFF)('platform.design-system-team.responsive-page-layout-left-sidebar_p8r7g') && mobileValue && "".concat(_responsive.UNSAFE_media.below.sm, " { :root{--").concat(variableName, ":").concat(mobileValue, "px;} }"));
|
|
16
|
-
};
|
|
17
|
-
exports.default = _default;
|
|
16
|
+
};
|
|
@@ -22,7 +22,7 @@ var leftSidebarState = {
|
|
|
22
22
|
isFixed: true
|
|
23
23
|
};
|
|
24
24
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
25
|
-
var SidebarResizeContext = /*#__PURE__*/(0, _react.createContext)({
|
|
25
|
+
var SidebarResizeContext = exports.SidebarResizeContext = /*#__PURE__*/(0, _react.createContext)({
|
|
26
26
|
isLeftSidebarCollapsed: false,
|
|
27
27
|
expandLeftSidebar: _noop.default,
|
|
28
28
|
collapseLeftSidebar: _noop.default,
|
|
@@ -30,8 +30,7 @@ var SidebarResizeContext = /*#__PURE__*/(0, _react.createContext)({
|
|
|
30
30
|
setLeftSidebarState: _noop.default,
|
|
31
31
|
toggleLeftSidebar: _noop.default
|
|
32
32
|
});
|
|
33
|
-
exports.
|
|
34
|
-
var usePageLayoutResize = function usePageLayoutResize() {
|
|
33
|
+
var usePageLayoutResize = exports.usePageLayoutResize = function usePageLayoutResize() {
|
|
35
34
|
var _useContext = (0, _react.useContext)(SidebarResizeContext),
|
|
36
35
|
setLeftSidebarState = _useContext.setLeftSidebarState,
|
|
37
36
|
context = (0, _objectWithoutProperties2.default)(_useContext, _excluded);
|
|
@@ -55,8 +54,7 @@ var usePageLayoutResize = function usePageLayoutResize() {
|
|
|
55
54
|
* you are rendering. This way the left sidebar will be locked for
|
|
56
55
|
* as long as the popup is open.
|
|
57
56
|
*/
|
|
58
|
-
exports.
|
|
59
|
-
var useLeftSidebarFlyoutLock = function useLeftSidebarFlyoutLock() {
|
|
57
|
+
var useLeftSidebarFlyoutLock = exports.useLeftSidebarFlyoutLock = function useLeftSidebarFlyoutLock() {
|
|
60
58
|
var _useContext2 = (0, _react.useContext)(SidebarResizeContext),
|
|
61
59
|
setLeftSidebarState = _useContext2.setLeftSidebarState;
|
|
62
60
|
(0, _react.useEffect)(function () {
|
|
@@ -73,5 +71,4 @@ var useLeftSidebarFlyoutLock = function useLeftSidebarFlyoutLock() {
|
|
|
73
71
|
});
|
|
74
72
|
};
|
|
75
73
|
}, [setLeftSidebarState]);
|
|
76
|
-
};
|
|
77
|
-
exports.useLeftSidebarFlyoutLock = useLeftSidebarFlyoutLock;
|
|
74
|
+
};
|
|
@@ -26,7 +26,7 @@ var handleDataAttributesAndCb = function handleDataAttributesAndCb() {
|
|
|
26
26
|
};
|
|
27
27
|
var leftSidebarSelector = (0, _utils.getPageLayoutSlotCSSSelector)('left-sidebar');
|
|
28
28
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
29
|
-
var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
29
|
+
var SidebarResizeController = exports.SidebarResizeController = function SidebarResizeController(_ref) {
|
|
30
30
|
var children = _ref.children,
|
|
31
31
|
onExpand = _ref.onLeftSidebarExpand,
|
|
32
32
|
onCollapse = _ref.onLeftSidebarCollapse;
|
|
@@ -89,7 +89,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
89
89
|
setLeftSidebarState(flyoutOpenSidebarState);
|
|
90
90
|
|
|
91
91
|
// Flush the desktop transitions, cleanup, and call the `onExpand` still
|
|
92
|
-
(_transition$current = transition.current) === null || _transition$current === void 0
|
|
92
|
+
(_transition$current = transition.current) === null || _transition$current === void 0 || _transition$current.complete();
|
|
93
93
|
handleDataAttributesAndCb(stableRef.current.onExpand, flyoutOpenSidebarState);
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
@@ -100,7 +100,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
// flush existing transition
|
|
103
|
-
(_transition$current3 = transition.current) === null || _transition$current3 === void 0
|
|
103
|
+
(_transition$current3 = transition.current) === null || _transition$current3 === void 0 || _transition$current3.complete();
|
|
104
104
|
var width = Math.max(lastLeftSidebarWidth, _constants.DEFAULT_LEFT_SIDEBAR_WIDTH);
|
|
105
105
|
var updatedLeftSidebarState = {
|
|
106
106
|
isLeftSidebarCollapsed: false,
|
|
@@ -126,7 +126,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
126
126
|
listener: function listener(event) {
|
|
127
127
|
if (event.target === sidebar && event.propertyName === 'width') {
|
|
128
128
|
var _transition$current4;
|
|
129
|
-
(_transition$current4 = transition.current) === null || _transition$current4 === void 0
|
|
129
|
+
(_transition$current4 = transition.current) === null || _transition$current4 === void 0 || _transition$current4.complete();
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
});
|
|
@@ -165,7 +165,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
165
165
|
setLeftSidebarState(flyoutCloseSidebarState);
|
|
166
166
|
|
|
167
167
|
// Flush the desktop transitions, cleanup, and call the `onCollapse` still
|
|
168
|
-
(_transition$current5 = transition.current) === null || _transition$current5 === void 0
|
|
168
|
+
(_transition$current5 = transition.current) === null || _transition$current5 === void 0 || _transition$current5.complete();
|
|
169
169
|
handleDataAttributesAndCb(stableRef.current.onCollapse, flyoutCloseSidebarState);
|
|
170
170
|
return;
|
|
171
171
|
}
|
|
@@ -176,7 +176,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
// flush existing transition
|
|
179
|
-
(_transition$current7 = transition.current) === null || _transition$current7 === void 0
|
|
179
|
+
(_transition$current7 = transition.current) === null || _transition$current7 === void 0 || _transition$current7.complete();
|
|
180
180
|
|
|
181
181
|
// data-attribute is used as a CSS selector to sync the hiding/showing
|
|
182
182
|
// of the nav contents with expand/collapse animation
|
|
@@ -206,7 +206,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
206
206
|
listener: function listener(event) {
|
|
207
207
|
if (sidebar === event.target && event.propertyName === 'width') {
|
|
208
208
|
var _transition$current8;
|
|
209
|
-
(_transition$current8 = transition.current) === null || _transition$current8 === void 0
|
|
209
|
+
(_transition$current8 = transition.current) === null || _transition$current8 === void 0 || _transition$current8.complete();
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
});
|
|
@@ -240,7 +240,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
240
240
|
(0, _react.useEffect)(function mount() {
|
|
241
241
|
return function unmount() {
|
|
242
242
|
var _transition$current9;
|
|
243
|
-
(_transition$current9 = transition.current) === null || _transition$current9 === void 0
|
|
243
|
+
(_transition$current9 = transition.current) === null || _transition$current9 === void 0 || _transition$current9.abort();
|
|
244
244
|
};
|
|
245
245
|
}, []);
|
|
246
246
|
var context = (0, _react.useMemo)(function () {
|
|
@@ -257,5 +257,4 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
257
257
|
return /*#__PURE__*/_react.default.createElement(_sidebarResizeContext.SidebarResizeContext.Provider, {
|
|
258
258
|
value: context
|
|
259
259
|
}, children);
|
|
260
|
-
};
|
|
261
|
-
exports.SidebarResizeController = SidebarResizeController;
|
|
260
|
+
};
|
|
@@ -8,17 +8,15 @@ exports.useSkipLinks = exports.useSkipLink = exports.SkipLinksContext = void 0;
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
|
|
10
10
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
11
|
-
var SkipLinksContext = /*#__PURE__*/(0, _react.createContext)({
|
|
11
|
+
var SkipLinksContext = exports.SkipLinksContext = /*#__PURE__*/(0, _react.createContext)({
|
|
12
12
|
skipLinksData: [],
|
|
13
13
|
registerSkipLink: _noop.default,
|
|
14
14
|
unregisterSkipLink: _noop.default
|
|
15
15
|
});
|
|
16
|
-
exports.
|
|
17
|
-
var useSkipLinks = function useSkipLinks() {
|
|
16
|
+
var useSkipLinks = exports.useSkipLinks = function useSkipLinks() {
|
|
18
17
|
return (0, _react.useContext)(SkipLinksContext);
|
|
19
18
|
};
|
|
20
|
-
exports.
|
|
21
|
-
var useSkipLink = function useSkipLink(id, skipLinkTitle) {
|
|
19
|
+
var useSkipLink = exports.useSkipLink = function useSkipLink(id, skipLinkTitle) {
|
|
22
20
|
var _useSkipLinks = useSkipLinks(),
|
|
23
21
|
registerSkipLink = _useSkipLinks.registerSkipLink,
|
|
24
22
|
unregisterSkipLink = _useSkipLinks.unregisterSkipLink;
|
|
@@ -33,5 +31,4 @@ var useSkipLink = function useSkipLink(id, skipLinkTitle) {
|
|
|
33
31
|
unregisterSkipLink(id);
|
|
34
32
|
};
|
|
35
33
|
}, [id, skipLinkTitle, registerSkipLink, unregisterSkipLink]);
|
|
36
|
-
};
|
|
37
|
-
exports.useSkipLink = useSkipLink;
|
|
34
|
+
};
|
|
@@ -38,7 +38,7 @@ var byDOMOrder = function byDOMOrder(a, b) {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
41
|
-
var SkipLinksController = function SkipLinksController(_ref) {
|
|
41
|
+
var SkipLinksController = exports.SkipLinksController = function SkipLinksController(_ref) {
|
|
42
42
|
var children = _ref.children;
|
|
43
43
|
var _useState = (0, _react.useState)([]),
|
|
44
44
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -71,5 +71,4 @@ var SkipLinksController = function SkipLinksController(_ref) {
|
|
|
71
71
|
return /*#__PURE__*/_react.default.createElement(_skipLinkContext.SkipLinksContext.Provider, {
|
|
72
72
|
value: context
|
|
73
73
|
}, children);
|
|
74
|
-
};
|
|
75
|
-
exports.SkipLinksController = SkipLinksController;
|
|
74
|
+
};
|
|
@@ -27,5 +27,4 @@ var publishGridState = function publishGridState(gridState) {
|
|
|
27
27
|
(0, _utils.mergeGridStateIntoStorage)('gridState', (0, _defineProperty2.default)({}, slotName, value));
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
-
var _default = publishGridState;
|
|
31
|
-
exports.default = _default;
|
|
30
|
+
var _default = exports.default = publishGridState;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
/* eslint-disable react/react-in-jsx-scope */
|
|
2
3
|
/** @jsx jsx */
|
|
3
4
|
|
|
4
5
|
import { css, jsx } from '@emotion/react';
|
|
5
|
-
import {
|
|
6
|
+
import { Box, xcss } from '@atlaskit/primitives';
|
|
7
|
+
import { B200 } from '@atlaskit/theme/colors';
|
|
6
8
|
import { GRAB_AREA_LINE_SELECTOR, GRAB_AREA_SELECTOR } from '../../common/constants';
|
|
7
9
|
/**
|
|
8
10
|
* Determines the color of the grab line.
|
|
@@ -11,7 +13,7 @@ import { GRAB_AREA_LINE_SELECTOR, GRAB_AREA_SELECTOR } from '../../common/consta
|
|
|
11
13
|
*/
|
|
12
14
|
const varLineColor = '--ds-line';
|
|
13
15
|
const grabAreaStyles = css({
|
|
14
|
-
width:
|
|
16
|
+
width: 4,
|
|
15
17
|
height: '100%',
|
|
16
18
|
padding: 0,
|
|
17
19
|
backgroundColor: 'transparent',
|
|
@@ -22,14 +24,21 @@ const grabAreaStyles = css({
|
|
|
22
24
|
},
|
|
23
25
|
':focus': {
|
|
24
26
|
outline: 0
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const grabAreaEnabledStyles = css({
|
|
30
|
+
':hover': {
|
|
31
|
+
[varLineColor]: `var(--ds-border-selected, ${B200})`
|
|
32
|
+
},
|
|
33
|
+
':active': {
|
|
34
|
+
borderColor: `var(--ds-border-selected, ${B200})`,
|
|
35
|
+
[varLineColor]: `var(--ds-border-selected, ${B200})`
|
|
25
36
|
},
|
|
26
|
-
':
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
[varLineColor]: `var(--ds-border-selected, ${B200})`
|
|
32
|
-
}
|
|
37
|
+
':focus-visible': {
|
|
38
|
+
outlineColor: `var(--ds-border-selected, ${B200})`,
|
|
39
|
+
outlineStyle: 'solid',
|
|
40
|
+
outlineWidth: "var(--ds-border-width-outline, 2px)",
|
|
41
|
+
[varLineColor]: `var(--ds-border-selected, ${B200})`
|
|
33
42
|
}
|
|
34
43
|
});
|
|
35
44
|
const grabAreaCollapsedStyles = css({
|
|
@@ -38,11 +47,11 @@ const grabAreaCollapsedStyles = css({
|
|
|
38
47
|
border: 0,
|
|
39
48
|
cursor: 'default'
|
|
40
49
|
});
|
|
41
|
-
const lineStyles =
|
|
50
|
+
const lineStyles = xcss({
|
|
42
51
|
display: 'block',
|
|
43
|
-
width:
|
|
52
|
+
width: 'border.width.outline',
|
|
44
53
|
height: '100%',
|
|
45
|
-
backgroundColor:
|
|
54
|
+
backgroundColor: 'color.background.neutral',
|
|
46
55
|
transition: 'background-color 200ms'
|
|
47
56
|
});
|
|
48
57
|
const grabAreaLineSelector = {
|
|
@@ -53,6 +62,7 @@ const grabAreaSelector = {
|
|
|
53
62
|
};
|
|
54
63
|
const GrabArea = ({
|
|
55
64
|
testId,
|
|
65
|
+
valueTextLabel = 'Width',
|
|
56
66
|
isDisabled,
|
|
57
67
|
isLeftSidebarCollapsed,
|
|
58
68
|
label,
|
|
@@ -61,6 +71,7 @@ const GrabArea = ({
|
|
|
61
71
|
onMouseDown,
|
|
62
72
|
onBlur,
|
|
63
73
|
onFocus,
|
|
74
|
+
ref,
|
|
64
75
|
...rest
|
|
65
76
|
}) => jsx("button", _extends({}, grabAreaSelector, {
|
|
66
77
|
"aria-label": label,
|
|
@@ -68,24 +79,26 @@ const GrabArea = ({
|
|
|
68
79
|
disabled: isDisabled,
|
|
69
80
|
"aria-hidden": isLeftSidebarCollapsed,
|
|
70
81
|
type: "button"
|
|
71
|
-
// The
|
|
72
|
-
// interactive and disabled functionality on the resize
|
|
82
|
+
// The slider role is applied to a button to utilize the native
|
|
83
|
+
// interactive and disabled functionality on the resize slider. While a
|
|
73
84
|
// range input would be more semantically accurate, it does not affect
|
|
74
85
|
// usability.
|
|
75
86
|
,
|
|
76
|
-
role: "
|
|
77
|
-
css: [grabAreaStyles, isLeftSidebarCollapsed && grabAreaCollapsedStyles],
|
|
87
|
+
role: "slider",
|
|
88
|
+
css: [grabAreaStyles, isLeftSidebarCollapsed && grabAreaCollapsedStyles, !isDisabled && grabAreaEnabledStyles],
|
|
78
89
|
"aria-orientation": "vertical",
|
|
79
90
|
"aria-valuenow": leftSidebarPercentageExpanded,
|
|
80
91
|
"aria-valuemin": 0,
|
|
81
92
|
"aria-valuemax": 100,
|
|
93
|
+
"aria-valuetext": `${valueTextLabel} ${leftSidebarPercentageExpanded}%`,
|
|
82
94
|
onKeyDown: onKeyDown,
|
|
83
95
|
onMouseDown: onMouseDown,
|
|
84
96
|
onFocus: onFocus,
|
|
85
97
|
onBlur: onBlur
|
|
86
98
|
// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
87
|
-
}, rest), jsx(
|
|
88
|
-
|
|
99
|
+
}, rest), jsx(Box, _extends({
|
|
100
|
+
as: "span",
|
|
101
|
+
xcss: lineStyles
|
|
89
102
|
}, grabAreaLineSelector)));
|
|
90
103
|
|
|
91
104
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
@@ -19,10 +19,9 @@ const cssSelector = {
|
|
|
19
19
|
};
|
|
20
20
|
const resizeControlStyles = css({
|
|
21
21
|
position: 'absolute',
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
left: '100%',
|
|
22
|
+
insetBlockEnd: 0,
|
|
23
|
+
insetBlockStart: 0,
|
|
24
|
+
insetInlineStart: '100%',
|
|
26
25
|
outline: 'none'
|
|
27
26
|
});
|
|
28
27
|
const showResizeButtonStyles = css({
|
|
@@ -58,8 +57,9 @@ const globalResizingStyles = css({
|
|
|
58
57
|
const ResizeControl = ({
|
|
59
58
|
testId,
|
|
60
59
|
overrides,
|
|
61
|
-
resizeButtonLabel = '',
|
|
62
|
-
|
|
60
|
+
resizeButtonLabel = 'Current project sidebar',
|
|
61
|
+
valueTextLabel = 'Width',
|
|
62
|
+
resizeGrabAreaLabel = 'Resize Current Project Sidebar',
|
|
63
63
|
onResizeStart,
|
|
64
64
|
onResizeEnd
|
|
65
65
|
}) => {
|
|
@@ -334,6 +334,7 @@ const ResizeControl = ({
|
|
|
334
334
|
isDisabled: isLeftSidebarCollapsed,
|
|
335
335
|
isLeftSidebarCollapsed: isLeftSidebarCollapsed,
|
|
336
336
|
label: resizeGrabAreaLabel,
|
|
337
|
+
valueTextLabel: valueTextLabel,
|
|
337
338
|
leftSidebarPercentageExpanded: leftSidebarPercentageExpanded,
|
|
338
339
|
onBlur: onBlur,
|
|
339
340
|
onFocus: onFocus,
|
|
@@ -50,6 +50,7 @@ const LeftSidebar = props => {
|
|
|
50
50
|
children,
|
|
51
51
|
width,
|
|
52
52
|
isFixed = true,
|
|
53
|
+
valueTextLabel,
|
|
53
54
|
resizeButtonLabel,
|
|
54
55
|
resizeGrabAreaLabel,
|
|
55
56
|
overrides,
|
|
@@ -330,6 +331,7 @@ const LeftSidebar = props => {
|
|
|
330
331
|
testId: testId && `${testId}-resize-children-wrapper`
|
|
331
332
|
}, children), jsx(ResizeControl, {
|
|
332
333
|
testId: testId,
|
|
334
|
+
valueTextLabel: valueTextLabel,
|
|
333
335
|
resizeGrabAreaLabel: resizeGrabAreaLabel,
|
|
334
336
|
resizeButtonLabel: resizeButtonLabel
|
|
335
337
|
// eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
var _excluded = ["testId", "isDisabled", "isLeftSidebarCollapsed", "label", "leftSidebarPercentageExpanded", "onKeyDown", "onMouseDown", "onBlur", "onFocus"];
|
|
4
|
+
var _excluded = ["testId", "valueTextLabel", "isDisabled", "isLeftSidebarCollapsed", "label", "leftSidebarPercentageExpanded", "onKeyDown", "onMouseDown", "onBlur", "onFocus", "ref"];
|
|
5
|
+
/* eslint-disable react/react-in-jsx-scope */
|
|
5
6
|
/** @jsx jsx */
|
|
6
7
|
|
|
7
8
|
import { css, jsx } from '@emotion/react';
|
|
8
|
-
import {
|
|
9
|
+
import { Box, xcss } from '@atlaskit/primitives';
|
|
10
|
+
import { B200 } from '@atlaskit/theme/colors';
|
|
9
11
|
import { GRAB_AREA_LINE_SELECTOR, GRAB_AREA_SELECTOR } from '../../common/constants';
|
|
10
12
|
/**
|
|
11
13
|
* Determines the color of the grab line.
|
|
@@ -14,7 +16,7 @@ import { GRAB_AREA_LINE_SELECTOR, GRAB_AREA_SELECTOR } from '../../common/consta
|
|
|
14
16
|
*/
|
|
15
17
|
var varLineColor = '--ds-line';
|
|
16
18
|
var grabAreaStyles = css({
|
|
17
|
-
width:
|
|
19
|
+
width: 4,
|
|
18
20
|
height: '100%',
|
|
19
21
|
padding: 0,
|
|
20
22
|
backgroundColor: 'transparent',
|
|
@@ -25,29 +27,38 @@ var grabAreaStyles = css({
|
|
|
25
27
|
},
|
|
26
28
|
':focus': {
|
|
27
29
|
outline: 0
|
|
28
|
-
},
|
|
29
|
-
':enabled': {
|
|
30
|
-
':hover': _defineProperty({}, varLineColor, "var(--ds-border-selected, ".concat(B100, ")")),
|
|
31
|
-
':active, :focus': _defineProperty({}, varLineColor, "var(--ds-border-selected, ".concat(B200, ")"))
|
|
32
30
|
}
|
|
33
31
|
});
|
|
32
|
+
var grabAreaEnabledStyles = css({
|
|
33
|
+
':hover': _defineProperty({}, varLineColor, "var(--ds-border-selected, ".concat(B200, ")")),
|
|
34
|
+
':active': _defineProperty({
|
|
35
|
+
borderColor: "var(--ds-border-selected, ".concat(B200, ")")
|
|
36
|
+
}, varLineColor, "var(--ds-border-selected, ".concat(B200, ")")),
|
|
37
|
+
':focus-visible': _defineProperty({
|
|
38
|
+
outlineColor: "var(--ds-border-selected, ".concat(B200, ")"),
|
|
39
|
+
outlineStyle: 'solid',
|
|
40
|
+
outlineWidth: "var(--ds-border-width-outline, 2px)"
|
|
41
|
+
}, varLineColor, "var(--ds-border-selected, ".concat(B200, ")"))
|
|
42
|
+
});
|
|
34
43
|
var grabAreaCollapsedStyles = css({
|
|
35
44
|
padding: 0,
|
|
36
45
|
backgroundColor: 'transparent',
|
|
37
46
|
border: 0,
|
|
38
47
|
cursor: 'default'
|
|
39
48
|
});
|
|
40
|
-
var lineStyles =
|
|
49
|
+
var lineStyles = xcss({
|
|
41
50
|
display: 'block',
|
|
42
|
-
width:
|
|
51
|
+
width: 'border.width.outline',
|
|
43
52
|
height: '100%',
|
|
44
|
-
backgroundColor:
|
|
53
|
+
backgroundColor: 'color.background.neutral',
|
|
45
54
|
transition: 'background-color 200ms'
|
|
46
55
|
});
|
|
47
56
|
var grabAreaLineSelector = _defineProperty({}, GRAB_AREA_LINE_SELECTOR, true);
|
|
48
57
|
var grabAreaSelector = _defineProperty({}, GRAB_AREA_SELECTOR, true);
|
|
49
58
|
var GrabArea = function GrabArea(_ref) {
|
|
50
59
|
var testId = _ref.testId,
|
|
60
|
+
_ref$valueTextLabel = _ref.valueTextLabel,
|
|
61
|
+
valueTextLabel = _ref$valueTextLabel === void 0 ? 'Width' : _ref$valueTextLabel,
|
|
51
62
|
isDisabled = _ref.isDisabled,
|
|
52
63
|
isLeftSidebarCollapsed = _ref.isLeftSidebarCollapsed,
|
|
53
64
|
label = _ref.label,
|
|
@@ -56,6 +67,7 @@ var GrabArea = function GrabArea(_ref) {
|
|
|
56
67
|
onMouseDown = _ref.onMouseDown,
|
|
57
68
|
onBlur = _ref.onBlur,
|
|
58
69
|
onFocus = _ref.onFocus,
|
|
70
|
+
ref = _ref.ref,
|
|
59
71
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
60
72
|
return jsx("button", _extends({}, grabAreaSelector, {
|
|
61
73
|
"aria-label": label,
|
|
@@ -63,24 +75,26 @@ var GrabArea = function GrabArea(_ref) {
|
|
|
63
75
|
disabled: isDisabled,
|
|
64
76
|
"aria-hidden": isLeftSidebarCollapsed,
|
|
65
77
|
type: "button"
|
|
66
|
-
// The
|
|
67
|
-
// interactive and disabled functionality on the resize
|
|
78
|
+
// The slider role is applied to a button to utilize the native
|
|
79
|
+
// interactive and disabled functionality on the resize slider. While a
|
|
68
80
|
// range input would be more semantically accurate, it does not affect
|
|
69
81
|
// usability.
|
|
70
82
|
,
|
|
71
|
-
role: "
|
|
72
|
-
css: [grabAreaStyles, isLeftSidebarCollapsed && grabAreaCollapsedStyles],
|
|
83
|
+
role: "slider",
|
|
84
|
+
css: [grabAreaStyles, isLeftSidebarCollapsed && grabAreaCollapsedStyles, !isDisabled && grabAreaEnabledStyles],
|
|
73
85
|
"aria-orientation": "vertical",
|
|
74
86
|
"aria-valuenow": leftSidebarPercentageExpanded,
|
|
75
87
|
"aria-valuemin": 0,
|
|
76
88
|
"aria-valuemax": 100,
|
|
89
|
+
"aria-valuetext": "".concat(valueTextLabel, " ").concat(leftSidebarPercentageExpanded, "%"),
|
|
77
90
|
onKeyDown: onKeyDown,
|
|
78
91
|
onMouseDown: onMouseDown,
|
|
79
92
|
onFocus: onFocus,
|
|
80
93
|
onBlur: onBlur
|
|
81
94
|
// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
82
|
-
}, rest), jsx(
|
|
83
|
-
|
|
95
|
+
}, rest), jsx(Box, _extends({
|
|
96
|
+
as: "span",
|
|
97
|
+
xcss: lineStyles
|
|
84
98
|
}, grabAreaLineSelector)));
|
|
85
99
|
};
|
|
86
100
|
|
|
@@ -21,10 +21,9 @@ import Shadow from './shadow';
|
|
|
21
21
|
var cssSelector = _defineProperty({}, RESIZE_CONTROL_SELECTOR, true);
|
|
22
22
|
var resizeControlStyles = css({
|
|
23
23
|
position: 'absolute',
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
left: '100%',
|
|
24
|
+
insetBlockEnd: 0,
|
|
25
|
+
insetBlockStart: 0,
|
|
26
|
+
insetInlineStart: '100%',
|
|
28
27
|
outline: 'none'
|
|
29
28
|
});
|
|
30
29
|
var showResizeButtonStyles = css({
|
|
@@ -61,9 +60,11 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
61
60
|
var testId = _ref.testId,
|
|
62
61
|
overrides = _ref.overrides,
|
|
63
62
|
_ref$resizeButtonLabe = _ref.resizeButtonLabel,
|
|
64
|
-
resizeButtonLabel = _ref$resizeButtonLabe === void 0 ? '' : _ref$resizeButtonLabe,
|
|
63
|
+
resizeButtonLabel = _ref$resizeButtonLabe === void 0 ? 'Current project sidebar' : _ref$resizeButtonLabe,
|
|
64
|
+
_ref$valueTextLabel = _ref.valueTextLabel,
|
|
65
|
+
valueTextLabel = _ref$valueTextLabel === void 0 ? 'Width' : _ref$valueTextLabel,
|
|
65
66
|
_ref$resizeGrabAreaLa = _ref.resizeGrabAreaLabel,
|
|
66
|
-
resizeGrabAreaLabel = _ref$resizeGrabAreaLa === void 0 ? 'Resize' : _ref$resizeGrabAreaLa,
|
|
67
|
+
resizeGrabAreaLabel = _ref$resizeGrabAreaLa === void 0 ? 'Resize Current Project Sidebar' : _ref$resizeGrabAreaLa,
|
|
67
68
|
onResizeStart = _ref.onResizeStart,
|
|
68
69
|
onResizeEnd = _ref.onResizeEnd;
|
|
69
70
|
var _useContext = useContext(SidebarResizeContext),
|
|
@@ -93,7 +94,7 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
93
94
|
}, [leftSidebarState]);
|
|
94
95
|
var toggleSideBar = useCallback(function (event) {
|
|
95
96
|
// don't cascade down to the LeftSidebarOuter
|
|
96
|
-
event === null || event === void 0
|
|
97
|
+
event === null || event === void 0 || event.stopPropagation();
|
|
97
98
|
toggleLeftSidebar();
|
|
98
99
|
}, [toggleLeftSidebar]);
|
|
99
100
|
var onMouseDown = function onMouseDown(event) {
|
|
@@ -176,7 +177,7 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
176
177
|
var onResizeOffLeftOfScreen = function onResizeOffLeftOfScreen() {
|
|
177
178
|
var _unbindEvents$current;
|
|
178
179
|
onUpdateResize.cancel();
|
|
179
|
-
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0
|
|
180
|
+
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 || _unbindEvents$current.call(unbindEvents);
|
|
180
181
|
unbindEvents.current = null;
|
|
181
182
|
document.documentElement.removeAttribute(IS_SIDEBAR_DRAGGING);
|
|
182
183
|
offset.current = 0;
|
|
@@ -242,7 +243,7 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
242
243
|
}, _defineProperty(_objectSpread3, VAR_LEFT_SIDEBAR_WIDTH, sidebarWidth.current), _defineProperty(_objectSpread3, "lastLeftSidebarWidth", sidebarWidth.current), _objectSpread3));
|
|
243
244
|
setLeftSidebarState(updatedLeftSidebarState);
|
|
244
245
|
}
|
|
245
|
-
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0
|
|
246
|
+
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 || _unbindEvents$current2.call(unbindEvents);
|
|
246
247
|
unbindEvents.current = null;
|
|
247
248
|
onUpdateResize.cancel();
|
|
248
249
|
sidebarWidth.current = 0;
|
|
@@ -253,7 +254,7 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
253
254
|
var _updatedLeftSidebarSt;
|
|
254
255
|
setIsGrabAreaFocused(false);
|
|
255
256
|
// Note: the `collapseSidebar` codepath does not return state, so we need to pull it from the ref
|
|
256
|
-
onResizeEnd === null || onResizeEnd === void 0
|
|
257
|
+
onResizeEnd === null || onResizeEnd === void 0 || onResizeEnd((_updatedLeftSidebarSt = updatedLeftSidebarState) !== null && _updatedLeftSidebarSt !== void 0 ? _updatedLeftSidebarSt : stableSidebarState.current);
|
|
257
258
|
});
|
|
258
259
|
};
|
|
259
260
|
var onKeyDown = function onKeyDown(event) {
|
|
@@ -329,6 +330,7 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
329
330
|
isDisabled: isLeftSidebarCollapsed,
|
|
330
331
|
isLeftSidebarCollapsed: isLeftSidebarCollapsed,
|
|
331
332
|
label: resizeGrabAreaLabel,
|
|
333
|
+
valueTextLabel: valueTextLabel,
|
|
332
334
|
leftSidebarPercentageExpanded: leftSidebarPercentageExpanded,
|
|
333
335
|
onBlur: onBlur,
|
|
334
336
|
onFocus: onFocus,
|
|
@@ -53,6 +53,7 @@ var LeftSidebar = function LeftSidebar(props) {
|
|
|
53
53
|
width = props.width,
|
|
54
54
|
_props$isFixed = props.isFixed,
|
|
55
55
|
isFixed = _props$isFixed === void 0 ? true : _props$isFixed,
|
|
56
|
+
valueTextLabel = props.valueTextLabel,
|
|
56
57
|
resizeButtonLabel = props.resizeButtonLabel,
|
|
57
58
|
resizeGrabAreaLabel = props.resizeGrabAreaLabel,
|
|
58
59
|
overrides = props.overrides,
|
|
@@ -236,7 +237,7 @@ var LeftSidebar = function LeftSidebar(props) {
|
|
|
236
237
|
if (current.isFlyoutOpen) {
|
|
237
238
|
return current;
|
|
238
239
|
}
|
|
239
|
-
onExpand === null || onExpand === void 0
|
|
240
|
+
onExpand === null || onExpand === void 0 || onExpand();
|
|
240
241
|
return _objectSpread(_objectSpread({}, current), {}, {
|
|
241
242
|
isFlyoutOpen: true
|
|
242
243
|
});
|
|
@@ -252,7 +253,7 @@ var LeftSidebar = function LeftSidebar(props) {
|
|
|
252
253
|
if (!current.isFlyoutOpen) {
|
|
253
254
|
return current;
|
|
254
255
|
}
|
|
255
|
-
onCollapse === null || onCollapse === void 0
|
|
256
|
+
onCollapse === null || onCollapse === void 0 || onCollapse();
|
|
256
257
|
return _objectSpread(_objectSpread({}, current), {}, {
|
|
257
258
|
isFlyoutOpen: false
|
|
258
259
|
});
|
|
@@ -327,6 +328,7 @@ var LeftSidebar = function LeftSidebar(props) {
|
|
|
327
328
|
testId: testId && "".concat(testId, "-resize-children-wrapper")
|
|
328
329
|
}, children), jsx(ResizeControl, {
|
|
329
330
|
testId: testId,
|
|
331
|
+
valueTextLabel: valueTextLabel,
|
|
330
332
|
resizeGrabAreaLabel: resizeGrabAreaLabel,
|
|
331
333
|
resizeButtonLabel: resizeButtonLabel
|
|
332
334
|
// eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
|