@atlaskit/popup 4.22.0 → 4.22.1
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
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/popup
|
|
2
2
|
|
|
3
|
+
## 4.22.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`ae5198c2f44ed`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ae5198c2f44ed) -
|
|
8
|
+
Fix @atlaskit/popup containing a portal-rendered child overlay (Drawer, Modal, etc.) now correctly
|
|
9
|
+
ignores clicks inside that overlay
|
|
10
|
+
|
|
3
11
|
## 4.22.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -68,23 +68,45 @@ var useCloseManager = exports.useCloseManager = function useCloseManager(_ref) {
|
|
|
68
68
|
if (!doesDomNodeExist) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
if (
|
|
71
|
+
if ((0, _platformFeatureFlags.fg)('jsmgrowth_popup_fix')) {
|
|
72
72
|
if (target instanceof HTMLElement) {
|
|
73
73
|
var _target$closest;
|
|
74
74
|
var layeredElement = (_target$closest = target.closest) === null || _target$closest === void 0 ? void 0 : _target$closest.call(target, "[data-ds--level]");
|
|
75
75
|
if (layeredElement) {
|
|
76
|
-
var closeType = layeredElement.getAttribute('
|
|
77
|
-
if (closeType === 'single') {
|
|
76
|
+
var closeType = layeredElement.getAttribute('data-ds--close--type');
|
|
77
|
+
if (closeType === 'single' && isLayerDisabled()) {
|
|
78
78
|
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
var levelOfClickedLayer = layeredElement.getAttribute('data-ds--level');
|
|
82
82
|
if (levelOfClickedLayer && Number(levelOfClickedLayer) > currentLevel) {
|
|
83
|
-
//
|
|
83
|
+
// Don't close this popup when the click landed inside a higher-level layer
|
|
84
|
+
// (e.g. a Drawer or Modal that portals to <body>). Such nodes are not DOM
|
|
85
|
+
// descendants of popupRef, so the contains() checks below would wrongly
|
|
86
|
+
// classify them as "outside" clicks and close the popup prematurely.
|
|
84
87
|
return;
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
}
|
|
91
|
+
} else {
|
|
92
|
+
if (isLayerDisabled()) {
|
|
93
|
+
if (target instanceof HTMLElement) {
|
|
94
|
+
var _target$closest2;
|
|
95
|
+
var _layeredElement = (_target$closest2 = target.closest) === null || _target$closest2 === void 0 ? void 0 : _target$closest2.call(target, "[data-ds--level]");
|
|
96
|
+
if (_layeredElement) {
|
|
97
|
+
var _closeType = _layeredElement.getAttribute('[data-ds--close--type]');
|
|
98
|
+
if (_closeType === 'single') {
|
|
99
|
+
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
var _levelOfClickedLayer = _layeredElement.getAttribute('data-ds--level');
|
|
103
|
+
if (_levelOfClickedLayer && Number(_levelOfClickedLayer) > currentLevel) {
|
|
104
|
+
// won't trigger onClick event when we click in a higher layer.
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
88
110
|
}
|
|
89
111
|
var isClickOnPopup = popupRef && popupRef.contains(target);
|
|
90
112
|
var isClickOnTrigger = triggerRef && triggerRef.contains(target);
|
|
@@ -65,23 +65,45 @@ export const useCloseManager = ({
|
|
|
65
65
|
if (!doesDomNodeExist) {
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
|
-
if (
|
|
68
|
+
if (fg('jsmgrowth_popup_fix')) {
|
|
69
69
|
if (target instanceof HTMLElement) {
|
|
70
70
|
var _target$closest;
|
|
71
71
|
const layeredElement = (_target$closest = target.closest) === null || _target$closest === void 0 ? void 0 : _target$closest.call(target, `[data-ds--level]`);
|
|
72
72
|
if (layeredElement) {
|
|
73
|
-
const closeType = layeredElement.getAttribute('
|
|
74
|
-
if (closeType === 'single') {
|
|
73
|
+
const closeType = layeredElement.getAttribute('data-ds--close--type');
|
|
74
|
+
if (closeType === 'single' && isLayerDisabled()) {
|
|
75
75
|
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
78
|
const levelOfClickedLayer = layeredElement.getAttribute('data-ds--level');
|
|
79
79
|
if (levelOfClickedLayer && Number(levelOfClickedLayer) > currentLevel) {
|
|
80
|
-
//
|
|
80
|
+
// Don't close this popup when the click landed inside a higher-level layer
|
|
81
|
+
// (e.g. a Drawer or Modal that portals to <body>). Such nodes are not DOM
|
|
82
|
+
// descendants of popupRef, so the contains() checks below would wrongly
|
|
83
|
+
// classify them as "outside" clicks and close the popup prematurely.
|
|
81
84
|
return;
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
}
|
|
88
|
+
} else {
|
|
89
|
+
if (isLayerDisabled()) {
|
|
90
|
+
if (target instanceof HTMLElement) {
|
|
91
|
+
var _target$closest2;
|
|
92
|
+
const layeredElement = (_target$closest2 = target.closest) === null || _target$closest2 === void 0 ? void 0 : _target$closest2.call(target, `[data-ds--level]`);
|
|
93
|
+
if (layeredElement) {
|
|
94
|
+
const closeType = layeredElement.getAttribute('[data-ds--close--type]');
|
|
95
|
+
if (closeType === 'single') {
|
|
96
|
+
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const levelOfClickedLayer = layeredElement.getAttribute('data-ds--level');
|
|
100
|
+
if (levelOfClickedLayer && Number(levelOfClickedLayer) > currentLevel) {
|
|
101
|
+
// won't trigger onClick event when we click in a higher layer.
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
85
107
|
}
|
|
86
108
|
const isClickOnPopup = popupRef && popupRef.contains(target);
|
|
87
109
|
const isClickOnTrigger = triggerRef && triggerRef.contains(target);
|
|
@@ -60,23 +60,45 @@ export var useCloseManager = function useCloseManager(_ref) {
|
|
|
60
60
|
if (!doesDomNodeExist) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
if (
|
|
63
|
+
if (fg('jsmgrowth_popup_fix')) {
|
|
64
64
|
if (target instanceof HTMLElement) {
|
|
65
65
|
var _target$closest;
|
|
66
66
|
var layeredElement = (_target$closest = target.closest) === null || _target$closest === void 0 ? void 0 : _target$closest.call(target, "[data-ds--level]");
|
|
67
67
|
if (layeredElement) {
|
|
68
|
-
var closeType = layeredElement.getAttribute('
|
|
69
|
-
if (closeType === 'single') {
|
|
68
|
+
var closeType = layeredElement.getAttribute('data-ds--close--type');
|
|
69
|
+
if (closeType === 'single' && isLayerDisabled()) {
|
|
70
70
|
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
var levelOfClickedLayer = layeredElement.getAttribute('data-ds--level');
|
|
74
74
|
if (levelOfClickedLayer && Number(levelOfClickedLayer) > currentLevel) {
|
|
75
|
-
//
|
|
75
|
+
// Don't close this popup when the click landed inside a higher-level layer
|
|
76
|
+
// (e.g. a Drawer or Modal that portals to <body>). Such nodes are not DOM
|
|
77
|
+
// descendants of popupRef, so the contains() checks below would wrongly
|
|
78
|
+
// classify them as "outside" clicks and close the popup prematurely.
|
|
76
79
|
return;
|
|
77
80
|
}
|
|
78
81
|
}
|
|
79
82
|
}
|
|
83
|
+
} else {
|
|
84
|
+
if (isLayerDisabled()) {
|
|
85
|
+
if (target instanceof HTMLElement) {
|
|
86
|
+
var _target$closest2;
|
|
87
|
+
var _layeredElement = (_target$closest2 = target.closest) === null || _target$closest2 === void 0 ? void 0 : _target$closest2.call(target, "[data-ds--level]");
|
|
88
|
+
if (_layeredElement) {
|
|
89
|
+
var _closeType = _layeredElement.getAttribute('[data-ds--close--type]');
|
|
90
|
+
if (_closeType === 'single') {
|
|
91
|
+
// if the close type is single, we won't close other disabled layers when clicking outside
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
var _levelOfClickedLayer = _layeredElement.getAttribute('data-ds--level');
|
|
95
|
+
if (_levelOfClickedLayer && Number(_levelOfClickedLayer) > currentLevel) {
|
|
96
|
+
// won't trigger onClick event when we click in a higher layer.
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
80
102
|
}
|
|
81
103
|
var isClickOnPopup = popupRef && popupRef.contains(target);
|
|
82
104
|
var isClickOnTrigger = triggerRef && triggerRef.contains(target);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/popup",
|
|
3
|
-
"version": "4.22.
|
|
3
|
+
"version": "4.22.1",
|
|
4
4
|
"description": "A popup displays brief content in an overlay.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"@atlaskit/docs": "^11.8.0",
|
|
70
70
|
"@atlaskit/form": "^15.5.0",
|
|
71
71
|
"@atlaskit/heading": "^5.4.0",
|
|
72
|
-
"@atlaskit/icon": "^35.
|
|
72
|
+
"@atlaskit/icon": "^35.3.0",
|
|
73
73
|
"@atlaskit/link": "^3.4.0",
|
|
74
74
|
"@atlaskit/modal-dialog": "^15.2.0",
|
|
75
75
|
"@atlaskit/section-message": "^8.13.0",
|
|
@@ -114,6 +114,9 @@
|
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
"platform-feature-flags": {
|
|
117
|
+
"jsmgrowth_popup_fix": {
|
|
118
|
+
"type": "boolean"
|
|
119
|
+
},
|
|
117
120
|
"platform-dst-top-layer": {
|
|
118
121
|
"type": "boolean"
|
|
119
122
|
},
|