@dxc-technology/halstack-react 0.0.0-4a5e7d8 → 0.0.0-4b95ba0

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 (120) hide show
  1. package/BackgroundColorContext.js +0 -1
  2. package/ThemeContext.js +23 -31
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +9 -20
  5. package/accordion/Accordion.stories.tsx +9 -2
  6. package/accordion/types.d.ts +3 -7
  7. package/accordion-group/types.d.ts +3 -7
  8. package/badge/Badge.d.ts +4 -0
  9. package/badge/types.d.ts +4 -0
  10. package/badge/types.js +5 -0
  11. package/bleed/Bleed.d.ts +3 -0
  12. package/bleed/Bleed.js +84 -0
  13. package/bleed/Bleed.stories.tsx +342 -0
  14. package/bleed/types.d.ts +13 -0
  15. package/bleed/types.js +5 -0
  16. package/button/Button.d.ts +1 -1
  17. package/button/Button.js +7 -15
  18. package/button/Button.stories.tsx +6 -8
  19. package/button/types.d.ts +3 -7
  20. package/card/Card.stories.tsx +1 -1
  21. package/checkbox/types.d.ts +1 -1
  22. package/chip/Chip.d.ts +1 -1
  23. package/chip/Chip.js +14 -52
  24. package/chip/Chip.stories.tsx +6 -8
  25. package/chip/types.d.ts +5 -13
  26. package/common/variables.js +38 -234
  27. package/date-input/DateInput.js +6 -6
  28. package/dialog/Dialog.js +2 -1
  29. package/dropdown/Dropdown.d.ts +1 -1
  30. package/dropdown/Dropdown.js +12 -34
  31. package/dropdown/Dropdown.stories.tsx +25 -23
  32. package/dropdown/types.d.ts +5 -14
  33. package/file-input/FileInput.js +102 -33
  34. package/file-input/FileInput.stories.tsx +507 -0
  35. package/footer/Footer.js +18 -20
  36. package/heading/Heading.stories.tsx +3 -2
  37. package/inset/Inset.d.ts +3 -0
  38. package/inset/Inset.js +84 -0
  39. package/inset/Inset.stories.tsx +229 -0
  40. package/inset/types.d.ts +13 -0
  41. package/inset/types.js +5 -0
  42. package/layout/ApplicationLayout.js +9 -3
  43. package/link/Link.js +7 -15
  44. package/link/Link.stories.tsx +6 -1
  45. package/link/types.d.ts +5 -9
  46. package/list/List.d.ts +3 -7
  47. package/list/List.js +4 -4
  48. package/list/List.stories.tsx +10 -0
  49. package/list/types.d.ts +7 -0
  50. package/list/types.js +5 -0
  51. package/main.d.ts +4 -6
  52. package/main.js +20 -36
  53. package/package.json +4 -2
  54. package/password-input/PasswordInput.stories.tsx +3 -3
  55. package/progress-bar/ProgressBar.js +2 -2
  56. package/radio-group/Radio.d.ts +4 -0
  57. package/radio-group/Radio.js +140 -0
  58. package/radio-group/RadioGroup.d.ts +4 -0
  59. package/radio-group/RadioGroup.js +273 -0
  60. package/radio-group/RadioGroup.stories.tsx +79 -0
  61. package/radio-group/RadioGroup.test.js +248 -0
  62. package/radio-group/types.d.ts +36 -0
  63. package/radio-group/types.js +5 -0
  64. package/resultsetTable/ResultsetTable.js +5 -2
  65. package/resultsetTable/ResultsetTable.stories.tsx +7 -8
  66. package/row/Row.d.ts +3 -11
  67. package/row/Row.js +12 -9
  68. package/row/Row.stories.tsx +20 -6
  69. package/row/types.d.ts +10 -0
  70. package/row/types.js +5 -0
  71. package/select/Select.d.ts +4 -0
  72. package/select/Select.js +12 -6
  73. package/select/types.d.ts +170 -0
  74. package/select/types.js +5 -0
  75. package/sidenav/Sidenav.stories.tsx +18 -1
  76. package/spinner/Spinner.stories.jsx +1 -0
  77. package/stack/Stack.d.ts +3 -10
  78. package/stack/Stack.js +12 -9
  79. package/stack/Stack.stories.tsx +20 -6
  80. package/stack/types.d.ts +9 -0
  81. package/stack/types.js +5 -0
  82. package/switch/Switch.stories.tsx +1 -1
  83. package/table/Table.stories.jsx +2 -1
  84. package/tabs/Tabs.js +7 -7
  85. package/tabs/Tabs.stories.tsx +7 -8
  86. package/tabs/types.d.ts +23 -15
  87. package/tag/Tag.d.ts +1 -1
  88. package/tag/Tag.js +6 -11
  89. package/tag/Tag.stories.tsx +15 -22
  90. package/tag/types.d.ts +23 -14
  91. package/text/Text.js +1 -1
  92. package/text-input/TextInput.js +17 -7
  93. package/text-input/TextInput.stories.tsx +4 -4
  94. package/text-input/types.d.ts +1 -1
  95. package/textarea/Textarea.js +5 -3
  96. package/textarea/Textarea.stories.jsx +4 -3
  97. package/V3Select/V3Select.js +0 -455
  98. package/V3Select/index.d.ts +0 -27
  99. package/V3Textarea/V3Textarea.js +0 -260
  100. package/V3Textarea/index.d.ts +0 -27
  101. package/date/Date.js +0 -373
  102. package/date/index.d.ts +0 -27
  103. package/input-text/Icons.js +0 -22
  104. package/input-text/InputText.js +0 -611
  105. package/input-text/index.d.ts +0 -36
  106. package/select/index.d.ts +0 -131
  107. package/toggle/Toggle.js +0 -186
  108. package/toggle/index.d.ts +0 -21
  109. package/upload/Upload.js +0 -201
  110. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  111. package/upload/buttons-upload/Icons.js +0 -40
  112. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  113. package/upload/dragAndDropArea/Icons.js +0 -39
  114. package/upload/file-upload/FileToUpload.js +0 -115
  115. package/upload/file-upload/Icons.js +0 -66
  116. package/upload/files-upload/FilesToUpload.js +0 -109
  117. package/upload/index.d.ts +0 -15
  118. package/upload/transaction/Icons.js +0 -160
  119. package/upload/transaction/Transaction.js +0 -104
  120. package/upload/transactions/Transactions.js +0 -94
package/main.js CHANGED
@@ -43,6 +43,12 @@ Object.defineProperty(exports, "DxcBadge", {
43
43
  return _Badge["default"];
44
44
  }
45
45
  });
46
+ Object.defineProperty(exports, "DxcBleed", {
47
+ enumerable: true,
48
+ get: function get() {
49
+ return _Bleed["default"];
50
+ }
51
+ });
46
52
  Object.defineProperty(exports, "DxcBox", {
47
53
  enumerable: true,
48
54
  get: function get() {
@@ -73,12 +79,6 @@ Object.defineProperty(exports, "DxcChip", {
73
79
  return _Chip["default"];
74
80
  }
75
81
  });
76
- Object.defineProperty(exports, "DxcDate", {
77
- enumerable: true,
78
- get: function get() {
79
- return _Date["default"];
80
- }
81
- });
82
82
  Object.defineProperty(exports, "DxcDateInput", {
83
83
  enumerable: true,
84
84
  get: function get() {
@@ -121,10 +121,10 @@ Object.defineProperty(exports, "DxcHeading", {
121
121
  return _Heading["default"];
122
122
  }
123
123
  });
124
- Object.defineProperty(exports, "DxcInput", {
124
+ Object.defineProperty(exports, "DxcInset", {
125
125
  enumerable: true,
126
126
  get: function get() {
127
- return _InputText["default"];
127
+ return _Inset["default"];
128
128
  }
129
129
  });
130
130
  Object.defineProperty(exports, "DxcLink", {
@@ -169,6 +169,12 @@ Object.defineProperty(exports, "DxcRadio", {
169
169
  return _Radio["default"];
170
170
  }
171
171
  });
172
+ Object.defineProperty(exports, "DxcRadioGroup", {
173
+ enumerable: true,
174
+ get: function get() {
175
+ return _RadioGroup["default"];
176
+ }
177
+ });
172
178
  Object.defineProperty(exports, "DxcResultsetTable", {
173
179
  enumerable: true,
174
180
  get: function get() {
@@ -259,12 +265,6 @@ Object.defineProperty(exports, "DxcToggleGroup", {
259
265
  return _ToggleGroup["default"];
260
266
  }
261
267
  });
262
- Object.defineProperty(exports, "DxcUpload", {
263
- enumerable: true,
264
- get: function get() {
265
- return _Upload["default"];
266
- }
267
- });
268
268
  Object.defineProperty(exports, "DxcWizard", {
269
269
  enumerable: true,
270
270
  get: function get() {
@@ -283,18 +283,6 @@ Object.defineProperty(exports, "ThemeProvider", {
283
283
  return _ThemeContext.ThemeProvider;
284
284
  }
285
285
  });
286
- Object.defineProperty(exports, "V3DxcSelect", {
287
- enumerable: true,
288
- get: function get() {
289
- return _V3Select["default"];
290
- }
291
- });
292
- Object.defineProperty(exports, "V3DxcTextarea", {
293
- enumerable: true,
294
- get: function get() {
295
- return _V3Textarea["default"];
296
- }
297
- });
298
286
 
299
287
  var _Alert = _interopRequireDefault(require("./alert/Alert"));
300
288
 
@@ -306,8 +294,6 @@ var _Card = _interopRequireDefault(require("./card/Card"));
306
294
 
307
295
  var _Checkbox = _interopRequireDefault(require("./checkbox/Checkbox"));
308
296
 
309
- var _Date = _interopRequireDefault(require("./date/Date"));
310
-
311
297
  var _Dialog = _interopRequireDefault(require("./dialog/Dialog"));
312
298
 
313
299
  var _Dropdown = _interopRequireDefault(require("./dropdown/Dropdown"));
@@ -316,12 +302,8 @@ var _Footer = _interopRequireDefault(require("./footer/Footer"));
316
302
 
317
303
  var _Header = _interopRequireDefault(require("./header/Header"));
318
304
 
319
- var _InputText = _interopRequireDefault(require("./input-text/InputText"));
320
-
321
305
  var _Radio = _interopRequireDefault(require("./radio/Radio"));
322
306
 
323
- var _V3Select = _interopRequireDefault(require("./V3Select/V3Select"));
324
-
325
307
  var _Slider = _interopRequireDefault(require("./slider/Slider"));
326
308
 
327
309
  var _Switch = _interopRequireDefault(require("./switch/Switch"));
@@ -332,8 +314,6 @@ var _ProgressBar = _interopRequireDefault(require("./progress-bar/ProgressBar"))
332
314
 
333
315
  var _Spinner = _interopRequireDefault(require("./spinner/Spinner"));
334
316
 
335
- var _Upload = _interopRequireDefault(require("./upload/Upload"));
336
-
337
317
  var _Table = _interopRequireDefault(require("./table/Table"));
338
318
 
339
319
  var _Box = _interopRequireDefault(require("./box/Box"));
@@ -350,8 +330,6 @@ var _Link = _interopRequireDefault(require("./link/Link"));
350
330
 
351
331
  var _Heading = _interopRequireDefault(require("./heading/Heading"));
352
332
 
353
- var _V3Textarea = _interopRequireDefault(require("./V3Textarea/V3Textarea"));
354
-
355
333
  var _ResultsetTable = _interopRequireDefault(require("./resultsetTable/ResultsetTable"));
356
334
 
357
335
  var _Chip = _interopRequireDefault(require("./chip/Chip"));
@@ -386,6 +364,12 @@ var _Text = _interopRequireDefault(require("./text/Text"));
386
364
 
387
365
  var _List = _interopRequireDefault(require("./list/List"));
388
366
 
367
+ var _RadioGroup = _interopRequireDefault(require("./radio-group/RadioGroup"));
368
+
369
+ var _Bleed = _interopRequireDefault(require("./bleed/Bleed"));
370
+
371
+ var _Inset = _interopRequireDefault(require("./inset/Inset"));
372
+
389
373
  var _ThemeContext = _interopRequireWildcard(require("./ThemeContext"));
390
374
 
391
375
  var _BackgroundColorContext = require("./BackgroundColorContext");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxc-technology/halstack-react",
3
- "version": "0.0.0-4a5e7d8",
3
+ "version": "0.0.0-4b95ba0",
4
4
  "description": "DXC Halstack React components library",
5
5
  "repository": "dxc-technology/halstack-react",
6
6
  "homepage": "http://developer.dxc.com/tools/react",
@@ -24,6 +24,8 @@
24
24
  "@material-ui/lab": "4.0.0-alpha.17",
25
25
  "@material-ui/pickers": "3.2.2",
26
26
  "@material-ui/styles": "4.0.2",
27
+ "@types/styled-components": "^5.1.24",
28
+ "@types/uuid": "^8.3.4",
27
29
  "color": "^3.1.3",
28
30
  "date-fns": "^2.0.0-beta.4",
29
31
  "moment": "2.24.0",
@@ -52,8 +54,8 @@
52
54
  "@storybook/addon-essentials": "^6.4.9",
53
55
  "@storybook/addon-links": "^6.4.9",
54
56
  "@storybook/react": "^6.4.9",
55
- "@testing-library/react": "^11.2.5",
56
57
  "@storybook/testing-library": "0.0.7",
58
+ "@testing-library/react": "^11.2.5",
57
59
  "@testing-library/user-event": "^12.6.3",
58
60
  "babel-jest": "^24.8.0",
59
61
  "babel-loader": "^8.0.6",
@@ -53,7 +53,7 @@ export const Chromatic = () => (
53
53
  <Title title="Margins" theme="light" level={2} />
54
54
  <ExampleContainer>
55
55
  <Title title="Xxsmall margin" theme="light" level={4} />
56
- <DxcPasswordInput label="Xxsmmall" margin="xxsmall" />
56
+ <DxcPasswordInput label="Xxsmall" margin="xxsmall" />
57
57
  </ExampleContainer>
58
58
  <ExampleContainer>
59
59
  <Title title="Xsmall margin" theme="light" level={4} />
@@ -100,7 +100,7 @@ export const Chromatic = () => (
100
100
  );
101
101
 
102
102
  const Password = () => (
103
- <ExampleContainer>
103
+ <ExampleContainer expanded>
104
104
  <Title title="Show password" theme="light" level={4} />
105
105
  <DxcPasswordInput label="Password input" value="Password" />
106
106
  </ExampleContainer>
@@ -108,7 +108,7 @@ const Password = () => (
108
108
  const PasswordDark = () => (
109
109
  <BackgroundColorProvider color="#333333">
110
110
  <DarkContainer>
111
- <ExampleContainer>
111
+ <ExampleContainer expanded>
112
112
  <Title title="Show password" theme="dark" level={4} />
113
113
  <DxcPasswordInput label="Password input" value="Password" />
114
114
  </ExampleContainer>
@@ -59,9 +59,9 @@ var DxcProgressBar = function DxcProgressBar(_ref) {
59
59
  overlay: overlay,
60
60
  showValue: showValue,
61
61
  backgroundType: backgroundType
62
- }, value === null ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100, " %")), /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
62
+ }, value === null || value === undefined ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100, " %")), /*#__PURE__*/_react["default"].createElement(_LinearProgress["default"], {
63
63
  variant: showValue ? "determinate" : "indeterminate",
64
- value: value === null ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100
64
+ value: value === null || value === undefined ? 0 : value >= 0 && value <= 100 ? value : value < 0 ? 0 : 100
65
65
  }), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
66
66
  overlay: overlay,
67
67
  backgroundType: backgroundType
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RadioProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ option, currentValue, onClick, onFocus, error, disabled, focused, readonly, }: RadioProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
+
20
+ var _uuid = require("uuid");
21
+
22
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
23
+
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var DxcRadio = function DxcRadio(_ref) {
31
+ var option = _ref.option,
32
+ currentValue = _ref.currentValue,
33
+ _onClick = _ref.onClick,
34
+ onFocus = _ref.onFocus,
35
+ error = _ref.error,
36
+ disabled = _ref.disabled,
37
+ focused = _ref.focused,
38
+ readonly = _ref.readonly;
39
+
40
+ var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
41
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
42
+ radioLabelId = _useState2[0];
43
+
44
+ var ref = (0, _react.useRef)(null);
45
+ var colorsTheme = (0, _useTheme["default"])();
46
+ var checked = option.value === currentValue;
47
+
48
+ var _useState3 = (0, _react.useState)(true),
49
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
50
+ firstUpdate = _useState4[0],
51
+ setFirstUpdate = _useState4[1];
52
+
53
+ (0, _react.useLayoutEffect)(function () {
54
+ var _ref$current;
55
+
56
+ // Don't apply in the first render
57
+ if (firstUpdate) {
58
+ setFirstUpdate(false);
59
+ return;
60
+ }
61
+
62
+ focused && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
63
+ }, [focused]);
64
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
65
+ theme: colorsTheme.radioGroup
66
+ }, /*#__PURE__*/_react["default"].createElement(RadioMainContainer, null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
67
+ error: error,
68
+ disabled: disabled,
69
+ readonly: readonly,
70
+ onMouseDown: function onMouseDown(event) {
71
+ // Prevents div's onclick from stealing the radio button's focus
72
+ event.preventDefault();
73
+ },
74
+ onClick: function onClick() {
75
+ var _ref$current2;
76
+
77
+ ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus();
78
+
79
+ _onClick();
80
+ }
81
+ }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
82
+ error: error,
83
+ disabled: disabled,
84
+ readonly: readonly,
85
+ onFocus: onFocus,
86
+ role: "radio",
87
+ "aria-checked": checked,
88
+ "aria-disabled": option.disabled,
89
+ "aria-labelledby": radioLabelId,
90
+ tabIndex: disabled ? -1 : focused ? 0 : -1,
91
+ ref: ref
92
+ }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
93
+ disabled: disabled,
94
+ readonly: readonly,
95
+ error: error
96
+ }))), /*#__PURE__*/_react["default"].createElement(Label, {
97
+ id: radioLabelId,
98
+ disabled: disabled
99
+ }, option.label))));
100
+ };
101
+
102
+ var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
103
+
104
+ var RadioContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n \n ", "\n"])), function (props) {
105
+ return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
106
+ }, function (props) {
107
+ return !props.disabled && "\n &:hover {\n & > div > div { \n border-color: ".concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n }\n };\n }\n &:active {\n & > div > div {\n border-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n }\n }\n }\n ");
108
+ });
109
+
110
+ var RadioInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
111
+
112
+ var RadioInput = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid\n ", ";\n border-radius: 50%;\n box-shadow: 0 0 0 2px transparent;\n\n ", "\n"])), function (props) {
113
+ if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
114
+ }, function (props) {
115
+ return !props.disabled ? "&:focus {\n outline: 2px solid ".concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n &:focus-visible {\n outline: 2px solid ").concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n ") : "\n pointer-events: none;\n :focus-visible {\n outline: none;\n }\n ";
116
+ });
117
+
118
+ var Dot = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
119
+ if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
120
+ });
121
+
122
+ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
123
+ return props.theme.radioInputLabelMargin;
124
+ }, function (props) {
125
+ return props.theme.fontFamily;
126
+ }, function (props) {
127
+ return props.theme.radioInputLabelFontSize;
128
+ }, function (props) {
129
+ return props.theme.radioInputLabelFontStyle;
130
+ }, function (props) {
131
+ return props.theme.radioInputLabelFontWeight;
132
+ }, function (props) {
133
+ return props.theme.radioInputLabelLineHeight;
134
+ }, function (props) {
135
+ return props.disabled && "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;");
136
+ });
137
+
138
+ var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
139
+
140
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import RadioGroupPropsType from "./types";
3
+ declare const DxcRadioGroup: React.ForwardRefExoticComponent<RadioGroupPropsType & React.RefAttributes<HTMLDivElement>>;
4
+ export default DxcRadioGroup;
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
+
22
+ var _uuid = require("uuid");
23
+
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
25
+
26
+ var _Radio = _interopRequireDefault(require("./Radio"));
27
+
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
35
+ var initialSelectedOptionIndex = innerOptions.findIndex(function (option) {
36
+ return option.value === value;
37
+ });
38
+ return initialSelectedOptionIndex !== -1 ? initialSelectedOptionIndex : 0;
39
+ };
40
+
41
+ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
42
+ var label = _ref.label,
43
+ name = _ref.name,
44
+ helperText = _ref.helperText,
45
+ options = _ref.options,
46
+ _ref$disabled = _ref.disabled,
47
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
48
+ _ref$optional = _ref.optional,
49
+ optional = _ref$optional === void 0 ? false : _ref$optional,
50
+ _ref$optionalItemLabe = _ref.optionalItemLabel,
51
+ optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
52
+ _ref$readonly = _ref.readonly,
53
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
54
+ _ref$stacking = _ref.stacking,
55
+ stacking = _ref$stacking === void 0 ? "column" : _ref$stacking,
56
+ defaultValue = _ref.defaultValue,
57
+ value = _ref.value,
58
+ onChange = _ref.onChange,
59
+ onBlur = _ref.onBlur,
60
+ error = _ref.error;
61
+
62
+ var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
63
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
64
+ radioGroupId = _useState2[0];
65
+
66
+ var radioGroupLabelId = "label-".concat(radioGroupId);
67
+ var errorId = "error-".concat(radioGroupId);
68
+
69
+ var _useState3 = (0, _react.useState)(defaultValue),
70
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
71
+ innerValue = _useState4[0],
72
+ setInnerValue = _useState4[1];
73
+
74
+ var _useState5 = (0, _react.useState)(true),
75
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
76
+ firstTimeFocus = _useState6[0],
77
+ setFirstTimeFocus = _useState6[1];
78
+
79
+ var optionalItem = {
80
+ label: optionalItemLabel,
81
+ value: "",
82
+ disabled: disabled
83
+ };
84
+ var innerOptions = (0, _react.useMemo)(function () {
85
+ return optional ? [].concat((0, _toConsumableArray2["default"])(options), [optionalItem]) : options;
86
+ }, [optional, options]);
87
+
88
+ var _useState7 = (0, _react.useState)(getInitialFocusIndex(innerOptions, value !== null && value !== void 0 ? value : innerValue)),
89
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
90
+ currentFocusIndex = _useState8[0],
91
+ setCurrentFocusIndex = _useState8[1];
92
+
93
+ var colorsTheme = (0, _useTheme["default"])();
94
+ var handleOnChange = (0, _react.useCallback)(function (newValue) {
95
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
96
+
97
+ if (newValue !== currentValue && !readonly) {
98
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
99
+ onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
100
+ }
101
+ }, [value, innerValue, setInnerValue, onChange]);
102
+
103
+ var handleOnBlur = function handleOnBlur(e) {
104
+ // If the radio group loses the focus to an element not contained inside it...
105
+ !e.currentTarget.contains(e.relatedTarget) && setFirstTimeFocus(true);
106
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
107
+ !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
108
+ value: currentValue,
109
+ error: "This field is required. Please, choose an option."
110
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
111
+ value: currentValue
112
+ });
113
+ };
114
+
115
+ var setPreviousRadioChecked = function setPreviousRadioChecked() {
116
+ if (!disabled) {
117
+ setCurrentFocusIndex(function (currentFocusIndex) {
118
+ var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
119
+
120
+ while (innerOptions[index].disabled) {
121
+ index = index === 0 ? innerOptions.length - 1 : index - 1;
122
+ }
123
+
124
+ return index;
125
+ });
126
+ }
127
+ };
128
+
129
+ var setNextRadioChecked = function setNextRadioChecked() {
130
+ if (!disabled) {
131
+ setCurrentFocusIndex(function (currentFocusIndex) {
132
+ var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
133
+
134
+ while (innerOptions[index].disabled) {
135
+ index = index === innerOptions.length - 1 ? 0 : index + 1;
136
+ }
137
+
138
+ return index;
139
+ });
140
+ }
141
+ };
142
+
143
+ var handleOnKeyDown = function handleOnKeyDown(event) {
144
+ switch (event.keyCode) {
145
+ case 37: // arrow left
146
+
147
+ case 38:
148
+ // arrow up
149
+ event.preventDefault();
150
+ setPreviousRadioChecked();
151
+ break;
152
+
153
+ case 39: // arrow right
154
+
155
+ case 40:
156
+ // arrow down
157
+ event.preventDefault();
158
+ setNextRadioChecked();
159
+ break;
160
+
161
+ case 13: // enter
162
+
163
+ case 32:
164
+ // space
165
+ event.preventDefault();
166
+ handleOnChange(innerOptions[currentFocusIndex].value);
167
+ break;
168
+ }
169
+ };
170
+
171
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
172
+ theme: colorsTheme.radioGroup
173
+ }, /*#__PURE__*/_react["default"].createElement(RadioGroupContainer, {
174
+ ref: ref
175
+ }, label && /*#__PURE__*/_react["default"].createElement(Label, {
176
+ id: radioGroupLabelId,
177
+ helperText: helperText,
178
+ disabled: disabled
179
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
180
+ disabled: disabled
181
+ }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
182
+ onBlur: handleOnBlur,
183
+ onKeyDown: handleOnKeyDown,
184
+ stacking: stacking,
185
+ role: "radiogroup",
186
+ "aria-disabled": disabled,
187
+ "aria-labelledby": radioGroupLabelId,
188
+ "aria-invalid": error ? "true" : "false",
189
+ "aria-errormessage": error ? errorId : undefined,
190
+ "aria-required": !optional
191
+ }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
192
+ name: name,
193
+ value: value !== null && value !== void 0 ? value : innerValue,
194
+ readOnly: true,
195
+ "aria-hidden": "true"
196
+ }), innerOptions.map(function (option, index) {
197
+ return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
198
+ option: option,
199
+ currentValue: value !== null && value !== void 0 ? value : innerValue,
200
+ onClick: function onClick() {
201
+ handleOnChange(option.value);
202
+ setCurrentFocusIndex(index);
203
+ },
204
+ onFocus: function onFocus() {
205
+ !firstTimeFocus ? handleOnChange(option.value) : setFirstTimeFocus(false);
206
+ },
207
+ error: error,
208
+ disabled: option.disabled || disabled,
209
+ focused: currentFocusIndex === index,
210
+ readonly: readonly
211
+ });
212
+ })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
213
+ id: errorId,
214
+ "aria-live": error ? "assertive" : "off"
215
+ }, error)));
216
+ });
217
+
218
+ var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
219
+
220
+ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
221
+ return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
222
+ }, function (props) {
223
+ return props.theme.fontFamily;
224
+ }, function (props) {
225
+ return props.theme.labelFontSize;
226
+ }, function (props) {
227
+ return props.theme.labelFontStyle;
228
+ }, function (props) {
229
+ return props.theme.labelFontWeight;
230
+ }, function (props) {
231
+ return props.theme.labelLineHeight;
232
+ }, function (props) {
233
+ return !props.helperText && "margin-bottom: ".concat(props.theme.groupLabelMargin);
234
+ });
235
+
236
+ var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
237
+ return props.theme.optionalLabelFontWeight;
238
+ });
239
+
240
+ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: ", ";\n"])), function (props) {
241
+ return props.disabled ? props.theme.disabledHelperTextFontColor : props.theme.helperTextFontColor;
242
+ }, function (props) {
243
+ return props.theme.fontFamily;
244
+ }, function (props) {
245
+ return props.theme.helperTextFontSize;
246
+ }, function (props) {
247
+ return props.theme.helperTextFontStyle;
248
+ }, function (props) {
249
+ return props.theme.helperTextFontWeight;
250
+ }, function (props) {
251
+ return props.theme.helperTextLineHeight;
252
+ }, function (props) {
253
+ return props.theme.groupLabelMargin;
254
+ });
255
+
256
+ var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
257
+ return props.stacking;
258
+ }, function (props) {
259
+ return props.theme.groupVerticalGutter;
260
+ }, function (props) {
261
+ return props.theme.groupHorizontalGutter;
262
+ });
263
+
264
+ var ValueInput = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
265
+
266
+ var Error = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.5rem;\n"])), function (props) {
267
+ return props.theme.errorMessageColor;
268
+ }, function (props) {
269
+ return props.theme.fontFamily;
270
+ });
271
+
272
+ var _default = DxcRadioGroup;
273
+ exports["default"] = _default;