@telus-uds/components-base 3.7.1 → 3.9.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/lib/cjs/ActivityIndicator/FullScreenIndicator.js +89 -0
  3. package/lib/cjs/ActivityIndicator/InlineIndicator.js +64 -0
  4. package/lib/cjs/ActivityIndicator/OverlayIndicator.js +156 -0
  5. package/lib/cjs/ActivityIndicator/RenderActivityIndicator.js +88 -0
  6. package/lib/cjs/ActivityIndicator/index.js +91 -23
  7. package/lib/cjs/ActivityIndicator/shared.js +12 -1
  8. package/lib/cjs/ActivityIndicator/sharedProptypes.js +67 -0
  9. package/lib/cjs/Card/Card.js +38 -45
  10. package/lib/cjs/ExpandCollapseMini/ExpandCollapseMiniControl.js +1 -1
  11. package/lib/cjs/List/ListItemMark.js +13 -2
  12. package/lib/cjs/MultiSelectFilter/ModalOverlay.js +19 -5
  13. package/lib/cjs/MultiSelectFilter/MultiSelectFilter.js +22 -9
  14. package/lib/cjs/ToggleSwitch/ToggleSwitch.js +13 -2
  15. package/lib/cjs/Validator/Validator.js +135 -64
  16. package/lib/cjs/utils/index.js +9 -1
  17. package/lib/cjs/utils/useDetectOutsideClick.js +39 -0
  18. package/lib/cjs/utils/useVariants.js +46 -0
  19. package/lib/esm/ActivityIndicator/FullScreenIndicator.js +82 -0
  20. package/lib/esm/ActivityIndicator/InlineIndicator.js +57 -0
  21. package/lib/esm/ActivityIndicator/OverlayIndicator.js +149 -0
  22. package/lib/esm/ActivityIndicator/RenderActivityIndicator.js +83 -0
  23. package/lib/esm/ActivityIndicator/index.js +89 -23
  24. package/lib/esm/ActivityIndicator/shared.js +11 -0
  25. package/lib/esm/ActivityIndicator/sharedProptypes.js +61 -0
  26. package/lib/esm/Card/Card.js +38 -45
  27. package/lib/esm/ExpandCollapseMini/ExpandCollapseMiniControl.js +1 -1
  28. package/lib/esm/List/ListItemMark.js +13 -2
  29. package/lib/esm/MultiSelectFilter/ModalOverlay.js +19 -5
  30. package/lib/esm/MultiSelectFilter/MultiSelectFilter.js +22 -9
  31. package/lib/esm/ToggleSwitch/ToggleSwitch.js +13 -2
  32. package/lib/esm/Validator/Validator.js +135 -64
  33. package/lib/esm/utils/index.js +2 -1
  34. package/lib/esm/utils/useDetectOutsideClick.js +31 -0
  35. package/lib/esm/utils/useVariants.js +41 -0
  36. package/lib/package.json +2 -2
  37. package/package.json +2 -2
  38. package/src/ActivityIndicator/FullScreenIndicator.jsx +65 -0
  39. package/src/ActivityIndicator/InlineIndicator.jsx +47 -0
  40. package/src/ActivityIndicator/OverlayIndicator.jsx +140 -0
  41. package/src/ActivityIndicator/RenderActivityIndicator.jsx +82 -0
  42. package/src/ActivityIndicator/index.jsx +113 -32
  43. package/src/ActivityIndicator/shared.js +11 -0
  44. package/src/ActivityIndicator/sharedProptypes.js +62 -0
  45. package/src/Card/Card.jsx +51 -54
  46. package/src/ExpandCollapseMini/ExpandCollapseMiniControl.jsx +1 -1
  47. package/src/List/ListItemMark.jsx +18 -2
  48. package/src/MultiSelectFilter/ModalOverlay.jsx +18 -5
  49. package/src/MultiSelectFilter/MultiSelectFilter.jsx +21 -10
  50. package/src/ToggleSwitch/ToggleSwitch.jsx +17 -2
  51. package/src/Validator/Validator.jsx +172 -85
  52. package/src/utils/index.js +1 -0
  53. package/src/utils/useDetectOutsideClick.js +35 -0
  54. package/src/utils/useVariants.js +44 -0
package/CHANGELOG.md CHANGED
@@ -1,12 +1,44 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Mon, 05 May 2025 21:28:44 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 10 Jun 2025 20:18:03 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 3.9.0
8
+
9
+ Tue, 10 Jun 2025 20:18:03 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - `ToggleSwitch`: update UI for mobile devices (guillermo.peitzner@telus.com)
14
+ - `MultiSelectFilter`: preservation of original case (uppercase/lowercase) for label when using custom dictionary prop enabled" (35577399+JoshHC@users.noreply.github.com)
15
+ - Bump @telus-uds/system-theme-tokens to v4.7.0
16
+
17
+ ### Patches
18
+
19
+ - `MultiSelectFilter`: add containerBorderColor token (sergio.ramirez@telus.com)
20
+ - `Validator`: concatenation and 6-digit limit bugs fixed (35577399+JoshHC@users.noreply.github.com)
21
+
22
+ ## 3.8.0
23
+
24
+ Fri, 23 May 2025 15:15:58 GMT
25
+
26
+ ### Minor changes
27
+
28
+ - `ActivityIndicator`: new `Spinner` functionalities added because it will be deprecated soon (35577399+JoshHC@users.noreply.github.com)
29
+ - `MultiSelectFilter`: close the overlay box when we click outside (sergio.ramirez@telus.com)
30
+ - `Notification`: feature variant added for allium, koodo and pm (35577399+JoshHC@users.noreply.github.com)
31
+ - Bump @telus-uds/system-theme-tokens to v4.6.0
32
+
33
+ ### Patches
34
+
35
+ - `List`: fix itemIconColor token override (guillermo.peitzner@telus.com)
36
+ - `ExpandCollapseMini`: quiet variant fixed (35577399+JoshHC@users.noreply.github.com)
37
+ - `Card`: The inability to activate radio selection in `InteractiveCard` has been fixed (35577399+JoshHC@users.noreply.github.com)
38
+
7
39
  ## 3.7.1
8
40
 
9
- Mon, 05 May 2025 21:28:44 GMT
41
+ Mon, 05 May 2025 21:30:13 GMT
10
42
 
11
43
  ### Patches
12
44
 
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
9
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _StackView = _interopRequireDefault(require("../StackView"));
13
+ var _Typography = _interopRequireDefault(require("../Typography"));
14
+ var _RenderActivityIndicator = _interopRequireDefault(require("./RenderActivityIndicator"));
15
+ var _shared = require("./shared");
16
+ var _sharedProptypes = require("./sharedProptypes");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ const FullScreenIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
20
+ let {
21
+ variantProps,
22
+ label,
23
+ labelPosition,
24
+ labelMapping,
25
+ backgroundColor,
26
+ showLabel
27
+ } = _ref;
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
29
+ style: [staticStyles.fullScreenOverlay, {
30
+ backgroundColor
31
+ }],
32
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
33
+ space: showLabel ? _shared.SPACE_WITH_LABEL : _shared.SPACE_WITHOUT_LABEL,
34
+ tokens: {
35
+ alignItems: 'center'
36
+ },
37
+ direction: labelMapping[labelPosition],
38
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RenderActivityIndicator.default, {
39
+ ...variantProps,
40
+ ref: ref,
41
+ label: label
42
+ }), showLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
43
+ children: label
44
+ })]
45
+ })
46
+ });
47
+ });
48
+ FullScreenIndicator.displayName = 'FullScreenIndicator';
49
+ const staticStyles = _StyleSheet.default.create({
50
+ fullScreenOverlay: {
51
+ ..._Platform.default.select({
52
+ web: {
53
+ position: 'fixed',
54
+ top: 0,
55
+ left: 0,
56
+ width: '100vw',
57
+ height: '100vh',
58
+ zIndex: _shared.BACKDROP_Z_INDEX,
59
+ justifyContent: 'center',
60
+ alignItems: 'center'
61
+ },
62
+ default: {
63
+ position: 'absolute',
64
+ top: 0,
65
+ left: 0,
66
+ right: 0,
67
+ bottom: 0,
68
+ justifyContent: 'center',
69
+ alignItems: 'center',
70
+ ...(_Platform.default.OS === 'android' ? {
71
+ elevation: 5
72
+ } : {
73
+ zIndex: _shared.BACKDROP_Z_INDEX
74
+ })
75
+ }
76
+ })
77
+ }
78
+ });
79
+ FullScreenIndicator.propTypes = {
80
+ /**
81
+ * Shared props
82
+ * */
83
+ ..._sharedProptypes.activityIndicatorCommonProps,
84
+ /**
85
+ * Background color for overlay
86
+ * */
87
+ backgroundColor: _propTypes.default.string.isRequired
88
+ };
89
+ var _default = exports.default = FullScreenIndicator;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
9
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
10
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _StackView = _interopRequireDefault(require("../StackView"));
13
+ var _Typography = _interopRequireDefault(require("../Typography"));
14
+ var _RenderActivityIndicator = _interopRequireDefault(require("./RenderActivityIndicator"));
15
+ var _sharedProptypes = require("./sharedProptypes");
16
+ var _shared = require("./shared");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ const InlineIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
20
+ let {
21
+ variantProps,
22
+ label,
23
+ labelPosition,
24
+ labelMapping,
25
+ showLabel
26
+ } = _ref;
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
28
+ style: staticStyles.container,
29
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
30
+ space: showLabel ? _shared.SPACE_WITH_LABEL : _shared.SPACE_WITHOUT_LABEL,
31
+ direction: labelMapping[labelPosition],
32
+ tokens: {
33
+ alignItems: 'center'
34
+ },
35
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RenderActivityIndicator.default, {
36
+ ...variantProps,
37
+ ref: ref,
38
+ label: label
39
+ }), showLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
40
+ children: label
41
+ })]
42
+ })
43
+ });
44
+ });
45
+ InlineIndicator.displayName = 'InlineIndicator';
46
+ const staticStyles = _StyleSheet.default.create({
47
+ container: {
48
+ flexDirection: 'column',
49
+ alignItems: 'center',
50
+ display: _Platform.default.OS === 'web' ? 'inline-flex' : 'flex',
51
+ alignSelf: 'flex-start'
52
+ }
53
+ });
54
+ InlineIndicator.propTypes = {
55
+ /**
56
+ * Shared props
57
+ * */
58
+ ..._sharedProptypes.activityIndicatorCommonProps,
59
+ /**
60
+ * Whether the indicator sits inline with text/other elements
61
+ * */
62
+ inline: _propTypes.default.bool
63
+ };
64
+ var _default = exports.default = InlineIndicator;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
9
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
10
+ var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _StackView = _interopRequireDefault(require("../StackView"));
13
+ var _Typography = _interopRequireDefault(require("../Typography"));
14
+ var _RenderActivityIndicator = _interopRequireDefault(require("./RenderActivityIndicator"));
15
+ var _shared = require("./shared");
16
+ var _sharedProptypes = require("./sharedProptypes");
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ const recursiveMap = (nodeChildren, fn) => _react.default.Children.map(nodeChildren, child => {
20
+ if (! /*#__PURE__*/_react.default.isValidElement(child)) return child;
21
+ if (child.props?.children) {
22
+ return fn(/*#__PURE__*/_react.default.cloneElement(child, {
23
+ children: recursiveMap(child.props.children, fn)
24
+ }));
25
+ }
26
+ return fn(child);
27
+ });
28
+ const OverlayIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
29
+ let {
30
+ variantProps,
31
+ label,
32
+ labelPosition,
33
+ labelMapping,
34
+ children,
35
+ inline,
36
+ showLabel,
37
+ isActive = true
38
+ } = _ref;
39
+ const safeChildren = _Platform.default.OS === 'web' && isActive ? recursiveMap(children, c => /*#__PURE__*/_react.default.isValidElement(c) ? /*#__PURE__*/_react.default.cloneElement(c, {
40
+ role: 'presentation'
41
+ }) : c) : children;
42
+
43
+ // inline + children
44
+ if (inline && children) {
45
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
46
+ style: [staticStyles.container, _Platform.default.OS === 'web' && staticStyles.inlineContainer],
47
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
48
+ style: staticStyles.backdropContainer,
49
+ children: safeChildren
50
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
51
+ style: staticStyles.buttonOverlaySpinner,
52
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RenderActivityIndicator.default, {
53
+ ...variantProps,
54
+ ref: ref,
55
+ label: label
56
+ })
57
+ })]
58
+ });
59
+ }
60
+
61
+ // overlay
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
63
+ style: staticStyles.container,
64
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
65
+ style: staticStyles.backdropContainer,
66
+ children: safeChildren
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
68
+ style: [staticStyles.overlayContainer, _Platform.default.OS === 'web' && staticStyles.webOverlayContainer],
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
70
+ space: showLabel ? _shared.SPACE_WITH_LABEL : _shared.SPACE_WITHOUT_LABEL,
71
+ tokens: {
72
+ alignItems: 'center'
73
+ },
74
+ direction: labelMapping[labelPosition],
75
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RenderActivityIndicator.default, {
76
+ ...variantProps,
77
+ ref: ref,
78
+ label: label
79
+ }), showLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
80
+ children: label
81
+ })]
82
+ })
83
+ })]
84
+ });
85
+ });
86
+ OverlayIndicator.displayName = 'OverlayIndicator';
87
+ const staticStyles = _StyleSheet.default.create({
88
+ container: {
89
+ position: 'relative'
90
+ },
91
+ inlineContainer: {
92
+ display: 'inline-flex'
93
+ },
94
+ backdropContainer: {
95
+ opacity: _shared.BACKDROP_OPACITY
96
+ },
97
+ overlayContainer: {
98
+ position: 'absolute',
99
+ top: '50%',
100
+ left: '50%',
101
+ ..._Platform.default.select({
102
+ ios: {
103
+ zIndex: _shared.BACKDROP_Z_INDEX
104
+ },
105
+ android: {
106
+ elevation: 5
107
+ }
108
+ })
109
+ },
110
+ webOverlayContainer: {
111
+ transform: [{
112
+ translateX: '-50%'
113
+ }, {
114
+ translateY: '-50%'
115
+ }],
116
+ zIndex: _shared.BACKDROP_Z_INDEX
117
+ },
118
+ buttonOverlaySpinner: {
119
+ position: 'absolute',
120
+ top: '50%',
121
+ left: '50%',
122
+ ..._Platform.default.select({
123
+ web: {
124
+ transform: 'translate(-50%, -50%)',
125
+ zIndex: _shared.BACKDROP_Z_INDEX
126
+ },
127
+ default: {
128
+ transform: [{
129
+ translateX: -0.5
130
+ }, {
131
+ translateY: -0.5
132
+ }],
133
+ zIndex: _shared.BACKDROP_Z_INDEX
134
+ }
135
+ })
136
+ }
137
+ });
138
+ OverlayIndicator.propTypes = {
139
+ /**
140
+ * Shared props
141
+ * */
142
+ ..._sharedProptypes.activityIndicatorCommonProps,
143
+ /**
144
+ * Background color for overlay
145
+ * */
146
+ inline: _propTypes.default.bool,
147
+ /**
148
+ * Children on which the overlay is drawn
149
+ * */
150
+ children: _propTypes.default.node,
151
+ /**
152
+ * Controls whether the overlay is active and should apply the presentation role
153
+ * */
154
+ isActive: _propTypes.default.bool
155
+ };
156
+ var _default = exports.default = OverlayIndicator;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Spinner = _interopRequireDefault(require("./Spinner"));
10
+ var _Dots = _interopRequireDefault(require("./Dots"));
11
+ var _shared = require("./shared");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ /**
15
+ * Return <Dots/> or <Spinner/> based on `variant?.dots`.
16
+ * Reused in all the variants of the component.
17
+ */const RenderActivityIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
18
+ let {
19
+ variant = {},
20
+ dotSize,
21
+ size,
22
+ color,
23
+ indicatorBackgroundColor,
24
+ thickness,
25
+ label,
26
+ isStatic
27
+ } = _ref;
28
+ const {
29
+ dots,
30
+ style
31
+ } = variant || {};
32
+ const isDots = dots === true || style === _shared.DOTS_STYLE;
33
+ return isDots ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dots.default, {
34
+ ref: ref,
35
+ size: dotSize,
36
+ color: color,
37
+ indicatorBackgroundColor: indicatorBackgroundColor,
38
+ label: label,
39
+ isStatic: isStatic
40
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
41
+ ref: ref,
42
+ size: size,
43
+ color: color,
44
+ indicatorBackgroundColor: indicatorBackgroundColor,
45
+ thickness: thickness,
46
+ label: label,
47
+ isStatic: isStatic
48
+ });
49
+ });
50
+ RenderActivityIndicator.displayName = 'RenderActivityIndicator';
51
+ RenderActivityIndicator.propTypes = {
52
+ /**
53
+ * ActivityIndicator variants
54
+ * */
55
+ variant: _propTypes.default.shape({
56
+ dots: _propTypes.default.bool,
57
+ style: _propTypes.default.oneOf([_shared.DOTS_STYLE])
58
+ }),
59
+ /**
60
+ * Size of the dots
61
+ * */
62
+ dotSize: _propTypes.default.number,
63
+ /**
64
+ * Size of the spinner
65
+ * */
66
+ size: _propTypes.default.number,
67
+ /**
68
+ * Primary color
69
+ * */
70
+ color: _propTypes.default.string,
71
+ /**
72
+ * Secondary color (background) of the indicator
73
+ * */
74
+ indicatorBackgroundColor: _propTypes.default.string,
75
+ /**
76
+ * Thickness of the indicator
77
+ * */
78
+ thickness: _propTypes.default.number,
79
+ /**
80
+ * Label for the ActivityIndicator
81
+ * */
82
+ label: _propTypes.default.string,
83
+ /**
84
+ * if true, there's no animation for ActivityIndicator
85
+ * */
86
+ isStatic: _propTypes.default.bool
87
+ };
88
+ var _default = exports.default = RenderActivityIndicator;
@@ -6,45 +6,85 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
10
+ var _utils = require("../utils");
9
11
  var _ThemeProvider = require("../ThemeProvider");
10
12
  var _props = require("../utils/props");
11
- var _Spinner = _interopRequireDefault(require("./Spinner"));
12
- var _Dots = _interopRequireDefault(require("./Dots"));
13
+ var _FullScreenIndicator = _interopRequireDefault(require("./FullScreenIndicator"));
14
+ var _OverlayIndicator = _interopRequireDefault(require("./OverlayIndicator"));
15
+ var _InlineIndicator = _interopRequireDefault(require("./InlineIndicator"));
13
16
  var _jsxRuntime = require("react/jsx-runtime");
14
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ const labelMapping = {
19
+ top: 'column-reverse',
20
+ bottom: 'column',
21
+ left: 'row-reverse',
22
+ right: 'row'
23
+ };
24
+
15
25
  /**
16
26
  * `ActivityIndicator` renders a visual loading state.
17
27
  * It does not handle positioning or layout of that visual loader.
18
- */const ActivityIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
28
+ */
29
+ const ActivityIndicator = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
19
30
  let {
20
31
  variant,
21
32
  tokens,
22
33
  label,
23
- isStatic = false
34
+ labelPosition = 'bottom',
35
+ showLabel = true,
36
+ inline = false,
37
+ fullScreen = false,
38
+ overlay = false,
39
+ isStatic = false,
40
+ children,
41
+ fullScreenBackgroundColor
24
42
  } = _ref;
25
43
  const {
26
44
  size,
27
45
  dotSize,
28
46
  color,
29
47
  indicatorBackgroundColor,
48
+ fullScreenOverlayBackground,
30
49
  thickness
31
50
  } = (0, _ThemeProvider.useThemeTokens)('ActivityIndicator', tokens, variant);
32
- return variant?.dots ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dots.default, {
33
- ref: ref,
34
- size: dotSize,
35
- color: color,
36
- indicatorBackgroundColor: indicatorBackgroundColor,
37
- label: label,
38
- isStatic: isStatic
39
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
40
- ref: ref,
41
- size: size,
42
- color: color,
43
- indicatorBackgroundColor: indicatorBackgroundColor,
44
- thickness: thickness,
45
- label: label,
46
- isStatic: isStatic
47
- });
51
+ (0, _utils.useScrollBlocking)([_Platform.default.OS === 'web' && fullScreen]);
52
+ const variantProps = {
53
+ variant,
54
+ dotSize,
55
+ size,
56
+ color,
57
+ indicatorBackgroundColor,
58
+ thickness,
59
+ isStatic
60
+ };
61
+ const visibleLabel = showLabel && !!label;
62
+ const commonProps = {
63
+ ref,
64
+ variantProps,
65
+ label,
66
+ labelPosition,
67
+ labelMapping,
68
+ showLabel: visibleLabel
69
+ };
70
+ switch (true) {
71
+ case fullScreen:
72
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FullScreenIndicator.default, {
73
+ ...commonProps,
74
+ backgroundColor: fullScreenBackgroundColor || fullScreenOverlayBackground
75
+ });
76
+ case overlay:
77
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OverlayIndicator.default, {
78
+ ...commonProps,
79
+ inline: inline,
80
+ isActive: overlay,
81
+ children: children
82
+ });
83
+ default:
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InlineIndicator.default, {
85
+ ...commonProps
86
+ });
87
+ }
48
88
  });
49
89
  ActivityIndicator.displayName = 'ActivityIndicator';
50
90
  ActivityIndicator.propTypes = {
@@ -53,10 +93,38 @@ ActivityIndicator.propTypes = {
53
93
  /**
54
94
  * A visually hidden accessible label describing the action taking place
55
95
  */
56
- label: _propTypes.default.string.isRequired,
96
+ label: _propTypes.default.string,
97
+ /**
98
+ * If true, it should render a static ActivityIndicator
99
+ */
100
+ isStatic: _propTypes.default.bool,
101
+ /**
102
+ * Position of the label relative to ActivityIndicator
103
+ */
104
+ labelPosition: _propTypes.default.oneOf(['top', 'bottom', 'left', 'right']),
105
+ /**
106
+ * show or hide the label
107
+ */
108
+ showLabel: _propTypes.default.bool,
109
+ /**
110
+ * If true, the ActivityIndicator will be displayed in full screen mode
111
+ */
112
+ fullScreen: _propTypes.default.bool,
113
+ /**
114
+ * If true, the ActivityIndicator will be displayed inline
115
+ */
116
+ inline: _propTypes.default.bool,
117
+ /**
118
+ * If true, the ActivityIndicator will be displayed in overlay mode
119
+ */
120
+ overlay: _propTypes.default.bool,
121
+ /**
122
+ * Children to be rendered inside ActivityIndicator
123
+ */
124
+ children: _propTypes.default.node,
57
125
  /**
58
- * If true, it should render a static spinner
126
+ * Background color of the full screen overlay
59
127
  */
60
- isStatic: _propTypes.default.bool
128
+ fullScreenBackgroundColor: _propTypes.default.string
61
129
  };
62
130
  var _default = exports.default = ActivityIndicator;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.propTypes = exports.UNDERSHOOT_FACTOR = exports.SVG_SIZE = exports.SVG_RADIUS = exports.SVG_CIRCUMFERENCE = exports.SVG_CENTER = exports.SPINNER_ROTATION_DEGREES = exports.SPINNER_RADIUS = exports.SPINNER_KEYTIMES = exports.SPINNER_DASHOFFSET_FACTOR = exports.SPINNER_DASHARRAY_MIN = exports.SPINNER_DASHARRAY_MAX = exports.SPINNER_DASHARRAY_HALF = exports.ROTATION_TRANSFORM = exports.OVERSHOOT_FACTOR = exports.DURATION = exports.DOT_FADEOUT_OUTPUT_RANGE = exports.DOT_FADEOUT_INPUT_RANGE = exports.DOTS_TOTAL_ANIMATION_DURATION = exports.DOTS_SPACING_X = exports.DOTS_PADDING_FACTOR = exports.DOTS_JUMP_HEIGHT_FACTOR = exports.DOTS_FADEOUT_VALUES = exports.DOTS_FADEOUT_KEYTIMES = exports.DOTS_BASE_Y_FACTOR = exports.DOTS_ANIMATION_DURATION = exports.DOT3_COLOR_KEYTIMES = exports.DOT3_ANIMATION_KEYTIMES = exports.DOT3_ANIMATION_INPUT_RANGE = exports.DOT2_COLOR_KEYTIMES = exports.DOT2_ANIMATION_KEYTIMES = exports.DOT2_ANIMATION_INPUT_RANGE = exports.DOT1_COLOR_KEYTIMES = exports.DOT1_ANIMATION_KEYTIMES = exports.DOT1_ANIMATION_INPUT_RANGE = exports.BOUNCY_CURVE = void 0;
6
+ exports.propTypes = exports.UNDERSHOOT_FACTOR = exports.SVG_SIZE = exports.SVG_RADIUS = exports.SVG_CIRCUMFERENCE = exports.SVG_CENTER = exports.SPINNER_ROTATION_DEGREES = exports.SPINNER_RADIUS = exports.SPINNER_KEYTIMES = exports.SPINNER_DASHOFFSET_FACTOR = exports.SPINNER_DASHARRAY_MIN = exports.SPINNER_DASHARRAY_MAX = exports.SPINNER_DASHARRAY_HALF = exports.SPACE_WITH_LABEL = exports.SPACE_WITHOUT_LABEL = exports.ROTATION_TRANSFORM = exports.OVERSHOOT_FACTOR = exports.DURATION = exports.DOT_FADEOUT_OUTPUT_RANGE = exports.DOT_FADEOUT_INPUT_RANGE = exports.DOTS_TOTAL_ANIMATION_DURATION = exports.DOTS_STYLE = exports.DOTS_SPACING_X = exports.DOTS_PADDING_FACTOR = exports.DOTS_JUMP_HEIGHT_FACTOR = exports.DOTS_FADEOUT_VALUES = exports.DOTS_FADEOUT_KEYTIMES = exports.DOTS_BASE_Y_FACTOR = exports.DOTS_ANIMATION_DURATION = exports.DOT3_COLOR_KEYTIMES = exports.DOT3_ANIMATION_KEYTIMES = exports.DOT3_ANIMATION_INPUT_RANGE = exports.DOT2_COLOR_KEYTIMES = exports.DOT2_ANIMATION_KEYTIMES = exports.DOT2_ANIMATION_INPUT_RANGE = exports.DOT1_COLOR_KEYTIMES = exports.DOT1_ANIMATION_KEYTIMES = exports.DOT1_ANIMATION_INPUT_RANGE = exports.BOUNCY_CURVE = exports.BACKDROP_Z_INDEX = exports.BACKDROP_OPACITY = void 0;
7
7
  var _propTypes = _interopRequireDefault(require("prop-types"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  // Spinner
@@ -56,6 +56,17 @@ const DOT_FADEOUT_OUTPUT_RANGE = exports.DOT_FADEOUT_OUTPUT_RANGE = [1, 1, 0, 0]
56
56
  const DOT1_ANIMATION_INPUT_RANGE = exports.DOT1_ANIMATION_INPUT_RANGE = [0, 0.1, 0.2, 1];
57
57
  const DOT2_ANIMATION_INPUT_RANGE = exports.DOT2_ANIMATION_INPUT_RANGE = [0, 0.3, 0.4, 0.5, 1];
58
58
  const DOT3_ANIMATION_INPUT_RANGE = exports.DOT3_ANIMATION_INPUT_RANGE = [0, 0.6, 0.7, 0.8, 1];
59
+
60
+ // Backdrop
61
+ const BACKDROP_OPACITY = exports.BACKDROP_OPACITY = 0.06;
62
+ const BACKDROP_Z_INDEX = exports.BACKDROP_Z_INDEX = 1400;
63
+
64
+ // Space
65
+ const SPACE_WITH_LABEL = exports.SPACE_WITH_LABEL = 3;
66
+ const SPACE_WITHOUT_LABEL = exports.SPACE_WITHOUT_LABEL = 0;
67
+
68
+ // Style
69
+ const DOTS_STYLE = exports.DOTS_STYLE = 'dots';
59
70
  const propTypes = exports.propTypes = {
60
71
  color: _propTypes.default.string.isRequired,
61
72
  baseColor: _propTypes.default.string,
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.activityIndicatorVariantProps = exports.activityIndicatorCommonProps = void 0;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * PropTypes for the 3 variants of the ActivityIndicator:
11
+ * - InlineIndicator
12
+ * - OverlayIndicator
13
+ * - FullScreenIndicator
14
+ */
15
+ const activityIndicatorVariantProps = exports.activityIndicatorVariantProps = _propTypes.default.shape({
16
+ /**
17
+ * Indicates the variant style for the ActivityIndicator
18
+ * */
19
+ variant: _propTypes.default.object,
20
+ /**
21
+ * Size of the dots
22
+ * */
23
+ dotSize: _propTypes.default.number,
24
+ /**
25
+ * Size of the ActivityIndicator Spinner
26
+ * */
27
+ size: _propTypes.default.number,
28
+ /**
29
+ * Primary color (Spinner)
30
+ * */
31
+ color: _propTypes.default.string,
32
+ /**
33
+ * Secondary color (background) of the indicator
34
+ * */
35
+ indicatorBackgroundColor: _propTypes.default.string,
36
+ /**
37
+ * Thickness of the ActivityIndicator Spinner
38
+ * */
39
+ thickness: _propTypes.default.number,
40
+ /**
41
+ * Indicates if the ActivityIndicator is static
42
+ * (not animated)
43
+ * */
44
+ isStatic: _propTypes.default.bool
45
+ }).isRequired;
46
+ const activityIndicatorCommonProps = exports.activityIndicatorCommonProps = {
47
+ /**
48
+ * Props used by RenderActivityIndicator
49
+ * */
50
+ variantProps: activityIndicatorVariantProps,
51
+ /**
52
+ * Shows or hide the label
53
+ * */
54
+ showLabel: _propTypes.default.bool,
55
+ /**
56
+ * A visually hidden accessible label describing the action taking place
57
+ */
58
+ label: _propTypes.default.string,
59
+ /**
60
+ * Position of the label relative to ActivityIndicator
61
+ */
62
+ labelPosition: _propTypes.default.oneOf(['top', 'bottom', 'left', 'right']),
63
+ /**
64
+ * Map of flex-direction position for label
65
+ * */
66
+ labelMapping: _propTypes.default.object.isRequired
67
+ };