@atlaskit/popup 4.5.0 → 4.6.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 +21 -0
- package/dist/cjs/compositional/popup.js +4 -1
- package/dist/cjs/use-get-memoized-merged-trigger-ref-new.js +2 -1
- package/dist/es2019/compositional/popup.js +4 -1
- package/dist/es2019/use-get-memoized-merged-trigger-ref-new.js +2 -1
- package/dist/esm/compositional/popup.js +4 -1
- package/dist/esm/use-get-memoized-merged-trigger-ref-new.js +2 -1
- package/dist/types/types.d.ts +4 -0
- package/dist/types/use-get-memoized-merged-trigger-ref-new.d.ts +2 -1
- package/dist/types-ts4.5/types.d.ts +4 -0
- package/dist/types-ts4.5/use-get-memoized-merged-trigger-ref-new.d.ts +2 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/popup
|
|
2
2
|
|
|
3
|
+
## 4.6.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`a0bb84bfd5321`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a0bb84bfd5321) -
|
|
8
|
+
Updated JSDocs for the `setInitialFocusRef` property.
|
|
9
|
+
|
|
10
|
+
## 4.6.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [`bfdf7891c505f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/bfdf7891c505f) -
|
|
15
|
+
Fixes a bug with the compositional popup where focus was not being returned to the trigger when
|
|
16
|
+
the popup is closed. This was occurring in React 18 Strict Mode.
|
|
17
|
+
|
|
18
|
+
The regular popup was already using this fix behind the `platform-design-system-popup-ref` feature
|
|
19
|
+
gate.
|
|
20
|
+
|
|
21
|
+
This change to compositional popup is behind the feature gate
|
|
22
|
+
`platform-dst-popup-compositional-trigger-ref`.
|
|
23
|
+
|
|
3
24
|
## 4.5.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -13,11 +13,13 @@ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
|
|
|
13
13
|
var _useId = require("@atlaskit/ds-lib/use-id");
|
|
14
14
|
var _layering = require("@atlaskit/layering");
|
|
15
15
|
var _openLayerObserver = require("@atlaskit/layering/experimental/open-layer-observer");
|
|
16
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
17
|
var _popper = require("@atlaskit/popper");
|
|
17
18
|
var _portal = _interopRequireDefault(require("@atlaskit/portal"));
|
|
18
19
|
var _popperWrapper = _interopRequireDefault(require("../popper-wrapper"));
|
|
19
20
|
var _useAppearance = require("../use-appearance");
|
|
20
21
|
var _useGetMemoizedMergedTriggerRef = require("../use-get-memoized-merged-trigger-ref");
|
|
22
|
+
var _useGetMemoizedMergedTriggerRefNew = require("../use-get-memoized-merged-trigger-ref-new");
|
|
21
23
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
22
24
|
var IsOpenContext = /*#__PURE__*/(0, _react.createContext)(false);
|
|
23
25
|
var IdContext = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
@@ -87,10 +89,11 @@ var PopupTrigger = exports.PopupTrigger = function PopupTrigger(_ref2) {
|
|
|
87
89
|
var id = (0, _react.useContext)(IdContext);
|
|
88
90
|
var setTriggerRef = (0, _react.useContext)(SetTriggerRefContext);
|
|
89
91
|
var getMergedTriggerRef = (0, _useGetMemoizedMergedTriggerRef.useGetMemoizedMergedTriggerRef)();
|
|
92
|
+
var getMergedTriggerRefNew = (0, _useGetMemoizedMergedTriggerRefNew.useGetMemoizedMergedTriggerRefNew)();
|
|
90
93
|
return /*#__PURE__*/_react.default.createElement(_popper.Reference, null, function (_ref3) {
|
|
91
94
|
var ref = _ref3.ref;
|
|
92
95
|
return children({
|
|
93
|
-
ref: getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
96
|
+
ref: (0, _platformFeatureFlags.fg)('platform-dst-popup-compositional-trigger-ref') ? getMergedTriggerRefNew(ref, setTriggerRef) : getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
94
97
|
'aria-controls': id,
|
|
95
98
|
'aria-expanded': isOpen,
|
|
96
99
|
'aria-haspopup': true
|
|
@@ -10,7 +10,8 @@ var _react = require("react");
|
|
|
10
10
|
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
11
11
|
/**
|
|
12
12
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
13
|
-
* Implemented behind ff `platform-design-system-popup-ref`
|
|
13
|
+
* Implemented behind ff `platform-design-system-popup-ref` (for regular popup) and
|
|
14
|
+
* `platform-dst-popup-compositional-trigger-ref` (for compositional popup)
|
|
14
15
|
* @returns Function to set trigger ref
|
|
15
16
|
*/
|
|
16
17
|
var useGetMemoizedMergedTriggerRefNew = exports.useGetMemoizedMergedTriggerRefNew = function useGetMemoizedMergedTriggerRefNew() {
|
|
@@ -4,11 +4,13 @@ import noop from '@atlaskit/ds-lib/noop';
|
|
|
4
4
|
import { useId } from '@atlaskit/ds-lib/use-id';
|
|
5
5
|
import { Layering } from '@atlaskit/layering';
|
|
6
6
|
import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
8
|
import { Manager, Reference } from '@atlaskit/popper';
|
|
8
9
|
import Portal from '@atlaskit/portal';
|
|
9
10
|
import PopperWrapper from '../popper-wrapper';
|
|
10
11
|
import { usePopupAppearance } from '../use-appearance';
|
|
11
12
|
import { useGetMemoizedMergedTriggerRef } from '../use-get-memoized-merged-trigger-ref';
|
|
13
|
+
import { useGetMemoizedMergedTriggerRefNew } from '../use-get-memoized-merged-trigger-ref-new';
|
|
12
14
|
const IsOpenContext = /*#__PURE__*/createContext(false);
|
|
13
15
|
const IdContext = /*#__PURE__*/createContext(undefined);
|
|
14
16
|
const TriggerRefContext = /*#__PURE__*/createContext(null);
|
|
@@ -75,10 +77,11 @@ export const PopupTrigger = ({
|
|
|
75
77
|
const id = useContext(IdContext);
|
|
76
78
|
const setTriggerRef = useContext(SetTriggerRefContext);
|
|
77
79
|
const getMergedTriggerRef = useGetMemoizedMergedTriggerRef();
|
|
80
|
+
const getMergedTriggerRefNew = useGetMemoizedMergedTriggerRefNew();
|
|
78
81
|
return /*#__PURE__*/React.createElement(Reference, null, ({
|
|
79
82
|
ref
|
|
80
83
|
}) => children({
|
|
81
|
-
ref: getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
84
|
+
ref: fg('platform-dst-popup-compositional-trigger-ref') ? getMergedTriggerRefNew(ref, setTriggerRef) : getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
82
85
|
'aria-controls': id,
|
|
83
86
|
'aria-expanded': isOpen,
|
|
84
87
|
'aria-haspopup': true
|
|
@@ -3,7 +3,8 @@ import memoizeOne from 'memoize-one';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
6
|
-
* Implemented behind ff `platform-design-system-popup-ref`
|
|
6
|
+
* Implemented behind ff `platform-design-system-popup-ref` (for regular popup) and
|
|
7
|
+
* `platform-dst-popup-compositional-trigger-ref` (for compositional popup)
|
|
7
8
|
* @returns Function to set trigger ref
|
|
8
9
|
*/
|
|
9
10
|
export const useGetMemoizedMergedTriggerRefNew = () => {
|
|
@@ -5,11 +5,13 @@ import noop from '@atlaskit/ds-lib/noop';
|
|
|
5
5
|
import { useId } from '@atlaskit/ds-lib/use-id';
|
|
6
6
|
import { Layering } from '@atlaskit/layering';
|
|
7
7
|
import { useNotifyOpenLayerObserver } from '@atlaskit/layering/experimental/open-layer-observer';
|
|
8
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
9
|
import { Manager, Reference } from '@atlaskit/popper';
|
|
9
10
|
import Portal from '@atlaskit/portal';
|
|
10
11
|
import PopperWrapper from '../popper-wrapper';
|
|
11
12
|
import { usePopupAppearance } from '../use-appearance';
|
|
12
13
|
import { useGetMemoizedMergedTriggerRef } from '../use-get-memoized-merged-trigger-ref';
|
|
14
|
+
import { useGetMemoizedMergedTriggerRefNew } from '../use-get-memoized-merged-trigger-ref-new';
|
|
13
15
|
var IsOpenContext = /*#__PURE__*/createContext(false);
|
|
14
16
|
var IdContext = /*#__PURE__*/createContext(undefined);
|
|
15
17
|
var TriggerRefContext = /*#__PURE__*/createContext(null);
|
|
@@ -78,10 +80,11 @@ export var PopupTrigger = function PopupTrigger(_ref2) {
|
|
|
78
80
|
var id = useContext(IdContext);
|
|
79
81
|
var setTriggerRef = useContext(SetTriggerRefContext);
|
|
80
82
|
var getMergedTriggerRef = useGetMemoizedMergedTriggerRef();
|
|
83
|
+
var getMergedTriggerRefNew = useGetMemoizedMergedTriggerRefNew();
|
|
81
84
|
return /*#__PURE__*/React.createElement(Reference, null, function (_ref3) {
|
|
82
85
|
var ref = _ref3.ref;
|
|
83
86
|
return children({
|
|
84
|
-
ref: getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
87
|
+
ref: fg('platform-dst-popup-compositional-trigger-ref') ? getMergedTriggerRefNew(ref, setTriggerRef) : getMergedTriggerRef(ref, setTriggerRef, isOpen),
|
|
85
88
|
'aria-controls': id,
|
|
86
89
|
'aria-expanded': isOpen,
|
|
87
90
|
'aria-haspopup': true
|
|
@@ -4,7 +4,8 @@ import memoizeOne from 'memoize-one';
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
7
|
-
* Implemented behind ff `platform-design-system-popup-ref`
|
|
7
|
+
* Implemented behind ff `platform-design-system-popup-ref` (for regular popup) and
|
|
8
|
+
* `platform-dst-popup-compositional-trigger-ref` (for compositional popup)
|
|
8
9
|
* @returns Function to set trigger ref
|
|
9
10
|
*/
|
|
10
11
|
export var useGetMemoizedMergedTriggerRefNew = function useGetMemoizedMergedTriggerRefNew() {
|
package/dist/types/types.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ export interface ContentProps {
|
|
|
39
39
|
onClose?: BaseProps['onClose'];
|
|
40
40
|
/**
|
|
41
41
|
* Escape hatch to set the initial focus for a specific element, when the popup is opened.
|
|
42
|
+
*
|
|
43
|
+
* The specified element needs to be available in the DOM as soon as the popup is opened, otherwise it
|
|
44
|
+
* will not be focused upon. This means it will not work for content that renders into the popup content
|
|
45
|
+
* after it has already opened (e.g. async or lazy loaded content).
|
|
42
46
|
*/
|
|
43
47
|
setInitialFocusRef: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
44
48
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
4
|
-
* Implemented behind ff `platform-design-system-popup-ref`
|
|
4
|
+
* Implemented behind ff `platform-design-system-popup-ref` (for regular popup) and
|
|
5
|
+
* `platform-dst-popup-compositional-trigger-ref` (for compositional popup)
|
|
5
6
|
* @returns Function to set trigger ref
|
|
6
7
|
*/
|
|
7
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>;
|
|
@@ -39,6 +39,10 @@ export interface ContentProps {
|
|
|
39
39
|
onClose?: BaseProps['onClose'];
|
|
40
40
|
/**
|
|
41
41
|
* Escape hatch to set the initial focus for a specific element, when the popup is opened.
|
|
42
|
+
*
|
|
43
|
+
* The specified element needs to be available in the DOM as soon as the popup is opened, otherwise it
|
|
44
|
+
* will not be focused upon. This means it will not work for content that renders into the popup content
|
|
45
|
+
* after it has already opened (e.g. async or lazy loaded content).
|
|
42
46
|
*/
|
|
43
47
|
setInitialFocusRef: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
44
48
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
|
|
4
|
-
* Implemented behind ff `platform-design-system-popup-ref`
|
|
4
|
+
* Implemented behind ff `platform-design-system-popup-ref` (for regular popup) and
|
|
5
|
+
* `platform-dst-popup-compositional-trigger-ref` (for compositional popup)
|
|
5
6
|
* @returns Function to set trigger ref
|
|
6
7
|
*/
|
|
7
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>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/popup",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.1",
|
|
4
4
|
"description": "A popup displays brief content in an overlay.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@atlaskit/icon": "^28.5.0",
|
|
64
64
|
"@atlaskit/link": "^3.2.0",
|
|
65
65
|
"@atlaskit/modal-dialog": "^14.6.0",
|
|
66
|
-
"@atlaskit/section-message": "^8.
|
|
66
|
+
"@atlaskit/section-message": "^8.9.0",
|
|
67
67
|
"@atlaskit/ssr": "workspace:^",
|
|
68
68
|
"@atlaskit/textfield": "^8.0.0",
|
|
69
69
|
"@atlaskit/toggle": "^15.1.0",
|
|
@@ -117,6 +117,9 @@
|
|
|
117
117
|
},
|
|
118
118
|
"popup-onclose-fix": {
|
|
119
119
|
"type": "boolean"
|
|
120
|
+
},
|
|
121
|
+
"platform-dst-popup-compositional-trigger-ref": {
|
|
122
|
+
"type": "boolean"
|
|
120
123
|
}
|
|
121
124
|
},
|
|
122
125
|
"homepage": "https://atlassian.design/components/popup/"
|