@atlaskit/page-layout 1.3.7 → 1.3.9
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 +12 -0
- package/dist/cjs/common/constants.js +8 -4
- package/dist/cjs/common/hooks/index.js +0 -3
- package/dist/cjs/common/hooks/use-is-sidebar-collapsing.js +3 -12
- package/dist/cjs/common/hooks/use-is-sidebar-dragging.js +3 -12
- package/dist/cjs/common/safe-local-storage.js +2 -13
- package/dist/cjs/common/utils.js +0 -35
- package/dist/cjs/components/index.js +0 -13
- package/dist/cjs/components/resize-control/grab-area.js +8 -17
- package/dist/cjs/components/resize-control/index.js +33 -84
- package/dist/cjs/components/resize-control/resize-button.js +9 -24
- package/dist/cjs/components/resize-control/shadow.js +3 -7
- package/dist/cjs/components/skip-links/index.js +0 -2
- package/dist/cjs/components/skip-links/skip-link-components.js +18 -48
- package/dist/cjs/components/skip-links/use-custom-skip-link.js +3 -8
- package/dist/cjs/components/slots/banner-slot.js +10 -21
- package/dist/cjs/components/slots/content.js +3 -6
- package/dist/cjs/components/slots/internal/left-sidebar-inner.js +9 -14
- package/dist/cjs/components/slots/internal/left-sidebar-outer.js +10 -22
- package/dist/cjs/components/slots/internal/resizable-children-wrapper.js +10 -15
- package/dist/cjs/components/slots/internal/slot-focus-ring.js +5 -8
- package/dist/cjs/components/slots/left-panel.js +9 -20
- package/dist/cjs/components/slots/left-sidebar-without-resize.js +6 -18
- package/dist/cjs/components/slots/left-sidebar.js +39 -75
- package/dist/cjs/components/slots/main.js +9 -23
- package/dist/cjs/components/slots/page-layout.js +7 -16
- package/dist/cjs/components/slots/right-panel.js +9 -20
- package/dist/cjs/components/slots/right-sidebar.js +9 -21
- package/dist/cjs/components/slots/slot-dimensions.js +1 -5
- package/dist/cjs/components/slots/top-navigation.js +10 -21
- package/dist/cjs/controllers/index.js +0 -6
- package/dist/cjs/controllers/sidebar-resize-context.js +6 -21
- package/dist/cjs/controllers/sidebar-resize-controller.js +34 -50
- package/dist/cjs/controllers/skip-link-context.js +2 -12
- package/dist/cjs/controllers/skip-link-controller.js +6 -22
- package/dist/cjs/controllers/use-page-layout-grid.js +6 -12
- package/dist/cjs/controllers/use-update-css-vars.js +0 -3
- package/dist/cjs/index.js +0 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/common/constants.js +8 -4
- package/dist/es2019/common/hooks/use-is-sidebar-collapsing.js +0 -4
- package/dist/es2019/common/hooks/use-is-sidebar-dragging.js +0 -4
- package/dist/es2019/common/safe-local-storage.js +2 -12
- package/dist/es2019/common/utils.js +4 -20
- package/dist/es2019/components/resize-control/grab-area.js +7 -8
- package/dist/es2019/components/resize-control/index.js +26 -43
- package/dist/es2019/components/resize-control/resize-button.js +7 -11
- package/dist/es2019/components/resize-control/shadow.js +3 -3
- package/dist/es2019/components/skip-links/skip-link-components.js +16 -31
- package/dist/es2019/components/slots/banner-slot.js +1 -3
- package/dist/es2019/components/slots/content.js +2 -2
- package/dist/es2019/components/slots/internal/left-sidebar-inner.js +5 -5
- package/dist/es2019/components/slots/internal/left-sidebar-outer.js +1 -4
- package/dist/es2019/components/slots/internal/resizable-children-wrapper.js +4 -4
- package/dist/es2019/components/slots/internal/slot-focus-ring.js +3 -3
- package/dist/es2019/components/slots/left-panel.js +1 -3
- package/dist/es2019/components/slots/left-sidebar-without-resize.js +1 -2
- package/dist/es2019/components/slots/left-sidebar.js +25 -40
- package/dist/es2019/components/slots/main.js +4 -5
- package/dist/es2019/components/slots/page-layout.js +1 -3
- package/dist/es2019/components/slots/right-panel.js +1 -3
- package/dist/es2019/components/slots/right-sidebar.js +3 -5
- package/dist/es2019/components/slots/top-navigation.js +1 -3
- package/dist/es2019/controllers/sidebar-resize-context.js +7 -5
- package/dist/es2019/controllers/sidebar-resize-controller.js +14 -16
- package/dist/es2019/controllers/skip-link-context.js +0 -1
- package/dist/es2019/controllers/skip-link-controller.js +3 -7
- package/dist/es2019/controllers/use-page-layout-grid.js +4 -5
- package/dist/es2019/controllers/use-update-css-vars.js +0 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/common/constants.js +8 -4
- package/dist/esm/common/hooks/use-is-sidebar-collapsing.js +3 -8
- package/dist/esm/common/hooks/use-is-sidebar-dragging.js +3 -8
- package/dist/esm/common/safe-local-storage.js +2 -12
- package/dist/esm/common/utils.js +0 -22
- package/dist/esm/components/resize-control/grab-area.js +9 -14
- package/dist/esm/components/resize-control/index.js +33 -72
- package/dist/esm/components/resize-control/resize-button.js +10 -15
- package/dist/esm/components/resize-control/shadow.js +3 -3
- package/dist/esm/components/skip-links/skip-link-components.js +19 -39
- package/dist/esm/components/skip-links/use-custom-skip-link.js +2 -4
- package/dist/esm/components/slots/banner-slot.js +9 -11
- package/dist/esm/components/slots/content.js +3 -3
- package/dist/esm/components/slots/internal/left-sidebar-inner.js +9 -9
- package/dist/esm/components/slots/internal/left-sidebar-outer.js +9 -12
- package/dist/esm/components/slots/internal/resizable-children-wrapper.js +10 -10
- package/dist/esm/components/slots/internal/slot-focus-ring.js +5 -5
- package/dist/esm/components/slots/left-panel.js +8 -10
- package/dist/esm/components/slots/left-sidebar-without-resize.js +7 -9
- package/dist/esm/components/slots/left-sidebar.js +40 -65
- package/dist/esm/components/slots/main.js +10 -13
- package/dist/esm/components/slots/page-layout.js +6 -10
- package/dist/esm/components/slots/right-panel.js +8 -10
- package/dist/esm/components/slots/right-sidebar.js +10 -12
- package/dist/esm/components/slots/slot-dimensions.js +1 -1
- package/dist/esm/components/slots/top-navigation.js +9 -11
- package/dist/esm/controllers/sidebar-resize-context.js +6 -11
- package/dist/esm/controllers/sidebar-resize-controller.js +34 -38
- package/dist/esm/controllers/skip-link-context.js +2 -4
- package/dist/esm/controllers/skip-link-controller.js +6 -12
- package/dist/esm/controllers/use-page-layout-grid.js +6 -8
- package/dist/esm/controllers/use-update-css-vars.js +0 -2
- package/dist/esm/version.json +1 -1
- package/package.json +2 -2
|
@@ -1,42 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
11
|
var _react = require("react");
|
|
17
|
-
|
|
18
12
|
var _react2 = require("@emotion/react");
|
|
19
|
-
|
|
20
13
|
var _bindEventListener = require("bind-event-listener");
|
|
21
|
-
|
|
22
14
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
23
|
-
|
|
24
15
|
var _constants = require("../../common/constants");
|
|
25
|
-
|
|
26
16
|
var _utils = require("../../common/utils");
|
|
27
|
-
|
|
28
17
|
var _sidebarResizeContext = require("../../controllers/sidebar-resize-context");
|
|
29
|
-
|
|
30
18
|
var _grabArea = _interopRequireDefault(require("./grab-area"));
|
|
31
|
-
|
|
32
19
|
var _resizeButton2 = _interopRequireDefault(require("./resize-button"));
|
|
33
|
-
|
|
34
20
|
var _shadow = _interopRequireDefault(require("./shadow"));
|
|
35
|
-
|
|
36
21
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
37
|
-
|
|
38
22
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
39
|
-
|
|
40
23
|
var cssSelector = (0, _defineProperty2.default)({}, _constants.RESIZE_CONTROL_SELECTOR, true);
|
|
41
24
|
var resizeControlStyles = (0, _react2.css)({
|
|
42
25
|
position: 'absolute',
|
|
@@ -48,62 +31,52 @@ var resizeControlStyles = (0, _react2.css)({
|
|
|
48
31
|
var showResizeButtonStyles = (0, _react2.css)({
|
|
49
32
|
'--ds--resize-button--opacity': 1
|
|
50
33
|
});
|
|
51
|
-
|
|
52
34
|
var ResizeControl = function ResizeControl(_ref) {
|
|
53
35
|
var testId = _ref.testId,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
36
|
+
overrides = _ref.overrides,
|
|
37
|
+
_ref$resizeButtonLabe = _ref.resizeButtonLabel,
|
|
38
|
+
resizeButtonLabel = _ref$resizeButtonLabe === void 0 ? '' : _ref$resizeButtonLabe,
|
|
39
|
+
_ref$resizeGrabAreaLa = _ref.resizeGrabAreaLabel,
|
|
40
|
+
resizeGrabAreaLabel = _ref$resizeGrabAreaLa === void 0 ? 'Resize' : _ref$resizeGrabAreaLa,
|
|
41
|
+
onResizeStart = _ref.onResizeStart,
|
|
42
|
+
onResizeEnd = _ref.onResizeEnd;
|
|
62
43
|
var _useContext = (0, _react.useContext)(_sidebarResizeContext.SidebarResizeContext),
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
44
|
+
expandLeftSidebar = _useContext.expandLeftSidebar,
|
|
45
|
+
collapseLeftSidebar = _useContext.collapseLeftSidebar,
|
|
46
|
+
leftSidebarState = _useContext.leftSidebarState,
|
|
47
|
+
setLeftSidebarState = _useContext.setLeftSidebarState;
|
|
68
48
|
var isLeftSidebarCollapsed = leftSidebarState.isLeftSidebarCollapsed,
|
|
69
|
-
|
|
70
|
-
var x = (0, _react.useRef)(leftSidebarState[_constants.VAR_LEFT_SIDEBAR_WIDTH]);
|
|
71
|
-
|
|
49
|
+
isResizing = leftSidebarState.isResizing;
|
|
50
|
+
var x = (0, _react.useRef)(leftSidebarState[_constants.VAR_LEFT_SIDEBAR_WIDTH]);
|
|
51
|
+
// Distance of mouse from left sidebar onMouseDown
|
|
72
52
|
var offset = (0, _react.useRef)(0);
|
|
73
53
|
var keyboardEventTimeout = (0, _react.useRef)();
|
|
74
|
-
|
|
75
54
|
var _useState = (0, _react.useState)(false),
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
55
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
56
|
+
isGrabAreaFocused = _useState2[0],
|
|
57
|
+
setIsGrabAreaFocused = _useState2[1];
|
|
80
58
|
var unbindEvents = (0, _react.useRef)(null);
|
|
81
|
-
|
|
82
59
|
var toggleSideBar = function toggleSideBar(e) {
|
|
83
60
|
if (isResizing) {
|
|
84
61
|
return;
|
|
85
62
|
}
|
|
86
|
-
|
|
87
63
|
if (isLeftSidebarCollapsed) {
|
|
88
64
|
expandLeftSidebar();
|
|
89
65
|
} else {
|
|
90
66
|
collapseLeftSidebar();
|
|
91
|
-
}
|
|
92
|
-
// "clicked" using enter/space on keyboard.
|
|
93
|
-
|
|
67
|
+
}
|
|
94
68
|
|
|
69
|
+
// Bring focus to the resize button if the grab area is
|
|
70
|
+
// "clicked" using enter/space on keyboard.
|
|
95
71
|
if (e && e.nativeEvent.detail === 0) {
|
|
96
72
|
var _resizeButton = document.querySelector("[".concat(_constants.RESIZE_BUTTON_SELECTOR, "]"));
|
|
97
|
-
|
|
98
73
|
_resizeButton && _resizeButton.focus();
|
|
99
74
|
}
|
|
100
75
|
};
|
|
101
|
-
|
|
102
76
|
var onMouseDown = function onMouseDown(event) {
|
|
103
77
|
if (isLeftSidebarCollapsed) {
|
|
104
78
|
return;
|
|
105
79
|
}
|
|
106
|
-
|
|
107
80
|
offset.current = event.clientX - leftSidebarState[_constants.VAR_LEFT_SIDEBAR_WIDTH] - (0, _utils.getLeftPanelWidth)();
|
|
108
81
|
unbindEvents.current = (0, _bindEventListener.bindAll)(document, [{
|
|
109
82
|
type: 'mousemove',
|
|
@@ -113,18 +86,14 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
113
86
|
listener: onMouseUp
|
|
114
87
|
}]);
|
|
115
88
|
document.documentElement.setAttribute(_constants.IS_SIDEBAR_DRAGGING, 'true');
|
|
116
|
-
|
|
117
89
|
var newLeftbarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, {
|
|
118
90
|
isResizing: true
|
|
119
91
|
});
|
|
120
|
-
|
|
121
92
|
setLeftSidebarState(newLeftbarState);
|
|
122
93
|
onResizeStart && onResizeStart(newLeftbarState);
|
|
123
94
|
};
|
|
124
|
-
|
|
125
95
|
var cancelDrag = function cancelDrag(shouldCollapse) {
|
|
126
96
|
var _unbindEvents$current;
|
|
127
|
-
|
|
128
97
|
onMouseMove.cancel();
|
|
129
98
|
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
|
|
130
99
|
unbindEvents.current = null;
|
|
@@ -132,51 +101,44 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
132
101
|
offset.current = 0;
|
|
133
102
|
collapseLeftSidebar(undefined, true);
|
|
134
103
|
};
|
|
135
|
-
|
|
136
104
|
var onMouseMove = (0, _rafSchd.default)(function (event) {
|
|
137
105
|
// Allow the sidebar to be 50% of the available page width
|
|
138
106
|
var maxWidth = Math.round(window.innerWidth / 2);
|
|
139
107
|
var leftPanelWidth = (0, _utils.getLeftPanelWidth)();
|
|
140
108
|
var leftSidebarWidth = leftSidebarState.leftSidebarWidth;
|
|
141
109
|
var invalidDrag = event.clientX < 0;
|
|
142
|
-
|
|
143
110
|
if (invalidDrag) {
|
|
144
111
|
cancelDrag();
|
|
145
112
|
}
|
|
146
|
-
|
|
147
113
|
var delta = Math.max(Math.min(event.clientX - leftSidebarWidth - leftPanelWidth, maxWidth - leftSidebarWidth - leftPanelWidth), _constants.COLLAPSED_LEFT_SIDEBAR_WIDTH - leftSidebarWidth - leftPanelWidth);
|
|
148
114
|
x.current = Math.max(leftSidebarWidth + delta - offset.current, _constants.COLLAPSED_LEFT_SIDEBAR_WIDTH);
|
|
149
115
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(x.current, "px"));
|
|
150
116
|
});
|
|
151
|
-
|
|
152
117
|
var cleanupAfterResize = function cleanupAfterResize() {
|
|
153
118
|
var _unbindEvents$current2;
|
|
154
|
-
|
|
155
119
|
x.current = 0;
|
|
156
120
|
offset.current = 0;
|
|
157
121
|
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
|
|
158
122
|
unbindEvents.current = null;
|
|
159
123
|
};
|
|
160
|
-
|
|
161
124
|
var updatedLeftSidebarState = {};
|
|
162
|
-
|
|
163
125
|
var onMouseUp = function onMouseUp(event) {
|
|
164
126
|
if (isLeftSidebarCollapsed) {
|
|
165
127
|
return;
|
|
166
128
|
}
|
|
129
|
+
document.documentElement.removeAttribute(_constants.IS_SIDEBAR_DRAGGING);
|
|
167
130
|
|
|
168
|
-
|
|
131
|
+
// If it is dragged to below the threshold,
|
|
169
132
|
// collapse the navigation
|
|
170
|
-
|
|
171
133
|
if (x.current < _constants.MIN_LEFT_SIDEBAR_DRAG_THRESHOLD) {
|
|
172
134
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(_constants.COLLAPSED_LEFT_SIDEBAR_WIDTH, "px"));
|
|
173
135
|
collapseLeftSidebar(undefined, true);
|
|
174
|
-
}
|
|
136
|
+
}
|
|
137
|
+
// If it is dragged to position in between the
|
|
175
138
|
// min threshold and default width
|
|
176
139
|
// expand the nav to the default width
|
|
177
140
|
else if (x.current > _constants.MIN_LEFT_SIDEBAR_DRAG_THRESHOLD && x.current < _constants.DEFAULT_LEFT_SIDEBAR_WIDTH) {
|
|
178
141
|
var _objectSpread2;
|
|
179
|
-
|
|
180
142
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(_constants.DEFAULT_LEFT_SIDEBAR_WIDTH, "px"));
|
|
181
143
|
updatedLeftSidebarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, (_objectSpread2 = {
|
|
182
144
|
isResizing: false
|
|
@@ -184,14 +146,12 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
184
146
|
setLeftSidebarState(updatedLeftSidebarState);
|
|
185
147
|
} else {
|
|
186
148
|
var _objectSpread3;
|
|
187
|
-
|
|
188
149
|
// otherwise resize it to the desired width
|
|
189
150
|
updatedLeftSidebarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, (_objectSpread3 = {
|
|
190
151
|
isResizing: false
|
|
191
152
|
}, (0, _defineProperty2.default)(_objectSpread3, _constants.VAR_LEFT_SIDEBAR_WIDTH, x.current), (0, _defineProperty2.default)(_objectSpread3, "lastLeftSidebarWidth", x.current), _objectSpread3));
|
|
192
153
|
setLeftSidebarState(updatedLeftSidebarState);
|
|
193
154
|
}
|
|
194
|
-
|
|
195
155
|
requestAnimationFrame(function () {
|
|
196
156
|
onMouseMove.cancel();
|
|
197
157
|
setIsGrabAreaFocused(false);
|
|
@@ -199,25 +159,20 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
199
159
|
cleanupAfterResize();
|
|
200
160
|
});
|
|
201
161
|
};
|
|
202
|
-
|
|
203
162
|
var onKeyDown = function onKeyDown(event) {
|
|
204
163
|
if (isLeftSidebarCollapsed || !isGrabAreaFocused) {
|
|
205
164
|
return false;
|
|
206
165
|
}
|
|
207
|
-
|
|
208
166
|
var key = event.key;
|
|
209
167
|
var isLeftOrTopArrow = key === 'ArrowLeft' || key === 'ArrowUp' || key === 'Left' || key === 'Up';
|
|
210
168
|
var isRightOrBottomArrow = key === 'ArrowRight' || key === 'ArrowDown' || key === 'Right' || key === 'Down';
|
|
211
169
|
var isSpaceOrEnter = key === 'Enter' || key === 'Spacebar' || key === ' ';
|
|
212
|
-
|
|
213
170
|
if (isSpaceOrEnter) {
|
|
214
171
|
toggleSideBar(event);
|
|
215
172
|
event.preventDefault();
|
|
216
173
|
}
|
|
217
|
-
|
|
218
174
|
if (isLeftOrTopArrow || isRightOrBottomArrow) {
|
|
219
175
|
event.preventDefault(); // prevent content scroll
|
|
220
|
-
|
|
221
176
|
onResizeStart && onResizeStart(leftSidebarState);
|
|
222
177
|
var step = 10;
|
|
223
178
|
var stepValue = isLeftOrTopArrow ? -step : step;
|
|
@@ -225,7 +180,6 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
225
180
|
var maxWidth = Math.round(window.innerWidth / 2) - (0, _utils.getLeftPanelWidth)();
|
|
226
181
|
var hasModifierKey = event.metaKey || event.altKey || event.ctrlKey || event.shiftKey;
|
|
227
182
|
var width = leftSidebarWidth + stepValue;
|
|
228
|
-
|
|
229
183
|
if (width <= _constants.DEFAULT_LEFT_SIDEBAR_WIDTH) {
|
|
230
184
|
width = _constants.DEFAULT_LEFT_SIDEBAR_WIDTH;
|
|
231
185
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(_constants.DEFAULT_LEFT_SIDEBAR_WIDTH - 20, "px"));
|
|
@@ -234,49 +188,44 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
234
188
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(maxWidth + 20, "px"));
|
|
235
189
|
} else if (hasModifierKey) {
|
|
236
190
|
width = isRightOrBottomArrow ? maxWidth : _constants.DEFAULT_LEFT_SIDEBAR_WIDTH;
|
|
237
|
-
}
|
|
238
|
-
// the browser schedule the setTimeout call in an efficient manner
|
|
239
|
-
|
|
191
|
+
}
|
|
240
192
|
|
|
193
|
+
// Nesting the setTimeout within requestAnimationFrame helps
|
|
194
|
+
// the browser schedule the setTimeout call in an efficient manner
|
|
241
195
|
requestAnimationFrame(function () {
|
|
242
196
|
keyboardEventTimeout.current = window.setTimeout(function () {
|
|
243
197
|
var _objectSpread4;
|
|
244
|
-
|
|
245
198
|
keyboardEventTimeout.current && clearTimeout(keyboardEventTimeout.current);
|
|
246
199
|
document.documentElement.style.setProperty("--".concat(_constants.VAR_LEFT_SIDEBAR_WIDTH), "".concat(width, "px"));
|
|
247
|
-
|
|
248
200
|
var updatedLeftSidebarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, (_objectSpread4 = {}, (0, _defineProperty2.default)(_objectSpread4, _constants.VAR_LEFT_SIDEBAR_WIDTH, width), (0, _defineProperty2.default)(_objectSpread4, "lastLeftSidebarWidth", width), _objectSpread4));
|
|
249
|
-
|
|
250
201
|
setLeftSidebarState(updatedLeftSidebarState);
|
|
251
202
|
onResizeEnd && onResizeEnd(updatedLeftSidebarState);
|
|
252
203
|
}, 50);
|
|
253
204
|
});
|
|
254
205
|
}
|
|
255
206
|
};
|
|
256
|
-
|
|
257
207
|
var onFocus = (0, _react.useCallback)(function () {
|
|
258
208
|
setIsGrabAreaFocused(true);
|
|
259
209
|
}, []);
|
|
260
210
|
var onBlur = (0, _react.useCallback)(function () {
|
|
261
211
|
setIsGrabAreaFocused(false);
|
|
262
212
|
}, []);
|
|
263
|
-
|
|
264
213
|
var resizeButton = _objectSpread({
|
|
265
214
|
render: function render(Component, props) {
|
|
266
215
|
return (0, _react2.jsx)(Component, props);
|
|
267
216
|
}
|
|
268
|
-
}, overrides && overrides.ResizeButton);
|
|
217
|
+
}, overrides && overrides.ResizeButton);
|
|
218
|
+
|
|
219
|
+
// This width is calculated once only on mount.
|
|
269
220
|
// This means resizing the window will cause this value to be incorrect for screen reader users,
|
|
270
221
|
// however this comes with a substantial performance gain and so is considered acceptable.
|
|
271
|
-
|
|
272
|
-
|
|
273
222
|
var maxAriaWidth = (0, _react.useMemo)(function () {
|
|
274
223
|
var innerWidth = typeof window === 'undefined' ? 0 : window.innerWidth;
|
|
275
224
|
return Math.round(innerWidth / 2) - (0, _utils.getLeftPanelWidth)();
|
|
276
225
|
}, []);
|
|
277
226
|
var leftSidebarPercentageExpanded = (0, _utils.getLeftSidebarPercentage)(leftSidebarState.leftSidebarWidth, maxAriaWidth);
|
|
278
|
-
/* eslint-disable jsx-a11y/role-supports-aria-props */
|
|
279
227
|
|
|
228
|
+
/* eslint-disable jsx-a11y/role-supports-aria-props */
|
|
280
229
|
return (0, _react2.jsx)("div", (0, _extends2.default)({}, cssSelector, {
|
|
281
230
|
css: [resizeControlStyles, (isGrabAreaFocused || isLeftSidebarCollapsed) && showResizeButtonStyles]
|
|
282
231
|
}), (0, _react2.jsx)(_shadow.default, {
|
|
@@ -302,8 +251,8 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
302
251
|
testId: testId && "".concat(testId, "-resize-button")
|
|
303
252
|
}));
|
|
304
253
|
/* eslint-enable jsx-a11y/role-supports-aria-props */
|
|
305
|
-
};
|
|
306
|
-
|
|
254
|
+
};
|
|
307
255
|
|
|
256
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
308
257
|
var _default = ResizeControl;
|
|
309
258
|
exports.default = _default;
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
11
|
var _react = require("@emotion/react");
|
|
17
|
-
|
|
18
12
|
var _chevronRight = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-right"));
|
|
19
|
-
|
|
20
13
|
var _curves = require("@atlaskit/motion/curves");
|
|
21
|
-
|
|
22
14
|
var _durations = require("@atlaskit/motion/durations");
|
|
23
|
-
|
|
24
15
|
var _colors = require("@atlaskit/theme/colors");
|
|
25
|
-
|
|
26
16
|
var _constants = require("../../common/constants");
|
|
27
|
-
|
|
28
17
|
var _excluded = ["isLeftSidebarCollapsed", "label", "testId"];
|
|
29
18
|
var increaseHitAreaStyles = (0, _react.css)({
|
|
30
19
|
position: 'absolute',
|
|
@@ -43,7 +32,6 @@ var resizeIconButtonStyles = (0, _react.css)({
|
|
|
43
32
|
backgroundColor: "var(--ds-surface-overlay, ".concat(_colors.N0, ")"),
|
|
44
33
|
border: 0,
|
|
45
34
|
borderRadius: '50%',
|
|
46
|
-
|
|
47
35
|
/**
|
|
48
36
|
* TODO: https://product-fabric.atlassian.net/browse/DSP-3392
|
|
49
37
|
* This shadow needs further investigation,
|
|
@@ -53,7 +41,6 @@ var resizeIconButtonStyles = (0, _react.css)({
|
|
|
53
41
|
boxShadow: "0 0 0 1px ".concat(_colors.N30A, ", 0 2px 4px 1px ").concat(_colors.N30A),
|
|
54
42
|
color: "var(--ds-text-subtle, ".concat(_colors.N200, ")"),
|
|
55
43
|
cursor: 'pointer',
|
|
56
|
-
|
|
57
44
|
/**
|
|
58
45
|
* The fallback value of 0 ensures that the button is hidden by default,
|
|
59
46
|
* unless some parent (or the button itself) overrides it.
|
|
@@ -77,36 +64,34 @@ var resizeIconButtonExpandedStyles = (0, _react.css)({
|
|
|
77
64
|
transform: 'rotate(180deg)',
|
|
78
65
|
transformOrigin: 7
|
|
79
66
|
});
|
|
80
|
-
|
|
81
67
|
var preventDefault = function preventDefault(event) {
|
|
82
68
|
return event.preventDefault();
|
|
83
69
|
};
|
|
84
|
-
|
|
85
70
|
var cssSelector = (0, _defineProperty2.default)({}, _constants.RESIZE_BUTTON_SELECTOR, true);
|
|
86
|
-
|
|
87
71
|
var ResizeButton = function ResizeButton(_ref) {
|
|
88
72
|
var isLeftSidebarCollapsed = _ref.isLeftSidebarCollapsed,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
73
|
+
label = _ref.label,
|
|
74
|
+
testId = _ref.testId,
|
|
75
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
92
76
|
return (0, _react.jsx)("button", (0, _extends2.default)({}, cssSelector, {
|
|
93
77
|
// DO NOT remove. used as a CSS selector.
|
|
94
78
|
"aria-expanded": !isLeftSidebarCollapsed,
|
|
95
79
|
"aria-label": label,
|
|
96
80
|
type: "button",
|
|
97
81
|
css: [resizeIconButtonStyles, !isLeftSidebarCollapsed && resizeIconButtonExpandedStyles],
|
|
98
|
-
"data-testid": testId
|
|
82
|
+
"data-testid": testId
|
|
83
|
+
// Prevents focus staying attached to the button
|
|
99
84
|
// when pressed
|
|
100
85
|
,
|
|
101
|
-
onMouseDown: preventDefault
|
|
102
|
-
|
|
86
|
+
onMouseDown: preventDefault
|
|
87
|
+
// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
103
88
|
}, props), (0, _react.jsx)(_chevronRight.default, {
|
|
104
89
|
label: ""
|
|
105
90
|
}), (0, _react.jsx)("div", {
|
|
106
91
|
css: increaseHitAreaStyles
|
|
107
92
|
}));
|
|
108
|
-
};
|
|
109
|
-
|
|
93
|
+
};
|
|
110
94
|
|
|
95
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
111
96
|
var _default = ResizeButton;
|
|
112
97
|
exports.default = _default;
|
|
@@ -4,14 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("@emotion/react");
|
|
9
|
-
|
|
10
8
|
var _motion = require("@atlaskit/motion");
|
|
11
|
-
|
|
12
9
|
var _hooks = require("../../common/hooks");
|
|
13
|
-
|
|
14
10
|
/** @jsx jsx */
|
|
11
|
+
|
|
15
12
|
var colorStops = "\n rgba(0, 0, 0, 0.2) 0px,\n rgba(0, 0, 0, 0.2) 1px,\n rgba(0, 0, 0, 0.1) 1px,\n rgba(0, 0, 0, 0) 100%\n ";
|
|
16
13
|
var direction = 'to left';
|
|
17
14
|
var transitionDuration = '0.22s';
|
|
@@ -34,7 +31,6 @@ var draggingStyles = (0, _react.css)({
|
|
|
34
31
|
background: "var(--ds-background-neutral-subtle, ".concat("linear-gradient(".concat(direction, ", ").concat(colorStops, ")"), ")"),
|
|
35
32
|
opacity: 0.8
|
|
36
33
|
});
|
|
37
|
-
|
|
38
34
|
var Shadow = function Shadow(_ref) {
|
|
39
35
|
var testId = _ref.testId;
|
|
40
36
|
var isDragging = (0, _hooks.useIsSidebarDragging)();
|
|
@@ -42,8 +38,8 @@ var Shadow = function Shadow(_ref) {
|
|
|
42
38
|
"data-testid": testId,
|
|
43
39
|
css: [shadowStyles, isDragging && draggingStyles]
|
|
44
40
|
});
|
|
45
|
-
};
|
|
46
|
-
|
|
41
|
+
};
|
|
47
42
|
|
|
43
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
48
44
|
var _default = Shadow;
|
|
49
45
|
exports.default = _default;
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.SkipLinkWrapper = exports.SkipLink = void 0;
|
|
9
|
-
|
|
10
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
10
|
var _react = require("@emotion/react");
|
|
15
|
-
|
|
16
11
|
var _motion = require("@atlaskit/motion");
|
|
17
|
-
|
|
18
12
|
var _colors = require("@atlaskit/theme/colors");
|
|
19
|
-
|
|
20
13
|
var _constants = require("../../common/constants");
|
|
21
|
-
|
|
22
14
|
var _controllers = require("../../controllers");
|
|
23
|
-
|
|
24
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
|
-
|
|
28
17
|
// eslint-disable-next-line @repo/internal/react/consistent-css-prop-usage
|
|
29
18
|
var prefersReducedMotionStyles = (0, _react.css)((0, _motion.prefersReducedMotion)());
|
|
30
19
|
var skipLinkStyles = (0, _react.css)({
|
|
@@ -38,7 +27,6 @@ var skipLinkStyles = (0, _react.css)({
|
|
|
38
27
|
borderRadius: 3,
|
|
39
28
|
boxShadow: "var(--ds-shadow-overlay, ".concat("0 0 0 1px ".concat(_colors.N30A, ", 0 2px 10px ").concat(_colors.N30A, ", 0 0 20px -4px ").concat(_colors.N60A), ")"),
|
|
40
29
|
opacity: 0,
|
|
41
|
-
|
|
42
30
|
/* Do the transform when focused */
|
|
43
31
|
transform: 'translateY(-50%)',
|
|
44
32
|
transition: "transform 0.3s ".concat(_motion.easeOut),
|
|
@@ -65,14 +53,13 @@ var skipLinkListStyles = (0, _react.css)({
|
|
|
65
53
|
var skipLinkListItemStyles = (0, _react.css)({
|
|
66
54
|
marginTop: 0
|
|
67
55
|
});
|
|
68
|
-
|
|
69
56
|
var assignIndex = function assignIndex(num, arr) {
|
|
70
57
|
if (!arr.includes(num)) {
|
|
71
58
|
return num;
|
|
72
59
|
}
|
|
73
|
-
|
|
74
60
|
return assignIndex(num + 1, arr);
|
|
75
61
|
};
|
|
62
|
+
|
|
76
63
|
/**
|
|
77
64
|
* The default label will be used when the `skipLinksLabel` attribute is not
|
|
78
65
|
* provided or the attribute is an empty string. If a string comprised only of
|
|
@@ -80,27 +67,20 @@ var assignIndex = function assignIndex(num, arr) {
|
|
|
80
67
|
* default label will still be used in `title` attribute of the skip links
|
|
81
68
|
* themselves.
|
|
82
69
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
70
|
var SkipLinkWrapper = function SkipLinkWrapper(_ref) {
|
|
86
71
|
var skipLinksLabel = _ref.skipLinksLabel;
|
|
87
|
-
|
|
88
72
|
var _useSkipLinks = (0, _controllers.useSkipLinks)(),
|
|
89
|
-
|
|
90
|
-
|
|
73
|
+
skipLinksData = _useSkipLinks.skipLinksData;
|
|
91
74
|
if (skipLinksData.length === 0) {
|
|
92
75
|
return null;
|
|
93
76
|
}
|
|
94
|
-
|
|
95
77
|
var sortSkipLinks = function sortSkipLinks(arr) {
|
|
96
78
|
var customLinks = arr.filter(function (link) {
|
|
97
79
|
return Number.isInteger(link.listIndex);
|
|
98
80
|
});
|
|
99
|
-
|
|
100
81
|
if (customLinks.length === 0) {
|
|
101
82
|
return arr;
|
|
102
83
|
}
|
|
103
|
-
|
|
104
84
|
var usedIndexes = customLinks.map(function (a) {
|
|
105
85
|
return a.listIndex;
|
|
106
86
|
});
|
|
@@ -117,25 +97,20 @@ var SkipLinkWrapper = function SkipLinkWrapper(_ref) {
|
|
|
117
97
|
return a.listIndex - b.listIndex;
|
|
118
98
|
});
|
|
119
99
|
};
|
|
120
|
-
|
|
121
100
|
var escapeHandler = function escapeHandler(event) {
|
|
122
101
|
if (event.keyCode === 27) {
|
|
123
102
|
var container = document.querySelector("[".concat(_constants.PAGE_LAYOUT_CONTAINER_SELECTOR, "=\"true\"]"));
|
|
124
|
-
|
|
125
103
|
if (container !== null) {
|
|
126
104
|
container.focus();
|
|
127
105
|
}
|
|
128
106
|
}
|
|
129
107
|
};
|
|
130
|
-
|
|
131
108
|
var attachEscHandler = function attachEscHandler() {
|
|
132
109
|
return window.addEventListener('keydown', escapeHandler, false);
|
|
133
110
|
};
|
|
134
|
-
|
|
135
111
|
var removeEscHandler = function removeEscHandler() {
|
|
136
112
|
return window.removeEventListener('keydown', escapeHandler, false);
|
|
137
113
|
};
|
|
138
|
-
|
|
139
114
|
var emptyLabelOverride = !!(skipLinksLabel !== null && skipLinksLabel !== void 0 && skipLinksLabel.match(/^\s+$/));
|
|
140
115
|
var label = skipLinksLabel || _constants.DEFAULT_I18N_PROPS_SKIP_LINKS;
|
|
141
116
|
return (0, _react.jsx)("div", {
|
|
@@ -149,7 +124,7 @@ var SkipLinkWrapper = function SkipLinkWrapper(_ref) {
|
|
|
149
124
|
css: skipLinkListStyles
|
|
150
125
|
}, sortSkipLinks(skipLinksData).map(function (_ref2) {
|
|
151
126
|
var id = _ref2.id,
|
|
152
|
-
|
|
127
|
+
skipLinkTitle = _ref2.skipLinkTitle;
|
|
153
128
|
return (0, _react.jsx)(SkipLink, {
|
|
154
129
|
key: id,
|
|
155
130
|
href: "#".concat(id),
|
|
@@ -158,50 +133,46 @@ var SkipLinkWrapper = function SkipLinkWrapper(_ref) {
|
|
|
158
133
|
}, skipLinkTitle);
|
|
159
134
|
})));
|
|
160
135
|
};
|
|
161
|
-
|
|
162
136
|
exports.SkipLinkWrapper = SkipLinkWrapper;
|
|
163
|
-
|
|
164
137
|
var handleBlur = function handleBlur(event) {
|
|
165
138
|
// @ts-ignore
|
|
166
|
-
event.target.removeAttribute('tabindex');
|
|
167
|
-
|
|
139
|
+
event.target.removeAttribute('tabindex');
|
|
140
|
+
// @ts-ignore
|
|
168
141
|
event.target.removeEventListener('blur', handleBlur);
|
|
169
142
|
};
|
|
170
|
-
|
|
171
143
|
var focusTargetRef = function focusTargetRef(href) {
|
|
172
144
|
return function (event) {
|
|
173
145
|
event.preventDefault();
|
|
174
|
-
var targetRef = document.querySelector(href);
|
|
146
|
+
var targetRef = document.querySelector(href);
|
|
175
147
|
|
|
176
|
-
|
|
148
|
+
// @ts-ignore
|
|
149
|
+
var key = event.which || event.keycode;
|
|
150
|
+
// if it is a keypress and the key is not
|
|
177
151
|
// space or enter, just ignore it.
|
|
178
|
-
|
|
179
152
|
if (key && key !== 13 && key !== 32) {
|
|
180
153
|
return;
|
|
181
154
|
}
|
|
182
|
-
|
|
183
155
|
if (targetRef) {
|
|
184
|
-
targetRef.setAttribute('tabindex', '-1');
|
|
185
|
-
|
|
186
|
-
targetRef.addEventListener('blur', handleBlur);
|
|
187
|
-
|
|
156
|
+
targetRef.setAttribute('tabindex', '-1');
|
|
157
|
+
// @ts-ignore
|
|
158
|
+
targetRef.addEventListener('blur', handleBlur);
|
|
159
|
+
// @ts-ignore
|
|
188
160
|
targetRef.focus();
|
|
189
161
|
document.activeElement && document.activeElement.scrollIntoView({
|
|
190
162
|
behavior: 'smooth'
|
|
191
163
|
});
|
|
192
164
|
window.scrollTo(0, 0);
|
|
193
165
|
}
|
|
194
|
-
|
|
195
166
|
return false;
|
|
196
167
|
};
|
|
197
|
-
};
|
|
198
|
-
|
|
168
|
+
};
|
|
199
169
|
|
|
170
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
200
171
|
var SkipLink = function SkipLink(_ref3) {
|
|
201
172
|
var href = _ref3.href,
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
173
|
+
children = _ref3.children,
|
|
174
|
+
isFocusable = _ref3.isFocusable,
|
|
175
|
+
title = _ref3.title;
|
|
205
176
|
return (0, _react.jsx)("li", {
|
|
206
177
|
css: skipLinkListItemStyles
|
|
207
178
|
}, (0, _react.jsx)("a", {
|
|
@@ -211,5 +182,4 @@ var SkipLink = function SkipLink(_ref3) {
|
|
|
211
182
|
title: title
|
|
212
183
|
}, children));
|
|
213
184
|
};
|
|
214
|
-
|
|
215
185
|
exports.SkipLink = SkipLink;
|
|
@@ -4,19 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useCustomSkipLink = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _controllers = require("../../controllers");
|
|
11
|
-
|
|
12
9
|
/** @jsx jsx */
|
|
10
|
+
|
|
13
11
|
var useCustomSkipLink = function useCustomSkipLink(id, skipLinkTitle) {
|
|
14
12
|
var listIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
15
|
-
|
|
16
13
|
var _useSkipLinks = (0, _controllers.useSkipLinks)(),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
registerSkipLink = _useSkipLinks.registerSkipLink,
|
|
15
|
+
unregisterSkipLink = _useSkipLinks.unregisterSkipLink;
|
|
20
16
|
(0, _react.useEffect)(function () {
|
|
21
17
|
registerSkipLink({
|
|
22
18
|
id: id,
|
|
@@ -28,5 +24,4 @@ var useCustomSkipLink = function useCustomSkipLink(id, skipLinkTitle) {
|
|
|
28
24
|
};
|
|
29
25
|
}, [id, listIndex, skipLinkTitle, registerSkipLink, unregisterSkipLink]);
|
|
30
26
|
};
|
|
31
|
-
|
|
32
27
|
exports.useCustomSkipLink = useCustomSkipLink;
|