@atlaskit/onboarding 11.12.3 → 11.13.0
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 +8 -0
- package/dist/cjs/components/node-resolver-spotlight-inner.js +44 -0
- package/dist/cjs/components/node-resolver-spotlight-target.js +48 -0
- package/dist/cjs/components/spotlight-inner.js +4 -2
- package/dist/cjs/components/spotlight-target.js +6 -3
- package/dist/es2019/components/node-resolver-spotlight-inner.js +35 -0
- package/dist/es2019/components/node-resolver-spotlight-target.js +39 -0
- package/dist/es2019/components/spotlight-inner.js +4 -2
- package/dist/es2019/components/spotlight-target.js +6 -3
- package/dist/esm/components/node-resolver-spotlight-inner.js +34 -0
- package/dist/esm/components/node-resolver-spotlight-target.js +38 -0
- package/dist/esm/components/spotlight-inner.js +4 -2
- package/dist/esm/components/spotlight-target.js +6 -3
- package/dist/types/components/node-resolver-spotlight-inner.d.ts +18 -0
- package/dist/types/components/node-resolver-spotlight-target.d.ts +20 -0
- package/dist/types-ts4.5/components/node-resolver-spotlight-inner.d.ts +18 -0
- package/dist/types-ts4.5/components/node-resolver-spotlight-target.d.ts +20 -0
- package/package.json +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/onboarding
|
|
2
2
|
|
|
3
|
+
## 11.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#135285](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/135285)
|
|
8
|
+
[`5129525d797c8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5129525d797c8) -
|
|
9
|
+
DSP-20262 react-node-resolver removal behind ff
|
|
10
|
+
|
|
3
11
|
## 11.12.3
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactNodeResolver = _interopRequireDefault(require("react-node-resolver"));
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
/**
|
|
14
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
15
|
+
*
|
|
16
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
17
|
+
* is intended to be removed once the feature flag is removed.
|
|
18
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
19
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
20
|
+
* @param {(instance: HTMLDivElement) => void} props.innerRef - A ref callback to get the instance of the HTMLDivElement.
|
|
21
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
22
|
+
*/
|
|
23
|
+
var NodeResolverSpotlightInner = function NodeResolverSpotlightInner(_ref) {
|
|
24
|
+
var hasNodeResolver = _ref.hasNodeResolver,
|
|
25
|
+
children = _ref.children,
|
|
26
|
+
innerRef = _ref.innerRef;
|
|
27
|
+
var divRef = (0, _react.useRef)(null);
|
|
28
|
+
(0, _react.useEffect)(function () {
|
|
29
|
+
if (!hasNodeResolver) {
|
|
30
|
+
var _divRef$current;
|
|
31
|
+
innerRef((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
32
|
+
}
|
|
33
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
|
+
}, [hasNodeResolver]);
|
|
35
|
+
if (hasNodeResolver) {
|
|
36
|
+
return /*#__PURE__*/_react.default.createElement(_reactNodeResolver.default, {
|
|
37
|
+
innerRef: innerRef
|
|
38
|
+
}, children);
|
|
39
|
+
}
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
41
|
+
ref: divRef
|
|
42
|
+
}, children);
|
|
43
|
+
};
|
|
44
|
+
var _default = exports.default = NodeResolverSpotlightInner;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactNodeResolver = _interopRequireDefault(require("react-node-resolver"));
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
/**
|
|
14
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
15
|
+
*
|
|
16
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
17
|
+
* is intended to be removed once the feature flag is removed.
|
|
18
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
19
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
20
|
+
* @param {string} props.name - The name to reference from Spotlight.
|
|
21
|
+
* @param {ReactElement} props.targetRef - Setting up Target Node in Spotlight Manager.
|
|
22
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
23
|
+
*/
|
|
24
|
+
var NodeResolverSpotlightTarget = function NodeResolverSpotlightTarget(_ref) {
|
|
25
|
+
var hasNodeResolver = _ref.hasNodeResolver,
|
|
26
|
+
children = _ref.children,
|
|
27
|
+
targetRef = _ref.targetRef,
|
|
28
|
+
name = _ref.name;
|
|
29
|
+
var divRef = (0, _react.useRef)(null);
|
|
30
|
+
(0, _react.useEffect)(function () {
|
|
31
|
+
if (!hasNodeResolver) {
|
|
32
|
+
var _divRef$current;
|
|
33
|
+
targetRef(name)((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
34
|
+
}
|
|
35
|
+
return function () {
|
|
36
|
+
!hasNodeResolver && targetRef(name)(undefined);
|
|
37
|
+
};
|
|
38
|
+
}, [hasNodeResolver, name, targetRef]);
|
|
39
|
+
if (hasNodeResolver) {
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_reactNodeResolver.default, {
|
|
41
|
+
innerRef: targetRef(name)
|
|
42
|
+
}, children);
|
|
43
|
+
}
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
45
|
+
ref: divRef
|
|
46
|
+
}, children);
|
|
47
|
+
};
|
|
48
|
+
var _default = exports.default = NodeResolverSpotlightTarget;
|
|
@@ -15,14 +15,15 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
15
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
16
|
var _react = _interopRequireDefault(require("react"));
|
|
17
17
|
var _exenv = require("exenv");
|
|
18
|
-
var _reactNodeResolver = _interopRequireDefault(require("react-node-resolver"));
|
|
19
18
|
var _reactScrolllock = _interopRequireDefault(require("react-scrolllock"));
|
|
20
19
|
var _scrollIntoViewIfNeeded = _interopRequireDefault(require("scroll-into-view-if-needed"));
|
|
20
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
21
21
|
var _portal = _interopRequireDefault(require("@atlaskit/portal"));
|
|
22
22
|
var _constants = require("@atlaskit/theme/constants");
|
|
23
23
|
var _useElementBox = require("../utils/use-element-box");
|
|
24
24
|
var _animation = require("./animation");
|
|
25
25
|
var _clone = _interopRequireDefault(require("./clone"));
|
|
26
|
+
var _nodeResolverSpotlightInner = _interopRequireDefault(require("./node-resolver-spotlight-inner"));
|
|
26
27
|
var _spotlightDialog = _interopRequireDefault(require("./spotlight-dialog"));
|
|
27
28
|
var _spotlightTransition = require("./spotlight-transition");
|
|
28
29
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -106,7 +107,8 @@ var SpotlightInner = /*#__PURE__*/function (_React$Component) {
|
|
|
106
107
|
onExited = _ref.onExited;
|
|
107
108
|
return /*#__PURE__*/_react.default.createElement(_portal.default, {
|
|
108
109
|
zIndex: _constants.layers.spotlight() + 1
|
|
109
|
-
}, TargetReplacement ? /*#__PURE__*/_react.default.createElement(
|
|
110
|
+
}, TargetReplacement ? /*#__PURE__*/_react.default.createElement(_nodeResolverSpotlightInner.default, {
|
|
111
|
+
hasNodeResolver: !(0, _platformFeatureFlags.fg)('platform-design-system-dsp-20262-spotlight-inner'),
|
|
110
112
|
innerRef: function innerRef(elem) {
|
|
111
113
|
return _this2.setState({
|
|
112
114
|
replacementElement: elem
|
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
|
+
var _nodeResolverSpotlightTarget = _interopRequireDefault(require("./node-resolver-spotlight-target"));
|
|
10
11
|
var _spotlightManager = require("./spotlight-manager");
|
|
11
12
|
/**
|
|
12
13
|
* __Spotlight target__
|
|
@@ -21,8 +22,10 @@ var SpotlightTarget = function SpotlightTarget(_ref) {
|
|
|
21
22
|
var children = _ref.children,
|
|
22
23
|
name = _ref.name;
|
|
23
24
|
return /*#__PURE__*/_react.default.createElement(_spotlightManager.TargetConsumer, null, function (targetRef) {
|
|
24
|
-
return targetRef ? /*#__PURE__*/_react.default.createElement(
|
|
25
|
-
|
|
25
|
+
return targetRef ? /*#__PURE__*/_react.default.createElement(_nodeResolverSpotlightTarget.default, {
|
|
26
|
+
name: name,
|
|
27
|
+
hasNodeResolver: !(0, _platformFeatureFlags.fg)('platform-design-system-dsp-20262-spotlight-target'),
|
|
28
|
+
targetRef: targetRef
|
|
26
29
|
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children)) : children;
|
|
27
30
|
});
|
|
28
31
|
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import NodeResolver from 'react-node-resolver';
|
|
3
|
+
/**
|
|
4
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
5
|
+
*
|
|
6
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
7
|
+
* is intended to be removed once the feature flag is removed.
|
|
8
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
9
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
10
|
+
* @param {(instance: HTMLDivElement) => void} props.innerRef - A ref callback to get the instance of the HTMLDivElement.
|
|
11
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
12
|
+
*/
|
|
13
|
+
const NodeResolverSpotlightInner = ({
|
|
14
|
+
hasNodeResolver,
|
|
15
|
+
children,
|
|
16
|
+
innerRef
|
|
17
|
+
}) => {
|
|
18
|
+
const divRef = useRef(null);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!hasNodeResolver) {
|
|
21
|
+
var _divRef$current;
|
|
22
|
+
innerRef((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
25
|
+
}, [hasNodeResolver]);
|
|
26
|
+
if (hasNodeResolver) {
|
|
27
|
+
return /*#__PURE__*/React.createElement(NodeResolver, {
|
|
28
|
+
innerRef: innerRef
|
|
29
|
+
}, children);
|
|
30
|
+
}
|
|
31
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
32
|
+
ref: divRef
|
|
33
|
+
}, children);
|
|
34
|
+
};
|
|
35
|
+
export default NodeResolverSpotlightInner;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import NodeResolver from 'react-node-resolver';
|
|
3
|
+
/**
|
|
4
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
5
|
+
*
|
|
6
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
7
|
+
* is intended to be removed once the feature flag is removed.
|
|
8
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
9
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
10
|
+
* @param {string} props.name - The name to reference from Spotlight.
|
|
11
|
+
* @param {ReactElement} props.targetRef - Setting up Target Node in Spotlight Manager.
|
|
12
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
13
|
+
*/
|
|
14
|
+
const NodeResolverSpotlightTarget = ({
|
|
15
|
+
hasNodeResolver,
|
|
16
|
+
children,
|
|
17
|
+
targetRef,
|
|
18
|
+
name
|
|
19
|
+
}) => {
|
|
20
|
+
const divRef = useRef(null);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!hasNodeResolver) {
|
|
23
|
+
var _divRef$current;
|
|
24
|
+
targetRef(name)((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
25
|
+
}
|
|
26
|
+
return () => {
|
|
27
|
+
!hasNodeResolver && targetRef(name)(undefined);
|
|
28
|
+
};
|
|
29
|
+
}, [hasNodeResolver, name, targetRef]);
|
|
30
|
+
if (hasNodeResolver) {
|
|
31
|
+
return /*#__PURE__*/React.createElement(NodeResolver, {
|
|
32
|
+
innerRef: targetRef(name)
|
|
33
|
+
}, children);
|
|
34
|
+
}
|
|
35
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
36
|
+
ref: divRef
|
|
37
|
+
}, children);
|
|
38
|
+
};
|
|
39
|
+
export default NodeResolverSpotlightTarget;
|
|
@@ -2,14 +2,15 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { canUseDOM } from 'exenv';
|
|
5
|
-
import NodeResovler from 'react-node-resolver';
|
|
6
5
|
import ScrollLock from 'react-scrolllock';
|
|
7
6
|
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
8
|
import Portal from '@atlaskit/portal';
|
|
9
9
|
import { layers } from '@atlaskit/theme/constants';
|
|
10
10
|
import { ElementBox } from '../utils/use-element-box';
|
|
11
11
|
import { Fade } from './animation';
|
|
12
12
|
import Clone from './clone';
|
|
13
|
+
import NodeResolverSpotlightInner from './node-resolver-spotlight-inner';
|
|
13
14
|
import SpotlightDialog from './spotlight-dialog';
|
|
14
15
|
import { SpotlightTransitionConsumer } from './spotlight-transition';
|
|
15
16
|
/**
|
|
@@ -76,7 +77,8 @@ class SpotlightInner extends React.Component {
|
|
|
76
77
|
onExited
|
|
77
78
|
}) => /*#__PURE__*/React.createElement(Portal, {
|
|
78
79
|
zIndex: layers.spotlight() + 1
|
|
79
|
-
}, TargetReplacement ? /*#__PURE__*/React.createElement(
|
|
80
|
+
}, TargetReplacement ? /*#__PURE__*/React.createElement(NodeResolverSpotlightInner, {
|
|
81
|
+
hasNodeResolver: !fg('platform-design-system-dsp-20262-spotlight-inner'),
|
|
80
82
|
innerRef: elem => this.setState({
|
|
81
83
|
replacementElement: elem
|
|
82
84
|
})
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
|
+
import NodeResolverSpotlightTarget from './node-resolver-spotlight-target';
|
|
3
4
|
import { TargetConsumer } from './spotlight-manager';
|
|
4
5
|
/**
|
|
5
6
|
* __Spotlight target__
|
|
@@ -13,7 +14,9 @@ import { TargetConsumer } from './spotlight-manager';
|
|
|
13
14
|
const SpotlightTarget = ({
|
|
14
15
|
children,
|
|
15
16
|
name
|
|
16
|
-
}) => /*#__PURE__*/React.createElement(TargetConsumer, null, targetRef => targetRef ? /*#__PURE__*/React.createElement(
|
|
17
|
-
|
|
17
|
+
}) => /*#__PURE__*/React.createElement(TargetConsumer, null, targetRef => targetRef ? /*#__PURE__*/React.createElement(NodeResolverSpotlightTarget, {
|
|
18
|
+
name: name,
|
|
19
|
+
hasNodeResolver: !fg('platform-design-system-dsp-20262-spotlight-target'),
|
|
20
|
+
targetRef: targetRef
|
|
18
21
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, children)) : children);
|
|
19
22
|
export default SpotlightTarget;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import NodeResolver from 'react-node-resolver';
|
|
3
|
+
/**
|
|
4
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
5
|
+
*
|
|
6
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
7
|
+
* is intended to be removed once the feature flag is removed.
|
|
8
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
9
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
10
|
+
* @param {(instance: HTMLDivElement) => void} props.innerRef - A ref callback to get the instance of the HTMLDivElement.
|
|
11
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
12
|
+
*/
|
|
13
|
+
var NodeResolverSpotlightInner = function NodeResolverSpotlightInner(_ref) {
|
|
14
|
+
var hasNodeResolver = _ref.hasNodeResolver,
|
|
15
|
+
children = _ref.children,
|
|
16
|
+
innerRef = _ref.innerRef;
|
|
17
|
+
var divRef = useRef(null);
|
|
18
|
+
useEffect(function () {
|
|
19
|
+
if (!hasNodeResolver) {
|
|
20
|
+
var _divRef$current;
|
|
21
|
+
innerRef((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
22
|
+
}
|
|
23
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, [hasNodeResolver]);
|
|
25
|
+
if (hasNodeResolver) {
|
|
26
|
+
return /*#__PURE__*/React.createElement(NodeResolver, {
|
|
27
|
+
innerRef: innerRef
|
|
28
|
+
}, children);
|
|
29
|
+
}
|
|
30
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
31
|
+
ref: divRef
|
|
32
|
+
}, children);
|
|
33
|
+
};
|
|
34
|
+
export default NodeResolverSpotlightInner;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import NodeResolver from 'react-node-resolver';
|
|
3
|
+
/**
|
|
4
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
5
|
+
*
|
|
6
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
7
|
+
* is intended to be removed once the feature flag is removed.
|
|
8
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
9
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
10
|
+
* @param {string} props.name - The name to reference from Spotlight.
|
|
11
|
+
* @param {ReactElement} props.targetRef - Setting up Target Node in Spotlight Manager.
|
|
12
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
13
|
+
*/
|
|
14
|
+
var NodeResolverSpotlightTarget = function NodeResolverSpotlightTarget(_ref) {
|
|
15
|
+
var hasNodeResolver = _ref.hasNodeResolver,
|
|
16
|
+
children = _ref.children,
|
|
17
|
+
targetRef = _ref.targetRef,
|
|
18
|
+
name = _ref.name;
|
|
19
|
+
var divRef = useRef(null);
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
if (!hasNodeResolver) {
|
|
22
|
+
var _divRef$current;
|
|
23
|
+
targetRef(name)((_divRef$current = divRef.current) === null || _divRef$current === void 0 ? void 0 : _divRef$current.firstElementChild);
|
|
24
|
+
}
|
|
25
|
+
return function () {
|
|
26
|
+
!hasNodeResolver && targetRef(name)(undefined);
|
|
27
|
+
};
|
|
28
|
+
}, [hasNodeResolver, name, targetRef]);
|
|
29
|
+
if (hasNodeResolver) {
|
|
30
|
+
return /*#__PURE__*/React.createElement(NodeResolver, {
|
|
31
|
+
innerRef: targetRef(name)
|
|
32
|
+
}, children);
|
|
33
|
+
}
|
|
34
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
35
|
+
ref: divRef
|
|
36
|
+
}, children);
|
|
37
|
+
};
|
|
38
|
+
export default NodeResolverSpotlightTarget;
|
|
@@ -12,14 +12,15 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
12
12
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
13
|
import React from 'react';
|
|
14
14
|
import { canUseDOM } from 'exenv';
|
|
15
|
-
import NodeResovler from 'react-node-resolver';
|
|
16
15
|
import ScrollLock from 'react-scrolllock';
|
|
17
16
|
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
17
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
18
18
|
import Portal from '@atlaskit/portal';
|
|
19
19
|
import { layers } from '@atlaskit/theme/constants';
|
|
20
20
|
import { ElementBox } from '../utils/use-element-box';
|
|
21
21
|
import { Fade } from './animation';
|
|
22
22
|
import Clone from './clone';
|
|
23
|
+
import NodeResolverSpotlightInner from './node-resolver-spotlight-inner';
|
|
23
24
|
import SpotlightDialog from './spotlight-dialog';
|
|
24
25
|
import { SpotlightTransitionConsumer } from './spotlight-transition';
|
|
25
26
|
/**
|
|
@@ -99,7 +100,8 @@ var SpotlightInner = /*#__PURE__*/function (_React$Component) {
|
|
|
99
100
|
onExited = _ref.onExited;
|
|
100
101
|
return /*#__PURE__*/React.createElement(Portal, {
|
|
101
102
|
zIndex: layers.spotlight() + 1
|
|
102
|
-
}, TargetReplacement ? /*#__PURE__*/React.createElement(
|
|
103
|
+
}, TargetReplacement ? /*#__PURE__*/React.createElement(NodeResolverSpotlightInner, {
|
|
104
|
+
hasNodeResolver: !fg('platform-design-system-dsp-20262-spotlight-inner'),
|
|
103
105
|
innerRef: function innerRef(elem) {
|
|
104
106
|
return _this2.setState({
|
|
105
107
|
replacementElement: elem
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
|
+
import NodeResolverSpotlightTarget from './node-resolver-spotlight-target';
|
|
3
4
|
import { TargetConsumer } from './spotlight-manager';
|
|
4
5
|
/**
|
|
5
6
|
* __Spotlight target__
|
|
@@ -14,8 +15,10 @@ var SpotlightTarget = function SpotlightTarget(_ref) {
|
|
|
14
15
|
var children = _ref.children,
|
|
15
16
|
name = _ref.name;
|
|
16
17
|
return /*#__PURE__*/React.createElement(TargetConsumer, null, function (targetRef) {
|
|
17
|
-
return targetRef ? /*#__PURE__*/React.createElement(
|
|
18
|
-
|
|
18
|
+
return targetRef ? /*#__PURE__*/React.createElement(NodeResolverSpotlightTarget, {
|
|
19
|
+
name: name,
|
|
20
|
+
hasNodeResolver: !fg('platform-design-system-dsp-20262-spotlight-target'),
|
|
21
|
+
targetRef: targetRef
|
|
19
22
|
}, /*#__PURE__*/React.createElement(React.Fragment, null, children)) : children;
|
|
20
23
|
});
|
|
21
24
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
interface NodeResolverSpotlightInnerProps {
|
|
3
|
+
hasNodeResolver: boolean;
|
|
4
|
+
innerRef: (element: HTMLElement | null) => void;
|
|
5
|
+
children: ReactElement;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
9
|
+
*
|
|
10
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
11
|
+
* is intended to be removed once the feature flag is removed.
|
|
12
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
13
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
14
|
+
* @param {(instance: HTMLDivElement) => void} props.innerRef - A ref callback to get the instance of the HTMLDivElement.
|
|
15
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
16
|
+
*/
|
|
17
|
+
declare const NodeResolverSpotlightInner: ({ hasNodeResolver, children, innerRef, }: NodeResolverSpotlightInnerProps) => JSX.Element;
|
|
18
|
+
export default NodeResolverSpotlightInner;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
interface NodeResolverSpotlightTargetProps {
|
|
3
|
+
hasNodeResolver: boolean;
|
|
4
|
+
children: ReactElement;
|
|
5
|
+
targetRef: (name: string) => (element: Element | null | undefined) => void;
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
10
|
+
*
|
|
11
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
12
|
+
* is intended to be removed once the feature flag is removed.
|
|
13
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
14
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
15
|
+
* @param {string} props.name - The name to reference from Spotlight.
|
|
16
|
+
* @param {ReactElement} props.targetRef - Setting up Target Node in Spotlight Manager.
|
|
17
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
18
|
+
*/
|
|
19
|
+
declare const NodeResolverSpotlightTarget: ({ hasNodeResolver, children, targetRef, name, }: NodeResolverSpotlightTargetProps) => JSX.Element;
|
|
20
|
+
export default NodeResolverSpotlightTarget;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
interface NodeResolverSpotlightInnerProps {
|
|
3
|
+
hasNodeResolver: boolean;
|
|
4
|
+
innerRef: (element: HTMLElement | null) => void;
|
|
5
|
+
children: ReactElement;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
9
|
+
*
|
|
10
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
11
|
+
* is intended to be removed once the feature flag is removed.
|
|
12
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
13
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
14
|
+
* @param {(instance: HTMLDivElement) => void} props.innerRef - A ref callback to get the instance of the HTMLDivElement.
|
|
15
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
16
|
+
*/
|
|
17
|
+
declare const NodeResolverSpotlightInner: ({ hasNodeResolver, children, innerRef, }: NodeResolverSpotlightInnerProps) => JSX.Element;
|
|
18
|
+
export default NodeResolverSpotlightInner;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
interface NodeResolverSpotlightTargetProps {
|
|
3
|
+
hasNodeResolver: boolean;
|
|
4
|
+
children: ReactElement;
|
|
5
|
+
targetRef: (name: string) => (element: Element | null | undefined) => void;
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A wrapper component that conditionally applies a NodeResolver to its children.
|
|
10
|
+
*
|
|
11
|
+
* Note: NodeResolver should not be used in React 18 concurrent mode. This component
|
|
12
|
+
* is intended to be removed once the feature flag is removed.
|
|
13
|
+
* @param {boolean} props.hasNodeResolver - Determines whether to apply the NodeResolver.
|
|
14
|
+
* @param {ReactElement} props.children - The child elements to be wrapped.
|
|
15
|
+
* @param {string} props.name - The name to reference from Spotlight.
|
|
16
|
+
* @param {ReactElement} props.targetRef - Setting up Target Node in Spotlight Manager.
|
|
17
|
+
* @returns {ReactElement} The children wrapped with NodeResolver if hasNodeResolver is true, wrape the children in a div setting innerRef with ref to the div.
|
|
18
|
+
*/
|
|
19
|
+
declare const NodeResolverSpotlightTarget: ({ hasNodeResolver, children, targetRef, name, }: NodeResolverSpotlightTargetProps) => JSX.Element;
|
|
20
|
+
export default NodeResolverSpotlightTarget;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/onboarding",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.13.0",
|
|
4
4
|
"description": "An onboarding spotlight introduces new features to users through focused messages or multi-step tours.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -85,6 +85,12 @@
|
|
|
85
85
|
"platform-feature-flags": {
|
|
86
86
|
"platform.design-system.refresh-spotlight-on-interval": {
|
|
87
87
|
"type": "boolean"
|
|
88
|
+
},
|
|
89
|
+
"platform-design-system-dsp-20262-spotlight-inner": {
|
|
90
|
+
"type": "boolean"
|
|
91
|
+
},
|
|
92
|
+
"platform-design-system-dsp-20262-spotlight-target": {
|
|
93
|
+
"type": "boolean"
|
|
88
94
|
}
|
|
89
95
|
},
|
|
90
96
|
"techstack": {
|