@elliemae/ds-circular-progress-indicator 2.3.0-alpha.9 → 2.3.0-next.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.
Files changed (38) hide show
  1. package/cjs/DSCircularProgressIndicator.js +268 -0
  2. package/cjs/index.js +14 -0
  3. package/cjs/v2/DSCircularIndeterminateIndicator.js +134 -0
  4. package/cjs/v2/index.js +10 -0
  5. package/cjs/v2/react-desc-prop-types.js +17 -0
  6. package/esm/DSCircularProgressIndicator.js +258 -0
  7. package/esm/index.js +2 -0
  8. package/esm/v2/DSCircularIndeterminateIndicator.js +123 -0
  9. package/esm/v2/index.js +1 -0
  10. package/esm/v2/react-desc-prop-types.js +13 -0
  11. package/package.json +27 -29
  12. package/{dist/types → types}/DSCircularProgressIndicator.d.ts +0 -0
  13. package/{dist/types → types}/index.d.ts +1 -1
  14. package/{dist/types → types}/tests/DSCircularProgressIndicator.test.d.ts +0 -0
  15. package/{dist/types → types}/v2/DSCircularIndeterminateIndicator.d.ts +0 -0
  16. package/types/v2/index.d.ts +1 -0
  17. package/{dist/types → types}/v2/react-desc-prop-types.d.ts +0 -0
  18. package/dist/cjs/DSCircularProgressIndicator.js +0 -246
  19. package/dist/cjs/DSCircularProgressIndicator.js.map +0 -7
  20. package/dist/cjs/index.js +0 -40
  21. package/dist/cjs/index.js.map +0 -7
  22. package/dist/cjs/v2/DSCircularIndeterminateIndicator.js +0 -149
  23. package/dist/cjs/v2/DSCircularIndeterminateIndicator.js.map +0 -7
  24. package/dist/cjs/v2/index.js +0 -36
  25. package/dist/cjs/v2/index.js.map +0 -7
  26. package/dist/cjs/v2/react-desc-prop-types.js +0 -56
  27. package/dist/cjs/v2/react-desc-prop-types.js.map +0 -7
  28. package/dist/esm/DSCircularProgressIndicator.js +0 -217
  29. package/dist/esm/DSCircularProgressIndicator.js.map +0 -7
  30. package/dist/esm/index.js +0 -15
  31. package/dist/esm/index.js.map +0 -7
  32. package/dist/esm/v2/DSCircularIndeterminateIndicator.js +0 -120
  33. package/dist/esm/v2/DSCircularIndeterminateIndicator.js.map +0 -7
  34. package/dist/esm/v2/index.js +0 -10
  35. package/dist/esm/v2/index.js.map +0 -7
  36. package/dist/esm/v2/react-desc-prop-types.js +0 -27
  37. package/dist/esm/v2/react-desc-prop-types.js.map +0 -7
  38. package/dist/types/v2/index.d.ts +0 -1
@@ -0,0 +1,268 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var dsClassnames = require('@elliemae/ds-classnames');
9
+ var DSTooltip = require('@elliemae/ds-tooltip');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
+ var DSTooltip__default = /*#__PURE__*/_interopDefaultLegacy(DSTooltip);
15
+
16
+ var _path, _path2;
17
+ const {
18
+ classNameBlock,
19
+ classNameElement
20
+ } = dsClassnames.convertPropToCssClassName('circular-progress-indicator');
21
+
22
+ const CircularProgressIndicator = _ref => {
23
+ let {
24
+ size,
25
+ showLabel,
26
+ showTooltip,
27
+ waiting,
28
+ loading
29
+ } = _ref;
30
+ const waitingLabel = 'Waiting...';
31
+ const loadingLabel = 'Loading...';
32
+ const currentLabel = waiting && !loading ? waitingLabel : loadingLabel;
33
+ let sizePx;
34
+ let sizeLabel;
35
+ let strokeWidth;
36
+ let trackWidth;
37
+ let markerHeight = '0.7';
38
+ let markerRefY = '4.8';
39
+ let grayArcStrokeDasharray = '45 170';
40
+ let grayArcStrokeDashoffset = '127.5';
41
+
42
+ switch (size.toUpperCase()) {
43
+ case 'XS':
44
+ sizePx = 8;
45
+ sizeLabel = 12;
46
+ strokeWidth = 10;
47
+ trackWidth = 3;
48
+ markerHeight = '1';
49
+ grayArcStrokeDasharray = '46 174';
50
+ grayArcStrokeDashoffset = '133';
51
+ break;
52
+
53
+ case 'S':
54
+ sizePx = 16;
55
+ sizeLabel = 12;
56
+ strokeWidth = 8;
57
+ trackWidth = 3;
58
+ markerHeight = '1';
59
+ grayArcStrokeDasharray = '46 174';
60
+ grayArcStrokeDashoffset = '133';
61
+ break;
62
+
63
+ case 'M':
64
+ sizePx = 24;
65
+ sizeLabel = 12;
66
+ strokeWidth = 7;
67
+ trackWidth = 3;
68
+ markerHeight = '1';
69
+ markerRefY = '5.5';
70
+ grayArcStrokeDasharray = '46 174';
71
+ grayArcStrokeDashoffset = '133';
72
+ break;
73
+
74
+ case 'L':
75
+ sizePx = 32;
76
+ sizeLabel = 13;
77
+ strokeWidth = 6;
78
+ trackWidth = 3;
79
+ markerRefY = '5';
80
+ break;
81
+
82
+ case 'XL':
83
+ sizePx = 48;
84
+ sizeLabel = 14;
85
+ strokeWidth = 5;
86
+ trackWidth = 1;
87
+ break;
88
+
89
+ case 'XXL':
90
+ sizePx = 56;
91
+ sizeLabel = 16;
92
+ strokeWidth = 4;
93
+ trackWidth = 1;
94
+ break;
95
+
96
+ case 'XXXL':
97
+ sizePx = 64;
98
+ sizeLabel = 16;
99
+ strokeWidth = 5;
100
+ trackWidth = 2;
101
+ break;
102
+ }
103
+
104
+ const labelText = /*#__PURE__*/_jsx__default["default"]("p", {
105
+ "data-testid": "circular-indicator-label",
106
+ className: classNameElement('label'),
107
+ style: {
108
+ fontSize: "".concat(sizeLabel, "px")
109
+ }
110
+ }, void 0, currentLabel); // Only adds the tooltip if sizePx < 17 or showTooltip is true
111
+
112
+
113
+ const buildIndicator = Component => sizePx < 17 || showTooltip ? /*#__PURE__*/_jsx__default["default"](DSTooltip__default["default"], {
114
+ containerProps: {
115
+ id: 'ds-circular-progress-indicator',
116
+ 'data-testid': 'circular-indicator-title'
117
+ },
118
+ interactionType: "hover",
119
+ title: currentLabel,
120
+ triggerComponent: Component,
121
+ placement: "bottom"
122
+ }) : Component;
123
+
124
+ const grayTrack = /*#__PURE__*/_jsx__default["default"]("circle", {
125
+ className: classNameElement('track'),
126
+ cx: "50%",
127
+ cy: "50%",
128
+ fill: "none",
129
+ r: "28",
130
+ strokeWidth: "".concat(trackWidth, "px")
131
+ });
132
+
133
+ const grayArc = /*#__PURE__*/_jsx__default["default"]("circle", {
134
+ className: classNameElement('arc-gray'),
135
+ stroke: "#E0E3E8",
136
+ strokeDasharray: "".concat(grayArcStrokeDasharray),
137
+ strokeDashoffset: "".concat(grayArcStrokeDashoffset),
138
+ cx: "50%",
139
+ cy: "50%",
140
+ fill: "none",
141
+ r: "28",
142
+ strokeWidth: "".concat(trackWidth, "px")
143
+ });
144
+
145
+ const indicator = /*#__PURE__*/_jsx__default["default"]("svg", {
146
+ height: "".concat(sizePx, "px"),
147
+ version: "1.1",
148
+ viewBox: "0 0 66 66",
149
+ width: "".concat(sizePx, "px"),
150
+ "data-testid": "circular-indicator"
151
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("defs", {}, void 0, /*#__PURE__*/_jsx__default["default"]("linearGradient", {
152
+ id: "grad1",
153
+ x1: "0%",
154
+ x2: "100%",
155
+ y1: "100%",
156
+ y2: "0%"
157
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("stop", {
158
+ offset: "0%",
159
+ style: {
160
+ stopColor: '#E0E3E8',
161
+ stopOpacity: 1
162
+ }
163
+ }), /*#__PURE__*/_jsx__default["default"]("stop", {
164
+ offset: "89%",
165
+ style: {
166
+ stopColor: '#5594e2',
167
+ stopOpacity: 1
168
+ }
169
+ }), /*#__PURE__*/_jsx__default["default"]("stop", {
170
+ offset: "100%",
171
+ style: {
172
+ stopColor: '#5594e2',
173
+ stopOpacity: 1
174
+ }
175
+ })), /*#__PURE__*/_jsx__default["default"]("linearGradient", {
176
+ id: "grad2",
177
+ x1: "0%",
178
+ x2: "100%",
179
+ y1: "100%",
180
+ y2: "0%"
181
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("stop", {
182
+ offset: "0%",
183
+ style: {
184
+ stopColor: '#5594e2',
185
+ stopOpacity: 1
186
+ }
187
+ }), /*#__PURE__*/_jsx__default["default"]("stop", {
188
+ offset: "11%",
189
+ style: {
190
+ stopColor: '#5594e2',
191
+ stopOpacity: 1
192
+ }
193
+ }), /*#__PURE__*/_jsx__default["default"]("stop", {
194
+ offset: "100%",
195
+ style: {
196
+ stopColor: '#E0E3E8',
197
+ stopOpacity: 1
198
+ }
199
+ })), /*#__PURE__*/_jsx__default["default"]("marker", {
200
+ id: "inverseL",
201
+ viewBox: "0 0 5 10",
202
+ refX: "0.5",
203
+ refY: "".concat(markerRefY),
204
+ markerUnits: "strokeWidth",
205
+ markerWidth: "0.5",
206
+ markerHeight: "".concat(markerHeight),
207
+ orient: "auto"
208
+ }, void 0, _path || (_path = /*#__PURE__*/_jsx__default["default"]("path", {
209
+ d: "M 0 0 L 6 0 A 5 5 0 0 0 6 10 L 0 10 z",
210
+ fill: "#FFF"
211
+ }))), /*#__PURE__*/_jsx__default["default"]("marker", {
212
+ id: "inverseR",
213
+ viewBox: "0 0 5 10",
214
+ refX: "0",
215
+ refY: "5",
216
+ markerUnits: "strokeWidth",
217
+ markerWidth: "0.7",
218
+ markerHeight: "".concat(markerHeight)
219
+ }, void 0, _path2 || (_path2 = /*#__PURE__*/_jsx__default["default"]("path", {
220
+ d: "M 0 0 L 6 0 A 5 5 0 0 0 6 10 L 0 10 z",
221
+ fill: "#FFF"
222
+ })))), grayTrack, !waiting && /*#__PURE__*/_jsx__default["default"]("g", {
223
+ fill: "none",
224
+ fillRule: "evenodd",
225
+ stroke: "none",
226
+ strokeWidth: "1"
227
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("path", {
228
+ className: classNameElement('arc-blue'),
229
+ d: "M30,5 C17.536025,6 6,17.536027 5,31",
230
+ stroke: "#5594e2",
231
+ strokeWidth: "".concat(strokeWidth - 0.5, "px"),
232
+ strokeLinecap: "round",
233
+ "data-testid": "circular-indicator-blue-arc"
234
+ }), /*#__PURE__*/_jsx__default["default"]("path", {
235
+ className: classNameElement('arc-white'),
236
+ d: "M33,5 C17.536027,5 5,17.536027 5,33",
237
+ stroke: "#FFF",
238
+ strokeWidth: "".concat(strokeWidth + 2, "px"),
239
+ markerStart: "url(#inverseR)",
240
+ markerEnd: "url(#inverseL)"
241
+ }), grayArc));
242
+
243
+ return /*#__PURE__*/_jsx__default["default"]("div", {
244
+ className: classNameBlock('wrapper'),
245
+ role: "status",
246
+ "aria-hidden": waiting || loading ? 'false' : 'true'
247
+ }, void 0, buildIndicator(indicator), showLabel && labelText);
248
+ };
249
+
250
+ CircularProgressIndicator.defaultProps = {
251
+ size: 'm',
252
+ showLabel: false,
253
+ showTooltip: false,
254
+ waiting: false,
255
+ loading: false
256
+ };
257
+ const circularProgressIndicatorProps = {
258
+ size: reactDesc.PropTypes.oneOf(['xs', 's', 'm', 'l', 'xl', 'xxl', 'xxxl']).description('Defines the size of the indicator').defaultValue('m'),
259
+ showLabel: reactDesc.PropTypes.bool.description('Wheter the indicator displays its state on a label or not').defaultValue(false),
260
+ showTooltip: reactDesc.PropTypes.bool.description('Wheter the indicator displays its state on a tooltip or not').defaultValue(false),
261
+ waiting: reactDesc.PropTypes.bool.description('Defines the state of the indicator as Waiting and only displays the gray track').defaultValue(false),
262
+ loading: reactDesc.PropTypes.bool.description('Defines the state of the indicator as Loading and displays a blue spinner animation').defaultValue(false)
263
+ };
264
+ const CircularProgressIndicatorWithSchema = reactDesc.describe(CircularProgressIndicator);
265
+ CircularProgressIndicatorWithSchema.propTypes = circularProgressIndicatorProps;
266
+
267
+ exports.CircularProgressIndicatorWithSchema = CircularProgressIndicatorWithSchema;
268
+ exports["default"] = CircularProgressIndicator;
package/cjs/index.js ADDED
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var DSCircularProgressIndicator = require('./DSCircularProgressIndicator.js');
6
+ var DSCircularIndeterminateIndicator = require('./v2/DSCircularIndeterminateIndicator.js');
7
+
8
+
9
+
10
+ exports.CircularProgressIndicatorWithSchema = DSCircularProgressIndicator.CircularProgressIndicatorWithSchema;
11
+ exports.DSCircularProgressIndicator = DSCircularProgressIndicator["default"];
12
+ exports["default"] = DSCircularProgressIndicator["default"];
13
+ exports.DSCircularIndeterminateIndicator = DSCircularIndeterminateIndicator.DSCircularIndeterminateIndicator;
14
+ exports.DSCircularIndeterminateIndicatorWithSchema = DSCircularIndeterminateIndicator.DSCircularIndeterminateIndicatorWithSchema;
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
7
+ require('react');
8
+ var dsGrid = require('@elliemae/ds-grid');
9
+ var DSTooltip = require('@elliemae/ds-tooltip');
10
+ var reactDesc = require('react-desc');
11
+ var styled = require('styled-components');
12
+ var dsSystem = require('@elliemae/ds-system');
13
+ var uid = require('uid');
14
+ var reactDescPropTypes = require('./react-desc-prop-types.js');
15
+ var jsxRuntime = require('react/jsx-runtime');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
20
+ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
21
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
22
+
23
+ var _templateObject, _templateObject2, _circle;
24
+ const r = dsSystem.kfrm(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["to { transform: rotate(2turn) }"])));
25
+ const s = dsSystem.kfrm(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["0%, 39% { stroke-dasharray: 942px 2826px }"])));
26
+ const StyledSvg = /*#__PURE__*/styled__default["default"].svg.withConfig({
27
+ componentId: "sc-3syz25-0"
28
+ })(["#gg{transform:rotate(45deg);stroke:url(#", ");mask:url(#", ");}mask use{stroke:#fff;stroke-linecap:round;stroke-dasharray:942px 2826px;animation:", " ", "s cubic-bezier(0.5,-0.43,0.5,1.43) infinite,", " ", "s ease-in-out infinite alternate;}"], props => props.linearGradientUid, props => props.maskUid, r, props => props.duration, s, props => props.duration / 2);
29
+ const sizeToPx = {
30
+ xs: '16px',
31
+ s: '24px',
32
+ m: '32px',
33
+ l: '48px',
34
+ xl: '56px',
35
+ xxl: '64px'
36
+ };
37
+ const sizeToWeight = {
38
+ xs: '10%',
39
+ s: '9%',
40
+ m: '8%',
41
+ l: '6%',
42
+ xl: '5%',
43
+ xxl: '4%'
44
+ };
45
+ const colorToHex = {
46
+ light: '#FFFFFF',
47
+ dark: '#0F364A'
48
+ };
49
+ const sizeToTextSize = {
50
+ xs: '12px',
51
+ s: '12px',
52
+ m: '12px',
53
+ l: '13px',
54
+ xl: '14px',
55
+ xxl: '16px'
56
+ };
57
+ const DSCircularIndeterminateIndicator = _ref => {
58
+ let {
59
+ size = 'm',
60
+ color = 'dark',
61
+ text = '',
62
+ showText = true,
63
+ withTooltip = false,
64
+ tooltipStartPlacementPreference = 'bottom',
65
+ __duration = 1.5
66
+ } = _ref;
67
+ const Wrapper = withTooltip ? DSTooltip.DSTooltipV3 : _ref2 => {
68
+ let {
69
+ children
70
+ } = _ref2;
71
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
72
+ children: children
73
+ });
74
+ };
75
+ const linearGradientUid = uid.uid(16);
76
+ const maskUid = uid.uid(16);
77
+ const circleUid = uid.uid(16);
78
+ return /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
79
+ gutter: "xs",
80
+ justifyContent: "center",
81
+ role: "status"
82
+ }, void 0, /*#__PURE__*/_jsx__default["default"](Wrapper, {
83
+ text: text,
84
+ textAlign: "center",
85
+ startPlacementPreference: tooltipStartPlacementPreference
86
+ }, void 0, /*#__PURE__*/_jsx__default["default"](StyledSvg, {
87
+ viewBox: "-1950 -975 3900 1950",
88
+ fill: "none",
89
+ stroke: "transparent",
90
+ strokeWidth: sizeToWeight[size],
91
+ width: sizeToPx[size],
92
+ height: sizeToPx[size],
93
+ style: {
94
+ display: 'block',
95
+ margin: 'auto'
96
+ },
97
+ linearGradientUid: linearGradientUid,
98
+ maskUid: maskUid,
99
+ duration: __duration
100
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("g", {
101
+ transform: "scale(2.298)"
102
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("linearGradient", {
103
+ id: linearGradientUid
104
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("stop", {
105
+ stopColor: color === 'dark' ? '#48a3ff' : '#ccd6ff'
106
+ }), /*#__PURE__*/_jsx__default["default"]("stop", {
107
+ stopColor: color === 'dark' ? '#49d0ff' : '#ebf6ff',
108
+ offset: "1"
109
+ })), /*#__PURE__*/_jsx__default["default"]("mask", {
110
+ id: maskUid
111
+ }, void 0, _circle || (_circle = /*#__PURE__*/_jsx__default["default"]("circle", {
112
+ r: "1200",
113
+ fill: "#000"
114
+ })), /*#__PURE__*/_jsx__default["default"]("use", {
115
+ xlinkHref: "#".concat(circleUid)
116
+ })), /*#__PURE__*/_jsx__default["default"]("circle", {
117
+ id: circleUid,
118
+ r: "600"
119
+ }), /*#__PURE__*/_jsx__default["default"]("g", {
120
+ id: "gg"
121
+ }, void 0, /*#__PURE__*/_jsx__default["default"]("use", {
122
+ xlinkHref: "#".concat(circleUid)
123
+ })))), text !== '' && showText && /*#__PURE__*/_jsx__default["default"]("span", {
124
+ style: {
125
+ color: colorToHex[color],
126
+ fontSize: sizeToTextSize[size]
127
+ }
128
+ }, void 0, text)));
129
+ };
130
+ const DSCircularIndeterminateIndicatorWithSchema = reactDesc.describe(DSCircularIndeterminateIndicator);
131
+ DSCircularIndeterminateIndicatorWithSchema.propTypes = reactDescPropTypes.CircularIndeterminateIndicatorPropTypes;
132
+
133
+ exports.DSCircularIndeterminateIndicator = DSCircularIndeterminateIndicator;
134
+ exports.DSCircularIndeterminateIndicatorWithSchema = DSCircularIndeterminateIndicatorWithSchema;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var DSCircularIndeterminateIndicator = require('./DSCircularIndeterminateIndicator.js');
6
+
7
+
8
+
9
+ exports.DSCircularIndeterminateIndicator = DSCircularIndeterminateIndicator.DSCircularIndeterminateIndicator;
10
+ exports.DSCircularIndeterminateIndicatorWithSchema = DSCircularIndeterminateIndicator.DSCircularIndeterminateIndicatorWithSchema;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactDesc = require('react-desc');
6
+
7
+ /* eslint-disable max-lines */
8
+ const CircularIndeterminateIndicatorPropTypes = {
9
+ size: reactDesc.PropTypes.oneOf(['xs', 's', 'm', 'l', 'xl', 'xxl']).description('Size of the indicator').defaultValue('m'),
10
+ color: reactDesc.PropTypes.oneOf(['light', 'dark']).description('Color mode for the indicator').defaultValue('dark'),
11
+ text: reactDesc.PropTypes.string.description('Optional text to show under the indicator').defaultValue(''),
12
+ showText: reactDesc.PropTypes.bool.description('Whether to show the optional text or not').defaultValue(true),
13
+ withTooltip: reactDesc.PropTypes.bool.description('Whether to include a tooltip that shows the optional text on hover').defaultValue(false),
14
+ tooltipStartPlacementPreference: reactDesc.PropTypes.oneOf(['top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']).description('start placement preference for the tooltip').defaultValue('center')
15
+ };
16
+
17
+ exports.CircularIndeterminateIndicatorPropTypes = CircularIndeterminateIndicatorPropTypes;