@dxc-technology/halstack-react 0.0.0-49c38a4 → 0.0.0-4a67e25

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 (225) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +294 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +121 -123
  5. package/accordion/Accordion.stories.tsx +13 -14
  6. package/accordion/Accordion.test.js +25 -11
  7. package/accordion/types.d.ts +9 -4
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +15 -36
  10. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  11. package/accordion-group/AccordionGroup.test.js +30 -37
  12. package/accordion-group/types.d.ts +14 -3
  13. package/alert/Alert.js +5 -2
  14. package/badge/Badge.d.ts +1 -1
  15. package/badge/Badge.js +5 -3
  16. package/badge/types.d.ts +1 -0
  17. package/bleed/Bleed.js +1 -34
  18. package/bleed/Bleed.stories.tsx +94 -95
  19. package/bleed/types.d.ts +25 -1
  20. package/box/Box.js +23 -33
  21. package/box/types.d.ts +1 -0
  22. package/bulleted-list/BulletedList.d.ts +7 -0
  23. package/bulleted-list/BulletedList.js +123 -0
  24. package/bulleted-list/BulletedList.stories.tsx +200 -0
  25. package/bulleted-list/types.d.ts +11 -0
  26. package/{list → bulleted-list}/types.js +0 -0
  27. package/button/Button.js +53 -68
  28. package/button/Button.stories.tsx +9 -0
  29. package/button/types.d.ts +7 -7
  30. package/card/Card.js +24 -27
  31. package/card/types.d.ts +1 -0
  32. package/checkbox/Checkbox.d.ts +2 -2
  33. package/checkbox/Checkbox.js +106 -109
  34. package/checkbox/Checkbox.stories.tsx +146 -130
  35. package/checkbox/Checkbox.test.js +100 -10
  36. package/checkbox/types.d.ts +13 -5
  37. package/chip/types.d.ts +1 -1
  38. package/common/variables.js +236 -106
  39. package/date-input/DateInput.js +56 -42
  40. package/date-input/DateInput.stories.tsx +19 -8
  41. package/date-input/DateInput.test.js +161 -87
  42. package/date-input/types.d.ts +16 -9
  43. package/dialog/Dialog.js +46 -50
  44. package/dialog/Dialog.stories.tsx +57 -2
  45. package/dialog/Dialog.test.js +34 -4
  46. package/dialog/types.d.ts +3 -2
  47. package/dropdown/Dropdown.d.ts +1 -1
  48. package/dropdown/Dropdown.js +247 -251
  49. package/dropdown/Dropdown.stories.tsx +126 -63
  50. package/dropdown/Dropdown.test.js +504 -108
  51. package/dropdown/DropdownMenu.d.ts +4 -0
  52. package/dropdown/DropdownMenu.js +80 -0
  53. package/dropdown/DropdownMenuItem.d.ts +4 -0
  54. package/dropdown/DropdownMenuItem.js +92 -0
  55. package/dropdown/types.d.ts +25 -5
  56. package/file-input/FileInput.d.ts +2 -2
  57. package/file-input/FileInput.js +183 -222
  58. package/file-input/FileInput.stories.tsx +38 -10
  59. package/file-input/FileInput.test.js +53 -12
  60. package/file-input/FileItem.d.ts +4 -14
  61. package/file-input/FileItem.js +43 -66
  62. package/file-input/types.d.ts +17 -0
  63. package/flex/Flex.d.ts +4 -0
  64. package/flex/Flex.js +69 -0
  65. package/flex/Flex.stories.tsx +103 -0
  66. package/flex/types.d.ts +32 -0
  67. package/{radio → flex}/types.js +0 -0
  68. package/footer/Footer.js +15 -88
  69. package/footer/Footer.stories.tsx +8 -1
  70. package/footer/Icons.js +1 -1
  71. package/footer/types.d.ts +2 -1
  72. package/header/Header.js +95 -114
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +18 -2
  75. package/header/Icons.js +2 -2
  76. package/header/types.d.ts +3 -2
  77. package/inset/Inset.js +1 -34
  78. package/inset/Inset.stories.tsx +36 -36
  79. package/inset/types.d.ts +25 -1
  80. package/layout/ApplicationLayout.d.ts +16 -6
  81. package/layout/ApplicationLayout.js +71 -131
  82. package/layout/ApplicationLayout.stories.tsx +84 -93
  83. package/layout/Icons.d.ts +5 -0
  84. package/layout/Icons.js +13 -2
  85. package/layout/SidenavContext.d.ts +5 -0
  86. package/layout/SidenavContext.js +19 -0
  87. package/layout/types.d.ts +18 -33
  88. package/link/Link.d.ts +3 -2
  89. package/link/Link.js +58 -75
  90. package/link/Link.stories.tsx +95 -53
  91. package/link/Link.test.js +7 -15
  92. package/link/types.d.ts +7 -23
  93. package/main.d.ts +8 -10
  94. package/main.js +46 -56
  95. package/number-input/NumberInput.js +11 -18
  96. package/number-input/NumberInput.stories.tsx +5 -5
  97. package/number-input/NumberInput.test.js +45 -11
  98. package/number-input/types.d.ts +17 -10
  99. package/package.json +20 -16
  100. package/paginator/Paginator.js +17 -38
  101. package/paginator/Paginator.test.js +43 -1
  102. package/paragraph/Paragraph.d.ts +6 -0
  103. package/paragraph/Paragraph.js +38 -0
  104. package/paragraph/Paragraph.stories.tsx +44 -0
  105. package/password-input/PasswordInput.js +7 -4
  106. package/password-input/PasswordInput.test.js +16 -18
  107. package/password-input/types.d.ts +14 -11
  108. package/progress-bar/ProgressBar.d.ts +2 -2
  109. package/progress-bar/ProgressBar.js +57 -51
  110. package/progress-bar/ProgressBar.stories.jsx +13 -11
  111. package/progress-bar/ProgressBar.test.js +67 -22
  112. package/progress-bar/types.d.ts +3 -4
  113. package/quick-nav/QuickNav.d.ts +4 -0
  114. package/quick-nav/QuickNav.js +117 -0
  115. package/quick-nav/QuickNav.stories.tsx +342 -0
  116. package/quick-nav/types.d.ts +21 -0
  117. package/{row → quick-nav}/types.js +0 -0
  118. package/radio-group/Radio.d.ts +1 -1
  119. package/radio-group/Radio.js +43 -28
  120. package/radio-group/RadioGroup.js +32 -28
  121. package/radio-group/RadioGroup.stories.tsx +5 -0
  122. package/radio-group/RadioGroup.test.js +144 -116
  123. package/radio-group/types.d.ts +79 -2
  124. package/resultsetTable/ResultsetTable.js +1 -3
  125. package/resultsetTable/ResultsetTable.test.js +42 -0
  126. package/select/Icons.d.ts +10 -0
  127. package/select/Icons.js +93 -0
  128. package/select/Listbox.d.ts +4 -0
  129. package/select/Listbox.js +198 -0
  130. package/select/Option.d.ts +4 -0
  131. package/select/Option.js +110 -0
  132. package/select/Select.js +141 -365
  133. package/select/Select.stories.tsx +160 -115
  134. package/select/Select.test.js +609 -276
  135. package/select/types.d.ts +52 -12
  136. package/sidenav/Sidenav.d.ts +6 -5
  137. package/sidenav/Sidenav.js +184 -52
  138. package/sidenav/Sidenav.stories.tsx +154 -156
  139. package/sidenav/Sidenav.test.js +25 -37
  140. package/sidenav/types.d.ts +50 -27
  141. package/slider/Slider.d.ts +2 -2
  142. package/slider/Slider.js +122 -96
  143. package/slider/Slider.stories.tsx +15 -9
  144. package/slider/Slider.test.js +142 -21
  145. package/slider/types.d.ts +10 -2
  146. package/spinner/Spinner.js +1 -1
  147. package/switch/Switch.d.ts +2 -2
  148. package/switch/Switch.js +150 -67
  149. package/switch/Switch.stories.tsx +20 -42
  150. package/switch/Switch.test.js +155 -3
  151. package/switch/types.d.ts +12 -4
  152. package/table/Table.js +1 -1
  153. package/table/Table.test.js +1 -1
  154. package/tabs/Tab.d.ts +4 -0
  155. package/tabs/Tab.js +135 -0
  156. package/tabs/Tabs.d.ts +1 -1
  157. package/tabs/Tabs.js +362 -108
  158. package/tabs/Tabs.stories.tsx +74 -8
  159. package/tabs/Tabs.test.js +241 -13
  160. package/tabs/types.d.ts +19 -5
  161. package/tabs-nav/NavTabs.d.ts +8 -0
  162. package/tabs-nav/NavTabs.js +125 -0
  163. package/tabs-nav/NavTabs.stories.tsx +170 -0
  164. package/tabs-nav/NavTabs.test.js +82 -0
  165. package/tabs-nav/Tab.d.ts +4 -0
  166. package/tabs-nav/Tab.js +130 -0
  167. package/tabs-nav/types.d.ts +53 -0
  168. package/{stack → tabs-nav}/types.js +0 -0
  169. package/tag/Tag.js +15 -20
  170. package/tag/Tag.stories.tsx +12 -8
  171. package/tag/types.d.ts +1 -1
  172. package/text-input/Icons.d.ts +8 -0
  173. package/text-input/Icons.js +60 -0
  174. package/text-input/Suggestion.d.ts +4 -0
  175. package/text-input/Suggestion.js +57 -0
  176. package/text-input/Suggestions.d.ts +4 -0
  177. package/text-input/Suggestions.js +134 -0
  178. package/text-input/TextInput.js +214 -333
  179. package/text-input/TextInput.stories.tsx +199 -192
  180. package/text-input/TextInput.test.js +686 -753
  181. package/text-input/types.d.ts +50 -12
  182. package/textarea/Textarea.js +15 -24
  183. package/textarea/Textarea.stories.jsx +5 -5
  184. package/textarea/Textarea.test.js +37 -36
  185. package/textarea/types.d.ts +18 -11
  186. package/toggle-group/ToggleGroup.d.ts +1 -1
  187. package/toggle-group/ToggleGroup.js +5 -4
  188. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  189. package/toggle-group/ToggleGroup.test.js +35 -4
  190. package/toggle-group/types.d.ts +9 -1
  191. package/typography/Typography.d.ts +4 -0
  192. package/typography/Typography.js +131 -0
  193. package/typography/Typography.stories.tsx +198 -0
  194. package/typography/types.d.ts +18 -0
  195. package/typography/types.js +5 -0
  196. package/useTheme.js +2 -2
  197. package/useTranslatedLabels.d.ts +2 -0
  198. package/useTranslatedLabels.js +20 -0
  199. package/wizard/Wizard.d.ts +1 -1
  200. package/wizard/Wizard.js +58 -54
  201. package/wizard/Wizard.stories.tsx +33 -24
  202. package/wizard/Wizard.test.js +36 -23
  203. package/wizard/types.d.ts +10 -5
  204. package/ThemeContext.d.ts +0 -15
  205. package/ThemeContext.js +0 -235
  206. package/list/List.d.ts +0 -4
  207. package/list/List.js +0 -47
  208. package/list/List.stories.tsx +0 -95
  209. package/list/types.d.ts +0 -7
  210. package/radio/Radio.d.ts +0 -4
  211. package/radio/Radio.js +0 -174
  212. package/radio/Radio.stories.tsx +0 -192
  213. package/radio/Radio.test.js +0 -71
  214. package/radio/types.d.ts +0 -54
  215. package/row/Row.d.ts +0 -3
  216. package/row/Row.js +0 -127
  217. package/row/Row.stories.tsx +0 -237
  218. package/row/types.d.ts +0 -10
  219. package/stack/Stack.d.ts +0 -3
  220. package/stack/Stack.js +0 -97
  221. package/stack/Stack.stories.tsx +0 -164
  222. package/stack/types.d.ts +0 -9
  223. package/text/Text.d.ts +0 -7
  224. package/text/Text.js +0 -30
  225. package/text/Text.stories.tsx +0 -19
@@ -6,24 +6,73 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
9
11
  var _Slider = _interopRequireDefault(require("./Slider"));
10
12
 
11
13
  describe("Slider component tests", function () {
12
- test("Slider renders with correct text", function () {
14
+ test("Slider renders with correct text and label id", function () {
13
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
16
+ label: "label",
14
17
  minValue: 0,
15
18
  maxValue: 100,
16
19
  showLimitsValues: true
17
20
  })),
18
- getByText = _render.getByText;
21
+ getByText = _render.getByText,
22
+ getByRole = _render.getByRole;
19
23
 
20
24
  expect(getByText("0")).toBeTruthy();
21
25
  expect(getByText("100")).toBeTruthy();
26
+ var sliderId = getByText("label").getAttribute("id");
27
+ expect(getByRole("slider").getAttribute("aria-labelledby")).toBe(sliderId);
28
+ expect(getByRole("slider").getAttribute("aria-orientation")).toBe("horizontal");
29
+ });
30
+ test("Slider renders with correct initial value when it is uncontrolled", function () {
31
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
32
+ defaultValue: 30,
33
+ minValue: 0,
34
+ maxValue: 100,
35
+ showLimitsValues: true,
36
+ showInput: true
37
+ })),
38
+ getByRole = _render2.getByRole;
39
+
40
+ var slider = getByRole("slider");
41
+ var input = getByRole("textbox");
42
+ expect(slider.getAttribute("aria-valuenow")).toBe("30");
43
+ expect(input.value).toBe("30");
44
+ });
45
+ test("Slider correct limit values", function () {
46
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
47
+ defaultValue: 125,
48
+ minValue: 30,
49
+ maxValue: 125,
50
+ showLimitsValues: true
51
+ })),
52
+ getByRole = _render3.getByRole,
53
+ getByText = _render3.getByText;
54
+
55
+ var slider = getByRole("slider");
56
+ expect(slider.getAttribute("aria-valuemin")).toBe("30");
57
+ expect(slider.getAttribute("aria-valuemax")).toBe("125");
58
+
59
+ _userEvent["default"].tab();
60
+
61
+ _react2.fireEvent.keyDown(slider, {
62
+ key: "ArrowRight",
63
+ code: "ArrowRight",
64
+ keyCode: 39,
65
+ charCode: 39
66
+ });
67
+
68
+ expect(slider.getAttribute("aria-valuenow")).toBe("125");
69
+ expect(getByText("30")).toBeTruthy();
70
+ expect(getByText("125")).toBeTruthy();
22
71
  });
23
72
  test("Calls correct function onChange in controlled slider", function () {
24
73
  var onChange = jest.fn();
25
74
 
26
- var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
75
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
27
76
  minValue: 0,
28
77
  maxValue: 100,
29
78
  onChange: onChange,
@@ -31,8 +80,10 @@ describe("Slider component tests", function () {
31
80
  value: 13,
32
81
  showInput: true
33
82
  })),
34
- getByRole = _render2.getByRole;
83
+ getByRole = _render4.getByRole;
35
84
 
85
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
86
+ expect(getByRole("textbox").value).toBe("13");
36
87
  (0, _react2.act)(function () {
37
88
  _react2.fireEvent.change(getByRole("textbox"), {
38
89
  target: {
@@ -41,18 +92,20 @@ describe("Slider component tests", function () {
41
92
  });
42
93
  });
43
94
  expect(onChange).toHaveBeenCalledWith(25);
95
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
96
+ expect(getByRole("textbox").value).toBe("13");
44
97
  });
45
98
  test("Calls correct function onChange in uncontrolled slider", function () {
46
99
  var onChange = jest.fn();
47
100
 
48
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
101
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
49
102
  minValue: 0,
50
103
  maxValue: 100,
51
104
  onChange: onChange,
52
105
  showLimitsValues: true,
53
106
  showInput: true
54
107
  })),
55
- getByRole = _render3.getByRole;
108
+ getByRole = _render5.getByRole;
56
109
 
57
110
  (0, _react2.act)(function () {
58
111
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -62,11 +115,13 @@ describe("Slider component tests", function () {
62
115
  });
63
116
  });
64
117
  expect(onChange).toHaveBeenCalledWith(25);
118
+ expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("25");
119
+ expect(getByRole("textbox").value).toBe("25");
65
120
  });
66
- test("Disabled slider have disabled input", function () {
121
+ test("Disabled slider have disabled input and slider", function () {
67
122
  var onChange = jest.fn();
68
123
 
69
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
124
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
70
125
  minValue: 0,
71
126
  maxValue: 100,
72
127
  onChange: onChange,
@@ -75,7 +130,7 @@ describe("Slider component tests", function () {
75
130
  showInput: true,
76
131
  value: 13
77
132
  })),
78
- getByRole = _render4.getByRole;
133
+ getByRole = _render6.getByRole;
79
134
 
80
135
  (0, _react2.act)(function () {
81
136
  _react2.fireEvent.change(getByRole("textbox"), {
@@ -86,33 +141,64 @@ describe("Slider component tests", function () {
86
141
  });
87
142
  expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
88
143
  expect(getByRole("textbox").value).toBe("13");
144
+ expect(getByRole("slider").hasAttribute("disabled")).toBeTruthy();
89
145
  });
90
- test("Calls correct function onDragEnd", function () {
146
+ test("Calls correct function onDragEnd when it is uncontrolled", function () {
91
147
  var onDragEnd = jest.fn();
92
148
 
93
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
149
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
94
150
  minValue: 0,
95
- maxValue: 100,
96
- showLimitsValues: true,
97
- showInput: true,
151
+ maxValue: 150,
98
152
  onDragEnd: onDragEnd,
99
- value: 25
153
+ showInput: true
100
154
  })),
101
- getByRole = _render5.getByRole;
155
+ getByRole = _render7.getByRole;
102
156
 
157
+ var slider = getByRole("slider");
158
+ (0, _react2.act)(function () {
159
+ _react2.fireEvent.mouseDown(slider);
160
+ });
103
161
  (0, _react2.act)(function () {
104
- _react2.fireEvent.mouseDown(getByRole("slider"));
162
+ _react2.fireEvent.mouseUp(slider, {
163
+ target: {
164
+ value: 120
165
+ }
166
+ });
167
+ });
168
+ expect(onDragEnd).toHaveBeenCalledWith("120");
169
+ });
170
+ test("Calls correct function onDragEnd when it is controlled", function () {
171
+ var onDragEnd = jest.fn();
105
172
 
106
- _react2.fireEvent.mouseUp(getByRole("slider"));
173
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
174
+ minValue: 0,
175
+ maxValue: 150,
176
+ value: 50,
177
+ onDragEnd: onDragEnd,
178
+ showInput: true
179
+ })),
180
+ getByRole = _render8.getByRole;
181
+
182
+ var slider = getByRole("slider");
183
+ (0, _react2.act)(function () {
184
+ _react2.fireEvent.mouseDown(slider);
107
185
  });
108
- expect(onDragEnd).toHaveBeenCalled();
186
+ (0, _react2.act)(function () {
187
+ _react2.fireEvent.mouseUp(slider, {
188
+ target: {
189
+ value: 120
190
+ }
191
+ });
192
+ });
193
+ expect(onDragEnd).toHaveBeenCalledWith("120");
194
+ expect(slider.getAttribute("aria-valuenow")).toBe("50");
109
195
  });
110
196
  test("Calls correct function labelFormatCallback", function () {
111
197
  var labelFormatCallback = jest.fn(function (x) {
112
198
  return "".concat(x, "$");
113
199
  });
114
200
 
115
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
201
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
116
202
  minValue: 0,
117
203
  maxValue: 100,
118
204
  showLimitsValues: true,
@@ -120,10 +206,45 @@ describe("Slider component tests", function () {
120
206
  value: 25,
121
207
  labelFormatCallback: labelFormatCallback
122
208
  })),
123
- getByText = _render6.getByText;
209
+ getByText = _render9.getByText;
124
210
 
125
211
  expect(getByText("0$")).toBeTruthy();
126
212
  expect(getByText("100$")).toBeTruthy();
127
213
  expect(labelFormatCallback).toHaveBeenCalledTimes(2);
128
214
  });
215
+ test("Change value correctly to 0 from external function", function () {
216
+ var onChange = jest.fn();
217
+
218
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
219
+ minValue: 0,
220
+ maxValue: 100,
221
+ onChange: onChange,
222
+ showLimitsValues: true,
223
+ value: 13,
224
+ showInput: true
225
+ })),
226
+ rerender = _render10.rerender,
227
+ getByRole = _render10.getByRole;
228
+
229
+ var slider = getByRole("slider");
230
+
231
+ _userEvent["default"].tab();
232
+
233
+ _react2.fireEvent.keyDown(slider, {
234
+ key: "ArrowRight",
235
+ code: "ArrowRight",
236
+ keyCode: 39,
237
+ charCode: 39
238
+ });
239
+
240
+ rerender( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
241
+ minValue: 0,
242
+ maxValue: 100,
243
+ onChange: onChange,
244
+ showLimitsValues: true,
245
+ value: 0,
246
+ showInput: true
247
+ }));
248
+ expect(slider.getAttribute("aria-valuenow")).toBe("0");
249
+ });
129
250
  });
package/slider/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- declare type Margin = {
1
+ export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ export declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
@@ -14,6 +14,10 @@ declare type Props = {
14
14
  * Name attribute of the input element.
15
15
  */
16
16
  name?: string;
17
+ /**
18
+ * Initial value of the slider, only when it is uncontrolled.
19
+ */
20
+ defaultValue?: number;
17
21
  /**
18
22
  * The selected value. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
19
23
  */
@@ -75,4 +79,8 @@ declare type Props = {
75
79
  */
76
80
  size?: "medium" | "large" | "fillParent";
77
81
  };
82
+ /**
83
+ * Reference to the component.
84
+ */
85
+ export declare type RefType = HTMLDivElement;
78
86
  export default Props;
@@ -199,7 +199,7 @@ var SVGSpinner = _styledComponents["default"].svg(_templateObject8 || (_template
199
199
  var CircleSpinner = _styledComponents["default"].circle(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n fill: transparent;\n stroke-linecap: initial;\n vector-effect: non-scaling-stroke;\n animation: ", ";\n stroke: ", ";\n transform-origin: ", ";\n stroke-dasharray: ", ";\n stroke-width: ", ";\n stroke-dashoffset: ", ";\n"])), function (props) {
200
200
  return props.isDeterminated ? "none" : props.mode !== "small" ? "1.4s ease-in-out infinite both svg-circle-large" : "1.4s ease-in-out infinite both svg-circle-small";
201
201
  }, function (props) {
202
- return props.backgroundType === "dark" ? props.theme.trackCircleColorOnDark : props.theme.trackCircleColor;
202
+ return props.backgroundType === "dark" || props.mode === "overlay" ? props.theme.trackCircleColorOverlay : props.theme.trackCircleColor;
203
203
  }, function (props) {
204
204
  return !props.isDeterminated ? "50% 50%" : "";
205
205
  }, function (props) {
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import SwitchPropsType from "./types";
3
- declare const DxcSwitch: ({ checked, value, label, labelPosition, name, disabled, onChange, required, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
3
+ declare const DxcSwitch: React.ForwardRefExoticComponent<SwitchPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSwitch;
package/switch/Switch.js CHANGED
@@ -19,9 +19,7 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _core = require("@material-ui/core");
23
-
24
- var _RequiredComponent = _interopRequireDefault(require("../common/RequiredComponent"));
22
+ var _uuid = require("uuid");
25
23
 
26
24
  var _variables = require("../common/variables.js");
27
25
 
@@ -29,16 +27,19 @@ var _utils = require("../common/utils.js");
29
27
 
30
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
31
29
 
30
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
32
32
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
33
 
34
- var _templateObject, _templateObject2;
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
35
35
 
36
36
  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); }
37
37
 
38
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
39
39
 
40
- var DxcSwitch = function DxcSwitch(_ref) {
41
- var checked = _ref.checked,
40
+ var DxcSwitch = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
41
+ var defaultChecked = _ref.defaultChecked,
42
+ checked = _ref.checked,
42
43
  value = _ref.value,
43
44
  _ref$label = _ref.label,
44
45
  label = _ref$label === void 0 ? "" : _ref$label,
@@ -48,75 +49,159 @@ var DxcSwitch = function DxcSwitch(_ref) {
48
49
  name = _ref$name === void 0 ? "" : _ref$name,
49
50
  _ref$disabled = _ref.disabled,
50
51
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
52
+ _ref$optional = _ref.optional,
53
+ optional = _ref$optional === void 0 ? false : _ref$optional,
51
54
  onChange = _ref.onChange,
52
- _ref$required = _ref.required,
53
- required = _ref$required === void 0 ? false : _ref$required,
54
55
  margin = _ref.margin,
55
56
  _ref$size = _ref.size,
56
57
  size = _ref$size === void 0 ? "fitContent" : _ref$size,
57
58
  _ref$tabIndex = _ref.tabIndex,
58
59
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
59
60
 
60
- var _useState = (0, _react.useState)(false),
61
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
62
- innerChecked = _useState2[0],
63
- setInnerChecked = _useState2[1];
61
+ var _useState = (0, _react.useState)("switch-".concat((0, _uuid.v4)())),
62
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
63
+ switchId = _useState2[0];
64
+
65
+ var labelId = "label-".concat(switchId);
66
+
67
+ var _useState3 = (0, _react.useState)(defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : false),
68
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
69
+ innerChecked = _useState4[0],
70
+ setInnerChecked = _useState4[1];
64
71
 
65
72
  var colorsTheme = (0, _useTheme["default"])();
73
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
66
74
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
75
+ var refTrack = (0, _react.useRef)(null);
67
76
 
68
- var handlerSwitchChange = function handlerSwitchChange(event) {
69
- if (checked === undefined) {
70
- var _event$target$checked;
77
+ var handleOnKeyDown = function handleOnKeyDown(event) {
78
+ switch (event.key) {
79
+ case "Enter":
80
+ case " ":
81
+ //Space
82
+ event.preventDefault();
83
+ refTrack.current.focus();
84
+ var isChecked = !(checked !== null && checked !== void 0 ? checked : innerChecked);
85
+ setInnerChecked(isChecked);
86
+ onChange === null || onChange === void 0 ? void 0 : onChange(isChecked);
87
+ break;
88
+ }
89
+ };
71
90
 
72
- var isChecked = (_event$target$checked = event.target.checked) !== null && _event$target$checked !== void 0 ? _event$target$checked : !innerChecked;
73
- setInnerChecked(isChecked);
74
- onChange === null || onChange === void 0 ? void 0 : onChange(isChecked);
75
- } else onChange === null || onChange === void 0 ? void 0 : onChange(!checked);
91
+ var handlerSwitchChange = function handlerSwitchChange(event) {
92
+ checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
93
+ return !innerChecked;
94
+ });
95
+ onChange === null || onChange === void 0 ? void 0 : onChange(checked ? !checked : !innerChecked);
76
96
  };
77
97
 
78
98
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
79
99
  theme: colorsTheme["switch"]
80
100
  }, /*#__PURE__*/_react["default"].createElement(SwitchContainer, {
81
101
  margin: margin,
102
+ size: size,
103
+ onKeyDown: handleOnKeyDown,
82
104
  disabled: disabled,
105
+ onClick: !disabled ? handlerSwitchChange : undefined,
106
+ ref: ref
107
+ }, labelPosition === "before" && label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
108
+ id: labelId,
83
109
  labelPosition: labelPosition,
84
- size: size,
85
- backgroundType: backgroundType
86
- }, /*#__PURE__*/_react["default"].createElement(_core.Switch, {
87
- checked: checked !== null && checked !== void 0 ? checked : innerChecked,
88
- inputProps: {
89
- name: name,
90
- tabIndex: tabIndex
91
- },
92
- onChange: handlerSwitchChange,
110
+ disabled: disabled,
111
+ backgroundType: backgroundType,
112
+ label: label
113
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(ValueInput, {
114
+ type: "checkbox",
115
+ name: name,
116
+ "aria-hidden": true,
93
117
  value: value,
94
118
  disabled: disabled,
95
- disableRipple: true
96
- }), /*#__PURE__*/_react["default"].createElement(LabelContainer, {
119
+ checked: checked !== null && checked !== void 0 ? checked : innerChecked,
120
+ readOnly: true
121
+ }), /*#__PURE__*/_react["default"].createElement(SwitchBase, null, /*#__PURE__*/_react["default"].createElement(SwitchTrack, {
122
+ role: "switch",
123
+ backgroundType: backgroundType,
124
+ "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
125
+ "aria-disabled": disabled,
126
+ disabled: disabled,
127
+ "aria-labelledby": labelId,
128
+ tabIndex: !disabled ? tabIndex : -1,
129
+ ref: refTrack
130
+ })), labelPosition === "after" && label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
131
+ id: labelId,
97
132
  labelPosition: labelPosition,
98
- onClick: !disabled && handlerSwitchChange,
99
133
  disabled: disabled,
100
- backgroundType: backgroundType
101
- }, required && /*#__PURE__*/_react["default"].createElement(_RequiredComponent["default"], null), label)));
102
- };
134
+ backgroundType: backgroundType,
135
+ label: label
136
+ }, optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel), " ", label)));
137
+ });
103
138
 
104
139
  var sizes = {
105
140
  small: "60px",
106
141
  medium: "240px",
107
142
  large: "480px",
108
143
  fillParent: "100%",
109
- fitContent: "unset"
144
+ fitContent: "fit-content"
110
145
  };
111
146
 
112
147
  var calculateWidth = function calculateWidth(margin, size) {
113
148
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
114
149
  };
115
150
 
116
- var SwitchContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n display: inline-flex;\n align-items: center;\n flex-direction: ", ";\n \n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n\n .MuiSwitch-root {\n align-items: center;\n width: ", ";\n height: 45px;\n margin: 3px;\n\n .Mui-focusVisible {\n outline: ", ";\n outline-offset: -3px;\n }\n\n .MuiSwitch-track {\n /*Enabled and unchecked bar*/\n background-color: ", ";\n height: ", ";\n }\n\n .MuiSwitch-switchBase + .MuiSwitch-track {\n opacity: 1;\n }\n\n .MuiIconButton-root {\n /*Enabled and unchecked*/\n top: unset;\n .MuiSwitch-thumb {\n /*Only for thumb in all states*/\n width: ", ";\n height: ", ";\n }\n color: ", ";\n &:hover {\n background-color: transparent;\n }\n &.Mui-disabled {\n /*Disabled and unchecked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and unchecked bar*/\n background-color: ", ";\n }\n }\n &.Mui-disabled.Mui-checked {\n /*Disabled and checked*/\n color: ", ";\n + .MuiSwitch-track {\n /*Disabled and checked bar*/\n background-color: ", ";\n }\n }\n &.Mui-checked {\n /*Enabled and checked*/\n color: ", ";\n transform: translateX(", ");\n &:hover {\n background-color: transparent;\n }\n + .MuiSwitch-track {\n /*Enabled and checked bar*/\n background-color: ", ";\n }\n }\n }\n }\n"])), function (props) {
151
+ var getDisabledColor = function getDisabledColor(props, element, subelement) {
152
+ switch (element) {
153
+ case "track":
154
+ switch (subelement) {
155
+ case "check":
156
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckedTrackBackgroundColorOnDark : props.theme.disabledCheckedTrackBackgroundColor;
157
+
158
+ case "uncheck":
159
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledUncheckedTrackBackgroundColorOnDark : props.theme.disabledUncheckedTrackBackgroundColor;
160
+ }
161
+
162
+ case "thumb":
163
+ switch (subelement) {
164
+ case "check":
165
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckedThumbBackgroundColorOnDark : props.theme.disabledCheckedThumbBackgroundColor;
166
+
167
+ case "uncheck":
168
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledUncheckedThumbBackgroundColorOnDark : props.theme.disabledUncheckedThumbBackgroundColor;
169
+ }
170
+
171
+ case "label":
172
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor;
173
+ }
174
+ };
175
+
176
+ var getNotDisabledColor = function getNotDisabledColor(props, element, subelement) {
177
+ switch (element) {
178
+ case "track":
179
+ switch (subelement) {
180
+ case "check":
181
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkedTrackBackgroundColorOnDark : props.theme.checkedTrackBackgroundColor;
182
+
183
+ case "uncheck":
184
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.uncheckedTrackBackgroundColorOnDark : props.theme.uncheckedTrackBackgroundColor;
185
+ }
186
+
187
+ case "thumb":
188
+ switch (subelement) {
189
+ case "check":
190
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkedThumbBackgroundColorOnDark : props.theme.checkedThumbBackgroundColor;
191
+
192
+ case "uncheck":
193
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.uncheckedThumbBackgroundColorOnDark : props.theme.uncheckedThumbBackgroundColor;
194
+ }
195
+
196
+ case "label":
197
+ return props.backgroundType && props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
198
+ }
199
+ };
200
+
201
+ var SwitchContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n width: ", ";\n height: 40px;\n cursor: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
117
202
  return calculateWidth(props.margin, props.size);
118
203
  }, function (props) {
119
- return props.labelPosition === "after" ? "row" : "row-reverse";
204
+ return props.disabled === true ? "not-allowed" : "pointer";
120
205
  }, function (props) {
121
206
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
122
207
  }, function (props) {
@@ -127,52 +212,50 @@ var SwitchContainer = _styledComponents["default"].div(_templateObject || (_temp
127
212
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
128
213
  }, function (props) {
129
214
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
215
+ });
216
+
217
+ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n\n ", ";\n\n ", "\n"])), function (props) {
218
+ return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
130
219
  }, function (props) {
131
- return props.disabled ? "not-allowed" : "default";
132
- }, function (props) {
133
- return props.theme.trackWidth;
134
- }, function (props) {
135
- return "".concat(props.backgroundType === "dark" ? props.theme.thumbFocusColorOnDark : props.theme.thumbFocusColor, " solid 2px");
136
- }, function (props) {
137
- return props.backgroundType === "dark" ? props.theme.uncheckedTrackBackgroundColorOnDark : props.theme.uncheckedTrackBackgroundColor;
138
- }, function (props) {
139
- return props.theme.trackHeight;
140
- }, function (props) {
141
- return props.theme.thumbWidth;
220
+ return props.theme.labelFontFamily;
142
221
  }, function (props) {
143
- return props.theme.thumbHeight;
222
+ return props.theme.labelFontSize;
144
223
  }, function (props) {
145
- return props.backgroundType === "dark" ? props.theme.uncheckedThumbBackgroundColorOnDark : props.theme.uncheckedThumbBackgroundColor;
224
+ return props.disabled ? props.theme.disabledLabelFontStyle : props.theme.labelFontStyle;
146
225
  }, function (props) {
147
- return props.backgroundType === "dark" ? props.theme.disabledUncheckedThumbBackgroundColorOnDark : props.theme.disabledUncheckedThumbBackgroundColor;
226
+ return props.theme.labelFontWeight;
148
227
  }, function (props) {
149
- return props.backgroundType === "dark" ? props.theme.disabledUncheckedTrackBackgroundColorOnDark : props.theme.disabledUncheckedTrackBackgroundColor;
228
+ return !props.label ? "margin: 0px;" : props.labelPosition === "after" ? "margin-left: ".concat(props.theme.spaceBetweenLabelSwitch, ";") : "margin-right: ".concat(props.theme.spaceBetweenLabelSwitch, ";");
150
229
  }, function (props) {
151
- return props.backgroundType === "dark" ? props.theme.disabledCheckedThumbBackgroundColorOnDark : props.theme.disabledCheckedThumbBackgroundColor;
230
+ return props.labelPosition === "before" && "order: -1";
231
+ });
232
+
233
+ var SwitchBase = _styledComponents["default"].label(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0px 12px;\n"])));
234
+
235
+ var ValueInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
236
+
237
+ var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n z-index: 1;\n box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);\n bottom: -6px;\n left: -4px;\n transform: translateX(0px);\n background-color: ", ";\n }\n\n /* Unchecked */\n background-color: ", ";\n\n /* Checked */\n &[aria-checked=\"true\"] {\n background-color: ", ";\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
238
+ return props.theme.trackWidth;
152
239
  }, function (props) {
153
- return props.backgroundType === "dark" ? props.theme.disabledCheckedTrackBackgroundColorOnDark : props.theme.disabledCheckedTrackBackgroundColor;
240
+ return props.theme.trackHeight;
154
241
  }, function (props) {
155
- return props.backgroundType === "dark" ? props.theme.checkedThumbBackgroundColorOnDark : props.theme.checkedThumbBackgroundColor;
242
+ return props.disabled ? "not-allowed" : "pointer";
156
243
  }, function (props) {
157
- return props.theme.thumbShift;
244
+ return "".concat(props.backgroundType === "dark" ? props.theme.thumbFocusColorOnDark : props.theme.thumbFocusColor, " solid 2px");
158
245
  }, function (props) {
159
- return props.backgroundType === "dark" ? props.theme.checkedTrackBackgroundColorOnDark : props.theme.checkedTrackBackgroundColor;
160
- });
161
-
162
- var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n cursor: ", ";\n ", "\n"])), function (props) {
163
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
246
+ return props.theme.thumbWidth;
164
247
  }, function (props) {
165
- return props.theme.labelFontFamily;
248
+ return props.theme.thumbHeight;
166
249
  }, function (props) {
167
- return props.theme.labelFontSize;
250
+ return props.disabled ? getDisabledColor(props, "thumb", "uncheck") : getNotDisabledColor(props, "thumb", "uncheck");
168
251
  }, function (props) {
169
- return props.disabled ? props.theme.disabledLabelFontStyle : props.theme.labelFontStyle;
252
+ return props.disabled ? getDisabledColor(props, "track", "uncheck") : getNotDisabledColor(props, "track", "uncheck");
170
253
  }, function (props) {
171
- return props.theme.labelFontWeight;
254
+ return props.disabled ? getDisabledColor(props, "track", "check") : getNotDisabledColor(props, "track", "check");
172
255
  }, function (props) {
173
- return props.disabled === true ? "not-allowed" : "pointer";
256
+ return props.theme.thumbShift;
174
257
  }, function (props) {
175
- return props.labelPosition === "after" ? "margin-left: ".concat(props.theme.spaceBetweenLabelSwitch, ";") : "margin-right: ".concat(props.theme.spaceBetweenLabelSwitch, ";");
258
+ return props.disabled ? getDisabledColor(props, "thumb", "check") : getNotDisabledColor(props, "thumb", "check");
176
259
  });
177
260
 
178
261
  var _default = DxcSwitch;