@dxc-technology/halstack-react 0.0.0-b39a1d2 → 0.0.0-b3b8a35

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 (342) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +7 -22
  3. package/HalstackContext.d.ts +1353 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +119 -192
  8. package/accordion/Accordion.stories.tsx +283 -0
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +12 -23
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +39 -108
  13. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +18 -23
  18. package/alert/Alert.js +24 -57
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +75 -0
  21. package/alert/types.d.ts +5 -5
  22. package/badge/Badge.d.ts +4 -0
  23. package/badge/Badge.js +9 -20
  24. package/badge/types.d.ts +5 -0
  25. package/bleed/Bleed.d.ts +3 -0
  26. package/bleed/Bleed.js +43 -0
  27. package/bleed/Bleed.stories.tsx +342 -0
  28. package/bleed/types.d.ts +37 -0
  29. package/box/Box.d.ts +1 -1
  30. package/box/Box.js +31 -79
  31. package/box/Box.stories.tsx +38 -51
  32. package/box/Box.test.js +13 -0
  33. package/box/types.d.ts +3 -14
  34. package/bulleted-list/BulletedList.d.ts +7 -0
  35. package/bulleted-list/BulletedList.js +99 -0
  36. package/bulleted-list/BulletedList.stories.tsx +116 -0
  37. package/bulleted-list/types.d.ts +38 -0
  38. package/button/Button.d.ts +1 -1
  39. package/button/Button.js +63 -121
  40. package/button/Button.stories.tsx +164 -96
  41. package/button/Button.test.js +36 -0
  42. package/button/types.d.ts +12 -12
  43. package/card/Card.d.ts +1 -1
  44. package/card/Card.js +59 -103
  45. package/card/Card.stories.tsx +13 -43
  46. package/card/Card.test.js +39 -0
  47. package/card/types.d.ts +6 -11
  48. package/checkbox/Checkbox.d.ts +2 -2
  49. package/checkbox/Checkbox.js +147 -180
  50. package/checkbox/Checkbox.stories.tsx +166 -136
  51. package/checkbox/Checkbox.test.js +199 -0
  52. package/checkbox/types.d.ts +19 -7
  53. package/chip/Chip.d.ts +4 -0
  54. package/chip/Chip.js +48 -148
  55. package/chip/Chip.stories.tsx +123 -30
  56. package/chip/Chip.test.js +41 -0
  57. package/chip/types.d.ts +45 -0
  58. package/chip/types.js +5 -0
  59. package/common/OpenSans.css +68 -80
  60. package/common/coreTokens.d.ts +237 -0
  61. package/common/coreTokens.js +184 -0
  62. package/common/utils.d.ts +1 -0
  63. package/common/utils.js +6 -12
  64. package/common/variables.d.ts +1499 -0
  65. package/common/variables.js +1119 -1326
  66. package/container/Container.d.ts +4 -0
  67. package/container/Container.js +187 -0
  68. package/container/Container.stories.tsx +214 -0
  69. package/container/types.d.ts +74 -0
  70. package/container/types.js +5 -0
  71. package/date-input/Calendar.d.ts +4 -0
  72. package/date-input/Calendar.js +214 -0
  73. package/date-input/DateInput.js +175 -313
  74. package/date-input/DateInput.stories.tsx +203 -56
  75. package/date-input/DateInput.test.js +808 -0
  76. package/date-input/DatePicker.d.ts +4 -0
  77. package/date-input/DatePicker.js +115 -0
  78. package/date-input/Icons.d.ts +6 -0
  79. package/date-input/Icons.js +58 -0
  80. package/date-input/YearPicker.d.ts +4 -0
  81. package/date-input/YearPicker.js +100 -0
  82. package/date-input/types.d.ts +86 -22
  83. package/dialog/Dialog.d.ts +1 -1
  84. package/dialog/Dialog.js +72 -130
  85. package/dialog/Dialog.stories.tsx +154 -171
  86. package/dialog/Dialog.test.js +307 -0
  87. package/dialog/types.d.ts +18 -25
  88. package/dropdown/Dropdown.d.ts +1 -1
  89. package/dropdown/Dropdown.js +245 -328
  90. package/dropdown/Dropdown.stories.tsx +438 -0
  91. package/dropdown/Dropdown.test.js +599 -0
  92. package/dropdown/DropdownMenu.d.ts +4 -0
  93. package/dropdown/DropdownMenu.js +63 -0
  94. package/dropdown/DropdownMenuItem.d.ts +4 -0
  95. package/dropdown/DropdownMenuItem.js +67 -0
  96. package/dropdown/types.d.ts +37 -28
  97. package/file-input/FileInput.d.ts +2 -2
  98. package/file-input/FileInput.js +231 -284
  99. package/file-input/FileInput.stories.tsx +618 -0
  100. package/file-input/FileInput.test.js +408 -0
  101. package/file-input/FileItem.d.ts +4 -14
  102. package/file-input/FileItem.js +52 -101
  103. package/file-input/types.d.ts +53 -11
  104. package/flex/Flex.d.ts +4 -0
  105. package/flex/Flex.js +57 -0
  106. package/flex/Flex.stories.tsx +112 -0
  107. package/flex/types.d.ts +97 -0
  108. package/flex/types.js +5 -0
  109. package/footer/Footer.d.ts +1 -1
  110. package/footer/Footer.js +61 -192
  111. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +38 -37
  112. package/footer/Footer.test.js +85 -0
  113. package/footer/Icons.d.ts +2 -0
  114. package/footer/Icons.js +4 -9
  115. package/footer/types.d.ts +36 -33
  116. package/grid/Grid.d.ts +7 -0
  117. package/grid/Grid.js +76 -0
  118. package/grid/Grid.stories.tsx +219 -0
  119. package/grid/types.d.ts +115 -0
  120. package/grid/types.js +5 -0
  121. package/header/Header.d.ts +4 -3
  122. package/header/Header.js +106 -199
  123. package/header/Header.stories.tsx +152 -63
  124. package/header/Header.test.js +66 -0
  125. package/header/Icons.d.ts +2 -0
  126. package/header/Icons.js +4 -9
  127. package/header/types.d.ts +5 -20
  128. package/heading/Heading.js +11 -33
  129. package/heading/Heading.stories.tsx +3 -2
  130. package/heading/Heading.test.js +169 -0
  131. package/heading/types.d.ts +7 -7
  132. package/image/Image.d.ts +4 -0
  133. package/image/Image.js +70 -0
  134. package/image/Image.stories.tsx +127 -0
  135. package/image/types.d.ts +72 -0
  136. package/image/types.js +5 -0
  137. package/inset/Inset.d.ts +3 -0
  138. package/inset/Inset.js +43 -0
  139. package/inset/Inset.stories.tsx +230 -0
  140. package/inset/types.d.ts +37 -0
  141. package/inset/types.js +5 -0
  142. package/layout/ApplicationLayout.d.ts +20 -0
  143. package/layout/ApplicationLayout.js +83 -184
  144. package/layout/ApplicationLayout.stories.tsx +162 -0
  145. package/layout/Icons.d.ts +8 -0
  146. package/layout/Icons.js +51 -48
  147. package/layout/SidenavContext.d.ts +5 -0
  148. package/layout/SidenavContext.js +13 -0
  149. package/layout/types.d.ts +41 -0
  150. package/layout/types.js +5 -0
  151. package/link/Link.d.ts +3 -2
  152. package/link/Link.js +65 -111
  153. package/link/Link.stories.tsx +159 -52
  154. package/link/Link.test.js +63 -0
  155. package/link/types.d.ts +15 -35
  156. package/main.d.ts +16 -13
  157. package/main.js +71 -91
  158. package/nav-tabs/NavTabs.d.ts +8 -0
  159. package/nav-tabs/NavTabs.js +90 -0
  160. package/nav-tabs/NavTabs.stories.tsx +274 -0
  161. package/nav-tabs/NavTabs.test.js +75 -0
  162. package/nav-tabs/Tab.d.ts +4 -0
  163. package/nav-tabs/Tab.js +117 -0
  164. package/nav-tabs/types.d.ts +52 -0
  165. package/nav-tabs/types.js +5 -0
  166. package/number-input/NumberInput.d.ts +7 -0
  167. package/number-input/NumberInput.js +28 -47
  168. package/number-input/NumberInput.stories.tsx +44 -28
  169. package/number-input/NumberInput.test.js +830 -0
  170. package/number-input/types.d.ts +28 -15
  171. package/package.json +45 -44
  172. package/paginator/Icons.d.ts +5 -0
  173. package/paginator/Icons.js +21 -47
  174. package/paginator/Paginator.js +35 -95
  175. package/paginator/Paginator.stories.tsx +24 -0
  176. package/paginator/Paginator.test.js +335 -0
  177. package/paginator/types.d.ts +3 -3
  178. package/paragraph/Paragraph.d.ts +5 -0
  179. package/paragraph/Paragraph.js +27 -0
  180. package/paragraph/Paragraph.stories.tsx +27 -0
  181. package/password-input/Icons.d.ts +6 -0
  182. package/password-input/Icons.js +35 -0
  183. package/password-input/PasswordInput.js +58 -125
  184. package/password-input/PasswordInput.stories.tsx +3 -34
  185. package/password-input/PasswordInput.test.js +198 -0
  186. package/password-input/types.d.ts +21 -17
  187. package/progress-bar/ProgressBar.js +69 -89
  188. package/progress-bar/ProgressBar.stories.tsx +93 -0
  189. package/progress-bar/ProgressBar.test.js +93 -0
  190. package/progress-bar/types.d.ts +3 -3
  191. package/quick-nav/QuickNav.d.ts +4 -0
  192. package/quick-nav/QuickNav.js +94 -0
  193. package/quick-nav/QuickNav.stories.tsx +356 -0
  194. package/quick-nav/types.d.ts +21 -0
  195. package/quick-nav/types.js +5 -0
  196. package/radio-group/Radio.d.ts +4 -0
  197. package/radio-group/Radio.js +124 -0
  198. package/radio-group/RadioGroup.d.ts +4 -0
  199. package/radio-group/RadioGroup.js +235 -0
  200. package/radio-group/RadioGroup.stories.tsx +214 -0
  201. package/radio-group/RadioGroup.test.js +756 -0
  202. package/radio-group/types.d.ts +114 -0
  203. package/radio-group/types.js +5 -0
  204. package/resultset-table/Icons.d.ts +7 -0
  205. package/resultset-table/Icons.js +47 -0
  206. package/resultset-table/ResultsetTable.js +159 -0
  207. package/resultset-table/ResultsetTable.stories.tsx +300 -0
  208. package/resultset-table/ResultsetTable.test.js +305 -0
  209. package/{resultsetTable → resultset-table}/types.d.ts +9 -9
  210. package/resultset-table/types.js +5 -0
  211. package/select/Icons.d.ts +10 -0
  212. package/select/Icons.js +89 -0
  213. package/select/Listbox.d.ts +4 -0
  214. package/select/Listbox.js +143 -0
  215. package/select/Option.d.ts +4 -0
  216. package/select/Option.js +80 -0
  217. package/select/Select.d.ts +4 -0
  218. package/select/Select.js +221 -504
  219. package/select/Select.stories.tsx +603 -204
  220. package/select/Select.test.js +2334 -0
  221. package/select/types.d.ts +209 -0
  222. package/select/types.js +5 -0
  223. package/sidenav/Icons.d.ts +7 -0
  224. package/sidenav/Icons.js +47 -0
  225. package/sidenav/Sidenav.d.ts +6 -5
  226. package/sidenav/Sidenav.js +135 -72
  227. package/sidenav/Sidenav.stories.tsx +251 -134
  228. package/sidenav/Sidenav.test.js +37 -0
  229. package/sidenav/types.d.ts +52 -26
  230. package/slider/Slider.d.ts +2 -2
  231. package/slider/Slider.js +147 -170
  232. package/slider/Slider.test.js +254 -0
  233. package/slider/types.d.ts +11 -3
  234. package/spinner/Spinner.js +30 -66
  235. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -26
  236. package/spinner/Spinner.test.js +55 -0
  237. package/spinner/types.d.ts +3 -3
  238. package/switch/Switch.d.ts +2 -2
  239. package/switch/Switch.js +154 -114
  240. package/switch/Switch.stories.tsx +45 -68
  241. package/switch/Switch.test.js +180 -0
  242. package/switch/types.d.ts +13 -5
  243. package/table/Table.js +9 -28
  244. package/table/{Table.stories.jsx → Table.stories.tsx} +81 -1
  245. package/table/Table.test.js +21 -0
  246. package/table/types.d.ts +8 -8
  247. package/tabs/Tab.d.ts +4 -0
  248. package/tabs/Tab.js +113 -0
  249. package/tabs/Tabs.d.ts +1 -1
  250. package/tabs/Tabs.js +319 -147
  251. package/tabs/Tabs.stories.tsx +122 -17
  252. package/tabs/Tabs.test.js +294 -0
  253. package/tabs/types.d.ts +46 -24
  254. package/tag/Tag.d.ts +1 -1
  255. package/tag/Tag.js +44 -86
  256. package/tag/Tag.stories.tsx +38 -28
  257. package/tag/Tag.test.js +49 -0
  258. package/tag/types.d.ts +25 -16
  259. package/text-input/Icons.d.ts +8 -0
  260. package/text-input/Icons.js +56 -0
  261. package/text-input/Suggestion.d.ts +4 -0
  262. package/text-input/Suggestion.js +67 -0
  263. package/text-input/Suggestions.d.ts +4 -0
  264. package/text-input/Suggestions.js +89 -0
  265. package/text-input/TextInput.js +308 -502
  266. package/text-input/TextInput.stories.tsx +280 -271
  267. package/text-input/TextInput.test.js +1739 -0
  268. package/text-input/types.d.ts +71 -25
  269. package/textarea/Textarea.d.ts +4 -0
  270. package/textarea/Textarea.js +91 -167
  271. package/textarea/Textarea.stories.tsx +175 -0
  272. package/textarea/Textarea.test.js +406 -0
  273. package/textarea/types.d.ts +141 -0
  274. package/textarea/types.js +5 -0
  275. package/toggle-group/ToggleGroup.d.ts +2 -2
  276. package/toggle-group/ToggleGroup.js +100 -113
  277. package/toggle-group/ToggleGroup.stories.tsx +76 -36
  278. package/toggle-group/ToggleGroup.test.js +137 -0
  279. package/toggle-group/types.d.ts +67 -37
  280. package/typography/Typography.d.ts +4 -0
  281. package/typography/Typography.js +23 -0
  282. package/typography/Typography.stories.tsx +198 -0
  283. package/typography/types.d.ts +18 -0
  284. package/typography/types.js +5 -0
  285. package/useTheme.d.ts +1252 -0
  286. package/useTheme.js +4 -11
  287. package/useTranslatedLabels.d.ts +85 -0
  288. package/useTranslatedLabels.js +14 -0
  289. package/utils/BaseTypography.d.ts +21 -0
  290. package/utils/BaseTypography.js +94 -0
  291. package/utils/FocusLock.d.ts +13 -0
  292. package/utils/FocusLock.js +114 -0
  293. package/wizard/Wizard.d.ts +1 -1
  294. package/wizard/Wizard.js +123 -104
  295. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +48 -19
  296. package/wizard/Wizard.test.js +114 -0
  297. package/wizard/types.d.ts +14 -14
  298. package/ThemeContext.js +0 -246
  299. package/V3Select/V3Select.js +0 -455
  300. package/V3Select/index.d.ts +0 -27
  301. package/V3Textarea/V3Textarea.js +0 -260
  302. package/V3Textarea/index.d.ts +0 -27
  303. package/card/ice-cream.jpg +0 -0
  304. package/chip/index.d.ts +0 -22
  305. package/common/RequiredComponent.js +0 -32
  306. package/date/Date.js +0 -373
  307. package/date/index.d.ts +0 -27
  308. package/input-text/Icons.js +0 -22
  309. package/input-text/InputText.js +0 -611
  310. package/input-text/index.d.ts +0 -36
  311. package/number-input/NumberInputContext.d.ts +0 -4
  312. package/number-input/NumberInputContext.js +0 -19
  313. package/number-input/numberInputContextTypes.d.ts +0 -19
  314. package/progress-bar/ProgressBar.stories.jsx +0 -58
  315. package/radio/Radio.d.ts +0 -4
  316. package/radio/Radio.js +0 -174
  317. package/radio/Radio.stories.tsx +0 -192
  318. package/radio/types.d.ts +0 -54
  319. package/resultsetTable/ResultsetTable.js +0 -251
  320. package/select/index.d.ts +0 -131
  321. package/slider/Slider.stories.tsx +0 -177
  322. package/textarea/Textarea.stories.jsx +0 -135
  323. package/textarea/index.d.ts +0 -127
  324. package/toggle/Toggle.js +0 -186
  325. package/toggle/index.d.ts +0 -21
  326. package/upload/Upload.js +0 -201
  327. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  328. package/upload/buttons-upload/Icons.js +0 -40
  329. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  330. package/upload/dragAndDropArea/Icons.js +0 -39
  331. package/upload/file-upload/FileToUpload.js +0 -115
  332. package/upload/file-upload/Icons.js +0 -66
  333. package/upload/files-upload/FilesToUpload.js +0 -109
  334. package/upload/index.d.ts +0 -15
  335. package/upload/transaction/Icons.js +0 -160
  336. package/upload/transaction/Transaction.js +0 -104
  337. package/upload/transactions/Transactions.js +0 -94
  338. package/wizard/Icons.js +0 -65
  339. /package/{radio → badge}/types.js +0 -0
  340. /package/{resultsetTable → bleed}/types.js +0 -0
  341. /package/{number-input/numberInputContextTypes.js → bulleted-list/types.js} +0 -0
  342. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +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.SVGProps<SVGSVGElement> | React.FunctionComponent<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
- onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
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
  */
@@ -30,6 +32,10 @@ declare type Props = {
30
32
  * Name attribute of the input element.
31
33
  */
32
34
  name?: string;
35
+ /**
36
+ * Initial value of the input, only when it is uncontrolled.
37
+ */
38
+ defaultValue?: string;
33
39
  /**
34
40
  * Value of the input. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
35
41
  */
@@ -43,8 +49,7 @@ declare type Props = {
43
49
  */
44
50
  placeholder?: string;
45
51
  /**
46
- * Action to be shown in the input. This is an object composed of an onClick function and an icon,
47
- * being the latter either an inline svg or a URL to the image.
52
+ * Action to be shown in the input.
48
53
  */
49
54
  action?: Action;
50
55
  /**
@@ -55,6 +60,12 @@ declare type Props = {
55
60
  * If true, the component will be disabled.
56
61
  */
57
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;
58
69
  /**
59
70
  * If true, the input will be optional, showing '(Optional)'
60
71
  * next to the label. Otherwise, the field will be considered required and an error will be
@@ -74,33 +85,37 @@ declare type Props = {
74
85
  * This function will be called when the user types within the input
75
86
  * element of the component. An object including the current value and
76
87
  * 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.
88
+ * function. If there is no error, error will not be defined.
78
89
  */
79
90
  onChange?: (val: {
80
91
  value: string;
81
- error: string | null;
92
+ error?: string;
82
93
  }) => void;
83
94
  /**
84
95
  * This function will be called when the input element loses the focus.
85
96
  * An object including the input value and the error (if the value
86
97
  * entered is not valid) will be passed to this function. If there is no error,
87
- * error will be null.
98
+ * error will not be defined.
88
99
  */
89
100
  onBlur?: (val: {
90
101
  value: string;
91
- error: string | null;
102
+ error?: string;
92
103
  }) => void;
93
104
  /**
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.
105
+ * If it is a defined value and also a truthy string, the component will
106
+ * change its appearance, showing the error below the input component. If
107
+ * the defined value is an empty string, it will reserve a space below
108
+ * the component for a future error, but it would not change its look. In
109
+ * case of being undefined or null, both the appearance and the space for
110
+ * the error message would not be modified.
97
111
  */
98
112
  error?: string;
99
113
  /**
100
114
  * These are the options to be displayed as suggestions. It can be either an array or a function:
101
115
  * - Array: Array of options that will be filtered by the component.
102
- * - Function: This function will be called when the user changes the value, we will send as a parameter the new value;
103
- * 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.
104
119
  */
105
120
  suggestions?: string[] | ((value: string) => Promise<string[]>);
106
121
  /**
@@ -110,17 +125,17 @@ declare type Props = {
110
125
  * pattern, the onBlur and onChange functions will be called with the
111
126
  * current value and an internal error informing that this value does not
112
127
  * match the pattern. If the pattern is met, the error parameter of both
113
- * events will be null.
128
+ * events will not be defined.
114
129
  */
115
130
  pattern?: string;
116
131
  /**
117
- * Specifies the minimun length allowed by the input.
132
+ * Specifies the minimum length allowed by the input.
118
133
  * This will be checked both when the input element loses the
119
134
  * focus and while typing within it. If the string entered does not
120
135
  * comply the minimum length, the onBlur and onChange functions will be called
121
136
  * with the current value and an internal error informing that the value
122
137
  * length does not comply the specified range. If a valid length is
123
- * reached, the error parameter of both events will be null.
138
+ * reached, the error parameter of both events will not be defined.
124
139
  */
125
140
  minLength?: number;
126
141
  /**
@@ -130,7 +145,7 @@ declare type Props = {
130
145
  * comply the maximum length, the onBlur and onChange functions will be called
131
146
  * with the current value and an internal error informing that the value
132
147
  * length does not comply the specified range. If a valid length is
133
- * reached, the error parameter of both events will be null.
148
+ * reached, the error parameter of both events will not be defined.
134
149
  */
135
150
  maxLength?: number;
136
151
  /**
@@ -144,7 +159,7 @@ declare type Props = {
144
159
  */
145
160
  margin?: Space | Margin;
146
161
  /**
147
- * Size of the component ('small' | 'medium' | 'large' | 'fillParent').
162
+ * Size of the component.
148
163
  */
149
164
  size?: "small" | "medium" | "large" | "fillParent";
150
165
  /**
@@ -152,8 +167,39 @@ declare type Props = {
152
167
  */
153
168
  tabIndex?: number;
154
169
  };
170
+ /**
171
+ * List of suggestions of an Text Input component.
172
+ */
173
+ export type SuggestionsProps = {
174
+ id: string;
175
+ value: string;
176
+ suggestions: string[];
177
+ visualFocusIndex: number;
178
+ highlightedSuggestions: boolean;
179
+ searchHasErrors: boolean;
180
+ isSearching: boolean;
181
+ suggestionOnClick: (suggestion: string) => void;
182
+ styles: React.CSSProperties;
183
+ };
155
184
  /**
156
185
  * Reference to the component.
157
186
  */
158
- export declare type RefType = HTMLDivElement;
187
+ export type RefType = HTMLDivElement;
188
+ /**
189
+ * Single suggestion of an Text Input component.
190
+ */
191
+ export type SuggestionProps = {
192
+ id: string;
193
+ value: string;
194
+ onClick: (suggestion: string) => void;
195
+ suggestion: string;
196
+ isLast: boolean;
197
+ visuallyFocused: boolean;
198
+ highlighted: boolean;
199
+ };
200
+ export type AutosuggestWrapperProps = {
201
+ condition: boolean;
202
+ wrapper: (children: React.ReactNode) => JSX.Element;
203
+ children: React.ReactNode;
204
+ };
159
205
  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;
@@ -1,172 +1,131 @@
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
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
-
16
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
-
18
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
12
  var _react = _interopRequireWildcard(require("react"));
21
-
22
13
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
-
24
- var _utils = require("../common/utils.js");
25
-
26
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
27
-
28
- var _propTypes = _interopRequireDefault(require("prop-types"));
29
-
30
- var _variables = require("../common/variables.js");
31
-
14
+ var _utils = require("../common/utils");
15
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
16
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
17
+ var _variables = require("../common/variables");
32
18
  var _uuid = require("uuid");
33
-
34
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext.js"));
35
-
19
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
36
20
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
37
-
38
- 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); }
39
-
40
- 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
-
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
-
21
+ 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); }
22
+ 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; }
50
23
  var patternMatch = function patternMatch(pattern, value) {
51
24
  return new RegExp(pattern).test(value);
52
25
  };
53
-
54
26
  var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
55
- var _ref$label = _ref.label,
56
- label = _ref$label === void 0 ? "" : _ref$label,
57
- _ref$name = _ref.name,
58
- name = _ref$name === void 0 ? "" : _ref$name,
59
- value = _ref.value,
60
- _ref$helperText = _ref.helperText,
61
- helperText = _ref$helperText === void 0 ? "" : _ref$helperText,
62
- _ref$placeholder = _ref.placeholder,
63
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
64
- _ref$disabled = _ref.disabled,
65
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
66
- _ref$optional = _ref.optional,
67
- optional = _ref$optional === void 0 ? false : _ref$optional,
68
- _ref$verticalGrow = _ref.verticalGrow,
69
- verticalGrow = _ref$verticalGrow === void 0 ? "auto" : _ref$verticalGrow,
70
- _ref$rows = _ref.rows,
71
- rows = _ref$rows === void 0 ? 4 : _ref$rows,
72
- onChange = _ref.onChange,
73
- onBlur = _ref.onBlur,
74
- _ref$error = _ref.error,
75
- error = _ref$error === void 0 ? "" : _ref$error,
76
- pattern = _ref.pattern,
77
- minLength = _ref.minLength,
78
- maxLength = _ref.maxLength,
79
- _ref$autocomplete = _ref.autocomplete,
80
- autocomplete = _ref$autocomplete === void 0 ? "off" : _ref$autocomplete,
81
- margin = _ref.margin,
82
- _ref$size = _ref.size,
83
- size = _ref$size === void 0 ? "medium" : _ref$size,
84
- _ref$tabIndex = _ref.tabIndex,
85
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
86
-
87
- var _useState = (0, _react.useState)(""),
88
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
89
- innerValue = _useState2[0],
90
- setInnerValue = _useState2[1];
91
-
27
+ var label = _ref.label,
28
+ _ref$name = _ref.name,
29
+ name = _ref$name === void 0 ? "" : _ref$name,
30
+ _ref$defaultValue = _ref.defaultValue,
31
+ defaultValue = _ref$defaultValue === void 0 ? "" : _ref$defaultValue,
32
+ value = _ref.value,
33
+ helperText = _ref.helperText,
34
+ _ref$placeholder = _ref.placeholder,
35
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
36
+ _ref$disabled = _ref.disabled,
37
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
38
+ _ref$readOnly = _ref.readOnly,
39
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
40
+ _ref$optional = _ref.optional,
41
+ optional = _ref$optional === void 0 ? false : _ref$optional,
42
+ _ref$verticalGrow = _ref.verticalGrow,
43
+ verticalGrow = _ref$verticalGrow === void 0 ? "auto" : _ref$verticalGrow,
44
+ _ref$rows = _ref.rows,
45
+ rows = _ref$rows === void 0 ? 4 : _ref$rows,
46
+ onChange = _ref.onChange,
47
+ onBlur = _ref.onBlur,
48
+ error = _ref.error,
49
+ pattern = _ref.pattern,
50
+ minLength = _ref.minLength,
51
+ maxLength = _ref.maxLength,
52
+ _ref$autocomplete = _ref.autocomplete,
53
+ autocomplete = _ref$autocomplete === void 0 ? "off" : _ref$autocomplete,
54
+ margin = _ref.margin,
55
+ _ref$size = _ref.size,
56
+ size = _ref$size === void 0 ? "medium" : _ref$size,
57
+ _ref$tabIndex = _ref.tabIndex,
58
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
59
+ var _useState = (0, _react.useState)(defaultValue),
60
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
61
+ innerValue = _useState2[0],
62
+ setInnerValue = _useState2[1];
92
63
  var _useState3 = (0, _react.useState)("textarea-".concat((0, _uuid.v4)())),
93
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
94
- textareaId = _useState4[0];
95
-
64
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
65
+ textareaId = _useState4[0];
96
66
  var colorsTheme = (0, _useTheme["default"])();
97
67
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
68
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
98
69
  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
- };
104
-
70
+ var errorId = "error-".concat(textareaId);
105
71
  var isNotOptional = function isNotOptional(value) {
106
72
  return value === "" && !optional;
107
73
  };
108
-
109
74
  var isLengthIncorrect = function isLengthIncorrect(value) {
110
75
  return value !== "" && minLength && maxLength && (value.length < minLength || value.length > maxLength);
111
76
  };
112
-
113
77
  var changeValue = function changeValue(newValue) {
114
78
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
115
79
  if (isNotOptional(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
116
80
  value: newValue,
117
- error: getNotOptionalErrorMessage()
81
+ error: translatedLabels.formFields.requiredValueErrorMessage
118
82
  });else if (isLengthIncorrect(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
119
83
  value: newValue,
120
- error: getLengthErrorMessage()
84
+ error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
121
85
  });else if (newValue && pattern && !patternMatch(pattern, newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
122
86
  value: newValue,
123
- error: getPatternErrorMessage()
87
+ error: translatedLabels.formFields.formatRequestedErrorMessage
124
88
  });else onChange === null || onChange === void 0 ? void 0 : onChange({
125
- value: newValue,
126
- error: null
89
+ value: newValue
127
90
  });
128
91
  };
129
-
130
- var handleTOnBlur = function handleTOnBlur(event) {
92
+ var autoVerticalGrow = function autoVerticalGrow() {
93
+ var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
94
+ var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
95
+ textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
96
+ var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
97
+ textareaRef.current.style.height = "".concat(newHeight, "px");
98
+ };
99
+ var handleOnBlur = function handleOnBlur(event) {
131
100
  if (isNotOptional(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
132
101
  value: event.target.value,
133
- error: getNotOptionalErrorMessage()
102
+ error: translatedLabels.formFields.requiredValueErrorMessage
134
103
  });else if (isLengthIncorrect(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
135
104
  value: event.target.value,
136
- error: getLengthErrorMessage()
105
+ error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
137
106
  });else if (event.target.value && pattern && !patternMatch(pattern, event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
138
107
  value: event.target.value,
139
- error: getPatternErrorMessage()
108
+ error: translatedLabels.formFields.formatRequestedErrorMessage
140
109
  });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
141
- value: event.target.value,
142
- error: null
110
+ value: event.target.value
143
111
  });
144
112
  };
145
-
146
- var handleTOnChange = function handleTOnChange(event) {
113
+ var handleOnChange = function handleOnChange(event) {
147
114
  changeValue(event.target.value);
115
+ verticalGrow === "auto" && autoVerticalGrow();
148
116
  };
149
-
150
- (0, _react.useLayoutEffect)(function () {
151
- if (verticalGrow === "auto") {
152
- var textareaLineHeight = parseInt(window.getComputedStyle(textareaRef.current)["line-height"]);
153
- var textareaPaddingTopBottom = parseInt(window.getComputedStyle(textareaRef.current)["padding-top"]) * 2;
154
- textareaRef.current.style.height = "".concat(textareaLineHeight * rows, "px");
155
- var newHeight = textareaRef.current.scrollHeight - textareaPaddingTopBottom;
156
- textareaRef.current.style.height = "".concat(newHeight, "px");
157
- }
158
- }, [value, verticalGrow, rows, innerValue]);
159
117
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
160
118
  theme: colorsTheme.textarea
161
119
  }, /*#__PURE__*/_react["default"].createElement(TextareaContainer, {
162
120
  margin: margin,
163
121
  size: size,
164
122
  ref: ref
165
- }, /*#__PURE__*/_react["default"].createElement(Label, {
123
+ }, label && /*#__PURE__*/_react["default"].createElement(Label, {
166
124
  htmlFor: textareaId,
167
125
  disabled: disabled,
168
- backgroundType: backgroundType
169
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), /*#__PURE__*/_react["default"].createElement(HelperText, {
126
+ backgroundType: backgroundType,
127
+ helperText: helperText
128
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
170
129
  disabled: disabled,
171
130
  backgroundType: backgroundType
172
131
  }, helperText), /*#__PURE__*/_react["default"].createElement(Textarea, {
@@ -176,9 +135,10 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
176
135
  placeholder: placeholder,
177
136
  verticalGrow: verticalGrow,
178
137
  rows: rows,
179
- onChange: handleTOnChange,
180
- onBlur: handleTOnBlur,
138
+ onChange: handleOnChange,
139
+ onBlur: handleOnBlur,
181
140
  disabled: disabled,
141
+ readOnly: readOnly,
182
142
  error: error,
183
143
  minLength: minLength,
184
144
  maxLength: maxLength,
@@ -186,27 +146,25 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
186
146
  backgroundType: backgroundType,
187
147
  ref: textareaRef,
188
148
  tabIndex: tabIndex,
189
- "aria-invalid": error ? "true" : "false",
190
- "aria-describedby": error ? errorId : undefined,
191
- "aria-required": optional ? "false" : "true"
192
- }), !disabled && /*#__PURE__*/_react["default"].createElement(Error, {
149
+ "aria-invalid": error ? true : false,
150
+ "aria-errormessage": error ? errorId : undefined,
151
+ "aria-required": !disabled && !optional
152
+ }), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
193
153
  id: errorId,
194
- backgroundType: backgroundType
154
+ backgroundType: backgroundType,
155
+ "aria-live": error ? "assertive" : "off"
195
156
  }, error)));
196
157
  });
197
-
198
158
  var sizes = {
199
159
  small: "240px",
200
160
  medium: "360px",
201
161
  large: "480px",
202
162
  fillParent: "100%"
203
163
  };
204
-
205
164
  var calculateWidth = function calculateWidth(margin, size) {
206
165
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
207
166
  };
208
-
209
- var TextareaContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
167
+ 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) {
210
168
  return calculateWidth(props.margin, props.size);
211
169
  }, function (props) {
212
170
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -219,8 +177,7 @@ var TextareaContainer = _styledComponents["default"].div(_templateObject || (_te
219
177
  }, function (props) {
220
178
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
221
179
  });
222
-
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) {
180
+ 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
181
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor : props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
225
182
  }, function (props) {
226
183
  return props.theme.fontFamily;
@@ -232,13 +189,13 @@ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObj
232
189
  return props.theme.labelFontWeight;
233
190
  }, function (props) {
234
191
  return props.theme.labelLineHeight;
192
+ }, function (props) {
193
+ return !props.helperText && "margin-bottom: 0.25rem";
235
194
  });
236
-
237
195
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
238
196
  return props.theme.optionalLabelFontWeight;
239
197
  });
240
-
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) {
198
+ 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
199
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledHelperTextFontColorOnDark : props.theme.disabledHelperTextFontColor : props.backgroundType === "dark" ? props.theme.helperTextFontColorOnDark : props.theme.helperTextFontColor;
243
200
  }, function (props) {
244
201
  return props.theme.fontFamily;
@@ -251,21 +208,17 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
251
208
  }, function (props) {
252
209
  return props.theme.helperTextLineHeight;
253
210
  });
254
-
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) {
256
- 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;";
211
+ 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) {
212
+ var verticalGrow = _ref2.verticalGrow;
213
+ 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;";
257
214
  }, function (props) {
258
215
  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
216
  }, function (props) {
260
- return "".concat(props.theme.inputMarginTop, " 0 ").concat(props.theme.inputMarginBottom, " 0");
261
- }, function (props) {
262
- 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
- }, function (props) {
264
- 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 ");
217
+ if (props.disabled) return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;else if (props.error) return "transparent";else if (props.readOnly) return props.theme.readOnlyBorderColor;else return props.backgroundType === "dark" ? props.theme.enabledBorderColorOnDark : props.theme.enabledBorderColor;
265
218
  }, function (props) {
266
- return props.disabled && "cursor: not-allowed;";
219
+ return props.error && !props.disabled && "box-shadow: 0 0 0 2px ".concat(props.backgroundType === "dark" ? props.theme.errorBorderColorOnDark : props.theme.errorBorderColor, ";\n ");
267
220
  }, function (props) {
268
- 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 ");
221
+ return !props.disabled ? "&:hover {\n border-color: ".concat(props.error ? "transparent" : props.readOnly ? props.theme.hoverReadOnlyBorderColor : 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, &: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 }") : "cursor: not-allowed;";
269
222
  }, function (props) {
270
223
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledValueFontColorOnDark : props.theme.disabledValueFontColor : props.backgroundType === "dark" ? props.theme.valueFontColorOnDark : props.theme.valueFontColor;
271
224
  }, function (props) {
@@ -279,38 +232,9 @@ var Textarea = _styledComponents["default"].textarea(_templateObject5 || (_templ
279
232
  }, function (props) {
280
233
  return props.disabled ? props.backgroundType === "dark" ? props.theme.disabledPlaceholderFontColorOnDark : props.theme.disabledPlaceholderFontColor : props.backgroundType === "dark" ? props.theme.placeholderFontColorOnDark : props.theme.placeholderFontColor;
281
234
  });
282
-
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) {
235
+ 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
236
  return props.backgroundType === "dark" ? props.theme.errorMessageColorOnDark : props.theme.errorMessageColor;
285
237
  }, function (props) {
286
238
  return props.theme.fontFamily;
287
239
  });
288
-
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
- var _default = DxcTextarea;
316
- exports["default"] = _default;
240
+ var _default = exports["default"] = DxcTextarea;