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

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 (44) hide show
  1. package/CHANGELOG.md +185 -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 +52 -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 +85 -15
  35. package/build/Tip/styles.js +80 -31
  36. package/build/Toaster/Toast/Toast.js +69 -64
  37. package/build/Toaster/Toast/styles.js +72 -46
  38. package/build/Toaster/Toaster.js +3 -2
  39. package/build/Toaster/Toaster.test.js +5 -2
  40. package/build/Toaster/__snapshots__/Toaster.test.js.snap +1 -1
  41. package/build/Toaster/styles.js +3 -3
  42. package/build/tokens/colors.json +3 -3
  43. package/package.json +4 -1
  44. package/build/Banner/styles.js +0 -41
@@ -13,6 +13,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _Text = _interopRequireDefault(require("../Text"));
15
15
 
16
+ var _Tag = _interopRequireDefault(require("../Tag"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
19
 
18
20
  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); }
@@ -52,6 +54,7 @@ var Radio = /*#__PURE__*/function (_React$Component) {
52
54
  selected: props.selected
53
55
  };
54
56
  _this.onChange = _this.onChange.bind(_assertThisInitialized(_this));
57
+ _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this));
55
58
  return _this;
56
59
  }
57
60
 
@@ -75,6 +78,20 @@ var Radio = /*#__PURE__*/function (_React$Component) {
75
78
  if (onChange) onChange(option.value);
76
79
  }
77
80
  }
81
+ }, {
82
+ key: "handleKeyDown",
83
+ value: function handleKeyDown(e) {
84
+ if (e.keyCode == 13 || e.keyCode == 32) {
85
+ e.preventDefault();
86
+ }
87
+ }
88
+ }, {
89
+ key: "handleKeyUp",
90
+ value: function handleKeyUp(e, option) {
91
+ if (e.keyCode == 13 || e.keyCode == 32) {
92
+ this.onChange(option);
93
+ }
94
+ }
78
95
  }, {
79
96
  key: "render",
80
97
  value: function render() {
@@ -87,6 +104,7 @@ var Radio = /*#__PURE__*/function (_React$Component) {
87
104
  id = _this$props.id,
88
105
  textOverflow = _this$props.textOverflow,
89
106
  className = _this$props.className,
107
+ alignLeft = _this$props.alignLeft,
90
108
  style = _this$props.style;
91
109
  return /*#__PURE__*/_react["default"].createElement("div", {
92
110
  id: id
@@ -94,7 +112,11 @@ var Radio = /*#__PURE__*/function (_React$Component) {
94
112
  return /*#__PURE__*/_react["default"].createElement("div", _extends({
95
113
  id: option.trk,
96
114
  key: option.value,
97
- tabIndex: -1,
115
+ tabIndex: option.disabled ? -1 : 0,
116
+ onKeyDown: _this2.handleKeyDown,
117
+ onKeyUp: function onKeyUp(e) {
118
+ return _this2.handleKeyUp(e, option);
119
+ },
98
120
  "data-testid": option.testId
99
121
  }, option.testId && {
100
122
  'data-value': selected == option.value ? 1 : 0
@@ -105,16 +127,26 @@ var Radio = /*#__PURE__*/function (_React$Component) {
105
127
  },
106
128
  style: style
107
129
  }), /*#__PURE__*/_react["default"].createElement("div", {
108
- className: classes.radio,
109
- id: option.trk
110
- }), option.label && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
130
+ className: classes.radioWrap
131
+ }, /*#__PURE__*/_react["default"].createElement("div", {
132
+ className: classes.radio
133
+ }, /*#__PURE__*/_react["default"].createElement("div", {
134
+ className: classes.radioOuter
135
+ }), /*#__PURE__*/_react["default"].createElement("div", {
136
+ className: classes.radioInner
137
+ }))), !!(option.label || option.right || option.tag) && /*#__PURE__*/_react["default"].createElement("div", {
138
+ className: classes.labelWrap
139
+ }, option.label && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
111
140
  tag: "label",
112
- className: "".concat(classes.label).concat(textOverflow ? " ".concat(classes.overflow) : '')
141
+ className: "".concat(classes.label).concat(textOverflow ? " ".concat(classes.overflow) : '').concat(alignLeft ? " ".concat(classes.alignLeft) : '')
113
142
  }, option.label), option.right && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
114
143
  tag: "label",
115
144
  corpSecondary: true,
116
145
  className: classes.right
117
- }, option.right));
146
+ }, option.right), option.tag && /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
147
+ theme: "link",
148
+ className: classes.tag
149
+ }, option.tag)));
118
150
  }));
119
151
  }
120
152
  }]);
@@ -139,6 +171,7 @@ Radio.propTypes = {
139
171
  value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
140
172
  label: _propTypes["default"].string,
141
173
  right: _propTypes["default"].string,
174
+ tag: _propTypes["default"].string,
142
175
  trk: _propTypes["default"].string,
143
176
 
144
177
  /** The testId property adds the data attribute data-testid to
@@ -146,6 +179,9 @@ Radio.propTypes = {
146
179
  testId: _propTypes["default"].string
147
180
  })),
148
181
 
182
+ /** Align the content to the left */
183
+ alignLeft: _propTypes["default"].bool,
184
+
149
185
  /** Use this prop to overflow the text of the label, adding '...' and the end. */
150
186
  textOverflow: _propTypes["default"].bool,
151
187
 
@@ -6,91 +6,82 @@ exports[`Radio styles matches the snapshot 1`] = `
6
6
  Object {
7
7
  "active": Object {
8
8
  "& $radio": Object {
9
- "&:after": Object {
9
+ "& $radioInner": Object {
10
10
  "background": "#0059CD",
11
11
  },
12
- "&:before": Object {
13
- "borderColor": "#0059CD",
14
- "borderWidth": 2,
12
+ "& $radioOuter": Object {
13
+ "boxShadow": "inset 0 0 0 2px #0059CD",
15
14
  },
16
15
  },
17
16
  },
17
+ "alignLeft": Object {
18
+ "flex": "none",
19
+ },
18
20
  "cont": Object {
19
21
  "&$active": Object {
20
22
  "&:active": Object {
21
- "& $radio:after": Object {
23
+ "& $radio $radioInner": Object {
22
24
  "background": "#083CAE",
23
25
  },
24
- "& $radio:before": Object {
25
- "borderColor": "#0047A5",
26
- "borderWidth": "3px",
27
- "boxShadow": "initial",
26
+ "& $radio $radioOuter": Object {
27
+ "boxShadow": "inset 0 0 0 3px #0047A5 !important",
28
28
  },
29
29
  },
30
- "&:focus $radio:before": Object {
31
- "borderColor": "#0059CD",
32
- "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
33
- },
34
30
  "&:hover": Object {
35
- "& $radio:after": Object {
31
+ "& $radio $radioInner": Object {
36
32
  "background": "#083CAE",
37
33
  },
38
- "& $radio:before": Object {
39
- "borderColor": "#0047A5",
40
- "boxShadow": "initial",
34
+ "& $radio $radioOuter": Object {
35
+ "boxShadow": "inset 0 0 0 2px #0047A5",
41
36
  },
42
37
  },
43
38
  },
44
- "&:not($active)": Object {
45
- "&:active $radio:before": Object {
46
- "borderColor": "#6C6F89",
47
- "borderWidth": "2px",
48
- "boxShadow": "initial",
49
- },
50
- "&:focus $radio:before": Object {
51
- "borderColor": "#D3D4DC",
52
- "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
53
- },
54
- "&:hover $radio:before": Object {
55
- "borderColor": "#6C6F89",
56
- "boxShadow": "initial",
57
- },
39
+ "&:active $radio $radioOuter": Object {
40
+ "boxShadow": "inset 0 0 0 2px #6C6F89",
41
+ },
42
+ "&:focus-visible $radio": Object {
43
+ "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
44
+ },
45
+ "&:hover $radio $radioOuter": Object {
46
+ "boxShadow": "inset 0 0 0 1px #6C6F89",
58
47
  },
59
- "alignItems": "start",
48
+ "alignItems": "flex-start",
60
49
  "boxSizing": "border-box",
61
50
  "cursor": "pointer",
62
51
  "display": "flex",
63
52
  "outline": "0",
64
- "paddingBottom": "8px",
65
- "paddingTop": "8px",
66
53
  },
67
54
  "disabled": Object {
68
- "& :not($radio)": Object {
69
- "opacity": 0.4,
55
+ "& $radio $radioInner": Object {
56
+ "background": "#EDEDF1",
57
+ },
58
+ "& $radio $radioOuter": Object {
59
+ "background": "#EDEDF1",
70
60
  },
71
61
  "&$active": Object {
72
- "& $radio:after": Object {
62
+ "& $radio $radioInner": Object {
73
63
  "background": "#8DA5DA",
74
64
  },
75
- "& $radio:before": Object {
76
- "borderColor": "#8DA5DA",
77
- },
78
- },
79
- "&:not($active)": Object {
80
- "& $radio:after": Object {
81
- "background": "#EDEDF1",
82
- },
83
- "& $radio:before": Object {
84
- "background": "#EDEDF1",
65
+ "& $radio $radioOuter": Object {
66
+ "boxShadow": "inset 0 0 0 2px #8DA5DA",
85
67
  },
86
68
  },
87
69
  "pointerEvents": "none",
88
70
  },
89
71
  "label": Object {
90
72
  "cursor": "pointer",
91
- "flex": "1",
92
- "float": "left",
93
- "marginLeft": "8px",
73
+ "flex": 1,
74
+ "marginLeft": "12px",
75
+ "pointerEvents": "none",
76
+ },
77
+ "labelWrap": Object {
78
+ "alignItems": "center",
79
+ "display": "flex",
80
+ "flex": 1,
81
+ "minHeight": 48,
82
+ "overflow": "hidden",
83
+ "paddingBottom": "4px",
84
+ "paddingTop": "4px",
94
85
  },
95
86
  "overflow": Object {
96
87
  "overflow": "hidden",
@@ -98,39 +89,49 @@ Object {
98
89
  "whiteSpace": "nowrap",
99
90
  },
100
91
  "radio": Object {
101
- "&:after": Object {
102
- "background": "#fff",
103
- "borderRadius": "50%",
104
- "boxSizing": "border-box",
105
- "content": "\\"\\"",
106
- "height": 10,
107
- "left": "50%",
108
- "position": "absolute",
109
- "top": "50%",
110
- "transform": "translate(-50%, -50%)",
111
- "transition": "0.3s all",
112
- "width": 10,
113
- },
114
- "&:before": Object {
115
- "background": "#fff",
116
- "border": "1px solid #D3D4DC",
117
- "borderRadius": "50%",
118
- "boxSizing": "border-box",
119
- "content": "\\"\\"",
120
- "height": 20,
121
- "left": "50%",
122
- "position": "absolute",
123
- "top": "50%",
124
- "transform": "translate(-50%, -50%)",
125
- "width": 20,
126
- },
127
- "height": "24px",
128
- "position": "relative",
129
- "width": "24px",
92
+ "alignItems": "center",
93
+ "borderRadius": "9999px",
94
+ "display": "grid",
95
+ "height": 20,
96
+ "justifyContent": "center",
97
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
98
+ "width": 20,
99
+ },
100
+ "radioInner": Object {
101
+ "background": "#fff",
102
+ "borderRadius": "9999px",
103
+ "gridColumnStart": 1,
104
+ "gridRowStart": 1,
105
+ "height": 10,
106
+ "margin": 5,
107
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
108
+ "width": 10,
109
+ },
110
+ "radioOuter": Object {
111
+ "background": "#fff",
112
+ "borderRadius": "9999px",
113
+ "boxShadow": "inset 0 0 0 1px #D3D4DC",
114
+ "gridColumnStart": 1,
115
+ "gridRowStart": 1,
116
+ "height": 20,
117
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
118
+ "width": 20,
119
+ },
120
+ "radioWrap": Object {
121
+ "alignItems": "center",
122
+ "display": "flex",
123
+ "flexShrink": 0,
124
+ "height": 48,
125
+ "justifyContent": "center",
126
+ "width": 52,
130
127
  },
131
128
  "right": Object {
132
- "float": "right",
133
129
  "marginLeft": "8px",
130
+ "pointerEvents": "none",
131
+ },
132
+ "tag": Object {
133
+ "marginLeft": "8px",
134
+ "pointerEvents": "none",
134
135
  },
135
136
  }
136
137
  `;
@@ -11,137 +11,145 @@ var _colors = _interopRequireDefault(require("../tokens/colors.json"));
11
11
 
12
12
  var _shadows = _interopRequireDefault(require("../tokens/shadows.json"));
13
13
 
14
+ var _borderRadius = _interopRequireDefault(require("../tokens/borderRadius.json"));
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
17
 
16
18
  var radio = _colors["default"].radio;
19
+ var transition = 'all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s';
20
+ var contentHeight = 48;
21
+ var radioWidth = 52;
22
+ var radioSize = 20;
23
+ var radioInnerSize = 10;
17
24
  var _default = {
18
25
  cont: {
19
- paddingTop: _spacing["default"]['size-2'],
20
- paddingBottom: _spacing["default"]['size-2'],
21
26
  boxSizing: 'border-box',
22
27
  display: 'flex',
23
- alignItems: 'start',
28
+ alignItems: 'flex-start',
24
29
  cursor: 'pointer',
25
30
  outline: '0',
31
+ '&:focus-visible $radio': {
32
+ boxShadow: _shadows["default"]['focus-bright-blue']
33
+ },
34
+ '&:hover $radio $radioOuter': {
35
+ boxShadow: "inset 0 0 0 1px ".concat(radio.unselected.border.hover)
36
+ },
37
+ '&:active $radio $radioOuter': {
38
+ boxShadow: "inset 0 0 0 2px ".concat(radio.unselected.border.hover)
39
+ },
26
40
  '&$active': {
27
- '&:focus $radio:before': {
28
- borderColor: radio['selected']['border']['default'],
29
- boxShadow: _shadows["default"]['focus-bright-blue']
30
- },
31
41
  '&:hover': {
32
- '& $radio:before': {
33
- borderColor: radio['selected']['border']['hover'],
34
- boxShadow: 'initial'
42
+ '& $radio $radioOuter': {
43
+ boxShadow: "inset 0 0 0 2px ".concat(radio.selected.border.hover)
35
44
  },
36
- '& $radio:after': {
37
- background: radio['selected']['bg']['hover']
45
+ '& $radio $radioInner': {
46
+ background: radio.selected.bg.hover
38
47
  }
39
48
  },
40
49
  '&:active': {
41
- '& $radio:before': {
42
- borderColor: radio['selected']['border']['hover'],
43
- borderWidth: '3px',
44
- boxShadow: 'initial'
50
+ '& $radio $radioOuter': {
51
+ boxShadow: "inset 0 0 0 3px ".concat(radio.selected.border.hover, " !important")
45
52
  },
46
- '& $radio:after': {
47
- background: radio['selected']['bg']['hover']
53
+ '& $radio $radioInner': {
54
+ background: radio.selected.bg.hover
48
55
  }
49
56
  }
50
- },
51
- '&:not($active)': {
52
- '&:focus $radio:before': {
53
- borderColor: radio['unselected']['border']['default'],
54
- boxShadow: _shadows["default"]['focus-bright-blue']
55
- },
56
- '&:hover $radio:before': {
57
- borderColor: radio['unselected']['border']['hover'],
58
- boxShadow: 'initial'
59
- },
60
- '&:active $radio:before': {
61
- borderColor: radio['unselected']['border']['hover'],
62
- borderWidth: '2px',
63
- boxShadow: 'initial'
64
- }
65
57
  }
66
58
  },
59
+ radioWrap: {
60
+ width: radioWidth,
61
+ height: contentHeight,
62
+ display: 'flex',
63
+ alignItems: 'center',
64
+ justifyContent: 'center',
65
+ flexShrink: 0
66
+ },
67
67
  radio: {
68
- width: _spacing["default"]['size-5'],
69
- height: _spacing["default"]['size-5'],
70
- position: 'relative',
71
- '&:before': {
72
- content: '""',
73
- boxSizing: 'border-box',
74
- width: 20,
75
- height: 20,
76
- borderRadius: '50%',
77
- position: 'absolute',
78
- top: '50%',
79
- left: '50%',
80
- transform: 'translate(-50%, -50%)',
81
- border: "1px solid ".concat(radio['unselected']['border']['default']),
82
- background: radio['bg']['default']
83
- },
84
- '&:after': {
85
- content: '""',
86
- boxSizing: 'border-box',
87
- width: 10,
88
- height: 10,
89
- borderRadius: '50%',
90
- position: 'absolute',
91
- top: '50%',
92
- left: '50%',
93
- transform: 'translate(-50%, -50%)',
94
- transition: '0.3s all',
95
- background: radio['bg']['default']
96
- }
68
+ width: radioSize,
69
+ height: radioSize,
70
+ borderRadius: _borderRadius["default"]['br-full'],
71
+ transition: transition,
72
+ display: 'grid',
73
+ alignItems: 'center',
74
+ justifyContent: 'center'
75
+ },
76
+ radioOuter: {
77
+ width: radioSize,
78
+ height: radioSize,
79
+ borderRadius: _borderRadius["default"]['br-full'],
80
+ boxShadow: "inset 0 0 0 1px ".concat(radio.unselected.border["default"]),
81
+ background: radio.bg["default"],
82
+ transition: transition,
83
+ gridRowStart: 1,
84
+ gridColumnStart: 1
85
+ },
86
+ radioInner: {
87
+ width: radioInnerSize,
88
+ height: radioInnerSize,
89
+ margin: 5,
90
+ borderRadius: _borderRadius["default"]['br-full'],
91
+ background: radio.bg["default"],
92
+ transition: transition,
93
+ gridRowStart: 1,
94
+ gridColumnStart: 1
97
95
  },
98
96
  active: {
99
97
  '& $radio': {
100
- '&:before': {
101
- borderWidth: 2,
102
- borderColor: radio['selected']['border']['default']
98
+ '& $radioOuter': {
99
+ boxShadow: "inset 0 0 0 2px ".concat(radio.selected.border["default"])
103
100
  },
104
- '&:after': {
105
- background: radio['selected']['bg']['default']
101
+ '& $radioInner': {
102
+ background: radio.selected.bg["default"]
106
103
  }
107
104
  }
108
105
  },
109
106
  disabled: {
110
107
  pointerEvents: 'none',
111
- '& :not($radio)': {
112
- opacity: 0.4
108
+ '& $radio $radioOuter': {
109
+ background: radio.bg.disabled
113
110
  },
114
- '&$active': {
115
- '& $radio:before': {
116
- borderColor: radio['selected']['border']['disabled']
117
- },
118
- '& $radio:after': {
119
- background: radio['selected']['bg']['disabled']
120
- }
111
+ '& $radio $radioInner': {
112
+ background: radio.bg.disabled
121
113
  },
122
- '&:not($active)': {
123
- '& $radio:before': {
124
- background: radio['bg']['disabled']
114
+ '&$active': {
115
+ '& $radio $radioOuter': {
116
+ boxShadow: "inset 0 0 0 2px ".concat(radio.selected.border.disabled)
125
117
  },
126
- '& $radio:after': {
127
- background: radio['bg']['disabled']
118
+ '& $radio $radioInner': {
119
+ background: radio.selected.bg.disabled
128
120
  }
129
121
  }
130
122
  },
123
+ labelWrap: {
124
+ minHeight: contentHeight,
125
+ display: 'flex',
126
+ alignItems: 'center',
127
+ paddingTop: _spacing["default"]['size-1'],
128
+ paddingBottom: _spacing["default"]['size-1'],
129
+ overflow: 'hidden',
130
+ flex: 1
131
+ },
131
132
  label: {
132
- marginLeft: _spacing["default"]['size-2'],
133
+ marginLeft: _spacing["default"]['size-3'],
134
+ pointerEvents: 'none',
133
135
  cursor: 'pointer',
134
- "float": 'left',
135
- flex: '1'
136
+ flex: 1
136
137
  },
137
138
  right: {
138
139
  marginLeft: _spacing["default"]['size-2'],
139
- "float": 'right'
140
+ pointerEvents: 'none'
140
141
  },
141
142
  overflow: {
142
143
  overflow: 'hidden',
143
144
  textOverflow: 'ellipsis',
144
145
  whiteSpace: 'nowrap'
146
+ },
147
+ tag: {
148
+ marginLeft: _spacing["default"]['size-2'],
149
+ pointerEvents: 'none'
150
+ },
151
+ alignLeft: {
152
+ flex: 'none'
145
153
  }
146
154
  };
147
155
  exports["default"] = _default;
@@ -13,6 +13,10 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _Text = _interopRequireDefault(require("../Text"));
15
15
 
16
+ var _Icon = _interopRequireDefault(require("../Icon"));
17
+
18
+ var _colors = _interopRequireDefault(require("../tokens/colors.json"));
19
+
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
21
 
18
22
  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); }
@@ -52,6 +56,7 @@ var SlideToggle = /*#__PURE__*/function (_React$Component) {
52
56
  value: props.value
53
57
  };
54
58
  _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));
59
+ _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this));
55
60
  return _this;
56
61
  }
57
62
 
@@ -79,6 +84,20 @@ var SlideToggle = /*#__PURE__*/function (_React$Component) {
79
84
  if (onChange) onChange(value, id);
80
85
  }
81
86
  }
87
+ }, {
88
+ key: "handleKeyDown",
89
+ value: function handleKeyDown(e) {
90
+ if (e.keyCode == 13 || e.keyCode == 32) {
91
+ e.preventDefault();
92
+ }
93
+ }
94
+ }, {
95
+ key: "handleKeyUp",
96
+ value: function handleKeyUp(e) {
97
+ if (e.keyCode == 13 || e.keyCode == 32) {
98
+ this.toggle();
99
+ }
100
+ }
82
101
  }, {
83
102
  key: "render",
84
103
  value: function render() {
@@ -93,27 +112,40 @@ var SlideToggle = /*#__PURE__*/function (_React$Component) {
93
112
  name = _this$props2.name,
94
113
  trk = _this$props2.trk,
95
114
  testId = _this$props2.testId;
115
+ var iconColor = disabled ? _colors["default"].icon["default"].disabled : value ? _colors["default"].icon.brand.bold : _colors["default"].icon.brand.disabled;
96
116
  return /*#__PURE__*/_react["default"].createElement("div", {
97
117
  id: id,
98
- tabIndex: -1,
118
+ tabIndex: disabled ? -1 : 0,
119
+ onKeyDown: this.handleKeyDown,
120
+ onKeyUp: this.handleKeyUp,
121
+ onClick: this.toggle,
99
122
  className: "".concat(classes.cont).concat(disabled ? " ".concat(classes.disabled) : '').concat(className ? " ".concat(className) : ''),
100
123
  style: style
124
+ }, /*#__PURE__*/_react["default"].createElement("div", {
125
+ className: classes.switchWrap
101
126
  }, /*#__PURE__*/_react["default"].createElement("div", _extends({
102
127
  id: trk,
103
128
  name: name,
104
129
  className: "".concat(classes["switch"]).concat(value ? " ".concat(classes.checked) : ''),
105
- onClick: this.toggle,
106
130
  "data-testid": testId
107
131
  }, testId && {
108
132
  'data-value': value ? 1 : 0
109
- }), /*#__PURE__*/_react["default"].createElement("span", {
110
- className: classes.slider
133
+ }), /*#__PURE__*/_react["default"].createElement("div", {
134
+ className: classes.switchBg
111
135
  }, /*#__PURE__*/_react["default"].createElement("span", {
136
+ className: classes.slider
137
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
138
+ iconName: value ? 'check' : 'x',
139
+ width: 16,
140
+ height: 16,
141
+ colors: [iconColor],
112
142
  className: classes.icon
113
- }))), label && /*#__PURE__*/_react["default"].createElement(_Text["default"], {
143
+ }))))), label && /*#__PURE__*/_react["default"].createElement("div", {
144
+ className: classes.labelWrap
145
+ }, /*#__PURE__*/_react["default"].createElement(_Text["default"], {
114
146
  tag: "label",
115
147
  className: classes.label
116
- }, label));
148
+ }, label)));
117
149
  }
118
150
  }]);
119
151
 
@@ -48,7 +48,7 @@ describe("SlideToggle", function () {
48
48
  classes: classes
49
49
  }));
50
50
  expect(wrapper.find('.cont').exists()).toEqual(true);
51
- wrapper.find('.switch').simulate('click');
51
+ wrapper.simulate('click');
52
52
  expect(wrapper.find('.switch').hasClass('checked')).toEqual(true);
53
53
  });
54
54
  it('calls onChange function', function () {
@@ -57,7 +57,7 @@ describe("SlideToggle", function () {
57
57
  classes: classes,
58
58
  onChange: onChange
59
59
  }));
60
- wrapper.find('.switch').simulate('click');
60
+ wrapper.simulate('click');
61
61
  expect(onChange.mock.calls.length).toBe(1);
62
62
  });
63
63
  it('shows the label', function () {