@atlaskit/popup 4.13.1 → 4.13.3
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 +14 -0
- package/dist/cjs/use-close-manager.js +12 -4
- package/dist/cjs/use-focus-manager.js +1 -1
- package/dist/es2019/use-close-manager.js +10 -4
- package/dist/es2019/use-focus-manager.js +1 -1
- package/dist/esm/use-close-manager.js +12 -4
- package/dist/esm/use-focus-manager.js +1 -1
- package/dist/types/use-get-memoized-merged-trigger-ref-new.d.ts +2 -1
- package/dist/types/use-get-memoized-merged-trigger-ref.d.ts +2 -1
- package/dist/types-ts4.5/use-get-memoized-merged-trigger-ref-new.d.ts +2 -1
- package/dist/types-ts4.5/use-get-memoized-merged-trigger-ref.d.ts +2 -1
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/popup
|
|
2
2
|
|
|
3
|
+
## 4.13.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`77f2151e059b7`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/77f2151e059b7) -
|
|
8
|
+
Ensure focus returns to nested dropdown trigger instead of popup trigger when ESCAPE is used to
|
|
9
|
+
dismiss the dropdown.
|
|
10
|
+
|
|
11
|
+
## 4.13.2
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
|
|
3
17
|
## 4.13.1
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -111,9 +111,18 @@ var useCloseManager = exports.useCloseManager = function useCloseManager(_ref) {
|
|
|
111
111
|
mouseDownTarget.current = event.target;
|
|
112
112
|
};
|
|
113
113
|
var onKeyDown = function onKeyDown(event) {
|
|
114
|
+
var key = event.key;
|
|
115
|
+
if ((key === 'Escape' || key === 'Esc') && (0, _platformFeatureFlags.fg)('platform_dst_nested_escape')) {
|
|
116
|
+
var _eventTarget$closest;
|
|
117
|
+
var eventTarget = event.target instanceof HTMLElement ? event.target : null;
|
|
118
|
+
var layeredAncestor = eventTarget === null || eventTarget === void 0 || (_eventTarget$closest = eventTarget.closest) === null || _eventTarget$closest === void 0 ? void 0 : _eventTarget$closest.call(eventTarget, '[data-ds--level]');
|
|
119
|
+
var levelStr = layeredAncestor === null || layeredAncestor === void 0 ? void 0 : layeredAncestor.getAttribute('data-ds--level');
|
|
120
|
+
if (levelStr && Number(levelStr) > currentLevel) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
114
124
|
if ((0, _platformFeatureFlags.fg)('platform_dst_popup-disable-focuslock')) {
|
|
115
|
-
var
|
|
116
|
-
shiftKey = event.shiftKey;
|
|
125
|
+
var shiftKey = event.shiftKey;
|
|
117
126
|
if (shiftKey && key === 'Tab' && !shouldRenderToParent) {
|
|
118
127
|
if (isLayerDisabled()) {
|
|
119
128
|
return;
|
|
@@ -176,8 +185,7 @@ var useCloseManager = exports.useCloseManager = function useCloseManager(_ref) {
|
|
|
176
185
|
if (isLayerDisabled()) {
|
|
177
186
|
return;
|
|
178
187
|
}
|
|
179
|
-
|
|
180
|
-
if (_key === 'Escape' || _key === 'Esc' || shouldCloseOnTab && _key === 'Tab') {
|
|
188
|
+
if (key === 'Escape' || key === 'Esc' || shouldCloseOnTab && key === 'Tab') {
|
|
181
189
|
closePopup(event);
|
|
182
190
|
}
|
|
183
191
|
}
|
|
@@ -47,7 +47,7 @@ var useFocusManager = exports.useFocusManager = function useFocusManager(_ref) {
|
|
|
47
47
|
}
|
|
48
48
|
var trapConfig = {
|
|
49
49
|
clickOutsideDeactivates: true,
|
|
50
|
-
escapeDeactivates: true,
|
|
50
|
+
escapeDeactivates: (0, _platformFeatureFlags.fg)('platform_dst_nested_escape') ? false : true,
|
|
51
51
|
initialFocus: initialFocusRef || popupRef,
|
|
52
52
|
fallbackFocus: popupRef,
|
|
53
53
|
returnFocusOnDeactivate: shouldReturnFocus
|
|
@@ -108,9 +108,18 @@ export const useCloseManager = ({
|
|
|
108
108
|
mouseDownTarget.current = event.target;
|
|
109
109
|
};
|
|
110
110
|
const onKeyDown = event => {
|
|
111
|
+
const key = event.key;
|
|
112
|
+
if ((key === 'Escape' || key === 'Esc') && fg('platform_dst_nested_escape')) {
|
|
113
|
+
var _eventTarget$closest;
|
|
114
|
+
const eventTarget = event.target instanceof HTMLElement ? event.target : null;
|
|
115
|
+
const layeredAncestor = eventTarget === null || eventTarget === void 0 ? void 0 : (_eventTarget$closest = eventTarget.closest) === null || _eventTarget$closest === void 0 ? void 0 : _eventTarget$closest.call(eventTarget, '[data-ds--level]');
|
|
116
|
+
const levelStr = layeredAncestor === null || layeredAncestor === void 0 ? void 0 : layeredAncestor.getAttribute('data-ds--level');
|
|
117
|
+
if (levelStr && Number(levelStr) > currentLevel) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
111
121
|
if (fg('platform_dst_popup-disable-focuslock')) {
|
|
112
122
|
const {
|
|
113
|
-
key,
|
|
114
123
|
shiftKey
|
|
115
124
|
} = event;
|
|
116
125
|
if (shiftKey && key === 'Tab' && !shouldRenderToParent) {
|
|
@@ -175,9 +184,6 @@ export const useCloseManager = ({
|
|
|
175
184
|
if (isLayerDisabled()) {
|
|
176
185
|
return;
|
|
177
186
|
}
|
|
178
|
-
const {
|
|
179
|
-
key
|
|
180
|
-
} = event;
|
|
181
187
|
if (key === 'Escape' || key === 'Esc' || shouldCloseOnTab && key === 'Tab') {
|
|
182
188
|
closePopup(event);
|
|
183
189
|
}
|
|
@@ -43,7 +43,7 @@ export const useFocusManager = ({
|
|
|
43
43
|
}
|
|
44
44
|
const trapConfig = {
|
|
45
45
|
clickOutsideDeactivates: true,
|
|
46
|
-
escapeDeactivates: true,
|
|
46
|
+
escapeDeactivates: fg('platform_dst_nested_escape') ? false : true,
|
|
47
47
|
initialFocus: initialFocusRef || popupRef,
|
|
48
48
|
fallbackFocus: popupRef,
|
|
49
49
|
returnFocusOnDeactivate: shouldReturnFocus
|
|
@@ -103,9 +103,18 @@ export var useCloseManager = function useCloseManager(_ref) {
|
|
|
103
103
|
mouseDownTarget.current = event.target;
|
|
104
104
|
};
|
|
105
105
|
var onKeyDown = function onKeyDown(event) {
|
|
106
|
+
var key = event.key;
|
|
107
|
+
if ((key === 'Escape' || key === 'Esc') && fg('platform_dst_nested_escape')) {
|
|
108
|
+
var _eventTarget$closest;
|
|
109
|
+
var eventTarget = event.target instanceof HTMLElement ? event.target : null;
|
|
110
|
+
var layeredAncestor = eventTarget === null || eventTarget === void 0 || (_eventTarget$closest = eventTarget.closest) === null || _eventTarget$closest === void 0 ? void 0 : _eventTarget$closest.call(eventTarget, '[data-ds--level]');
|
|
111
|
+
var levelStr = layeredAncestor === null || layeredAncestor === void 0 ? void 0 : layeredAncestor.getAttribute('data-ds--level');
|
|
112
|
+
if (levelStr && Number(levelStr) > currentLevel) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
106
116
|
if (fg('platform_dst_popup-disable-focuslock')) {
|
|
107
|
-
var
|
|
108
|
-
shiftKey = event.shiftKey;
|
|
117
|
+
var shiftKey = event.shiftKey;
|
|
109
118
|
if (shiftKey && key === 'Tab' && !shouldRenderToParent) {
|
|
110
119
|
if (isLayerDisabled()) {
|
|
111
120
|
return;
|
|
@@ -168,8 +177,7 @@ export var useCloseManager = function useCloseManager(_ref) {
|
|
|
168
177
|
if (isLayerDisabled()) {
|
|
169
178
|
return;
|
|
170
179
|
}
|
|
171
|
-
|
|
172
|
-
if (_key === 'Escape' || _key === 'Esc' || shouldCloseOnTab && _key === 'Tab') {
|
|
180
|
+
if (key === 'Escape' || key === 'Esc' || shouldCloseOnTab && key === 'Tab') {
|
|
173
181
|
closePopup(event);
|
|
174
182
|
}
|
|
175
183
|
}
|
|
@@ -40,7 +40,7 @@ export var useFocusManager = function useFocusManager(_ref) {
|
|
|
40
40
|
}
|
|
41
41
|
var trapConfig = {
|
|
42
42
|
clickOutsideDeactivates: true,
|
|
43
|
-
escapeDeactivates: true,
|
|
43
|
+
escapeDeactivates: fg('platform_dst_nested_escape') ? false : true,
|
|
44
44
|
initialFocus: initialFocusRef || popupRef,
|
|
45
45
|
fallbackFocus: popupRef,
|
|
46
46
|
returnFocusOnDeactivate: shouldReturnFocus
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
import { type MemoizedFn } from 'memoize-one';
|
|
2
3
|
/**
|
|
3
4
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
4
5
|
* Used behind ff `platform-design-system-popup-ref` for regular popup.
|
|
5
6
|
* Compositional popup always uses this variant.
|
|
6
7
|
* @returns Function to set trigger ref
|
|
7
8
|
*/
|
|
8
|
-
export declare const useGetMemoizedMergedTriggerRefNew: () =>
|
|
9
|
+
export declare const useGetMemoizedMergedTriggerRefNew: () => MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>) => (node: HTMLElement | null) => void>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
-
|
|
2
|
+
import { type MemoizedFn } from 'memoize-one';
|
|
3
|
+
export declare const useGetMemoizedMergedTriggerRef: () => MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>, isOpen: boolean) => (node: HTMLElement | null) => void>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
import { type MemoizedFn } from 'memoize-one';
|
|
2
3
|
/**
|
|
3
4
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
4
5
|
* Used behind ff `platform-design-system-popup-ref` for regular popup.
|
|
5
6
|
* Compositional popup always uses this variant.
|
|
6
7
|
* @returns Function to set trigger ref
|
|
7
8
|
*/
|
|
8
|
-
export declare const useGetMemoizedMergedTriggerRefNew: () =>
|
|
9
|
+
export declare const useGetMemoizedMergedTriggerRefNew: () => MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>) => (node: HTMLElement | null) => void>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
-
|
|
2
|
+
import { type MemoizedFn } from 'memoize-one';
|
|
3
|
+
export declare const useGetMemoizedMergedTriggerRef: () => MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>, isOpen: boolean) => (node: HTMLElement | null) => void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/popup",
|
|
3
|
-
"version": "4.13.
|
|
3
|
+
"version": "4.13.3",
|
|
4
4
|
"description": "A popup displays brief content in an overlay.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
39
39
|
"@atlaskit/popper": "^7.1.0",
|
|
40
40
|
"@atlaskit/portal": "^5.2.0",
|
|
41
|
-
"@atlaskit/primitives": "^
|
|
42
|
-
"@atlaskit/tokens": "^
|
|
41
|
+
"@atlaskit/primitives": "^18.0.0",
|
|
42
|
+
"@atlaskit/tokens": "^11.0.0",
|
|
43
43
|
"@babel/runtime": "^7.0.0",
|
|
44
44
|
"@compiled/react": "^0.18.6",
|
|
45
45
|
"bind-event-listener": "^3.0.0",
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"@atlaskit/code": "^17.4.0",
|
|
60
60
|
"@atlaskit/docs": "^11.3.0",
|
|
61
61
|
"@atlaskit/form": "^15.3.0",
|
|
62
|
-
"@atlaskit/heading": "^5.
|
|
63
|
-
"@atlaskit/icon": "^
|
|
62
|
+
"@atlaskit/heading": "^5.3.0",
|
|
63
|
+
"@atlaskit/icon": "^30.0.0",
|
|
64
64
|
"@atlaskit/link": "^3.3.0",
|
|
65
65
|
"@atlaskit/modal-dialog": "^14.10.0",
|
|
66
66
|
"@atlaskit/section-message": "^8.12.0",
|
|
@@ -121,6 +121,9 @@
|
|
|
121
121
|
},
|
|
122
122
|
"platform_dst_nav4_flyoutmenuitem_render_to_parent": {
|
|
123
123
|
"type": "boolean"
|
|
124
|
+
},
|
|
125
|
+
"platform_dst_nested_escape": {
|
|
126
|
+
"type": "boolean"
|
|
124
127
|
}
|
|
125
128
|
},
|
|
126
129
|
"homepage": "https://atlassian.design/components/popup/"
|