@react-ui-org/react-ui 0.52.1 → 0.54.0

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 (261) hide show
  1. package/README.md +10 -7
  2. package/dist/react-ui.css +5 -3
  3. package/dist/react-ui.development.css +11302 -0
  4. package/dist/react-ui.development.js +1588 -0
  5. package/dist/react-ui.js +1 -1
  6. package/package.json +66 -77
  7. package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
  8. package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
  9. package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
  10. package/src/{lib/components → components}/Badge/Badge.scss +1 -1
  11. package/src/components/Badge/README.md +103 -0
  12. package/src/{lib/components → components}/Button/Button.jsx +1 -1
  13. package/src/components/Button/README.md +580 -0
  14. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
  15. package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
  16. package/src/{lib/components → components}/Card/Card.jsx +1 -1
  17. package/src/components/Card/README.md +314 -0
  18. package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
  19. package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
  20. package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
  21. package/src/components/FormLayout/README.md +462 -0
  22. package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
  23. package/src/components/Grid/README.md +281 -0
  24. package/src/{lib/components → components}/InputGroup/InputGroup.jsx +28 -19
  25. package/src/{lib/components → components}/InputGroup/InputGroup.scss +4 -5
  26. package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +162 -165
  27. package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
  28. package/src/components/Modal/README.md +1090 -0
  29. package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
  30. package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
  31. package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
  32. package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
  33. package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
  34. package/src/{lib/components → components}/Radio/Radio.scss +0 -5
  35. package/src/components/ScrollView/README.md +503 -0
  36. package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
  37. package/src/components/SelectField/README.md +681 -0
  38. package/src/components/Table/README.md +259 -0
  39. package/src/{lib/components → components}/Table/Table.jsx +4 -1
  40. package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  41. package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
  42. package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
  43. package/src/components/Text/README.md +220 -0
  44. package/src/components/TextArea/README.md +359 -0
  45. package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
  46. package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
  47. package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
  48. package/src/components/Toolbar/README.md +359 -0
  49. package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
  50. package/src/components/_helpers/getRootPriorityClassName.js +15 -0
  51. package/src/{lib/index.js → index.js} +6 -0
  52. package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
  53. package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
  54. package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
  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-layout.scss +0 -0
  256. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
  257. /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
  258. /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
  259. /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
  260. /package/src/{lib/translations → translations}/en.js +0 -0
  261. /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
  </>