@dxc-technology/halstack-react 0.0.0-da4b2be → 0.0.0-da9270d

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 (236) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +4 -21
  3. package/HalstackContext.d.ts +23 -124
  4. package/HalstackContext.js +10 -35
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +24 -76
  8. package/accordion/Accordion.stories.tsx +1 -113
  9. package/accordion/Accordion.test.js +18 -33
  10. package/accordion/types.d.ts +5 -17
  11. package/accordion-group/AccordionGroup.js +15 -42
  12. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  13. package/accordion-group/AccordionGroup.test.js +43 -71
  14. package/accordion-group/AccordionGroupAccordion.js +9 -21
  15. package/accordion-group/types.d.ts +6 -18
  16. package/alert/Alert.js +15 -50
  17. package/alert/Alert.test.js +28 -45
  18. package/alert/types.d.ts +5 -5
  19. package/badge/Badge.js +4 -17
  20. package/badge/types.d.ts +1 -1
  21. package/bleed/Bleed.js +13 -21
  22. package/bleed/types.d.ts +2 -2
  23. package/box/Box.js +11 -33
  24. package/box/Box.test.js +1 -6
  25. package/box/types.d.ts +3 -3
  26. package/bulleted-list/BulletedList.js +18 -54
  27. package/bulleted-list/BulletedList.stories.tsx +1 -92
  28. package/bulleted-list/types.d.ts +5 -5
  29. package/button/Button.d.ts +1 -1
  30. package/button/Button.js +66 -99
  31. package/button/Button.stories.tsx +6 -87
  32. package/button/Button.test.js +17 -16
  33. package/button/types.d.ts +8 -4
  34. package/card/Card.d.ts +1 -1
  35. package/card/Card.js +39 -79
  36. package/card/Card.stories.tsx +0 -29
  37. package/card/Card.test.js +10 -21
  38. package/card/types.d.ts +6 -12
  39. package/checkbox/Checkbox.js +85 -120
  40. package/checkbox/Checkbox.stories.tsx +16 -54
  41. package/checkbox/Checkbox.test.js +107 -63
  42. package/checkbox/types.d.ts +8 -4
  43. package/chip/Chip.js +12 -31
  44. package/chip/Chip.stories.tsx +1 -1
  45. package/chip/Chip.test.js +15 -28
  46. package/chip/types.d.ts +4 -4
  47. package/common/coreTokens.d.ts +105 -14
  48. package/common/coreTokens.js +41 -24
  49. package/common/utils.js +2 -8
  50. package/common/variables.d.ts +23 -124
  51. package/common/variables.js +27 -135
  52. package/container/Container.d.ts +4 -0
  53. package/container/Container.js +194 -0
  54. package/container/Container.stories.tsx +214 -0
  55. package/container/types.d.ts +74 -0
  56. package/date-input/Calendar.js +15 -59
  57. package/date-input/DateInput.js +50 -96
  58. package/date-input/DateInput.stories.tsx +11 -30
  59. package/date-input/DateInput.test.js +674 -701
  60. package/date-input/DatePicker.js +11 -42
  61. package/date-input/Icons.d.ts +6 -6
  62. package/date-input/Icons.js +6 -23
  63. package/date-input/YearPicker.js +8 -34
  64. package/date-input/types.d.ts +27 -21
  65. package/dialog/Dialog.js +13 -40
  66. package/dialog/Dialog.stories.tsx +170 -0
  67. package/dialog/Dialog.test.js +125 -187
  68. package/dialog/types.d.ts +18 -13
  69. package/dropdown/Dropdown.js +39 -93
  70. package/dropdown/Dropdown.test.js +391 -378
  71. package/dropdown/DropdownMenu.js +8 -19
  72. package/dropdown/DropdownMenuItem.js +5 -17
  73. package/dropdown/types.d.ts +17 -19
  74. package/file-input/FileInput.js +180 -248
  75. package/file-input/FileInput.stories.tsx +1 -1
  76. package/file-input/FileInput.test.js +356 -354
  77. package/file-input/FileItem.js +14 -41
  78. package/file-input/types.d.ts +10 -10
  79. package/flex/Flex.js +25 -39
  80. package/flex/types.d.ts +6 -6
  81. package/footer/Footer.d.ts +1 -1
  82. package/footer/Footer.js +54 -112
  83. package/footer/Footer.stories.tsx +19 -95
  84. package/footer/Footer.test.js +21 -33
  85. package/footer/Icons.d.ts +2 -2
  86. package/footer/Icons.js +2 -7
  87. package/footer/types.d.ts +21 -29
  88. package/grid/Grid.d.ts +1 -1
  89. package/grid/Grid.js +2 -17
  90. package/grid/Grid.stories.tsx +38 -38
  91. package/grid/types.d.ts +10 -10
  92. package/header/Header.d.ts +2 -2
  93. package/header/Header.js +31 -114
  94. package/header/Header.stories.tsx +7 -71
  95. package/header/Header.test.js +12 -25
  96. package/header/Icons.d.ts +2 -2
  97. package/header/Icons.js +2 -7
  98. package/header/types.d.ts +5 -20
  99. package/heading/Heading.js +9 -31
  100. package/heading/Heading.test.js +70 -87
  101. package/heading/types.d.ts +7 -7
  102. package/image/Image.d.ts +4 -0
  103. package/image/Image.js +70 -0
  104. package/image/Image.stories.tsx +127 -0
  105. package/image/types.d.ts +72 -0
  106. package/inset/Inset.js +13 -21
  107. package/inset/types.d.ts +2 -2
  108. package/layout/ApplicationLayout.d.ts +3 -3
  109. package/layout/ApplicationLayout.js +28 -65
  110. package/layout/ApplicationLayout.stories.tsx +1 -1
  111. package/layout/Icons.d.ts +8 -5
  112. package/layout/Icons.js +51 -59
  113. package/layout/SidenavContext.d.ts +1 -1
  114. package/layout/SidenavContext.js +3 -9
  115. package/layout/types.d.ts +3 -3
  116. package/link/Link.js +21 -42
  117. package/link/Link.test.js +23 -41
  118. package/link/types.d.ts +14 -14
  119. package/main.d.ts +4 -3
  120. package/main.js +17 -58
  121. package/nav-tabs/NavTabs.js +11 -43
  122. package/nav-tabs/NavTabs.stories.tsx +1 -1
  123. package/nav-tabs/NavTabs.test.js +36 -43
  124. package/nav-tabs/Tab.js +16 -45
  125. package/nav-tabs/types.d.ts +9 -9
  126. package/number-input/NumberInput.d.ts +7 -0
  127. package/number-input/NumberInput.js +26 -35
  128. package/number-input/NumberInput.stories.tsx +42 -26
  129. package/number-input/NumberInput.test.js +700 -412
  130. package/number-input/types.d.ts +11 -5
  131. package/package.json +30 -28
  132. package/paginator/Icons.d.ts +5 -5
  133. package/paginator/Icons.js +5 -19
  134. package/paginator/Paginator.js +15 -43
  135. package/paginator/Paginator.test.js +224 -207
  136. package/paginator/types.d.ts +3 -3
  137. package/paragraph/Paragraph.js +3 -19
  138. package/paragraph/Paragraph.stories.tsx +0 -17
  139. package/password-input/Icons.d.ts +6 -0
  140. package/password-input/Icons.js +35 -0
  141. package/password-input/PasswordInput.js +57 -126
  142. package/password-input/PasswordInput.stories.tsx +1 -33
  143. package/password-input/PasswordInput.test.js +157 -140
  144. package/password-input/types.d.ts +8 -7
  145. package/progress-bar/ProgressBar.js +21 -53
  146. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
  147. package/progress-bar/ProgressBar.test.js +35 -52
  148. package/progress-bar/types.d.ts +3 -3
  149. package/quick-nav/QuickNav.js +4 -27
  150. package/quick-nav/QuickNav.stories.tsx +1 -1
  151. package/quick-nav/types.d.ts +10 -10
  152. package/radio-group/Radio.d.ts +1 -1
  153. package/radio-group/Radio.js +22 -54
  154. package/radio-group/RadioGroup.js +37 -83
  155. package/radio-group/RadioGroup.stories.tsx +10 -10
  156. package/radio-group/RadioGroup.test.js +504 -470
  157. package/radio-group/types.d.ts +8 -8
  158. package/resultset-table/Icons.d.ts +7 -0
  159. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  160. package/{resultsetTable → resultset-table}/ResultsetTable.js +23 -59
  161. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +72 -92
  162. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  163. package/resultset-table/types.js +5 -0
  164. package/select/Icons.d.ts +7 -7
  165. package/select/Icons.js +1 -5
  166. package/select/Listbox.js +13 -39
  167. package/select/Option.js +9 -26
  168. package/select/Select.js +70 -155
  169. package/select/Select.stories.tsx +3 -3
  170. package/select/Select.test.js +1946 -1804
  171. package/select/types.d.ts +14 -15
  172. package/sidenav/Icons.d.ts +4 -4
  173. package/sidenav/Icons.js +1 -5
  174. package/sidenav/Sidenav.js +26 -68
  175. package/sidenav/Sidenav.test.js +3 -10
  176. package/sidenav/types.d.ts +18 -18
  177. package/slider/Slider.js +68 -125
  178. package/slider/Slider.test.js +107 -103
  179. package/slider/types.d.ts +4 -4
  180. package/spinner/Spinner.js +16 -54
  181. package/spinner/Spinner.test.js +25 -34
  182. package/spinner/types.d.ts +3 -3
  183. package/switch/Switch.js +49 -97
  184. package/switch/Switch.stories.tsx +0 -34
  185. package/switch/Switch.test.js +51 -96
  186. package/switch/types.d.ts +4 -4
  187. package/table/Table.js +5 -27
  188. package/table/Table.test.js +1 -6
  189. package/table/types.d.ts +8 -8
  190. package/tabs/Tab.js +10 -29
  191. package/tabs/Tabs.js +52 -129
  192. package/tabs/Tabs.test.js +62 -118
  193. package/tabs/types.d.ts +19 -19
  194. package/tag/Tag.js +21 -51
  195. package/tag/Tag.test.js +19 -30
  196. package/tag/types.d.ts +7 -7
  197. package/text-input/Icons.d.ts +5 -5
  198. package/text-input/Icons.js +1 -5
  199. package/text-input/Suggestion.js +9 -26
  200. package/text-input/Suggestions.d.ts +1 -1
  201. package/text-input/Suggestions.js +15 -65
  202. package/text-input/TextInput.js +204 -284
  203. package/text-input/TextInput.stories.tsx +48 -152
  204. package/text-input/TextInput.test.js +1210 -1194
  205. package/text-input/types.d.ts +25 -17
  206. package/textarea/Textarea.js +67 -109
  207. package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -100
  208. package/textarea/Textarea.test.js +150 -179
  209. package/textarea/types.d.ts +9 -5
  210. package/toggle-group/ToggleGroup.js +90 -107
  211. package/toggle-group/ToggleGroup.stories.tsx +7 -4
  212. package/toggle-group/ToggleGroup.test.js +68 -87
  213. package/toggle-group/types.d.ts +26 -17
  214. package/typography/Typography.js +4 -13
  215. package/typography/types.d.ts +1 -1
  216. package/useTheme.d.ts +20 -121
  217. package/useTheme.js +1 -8
  218. package/useTranslatedLabels.js +1 -7
  219. package/utils/BaseTypography.d.ts +2 -2
  220. package/utils/BaseTypography.js +16 -30
  221. package/utils/FocusLock.js +22 -39
  222. package/wizard/Wizard.js +14 -49
  223. package/wizard/Wizard.test.js +53 -80
  224. package/wizard/types.d.ts +6 -6
  225. package/card/ice-cream.jpg +0 -0
  226. package/number-input/NumberInputContext.d.ts +0 -4
  227. package/number-input/NumberInputContext.js +0 -19
  228. package/number-input/numberInputContextTypes.d.ts +0 -19
  229. package/resultsetTable/Icons.d.ts +0 -7
  230. package/slider/Slider.stories.tsx +0 -240
  231. /package/{resultsetTable → container}/types.js +0 -0
  232. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
  233. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
  234. /package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +0 -0
  235. /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
  236. /package/table/{Table.stories.jsx → Table.stories.tsx} +0 -0
@@ -1,27 +1,29 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
- declare type Action = {
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ type Action = {
11
11
  /**
12
12
  * This function will be called when the user clicks the action.
13
13
  */
14
14
  onClick: () => void;
15
15
  /**
16
- * Icon to be shown in the action.
16
+ * Icon to be placed in the action..
17
17
  */
18
18
  icon: string | SVG;
19
19
  /**
20
- * Title of the action.
20
+ * Text representing advisory information related
21
+ * to the button's action. Under the hood, this prop also serves
22
+ * as an accessible label for the component.
21
23
  */
22
24
  title?: string;
23
25
  };
24
- declare type Props = {
26
+ type Props = {
25
27
  /**
26
28
  * Text to be placed above the input. This label will be used as the aria-label attribute of the list of suggestions.
27
29
  */
@@ -47,8 +49,7 @@ declare type Props = {
47
49
  */
48
50
  placeholder?: string;
49
51
  /**
50
- * Action to be shown in the input. This is an object composed of an onClick function and an icon,
51
- * being the latter either an inline svg or a URL to the image.
52
+ * Action to be shown in the input.
52
53
  */
53
54
  action?: Action;
54
55
  /**
@@ -59,6 +60,12 @@ declare type Props = {
59
60
  * If true, the component will be disabled.
60
61
  */
61
62
  disabled?: boolean;
63
+ /**
64
+ * If true, the component will not be mutable, meaning the user can not edit the control.
65
+ * In addition, the clear action will not be displayed even if the flag is set to true
66
+ * and the custom action will not execute its onClick event.
67
+ */
68
+ readOnly?: boolean;
62
69
  /**
63
70
  * If true, the input will be optional, showing '(Optional)'
64
71
  * next to the label. Otherwise, the field will be considered required and an error will be
@@ -106,8 +113,9 @@ declare type Props = {
106
113
  /**
107
114
  * These are the options to be displayed as suggestions. It can be either an array or a function:
108
115
  * - Array: Array of options that will be filtered by the component.
109
- * - Function: This function will be called when the user changes the value, we will send as a parameter the new value;
110
- * apart from that this function should return one promise on which we should make 'then' to get the suggestions filtered.
116
+ * - Function: This function will be called when the user changes the value.
117
+ * It will receive the new value as a parameter and should return a promise
118
+ * that resolves to an array with the filtered options.
111
119
  */
112
120
  suggestions?: string[] | ((value: string) => Promise<string[]>);
113
121
  /**
@@ -121,7 +129,7 @@ declare type Props = {
121
129
  */
122
130
  pattern?: string;
123
131
  /**
124
- * Specifies the minimun length allowed by the input.
132
+ * Specifies the minimum length allowed by the input.
125
133
  * This will be checked both when the input element loses the
126
134
  * focus and while typing within it. If the string entered does not
127
135
  * comply the minimum length, the onBlur and onChange functions will be called
@@ -162,7 +170,7 @@ declare type Props = {
162
170
  /**
163
171
  * List of suggestions of an Text Input component.
164
172
  */
165
- export declare type SuggestionsProps = {
173
+ export type SuggestionsProps = {
166
174
  id: string;
167
175
  value: string;
168
176
  suggestions: string[];
@@ -171,16 +179,16 @@ export declare type SuggestionsProps = {
171
179
  searchHasErrors: boolean;
172
180
  isSearching: boolean;
173
181
  suggestionOnClick: (suggestion: string) => void;
174
- getTextInputWidth: () => number;
182
+ styles: React.CSSProperties;
175
183
  };
176
184
  /**
177
185
  * Reference to the component.
178
186
  */
179
- export declare type RefType = HTMLDivElement;
187
+ export type RefType = HTMLDivElement;
180
188
  /**
181
189
  * Single suggestion of an Text Input component.
182
190
  */
183
- export declare type SuggestionProps = {
191
+ export type SuggestionProps = {
184
192
  id: string;
185
193
  value: string;
186
194
  onClick: (suggestion: string) => void;
@@ -189,7 +197,7 @@ export declare type SuggestionProps = {
189
197
  visuallyFocused: boolean;
190
198
  highlighted: boolean;
191
199
  };
192
- export declare type AutosuggestWrapperProps = {
200
+ export type AutosuggestWrapperProps = {
193
201
  condition: boolean;
194
202
  wrapper: (children: React.ReactNode) => JSX.Element;
195
203
  children: React.ReactNode;
@@ -1,101 +1,77 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
12
  var _react = _interopRequireWildcard(require("react"));
19
-
20
13
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
-
22
14
  var _utils = require("../common/utils");
23
-
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
16
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
-
28
17
  var _variables = require("../common/variables");
29
-
30
18
  var _uuid = require("uuid");
31
-
32
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
-
34
19
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
35
-
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
-
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
-
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
40
22
  var patternMatch = function patternMatch(pattern, value) {
41
23
  return new RegExp(pattern).test(value);
42
24
  };
43
-
44
25
  var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
45
26
  var label = _ref.label,
46
- _ref$name = _ref.name,
47
- name = _ref$name === void 0 ? "" : _ref$name,
48
- _ref$defaultValue = _ref.defaultValue,
49
- defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
50
- value = _ref.value,
51
- helperText = _ref.helperText,
52
- _ref$placeholder = _ref.placeholder,
53
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
54
- _ref$disabled = _ref.disabled,
55
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
56
- _ref$optional = _ref.optional,
57
- optional = _ref$optional === void 0 ? false : _ref$optional,
58
- _ref$verticalGrow = _ref.verticalGrow,
59
- verticalGrow = _ref$verticalGrow === void 0 ? "auto" : _ref$verticalGrow,
60
- _ref$rows = _ref.rows,
61
- rows = _ref$rows === void 0 ? 4 : _ref$rows,
62
- onChange = _ref.onChange,
63
- onBlur = _ref.onBlur,
64
- error = _ref.error,
65
- pattern = _ref.pattern,
66
- minLength = _ref.minLength,
67
- maxLength = _ref.maxLength,
68
- _ref$autocomplete = _ref.autocomplete,
69
- autocomplete = _ref$autocomplete === void 0 ? "off" : _ref$autocomplete,
70
- margin = _ref.margin,
71
- _ref$size = _ref.size,
72
- size = _ref$size === void 0 ? "medium" : _ref$size,
73
- _ref$tabIndex = _ref.tabIndex,
74
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
75
-
27
+ _ref$name = _ref.name,
28
+ name = _ref$name === void 0 ? "" : _ref$name,
29
+ _ref$defaultValue = _ref.defaultValue,
30
+ defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
31
+ value = _ref.value,
32
+ helperText = _ref.helperText,
33
+ _ref$placeholder = _ref.placeholder,
34
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
35
+ _ref$disabled = _ref.disabled,
36
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
37
+ _ref$readOnly = _ref.readOnly,
38
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
39
+ _ref$optional = _ref.optional,
40
+ optional = _ref$optional === void 0 ? false : _ref$optional,
41
+ _ref$verticalGrow = _ref.verticalGrow,
42
+ verticalGrow = _ref$verticalGrow === void 0 ? "auto" : _ref$verticalGrow,
43
+ _ref$rows = _ref.rows,
44
+ rows = _ref$rows === void 0 ? 4 : _ref$rows,
45
+ onChange = _ref.onChange,
46
+ onBlur = _ref.onBlur,
47
+ error = _ref.error,
48
+ pattern = _ref.pattern,
49
+ minLength = _ref.minLength,
50
+ maxLength = _ref.maxLength,
51
+ _ref$autocomplete = _ref.autocomplete,
52
+ autocomplete = _ref$autocomplete === void 0 ? "off" : _ref$autocomplete,
53
+ margin = _ref.margin,
54
+ _ref$size = _ref.size,
55
+ size = _ref$size === void 0 ? "medium" : _ref$size,
56
+ _ref$tabIndex = _ref.tabIndex,
57
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
76
58
  var _useState = (0, _react.useState)(defaultValue),
77
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
78
- innerValue = _useState2[0],
79
- setInnerValue = _useState2[1];
80
-
59
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
60
+ innerValue = _useState2[0],
61
+ setInnerValue = _useState2[1];
81
62
  var _useState3 = (0, _react.useState)("textarea-".concat((0, _uuid.v4)())),
82
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
83
- textareaId = _useState4[0];
84
-
63
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
64
+ textareaId = _useState4[0];
85
65
  var colorsTheme = (0, _useTheme["default"])();
86
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
87
66
  var translatedLabels = (0, _useTranslatedLabels["default"])();
88
67
  var textareaRef = (0, _react.useRef)(null);
89
68
  var errorId = "error-".concat(textareaId);
90
-
91
69
  var isNotOptional = function isNotOptional(value) {
92
70
  return value === "" && !optional;
93
71
  };
94
-
95
72
  var isLengthIncorrect = function isLengthIncorrect(value) {
96
73
  return value !== "" && minLength && maxLength && (value.length < minLength || value.length > maxLength);
97
74
  };
98
-
99
75
  var changeValue = function changeValue(newValue) {
100
76
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
101
77
  if (isNotOptional(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
@@ -111,8 +87,14 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
111
87
  value: newValue
112
88
  });
113
89
  };
114
-
115
- var handleTOnBlur = function handleTOnBlur(event) {
90
+ var autoVerticalGrow = function autoVerticalGrow() {
91
+ var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
92
+ var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
93
+ textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
94
+ var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
95
+ textareaRef.current.style.height = "".concat(newHeight, "px");
96
+ };
97
+ var handleOnBlur = function handleOnBlur(event) {
116
98
  if (isNotOptional(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
117
99
  value: event.target.value,
118
100
  error: translatedLabels.formFields.requiredValueErrorMessage
@@ -126,20 +108,10 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
126
108
  value: event.target.value
127
109
  });
128
110
  };
129
-
130
- var handleTOnChange = function handleTOnChange(event) {
111
+ var handleOnChange = function handleOnChange(event) {
131
112
  changeValue(event.target.value);
113
+ verticalGrow === "auto" && autoVerticalGrow();
132
114
  };
133
-
134
- (0, _react.useLayoutEffect)(function () {
135
- if (verticalGrow === "auto") {
136
- var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
137
- var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
138
- textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
139
- var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
140
- textareaRef.current.style.height = "".concat(newHeight, "px");
141
- }
142
- }, [value, verticalGrow, rows, innerValue]);
143
115
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
144
116
  theme: colorsTheme.textarea
145
117
  }, /*#__PURE__*/_react["default"].createElement(TextareaContainer, {
@@ -149,11 +121,9 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
149
121
  }, label && /*#__PURE__*/_react["default"].createElement(Label, {
150
122
  htmlFor: textareaId,
151
123
  disabled: disabled,
152
- backgroundType: backgroundType,
153
124
  helperText: helperText
154
125
  }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
155
- disabled: disabled,
156
- backgroundType: backgroundType
126
+ disabled: disabled
157
127
  }, helperText), /*#__PURE__*/_react["default"].createElement(Textarea, {
158
128
  id: textareaId,
159
129
  name: name,
@@ -161,37 +131,33 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
161
131
  placeholder: placeholder,
162
132
  verticalGrow: verticalGrow,
163
133
  rows: rows,
164
- onChange: handleTOnChange,
165
- onBlur: handleTOnBlur,
134
+ onChange: handleOnChange,
135
+ onBlur: handleOnBlur,
166
136
  disabled: disabled,
137
+ readOnly: readOnly,
167
138
  error: error,
168
139
  minLength: minLength,
169
140
  maxLength: maxLength,
170
141
  autoComplete: autocomplete,
171
- backgroundType: backgroundType,
172
142
  ref: textareaRef,
173
143
  tabIndex: tabIndex,
174
- "aria-invalid": error ? "true" : "false",
144
+ "aria-invalid": error ? true : false,
175
145
  "aria-errormessage": error ? errorId : undefined,
176
- "aria-required": optional ? "false" : "true"
146
+ "aria-required": !disabled && !optional
177
147
  }), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
178
148
  id: errorId,
179
- backgroundType: backgroundType,
180
149
  "aria-live": error ? "assertive" : "off"
181
150
  }, error)));
182
151
  });
183
-
184
152
  var sizes = {
185
153
  small: "240px",
186
154
  medium: "360px",
187
155
  large: "480px",
188
156
  fillParent: "100%"
189
157
  };
190
-
191
158
  var calculateWidth = function calculateWidth(margin, size) {
192
159
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
193
160
  };
194
-
195
161
  var TextareaContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
196
162
  return calculateWidth(props.margin, props.size);
197
163
  }, function (props) {
@@ -205,9 +171,8 @@ var TextareaContainer = _styledComponents["default"].div(_templateObject || (_te
205
171
  }, function (props) {
206
172
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
207
173
  });
208
-
209
174
  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) {
210
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
175
+ return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
211
176
  }, function (props) {
212
177
  return props.theme.fontFamily;
213
178
  }, function (props) {
@@ -221,13 +186,11 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
221
186
  }, function (props) {
222
187
  return !props.helperText && "margin-bottom: 0.25rem";
223
188
  });
224
-
225
189
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
226
190
  return props.theme.optionalLabelFontWeight;
227
191
  });
228
-
229
192
  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) {
230
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
193
+ return props.disabled ? props.theme.disabledHelperTextFontColor : props.theme.helperTextFontColor;
231
194
  }, function (props) {
232
195
  return props.theme.fontFamily;
233
196
  }, function (props) {
@@ -239,21 +202,19 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
239
202
  }, function (props) {
240
203
  return props.theme.helperTextLineHeight;
241
204
  });
242
-
243
- 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) {
244
- 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;";
245
- }, function (props) {
246
- if (props.disabled) return props.backgroundType === "dark" ? "background-color: ".concat(props.theme.disabledContainerFillColorOnDark, ";") : "background-color: ".concat(props.theme.disabledContainerFillColor, ";");else return "background-color: transparent;";
205
+ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\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 (_ref2) {
206
+ var verticalGrow = _ref2.verticalGrow;
207
+ if (verticalGrow === "none") return "resize: none;";else if (verticalGrow === "auto") return "resize: none; overflow: hidden;";else if (verticalGrow === "manual") return "resize: vertical;";else return "resize: none;";
247
208
  }, function (props) {
248
- if (props.disabled) return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;else return props.backgroundType === "dark" ? props.theme.enabledBorderColorOnDark : props.theme.enabledBorderColor;
209
+ return props.disabled ? "background-color: ".concat(props.theme.disabledContainerFillColor, ";") : "background-color: transparent;";
249
210
  }, function (props) {
250
- return props.error && !props.disabled && "border-color: transparent;\n box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.errorBorderColorOnDark : props.theme.errorBorderColor, ";\n ");
211
+ if (props.disabled) return props.theme.disabledBorderColor;else if (props.error) return "transparent";else if (props.readOnly) return props.theme.readOnlyBorderColor;else props.theme.enabledBorderColor;
251
212
  }, function (props) {
252
- return props.disabled && "cursor: not-allowed;";
213
+ return props.error && !props.disabled && "box-shadow: 0 0 0 2px ".concat(props.theme.errorBorderColor, ";\n ");
253
214
  }, function (props) {
254
- return !props.disabled && "\n &:hover {\n border-color: ".concat(props.error ? "transparent" : props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor, ";\n ").concat(props.error && "box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.hoverErrorBorderColorOnDark : props.theme.hoverErrorBorderColor, ";"), "\n }\n &:focus {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor, ";\n }\n &:focus-within {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor, ";\n }\n ");
215
+ return !props.disabled ? "&:hover {\n border-color: ".concat(props.error ? "transparent" : props.readOnly ? props.theme.hoverReadOnlyBorderColor : props.theme.hoverBorderColor, ";\n ").concat(props.error && "box-shadow: 0 0 0 2px ".concat(props.theme.hoverErrorBorderColor, ";"), "\n }\n &:focus, &:focus-within {\n outline: none;\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.theme.focusBorderColor, ";\n }") : "cursor: not-allowed;";
255
216
  }, function (props) {
256
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledValueFontColorOnDark : props.theme.disabledValueFontColor : props.backgroundType === "dark" ? props.theme.valueFontColorOnDark : props.theme.valueFontColor;
217
+ return props.disabled ? props.theme.disabledValueFontColor : props.theme.valueFontColor;
257
218
  }, function (props) {
258
219
  return props.theme.fontFamily;
259
220
  }, function (props) {
@@ -263,14 +224,11 @@ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templ
263
224
  }, function (props) {
264
225
  return props.theme.valueFontWeight;
265
226
  }, function (props) {
266
- return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledPlaceholderFontColorOnDark : props.theme.disabledPlaceholderFontColor : props.backgroundType === "dark" ? props.theme.placeholderFontColorOnDark : props.theme.placeholderFontColor;
227
+ return props.disabled ? props.theme.disabledPlaceholderFontColor : props.theme.placeholderFontColor;
267
228
  });
268
-
269
229
  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) {
270
- return props.backgroundType === "dark" ? props.theme.errorMessageColorOnDark : props.theme.errorMessageColor;
230
+ return props.theme.errorMessageColor;
271
231
  }, function (props) {
272
232
  return props.theme.fontFamily;
273
233
  });
274
-
275
- var _default = DxcTextarea;
276
- exports["default"] = _default;
234
+ var _default = exports["default"] = DxcTextarea;
@@ -2,8 +2,6 @@ import React from "react";
2
2
  import DxcTextarea from "./Textarea";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
- import { BackgroundColorProvider } from "../BackgroundColorContext";
6
- import DarkContainer from "../../.storybook/components/DarkSection";
7
5
  import { HalstackProvider } from "../HalstackContext";
8
6
 
9
7
  export default {
@@ -20,104 +18,64 @@ const opinionatedTheme = {
20
18
 
21
19
  export const Chromatic = () => (
22
20
  <>
23
- <>
24
- <ExampleContainer pseudoState="pseudo-hover">
25
- <Title title="Hovered" theme="light" level={4} />
26
- <DxcTextarea label="Hovered" />
27
- </ExampleContainer>
28
- <ExampleContainer pseudoState="pseudo-focus">
29
- <Title title="Focused" theme="light" level={4} />
30
- <DxcTextarea label="Focused" />
31
- </ExampleContainer>
32
- <ExampleContainer>
33
- <Title title="Disabled" theme="light" level={4} />
34
- <DxcTextarea
35
- label="Disabled"
36
- optional
37
- helperText="Sample text"
38
- placeholder="Enter your text here..."
39
- disabled
40
- />
41
- </ExampleContainer>
42
- <ExampleContainer>
43
- <Title title="Disabled with value" theme="light" level={4} />
44
- <DxcTextarea label="Disabled" defaultValue="Example text" disabled />
45
- </ExampleContainer>
46
- <ExampleContainer>
47
- <Title title="With error" theme="light" level={4} />
48
- <DxcTextarea
49
- label="Textarea with error"
50
- helperText="Helper text"
51
- placeholder="Enter your text here..."
52
- error="Error message."
53
- />
54
- </ExampleContainer>
55
- <ExampleContainer pseudoState="pseudo-hover">
56
- <Title title="Hovered with error" theme="light" level={4} />
57
- <DxcTextarea
58
- label="Hovered textarea with error"
59
- helperText="Helper text"
60
- placeholder="Enter your text here..."
61
- error="Error message."
62
- />
63
- </ExampleContainer>
64
- <ExampleContainer>
65
- <Title title="Helper text and optional with value" theme="light" level={4} />
66
- <DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
67
- </ExampleContainer>
68
- <ExampleContainer>
69
- <Title title="Resizable" theme="light" level={4} />
70
- <DxcTextarea label="With resizer" helperText="Helper text" verticalGrow="manual" />
71
- </ExampleContainer>
72
- <ExampleContainer>
73
- <Title title="Grow manual" theme="light" level={4} />
74
- <DxcTextarea
75
- label="Manual vertical grow"
76
- verticalGrow="manual"
77
- defaultValue="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
78
- />
79
- </ExampleContainer>
80
- </>
81
- <BackgroundColorProvider color="#333333">
82
- <DarkContainer>
83
- <ExampleContainer>
84
- <Title title="Helper text and optional with value" theme="dark" level={4} />
85
- <DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
86
- </ExampleContainer>
87
- <ExampleContainer>
88
- <Title title="Disabled" theme="dark" level={4} />
89
- <DxcTextarea
90
- label="Disabled"
91
- optional
92
- helperText="Sample text"
93
- placeholder="Enter your text here..."
94
- disabled
95
- />
96
- </ExampleContainer>
97
- <ExampleContainer>
98
- <Title title="Disabled with value" theme="dark" level={4} />
99
- <DxcTextarea label="Disabled" defaultValue="Example text" disabled />
100
- </ExampleContainer>
101
- <ExampleContainer>
102
- <Title title="With error" theme="dark" level={4} />
103
- <DxcTextarea
104
- label="Textarea with error"
105
- helperText="Helper text"
106
- placeholder="Enter your text here..."
107
- error="Error message."
108
- />
109
- </ExampleContainer>
110
- <ExampleContainer pseudoState="pseudo-hover">
111
- <Title title="Hovered with error" theme="dark" level={4} />
112
- <DxcTextarea
113
- label="Hovered textarea with error"
114
- helperText="Helper text"
115
- placeholder="Enter your text here..."
116
- error="Error message."
117
- />
118
- </ExampleContainer>
119
- </DarkContainer>
120
- </BackgroundColorProvider>
21
+ <ExampleContainer pseudoState="pseudo-hover">
22
+ <Title title="Hovered" theme="light" level={4} />
23
+ <DxcTextarea label="Hovered" />
24
+ </ExampleContainer>
25
+ <ExampleContainer pseudoState="pseudo-focus">
26
+ <Title title="Focused" theme="light" level={4} />
27
+ <DxcTextarea label="Focused" />
28
+ </ExampleContainer>
29
+ <ExampleContainer>
30
+ <Title title="Disabled" theme="light" level={4} />
31
+ <DxcTextarea label="Disabled" optional helperText="Sample text" placeholder="Enter your text here..." disabled />
32
+ </ExampleContainer>
33
+ <ExampleContainer>
34
+ <Title title="Disabled with value" theme="light" level={4} />
35
+ <DxcTextarea label="Disabled" defaultValue="Example text" disabled />
36
+ </ExampleContainer>
37
+ <ExampleContainer>
38
+ <Title title="Read only" theme="light" level={4} />
39
+ <DxcTextarea label="Label" readOnly defaultValue="Example text" verticalGrow="manual" />
40
+ </ExampleContainer>
41
+ <ExampleContainer pseudoState="pseudo-hover">
42
+ <Title title="Hovered read only" theme="light" level={4} />
43
+ <DxcTextarea label="Label" readOnly defaultValue="Example text" verticalGrow="manual" />
44
+ </ExampleContainer>
45
+ <ExampleContainer>
46
+ <Title title="With error" theme="light" level={4} />
47
+ <DxcTextarea
48
+ label="Textarea with error"
49
+ helperText="Helper text"
50
+ placeholder="Enter your text here..."
51
+ error="Error message."
52
+ />
53
+ </ExampleContainer>
54
+ <ExampleContainer pseudoState="pseudo-hover">
55
+ <Title title="Hovered with error" theme="light" level={4} />
56
+ <DxcTextarea
57
+ label="Hovered textarea with error"
58
+ helperText="Helper text"
59
+ placeholder="Enter your text here..."
60
+ error="Error message."
61
+ />
62
+ </ExampleContainer>
63
+ <ExampleContainer>
64
+ <Title title="Helper text and optional with value" theme="light" level={4} />
65
+ <DxcTextarea label="Helper & optional" defaultValue="Some text" helperText="Sample text" optional />
66
+ </ExampleContainer>
67
+ <ExampleContainer>
68
+ <Title title="Resizable" theme="light" level={4} />
69
+ <DxcTextarea label="With resizer" helperText="Helper text" verticalGrow="manual" />
70
+ </ExampleContainer>
71
+ <ExampleContainer>
72
+ <Title title="Grow manual" theme="light" level={4} />
73
+ <DxcTextarea
74
+ label="Manual vertical grow"
75
+ verticalGrow="manual"
76
+ defaultValue="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
77
+ />
78
+ </ExampleContainer>
121
79
  <Title title="Sizes" theme="light" level={2} />
122
80
  <ExampleContainer>
123
81
  <DxcTextarea label="Small" size="small" />