@dxc-technology/halstack-react 0.0.0-c1c5f49 → 0.0.0-c2834c3

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 (240) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +298 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +15 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.test.js +92 -0
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +1 -1
  19. package/badge/types.d.ts +4 -0
  20. package/badge/types.js +5 -0
  21. package/bleed/Bleed.d.ts +3 -0
  22. package/bleed/Bleed.js +84 -0
  23. package/bleed/Bleed.stories.tsx +342 -0
  24. package/bleed/types.d.ts +37 -0
  25. package/bleed/types.js +5 -0
  26. package/box/Box.js +2 -2
  27. package/box/Box.test.js +18 -0
  28. package/button/Button.d.ts +1 -1
  29. package/button/Button.js +21 -26
  30. package/button/Button.stories.tsx +6 -8
  31. package/button/Button.test.js +35 -0
  32. package/button/types.d.ts +3 -7
  33. package/card/Card.js +28 -29
  34. package/card/Card.stories.tsx +1 -1
  35. package/card/Card.test.js +50 -0
  36. package/checkbox/Checkbox.d.ts +1 -1
  37. package/checkbox/Checkbox.js +45 -41
  38. package/checkbox/Checkbox.stories.tsx +124 -128
  39. package/checkbox/Checkbox.test.js +78 -0
  40. package/checkbox/types.d.ts +8 -4
  41. package/chip/Chip.d.ts +4 -0
  42. package/chip/Chip.js +16 -76
  43. package/chip/Chip.stories.tsx +6 -8
  44. package/chip/Chip.test.js +56 -0
  45. package/chip/types.d.ts +45 -0
  46. package/chip/types.js +5 -0
  47. package/common/variables.js +233 -327
  48. package/date-input/DateInput.js +63 -52
  49. package/date-input/DateInput.stories.tsx +7 -7
  50. package/date-input/DateInput.test.js +479 -0
  51. package/date-input/types.d.ts +16 -9
  52. package/dialog/Dialog.js +8 -35
  53. package/dialog/Dialog.test.js +40 -0
  54. package/dropdown/Dropdown.d.ts +1 -1
  55. package/dropdown/Dropdown.js +22 -48
  56. package/dropdown/Dropdown.stories.tsx +249 -0
  57. package/dropdown/Dropdown.test.js +189 -0
  58. package/dropdown/types.d.ts +6 -15
  59. package/file-input/FileInput.d.ts +1 -1
  60. package/file-input/FileInput.js +153 -71
  61. package/file-input/FileInput.stories.tsx +507 -0
  62. package/file-input/FileInput.test.js +457 -0
  63. package/file-input/FileItem.js +10 -8
  64. package/file-input/types.d.ts +32 -7
  65. package/footer/Footer.d.ts +1 -1
  66. package/footer/Footer.js +32 -113
  67. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  68. package/footer/Footer.test.js +109 -0
  69. package/footer/Icons.d.ts +2 -0
  70. package/footer/Icons.js +3 -3
  71. package/footer/types.d.ts +21 -17
  72. package/header/Header.js +29 -50
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +79 -0
  75. package/header/Icons.d.ts +2 -0
  76. package/heading/Heading.js +1 -1
  77. package/heading/Heading.stories.tsx +3 -2
  78. package/heading/Heading.test.js +186 -0
  79. package/inset/Inset.d.ts +3 -0
  80. package/inset/Inset.js +84 -0
  81. package/inset/Inset.stories.tsx +229 -0
  82. package/inset/types.d.ts +37 -0
  83. package/inset/types.js +5 -0
  84. package/layout/ApplicationLayout.d.ts +10 -0
  85. package/layout/ApplicationLayout.js +14 -31
  86. package/layout/ApplicationLayout.stories.tsx +171 -0
  87. package/layout/types.d.ts +57 -0
  88. package/layout/types.js +5 -0
  89. package/link/Link.d.ts +3 -2
  90. package/link/Link.js +71 -70
  91. package/link/Link.stories.tsx +91 -51
  92. package/link/Link.test.js +83 -0
  93. package/link/types.d.ts +10 -29
  94. package/list/List.d.ts +4 -0
  95. package/list/List.js +47 -0
  96. package/list/List.stories.tsx +95 -0
  97. package/list/types.d.ts +7 -0
  98. package/list/types.js +5 -0
  99. package/main.d.ts +11 -8
  100. package/main.js +68 -38
  101. package/number-input/NumberInput.js +14 -24
  102. package/number-input/NumberInput.stories.tsx +5 -5
  103. package/number-input/NumberInput.test.js +506 -0
  104. package/number-input/types.d.ts +17 -10
  105. package/package.json +9 -6
  106. package/paginator/Paginator.js +19 -46
  107. package/paginator/Paginator.test.js +266 -0
  108. package/password-input/PasswordInput.js +19 -17
  109. package/password-input/PasswordInput.stories.tsx +3 -3
  110. package/password-input/PasswordInput.test.js +180 -0
  111. package/password-input/types.d.ts +14 -11
  112. package/progress-bar/ProgressBar.js +4 -4
  113. package/progress-bar/ProgressBar.test.js +65 -0
  114. package/quick-nav/QuickNav.d.ts +4 -0
  115. package/quick-nav/QuickNav.js +116 -0
  116. package/quick-nav/QuickNav.stories.tsx +237 -0
  117. package/quick-nav/types.d.ts +21 -0
  118. package/quick-nav/types.js +5 -0
  119. package/radio/Radio.js +12 -13
  120. package/radio/Radio.test.js +71 -0
  121. package/radio-group/Radio.d.ts +4 -0
  122. package/radio-group/Radio.js +141 -0
  123. package/radio-group/RadioGroup.d.ts +4 -0
  124. package/radio-group/RadioGroup.js +282 -0
  125. package/radio-group/RadioGroup.stories.tsx +100 -0
  126. package/radio-group/RadioGroup.test.js +695 -0
  127. package/radio-group/types.d.ts +114 -0
  128. package/radio-group/types.js +5 -0
  129. package/resultsetTable/ResultsetTable.js +6 -3
  130. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  131. package/resultsetTable/ResultsetTable.test.js +306 -0
  132. package/resultsetTable/types.d.ts +2 -2
  133. package/row/Row.d.ts +3 -0
  134. package/row/Row.js +127 -0
  135. package/row/Row.stories.tsx +237 -0
  136. package/row/types.d.ts +28 -0
  137. package/row/types.js +5 -0
  138. package/select/Icons.d.ts +10 -0
  139. package/select/Icons.js +93 -0
  140. package/select/Listbox.d.ts +4 -0
  141. package/select/Listbox.js +152 -0
  142. package/select/Option.d.ts +4 -0
  143. package/select/Option.js +110 -0
  144. package/select/Select.d.ts +4 -0
  145. package/select/Select.js +110 -321
  146. package/select/Select.stories.tsx +103 -81
  147. package/select/Select.test.js +2057 -0
  148. package/select/types.d.ts +213 -0
  149. package/select/types.js +5 -0
  150. package/sidenav/Sidenav.js +2 -2
  151. package/sidenav/Sidenav.stories.tsx +18 -1
  152. package/sidenav/Sidenav.test.js +56 -0
  153. package/slider/Slider.d.ts +1 -1
  154. package/slider/Slider.js +4 -3
  155. package/slider/Slider.stories.tsx +8 -8
  156. package/slider/Slider.test.js +150 -0
  157. package/slider/types.d.ts +4 -0
  158. package/spinner/Spinner.js +3 -3
  159. package/spinner/Spinner.stories.jsx +1 -0
  160. package/spinner/Spinner.test.js +64 -0
  161. package/stack/Stack.d.ts +3 -0
  162. package/stack/Stack.js +97 -0
  163. package/stack/Stack.stories.tsx +164 -0
  164. package/stack/types.d.ts +24 -0
  165. package/stack/types.js +5 -0
  166. package/switch/Switch.d.ts +1 -1
  167. package/switch/Switch.js +37 -21
  168. package/switch/Switch.stories.tsx +15 -15
  169. package/switch/Switch.test.js +98 -0
  170. package/switch/types.d.ts +6 -2
  171. package/table/Table.js +2 -2
  172. package/table/Table.stories.jsx +2 -1
  173. package/table/Table.test.js +26 -0
  174. package/tabs/Tabs.d.ts +1 -1
  175. package/tabs/Tabs.js +17 -19
  176. package/tabs/Tabs.stories.tsx +7 -16
  177. package/tabs/Tabs.test.js +140 -0
  178. package/tabs/types.d.ts +27 -15
  179. package/tag/Tag.d.ts +1 -1
  180. package/tag/Tag.js +18 -28
  181. package/tag/Tag.stories.tsx +26 -29
  182. package/tag/Tag.test.js +60 -0
  183. package/tag/types.d.ts +23 -14
  184. package/text/Text.d.ts +7 -0
  185. package/text/Text.js +30 -0
  186. package/text/Text.stories.tsx +19 -0
  187. package/text-input/Suggestion.d.ts +4 -0
  188. package/text-input/Suggestion.js +55 -0
  189. package/text-input/TextInput.js +82 -98
  190. package/text-input/TextInput.stories.tsx +34 -16
  191. package/text-input/TextInput.test.js +1712 -0
  192. package/text-input/types.d.ts +32 -13
  193. package/textarea/Textarea.d.ts +4 -0
  194. package/textarea/Textarea.js +34 -73
  195. package/textarea/Textarea.stories.jsx +37 -15
  196. package/textarea/Textarea.test.js +437 -0
  197. package/textarea/types.d.ts +137 -0
  198. package/textarea/types.js +5 -0
  199. package/toggle-group/ToggleGroup.d.ts +1 -1
  200. package/toggle-group/ToggleGroup.js +15 -17
  201. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  202. package/toggle-group/ToggleGroup.test.js +156 -0
  203. package/toggle-group/types.d.ts +47 -26
  204. package/useTheme.d.ts +2 -0
  205. package/useTheme.js +2 -2
  206. package/useTranslatedLabels.d.ts +2 -0
  207. package/useTranslatedLabels.js +20 -0
  208. package/wizard/Wizard.d.ts +1 -1
  209. package/wizard/Wizard.js +107 -46
  210. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  211. package/wizard/Wizard.test.js +141 -0
  212. package/wizard/types.d.ts +9 -9
  213. package/ThemeContext.js +0 -246
  214. package/V3Select/V3Select.js +0 -455
  215. package/V3Select/index.d.ts +0 -27
  216. package/V3Textarea/V3Textarea.js +0 -260
  217. package/V3Textarea/index.d.ts +0 -27
  218. package/chip/index.d.ts +0 -22
  219. package/date/Date.js +0 -373
  220. package/date/index.d.ts +0 -27
  221. package/input-text/Icons.js +0 -22
  222. package/input-text/InputText.js +0 -611
  223. package/input-text/index.d.ts +0 -36
  224. package/select/index.d.ts +0 -131
  225. package/textarea/index.d.ts +0 -127
  226. package/toggle/Toggle.js +0 -186
  227. package/toggle/index.d.ts +0 -21
  228. package/upload/Upload.js +0 -201
  229. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  230. package/upload/buttons-upload/Icons.js +0 -40
  231. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  232. package/upload/dragAndDropArea/Icons.js +0 -39
  233. package/upload/file-upload/FileToUpload.js +0 -115
  234. package/upload/file-upload/Icons.js +0 -66
  235. package/upload/files-upload/FilesToUpload.js +0 -109
  236. package/upload/index.d.ts +0 -15
  237. package/upload/transaction/Icons.js +0 -160
  238. package/upload/transaction/Transaction.js +0 -104
  239. package/upload/transactions/Transactions.js +0 -94
  240. package/wizard/Icons.js +0 -65
@@ -6,12 +6,12 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement> | React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
9
+ declare type SVG = React.SVGProps<SVGSVGElement>;
10
10
  declare type Action = {
11
11
  /**
12
12
  * This function will be called when the user clicks the action.
13
13
  */
14
- onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
14
+ onClick: () => void;
15
15
  /**
16
16
  * Icon to be shown in the action.
17
17
  */
@@ -30,6 +30,10 @@ declare type Props = {
30
30
  * Name attribute of the input element.
31
31
  */
32
32
  name?: string;
33
+ /**
34
+ * Initial value of the input, only when it is uncontrolled.
35
+ */
36
+ defaultValue?: string;
33
37
  /**
34
38
  * Value of the input. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
35
39
  */
@@ -74,26 +78,29 @@ declare type Props = {
74
78
  * This function will be called when the user types within the input
75
79
  * element of the component. An object including the current value and
76
80
  * the error (if the value entered is not valid) will be passed to this
77
- * function. If there is no error, error will be null.
81
+ * function. If there is no error, error will not be defined.
78
82
  */
79
83
  onChange?: (val: {
80
84
  value: string;
81
- error: string | null;
85
+ error?: string;
82
86
  }) => void;
83
87
  /**
84
88
  * This function will be called when the input element loses the focus.
85
89
  * An object including the input value and the error (if the value
86
90
  * entered is not valid) will be passed to this function. If there is no error,
87
- * error will be null.
91
+ * error will not be defined.
88
92
  */
89
93
  onBlur?: (val: {
90
94
  value: string;
91
- error: string | null;
95
+ error?: string;
92
96
  }) => void;
93
97
  /**
94
- * If it is defined, the component will change its appearance, showing
95
- * the error below the input component. If it is not defined, the error
96
- * messages will be managed internally, but never displayed on its own.
98
+ * If it is a defined value and also a truthy string, the component will
99
+ * change its appearance, showing the error below the input component. If
100
+ * the defined value is an empty string, it will reserve a space below
101
+ * the component for a future error, but it would not change its look. In
102
+ * case of being undefined or null, both the appearance and the space for
103
+ * the error message would not be modified.
97
104
  */
98
105
  error?: string;
99
106
  /**
@@ -110,7 +117,7 @@ declare type Props = {
110
117
  * pattern, the onBlur and onChange functions will be called with the
111
118
  * current value and an internal error informing that this value does not
112
119
  * match the pattern. If the pattern is met, the error parameter of both
113
- * events will be null.
120
+ * events will not be defined.
114
121
  */
115
122
  pattern?: string;
116
123
  /**
@@ -120,7 +127,7 @@ declare type Props = {
120
127
  * comply the minimum length, the onBlur and onChange functions will be called
121
128
  * with the current value and an internal error informing that the value
122
129
  * length does not comply the specified range. If a valid length is
123
- * reached, the error parameter of both events will be null.
130
+ * reached, the error parameter of both events will not be defined.
124
131
  */
125
132
  minLength?: number;
126
133
  /**
@@ -130,7 +137,7 @@ declare type Props = {
130
137
  * comply the maximum length, the onBlur and onChange functions will be called
131
138
  * with the current value and an internal error informing that the value
132
139
  * length does not comply the specified range. If a valid length is
133
- * reached, the error parameter of both events will be null.
140
+ * reached, the error parameter of both events will not be defined.
134
141
  */
135
142
  maxLength?: number;
136
143
  /**
@@ -144,7 +151,7 @@ declare type Props = {
144
151
  */
145
152
  margin?: Space | Margin;
146
153
  /**
147
- * Size of the component ('small' | 'medium' | 'large' | 'fillParent').
154
+ * Size of the component.
148
155
  */
149
156
  size?: "small" | "medium" | "large" | "fillParent";
150
157
  /**
@@ -156,4 +163,16 @@ declare type Props = {
156
163
  * Reference to the component.
157
164
  */
158
165
  export declare type RefType = HTMLDivElement;
166
+ /**
167
+ * Single suggestion of the Autosuggest Text Input component.
168
+ */
169
+ export declare type SuggestionProps = {
170
+ id: string;
171
+ value: string;
172
+ onClick: () => void;
173
+ suggestion: string;
174
+ isLast: boolean;
175
+ visuallyFocused: boolean;
176
+ highlighted: boolean;
177
+ };
159
178
  export default Props;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import TextareaPropsType from "./types";
3
+ declare const DxcTextarea: React.ForwardRefExoticComponent<TextareaPropsType & React.RefAttributes<HTMLDivElement>>;
4
+ export default DxcTextarea;
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
16
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
@@ -23,15 +21,15 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
21
 
24
22
  var _utils = require("../common/utils.js");
25
23
 
26
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
27
25
 
28
- var _propTypes = _interopRequireDefault(require("prop-types"));
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
29
27
 
30
28
  var _variables = require("../common/variables.js");
31
29
 
32
30
  var _uuid = require("uuid");
33
31
 
34
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext.js"));
32
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
35
33
 
36
34
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
37
35
 
@@ -39,26 +37,18 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
39
37
 
40
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; }
41
39
 
42
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
43
- return "This field is required. Please, enter a value.";
44
- };
45
-
46
- var getPatternErrorMessage = function getPatternErrorMessage() {
47
- return "Please match the format requested.";
48
- };
49
-
50
40
  var patternMatch = function patternMatch(pattern, value) {
51
41
  return new RegExp(pattern).test(value);
52
42
  };
53
43
 
54
44
  var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
55
- var _ref$label = _ref.label,
56
- label = _ref$label === void 0 ? "" : _ref$label,
45
+ var label = _ref.label,
57
46
  _ref$name = _ref.name,
58
47
  name = _ref$name === void 0 ? "" : _ref$name,
48
+ _ref$defaultValue = _ref.defaultValue,
49
+ defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
59
50
  value = _ref.value,
60
- _ref$helperText = _ref.helperText,
61
- helperText = _ref$helperText === void 0 ? "" : _ref$helperText,
51
+ helperText = _ref.helperText,
62
52
  _ref$placeholder = _ref.placeholder,
63
53
  placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
64
54
  _ref$disabled = _ref.disabled,
@@ -71,8 +61,7 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
71
61
  rows = _ref$rows === void 0 ? 4 : _ref$rows,
72
62
  onChange = _ref.onChange,
73
63
  onBlur = _ref.onBlur,
74
- _ref$error = _ref.error,
75
- error = _ref$error === void 0 ? "" : _ref$error,
64
+ error = _ref.error,
76
65
  pattern = _ref.pattern,
77
66
  minLength = _ref.minLength,
78
67
  maxLength = _ref.maxLength,
@@ -84,7 +73,7 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
84
73
  _ref$tabIndex = _ref.tabIndex,
85
74
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
86
75
 
87
- var _useState = (0, _react.useState)(""),
76
+ var _useState = (0, _react.useState)(defaultValue),
88
77
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
89
78
  innerValue = _useState2[0],
90
79
  setInnerValue = _useState2[1];
@@ -95,12 +84,9 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
95
84
 
96
85
  var colorsTheme = (0, _useTheme["default"])();
97
86
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
87
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
98
88
  var textareaRef = (0, _react.useRef)(null);
99
- var errorId = "error-message-".concat(textareaId);
100
-
101
- var getLengthErrorMessage = function getLengthErrorMessage() {
102
- return "Min length ".concat(minLength, ", max length ").concat(maxLength, ".");
103
- };
89
+ var errorId = "error-".concat(textareaId);
104
90
 
105
91
  var isNotOptional = function isNotOptional(value) {
106
92
  return value === "" && !optional;
@@ -114,32 +100,30 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
114
100
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
115
101
  if (isNotOptional(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
116
102
  value: newValue,
117
- error: getNotOptionalErrorMessage()
103
+ error: translatedLabels.formFields.requiredValueErrorMessage
118
104
  });else if (isLengthIncorrect(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
119
105
  value: newValue,
120
- error: getLengthErrorMessage()
106
+ error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
121
107
  });else if (newValue && pattern && !patternMatch(pattern, newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
122
108
  value: newValue,
123
- error: getPatternErrorMessage()
109
+ error: translatedLabels.formFields.formatRequestedErrorMessage
124
110
  });else onChange === null || onChange === void 0 ? void 0 : onChange({
125
- value: newValue,
126
- error: null
111
+ value: newValue
127
112
  });
128
113
  };
129
114
 
130
115
  var handleTOnBlur = function handleTOnBlur(event) {
131
116
  if (isNotOptional(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
132
117
  value: event.target.value,
133
- error: getNotOptionalErrorMessage()
118
+ error: translatedLabels.formFields.requiredValueErrorMessage
134
119
  });else if (isLengthIncorrect(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
135
120
  value: event.target.value,
136
- error: getLengthErrorMessage()
121
+ error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
137
122
  });else if (event.target.value && pattern && !patternMatch(pattern, event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
138
123
  value: event.target.value,
139
- error: getPatternErrorMessage()
124
+ error: translatedLabels.formFields.formatRequestedErrorMessage
140
125
  });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
141
- value: event.target.value,
142
- error: null
126
+ value: event.target.value
143
127
  });
144
128
  };
145
129
 
@@ -162,11 +146,12 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
162
146
  margin: margin,
163
147
  size: size,
164
148
  ref: ref
165
- }, /*#__PURE__*/_react["default"].createElement(Label, {
149
+ }, label && /*#__PURE__*/_react["default"].createElement(Label, {
166
150
  htmlFor: textareaId,
167
151
  disabled: disabled,
168
- backgroundType: backgroundType
169
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), /*#__PURE__*/_react["default"].createElement(HelperText, {
152
+ backgroundType: backgroundType,
153
+ helperText: helperText
154
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
170
155
  disabled: disabled,
171
156
  backgroundType: backgroundType
172
157
  }, helperText), /*#__PURE__*/_react["default"].createElement(Textarea, {
@@ -186,12 +171,14 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
186
171
  backgroundType: backgroundType,
187
172
  ref: textareaRef,
188
173
  tabIndex: tabIndex,
174
+ "aria-disabled": disabled,
189
175
  "aria-invalid": error ? "true" : "false",
190
- "aria-describedby": error ? errorId : undefined,
176
+ "aria-errormessage": error ? errorId : undefined,
191
177
  "aria-required": optional ? "false" : "true"
192
- }), !disabled && /*#__PURE__*/_react["default"].createElement(Error, {
178
+ }), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
193
179
  id: errorId,
194
- backgroundType: backgroundType
180
+ backgroundType: backgroundType,
181
+ "aria-live": error ? "assertive" : "off"
195
182
  }, error)));
196
183
  });
197
184
 
@@ -220,7 +207,7 @@ var TextareaContainer = _styledComponents["default"].div(_templateObject || (_te
220
207
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
221
208
  });
222
209
 
223
- var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
210
+ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
224
211
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
225
212
  }, function (props) {
226
213
  return props.theme.fontFamily;
@@ -232,13 +219,15 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
232
219
  return props.theme.labelFontWeight;
233
220
  }, function (props) {
234
221
  return props.theme.labelLineHeight;
222
+ }, function (props) {
223
+ return !props.helperText && "margin-bottom: 0.25rem";
235
224
  });
236
225
 
237
226
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
238
227
  return props.theme.optionalLabelFontWeight;
239
228
  });
240
229
 
241
- var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
230
+ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: 0.25rem;\n"])), function (props) {
242
231
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
243
232
  }, function (props) {
244
233
  return props.theme.fontFamily;
@@ -252,12 +241,10 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
252
241
  return props.theme.helperTextLineHeight;
253
242
  });
254
243
 
255
- var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n ", "\n\n margin: ", ";\n padding: 0.5rem 1rem;\n box-shadow: 0 0 0 2px transparent;\n border-radius: 0.25rem;\n border: 1px solid\n ", ";\n ", "\n\n ", ";\n ", ";\n\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n\n ::placeholder {\n color: ", ";\n }\n"])), function (props) {
244
+ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n ", "\n\n padding: 0.5rem 1rem;\n box-shadow: 0 0 0 2px transparent;\n border-radius: 0.25rem;\n border: 1px solid\n ", ";\n ", "\n\n ", ";\n ", ";\n\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n\n ::placeholder {\n color: ", ";\n }\n"])), function (props) {
256
245
  if (props.verticalGrow === "none") return "resize: none;";else if (props.verticalGrow === "auto") return "resize: none; overflow: hidden;";else if (props.verticalGrow === "manual") return "resize: vertical;";else return "resize: none;";
257
246
  }, function (props) {
258
247
  if (props.disabled) return props.backgroundType === "dark" ? "background-color: ".concat(props.theme.disabledContainerFillColorOnDark, ";") : "background-color: ".concat(props.theme.disabledContainerFillColor, ";");else return "background-color: transparent;";
259
- }, function (props) {
260
- return "".concat(props.theme.inputMarginTop, " 0 ").concat(props.theme.inputMarginBottom, " 0");
261
248
  }, function (props) {
262
249
  if (props.disabled) return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;else return props.backgroundType === "dark" ? props.theme.enabledBorderColorOnDark : props.theme.enabledBorderColor;
263
250
  }, function (props) {
@@ -280,37 +267,11 @@ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templ
280
267
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledPlaceholderFontColorOnDark : props.theme.disabledPlaceholderFontColor : props.backgroundType === "dark" ? props.theme.placeholderFontColorOnDark : props.theme.placeholderFontColor;
281
268
  });
282
269
 
283
- var Error = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n min-height: 1.5em;\n line-height: 1.5em;\n"])), function (props) {
270
+ var Error = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n min-height: 1.5em;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
284
271
  return props.backgroundType === "dark" ? props.theme.errorMessageColorOnDark : props.theme.errorMessageColor;
285
272
  }, function (props) {
286
273
  return props.theme.fontFamily;
287
274
  });
288
275
 
289
- DxcTextarea.propTypes = {
290
- label: _propTypes["default"].string,
291
- name: _propTypes["default"].string,
292
- value: _propTypes["default"].string,
293
- helperText: _propTypes["default"].string,
294
- placeholder: _propTypes["default"].string,
295
- verticalGrow: _propTypes["default"].oneOf(["auto", "none", "manual"]),
296
- rows: _propTypes["default"].number,
297
- minLength: _propTypes["default"].number,
298
- maxLength: _propTypes["default"].number,
299
- pattern: _propTypes["default"].string,
300
- disabled: _propTypes["default"].bool,
301
- optional: _propTypes["default"].bool,
302
- onChange: _propTypes["default"].func,
303
- onBlur: _propTypes["default"].func,
304
- error: _propTypes["default"].string,
305
- autocomplete: _propTypes["default"].string,
306
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
307
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
308
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
309
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
310
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
311
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
312
- size: _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(sizes))),
313
- tabIndex: _propTypes["default"].number
314
- };
315
276
  var _default = DxcTextarea;
316
277
  exports["default"] = _default;
@@ -33,7 +33,7 @@ export const Chromatic = () => (
33
33
  </ExampleContainer>
34
34
  <ExampleContainer>
35
35
  <Title title="Disabled with value" theme="light" level={4} />
36
- <DxcTextarea label="Disabled" value="Example text" disabled />
36
+ <DxcTextarea label="Disabled" defaultValue="Example text" disabled />
37
37
  </ExampleContainer>
38
38
  <ExampleContainer>
39
39
  <Title title="With error" theme="light" level={4} />
@@ -41,12 +41,21 @@ export const Chromatic = () => (
41
41
  label="Textarea with error"
42
42
  helperText="Helper text"
43
43
  placeholder="Enter your text here..."
44
- error="Error message"
44
+ error="Error message."
45
+ />
46
+ </ExampleContainer>
47
+ <ExampleContainer pseudoState="pseudo-hover">
48
+ <Title title="Hovered with error" theme="light" level={4} />
49
+ <DxcTextarea
50
+ label="Hovered textarea with error"
51
+ helperText="Helper text"
52
+ placeholder="Enter your text here..."
53
+ error="Error message."
45
54
  />
46
55
  </ExampleContainer>
47
56
  <ExampleContainer>
48
57
  <Title title="Helper text and optional with value" theme="light" level={4} />
49
- <DxcTextarea label="Helper & optional" value="Some text" helperText="Sample text" optional />
58
+ <DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
50
59
  </ExampleContainer>
51
60
  <ExampleContainer>
52
61
  <Title title="Resizable" theme="light" level={4} />
@@ -57,36 +66,48 @@ export const Chromatic = () => (
57
66
  <DxcTextarea
58
67
  label="Manual vertical grow"
59
68
  verticalGrow="manual"
60
- value="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
69
+ defaultValue="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
61
70
  />
62
71
  </ExampleContainer>
63
72
  </>
64
73
  <BackgroundColorProvider color="#333333">
65
74
  <DarkContainer>
66
- <>
75
+ <ExampleContainer>
67
76
  <Title title="Helper text and optional with value" theme="dark" level={4} />
68
- <DxcTextarea label="Helper & optional" value="Some text" margin="medium" helperText="Sample text" optional />
69
-
77
+ <DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
78
+ </ExampleContainer>
79
+ <ExampleContainer>
70
80
  <Title title="Disabled" theme="dark" level={4} />
71
81
  <DxcTextarea
72
82
  label="Disabled"
73
- margin="medium"
74
83
  optional
75
84
  helperText="Sample text"
76
85
  placeholder="Enter your text here..."
77
86
  disabled
78
87
  />
88
+ </ExampleContainer>
89
+ <ExampleContainer>
79
90
  <Title title="Disabled with value" theme="dark" level={4} />
80
- <DxcTextarea label="Disabled" margin="medium" value="Example text" disabled />
91
+ <DxcTextarea label="Disabled" defaultValue="Example text" disabled />
92
+ </ExampleContainer>
93
+ <ExampleContainer>
81
94
  <Title title="With error" theme="dark" level={4} />
82
95
  <DxcTextarea
83
96
  label="Textarea with error"
84
- margin="medium"
85
97
  helperText="Helper text"
86
98
  placeholder="Enter your text here..."
87
- error="Error message"
99
+ error="Error message."
100
+ />
101
+ </ExampleContainer>
102
+ <ExampleContainer pseudoState="pseudo-hover">
103
+ <Title title="Hovered with error" theme="dark" level={4} />
104
+ <DxcTextarea
105
+ label="Hovered textarea with error"
106
+ helperText="Helper text"
107
+ placeholder="Enter your text here..."
108
+ error="Error message."
88
109
  />
89
- </>
110
+ </ExampleContainer>
90
111
  </DarkContainer>
91
112
  </BackgroundColorProvider>
92
113
  <Title title="Sizes" theme="light" level={2} />
@@ -105,15 +126,15 @@ export const Chromatic = () => (
105
126
  <Title title="Margins" theme="light" level={2} />
106
127
  <ExampleContainer>
107
128
  <Title title="Xxsmall margin" theme="light" level={4} />
108
- <DxcTextarea label="Xxsmmall" margin="xxsmall" />
129
+ <DxcTextarea label="Xxsmall" margin="xxsmall" />
109
130
  </ExampleContainer>
110
131
  <ExampleContainer>
111
132
  <Title title="Xsmall margin" theme="light" level={4} />
112
- <DxcTextarea label="xsmmall" margin="xsmall" />
133
+ <DxcTextarea label="xsmall" margin="xsmall" />
113
134
  </ExampleContainer>
114
135
  <ExampleContainer>
115
136
  <Title title="Small margin" theme="light" level={4} />
116
- <DxcTextarea label="smmall" margin="small" />
137
+ <DxcTextarea label="small" margin="small" />
117
138
  </ExampleContainer>
118
139
  <ExampleContainer>
119
140
  <Title title="Medium margin" theme="light" level={4} />
@@ -130,6 +151,7 @@ export const Chromatic = () => (
130
151
  <ExampleContainer>
131
152
  <Title title="Xxlarge margin" theme="light" level={4} />
132
153
  <DxcTextarea label="Xxlarge" margin="xxlarge" />
154
+ <hr />
133
155
  </ExampleContainer>
134
156
  </>
135
157
  );