@occmundial/occ-atomic 3.0.0-beta.2 → 3.0.0-beta.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/build/Banner/Banner.js +30 -40
  3. package/build/Banner/Banner.test.js +64 -17
  4. package/build/Banner/__snapshots__/Banner.test.js.snap +0 -28
  5. package/build/Banner/index.js +1 -6
  6. package/build/Button/__snapshots__/Button.test.js.snap +18 -20
  7. package/build/Button/styles.js +6 -8
  8. package/build/Checkbox/Checkbox.js +48 -3
  9. package/build/Checkbox/__snapshots__/Checkbox.test.js.snap +81 -49
  10. package/build/Checkbox/styles.js +91 -48
  11. package/build/Pill/Choice/Choice.js +73 -81
  12. package/build/Pill/Choice/styles.js +64 -20
  13. package/build/Pill/Group/Group.js +5 -2
  14. package/build/Pill/Group/styles.js +31 -31
  15. package/build/Pill/Pill.js +4 -3
  16. package/build/Pill/Stack/Stack.js +7 -12
  17. package/build/Pill/Stack/styles.js +43 -33
  18. package/build/Pill/__snapshots__/Pill.test.js.snap +14 -24
  19. package/build/Pill/styles.js +22 -27
  20. package/build/Radio/Radio.js +42 -6
  21. package/build/Radio/__snapshots__/Radio.test.js.snap +81 -80
  22. package/build/Radio/styles.js +93 -85
  23. package/build/SlideToggle/SlideToggle.js +38 -6
  24. package/build/SlideToggle/SlideToggle.test.js +2 -2
  25. package/build/SlideToggle/__snapshots__/SlideToggle.test.js.snap +53 -37
  26. package/build/SlideToggle/styles.js +65 -45
  27. package/build/Text/Text.js +4 -2
  28. package/build/TextField/TextField.js +7 -6
  29. package/build/TextField/__snapshots__/TextField.test.js.snap +3 -0
  30. package/build/TextField/styles.js +3 -0
  31. package/build/Tip/Tip.js +51 -95
  32. package/build/Tip/Tip.test.js +29 -6
  33. package/build/Tip/TipText/index.js +32 -0
  34. package/build/Tip/__snapshots__/Tip.test.js.snap +90 -15
  35. package/build/Tip/styles.js +85 -31
  36. package/build/tokens/colors.json +3 -3
  37. package/package.json +4 -1
  38. package/build/Banner/styles.js +0 -41
@@ -5,75 +5,91 @@ exports[`SlideToggle matches the snapshot 1`] = `ShallowWrapper {}`;
5
5
  exports[`SlideToggle styles matches the snapshot 1`] = `
6
6
  Object {
7
7
  "checked": Object {
8
- "& $icon": Object {
9
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJCQkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgoJCTxwYXRoIGZpbGw9IiMwMDZFRkYiIGQ9Ik0xOC4zLDcuM2wxLjQsMS40bC04LjcsOWMtMC40LDAuNC0xLDAuNC0xLjQsMC4xbC00LjMtMy42bDEuMy0xLjVsMy42LDNDMTAuMiwxNS42LDE4LjMsNy4zLDE4LjMsNy4zeiIvPgoJCTwvc3ZnPg==)",
10
- },
11
8
  "& $slider": Object {
12
- "left": 16,
9
+ "left": "calc(100% - 28px)",
10
+ },
11
+ "& $switchBg": Object {
12
+ "background": "#0059CD",
13
13
  },
14
- "background": "#0059CD",
15
14
  },
16
15
  "cont": Object {
17
- "&:focus $switch$checked": Object {
18
- "background": "#0059CD",
19
- "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
16
+ "&:active $switch $switchBg": Object {
17
+ "boxShadow": "inset 0 0 0 2px rgba(255,255,255,0.2)",
20
18
  },
21
- "&:focus $switch:not($checked)": Object {
22
- "background": "#E9EEF8",
19
+ "&:focus-visible $switch": Object {
23
20
  "boxShadow": "0 0 0 8px hsl(221 91.2% 35.7% / 0.3)",
24
21
  },
25
- "&:hover $switch$checked, &:active $switch$checked": Object {
26
- "background": "#083CAE",
22
+ "&:focus-visible $switch$checked": Object {
23
+ "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
27
24
  },
28
- "&:hover $switch:not($checked), &:active $switch:not($checked)": Object {
25
+ "&:hover $switch $switchBg, &:active $switch $switchBg": Object {
29
26
  "background": "#CAD5EE",
30
27
  },
31
- "alignItems": "start",
28
+ "&:hover $switch$checked $switchBg, &:active $switch$checked $switchBg": Object {
29
+ "background": "#083CAE",
30
+ },
31
+ "alignItems": "flex-start",
32
32
  "boxSizing": "border-box",
33
33
  "cursor": "pointer",
34
34
  "display": "flex",
35
35
  "outline": 0,
36
- "paddingBottom": "8px",
37
- "paddingTop": "8px",
38
36
  },
39
37
  "disabled": Object {
40
- "& $icon": Object {
41
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogICAgICAgIAkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgIDxwYXRoIGZpbGw9IiNEM0Q0REMiIGQ9Ik0xMi4xLDEwLjhsNC42LTQuNkwxOCw3LjRMMTMuNCwxMmw0LjYsNC42TDE2LjcsMThsLTQuNi00LjZMNy40LDE4bC0xLjMtMS4zbDQuNi00LjZMNi4yLDcuNGwxLjMtMS4zTDEyLjEsMTAuOHoiLz4KICAgICAgICA8L3N2Zz4=)",
42
- },
43
- "& $switch": Object {
38
+ "& $switch $switchBg": Object {
44
39
  "background": "#EDEDF1",
40
+ "boxShadow": "inset 0 0 0 1px #D3D4DC",
45
41
  },
46
42
  "pointerEvents": "none",
47
43
  },
48
44
  "icon": Object {
49
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogICAgICAgIAkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgIDxwYXRoIGZpbGw9IiM4REE1REEiIGQ9Ik0xMi4xLDEwLjhsNC42LTQuNkwxOCw3LjRMMTMuNCwxMmw0LjYsNC42TDE2LjcsMThsLTQuNi00LjZMNy40LDE4bC0xLjMtMS4zbDQuNi00LjZMNi4yLDcuNGwxLjMtMS4zTDEyLjEsMTAuOHoiLz4KICAgICAgICA8L3N2Zz4=)",
50
- "display": "block",
51
- "height": "100%",
52
- "transition": "0.3s all",
53
- "width": "100%",
45
+ "margin": 4,
54
46
  },
55
47
  "label": Object {
56
- "marginLeft": "8px",
48
+ "cursor": "pointer",
49
+ "marginLeft": "12px",
50
+ },
51
+ "labelWrap": Object {
52
+ "alignItems": "center",
53
+ "display": "flex",
54
+ "minHeight": 48,
55
+ "overflow": "hidden",
56
+ "paddingBottom": "4px",
57
+ "paddingTop": "4px",
57
58
  },
58
59
  "slider": Object {
59
60
  "background": "#fff",
60
61
  "borderRadius": "50%",
61
- "cursor": "pointer",
62
- "height": 20,
63
- "left": 2,
62
+ "height": 24,
63
+ "left": 4,
64
64
  "position": "absolute",
65
- "top": 2,
66
- "transition": "0.3s all",
67
- "width": 20,
65
+ "top": "50%",
66
+ "transform": "translateY(-50%)",
67
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
68
+ "width": 24,
68
69
  },
69
70
  "switch": Object {
70
- "background": "#E9EEF8",
71
- "borderRadius": 34,
71
+ "borderRadius": "9999px",
72
72
  "display": "inline-block",
73
- "height": "24px",
73
+ "flexShrink": 0,
74
+ "height": 32,
74
75
  "position": "relative",
75
- "transition": "0.3s all",
76
- "width": 38,
76
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
77
+ "width": 52,
78
+ },
79
+ "switchBg": Object {
80
+ "background": "#E9EEF8",
81
+ "borderRadius": "9999px",
82
+ "boxShadow": "inset 0 0 0 1px rgba(255,255,255,0.2)",
83
+ "height": 32,
84
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
85
+ "width": 52,
86
+ },
87
+ "switchWrap": Object {
88
+ "alignItems": "center",
89
+ "display": "flex",
90
+ "flexShrink": 0,
91
+ "height": 48,
92
+ "width": 52,
77
93
  },
78
94
  }
79
95
  `;
@@ -5,89 +5,109 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _icons = _interopRequireDefault(require("../subatomic/icons"));
9
-
10
8
  var _spacing = _interopRequireDefault(require("../tokens/spacing.json"));
11
9
 
12
10
  var _colors = _interopRequireDefault(require("../tokens/colors.json"));
13
11
 
14
12
  var _shadows = _interopRequireDefault(require("../tokens/shadows.json"));
15
13
 
14
+ var _borderRadius = _interopRequireDefault(require("../tokens/borderRadius.json"));
15
+
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
17
 
18
- var toggle = _colors["default"]["switch"],
19
- icon = _colors["default"].icon;
18
+ var toggle = _colors["default"]["switch"];
19
+ var transition = 'all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s';
20
+ var contentHeight = 48;
21
+ var toggleWidth = 52;
22
+ var toggleHeight = 32;
23
+ var sliderSize = 24;
20
24
  var _default = {
21
25
  cont: {
22
- paddingTop: _spacing["default"]['size-2'],
23
- paddingBottom: _spacing["default"]['size-2'],
24
26
  boxSizing: 'border-box',
25
27
  display: 'flex',
26
- alignItems: 'start',
28
+ alignItems: 'flex-start',
27
29
  cursor: 'pointer',
28
30
  outline: 0,
29
- '&:hover $switch$checked, &:active $switch$checked': {
30
- background: toggle['selected']['bg']['hover']
31
+ '&:hover $switch $switchBg, &:active $switch $switchBg': {
32
+ background: toggle.unselected.bg.hover
31
33
  },
32
- '&:focus $switch$checked': {
33
- boxShadow: _shadows["default"]['focus-bright-blue'],
34
- background: toggle['selected']['bg']['default']
34
+ '&:focus-visible $switch': {
35
+ boxShadow: _shadows["default"]['focus-indigo']
35
36
  },
36
- '&:hover $switch:not($checked), &:active $switch:not($checked)': {
37
- background: toggle['unselected']['bg']['hover']
37
+ '&:hover $switch$checked $switchBg, &:active $switch$checked $switchBg': {
38
+ background: toggle.selected.bg.hover
38
39
  },
39
- '&:focus $switch:not($checked)': {
40
- background: toggle['unselected']['bg']['default'],
41
- boxShadow: _shadows["default"]['focus-indigo']
40
+ '&:active $switch $switchBg': {
41
+ boxShadow: "inset 0 0 0 2px ".concat(_colors["default"]["switch"].border["default"])
42
+ },
43
+ '&:focus-visible $switch$checked': {
44
+ boxShadow: _shadows["default"]['focus-bright-blue']
42
45
  }
43
46
  },
47
+ switchWrap: {
48
+ width: toggleWidth,
49
+ height: contentHeight,
50
+ display: 'flex',
51
+ alignItems: 'center',
52
+ flexShrink: 0
53
+ },
44
54
  "switch": {
45
55
  position: 'relative',
46
56
  display: 'inline-block',
47
- width: 38,
48
- height: _spacing["default"]['size-5'],
49
- background: toggle['unselected']['bg']['default'],
50
- borderRadius: 34,
51
- transition: '0.3s all'
57
+ width: toggleWidth,
58
+ height: toggleHeight,
59
+ flexShrink: 0,
60
+ borderRadius: _borderRadius["default"]['br-full'],
61
+ transition: transition
62
+ },
63
+ switchBg: {
64
+ width: toggleWidth,
65
+ height: toggleHeight,
66
+ background: toggle.unselected.bg["default"],
67
+ boxShadow: "inset 0 0 0 1px ".concat(_colors["default"]["switch"].border["default"]),
68
+ borderRadius: _borderRadius["default"]['br-full'],
69
+ transition: transition
52
70
  },
53
71
  checked: {
54
- background: toggle['selected']['bg']['default'],
55
- '& $slider': {
56
- left: 16
72
+ '& $switchBg': {
73
+ background: toggle.selected.bg["default"]
57
74
  },
58
- '& $icon': {
59
- background: _icons["default"].base(_icons["default"].check.icon([icon.brand.bold]))
75
+ '& $slider': {
76
+ left: "calc(100% - 28px)"
60
77
  }
61
78
  },
62
79
  slider: {
63
80
  position: 'absolute',
64
- cursor: 'pointer',
65
- top: 2,
66
- left: 2,
67
- width: 20,
68
- height: 20,
81
+ top: '50%',
82
+ transform: 'translateY(-50%)',
83
+ left: 4,
84
+ width: sliderSize,
85
+ height: sliderSize,
69
86
  borderRadius: '50%',
70
- background: toggle['bg']['default'],
71
- transition: '0.3s all'
87
+ background: toggle.bg["default"],
88
+ transition: transition
72
89
  },
73
90
  icon: {
74
- width: '100%',
75
- height: '100%',
76
- display: 'block',
77
- background: _icons["default"].base(_icons["default"].cross.icon([icon.brand.disabled])),
78
- transition: '0.3s all'
91
+ margin: 4
79
92
  },
80
93
  disabled: {
81
- '& $switch': {
82
- background: toggle['bg']['disabled']
83
- },
84
- '& $icon': {
85
- background: _icons["default"].base(_icons["default"].cross.icon([icon["default"].disabled]))
94
+ '& $switch $switchBg': {
95
+ boxShadow: "inset 0 0 0 1px ".concat(_colors["default"]["switch"].border.disabled),
96
+ background: toggle.bg.disabled
86
97
  },
87
98
  pointerEvents: 'none'
88
99
  },
100
+ labelWrap: {
101
+ minHeight: contentHeight,
102
+ display: 'flex',
103
+ alignItems: 'center',
104
+ paddingTop: _spacing["default"]['size-1'],
105
+ paddingBottom: _spacing["default"]['size-1'],
106
+ overflow: 'hidden'
107
+ },
89
108
  label: {
90
- marginLeft: _spacing["default"]['size-2']
109
+ marginLeft: _spacing["default"]['size-3'],
110
+ cursor: 'pointer'
91
111
  }
92
112
  };
93
113
  exports["default"] = _default;
@@ -194,8 +194,10 @@ var Text = /*#__PURE__*/function (_Component) {
194
194
  var _this$props2 = this.props,
195
195
  classes = _this$props2.classes,
196
196
  mid = _this$props2.mid,
197
- low = _this$props2.low;
198
- if (low) return classes.corpDisabled;else if (mid) return classes.corpSecondary;else return classes.corpPrimary;
197
+ low = _this$props2.low,
198
+ corpDisabled = _this$props2.corpDisabled,
199
+ corpSecondary = _this$props2.corpSecondary;
200
+ if (low || corpDisabled) return classes.corpDisabled;else if (mid | corpSecondary) return classes.corpSecondary;else return classes.corpPrimary;
199
201
  }
200
202
  }, {
201
203
  key: "getColor",
@@ -338,7 +338,9 @@ var TextField = /*#__PURE__*/function (_React$Component) {
338
338
  className: classes.rightButton
339
339
  });
340
340
  } else if (type == 'select') {
341
- element = /*#__PURE__*/_react["default"].createElement(InputType, commonProps, /*#__PURE__*/_react["default"].createElement("option", {
341
+ element = /*#__PURE__*/_react["default"].createElement(InputType, _extends({}, commonProps, {
342
+ className: "".concat(commonProps.className, " ").concat(classes.pointer)
343
+ }), /*#__PURE__*/_react["default"].createElement("option", {
342
344
  value: "",
343
345
  disabled: true,
344
346
  hidden: true
@@ -410,14 +412,13 @@ var TextField = /*#__PURE__*/function (_React$Component) {
410
412
  height: 24,
411
413
  className: classes.icon,
412
414
  colors: [this.setIconColor()]
413
- }), type == 'select' && /*#__PURE__*/_react["default"].createElement("div", {
414
- className: classes.selectIcon
415
- }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
415
+ }), type == 'select' && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
416
416
  iconName: "chevron-down",
417
417
  width: 24,
418
418
  height: 24,
419
- colors: disabled ? [_colors["default"].icon["default"].disabled] : [_colors["default"].icon["default"]["default"]]
420
- })), element, type == 'password' && passIcon, value && clear && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
419
+ colors: disabled ? [_colors["default"].icon["default"].disabled] : [_colors["default"].icon["default"]["default"]],
420
+ className: classes.selectIcon
421
+ }), element, type == 'password' && passIcon, value && clear && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
421
422
  icon: "x",
422
423
  theme: "ghostGrey",
423
424
  size: "md",
@@ -115,6 +115,9 @@ Object {
115
115
  "color": "#080D39",
116
116
  "font": "400 14px/1.5 'OccText', sans-serif",
117
117
  },
118
+ "pointer": Object {
119
+ "cursor": "pointer",
120
+ },
118
121
  "rightButton": Object {
119
122
  "position": "absolute",
120
123
  "right": "4px",
@@ -191,6 +191,9 @@ var _default = {
191
191
  display: 'flex',
192
192
  justifyContent: 'space-between',
193
193
  marginTop: _spacing["default"]['size-2']
194
+ },
195
+ pointer: {
196
+ cursor: 'pointer'
194
197
  }
195
198
  };
196
199
  exports["default"] = _default;
package/build/Tip/Tip.js CHANGED
@@ -1,39 +1,28 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports["default"] = void 0;
9
7
 
10
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
11
9
 
12
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
11
 
14
- var _isString = _interopRequireDefault(require("lodash/isString"));
15
-
16
- var _flatten = _interopRequireDefault(require("lodash/flatten"));
17
-
18
12
  var _Flexbox = _interopRequireDefault(require("../Flexbox"));
19
13
 
20
- var _Text = _interopRequireDefault(require("../Text"));
21
-
22
14
  var _Icon = _interopRequireDefault(require("../Icon"));
23
15
 
24
- var _colors = _interopRequireDefault(require("../subatomic/colors"));
16
+ var _Button = _interopRequireDefault(require("../Button"));
25
17
 
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+ var _TipText = _interopRequireDefault(require("./TipText"));
27
19
 
28
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
+ var _colors = _interopRequireDefault(require("../tokens/colors.json"));
29
21
 
30
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
23
 
32
24
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
33
25
 
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
- var boldRegex = /\*(.*?)\*/g;
37
26
  var icons = {
38
27
  info: 'info-circle',
39
28
  warning: 'alert',
@@ -42,6 +31,13 @@ var icons = {
42
31
  promote: null
43
32
  };
44
33
  var PROMOTE = 'promote';
34
+ var colorTextClasses = {
35
+ info: 'textInfo',
36
+ promote: 'textPromote',
37
+ warning: 'textWarning',
38
+ success: 'textSuccess',
39
+ error: 'textError'
40
+ };
45
41
  /** Tip component with different themes (info, warning, success & error). You can pass a string or a react element as the children prop, but the bold regex will only work with strings. */
46
42
 
47
43
  var Tip = function Tip(_ref) {
@@ -51,65 +47,13 @@ var Tip = function Tip(_ref) {
51
47
  classes = _ref.classes,
52
48
  icon = _ref.icon,
53
49
  theme = _ref.theme,
54
- noBorderRadius = _ref.noBorderRadius,
55
- center = _ref.center,
50
+ banner = _ref.banner,
56
51
  onClose = _ref.onClose,
57
- spacedClose = _ref.spacedClose,
58
52
  children = _ref.children,
59
- cta = _ref.cta;
60
-
61
- var replaceStringToBold = function replaceStringToBold() {
62
- if (children === '') return children;
63
- var result = children.split(boldRegex);
64
- if (result.length === 1) return children;
65
-
66
- for (var i = 1, length = result.length; i < length; i += 2) {
67
- result[i] = boldMatch(result[i], i, theme);
68
- }
69
-
70
- return result;
71
- };
72
-
73
- var getTheme = function getTheme() {
74
- if (theme === PROMOTE) return {
75
- white: true
76
- };
77
- return _defineProperty({}, theme, true);
78
- };
79
-
80
- var boldMatch = function boldMatch(match, i) {
81
- return /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
82
- key: i,
83
- strong: true,
84
- tag: "b"
85
- }, getTheme()), match);
86
- };
87
-
88
- var getIconName = function getIconName() {
89
- return icons[theme];
90
- };
91
-
92
- var renderText = function renderText() {
93
- var textArray;
94
- if (!Array.isArray(children)) textArray = [children];
95
- var text = (0, _flatten["default"])(textArray.map(function (x) {
96
- return (0, _isString["default"])(x) ? replaceStringToBold(x, theme) : x;
97
- }));
98
-
99
- if (cta) {
100
- text.push( /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, ' ', /*#__PURE__*/_react["default"].createElement("a", {
101
- className: classes.cta,
102
- href: cta.href,
103
- target: cta.target,
104
- onClick: cta.onClick
105
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
106
- tag: "span"
107
- }, getTheme()), cta.text))));
108
- }
109
-
110
- return text;
111
- };
112
-
53
+ cta = _ref.cta,
54
+ _ref$size = _ref.size,
55
+ size = _ref$size === void 0 ? 'large' : _ref$size,
56
+ testId = _ref.testId;
113
57
  return /*#__PURE__*/_react["default"].createElement("div", {
114
58
  id: id,
115
59
  className: className,
@@ -117,27 +61,38 @@ var Tip = function Tip(_ref) {
117
61
  }, /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
118
62
  justifyContent: "start",
119
63
  display: "flex",
120
- className: "".concat(classes.container, " ").concat(classes[theme]).concat(noBorderRadius ? " ".concat(classes.noBorderRadius) : '')
64
+ className: "".concat(classes.container, " ").concat(classes[theme]).concat(banner ? " ".concat(classes.noBorderRadius) : '')
121
65
  }, /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
122
66
  display: "flex",
123
67
  flex: "1",
124
- justifyContent: center ? 'center' : null,
125
- alignItems: "center"
126
- }, icon && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
127
- iconName: getIconName(),
68
+ alignItems: "stretch"
69
+ }, icon && theme !== PROMOTE && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
70
+ iconName: icons[theme],
128
71
  className: classes.icon,
129
- colors: [_colors["default"]["".concat(theme, "Text")]]
130
- }), /*#__PURE__*/_react["default"].createElement("div", {
131
- className: icon ? classes.textWithIcon : classes.text
132
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
133
- standard: true,
134
- tag: "div"
135
- }, getTheme()), renderText()))), onClose && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
136
- iconName: "cross",
72
+ colors: [theme === 'info' ? _colors["default"].icon.brand["default"] : _colors["default"].icon[theme]]
73
+ }), /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
74
+ display: "flex",
75
+ direction: size === 'small' ? 'col' : 'row',
76
+ justifyContent: banner ? 'center' : 'start',
77
+ className: "".concat(classes.textContainer).concat(banner ? " ".concat(classes.maxWidth) : '')
78
+ }, /*#__PURE__*/_react["default"].createElement(_TipText["default"], {
79
+ classes: "".concat(classes.normalText, " ").concat(classes[colorTextClasses[theme]]).concat(!banner ? " ".concat(classes.growText) : ''),
80
+ text: children
81
+ }), cta && /*#__PURE__*/_react["default"].createElement("a", _extends({
82
+ className: "".concat(classes.cta, " ").concat(classes[colorTextClasses[theme]]).concat(size === 'large' && banner ? " ".concat(classes.ctaBanner) : size === 'large' ? " ".concat(classes.ctaAlert) : ''),
83
+ href: cta.href,
84
+ target: cta.target,
85
+ onClick: cta.onClick
86
+ }, testId && {
87
+ 'data-testid': "".concat(testId, "__link")
88
+ }), cta.text))), onClose && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
137
89
  onClick: onClose,
138
- colors: [theme === PROMOTE ? _colors["default"].bgWhite : _colors["default"]["".concat(theme, "Text")]],
139
- className: spacedClose ? classes.spacedClose : null
140
- })));
90
+ className: size === 'small' ? classes.closeIconSmallMargin : classes.closeIconMargin,
91
+ icon: "x",
92
+ theme: theme === PROMOTE ? 'ghostWhite' : 'ghostGrey'
93
+ }, testId && {
94
+ testId: "".concat(testId, "__close-icon")
95
+ }))));
141
96
  };
142
97
 
143
98
  Tip.defaultProps = {
@@ -151,6 +106,7 @@ Tip.propTypes = {
151
106
 
152
107
  /** Text of the tip. If you put text between two * characters that text will be displayed as bold. */
153
108
  children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]).isRequired,
109
+ size: _propTypes["default"].oneOf(['large', 'small']),
154
110
 
155
111
  /** Call to action. Appended after the children's text. */
156
112
  cta: _propTypes["default"].shape({
@@ -163,11 +119,8 @@ Tip.propTypes = {
163
119
  /** Boolean to show an icon. */
164
120
  icon: _propTypes["default"].bool,
165
121
 
166
- /** Cancel the default border radius. */
167
- noBorderRadius: _propTypes["default"].bool,
168
-
169
- /** Center Tip content. */
170
- center: _propTypes["default"].bool,
122
+ /** Sets content centered and remove border radius. */
123
+ banner: _propTypes["default"].bool,
171
124
 
172
125
  /** Function to call on click of the x icon. */
173
126
  onClose: _propTypes["default"].func,
@@ -176,7 +129,10 @@ Tip.propTypes = {
176
129
  spacedClose: _propTypes["default"].bool,
177
130
  id: _propTypes["default"].string,
178
131
  className: _propTypes["default"].string,
179
- style: _propTypes["default"].object
132
+ style: _propTypes["default"].object,
133
+
134
+ /** The testId property adds the data attribute data-testid to the main element and should be used for testing only. */
135
+ testId: _propTypes["default"].string
180
136
  };
181
137
  var _default = Tip;
182
138
  exports["default"] = _default;
@@ -43,19 +43,42 @@ describe("Tip", function () {
43
43
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
44
44
  classes: classes,
45
45
  icon: true
46
- }));
46
+ }, "Alert text"));
47
47
  expect(wrapper.find('.icon').length).toBe(1);
48
48
  });
49
- it('has bold text', function () {
49
+ it('has a close icon button', function () {
50
50
  var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
51
- classes: classes
52
- }, "Text with *bold* text"));
53
- expect(wrapper.find('b').length).toBe(1);
51
+ classes: classes,
52
+ icon: true,
53
+ onClose: function onClose() {
54
+ return console.log('Close');
55
+ },
56
+ testId: "alert-test"
57
+ }, "Tip text "));
58
+ expect(wrapper.find({
59
+ "data-testid": 'alert-test__close-icon'
60
+ }).length).toBe(1);
61
+ });
62
+ it('has a link', function () {
63
+ var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
64
+ classes: classes,
65
+ icon: true,
66
+ cta: {
67
+ text: 'Click here.',
68
+ onClick: function onClick() {
69
+ return alert('CTA clicked!');
70
+ }
71
+ },
72
+ testId: "alert-test"
73
+ }, "Tip text "));
74
+ expect(wrapper.find({
75
+ "data-testid": 'alert-test__link'
76
+ }).length).toBe(1);
54
77
  });
55
78
  });
56
79
  describe("TipJSS", function () {
57
80
  it('matches the snapshot', function () {
58
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index["default"], null));
81
+ var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index["default"], null, "Tip text "));
59
82
  expect(wrapper).toMatchSnapshot();
60
83
  });
61
84
  });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+
14
+ var boldRegex = /\*(.*?)\*/g;
15
+
16
+ var TipText = function TipText(_ref) {
17
+ var classes = _ref.classes,
18
+ text = _ref.text;
19
+ if (text === '' || typeof text !== 'string') return text;
20
+ return /*#__PURE__*/_react["default"].createElement("p", {
21
+ className: classes
22
+ }, text.replace(boldRegex, function (_, txt) {
23
+ return txt;
24
+ }));
25
+ };
26
+
27
+ TipText.propTypes = {
28
+ classes: _propTypes["default"].string.isRequired,
29
+ text: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]).isRequired
30
+ };
31
+ var _default = TipText;
32
+ exports["default"] = _default;