@atlaskit/page-layout 1.2.4 → 1.2.5
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 +6 -0
- package/dist/cjs/components/resize-control/index.js +19 -6
- package/dist/cjs/controllers/sidebar-resize-controller.js +2 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/resize-control/index.js +17 -6
- package/dist/es2019/components/skip-links/skip-link-components.js +2 -0
- package/dist/es2019/components/slots/left-sidebar.js +2 -0
- package/dist/es2019/controllers/sidebar-resize-controller.js +2 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/resize-control/index.js +18 -6
- package/dist/esm/components/skip-links/skip-link-components.js +2 -0
- package/dist/esm/components/slots/left-sidebar.js +2 -0
- package/dist/esm/controllers/sidebar-resize-controller.js +2 -0
- package/dist/esm/version.json +1 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/page-layout
|
|
2
2
|
|
|
3
|
+
## 1.2.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`e4b612d1c48`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e4b612d1c48) - Internal migration to bind-event-listener for safer DOM Event cleanup
|
|
8
|
+
|
|
3
9
|
## 1.2.4
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -17,6 +17,8 @@ var _react = require("react");
|
|
|
17
17
|
|
|
18
18
|
var _core = require("@emotion/core");
|
|
19
19
|
|
|
20
|
+
var _bindEventListener = require("bind-event-listener");
|
|
21
|
+
|
|
20
22
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
21
23
|
|
|
22
24
|
var _constants = require("../../common/constants");
|
|
@@ -75,6 +77,8 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
75
77
|
isGrabAreaFocused = _useState2[0],
|
|
76
78
|
setIsGrabAreaFocused = _useState2[1];
|
|
77
79
|
|
|
80
|
+
var unbindEvents = (0, _react.useRef)(null);
|
|
81
|
+
|
|
78
82
|
var toggleSideBar = function toggleSideBar(e) {
|
|
79
83
|
if (isResizing) {
|
|
80
84
|
return;
|
|
@@ -101,8 +105,13 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
offset.current = event.clientX - leftSidebarState[_constants.VAR_LEFT_SIDEBAR_WIDTH] - (0, _utils.getLeftPanelWidth)();
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
unbindEvents.current = (0, _bindEventListener.bindAll)(document, [{
|
|
109
|
+
type: 'mousemove',
|
|
110
|
+
listener: onMouseMove
|
|
111
|
+
}, {
|
|
112
|
+
type: 'mouseup',
|
|
113
|
+
listener: onMouseUp
|
|
114
|
+
}]);
|
|
106
115
|
document.documentElement.setAttribute(_constants.IS_SIDEBAR_DRAGGING, 'true');
|
|
107
116
|
|
|
108
117
|
var newLeftbarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, {
|
|
@@ -114,9 +123,11 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
114
123
|
};
|
|
115
124
|
|
|
116
125
|
var cancelDrag = function cancelDrag(shouldCollapse) {
|
|
126
|
+
var _unbindEvents$current;
|
|
127
|
+
|
|
117
128
|
onMouseMove.cancel();
|
|
118
|
-
|
|
119
|
-
|
|
129
|
+
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
|
|
130
|
+
unbindEvents.current = null;
|
|
120
131
|
document.documentElement.removeAttribute(_constants.IS_SIDEBAR_DRAGGING);
|
|
121
132
|
offset.current = 0;
|
|
122
133
|
collapseLeftSidebar(undefined, true);
|
|
@@ -139,10 +150,12 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
139
150
|
});
|
|
140
151
|
|
|
141
152
|
var cleanupAfterResize = function cleanupAfterResize() {
|
|
153
|
+
var _unbindEvents$current2;
|
|
154
|
+
|
|
142
155
|
x.current = 0;
|
|
143
156
|
offset.current = 0;
|
|
144
|
-
|
|
145
|
-
|
|
157
|
+
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
|
|
158
|
+
unbindEvents.current = null;
|
|
146
159
|
};
|
|
147
160
|
|
|
148
161
|
var updatedLeftSidebarState = {};
|
|
@@ -60,6 +60,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
60
60
|
var $leftSidebarResizeController = document.querySelector("[".concat(_constants.GRAB_AREA_SELECTOR, "]"));
|
|
61
61
|
var isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
|
|
62
62
|
handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
|
|
63
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
63
64
|
|
|
64
65
|
document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
|
|
65
66
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -69,6 +70,7 @@ var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
69
70
|
var $leftSidebar = document.querySelector(leftSidebarSelector);
|
|
70
71
|
|
|
71
72
|
if ($leftSidebar && !(0, _motion.isReducedMotion)()) {
|
|
73
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
72
74
|
$leftSidebar.addEventListener('transitionend', transitionEventHandler);
|
|
73
75
|
}
|
|
74
76
|
}, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
|
package/dist/cjs/version.json
CHANGED
|
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
3
3
|
/** @jsx jsx */
|
|
4
4
|
import { useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import { css, jsx } from '@emotion/core';
|
|
6
|
+
import { bindAll } from 'bind-event-listener';
|
|
6
7
|
import rafSchd from 'raf-schd';
|
|
7
8
|
import { COLLAPSED_LEFT_SIDEBAR_WIDTH, DEFAULT_LEFT_SIDEBAR_WIDTH, IS_SIDEBAR_DRAGGING, MIN_LEFT_SIDEBAR_DRAG_THRESHOLD, RESIZE_BUTTON_SELECTOR, RESIZE_CONTROL_SELECTOR, VAR_LEFT_SIDEBAR_WIDTH } from '../../common/constants';
|
|
8
9
|
import { getLeftPanelWidth, getLeftSidebarPercentage } from '../../common/utils';
|
|
@@ -49,6 +50,7 @@ const ResizeControl = ({
|
|
|
49
50
|
const offset = useRef(0);
|
|
50
51
|
const keyboardEventTimeout = useRef();
|
|
51
52
|
const [isGrabAreaFocused, setIsGrabAreaFocused] = useState(false);
|
|
53
|
+
const unbindEvents = useRef(null);
|
|
52
54
|
|
|
53
55
|
const toggleSideBar = e => {
|
|
54
56
|
if (isResizing) {
|
|
@@ -75,8 +77,13 @@ const ResizeControl = ({
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
offset.current = event.clientX - leftSidebarState[VAR_LEFT_SIDEBAR_WIDTH] - getLeftPanelWidth();
|
|
78
|
-
|
|
79
|
-
|
|
80
|
+
unbindEvents.current = bindAll(document, [{
|
|
81
|
+
type: 'mousemove',
|
|
82
|
+
listener: onMouseMove
|
|
83
|
+
}, {
|
|
84
|
+
type: 'mouseup',
|
|
85
|
+
listener: onMouseUp
|
|
86
|
+
}]);
|
|
80
87
|
document.documentElement.setAttribute(IS_SIDEBAR_DRAGGING, 'true');
|
|
81
88
|
const newLeftbarState = { ...leftSidebarState,
|
|
82
89
|
isResizing: true
|
|
@@ -86,9 +93,11 @@ const ResizeControl = ({
|
|
|
86
93
|
};
|
|
87
94
|
|
|
88
95
|
const cancelDrag = shouldCollapse => {
|
|
96
|
+
var _unbindEvents$current;
|
|
97
|
+
|
|
89
98
|
onMouseMove.cancel();
|
|
90
|
-
|
|
91
|
-
|
|
99
|
+
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
|
|
100
|
+
unbindEvents.current = null;
|
|
92
101
|
document.documentElement.removeAttribute(IS_SIDEBAR_DRAGGING);
|
|
93
102
|
offset.current = 0;
|
|
94
103
|
collapseLeftSidebar(undefined, true);
|
|
@@ -113,10 +122,12 @@ const ResizeControl = ({
|
|
|
113
122
|
});
|
|
114
123
|
|
|
115
124
|
const cleanupAfterResize = () => {
|
|
125
|
+
var _unbindEvents$current2;
|
|
126
|
+
|
|
116
127
|
x.current = 0;
|
|
117
128
|
offset.current = 0;
|
|
118
|
-
|
|
119
|
-
|
|
129
|
+
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
|
|
130
|
+
unbindEvents.current = null;
|
|
120
131
|
};
|
|
121
132
|
|
|
122
133
|
let updatedLeftSidebarState = {};
|
|
@@ -34,6 +34,7 @@ export const SidebarResizeController = ({
|
|
|
34
34
|
const $leftSidebarResizeController = document.querySelector(`[${GRAB_AREA_SELECTOR}]`);
|
|
35
35
|
const isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
|
|
36
36
|
handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
|
|
37
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
37
38
|
|
|
38
39
|
document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
|
|
39
40
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -43,6 +44,7 @@ export const SidebarResizeController = ({
|
|
|
43
44
|
const $leftSidebar = document.querySelector(leftSidebarSelector);
|
|
44
45
|
|
|
45
46
|
if ($leftSidebar && !isReducedMotion()) {
|
|
47
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
46
48
|
$leftSidebar.addEventListener('transitionend', transitionEventHandler);
|
|
47
49
|
}
|
|
48
50
|
}, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
|
package/dist/es2019/version.json
CHANGED
|
@@ -9,6 +9,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
9
9
|
/** @jsx jsx */
|
|
10
10
|
import { useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
11
11
|
import { css, jsx } from '@emotion/core';
|
|
12
|
+
import { bindAll } from 'bind-event-listener';
|
|
12
13
|
import rafSchd from 'raf-schd';
|
|
13
14
|
import { COLLAPSED_LEFT_SIDEBAR_WIDTH, DEFAULT_LEFT_SIDEBAR_WIDTH, IS_SIDEBAR_DRAGGING, MIN_LEFT_SIDEBAR_DRAG_THRESHOLD, RESIZE_BUTTON_SELECTOR, RESIZE_CONTROL_SELECTOR, VAR_LEFT_SIDEBAR_WIDTH } from '../../common/constants';
|
|
14
15
|
import { getLeftPanelWidth, getLeftSidebarPercentage } from '../../common/utils';
|
|
@@ -60,6 +61,8 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
60
61
|
isGrabAreaFocused = _useState2[0],
|
|
61
62
|
setIsGrabAreaFocused = _useState2[1];
|
|
62
63
|
|
|
64
|
+
var unbindEvents = useRef(null);
|
|
65
|
+
|
|
63
66
|
var toggleSideBar = function toggleSideBar(e) {
|
|
64
67
|
if (isResizing) {
|
|
65
68
|
return;
|
|
@@ -86,8 +89,13 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
offset.current = event.clientX - leftSidebarState[VAR_LEFT_SIDEBAR_WIDTH] - getLeftPanelWidth();
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
unbindEvents.current = bindAll(document, [{
|
|
93
|
+
type: 'mousemove',
|
|
94
|
+
listener: onMouseMove
|
|
95
|
+
}, {
|
|
96
|
+
type: 'mouseup',
|
|
97
|
+
listener: onMouseUp
|
|
98
|
+
}]);
|
|
91
99
|
document.documentElement.setAttribute(IS_SIDEBAR_DRAGGING, 'true');
|
|
92
100
|
|
|
93
101
|
var newLeftbarState = _objectSpread(_objectSpread({}, leftSidebarState), {}, {
|
|
@@ -99,9 +107,11 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
99
107
|
};
|
|
100
108
|
|
|
101
109
|
var cancelDrag = function cancelDrag(shouldCollapse) {
|
|
110
|
+
var _unbindEvents$current;
|
|
111
|
+
|
|
102
112
|
onMouseMove.cancel();
|
|
103
|
-
|
|
104
|
-
|
|
113
|
+
(_unbindEvents$current = unbindEvents.current) === null || _unbindEvents$current === void 0 ? void 0 : _unbindEvents$current.call(unbindEvents);
|
|
114
|
+
unbindEvents.current = null;
|
|
105
115
|
document.documentElement.removeAttribute(IS_SIDEBAR_DRAGGING);
|
|
106
116
|
offset.current = 0;
|
|
107
117
|
collapseLeftSidebar(undefined, true);
|
|
@@ -124,10 +134,12 @@ var ResizeControl = function ResizeControl(_ref) {
|
|
|
124
134
|
});
|
|
125
135
|
|
|
126
136
|
var cleanupAfterResize = function cleanupAfterResize() {
|
|
137
|
+
var _unbindEvents$current2;
|
|
138
|
+
|
|
127
139
|
x.current = 0;
|
|
128
140
|
offset.current = 0;
|
|
129
|
-
|
|
130
|
-
|
|
141
|
+
(_unbindEvents$current2 = unbindEvents.current) === null || _unbindEvents$current2 === void 0 ? void 0 : _unbindEvents$current2.call(unbindEvents);
|
|
142
|
+
unbindEvents.current = null;
|
|
131
143
|
};
|
|
132
144
|
|
|
133
145
|
var updatedLeftSidebarState = {};
|
|
@@ -5,6 +5,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
5
5
|
|
|
6
6
|
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) { _defineProperty(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; }
|
|
7
7
|
|
|
8
|
+
/* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
|
|
9
|
+
|
|
8
10
|
/** @jsx jsx */
|
|
9
11
|
import { css, jsx } from '@emotion/core';
|
|
10
12
|
import { easeOut, prefersReducedMotion } from '@atlaskit/motion';
|
|
@@ -4,6 +4,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
4
4
|
|
|
5
5
|
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) { _defineProperty(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; }
|
|
6
6
|
|
|
7
|
+
/* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
|
|
8
|
+
|
|
7
9
|
/** @jsx jsx */
|
|
8
10
|
import { useContext, useEffect, useRef } from 'react';
|
|
9
11
|
import { jsx } from '@emotion/core';
|
|
@@ -40,6 +40,7 @@ export var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
40
40
|
var $leftSidebarResizeController = document.querySelector("[".concat(GRAB_AREA_SELECTOR, "]"));
|
|
41
41
|
var isCollapsed = !!$leftSidebarResizeController && $leftSidebarResizeController.hasAttribute('disabled');
|
|
42
42
|
handleDataAttributesAndCb(isCollapsed ? onCollapse : onExpand, isCollapsed, leftSidebarState); // Make sure multiple event handlers do not get attached
|
|
43
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
43
44
|
|
|
44
45
|
document.querySelector(leftSidebarSelector).removeEventListener('transitionend', transitionEventHandler);
|
|
45
46
|
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -49,6 +50,7 @@ export var SidebarResizeController = function SidebarResizeController(_ref) {
|
|
|
49
50
|
var $leftSidebar = document.querySelector(leftSidebarSelector);
|
|
50
51
|
|
|
51
52
|
if ($leftSidebar && !isReducedMotion()) {
|
|
53
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
52
54
|
$leftSidebar.addEventListener('transitionend', transitionEventHandler);
|
|
53
55
|
}
|
|
54
56
|
}, [isLeftSidebarCollapsed, leftSidebarSelector, leftSidebarState, onCollapse, onExpand, transitionEventHandler]);
|
package/dist/esm/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/page-layout",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "A collection of components which let you compose an application's page layout.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"deprecatedAutoEntryPoints": true,
|
|
20
20
|
"releaseModel": "scheduled",
|
|
21
21
|
"website": {
|
|
22
|
-
"name": "Page layout"
|
|
22
|
+
"name": "Page layout",
|
|
23
|
+
"category": "Components"
|
|
23
24
|
}
|
|
24
25
|
},
|
|
25
26
|
"homepage": "https://atlassian.design/components/page-layout/",
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
"@atlaskit/tokens": "^0.10.0",
|
|
31
32
|
"@babel/runtime": "^7.0.0",
|
|
32
33
|
"@emotion/core": "^10.0.9",
|
|
34
|
+
"bind-event-listener": "^2.1.0",
|
|
33
35
|
"raf-schd": "^4.0.3"
|
|
34
36
|
},
|
|
35
37
|
"peerDependencies": {
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
"import-structure": "atlassian-conventions"
|
|
76
78
|
},
|
|
77
79
|
"@repo/internal": {
|
|
80
|
+
"dom-events": "use-bind-event-listener",
|
|
78
81
|
"ui-components": [
|
|
79
82
|
"lite-mode"
|
|
80
83
|
],
|