@react-ui-org/react-ui 0.52.0 → 0.53.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. package/CODEOWNERS +23 -0
  2. package/README.md +10 -7
  3. package/dist/react-ui.css +42 -0
  4. package/dist/react-ui.js +1 -0
  5. package/package.json +64 -77
  6. package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
  7. package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
  8. package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
  9. package/src/{lib/components → components}/Badge/Badge.scss +1 -1
  10. package/src/components/Badge/README.md +103 -0
  11. package/src/{lib/components → components}/Button/Button.jsx +1 -1
  12. package/src/components/Button/README.md +580 -0
  13. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
  14. package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
  15. package/src/{lib/components → components}/Card/Card.jsx +1 -1
  16. package/src/components/Card/README.md +314 -0
  17. package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
  18. package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
  19. package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
  20. package/src/components/FormLayout/README.md +462 -0
  21. package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
  22. package/src/components/Grid/README.md +281 -0
  23. package/src/{lib/components → components}/InputGroup/InputGroup.jsx +20 -19
  24. package/src/{lib/components → components}/InputGroup/InputGroup.scss +1 -6
  25. package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +145 -163
  26. package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
  27. package/src/components/Modal/README.md +1090 -0
  28. package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
  29. package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
  30. package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
  31. package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
  32. package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
  33. package/src/{lib/components → components}/Radio/Radio.scss +1 -6
  34. package/src/components/ScrollView/README.md +503 -0
  35. package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
  36. package/src/components/SelectField/README.md +681 -0
  37. package/src/components/Table/README.md +259 -0
  38. package/src/{lib/components → components}/Table/Table.jsx +4 -1
  39. package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  40. package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
  41. package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
  42. package/src/components/Text/README.md +220 -0
  43. package/src/components/TextArea/README.md +359 -0
  44. package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
  45. package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
  46. package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
  47. package/src/components/Toolbar/README.md +359 -0
  48. package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
  49. package/src/components/_helpers/getRootPriorityClassName.js +15 -0
  50. package/src/{lib/index.js → index.js} +6 -0
  51. package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
  52. package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
  53. package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
  54. package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.scss +26 -14
  55. package/src/{lib/styles → styles}/tools/form-fields/_inline-field-elements.scss +2 -2
  56. package/src/{lib/theme.scss → theme.scss} +4 -3
  57. package/CONTRIBUTING.md +0 -137
  58. package/dist/lib.development.js +0 -3179
  59. package/dist/lib.js +0 -1
  60. package/public/racom.svg +0 -11
  61. package/src/lib/components/Badge/README.mdx +0 -126
  62. package/src/lib/components/Button/README.mdx +0 -581
  63. package/src/lib/components/Card/README.mdx +0 -326
  64. package/src/lib/components/FormLayout/README.mdx +0 -501
  65. package/src/lib/components/Grid/README.mdx +0 -299
  66. package/src/lib/components/Modal/README.mdx +0 -1360
  67. package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
  68. package/src/lib/components/ScrollView/README.mdx +0 -521
  69. package/src/lib/components/SelectField/README.mdx +0 -693
  70. package/src/lib/components/Table/README.mdx +0 -275
  71. package/src/lib/components/Text/README.mdx +0 -241
  72. package/src/lib/components/TextArea/README.mdx +0 -366
  73. package/src/lib/components/Toolbar/README.mdx +0 -386
  74. package/src/{lib/components → components}/Alert/Alert.scss +0 -0
  75. package/src/{lib/components → components}/Alert/_settings.scss +0 -0
  76. package/src/{lib/components → components}/Alert/_theme.scss +0 -0
  77. package/src/{lib/components → components}/Alert/_tools.scss +0 -0
  78. package/src/{lib/components → components}/Alert/index.js +0 -0
  79. package/src/{lib/components → components}/Badge/index.js +0 -0
  80. package/src/{lib/components → components}/Button/Button.scss +0 -0
  81. package/src/{lib/components → components}/Button/_base.scss +0 -0
  82. package/src/{lib/components → components}/Button/_priorities.scss +0 -0
  83. package/src/{lib/components → components}/Button/_settings.scss +0 -0
  84. package/src/{lib/components → components}/Button/_theme.scss +0 -0
  85. package/src/{lib/components → components}/Button/_tools.scss +0 -0
  86. package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
  87. package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
  88. package/src/{lib/components → components}/Button/index.js +0 -0
  89. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
  90. package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
  91. package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
  92. package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
  93. package/src/{lib/components → components}/Card/Card.scss +0 -0
  94. package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
  95. package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
  96. package/src/{lib/components → components}/Card/_theme.scss +0 -0
  97. package/src/{lib/components → components}/Card/_tools.scss +0 -0
  98. package/src/{lib/components → components}/Card/index.js +0 -0
  99. package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
  100. package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
  101. package/src/{lib/components → components}/CheckboxField/index.js +0 -0
  102. package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
  103. package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
  104. package/src/{lib/components → components}/FileInputField/index.js +0 -0
  105. package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
  106. package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
  107. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
  108. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
  109. package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
  110. package/src/{lib/components → components}/FormLayout/index.js +0 -0
  111. package/src/{lib/components → components}/Grid/Grid.scss +0 -0
  112. package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
  113. package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
  114. package/src/{lib/components → components}/Grid/_settings.scss +0 -0
  115. package/src/{lib/components → components}/Grid/_tools.scss +0 -0
  116. package/src/{lib/components → components}/Grid/index.js +0 -0
  117. package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
  118. package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
  119. package/src/{lib/components → components}/InputGroup/index.js +0 -0
  120. package/src/{lib/components → components}/Modal/Modal.scss +0 -0
  121. package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
  122. package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
  123. package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
  124. package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
  125. package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
  126. package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
  127. package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
  128. package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
  129. package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
  130. package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
  131. package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
  132. package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
  133. package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
  134. package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
  135. package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
  136. package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
  137. package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
  138. package/src/{lib/components → components}/Modal/_settings.scss +0 -0
  139. package/src/{lib/components → components}/Modal/_theme.scss +0 -0
  140. package/src/{lib/components → components}/Modal/index.js +0 -0
  141. package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
  142. package/src/{lib/components → components}/Paper/Paper.scss +0 -0
  143. package/src/{lib/components → components}/Paper/_theme.scss +0 -0
  144. package/src/{lib/components → components}/Paper/index.js +0 -0
  145. package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
  146. package/src/{lib/components → components}/Popover/Popover.scss +0 -0
  147. package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
  148. package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
  149. package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
  150. package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
  151. package/src/{lib/components → components}/Popover/_theme.scss +0 -0
  152. package/src/{lib/components → components}/Popover/index.js +0 -0
  153. package/src/{lib/components → components}/Radio/index.js +0 -0
  154. package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
  155. package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
  156. package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
  157. package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
  158. package/src/{lib/components → components}/ScrollView/index.js +0 -0
  159. package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
  160. package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
  161. package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
  162. package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
  163. package/src/{lib/components → components}/SelectField/index.js +0 -0
  164. package/src/{lib/components → components}/Table/Table.scss +0 -0
  165. package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
  166. package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
  167. package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
  168. package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
  169. package/src/{lib/components → components}/Table/_settings.scss +0 -0
  170. package/src/{lib/components → components}/Table/index.js +0 -0
  171. package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
  172. package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
  173. package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
  174. package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
  175. package/src/{lib/components → components}/Tabs/index.js +0 -0
  176. package/src/{lib/components → components}/Text/Text.jsx +0 -0
  177. package/src/{lib/components → components}/Text/Text.scss +0 -0
  178. package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
  179. package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
  180. package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
  181. package/src/{lib/components → components}/Text/index.js +0 -0
  182. package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
  183. package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
  184. package/src/{lib/components → components}/TextArea/index.js +0 -0
  185. package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
  186. package/src/{lib/components → components}/TextField/TextField.scss +0 -0
  187. package/src/{lib/components → components}/TextField/index.js +0 -0
  188. package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
  189. /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
  190. /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
  191. /package/src/{lib/components → components}/TextLink/index.js +0 -0
  192. /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
  193. /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
  194. /package/src/{lib/components → components}/Toggle/index.js +0 -0
  195. /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
  196. /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
  197. /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
  198. /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
  199. /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
  200. /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
  201. /package/src/{lib/components → components}/Toolbar/index.js +0 -0
  202. /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
  203. /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
  204. /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
  205. /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
  206. /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
  207. /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
  208. /package/src/{lib/foundation.scss → foundation.scss} +0 -0
  209. /package/src/{lib/helpers.scss → helpers.scss} +0 -0
  210. /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
  211. /package/src/{lib/provider → provider}/index.js +0 -0
  212. /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
  213. /package/src/{lib/styles → styles}/_utilities.scss +0 -0
  214. /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
  215. /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
  216. /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
  217. /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
  218. /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
  219. /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
  220. /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
  221. /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
  222. /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
  223. /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
  224. /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
  225. /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
  226. /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
  227. /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
  228. /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
  229. /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
  230. /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
  231. /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
  232. /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
  233. /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
  234. /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
  235. /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
  236. /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
  237. /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
  238. /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
  239. /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
  240. /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
  241. /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
  242. /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
  243. /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
  244. /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
  245. /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
  246. /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
  247. /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
  248. /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
  249. /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
  250. /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
  251. /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
  252. /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
  253. /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
  254. /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
  255. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
  256. /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
  257. /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
  258. /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
  259. /package/src/{lib/translations → translations}/en.js +0 -0
  260. /package/src/{lib/utils → utils}/classNames.js +0 -0
@@ -1,366 +0,0 @@
1
- ---
2
- name: TextArea
3
- menu: 'Inputs'
4
- route: /components/text-area
5
- ---
6
-
7
- # TextArea
8
-
9
- TextArea enables users to add longer text to a form.
10
-
11
- import {
12
- Playground,
13
- Props,
14
- } from 'docz'
15
- import { TextArea } from '../..'
16
-
17
- ## Basic Usage
18
-
19
- To implement the TextArea component, you need to import it first:
20
-
21
- ```js
22
- import { TextArea } from '@react-ui-org/react-ui';
23
- ```
24
-
25
- And use it:
26
-
27
- <Playground>
28
- <TextArea label="Your feedback" />
29
- </Playground>
30
-
31
- See [API](#api) for all available options.
32
-
33
- ## General Guidelines
34
-
35
- - Use **short and descriptive labels**, ideally nouns rather than seemingly
36
- polite phrases like _Please enter your message_. Short labels will help your
37
- users accomplish their task faster.
38
-
39
- - Only make the TextArea's label invisible when there is **another visual
40
- clue** to guide users through filling the input. Using the first option as
41
- label is not recommended either — it disappears once user makes their choice.
42
-
43
- - When a short label is not enough, use **help texts to guide users** before
44
- they enter anything.
45
-
46
- - Optionally you can **pre-fill your text fields with a placeholder** to give
47
- users an example of what they're expected to fill in. Just remember the
48
- placeholder disappears once a value is entered so don't put anything important
49
- there. Usually, en example value starting with “Eg.” works best.
50
-
51
- - Use **clear, calm error messages** when there's a problem with what they
52
- entered. Be positive and focus on solutions to make the error message helpful.
53
-
54
- - Ensure the height of a text area **fits within mobile screen sizes.**
55
-
56
- ## Design Variants
57
-
58
- To satisfy the design requirements of your project, all input fields in React UI
59
- come in **two design variants** to choose from: outline and filled. Both can be
60
- further [customized](#theming) with CSS custom properties.
61
-
62
- <Playground>
63
- <TextArea
64
- label="Your feedback"
65
- />
66
- <TextArea
67
- label="Your feedback"
68
- variant="filled"
69
- />
70
- </Playground>
71
-
72
- ## Sizes
73
-
74
- Aside from the default (medium) size, two additional sizes are available: small
75
- and large.
76
-
77
- <Playground>
78
- <TextArea
79
- label="Your feedback"
80
- size="small"
81
- />
82
- <TextArea
83
- label="Your feedback"
84
- />
85
- <TextArea
86
- label="Your feedback"
87
- size="large"
88
- />
89
- <TextArea
90
- label="Your feedback"
91
- size="small"
92
- variant="filled"
93
- />
94
- <TextArea
95
- label="Your feedback"
96
- variant="filled"
97
- />
98
- <TextArea
99
- label="Your feedback"
100
- size="large"
101
- variant="filled"
102
- />
103
- </Playground>
104
-
105
- Full-width fields span the full width of a parent:
106
-
107
- <Playground>
108
- <TextArea
109
- label="Your feedback"
110
- fullWidth
111
- />
112
- <TextArea
113
- label="Your feedback"
114
- variant="filled"
115
- fullWidth
116
- />
117
- </Playground>
118
-
119
- ## Input Size
120
-
121
- The default width of all inputs is 240 px, and it can be
122
- [customized](/customize/theming/overview) with a CSS custom property. However, you
123
- can also **control the size of individual text areas** using the `rows` and
124
- `cols` properties. Additionally, text areas are vertically resizable by users.
125
-
126
- 👉 Remember that the `cols` and `rows` HTML attributes **do not limit on how
127
- many characters** the user can enter. Use the
128
- [`maxlength` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Min_and_max_length)
129
- to achieve that effect.
130
-
131
- <Playground>
132
- <TextArea
133
- label="Your feedback"
134
- cols={50}
135
- rows={6}
136
- />
137
- <TextArea
138
- label="Your feedback"
139
- variant="filled"
140
- cols={50}
141
- rows={6}
142
- />
143
- </Playground>
144
-
145
- ## Invisible Label
146
-
147
- In some cases, it may be convenient to visually hide the field label. The label
148
- remains accessible to assistive technologies.
149
-
150
- While it may be acceptable for login screens with just a few fields or other
151
- simple forms, it's dangerous to hide labels from users in most cases. Keep in
152
- mind you should **provide another visual clue** so users know what to fill into
153
- the input.
154
-
155
- <Playground>
156
- <TextArea
157
- label="Feedback"
158
- isLabelVisible={false}
159
- placeholder="Eg. What I liked the best was…"
160
- />
161
- <TextArea
162
- label="Feedback"
163
- isLabelVisible={false}
164
- variant="filled"
165
- placeholder="Eg. What I liked the best was…"
166
- />
167
- </Playground>
168
-
169
- ## Horizontal Layout
170
-
171
- The default vertical layout is very easy to use and work with. However, there
172
- are situations where horizontal layout suits better — and that's why React UI
173
- supports this kind of layout as well.
174
-
175
- <Playground>
176
- <TextArea
177
- label="Your feedback"
178
- layout="horizontal"
179
- />
180
- <TextArea
181
- label="Your feedback"
182
- layout="horizontal"
183
- variant="filled"
184
- />
185
- <TextArea
186
- label="Your feedback"
187
- layout="horizontal"
188
- fullWidth
189
- />
190
- <TextArea
191
- label="Your feedback"
192
- layout="horizontal"
193
- variant="filled"
194
- fullWidth
195
- />
196
- <TextArea
197
- isLabelVisible={false}
198
- label="Your feedback"
199
- layout="horizontal"
200
- placeholder="Your feedback"
201
- fullWidth
202
- />
203
- <TextArea
204
- isLabelVisible={false}
205
- label="Your feedback"
206
- layout="horizontal"
207
- placeholder="Your feedback"
208
- variant="filled"
209
- fullWidth
210
- />
211
- </Playground>
212
-
213
- ## Help Text
214
-
215
- You may provide an additional help text to clarify how the input should be
216
- filled.
217
-
218
- <Playground>
219
- <TextArea
220
- label="Your feedback"
221
- helpText="Why would you recommend us?"
222
- />
223
- <TextArea
224
- label="Your feedback"
225
- variant="filled"
226
- helpText="Why would you recommend us?"
227
- />
228
- <TextArea
229
- label="Your feedback"
230
- layout="horizontal"
231
- helpText="Why would you recommend us?"
232
- />
233
- <TextArea
234
- label="Your feedback"
235
- layout="horizontal"
236
- helpText="Why would you recommend us?"
237
- variant="filled"
238
- />
239
- <TextArea
240
- label="Your feedback"
241
- layout="horizontal"
242
- helpText="Why would you recommend us?"
243
- fullWidth
244
- />
245
- <TextArea
246
- label="Your feedback"
247
- layout="horizontal"
248
- variant="filled"
249
- helpText="Why would you recommend us?"
250
- fullWidth
251
- />
252
- </Playground>
253
-
254
- ## States
255
-
256
- ### Validation States
257
-
258
- Validation states visually present the result of validation of the input. You
259
- should always **provide a help text for states other than valid** so users know
260
- what happened and what action they should take or what options they have.
261
-
262
- <Playground>
263
- <TextArea
264
- label="Your feedback"
265
- validationState="valid"
266
- validationText="Looks good!"
267
- value="Like that!"
268
- required
269
- />
270
- <TextArea
271
- label="Your feedback"
272
- validationState="warning"
273
- validationText="The feedback should be at least 3 characters long."
274
- value=".."
275
- required
276
- />
277
- <TextArea
278
- label="Your feedback"
279
- validationState="invalid"
280
- validationText="Please share your feedback with us."
281
- required
282
- />
283
- <TextArea
284
- label="Your feedback"
285
- validationState="valid"
286
- validationText="Looks good!"
287
- variant="filled"
288
- value="Like that!"
289
- required
290
- />
291
- <TextArea
292
- label="Your feedback"
293
- validationState="warning"
294
- validationText="The feedback should be at least 3 characters long."
295
- variant="filled"
296
- value=".."
297
- required
298
- />
299
- <TextArea
300
- label="Your feedback"
301
- validationState="invalid"
302
- validationText="Please share your feedback with us."
303
- variant="filled"
304
- required
305
- />
306
- </Playground>
307
-
308
- ### Disabled State
309
-
310
- It's possible to disable the whole input.
311
-
312
- <Playground>
313
- <TextArea
314
- label="Your feedback"
315
- disabled
316
- />
317
- <TextArea
318
- label="Your feedback"
319
- variant="filled"
320
- disabled
321
- />
322
- </Playground>
323
-
324
- ## Forwarding HTML Attributes
325
-
326
- In addition to the options below in the [component's API](#api) section, you
327
- can specify [React synthetic events] or you can **add whatever HTML attribute
328
- you like.** All attributes that don't interfere with the API are forwarded to
329
- the native HTML `<textarea>`. This enables making the component interactive and
330
- to helps to improve its accessibility.
331
-
332
- <Playground>
333
- <TextArea
334
- label="Address"
335
- autoComplete="street-address"
336
- minLength={3}
337
- maxLength={80}
338
- />
339
- <TextArea
340
- label="Address"
341
- variant="filled"
342
- autoComplete="street-address"
343
- minLength={3}
344
- maxLength={80}
345
- />
346
- </Playground>
347
-
348
- 👉 Refer to the MDN reference for the full list of supported attributes of the
349
- [textarea] element.
350
-
351
- ## Forwarding ref
352
-
353
- If you provide [ref], it is forwarded to the native HTML `<textarea>` element.
354
-
355
- ## API
356
-
357
- <Props table of={TextArea} />
358
-
359
- ## Theming
360
-
361
- Head to [Forms Theming](/customize/theming/forms) to see shared form theming
362
- options.
363
-
364
- [React synthetic events]: https://reactjs.org/docs/events.html
365
- [textarea]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes
366
- [ref]: https://reactjs.org/docs/refs-and-the-dom.html