@react-ui-org/react-ui 0.52.1 → 0.53.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.
- package/CODEOWNERS +23 -0
- package/README.md +10 -7
- package/dist/react-ui.css +5 -3
- package/dist/react-ui.js +1 -1
- package/package.json +64 -77
- package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
- package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
- package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
- package/src/{lib/components → components}/Badge/Badge.scss +1 -1
- package/src/components/Badge/README.md +103 -0
- package/src/{lib/components → components}/Button/Button.jsx +1 -1
- package/src/components/Button/README.md +580 -0
- package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
- package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
- package/src/{lib/components → components}/Card/Card.jsx +1 -1
- package/src/components/Card/README.md +314 -0
- package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
- package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
- package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
- package/src/components/FormLayout/README.md +462 -0
- package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
- package/src/components/Grid/README.md +281 -0
- package/src/{lib/components → components}/InputGroup/InputGroup.jsx +20 -19
- package/src/{lib/components → components}/InputGroup/InputGroup.scss +0 -5
- package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +145 -163
- package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
- package/src/components/Modal/README.md +1090 -0
- package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
- package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
- package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
- package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
- package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
- package/src/{lib/components → components}/Radio/Radio.scss +0 -5
- package/src/components/ScrollView/README.md +503 -0
- package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
- package/src/components/SelectField/README.md +681 -0
- package/src/components/Table/README.md +259 -0
- package/src/{lib/components → components}/Table/Table.jsx +4 -1
- package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
- package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
- package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
- package/src/components/Text/README.md +220 -0
- package/src/components/TextArea/README.md +359 -0
- package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
- package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
- package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
- package/src/components/Toolbar/README.md +359 -0
- package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
- package/src/components/_helpers/getRootPriorityClassName.js +15 -0
- package/src/{lib/index.js → index.js} +6 -0
- package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
- package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
- package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
- package/src/{lib/styles → styles}/tools/form-fields/_inline-field-elements.scss +2 -2
- package/src/{lib/theme.scss → theme.scss} +4 -3
- package/CONTRIBUTING.md +0 -137
- package/dist/lib.development.js +0 -3179
- package/dist/lib.js +0 -1
- package/public/racom.svg +0 -11
- package/src/lib/components/Badge/README.mdx +0 -126
- package/src/lib/components/Button/README.mdx +0 -581
- package/src/lib/components/Card/README.mdx +0 -326
- package/src/lib/components/FormLayout/README.mdx +0 -501
- package/src/lib/components/Grid/README.mdx +0 -299
- package/src/lib/components/Modal/README.mdx +0 -1360
- package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
- package/src/lib/components/ScrollView/README.mdx +0 -521
- package/src/lib/components/SelectField/README.mdx +0 -693
- package/src/lib/components/Table/README.mdx +0 -275
- package/src/lib/components/Text/README.mdx +0 -241
- package/src/lib/components/TextArea/README.mdx +0 -366
- package/src/lib/components/Toolbar/README.mdx +0 -386
- package/src/{lib/components → components}/Alert/Alert.scss +0 -0
- package/src/{lib/components → components}/Alert/_settings.scss +0 -0
- package/src/{lib/components → components}/Alert/_theme.scss +0 -0
- package/src/{lib/components → components}/Alert/_tools.scss +0 -0
- package/src/{lib/components → components}/Alert/index.js +0 -0
- package/src/{lib/components → components}/Badge/index.js +0 -0
- package/src/{lib/components → components}/Button/Button.scss +0 -0
- package/src/{lib/components → components}/Button/_base.scss +0 -0
- package/src/{lib/components → components}/Button/_priorities.scss +0 -0
- package/src/{lib/components → components}/Button/_settings.scss +0 -0
- package/src/{lib/components → components}/Button/_theme.scss +0 -0
- package/src/{lib/components → components}/Button/_tools.scss +0 -0
- package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
- package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
- package/src/{lib/components → components}/Button/index.js +0 -0
- package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
- package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
- package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
- package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
- package/src/{lib/components → components}/Card/Card.scss +0 -0
- package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
- package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
- package/src/{lib/components → components}/Card/_theme.scss +0 -0
- package/src/{lib/components → components}/Card/_tools.scss +0 -0
- package/src/{lib/components → components}/Card/index.js +0 -0
- package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
- package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
- package/src/{lib/components → components}/CheckboxField/index.js +0 -0
- package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
- package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
- package/src/{lib/components → components}/FileInputField/index.js +0 -0
- package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
- package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
- package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
- package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
- package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
- package/src/{lib/components → components}/FormLayout/index.js +0 -0
- package/src/{lib/components → components}/Grid/Grid.scss +0 -0
- package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
- package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
- package/src/{lib/components → components}/Grid/_settings.scss +0 -0
- package/src/{lib/components → components}/Grid/_tools.scss +0 -0
- package/src/{lib/components → components}/Grid/index.js +0 -0
- package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
- package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
- package/src/{lib/components → components}/InputGroup/index.js +0 -0
- package/src/{lib/components → components}/Modal/Modal.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
- package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
- package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
- package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
- package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
- package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
- package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
- package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
- package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
- package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
- package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
- package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
- package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
- package/src/{lib/components → components}/Modal/_settings.scss +0 -0
- package/src/{lib/components → components}/Modal/_theme.scss +0 -0
- package/src/{lib/components → components}/Modal/index.js +0 -0
- package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
- package/src/{lib/components → components}/Paper/Paper.scss +0 -0
- package/src/{lib/components → components}/Paper/_theme.scss +0 -0
- package/src/{lib/components → components}/Paper/index.js +0 -0
- package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
- package/src/{lib/components → components}/Popover/Popover.scss +0 -0
- package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
- package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
- package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
- package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
- package/src/{lib/components → components}/Popover/_theme.scss +0 -0
- package/src/{lib/components → components}/Popover/index.js +0 -0
- package/src/{lib/components → components}/Radio/index.js +0 -0
- package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
- package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
- package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
- package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
- package/src/{lib/components → components}/ScrollView/index.js +0 -0
- package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
- package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
- package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
- package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
- package/src/{lib/components → components}/SelectField/index.js +0 -0
- package/src/{lib/components → components}/Table/Table.scss +0 -0
- package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
- package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
- package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
- package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
- package/src/{lib/components → components}/Table/_settings.scss +0 -0
- package/src/{lib/components → components}/Table/index.js +0 -0
- package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
- package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
- package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
- package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
- package/src/{lib/components → components}/Tabs/index.js +0 -0
- package/src/{lib/components → components}/Text/Text.jsx +0 -0
- package/src/{lib/components → components}/Text/Text.scss +0 -0
- package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
- package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
- package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
- package/src/{lib/components → components}/Text/index.js +0 -0
- package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
- package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
- package/src/{lib/components → components}/TextArea/index.js +0 -0
- package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
- package/src/{lib/components → components}/TextField/TextField.scss +0 -0
- package/src/{lib/components → components}/TextField/index.js +0 -0
- package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
- /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
- /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
- /package/src/{lib/components → components}/TextLink/index.js +0 -0
- /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
- /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
- /package/src/{lib/components → components}/Toggle/index.js +0 -0
- /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
- /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
- /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
- /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
- /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
- /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
- /package/src/{lib/components → components}/Toolbar/index.js +0 -0
- /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
- /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
- /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
- /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
- /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
- /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
- /package/src/{lib/foundation.scss → foundation.scss} +0 -0
- /package/src/{lib/helpers.scss → helpers.scss} +0 -0
- /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
- /package/src/{lib/provider → provider}/index.js +0 -0
- /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
- /package/src/{lib/styles → styles}/_utilities.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
- /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
- /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
- /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
- /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
- /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
- /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
- /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
- /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
- /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
- /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
- /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
- /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
- /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
- /package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.scss +0 -0
- /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
- /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
- /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
- /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
- /package/src/{lib/translations → translations}/en.js +0 -0
- /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
|
|
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
|
|
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
|
|
256
|
+
<span
|
|
257
|
+
aria-hidden
|
|
258
|
+
className={styles.arrowIcon}
|
|
259
|
+
/>
|
|
251
260
|
)}
|
|
252
261
|
</button>
|
|
253
262
|
</>
|