@react-ui-org/react-ui 0.52.1 → 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 +5 -3
  4. package/dist/react-ui.js +1 -1
  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 +0 -5
  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 +0 -5
  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/_inline-field-elements.scss +2 -2
  55. package/src/{lib/theme.scss → theme.scss} +4 -3
  56. package/CONTRIBUTING.md +0 -137
  57. package/dist/lib.development.js +0 -3179
  58. package/dist/lib.js +0 -1
  59. package/public/racom.svg +0 -11
  60. package/src/lib/components/Badge/README.mdx +0 -126
  61. package/src/lib/components/Button/README.mdx +0 -581
  62. package/src/lib/components/Card/README.mdx +0 -326
  63. package/src/lib/components/FormLayout/README.mdx +0 -501
  64. package/src/lib/components/Grid/README.mdx +0 -299
  65. package/src/lib/components/Modal/README.mdx +0 -1360
  66. package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
  67. package/src/lib/components/ScrollView/README.mdx +0 -521
  68. package/src/lib/components/SelectField/README.mdx +0 -693
  69. package/src/lib/components/Table/README.mdx +0 -275
  70. package/src/lib/components/Text/README.mdx +0 -241
  71. package/src/lib/components/TextArea/README.mdx +0 -366
  72. package/src/lib/components/Toolbar/README.mdx +0 -386
  73. package/src/{lib/components → components}/Alert/Alert.scss +0 -0
  74. package/src/{lib/components → components}/Alert/_settings.scss +0 -0
  75. package/src/{lib/components → components}/Alert/_theme.scss +0 -0
  76. package/src/{lib/components → components}/Alert/_tools.scss +0 -0
  77. package/src/{lib/components → components}/Alert/index.js +0 -0
  78. package/src/{lib/components → components}/Badge/index.js +0 -0
  79. package/src/{lib/components → components}/Button/Button.scss +0 -0
  80. package/src/{lib/components → components}/Button/_base.scss +0 -0
  81. package/src/{lib/components → components}/Button/_priorities.scss +0 -0
  82. package/src/{lib/components → components}/Button/_settings.scss +0 -0
  83. package/src/{lib/components → components}/Button/_theme.scss +0 -0
  84. package/src/{lib/components → components}/Button/_tools.scss +0 -0
  85. package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
  86. package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
  87. package/src/{lib/components → components}/Button/index.js +0 -0
  88. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
  89. package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
  90. package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
  91. package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
  92. package/src/{lib/components → components}/Card/Card.scss +0 -0
  93. package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
  94. package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
  95. package/src/{lib/components → components}/Card/_theme.scss +0 -0
  96. package/src/{lib/components → components}/Card/_tools.scss +0 -0
  97. package/src/{lib/components → components}/Card/index.js +0 -0
  98. package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
  99. package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
  100. package/src/{lib/components → components}/CheckboxField/index.js +0 -0
  101. package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
  102. package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
  103. package/src/{lib/components → components}/FileInputField/index.js +0 -0
  104. package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
  105. package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
  106. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
  107. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
  108. package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
  109. package/src/{lib/components → components}/FormLayout/index.js +0 -0
  110. package/src/{lib/components → components}/Grid/Grid.scss +0 -0
  111. package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
  112. package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
  113. package/src/{lib/components → components}/Grid/_settings.scss +0 -0
  114. package/src/{lib/components → components}/Grid/_tools.scss +0 -0
  115. package/src/{lib/components → components}/Grid/index.js +0 -0
  116. package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
  117. package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
  118. package/src/{lib/components → components}/InputGroup/index.js +0 -0
  119. package/src/{lib/components → components}/Modal/Modal.scss +0 -0
  120. package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
  121. package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
  122. package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
  123. package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
  124. package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
  125. package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
  126. package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
  127. package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
  128. package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
  129. package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
  130. package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
  131. package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
  132. package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
  133. package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
  134. package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
  135. package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
  136. package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
  137. package/src/{lib/components → components}/Modal/_settings.scss +0 -0
  138. package/src/{lib/components → components}/Modal/_theme.scss +0 -0
  139. package/src/{lib/components → components}/Modal/index.js +0 -0
  140. package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
  141. package/src/{lib/components → components}/Paper/Paper.scss +0 -0
  142. package/src/{lib/components → components}/Paper/_theme.scss +0 -0
  143. package/src/{lib/components → components}/Paper/index.js +0 -0
  144. package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
  145. package/src/{lib/components → components}/Popover/Popover.scss +0 -0
  146. package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
  147. package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
  148. package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
  149. package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
  150. package/src/{lib/components → components}/Popover/_theme.scss +0 -0
  151. package/src/{lib/components → components}/Popover/index.js +0 -0
  152. package/src/{lib/components → components}/Radio/index.js +0 -0
  153. package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
  154. package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
  155. package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
  156. package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
  157. package/src/{lib/components → components}/ScrollView/index.js +0 -0
  158. package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
  159. package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
  160. package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
  161. package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
  162. package/src/{lib/components → components}/SelectField/index.js +0 -0
  163. package/src/{lib/components → components}/Table/Table.scss +0 -0
  164. package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
  165. package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
  166. package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
  167. package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
  168. package/src/{lib/components → components}/Table/_settings.scss +0 -0
  169. package/src/{lib/components → components}/Table/index.js +0 -0
  170. package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
  171. package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
  172. package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
  173. package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
  174. package/src/{lib/components → components}/Tabs/index.js +0 -0
  175. package/src/{lib/components → components}/Text/Text.jsx +0 -0
  176. package/src/{lib/components → components}/Text/Text.scss +0 -0
  177. package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
  178. package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
  179. package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
  180. package/src/{lib/components → components}/Text/index.js +0 -0
  181. package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
  182. package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
  183. package/src/{lib/components → components}/TextArea/index.js +0 -0
  184. package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
  185. package/src/{lib/components → components}/TextField/TextField.scss +0 -0
  186. package/src/{lib/components → components}/TextField/index.js +0 -0
  187. package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
  188. /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
  189. /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
  190. /package/src/{lib/components → components}/TextLink/index.js +0 -0
  191. /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
  192. /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
  193. /package/src/{lib/components → components}/Toggle/index.js +0 -0
  194. /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
  195. /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
  196. /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
  197. /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
  198. /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
  199. /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
  200. /package/src/{lib/components → components}/Toolbar/index.js +0 -0
  201. /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
  202. /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
  203. /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
  204. /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
  205. /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
  206. /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
  207. /package/src/{lib/foundation.scss → foundation.scss} +0 -0
  208. /package/src/{lib/helpers.scss → helpers.scss} +0 -0
  209. /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
  210. /package/src/{lib/provider → provider}/index.js +0 -0
  211. /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
  212. /package/src/{lib/styles → styles}/_utilities.scss +0 -0
  213. /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
  214. /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
  215. /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
  216. /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
  217. /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
  218. /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
  219. /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
  220. /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
  221. /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
  222. /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
  223. /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
  224. /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
  225. /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
  226. /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
  227. /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
  228. /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
  229. /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
  230. /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
  231. /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
  232. /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
  233. /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
  234. /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
  235. /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
  236. /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
  237. /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
  238. /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
  239. /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
  240. /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
  241. /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
  242. /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
  243. /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
  244. /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
  245. /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
  246. /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
  247. /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
  248. /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
  249. /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
  250. /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
  251. /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
  252. /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
  253. /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
  254. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.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
@@ -0,0 +1,503 @@
1
+ # ScrollView
2
+
3
+ ScrollView makes long content scrollable.
4
+
5
+ 👉 Please note that HTML is rendered even when no children are provided.
6
+ This is needed to allow the auto-scroll feature to work.
7
+
8
+ ## Basic Usage
9
+
10
+ To implement the ScrollView component, you need to import it first:
11
+
12
+ ```js
13
+ import { ScrollView } from '@react-ui-org/react-ui';
14
+ ```
15
+
16
+ And use it:
17
+
18
+ ```docoff-react-preview
19
+ <docoff-placeholder height="200px">
20
+ <ScrollView>
21
+ <div>
22
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
23
+ ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
24
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
25
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
26
+ quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
27
+ arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
28
+ Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras
29
+ dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend
30
+ tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac,
31
+ enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
32
+ Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean
33
+ imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
34
+ ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus
35
+ eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing
36
+ sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,
37
+ hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec
38
+ vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit
39
+ amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris
40
+ sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget
41
+ bibendum sodales, augue velit cursus nunc.Aenean massa. Cum sociis
42
+ natoque penatibus et magnis dis parturient montes, nascetur ridiculus
43
+ mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
44
+ sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
45
+ aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet
46
+ a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.
47
+ Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean
48
+ vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat
49
+ vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,
50
+ feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet.
51
+ Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue.
52
+ Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.
53
+ Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper
54
+ libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit
55
+ vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante
56
+ tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus.
57
+ Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt.
58
+ Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis
59
+ magna. Sed consequat, leo eget bibendum sodales, augue velit cursus
60
+ nunc.
61
+ </div>
62
+ </ScrollView>
63
+ </docoff-placeholder>
64
+ ```
65
+
66
+ See [API](#api) for all available options.
67
+
68
+ ## General Guidelines
69
+
70
+ - ScrollView takes up all **available horizontal space and expands vertically**
71
+ according to the length of its content. Depending on your layout, you may need
72
+ to restrict the height of its parent to activate scrolling.
73
+
74
+ - While arrow controls are optional in the vertical mode, you should always
75
+ **enable arrows in the horizontal mode when the scrollbar is disabled.**
76
+ Because if you don't, users without horizontal-scrolling-enabled devices
77
+ (like an old-school mouse) might not be able to access your content.
78
+
79
+ - For dynamic content such as chat window or console output, consider using the
80
+ **auto-scroll feature**. This will ensure the newest content is always
81
+ visible.
82
+
83
+ - ScrollView enables **scrolling on all screen sizes.** If you need to make an
84
+ area in your app scrollable based on viewport size, please use custom CSS
85
+ with media queries instead.
86
+
87
+ - ScrollView only supports **scrolling in a single direction at a time.** It
88
+ crops content that would possibly overflow in the other direction because
89
+ additional scrollbars would be unreachable under scrolling shadows. If you
90
+ need your content to be ready for bi-directional scrolling, either consider
91
+ using just `overflow: auto` instead of ScrollView, or make your content
92
+ scrollable before putting it into ScrollView and make sure its scrollbars
93
+ don't collide with scrolling shadows.
94
+
95
+ ## Arrows
96
+
97
+ You can suppress the system scrollbar and display arrow controls instead.
98
+
99
+ ```docoff-react-preview
100
+ <docoff-placeholder height="200px">
101
+ <ScrollView arrows scrollbar={false}>
102
+ <div>
103
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
104
+ ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
105
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
106
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
107
+ quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
108
+ arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
109
+ Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras
110
+ dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend
111
+ tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac,
112
+ enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
113
+ Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean
114
+ imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
115
+ ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus
116
+ eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing
117
+ sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,
118
+ hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec
119
+ vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit
120
+ amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris
121
+ sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget
122
+ bibendum sodales, augue velit cursus nunc.Aenean massa. Cum sociis
123
+ natoque penatibus et magnis dis parturient montes, nascetur ridiculus
124
+ mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
125
+ sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
126
+ aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet
127
+ a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.
128
+ Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean
129
+ vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat
130
+ vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,
131
+ feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet.
132
+ Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue.
133
+ Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.
134
+ Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper
135
+ libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit
136
+ vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante
137
+ tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus.
138
+ Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt.
139
+ Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis
140
+ magna. Sed consequat, leo eget bibendum sodales, augue velit cursus
141
+ nunc.
142
+ </div>
143
+ </ScrollView>
144
+ </docoff-placeholder>
145
+ ```
146
+
147
+ ## Horizontal Scrolling
148
+
149
+ The horizontal mode is useful when you have (or expect to have) a lot of
150
+ horizontal content and you need to make sure it remains accessible on all
151
+ viewport sizes.
152
+
153
+ ```docoff-react-preview
154
+ <ScrollView direction="horizontal" arrows>
155
+ <docoff-placeholder>
156
+ <div style={{ whiteSpace: 'nowrap' }}>
157
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
158
+ ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
159
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
160
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
161
+ quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
162
+ arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
163
+ </div>
164
+ </docoff-placeholder>
165
+ </ScrollView>
166
+ ```
167
+
168
+ ## Auto Scrolling
169
+
170
+ ScrollView can watch its content for changes and automatically scroll to the
171
+ end when the content has changed.
172
+
173
+ ⚠️ The auto-scroll functionality requires all children to have the `key`
174
+ property defined because it detects changes of these keys.
175
+
176
+ ```docoff-react-preview
177
+ React.createElement(() => {
178
+ const generateRandomString = () => {
179
+ const texts = [
180
+ 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.',
181
+ 'Aenean commodo ligula eget dolor. Aenean massa.',
182
+ 'Aenean commodo ligula eget dolor. Aenean massa.',
183
+ 'Cum sociis natoque penatibus et magnis dis parturient montes.',
184
+ 'Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.',
185
+ 'Nulla consequat massa quis enim. Donec pede justo, fringilla vel.',
186
+ 'In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.',
187
+ ];
188
+ let text = '';
189
+ const repeatAmount = Math.floor(Math.random() * 9);
190
+ for (let i = 0; i < (repeatAmount + 1); i += 1) {
191
+ text += texts[Math.floor(Math.random() * Math.floor(texts.length - 1))];
192
+ }
193
+ return text;
194
+ }
195
+ const [autoScroll, setAutoScroll] = React.useState('always');
196
+ const [direction, setDirection] = React.useState('vertical');
197
+ const [scrollViewContent, setScrollViewContent] = React.useState(
198
+ generateRandomString(),
199
+ );
200
+ return (
201
+ <div>
202
+ <Toolbar>
203
+ <ToolbarItem>
204
+ <Radio
205
+ label="Direction:"
206
+ onChange={(e) => setDirection(e.target.value)}
207
+ options={[
208
+ {
209
+ label: 'Vertical',
210
+ value: 'vertical',
211
+ },
212
+ {
213
+ label: 'Horizontal',
214
+ value: 'horizontal',
215
+ },
216
+ ]}
217
+ value={direction}
218
+ />
219
+ </ToolbarItem>
220
+ <ToolbarItem>
221
+ <Radio
222
+ label="Autoscroll:"
223
+ onChange={(e) => setAutoScroll(e.target.value)}
224
+ options={[
225
+ {
226
+ label: 'Always',
227
+ value: 'always',
228
+ },
229
+ {
230
+ label: 'When end is detected',
231
+ value: 'detectEnd',
232
+ },
233
+ ]}
234
+ value={autoScroll}
235
+ />
236
+ </ToolbarItem>
237
+ <ToolbarItem>
238
+ <Button
239
+ label="Add text"
240
+ onClick={
241
+ () => setScrollViewContent(
242
+ `${scrollViewContent} ${generateRandomString()}`,
243
+ )
244
+ }
245
+ />
246
+ </ToolbarItem>
247
+ </Toolbar>
248
+ <docoff-placeholder height={direction === 'vertical' ? '200px' : 'auto'}>
249
+ <ScrollView arrows autoScroll={autoScroll} direction={direction}>
250
+ <div
251
+ key={scrollViewContent.length}
252
+ style={{
253
+ whiteSpace: (direction === 'horizontal' ? 'nowrap' : 'normal'),
254
+ }}
255
+ >
256
+ {scrollViewContent}
257
+ </div>
258
+ </ScrollView>
259
+ </docoff-placeholder>
260
+ </div>
261
+ );
262
+ });
263
+ ```
264
+
265
+ ## Customization
266
+
267
+ It's possible to entirely customize the arrow controls, including the scroll
268
+ step, and the scrolling shadows.
269
+
270
+ ### Custom Arrows
271
+
272
+ You can pass any HTML element or even a custom React component to be used as the
273
+ arrow control. Furthermore, you can change the scroll step if you need to scroll
274
+ by smaller or bigger portions.
275
+
276
+ ```docoff-react-preview
277
+ <ScrollView
278
+ arrows
279
+ arrowsScrollStep={300}
280
+ direction="horizontal"
281
+ nextArrowElement={(<span className="typography-size-3">➡️</span>)}
282
+ prevArrowElement={(<span className="typography-size-3">⬅️</span>)}
283
+ scrollbar={false}
284
+ >
285
+ <docoff-placeholder>
286
+ <div style={{ whiteSpace: 'nowrap' }}>
287
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
288
+ ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
289
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
290
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
291
+ quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
292
+ arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
293
+ </div>
294
+ </docoff-placeholder>
295
+ </ScrollView>
296
+ ```
297
+
298
+ ### Scrolling Shadows
299
+
300
+ You can customize the start and end scrolling shadows using `startShadow*` and
301
+ `endShadow*` properties.
302
+
303
+ ```docoff-react-preview
304
+ <docoff-placeholder height="200px">
305
+ <ScrollView
306
+ startShadowBackground={'radial-gradient('
307
+ + 'farthest-side at center top, '
308
+ + 'rgba(0, 0, 0, 0.15) 0%, '
309
+ + 'rgba(0, 0, 0, 0.05) 60%, '
310
+ + 'rgba(0, 0, 0, 0.02) 85%, '
311
+ + 'rgba(0, 0, 0, 0) 100%'
312
+ + ')'
313
+ }
314
+ startShadowInitialOffset="-5px"
315
+ startShadowSize="40px"
316
+ endShadowBackground={'radial-gradient('
317
+ + 'farthest-side at center bottom, '
318
+ + 'rgba(0, 0, 0, 0.15) 0%, '
319
+ + 'rgba(0, 0, 0, 0.05) 60%, '
320
+ + 'rgba(0, 0, 0, 0.02) 85%, '
321
+ + 'rgba(0, 0, 0, 0) 100%'
322
+ + ')'
323
+ }
324
+ endShadowInitialOffset="-5px"
325
+ endShadowSize="40px"
326
+ >
327
+ <div>
328
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo
329
+ ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
330
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
331
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa
332
+ quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget,
333
+ arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.
334
+ Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras
335
+ dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend
336
+ tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac,
337
+ enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
338
+ Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean
339
+ imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
340
+ ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus
341
+ eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing
342
+ sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,
343
+ hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec
344
+ vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit
345
+ amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris
346
+ sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget
347
+ bibendum sodales, augue velit cursus nunc.Aenean massa. Cum sociis
348
+ natoque penatibus et magnis dis parturient montes, nascetur ridiculus
349
+ mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
350
+ sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
351
+ aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet
352
+ a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.
353
+ Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean
354
+ vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat
355
+ vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,
356
+ feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet.
357
+ Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue.
358
+ Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus.
359
+ Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper
360
+ libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit
361
+ vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante
362
+ tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus.
363
+ Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt.
364
+ Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis
365
+ magna. Sed consequat, leo eget bibendum sodales, augue velit cursus
366
+ nunc.
367
+ </div>
368
+ </ScrollView>
369
+ </docoff-placeholder>
370
+ ```
371
+
372
+ #### Linear Gradients
373
+
374
+ For easier CSS definition of [linear gradients] for both vertical and horizontal
375
+ directions at the same time, there are `--rui-local-start-shadow-direction` and
376
+ `--rui-local-end-shadow-direction` custom properties that can be used inside
377
+ `startShadowBackground` and `endShadowBackground` definitions. The value of the
378
+ custom properties then reacts to the `direction` option:
379
+
380
+ | Custom property | Vertical direction | Horizontal direction |
381
+ |--------------------------------------|--------------------|----------------------|
382
+ | `--rui-local-start-shadow-direction` | `to bottom` | `to right` |
383
+ | `--rui-local-end-shadow-direction` | `to top` | `to left` |
384
+
385
+ This is useful if you want to create a single definition of linear gradients for
386
+ scrolling shadows in both directions via
387
+ [global props](/docs/customize/global-props).
388
+
389
+ ```docoff-react-preview
390
+ React.createElement(() => {
391
+ const START_SHADOW_BACKGROUND = `linear-gradient(
392
+ var(--rui-local-start-shadow-direction),
393
+ rgba(0 0 0 / 0.5),
394
+ rgba(0 0 0 / 0)
395
+ )`;
396
+ const END_SHADOW_BACKGROUND = `linear-gradient(
397
+ var(--rui-local-end-shadow-direction),
398
+ rgba(0 0 0 / 0.5),
399
+ rgba(0 0 0 / 0)
400
+ )`
401
+ const [direction, setDirection] = React.useState('vertical');
402
+ return(
403
+ <>
404
+ <Radio
405
+ label="Direction:"
406
+ onChange={(e) => setDirection(e.target.value)}
407
+ options={[
408
+ {
409
+ label: 'Vertical',
410
+ value: 'vertical',
411
+ },
412
+ {
413
+ label: 'Horizontal',
414
+ value: 'horizontal',
415
+ },
416
+ ]}
417
+ value={direction}
418
+ />
419
+ <docoff-placeholder height="200px">
420
+ <ScrollView
421
+ direction={direction}
422
+ endShadowBackground={END_SHADOW_BACKGROUND}
423
+ startShadowBackground={START_SHADOW_BACKGROUND}
424
+ >
425
+ <div
426
+ style={{
427
+ width: (direction === 'horizontal' ? '3000px' : 'auto'),
428
+ }}
429
+ >
430
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
431
+ commodo ligula eget dolor. Aenean massa. Cum sociis natoque
432
+ penatibus et magnis dis parturient montes, nascetur ridiculus mus.
433
+ Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
434
+ sem. Nulla consequat massa quis enim. Donec pede justo, fringilla
435
+ vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
436
+ imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede
437
+ mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum
438
+ semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula,
439
+ porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem
440
+ ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus
441
+ viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean
442
+ imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
443
+ ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus,
444
+ tellus eget condimentum rhoncus, sem quam semper libero, sit amet
445
+ adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus
446
+ pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt
447
+ tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam
448
+ quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis
449
+ leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis
450
+ magna. Sed consequat, leo eget bibendum sodales, augue velit
451
+ cursus nunc. Aenean massa. Cum sociis natoque penatibus et magnis
452
+ dis parturient montes, nascetur ridiculus mus. Donec quam felis,
453
+ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat
454
+ massa quis enim. Donec pede justo, fringilla vel, aliquet nec,
455
+ vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a,
456
+ venenatis vitae, justo. Nullam dictum felis eu pede mollis
457
+ pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper
458
+ nisi. Aenean vulputate eleifend tellus. Aenean leo ligula,
459
+ porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem
460
+ ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus
461
+ viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean
462
+ imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
463
+ ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus,
464
+ tellus eget condimentum rhoncus, sem quam semper libero, sit amet
465
+ adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus
466
+ pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt
467
+ tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam
468
+ quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis
469
+ leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis
470
+ magna. Sed consequat, leo eget bibendum sodales, augue velit
471
+ cursus nunc.
472
+ </div>
473
+ </ScrollView>
474
+ </docoff-placeholder>
475
+ </>
476
+ );
477
+ });
478
+ ```
479
+
480
+ ## Forwarding HTML Attributes
481
+
482
+ In addition to the options below in the [component's API](#api) section, you
483
+ can specify [React synthetic events] or **any HTML attribute you like.** All
484
+ attributes that don't interfere with the API are forwarded to the `<div>` HTML
485
+ element. This enables making the component interactive and helps to improve its
486
+ accessibility.
487
+
488
+ 👉 Refer to the MDN reference for the full list of supported attributes of the
489
+ [div] element.
490
+
491
+ ## Forwarding ref
492
+
493
+ If you provide [ref], it is forwarded to the scrolling viewport native HTML
494
+ `<div>` element.
495
+
496
+ ## API
497
+
498
+ <docoff-react-props src="/components/ScrollView/ScrollView.jsx"></docoff-react-props>
499
+
500
+ [linear gradients]: https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient
501
+ [React synthetic events]: https://reactjs.org/docs/events.html
502
+ [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
503
+ [ref]: https://reactjs.org/docs/refs-and-the-dom.html
@@ -212,7 +212,10 @@ export const ScrollView = React.forwardRef((props, ref) => {
212
212
  </div>
213
213
  </div>
214
214
  {shadows && (
215
- <div className={styles.scrollingShadows} aria-hidden />
215
+ <div
216
+ aria-hidden
217
+ className={styles.scrollingShadows}
218
+ />
216
219
  )}
217
220
  {arrows && (
218
221
  <>
@@ -230,7 +233,10 @@ export const ScrollView = React.forwardRef((props, ref) => {
230
233
  type="button"
231
234
  >
232
235
  {prevArrowElement || (
233
- <span className={styles.arrowIcon} aria-hidden />
236
+ <span
237
+ aria-hidden
238
+ className={styles.arrowIcon}
239
+ />
234
240
  )}
235
241
  </button>
236
242
  <button
@@ -247,7 +253,10 @@ export const ScrollView = React.forwardRef((props, ref) => {
247
253
  type="button"
248
254
  >
249
255
  {nextArrowElement || (
250
- <span className={styles.arrowIcon} aria-hidden />
256
+ <span
257
+ aria-hidden
258
+ className={styles.arrowIcon}
259
+ />
251
260
  )}
252
261
  </button>
253
262
  </>