@atlaskit/onboarding 11.12.3 → 11.14.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 +15 -0
- package/dist/cjs/components/animation.js +7 -2
- 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/animation.js +31 -24
- 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/animation.js +7 -2
- 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 +12 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/onboarding
|
|
2
2
|
|
|
3
|
+
## 11.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`2d1da097bd763`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2d1da097bd763) -
|
|
8
|
+
DSP-20687 removing usage of findDOMNode in react-transition-group behind ff
|
|
9
|
+
|
|
10
|
+
## 11.13.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [#135285](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/135285)
|
|
15
|
+
[`5129525d797c8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5129525d797c8) -
|
|
16
|
+
DSP-20262 react-node-resolver removal behind ff
|
|
17
|
+
|
|
3
18
|
## 11.12.3
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -5,9 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.Fade = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _react = _interopRequireDefault(require("react"));
|
|
10
11
|
var _reactTransitionGroup = require("react-transition-group");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
13
|
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; }
|
|
12
14
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
15
|
var duration = {
|
|
@@ -25,13 +27,16 @@ var Fade = exports.Fade = function Fade(_ref) {
|
|
|
25
27
|
var hasEntered = _ref.hasEntered,
|
|
26
28
|
children = _ref.children,
|
|
27
29
|
onExited = _ref.onExited;
|
|
28
|
-
|
|
30
|
+
var nodeRef = _react.default.useRef(null);
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.Transition, (0, _extends2.default)({
|
|
29
32
|
in: hasEntered,
|
|
30
33
|
timeout: duration,
|
|
31
34
|
onExited: onExited,
|
|
32
35
|
unmountOnExit: true,
|
|
33
36
|
appear: true
|
|
34
|
-
},
|
|
37
|
+
}, (0, _platformFeatureFlags.fg)('platform-design-system-dsp-20687-transition-group') && {
|
|
38
|
+
nodeRef: nodeRef
|
|
39
|
+
}), function (status) {
|
|
35
40
|
var base = {
|
|
36
41
|
transition: "opacity ".concat(duration.exit, "ms"),
|
|
37
42
|
opacity: 0
|
|
@@ -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
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { Transition } from 'react-transition-group';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
5
|
const duration = {
|
|
4
6
|
enter: 0,
|
|
5
7
|
exit: 100
|
|
@@ -15,28 +17,33 @@ export const Fade = ({
|
|
|
15
17
|
hasEntered,
|
|
16
18
|
children,
|
|
17
19
|
onExited
|
|
18
|
-
}) =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
opacity: 1
|
|
32
|
-
},
|
|
33
|
-
exiting: {
|
|
20
|
+
}) => {
|
|
21
|
+
const nodeRef = React.useRef(null);
|
|
22
|
+
return /*#__PURE__*/React.createElement(Transition, _extends({
|
|
23
|
+
in: hasEntered,
|
|
24
|
+
timeout: duration,
|
|
25
|
+
onExited: onExited,
|
|
26
|
+
unmountOnExit: true,
|
|
27
|
+
appear: true
|
|
28
|
+
}, fg('platform-design-system-dsp-20687-transition-group') && {
|
|
29
|
+
nodeRef
|
|
30
|
+
}), status => {
|
|
31
|
+
const base = {
|
|
32
|
+
transition: `opacity ${duration.exit}ms`,
|
|
34
33
|
opacity: 0
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
34
|
+
};
|
|
35
|
+
const anim = {
|
|
36
|
+
entered: {
|
|
37
|
+
opacity: 1
|
|
38
|
+
},
|
|
39
|
+
exiting: {
|
|
40
|
+
opacity: 0
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const style = {
|
|
44
|
+
...base,
|
|
45
|
+
...anim[status]
|
|
46
|
+
};
|
|
47
|
+
return children(style);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
@@ -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;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
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; }
|
|
3
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
5
|
import React from 'react';
|
|
5
6
|
import { Transition } from 'react-transition-group';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
8
|
var duration = {
|
|
7
9
|
enter: 0,
|
|
8
10
|
exit: 100
|
|
@@ -18,13 +20,16 @@ export var Fade = function Fade(_ref) {
|
|
|
18
20
|
var hasEntered = _ref.hasEntered,
|
|
19
21
|
children = _ref.children,
|
|
20
22
|
onExited = _ref.onExited;
|
|
21
|
-
|
|
23
|
+
var nodeRef = React.useRef(null);
|
|
24
|
+
return /*#__PURE__*/React.createElement(Transition, _extends({
|
|
22
25
|
in: hasEntered,
|
|
23
26
|
timeout: duration,
|
|
24
27
|
onExited: onExited,
|
|
25
28
|
unmountOnExit: true,
|
|
26
29
|
appear: true
|
|
27
|
-
},
|
|
30
|
+
}, fg('platform-design-system-dsp-20687-transition-group') && {
|
|
31
|
+
nodeRef: nodeRef
|
|
32
|
+
}), function (status) {
|
|
28
33
|
var base = {
|
|
29
34
|
transition: "opacity ".concat(duration.exit, "ms"),
|
|
30
35
|
opacity: 0
|
|
@@ -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.14.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/"
|
|
@@ -29,10 +29,6 @@
|
|
|
29
29
|
"homepage": "https://atlassian.design/components/onboarding/",
|
|
30
30
|
"atlassian": {
|
|
31
31
|
"team": "Design System Team",
|
|
32
|
-
"releaseModel": "continuous",
|
|
33
|
-
"productPushConsumption": [
|
|
34
|
-
"jira"
|
|
35
|
-
],
|
|
36
32
|
"website": {
|
|
37
33
|
"name": "Onboarding (spotlight)",
|
|
38
34
|
"category": "Components"
|
|
@@ -46,9 +42,9 @@
|
|
|
46
42
|
"@atlaskit/modal-dialog": "^12.15.0",
|
|
47
43
|
"@atlaskit/motion": "^1.9.0",
|
|
48
44
|
"@atlaskit/platform-feature-flags": "^0.3.0",
|
|
49
|
-
"@atlaskit/popper": "^6.
|
|
45
|
+
"@atlaskit/popper": "^6.3.0",
|
|
50
46
|
"@atlaskit/portal": "^4.9.0",
|
|
51
|
-
"@atlaskit/primitives": "^12.
|
|
47
|
+
"@atlaskit/primitives": "^12.1.0",
|
|
52
48
|
"@atlaskit/theme": "^13.0.0",
|
|
53
49
|
"@atlaskit/tokens": "^1.59.0",
|
|
54
50
|
"@babel/runtime": "^7.0.0",
|
|
@@ -85,6 +81,15 @@
|
|
|
85
81
|
"platform-feature-flags": {
|
|
86
82
|
"platform.design-system.refresh-spotlight-on-interval": {
|
|
87
83
|
"type": "boolean"
|
|
84
|
+
},
|
|
85
|
+
"platform-design-system-dsp-20262-spotlight-inner": {
|
|
86
|
+
"type": "boolean"
|
|
87
|
+
},
|
|
88
|
+
"platform-design-system-dsp-20262-spotlight-target": {
|
|
89
|
+
"type": "boolean"
|
|
90
|
+
},
|
|
91
|
+
"platform-design-system-dsp-20687-transition-group": {
|
|
92
|
+
"type": "boolean"
|
|
88
93
|
}
|
|
89
94
|
},
|
|
90
95
|
"techstack": {
|