@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 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 key = event.key,
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
- var _key = event.key;
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 key = event.key,
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
- var _key = event.key;
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: () => import("memoize-one").MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>) => (node: HTMLElement | null) => void>;
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
- export declare const useGetMemoizedMergedTriggerRef: () => import("memoize-one").MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>, isOpen: boolean) => (node: HTMLElement | null) => void>;
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: () => import("memoize-one").MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>) => (node: HTMLElement | null) => void>;
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
- export declare const useGetMemoizedMergedTriggerRef: () => import("memoize-one").MemoizedFn<(ref: React.RefCallback<HTMLElement> | React.MutableRefObject<HTMLElement> | null, setTriggerRef: Dispatch<SetStateAction<HTMLElement | null>>, isOpen: boolean) => (node: HTMLElement | null) => void>;
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.1",
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": "^17.1.0",
42
- "@atlaskit/tokens": "^10.0.0",
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.2.0",
63
- "@atlaskit/icon": "^29.4.0",
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/"