@atlaskit/progress-tracker 8.9.2 → 8.9.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 +9 -0
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/progress-tracker.js +96 -118
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/progress-tracker.js +80 -84
- package/dist/esm/index.js +1 -1
- package/dist/esm/progress-tracker.js +97 -120
- package/dist/types/index.d.ts +1 -1
- package/dist/types/progress-tracker.d.ts +15 -37
- package/dist/types-ts4.5/index.d.ts +1 -1
- package/dist/types-ts4.5/progress-tracker.d.ts +15 -37
- package/package.json +1 -4
- package/dist/cjs/progress-tracker-facade.js +0 -29
- package/dist/cjs/progress-tracker-new.js +0 -129
- package/dist/es2019/progress-tracker-facade.js +0 -21
- package/dist/es2019/progress-tracker-new.js +0 -110
- package/dist/esm/progress-tracker-facade.js +0 -22
- package/dist/esm/progress-tracker-new.js +0 -126
- package/dist/types/progress-tracker-facade.d.ts +0 -15
- package/dist/types/progress-tracker-new.d.ts +0 -43
- package/dist/types-ts4.5/progress-tracker-facade.d.ts +0 -15
- package/dist/types-ts4.5/progress-tracker-new.d.ts +0 -43
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlaskit/progress-tracker
|
|
2
2
|
|
|
3
|
+
## 8.9.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#145688](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/145688)
|
|
8
|
+
[`8b5cef4cf858b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8b5cef4cf858b) -
|
|
9
|
+
Removal of FF platform-progress-tracker-functional-facade which was added during the functional
|
|
10
|
+
component conversion
|
|
11
|
+
|
|
3
12
|
## 8.9.2
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
Object.defineProperty(exports, "ProgressTracker", {
|
|
8
8
|
enumerable: true,
|
|
9
9
|
get: function get() {
|
|
10
|
-
return
|
|
10
|
+
return _progressTracker.default;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
var
|
|
13
|
+
var _progressTracker = _interopRequireDefault(require("./progress-tracker"));
|
|
@@ -5,12 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
9
|
var _react = require("react");
|
|
16
10
|
var _react2 = require("@emotion/react");
|
|
@@ -19,16 +13,13 @@ var _constants2 = require("./internal/constants");
|
|
|
19
13
|
var _link = _interopRequireDefault(require("./internal/link"));
|
|
20
14
|
var _stage = _interopRequireDefault(require("./internal/stage"));
|
|
21
15
|
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; }
|
|
22
|
-
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; }
|
|
23
|
-
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
24
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable @atlaskit/design-system/no-nested-styles */ /**
|
|
16
|
+
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; } /* eslint-disable @atlaskit/design-system/no-nested-styles */ /**
|
|
25
17
|
* @jsxRuntime classic
|
|
26
18
|
* @jsx jsx
|
|
27
19
|
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
28
20
|
var containerStyles = (0, _react2.css)({
|
|
29
21
|
display: 'grid',
|
|
30
22
|
width: '100%',
|
|
31
|
-
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
|
|
32
23
|
margin: '0 auto',
|
|
33
24
|
padding: "var(--ds-space-0, 0px)",
|
|
34
25
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
@@ -39,113 +30,100 @@ var containerStyles = (0, _react2.css)({
|
|
|
39
30
|
marginBlockStart: "var(--ds-space-500, 40px)"
|
|
40
31
|
}
|
|
41
32
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
33
|
+
/**
|
|
34
|
+
* __Progress tracker__
|
|
35
|
+
*
|
|
36
|
+
* A progress tracker displays the steps and progress through a journey.
|
|
37
|
+
*
|
|
38
|
+
* - [Examples](https://atlassian.design/components/progress-tracker/examples)
|
|
39
|
+
* - [Code](https://atlassian.design/components/progress-tracker/code)
|
|
40
|
+
* - [Usage](https://atlassian.design/components/progress-tracker/usage)
|
|
41
|
+
*/
|
|
42
|
+
var ProgressTracker = function ProgressTracker(_ref) {
|
|
43
|
+
var _listInlineStyles;
|
|
44
|
+
var _ref$items = _ref.items,
|
|
45
|
+
items = _ref$items === void 0 ? [] : _ref$items,
|
|
46
|
+
_ref$spacing = _ref.spacing,
|
|
47
|
+
spacing = _ref$spacing === void 0 ? 'cosy' : _ref$spacing,
|
|
48
|
+
_ref$render = _ref.render,
|
|
49
|
+
render = _ref$render === void 0 ? {
|
|
50
|
+
// Anchor content is coming from another location
|
|
51
|
+
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
|
52
|
+
link: function link(_ref2) {
|
|
53
|
+
var item = _ref2.item;
|
|
54
|
+
return (0, _react2.jsx)(_link.default, item);
|
|
55
|
+
}
|
|
56
|
+
} : _ref$render,
|
|
57
|
+
_ref$animated = _ref.animated,
|
|
58
|
+
animated = _ref$animated === void 0 ? true : _ref$animated,
|
|
59
|
+
testId = _ref.testId,
|
|
60
|
+
_ref$label = _ref.label,
|
|
61
|
+
label = _ref$label === void 0 ? 'Progress' : _ref$label;
|
|
62
|
+
var prevItems = (0, _react.useRef)(items.map(function (stage) {
|
|
63
|
+
return _objectSpread(_objectSpread({}, stage), {}, {
|
|
64
|
+
percentageComplete: 0
|
|
58
65
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (stage.percentageComplete < _this3.state.prevStages[index].percentageComplete) {
|
|
101
|
-
/**
|
|
102
|
-
* Load each transition sequentially in reverse.
|
|
103
|
-
*/
|
|
104
|
-
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
105
|
-
stepsBack -= 1;
|
|
106
|
-
} else if (stage.percentageComplete > _this3.state.prevStages[index].percentageComplete) {
|
|
107
|
-
/**
|
|
108
|
-
* Load each transition sequentially.
|
|
109
|
-
*/
|
|
110
|
-
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
111
|
-
stepsForward -= 1;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return (0, _react2.jsx)(_stage.default, {
|
|
115
|
-
transitionSpeed: transitionSpeed,
|
|
116
|
-
transitionDelay: transitionDelay,
|
|
117
|
-
transitionEasing: transitionEasing,
|
|
118
|
-
key: stage.id,
|
|
119
|
-
item: stage,
|
|
120
|
-
render: _this3.props.render
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
var listInlineStyles = (_listInlineStyles = {
|
|
124
|
-
gridTemplateColumns: "repeat(".concat(items.length, ", 1fr)")
|
|
125
|
-
}, (0, _defineProperty2.default)(_listInlineStyles, _constants2.varSpacing, _constants.spacing[this.props.spacing]), (0, _defineProperty2.default)(_listInlineStyles, "maxWidth", 8 * 10 * items.length * 2), _listInlineStyles);
|
|
126
|
-
return (0, _react2.jsx)("ul", {
|
|
127
|
-
"data-testid": testId
|
|
128
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
129
|
-
,
|
|
130
|
-
style: listInlineStyles,
|
|
131
|
-
css: containerStyles,
|
|
132
|
-
"aria-label": label
|
|
133
|
-
}, items);
|
|
134
|
-
}
|
|
135
|
-
}]);
|
|
136
|
-
return ProgressTracker;
|
|
137
|
-
}(_react.PureComponent);
|
|
138
|
-
(0, _defineProperty2.default)(ProgressTracker, "defaultProps", {
|
|
139
|
-
items: [],
|
|
140
|
-
spacing: 'cosy',
|
|
141
|
-
render: {
|
|
142
|
-
// Anchor content is coming from another location
|
|
143
|
-
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
|
144
|
-
link: function link(_ref) {
|
|
145
|
-
var item = _ref.item;
|
|
146
|
-
return (0, _react2.jsx)(_link.default, item);
|
|
66
|
+
}));
|
|
67
|
+
var previousStages = items.map(function (stage) {
|
|
68
|
+
var _prevItems$current;
|
|
69
|
+
var oldStage = (_prevItems$current = prevItems.current) === null || _prevItems$current === void 0 ? void 0 : _prevItems$current.find(function (st) {
|
|
70
|
+
return st.id === stage.id;
|
|
71
|
+
});
|
|
72
|
+
return !!oldStage ? oldStage : stage;
|
|
73
|
+
});
|
|
74
|
+
(0, _react.useEffect)(function () {
|
|
75
|
+
prevItems.current = items;
|
|
76
|
+
}, [items]);
|
|
77
|
+
var progressChanges = items.filter(function (stage, index) {
|
|
78
|
+
return stage.percentageComplete !== previousStages[index].percentageComplete;
|
|
79
|
+
}).length;
|
|
80
|
+
var totalStepsForward = items.filter(function (stage, index) {
|
|
81
|
+
return stage.percentageComplete > previousStages[index].percentageComplete;
|
|
82
|
+
}).length;
|
|
83
|
+
var totalStepsBack = items.filter(function (stage, index) {
|
|
84
|
+
return stage.percentageComplete < previousStages[index].percentageComplete;
|
|
85
|
+
}).length;
|
|
86
|
+
var stepsForward = totalStepsForward;
|
|
87
|
+
var stepsBack = totalStepsBack;
|
|
88
|
+
var progressItems = items.map(function (stage, index) {
|
|
89
|
+
var transitionSpeed = 0;
|
|
90
|
+
var transitionDelay = 0;
|
|
91
|
+
var transitionEasing = progressChanges > 1 ? 'linear' : _constants2.ANIMATION_EASE_OUT;
|
|
92
|
+
if (animated) {
|
|
93
|
+
transitionSpeed = progressChanges > 1 ? _constants2.LINEAR_TRANSITION_SPEED : _constants2.TRANSITION_SPEED;
|
|
94
|
+
if (stage.percentageComplete < previousStages[index].percentageComplete) {
|
|
95
|
+
/**
|
|
96
|
+
* Load each transition sequentially in reverse.
|
|
97
|
+
*/
|
|
98
|
+
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
99
|
+
stepsBack -= 1;
|
|
100
|
+
} else if (stage.percentageComplete > previousStages[index].percentageComplete) {
|
|
101
|
+
/**
|
|
102
|
+
* Load each transition sequentially.
|
|
103
|
+
*/
|
|
104
|
+
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
105
|
+
stepsForward -= 1;
|
|
106
|
+
}
|
|
147
107
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
108
|
+
return (0, _react2.jsx)(_stage.default, {
|
|
109
|
+
transitionSpeed: transitionSpeed,
|
|
110
|
+
transitionDelay: transitionDelay,
|
|
111
|
+
transitionEasing: transitionEasing,
|
|
112
|
+
key: stage.id,
|
|
113
|
+
item: stage,
|
|
114
|
+
render: render
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
var listInlineStyles = (_listInlineStyles = {
|
|
118
|
+
gridTemplateColumns: "repeat(".concat(items.length, ", 1fr)")
|
|
119
|
+
}, (0, _defineProperty2.default)(_listInlineStyles, _constants2.varSpacing, _constants.spacing[spacing]), (0, _defineProperty2.default)(_listInlineStyles, "maxWidth", 8 * 10 * items.length * 2), _listInlineStyles);
|
|
120
|
+
return (0, _react2.jsx)("ul", {
|
|
121
|
+
"data-testid": testId
|
|
122
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
123
|
+
,
|
|
124
|
+
style: listInlineStyles,
|
|
125
|
+
css: containerStyles,
|
|
126
|
+
"aria-label": label
|
|
127
|
+
}, progressItems);
|
|
128
|
+
};
|
|
129
|
+
var _default = exports.default = ProgressTracker;
|
package/dist/es2019/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as ProgressTracker } from './progress-tracker
|
|
1
|
+
export { default as ProgressTracker } from './progress-tracker';
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
/* eslint-disable @atlaskit/design-system/no-nested-styles */
|
|
3
2
|
/**
|
|
4
3
|
* @jsxRuntime classic
|
|
5
4
|
* @jsx jsx
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
6
|
+
import { useEffect, useRef } from 'react';
|
|
8
7
|
|
|
9
8
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
10
9
|
import { css, jsx } from '@emotion/react';
|
|
11
|
-
import { spacing } from './constants';
|
|
10
|
+
import { spacing as spacingOptions } from './constants';
|
|
12
11
|
import { ANIMATION_EASE_OUT, LINEAR_TRANSITION_SPEED, TRANSITION_SPEED, varSpacing } from './internal/constants';
|
|
13
12
|
import Link from './internal/link';
|
|
14
13
|
import Stage from './internal/stage';
|
|
15
14
|
const containerStyles = css({
|
|
16
15
|
display: 'grid',
|
|
17
16
|
width: '100%',
|
|
18
|
-
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
|
|
19
17
|
margin: '0 auto',
|
|
20
18
|
padding: "var(--ds-space-0, 0px)",
|
|
21
19
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
|
|
@@ -26,89 +24,87 @@ const containerStyles = css({
|
|
|
26
24
|
marginBlockStart: "var(--ds-space-500, 40px)"
|
|
27
25
|
}
|
|
28
26
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return oldStage !== undefined ? oldStage : stage;
|
|
43
|
-
});
|
|
44
|
-
this.setState({
|
|
45
|
-
prevStages
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
render() {
|
|
49
|
-
const {
|
|
50
|
-
testId,
|
|
51
|
-
label
|
|
52
|
-
} = this.props;
|
|
53
|
-
const progressChanges = this.props.items.filter((stage, index) => stage.percentageComplete !== this.state.prevStages[index].percentageComplete).length;
|
|
54
|
-
const totalStepsForward = this.props.items.filter((stage, index) => stage.percentageComplete > this.state.prevStages[index].percentageComplete).length;
|
|
55
|
-
const totalStepsBack = this.props.items.filter((stage, index) => stage.percentageComplete < this.state.prevStages[index].percentageComplete).length;
|
|
56
|
-
let stepsForward = totalStepsForward;
|
|
57
|
-
let stepsBack = totalStepsBack;
|
|
58
|
-
const items = this.props.items.map((stage, index) => {
|
|
59
|
-
let transitionSpeed = 0;
|
|
60
|
-
let transitionDelay = 0;
|
|
61
|
-
const transitionEasing = progressChanges > 1 ? 'linear' : ANIMATION_EASE_OUT;
|
|
62
|
-
if (this.props.animated) {
|
|
63
|
-
transitionSpeed = progressChanges > 1 ? LINEAR_TRANSITION_SPEED : TRANSITION_SPEED;
|
|
64
|
-
if (stage.percentageComplete < this.state.prevStages[index].percentageComplete) {
|
|
65
|
-
/**
|
|
66
|
-
* Load each transition sequentially in reverse.
|
|
67
|
-
*/
|
|
68
|
-
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
69
|
-
stepsBack -= 1;
|
|
70
|
-
} else if (stage.percentageComplete > this.state.prevStages[index].percentageComplete) {
|
|
71
|
-
/**
|
|
72
|
-
* Load each transition sequentially.
|
|
73
|
-
*/
|
|
74
|
-
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
75
|
-
stepsForward -= 1;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return jsx(Stage, {
|
|
79
|
-
transitionSpeed: transitionSpeed,
|
|
80
|
-
transitionDelay: transitionDelay,
|
|
81
|
-
transitionEasing: transitionEasing,
|
|
82
|
-
key: stage.id,
|
|
83
|
-
item: stage,
|
|
84
|
-
render: this.props.render
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
const listInlineStyles = {
|
|
88
|
-
gridTemplateColumns: `repeat(${items.length}, 1fr)`,
|
|
89
|
-
[varSpacing]: spacing[this.props.spacing],
|
|
90
|
-
maxWidth: 8 * 10 * items.length * 2
|
|
91
|
-
};
|
|
92
|
-
return jsx("ul", {
|
|
93
|
-
"data-testid": testId
|
|
94
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
95
|
-
,
|
|
96
|
-
style: listInlineStyles,
|
|
97
|
-
css: containerStyles,
|
|
98
|
-
"aria-label": label
|
|
99
|
-
}, items);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
_defineProperty(ProgressTracker, "defaultProps", {
|
|
103
|
-
items: [],
|
|
104
|
-
spacing: 'cosy',
|
|
105
|
-
render: {
|
|
27
|
+
/**
|
|
28
|
+
* __Progress tracker__
|
|
29
|
+
*
|
|
30
|
+
* A progress tracker displays the steps and progress through a journey.
|
|
31
|
+
*
|
|
32
|
+
* - [Examples](https://atlassian.design/components/progress-tracker/examples)
|
|
33
|
+
* - [Code](https://atlassian.design/components/progress-tracker/code)
|
|
34
|
+
* - [Usage](https://atlassian.design/components/progress-tracker/usage)
|
|
35
|
+
*/
|
|
36
|
+
const ProgressTracker = ({
|
|
37
|
+
items = [],
|
|
38
|
+
spacing = 'cosy',
|
|
39
|
+
render = {
|
|
106
40
|
// Anchor content is coming from another location
|
|
107
41
|
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
|
108
42
|
link: ({
|
|
109
43
|
item
|
|
110
44
|
}) => jsx(Link, item)
|
|
111
45
|
},
|
|
112
|
-
animated
|
|
113
|
-
|
|
114
|
-
|
|
46
|
+
animated = true,
|
|
47
|
+
testId,
|
|
48
|
+
label = 'Progress'
|
|
49
|
+
}) => {
|
|
50
|
+
const prevItems = useRef(items.map(stage => ({
|
|
51
|
+
...stage,
|
|
52
|
+
percentageComplete: 0
|
|
53
|
+
})));
|
|
54
|
+
const previousStages = items.map(stage => {
|
|
55
|
+
var _prevItems$current;
|
|
56
|
+
const oldStage = (_prevItems$current = prevItems.current) === null || _prevItems$current === void 0 ? void 0 : _prevItems$current.find(st => st.id === stage.id);
|
|
57
|
+
return !!oldStage ? oldStage : stage;
|
|
58
|
+
});
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
prevItems.current = items;
|
|
61
|
+
}, [items]);
|
|
62
|
+
const progressChanges = items.filter((stage, index) => stage.percentageComplete !== previousStages[index].percentageComplete).length;
|
|
63
|
+
const totalStepsForward = items.filter((stage, index) => stage.percentageComplete > previousStages[index].percentageComplete).length;
|
|
64
|
+
const totalStepsBack = items.filter((stage, index) => stage.percentageComplete < previousStages[index].percentageComplete).length;
|
|
65
|
+
let stepsForward = totalStepsForward;
|
|
66
|
+
let stepsBack = totalStepsBack;
|
|
67
|
+
const progressItems = items.map((stage, index) => {
|
|
68
|
+
let transitionSpeed = 0;
|
|
69
|
+
let transitionDelay = 0;
|
|
70
|
+
const transitionEasing = progressChanges > 1 ? 'linear' : ANIMATION_EASE_OUT;
|
|
71
|
+
if (animated) {
|
|
72
|
+
transitionSpeed = progressChanges > 1 ? LINEAR_TRANSITION_SPEED : TRANSITION_SPEED;
|
|
73
|
+
if (stage.percentageComplete < previousStages[index].percentageComplete) {
|
|
74
|
+
/**
|
|
75
|
+
* Load each transition sequentially in reverse.
|
|
76
|
+
*/
|
|
77
|
+
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
78
|
+
stepsBack -= 1;
|
|
79
|
+
} else if (stage.percentageComplete > previousStages[index].percentageComplete) {
|
|
80
|
+
/**
|
|
81
|
+
* Load each transition sequentially.
|
|
82
|
+
*/
|
|
83
|
+
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
84
|
+
stepsForward -= 1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return jsx(Stage, {
|
|
88
|
+
transitionSpeed: transitionSpeed,
|
|
89
|
+
transitionDelay: transitionDelay,
|
|
90
|
+
transitionEasing: transitionEasing,
|
|
91
|
+
key: stage.id,
|
|
92
|
+
item: stage,
|
|
93
|
+
render: render
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
const listInlineStyles = {
|
|
97
|
+
gridTemplateColumns: `repeat(${items.length}, 1fr)`,
|
|
98
|
+
[varSpacing]: spacingOptions[spacing],
|
|
99
|
+
maxWidth: 8 * 10 * items.length * 2
|
|
100
|
+
};
|
|
101
|
+
return jsx("ul", {
|
|
102
|
+
"data-testid": testId
|
|
103
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
104
|
+
,
|
|
105
|
+
style: listInlineStyles,
|
|
106
|
+
css: containerStyles,
|
|
107
|
+
"aria-label": label
|
|
108
|
+
}, progressItems);
|
|
109
|
+
};
|
|
110
|
+
export default ProgressTracker;
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as ProgressTracker } from './progress-tracker
|
|
1
|
+
export { default as ProgressTracker } from './progress-tracker';
|