@atlaskit/progress-tracker 8.0.4 → 8.1.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 +6 -0
- package/dist/cjs/constants.js +4 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/internal/bar.js +48 -0
- package/dist/cjs/internal/constants.js +38 -0
- package/dist/cjs/internal/link.js +35 -0
- package/dist/cjs/internal/marker.js +53 -0
- package/dist/cjs/{ProgressTrackerStage/index.js → internal/stage.js} +70 -95
- package/dist/cjs/internal/types.js +5 -0
- package/dist/cjs/internal/utils.js +65 -0
- package/dist/cjs/{ProgressTracker/index.js → progress-tracker.js} +44 -42
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/constants.js +6 -4
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/internal/bar.js +35 -0
- package/dist/es2019/internal/constants.js +16 -0
- package/dist/es2019/internal/link.js +24 -0
- package/dist/es2019/internal/marker.js +42 -0
- package/dist/es2019/internal/stage.js +130 -0
- package/dist/es2019/internal/types.js +1 -0
- package/dist/es2019/internal/utils.js +48 -0
- package/dist/es2019/{ProgressTracker/index.js → progress-tracker.js} +47 -32
- package/dist/es2019/version.json +1 -1
- package/dist/esm/constants.js +6 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/internal/bar.js +36 -0
- package/dist/esm/internal/constants.js +16 -0
- package/dist/esm/internal/link.js +25 -0
- package/dist/esm/internal/marker.js +43 -0
- package/dist/esm/{ProgressTrackerStage/index.js → internal/stage.js} +70 -89
- package/dist/esm/internal/types.js +1 -0
- package/dist/esm/internal/utils.js +48 -0
- package/dist/esm/{ProgressTracker/index.js → progress-tracker.js} +46 -36
- package/dist/esm/version.json +1 -1
- package/dist/types/constants.d.ts +9 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/internal/bar.d.ts +12 -0
- package/dist/types/internal/constants.d.ts +14 -0
- package/dist/types/internal/link.d.ts +10 -0
- package/dist/types/internal/marker.d.ts +11 -0
- package/dist/types/internal/stage.d.ts +17 -0
- package/dist/types/internal/types.d.ts +27 -0
- package/dist/types/internal/utils.d.ts +4 -0
- package/dist/types/{ProgressTracker/index.d.ts → progress-tracker.d.ts} +22 -13
- package/dist/types/types.d.ts +10 -4
- package/package.json +15 -6
- package/dist/cjs/ProgressTracker/styled.js +0 -20
- package/dist/cjs/ProgressTrackerLink/index.js +0 -60
- package/dist/cjs/ProgressTrackerLink/styled.js +0 -22
- package/dist/cjs/ProgressTrackerStage/styled.js +0 -133
- package/dist/es2019/ProgressTracker/styled.js +0 -13
- package/dist/es2019/ProgressTrackerLink/index.js +0 -16
- package/dist/es2019/ProgressTrackerLink/styled.js +0 -7
- package/dist/es2019/ProgressTrackerStage/index.js +0 -143
- package/dist/es2019/ProgressTrackerStage/styled.js +0 -140
- package/dist/esm/ProgressTracker/styled.js +0 -7
- package/dist/esm/ProgressTrackerLink/index.js +0 -42
- package/dist/esm/ProgressTrackerLink/styled.js +0 -8
- package/dist/esm/ProgressTrackerStage/styled.js +0 -107
- package/dist/types/ProgressTracker/styled.d.ts +0 -3
- package/dist/types/ProgressTrackerLink/index.d.ts +0 -10
- package/dist/types/ProgressTrackerLink/styled.d.ts +0 -3
- package/dist/types/ProgressTrackerStage/index.d.ts +0 -27
- package/dist/types/ProgressTrackerStage/styled.d.ts +0 -28
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -23,21 +21,17 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
23
21
|
|
|
24
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
23
|
|
|
26
|
-
var _react =
|
|
27
|
-
|
|
28
|
-
var _styledComponents = require("styled-components");
|
|
29
|
-
|
|
30
|
-
var _page = require("@atlaskit/page");
|
|
24
|
+
var _react = require("react");
|
|
31
25
|
|
|
32
|
-
var
|
|
26
|
+
var _core = require("@emotion/core");
|
|
33
27
|
|
|
34
|
-
var
|
|
28
|
+
var _constants = require("./constants");
|
|
35
29
|
|
|
36
|
-
var
|
|
30
|
+
var _constants2 = require("./internal/constants");
|
|
37
31
|
|
|
38
|
-
|
|
32
|
+
var _link = _interopRequireDefault(require("./internal/link"));
|
|
39
33
|
|
|
40
|
-
|
|
34
|
+
var _stage = _interopRequireDefault(require("./internal/stage"));
|
|
41
35
|
|
|
42
36
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
43
37
|
|
|
@@ -47,10 +41,17 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
47
41
|
|
|
48
42
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
49
43
|
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
var containerStyles = (0, _core.css)({
|
|
45
|
+
display: 'grid',
|
|
46
|
+
width: '100%',
|
|
47
|
+
margin: '0 auto',
|
|
48
|
+
padding: 0,
|
|
49
|
+
gap: "var(".concat(_constants2.varSpacing, ")"),
|
|
50
|
+
listStyleType: 'none',
|
|
51
|
+
'&&': {
|
|
52
|
+
marginTop: 40
|
|
53
|
+
}
|
|
54
|
+
});
|
|
54
55
|
|
|
55
56
|
var ProgressTracker = /*#__PURE__*/function (_PureComponent) {
|
|
56
57
|
(0, _inherits2.default)(ProgressTracker, _PureComponent);
|
|
@@ -67,14 +68,8 @@ var ProgressTracker = /*#__PURE__*/function (_PureComponent) {
|
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
70
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createTheme", function () {
|
|
71
|
-
return {
|
|
72
|
-
spacing: _this.props.spacing,
|
|
73
|
-
columns: _this.props.items.length * 2
|
|
74
|
-
};
|
|
75
|
-
});
|
|
76
71
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
77
|
-
prevStages: _this.props.items.map(function (stage
|
|
72
|
+
prevStages: _this.props.items.map(function (stage) {
|
|
78
73
|
return _objectSpread(_objectSpread({}, stage), {}, {
|
|
79
74
|
percentageComplete: 0
|
|
80
75
|
});
|
|
@@ -102,7 +97,8 @@ var ProgressTracker = /*#__PURE__*/function (_PureComponent) {
|
|
|
102
97
|
}, {
|
|
103
98
|
key: "render",
|
|
104
99
|
value: function render() {
|
|
105
|
-
var _this3 = this
|
|
100
|
+
var _this3 = this,
|
|
101
|
+
_ref;
|
|
106
102
|
|
|
107
103
|
var _this$props = this.props,
|
|
108
104
|
testId = _this$props.testId,
|
|
@@ -121,38 +117,43 @@ var ProgressTracker = /*#__PURE__*/function (_PureComponent) {
|
|
|
121
117
|
var items = this.props.items.map(function (stage, index) {
|
|
122
118
|
var transitionSpeed = 0;
|
|
123
119
|
var transitionDelay = 0;
|
|
124
|
-
var transitionEasing = progressChanges > 1 ? 'linear' :
|
|
120
|
+
var transitionEasing = progressChanges > 1 ? 'linear' : _constants2.ANIMATION_EASE_OUT;
|
|
125
121
|
|
|
126
122
|
if (_this3.props.animated) {
|
|
127
|
-
transitionSpeed = progressChanges > 1 ? LINEAR_TRANSITION_SPEED : TRANSITION_SPEED;
|
|
123
|
+
transitionSpeed = progressChanges > 1 ? _constants2.LINEAR_TRANSITION_SPEED : _constants2.TRANSITION_SPEED;
|
|
128
124
|
|
|
129
125
|
if (stage.percentageComplete < _this3.state.prevStages[index].percentageComplete) {
|
|
130
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* load each transition sequentially in reverse
|
|
128
|
+
*/
|
|
131
129
|
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
132
130
|
stepsBack -= 1;
|
|
133
131
|
} else if (stage.percentageComplete > _this3.state.prevStages[index].percentageComplete) {
|
|
134
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* load each transition sequentially
|
|
134
|
+
*/
|
|
135
135
|
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
136
136
|
stepsForward -= 1;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
return
|
|
141
|
-
key: stage.id,
|
|
142
|
-
item: stage,
|
|
143
|
-
render: _this3.props.render,
|
|
140
|
+
return (0, _core.jsx)(_stage.default, {
|
|
144
141
|
transitionSpeed: transitionSpeed,
|
|
145
142
|
transitionDelay: transitionDelay,
|
|
146
|
-
transitionEasing: transitionEasing
|
|
143
|
+
transitionEasing: transitionEasing,
|
|
144
|
+
key: stage.id,
|
|
145
|
+
item: stage,
|
|
146
|
+
render: _this3.props.render
|
|
147
147
|
});
|
|
148
148
|
});
|
|
149
|
-
return
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
return (0, _core.jsx)("ul", {
|
|
150
|
+
"data-testid": testId,
|
|
151
|
+
style: (_ref = {
|
|
152
|
+
gridTemplateColumns: "repeat(".concat(items.length, ", 1fr)")
|
|
153
|
+
}, (0, _defineProperty2.default)(_ref, _constants2.varSpacing, "".concat(_constants.spacing[this.props.spacing], "px")), (0, _defineProperty2.default)(_ref, "maxWidth", _constants.defaultGridSize * 10 * items.length * 2), _ref),
|
|
154
|
+
css: containerStyles,
|
|
154
155
|
"aria-label": label
|
|
155
|
-
}, items)
|
|
156
|
+
}, items);
|
|
156
157
|
}
|
|
157
158
|
}]);
|
|
158
159
|
return ProgressTracker;
|
|
@@ -163,10 +164,11 @@ exports.default = ProgressTracker;
|
|
|
163
164
|
items: [],
|
|
164
165
|
spacing: 'cosy',
|
|
165
166
|
render: {
|
|
166
|
-
link: function link(
|
|
167
|
-
|
|
167
|
+
link: function link(_ref2) {
|
|
168
|
+
var item = _ref2.item;
|
|
169
|
+
return (0, _core.jsx)(_link.default, item);
|
|
168
170
|
}
|
|
169
171
|
},
|
|
170
172
|
animated: true,
|
|
171
|
-
label:
|
|
173
|
+
label: 'Progress'
|
|
172
174
|
});
|
package/dist/cjs/version.json
CHANGED
package/dist/es2019/constants.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { gridSize } from '@atlaskit/theme/constants';
|
|
2
|
-
export const defaultGridSize =
|
|
3
|
-
/**
|
|
1
|
+
import { gridSize as getGridSize } from '@atlaskit/theme/constants';
|
|
2
|
+
export const defaultGridSize = getGridSize();
|
|
3
|
+
/**
|
|
4
|
+
* Ideally these are exported by @atlaskit/page
|
|
5
|
+
*/
|
|
4
6
|
|
|
5
7
|
export const spacing = {
|
|
6
8
|
comfortable: defaultGridSize * 5,
|
|
7
9
|
cosy: defaultGridSize * 2,
|
|
8
|
-
compact: defaultGridSize
|
|
10
|
+
compact: defaultGridSize / 2
|
|
9
11
|
};
|
package/dist/es2019/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as ProgressTracker } from './
|
|
1
|
+
export { default as ProgressTracker } from './progress-tracker';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css, jsx } from '@emotion/core';
|
|
3
|
+
import { B300 } from '@atlaskit/theme/colors';
|
|
4
|
+
import { spacing } from '../constants';
|
|
5
|
+
import { HALF_GRID_SIZE, LABEL_TOP_SPACING, PROGRESS_BAR_HEIGHT, varSpacing, varTransitionDelay, varTransitionEasing, varTransitionSpeed } from './constants';
|
|
6
|
+
const progressBarStyles = css({
|
|
7
|
+
height: PROGRESS_BAR_HEIGHT,
|
|
8
|
+
position: 'absolute',
|
|
9
|
+
left: '50%',
|
|
10
|
+
backgroundColor: B300,
|
|
11
|
+
borderBottomRightRadius: PROGRESS_BAR_HEIGHT,
|
|
12
|
+
borderTopRightRadius: PROGRESS_BAR_HEIGHT,
|
|
13
|
+
transform: `translate(0, -${LABEL_TOP_SPACING}px)`,
|
|
14
|
+
transition: `width var(${varTransitionSpeed}) var(${varTransitionEasing})`,
|
|
15
|
+
transitionDelay: `var(${varTransitionDelay})`
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* __Progress bar__
|
|
19
|
+
*
|
|
20
|
+
* A progress bar describes the horizontal tracking bar that traverses each individual step.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const ProgressBar = ({
|
|
25
|
+
percentageComplete,
|
|
26
|
+
testId
|
|
27
|
+
}) => jsx("div", {
|
|
28
|
+
"data-testid": testId,
|
|
29
|
+
style: {
|
|
30
|
+
width: `calc(${percentageComplete}% + ${percentageComplete / 100} * calc(var(${varSpacing}, ${spacing.cosy}px) + ${HALF_GRID_SIZE}px))`
|
|
31
|
+
},
|
|
32
|
+
css: progressBarStyles
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export default ProgressBar;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defaultGridSize } from '../constants';
|
|
2
|
+
export const TRANSITION_SPEED = 300;
|
|
3
|
+
export const LINEAR_TRANSITION_SPEED = 50;
|
|
4
|
+
export const ANIMATION_EASE_OUT = 'cubic-bezier(0.15,1,0.3,1)';
|
|
5
|
+
export const varSpacing = '--ds--pt--sp';
|
|
6
|
+
export const varTransitionSpeed = '--ds--pt--ts';
|
|
7
|
+
export const varTransitionDelay = '--ds--pt--td';
|
|
8
|
+
export const varTransitionEasing = '--ds--pt--te';
|
|
9
|
+
export const varMarkerColor = '--ds--pt--mc';
|
|
10
|
+
export const varBackgroundColor = '--ds--pt--bg';
|
|
11
|
+
export const SEMI_BOLD_FONT_WEIGHT = '600';
|
|
12
|
+
export const REGULAR_FONT_WEIGHT = '400';
|
|
13
|
+
export const HALF_GRID_SIZE = defaultGridSize / 2;
|
|
14
|
+
export const PROGRESS_BAR_HEIGHT = defaultGridSize; // Labels sit 20px from bottom of progress bar.
|
|
15
|
+
|
|
16
|
+
export const LABEL_TOP_SPACING = defaultGridSize + 20;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css, jsx } from '@emotion/core';
|
|
3
|
+
import { N800 } from '@atlaskit/theme/colors';
|
|
4
|
+
const linkStyles = css({
|
|
5
|
+
color: N800,
|
|
6
|
+
cursor: 'pointer'
|
|
7
|
+
});
|
|
8
|
+
/**
|
|
9
|
+
* __Progress tracker link__
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const Link = ({
|
|
13
|
+
href,
|
|
14
|
+
onClick,
|
|
15
|
+
label,
|
|
16
|
+
testId
|
|
17
|
+
}) => jsx("a", {
|
|
18
|
+
css: linkStyles,
|
|
19
|
+
href: href,
|
|
20
|
+
onClick: onClick,
|
|
21
|
+
"data-testid": testId
|
|
22
|
+
}, label);
|
|
23
|
+
|
|
24
|
+
export default Link;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable @repo/internal/styles/no-nested-styles */
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { css, jsx } from '@emotion/core';
|
|
5
|
+
import { LABEL_TOP_SPACING, PROGRESS_BAR_HEIGHT, varBackgroundColor, varMarkerColor, varTransitionDelay, varTransitionEasing, varTransitionSpeed } from './constants';
|
|
6
|
+
const progressMarkerStyles = css({
|
|
7
|
+
width: PROGRESS_BAR_HEIGHT,
|
|
8
|
+
height: PROGRESS_BAR_HEIGHT,
|
|
9
|
+
position: 'absolute',
|
|
10
|
+
left: '50%',
|
|
11
|
+
backgroundColor: `var(${varBackgroundColor})`,
|
|
12
|
+
borderRadius: PROGRESS_BAR_HEIGHT,
|
|
13
|
+
transform: `translate(-50%, -${LABEL_TOP_SPACING}px)`,
|
|
14
|
+
transition: `opacity var(${varTransitionSpeed}) var(${varTransitionEasing}), background-color var(${varTransitionSpeed}) var(${varTransitionEasing})`,
|
|
15
|
+
transitionDelay: `var(${varTransitionDelay})`,
|
|
16
|
+
'&.fade-appear': {
|
|
17
|
+
opacity: 0.01
|
|
18
|
+
},
|
|
19
|
+
'&.fade-appear.fade-appear-active': {
|
|
20
|
+
opacity: 1
|
|
21
|
+
},
|
|
22
|
+
'&.fade-enter': {
|
|
23
|
+
backgroundColor: `var(${varMarkerColor})`
|
|
24
|
+
},
|
|
25
|
+
'&.fade-enter.fade-enter-active': {
|
|
26
|
+
backgroundColor: `var(${varBackgroundColor})`
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* __Progress marker__
|
|
31
|
+
*
|
|
32
|
+
* Similar to `@atlaskit/progress-indicator`, a small visual circle marker
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
const ProgressMarker = ({
|
|
36
|
+
testId
|
|
37
|
+
}) => jsx("div", {
|
|
38
|
+
"data-testid": testId,
|
|
39
|
+
css: progressMarkerStyles
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export default ProgressMarker;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable @repo/internal/styles/no-nested-styles */
|
|
4
|
+
|
|
5
|
+
/** @jsx jsx */
|
|
6
|
+
import { PureComponent } from 'react';
|
|
7
|
+
import { css, jsx } from '@emotion/core';
|
|
8
|
+
import { CSSTransition } from 'react-transition-group';
|
|
9
|
+
import { fontSize } from '@atlaskit/theme/constants';
|
|
10
|
+
import ProgressBar from './bar';
|
|
11
|
+
import { LABEL_TOP_SPACING, varBackgroundColor, varMarkerColor, varTransitionDelay, varTransitionEasing, varTransitionSpeed } from './constants';
|
|
12
|
+
import ProgressMarker from './marker';
|
|
13
|
+
import { getFontWeight, getMarkerColor, getTextColor } from './utils';
|
|
14
|
+
const containerStyles = css({
|
|
15
|
+
width: '100%',
|
|
16
|
+
position: 'relative'
|
|
17
|
+
});
|
|
18
|
+
const listItemStyles = css({
|
|
19
|
+
margin: 0,
|
|
20
|
+
overflowWrap: 'break-word'
|
|
21
|
+
});
|
|
22
|
+
const titleStyles = css({
|
|
23
|
+
marginTop: LABEL_TOP_SPACING,
|
|
24
|
+
marginRight: 'auto',
|
|
25
|
+
marginLeft: 'auto',
|
|
26
|
+
fontSize: fontSize(),
|
|
27
|
+
lineHeight: '16px',
|
|
28
|
+
textAlign: 'center',
|
|
29
|
+
'&.fade-appear': {
|
|
30
|
+
opacity: 0.01
|
|
31
|
+
},
|
|
32
|
+
'&.fade-appear.fade-appear-active': {
|
|
33
|
+
opacity: 1,
|
|
34
|
+
transition: `opacity var(${varTransitionSpeed}) cubic-bezier(0.2, 0, 0, 1)`
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
export default class ProgressTrackerStage extends PureComponent {
|
|
38
|
+
constructor(props) {
|
|
39
|
+
super(props);
|
|
40
|
+
|
|
41
|
+
_defineProperty(this, "onEntered", () => {
|
|
42
|
+
this.setState({
|
|
43
|
+
transitioning: false,
|
|
44
|
+
oldMarkerColor: getMarkerColor(this.props.item.status),
|
|
45
|
+
oldPercentageComplete: this.props.item.percentageComplete
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
this.state = {
|
|
50
|
+
transitioning: false,
|
|
51
|
+
oldMarkerColor: getMarkerColor(this.props.item.status),
|
|
52
|
+
oldPercentageComplete: 0
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
UNSAFE_componentWillMount() {
|
|
57
|
+
this.setState({ ...this.state,
|
|
58
|
+
transitioning: true
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
UNSAFE_componentWillReceiveProps() {
|
|
63
|
+
this.setState({ ...this.state,
|
|
64
|
+
transitioning: true
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
shouldShowLink() {
|
|
69
|
+
return this.props.item.status === 'visited' && !this.props.item.noLink;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
render() {
|
|
73
|
+
const {
|
|
74
|
+
item,
|
|
75
|
+
render,
|
|
76
|
+
transitionDelay,
|
|
77
|
+
transitionSpeed,
|
|
78
|
+
transitionEasing,
|
|
79
|
+
testId
|
|
80
|
+
} = this.props;
|
|
81
|
+
const ariaCurrent = item.status === 'current' ? 'step' : 'false';
|
|
82
|
+
return jsx("li", {
|
|
83
|
+
"data-testid": testId,
|
|
84
|
+
style: {
|
|
85
|
+
[varTransitionSpeed]: `${transitionSpeed}ms`,
|
|
86
|
+
[varTransitionDelay]: `${transitionDelay}ms`,
|
|
87
|
+
[varTransitionEasing]: transitionEasing,
|
|
88
|
+
[varMarkerColor]: this.state.oldMarkerColor,
|
|
89
|
+
[varBackgroundColor]: getMarkerColor(item.status)
|
|
90
|
+
},
|
|
91
|
+
css: listItemStyles,
|
|
92
|
+
"aria-current": ariaCurrent
|
|
93
|
+
}, jsx("div", {
|
|
94
|
+
css: containerStyles
|
|
95
|
+
}, jsx(CSSTransition, {
|
|
96
|
+
appear: true,
|
|
97
|
+
in: this.state.transitioning,
|
|
98
|
+
onEntered: this.onEntered,
|
|
99
|
+
timeout: transitionDelay + transitionSpeed,
|
|
100
|
+
classNames: "fade"
|
|
101
|
+
}, jsx(ProgressMarker, {
|
|
102
|
+
testId: testId && `${testId}-marker`
|
|
103
|
+
})), jsx(CSSTransition, {
|
|
104
|
+
appear: true,
|
|
105
|
+
in: this.state.transitioning,
|
|
106
|
+
onEntered: this.onEntered,
|
|
107
|
+
timeout: transitionDelay + transitionSpeed,
|
|
108
|
+
classNames: "fade"
|
|
109
|
+
}, jsx(ProgressBar, {
|
|
110
|
+
testId: testId && `${testId}-bar`,
|
|
111
|
+
percentageComplete: item.percentageComplete
|
|
112
|
+
})), jsx(CSSTransition, {
|
|
113
|
+
appear: true,
|
|
114
|
+
in: this.state.transitioning,
|
|
115
|
+
onEntered: this.onEntered,
|
|
116
|
+
timeout: transitionDelay + transitionSpeed,
|
|
117
|
+
classNames: "fade"
|
|
118
|
+
}, jsx("div", {
|
|
119
|
+
css: titleStyles,
|
|
120
|
+
"data-testid": testId && `${testId}-title`,
|
|
121
|
+
style: {
|
|
122
|
+
color: getTextColor(item.status),
|
|
123
|
+
fontWeight: getFontWeight(item.status)
|
|
124
|
+
}
|
|
125
|
+
}, this.shouldShowLink() ? render.link({
|
|
126
|
+
item
|
|
127
|
+
}) : item.label))));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { B300, N300, N70, N800 } from '@atlaskit/theme/colors';
|
|
2
|
+
import { REGULAR_FONT_WEIGHT, SEMI_BOLD_FONT_WEIGHT } from './constants';
|
|
3
|
+
export const getMarkerColor = status => {
|
|
4
|
+
switch (status) {
|
|
5
|
+
case 'unvisited':
|
|
6
|
+
return N70;
|
|
7
|
+
|
|
8
|
+
case 'current':
|
|
9
|
+
case 'visited':
|
|
10
|
+
case 'disabled':
|
|
11
|
+
return B300;
|
|
12
|
+
|
|
13
|
+
default:
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export const getTextColor = status => {
|
|
18
|
+
switch (status) {
|
|
19
|
+
case 'unvisited':
|
|
20
|
+
return N300;
|
|
21
|
+
|
|
22
|
+
case 'current':
|
|
23
|
+
return B300;
|
|
24
|
+
|
|
25
|
+
case 'visited':
|
|
26
|
+
return N800;
|
|
27
|
+
|
|
28
|
+
case 'disabled':
|
|
29
|
+
return N70;
|
|
30
|
+
|
|
31
|
+
default:
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
export const getFontWeight = status => {
|
|
36
|
+
switch (status) {
|
|
37
|
+
case 'unvisited':
|
|
38
|
+
return REGULAR_FONT_WEIGHT;
|
|
39
|
+
|
|
40
|
+
case 'current':
|
|
41
|
+
case 'visited':
|
|
42
|
+
case 'disabled':
|
|
43
|
+
return SEMI_BOLD_FONT_WEIGHT;
|
|
44
|
+
|
|
45
|
+
default:
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
|
|
3
|
+
/* eslint-disable @repo/internal/styles/no-nested-styles */
|
|
4
|
+
|
|
5
|
+
/** @jsx jsx */
|
|
6
|
+
import { PureComponent } from 'react';
|
|
7
|
+
import { css, jsx } from '@emotion/core';
|
|
8
|
+
import { defaultGridSize, spacing } from './constants';
|
|
9
|
+
import { ANIMATION_EASE_OUT, LINEAR_TRANSITION_SPEED, TRANSITION_SPEED, varSpacing } from './internal/constants';
|
|
10
|
+
import Link from './internal/link';
|
|
11
|
+
import Stage from './internal/stage';
|
|
12
|
+
const containerStyles = css({
|
|
13
|
+
display: 'grid',
|
|
14
|
+
width: '100%',
|
|
15
|
+
margin: '0 auto',
|
|
16
|
+
padding: 0,
|
|
17
|
+
gap: `var(${varSpacing})`,
|
|
18
|
+
listStyleType: 'none',
|
|
19
|
+
'&&': {
|
|
20
|
+
marginTop: 40
|
|
21
|
+
}
|
|
22
|
+
});
|
|
12
23
|
export default class ProgressTracker extends PureComponent {
|
|
13
24
|
constructor(...args) {
|
|
14
25
|
super(...args);
|
|
15
26
|
|
|
16
|
-
_defineProperty(this, "createTheme", () => ({
|
|
17
|
-
spacing: this.props.spacing,
|
|
18
|
-
columns: this.props.items.length * 2
|
|
19
|
-
}));
|
|
20
|
-
|
|
21
27
|
_defineProperty(this, "state", {
|
|
22
|
-
prevStages: this.props.items.map(
|
|
28
|
+
prevStages: this.props.items.map(stage => ({ ...stage,
|
|
23
29
|
percentageComplete: 0
|
|
24
30
|
}))
|
|
25
31
|
});
|
|
@@ -48,38 +54,45 @@ export default class ProgressTracker extends PureComponent {
|
|
|
48
54
|
const items = this.props.items.map((stage, index) => {
|
|
49
55
|
let transitionSpeed = 0;
|
|
50
56
|
let transitionDelay = 0;
|
|
51
|
-
const transitionEasing = progressChanges > 1 ? 'linear' :
|
|
57
|
+
const transitionEasing = progressChanges > 1 ? 'linear' : ANIMATION_EASE_OUT;
|
|
52
58
|
|
|
53
59
|
if (this.props.animated) {
|
|
54
60
|
transitionSpeed = progressChanges > 1 ? LINEAR_TRANSITION_SPEED : TRANSITION_SPEED;
|
|
55
61
|
|
|
56
62
|
if (stage.percentageComplete < this.state.prevStages[index].percentageComplete) {
|
|
57
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* load each transition sequentially in reverse
|
|
65
|
+
*/
|
|
58
66
|
transitionDelay = (stepsBack - 1) * transitionSpeed;
|
|
59
67
|
stepsBack -= 1;
|
|
60
68
|
} else if (stage.percentageComplete > this.state.prevStages[index].percentageComplete) {
|
|
61
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* load each transition sequentially
|
|
71
|
+
*/
|
|
62
72
|
transitionDelay = (totalStepsForward - stepsForward) * transitionSpeed;
|
|
63
73
|
stepsForward -= 1;
|
|
64
74
|
}
|
|
65
75
|
}
|
|
66
76
|
|
|
67
|
-
return
|
|
68
|
-
key: stage.id,
|
|
69
|
-
item: stage,
|
|
70
|
-
render: this.props.render,
|
|
77
|
+
return jsx(Stage, {
|
|
71
78
|
transitionSpeed: transitionSpeed,
|
|
72
79
|
transitionDelay: transitionDelay,
|
|
73
|
-
transitionEasing: transitionEasing
|
|
80
|
+
transitionEasing: transitionEasing,
|
|
81
|
+
key: stage.id,
|
|
82
|
+
item: stage,
|
|
83
|
+
render: this.props.render
|
|
74
84
|
});
|
|
75
85
|
});
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
return jsx("ul", {
|
|
87
|
+
"data-testid": testId,
|
|
88
|
+
style: {
|
|
89
|
+
gridTemplateColumns: `repeat(${items.length}, 1fr)`,
|
|
90
|
+
[varSpacing]: `${spacing[this.props.spacing]}px`,
|
|
91
|
+
maxWidth: defaultGridSize * 10 * items.length * 2
|
|
92
|
+
},
|
|
93
|
+
css: containerStyles,
|
|
81
94
|
"aria-label": label
|
|
82
|
-
}, items)
|
|
95
|
+
}, items);
|
|
83
96
|
}
|
|
84
97
|
|
|
85
98
|
}
|
|
@@ -88,8 +101,10 @@ _defineProperty(ProgressTracker, "defaultProps", {
|
|
|
88
101
|
items: [],
|
|
89
102
|
spacing: 'cosy',
|
|
90
103
|
render: {
|
|
91
|
-
link:
|
|
104
|
+
link: ({
|
|
105
|
+
item
|
|
106
|
+
}) => jsx(Link, item)
|
|
92
107
|
},
|
|
93
108
|
animated: true,
|
|
94
|
-
label:
|
|
109
|
+
label: 'Progress'
|
|
95
110
|
});
|
package/dist/es2019/version.json
CHANGED
package/dist/esm/constants.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { gridSize } from '@atlaskit/theme/constants';
|
|
2
|
-
export var defaultGridSize =
|
|
3
|
-
/**
|
|
1
|
+
import { gridSize as getGridSize } from '@atlaskit/theme/constants';
|
|
2
|
+
export var defaultGridSize = getGridSize();
|
|
3
|
+
/**
|
|
4
|
+
* Ideally these are exported by @atlaskit/page
|
|
5
|
+
*/
|
|
4
6
|
|
|
5
7
|
export var spacing = {
|
|
6
8
|
comfortable: defaultGridSize * 5,
|
|
7
9
|
cosy: defaultGridSize * 2,
|
|
8
|
-
compact: defaultGridSize
|
|
10
|
+
compact: defaultGridSize / 2
|
|
9
11
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as ProgressTracker } from './
|
|
1
|
+
export { default as ProgressTracker } from './progress-tracker';
|