@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
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: CheckboxField
|
|
3
|
-
menu: 'Inputs'
|
|
4
|
-
route: /components/checkbox-field
|
|
5
|
-
---
|
|
6
|
-
|
|
7
1
|
# CheckboxField
|
|
8
2
|
|
|
9
3
|
CheckboxField allows users to select one or more options from a set.
|
|
10
4
|
|
|
11
|
-
import {
|
|
12
|
-
Playground,
|
|
13
|
-
Props,
|
|
14
|
-
} from 'docz'
|
|
15
|
-
import { CheckboxField } from '../..'
|
|
16
|
-
|
|
17
5
|
## Basic Usage
|
|
18
6
|
|
|
19
7
|
To implement the CheckboxField component, you need to import it first:
|
|
@@ -24,18 +12,18 @@ import { CheckboxField } from '@react-ui-org/react-ui';
|
|
|
24
12
|
|
|
25
13
|
And use it:
|
|
26
14
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
15
|
+
```docoff-react-preview
|
|
16
|
+
React.createElement(() => {
|
|
17
|
+
const [agree, setAgree] = React.useState(true);
|
|
18
|
+
return (
|
|
19
|
+
<CheckboxField
|
|
20
|
+
checked={agree}
|
|
21
|
+
label="I agree"
|
|
22
|
+
onChange={() => setAgree(!agree)}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
```
|
|
39
27
|
|
|
40
28
|
See [API](#api) for all available options.
|
|
41
29
|
|
|
@@ -44,13 +32,13 @@ See [API](#api) for all available options.
|
|
|
44
32
|
- Use the CheckboxField when there are lists of options and the user may
|
|
45
33
|
**select any number of choices,** including zero, one, or several. For
|
|
46
34
|
selecting just a single option from the list, use either the
|
|
47
|
-
[Radio](/components/
|
|
35
|
+
[Radio](/components/Radio) or [SelectField](/components/SelectField)
|
|
48
36
|
component.
|
|
49
37
|
|
|
50
38
|
- Use the CheckboxField for boolean (true/false) input **in forms that require
|
|
51
39
|
to be confirmed** by a button to become active. To toggle things on or off
|
|
52
40
|
with an immediate effect (without confirmation), use rather the
|
|
53
|
-
[Toggle](/components/
|
|
41
|
+
[Toggle](/components/Toggle) component.
|
|
54
42
|
|
|
55
43
|
- **Use positive wording for the checkbox label,** so that it's clear what will
|
|
56
44
|
happen when the user turns on the checkbox. Avoid negations such as “Don't
|
|
@@ -76,54 +64,54 @@ See [API](#api) for all available options.
|
|
|
76
64
|
You may provide an additional help text to clarify what will be the impact of
|
|
77
65
|
turning the checkbox on or off.
|
|
78
66
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
67
|
+
```docoff-react-preview
|
|
68
|
+
React.createElement(() => {
|
|
69
|
+
const [getNewsletter, setGetNewsletter] = React.useState(true);
|
|
70
|
+
return (
|
|
71
|
+
<CheckboxField
|
|
72
|
+
checked={getNewsletter}
|
|
73
|
+
helpText="We will not bother you more than once a month, we promise!"
|
|
74
|
+
label="Send me newsletter"
|
|
75
|
+
onChange={() => setGetNewsletter(!getNewsletter)}
|
|
76
|
+
/>
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
```
|
|
92
80
|
|
|
93
81
|
## Label Options
|
|
94
82
|
|
|
95
83
|
In some cases, it may be convenient to visually hide the checkbox label. The
|
|
96
84
|
label remains accessible to assistive technologies.
|
|
97
85
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
86
|
+
```docoff-react-preview
|
|
87
|
+
React.createElement(() => {
|
|
88
|
+
const [checked, setChecked] = React.useState(true);
|
|
89
|
+
return (
|
|
90
|
+
<CheckboxField
|
|
91
|
+
checked={checked}
|
|
92
|
+
isLabelVisible={false}
|
|
93
|
+
label="You cannot see this"
|
|
94
|
+
onChange={() => setChecked(!checked)}
|
|
95
|
+
/>
|
|
96
|
+
);
|
|
97
|
+
});
|
|
98
|
+
```
|
|
111
99
|
|
|
112
100
|
It's also possible to display label before input:
|
|
113
101
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
102
|
+
```docoff-react-preview
|
|
103
|
+
React.createElement(() => {
|
|
104
|
+
const [checked, setChecked] = React.useState(true);
|
|
105
|
+
return (
|
|
106
|
+
<CheckboxField
|
|
107
|
+
checked={checked}
|
|
108
|
+
label="Label precedes input"
|
|
109
|
+
labelPosition="before"
|
|
110
|
+
onChange={() => setChecked(!checked)}
|
|
111
|
+
/>
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
```
|
|
127
115
|
|
|
128
116
|
## States
|
|
129
117
|
|
|
@@ -134,52 +122,52 @@ should always **provide validation message for states other than valid** so
|
|
|
134
122
|
users know what happened and what action they should take or what options they
|
|
135
123
|
have.
|
|
136
124
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
125
|
+
```docoff-react-preview
|
|
126
|
+
React.createElement(() => {
|
|
127
|
+
const [agree, setAgree] = React.useState(true);
|
|
128
|
+
return (
|
|
129
|
+
<>
|
|
130
|
+
<CheckboxField
|
|
131
|
+
checked={agree}
|
|
132
|
+
label="I have read and agree with terms and conditions"
|
|
133
|
+
onChange={() => setAgree(!agree)}
|
|
134
|
+
validationState="valid"
|
|
135
|
+
/>
|
|
136
|
+
<CheckboxField
|
|
137
|
+
checked={agree}
|
|
138
|
+
label="I have read and agree with terms and conditions"
|
|
139
|
+
onChange={() => setAgree(!agree)}
|
|
140
|
+
validationState="warning"
|
|
141
|
+
validationText="Please wait 10 minutes until we verify your data."
|
|
142
|
+
/>
|
|
143
|
+
<CheckboxField
|
|
144
|
+
checked={agree}
|
|
145
|
+
label="I have read and agree with terms and conditions"
|
|
146
|
+
onChange={() => setAgree(!agree)}
|
|
147
|
+
required
|
|
148
|
+
validationState="invalid"
|
|
149
|
+
validationText="You must agree to be able to proceed."
|
|
150
|
+
/>
|
|
151
|
+
</>
|
|
152
|
+
);
|
|
153
|
+
});
|
|
154
|
+
```
|
|
167
155
|
|
|
168
156
|
### Disabled State
|
|
169
157
|
|
|
170
158
|
Disabled state makes the input unavailable.
|
|
171
159
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
160
|
+
```docoff-react-preview
|
|
161
|
+
<CheckboxField
|
|
162
|
+
disabled
|
|
163
|
+
label="Disabled checkbox"
|
|
164
|
+
/>
|
|
165
|
+
<CheckboxField
|
|
166
|
+
checked
|
|
167
|
+
disabled
|
|
168
|
+
label="Disabled checkbox, checked"
|
|
169
|
+
/>
|
|
170
|
+
```
|
|
183
171
|
|
|
184
172
|
## Forwarding HTML Attributes
|
|
185
173
|
|
|
@@ -198,11 +186,11 @@ If you provide [ref], it is forwarded to the native HTML `<input>` element.
|
|
|
198
186
|
|
|
199
187
|
## API
|
|
200
188
|
|
|
201
|
-
<
|
|
189
|
+
<docoff-react-props src="/components/CheckboxField/CheckboxField.jsx"></docoff-react-props>
|
|
202
190
|
|
|
203
191
|
## Theming
|
|
204
192
|
|
|
205
|
-
Head to [Forms Theming](/customize/theming/forms) to see shared form theming
|
|
193
|
+
Head to [Forms Theming](/docs/customize/theming/forms) to see shared form theming
|
|
206
194
|
options. On top of that, the following options are available for CheckboxField.
|
|
207
195
|
|
|
208
196
|
| Custom Property | Description |
|
package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md}
RENAMED
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: FileInputField
|
|
3
|
-
menu: 'Inputs'
|
|
4
|
-
route: /components/file-input-field
|
|
5
|
-
---
|
|
6
|
-
|
|
7
1
|
# FileInputField
|
|
8
2
|
|
|
9
3
|
FileInputField allows users to select files to upload.
|
|
10
4
|
|
|
11
|
-
import {
|
|
12
|
-
Playground,
|
|
13
|
-
Props,
|
|
14
|
-
} from 'docz'
|
|
15
|
-
import { FileInputField } from '../..'
|
|
16
|
-
|
|
17
5
|
## Basic Usage
|
|
18
6
|
|
|
19
7
|
To implement the FileInputField component, you need to import it first:
|
|
@@ -24,9 +12,9 @@ import { FileInputField } from '@react-ui-org/react-ui';
|
|
|
24
12
|
|
|
25
13
|
And use it:
|
|
26
14
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
15
|
+
```docoff-react-preview
|
|
16
|
+
<FileInputField label="Attachment" />
|
|
17
|
+
```
|
|
30
18
|
|
|
31
19
|
See [API](#api) for all available options.
|
|
32
20
|
|
|
@@ -59,12 +47,12 @@ layout perspective, FileInputFields work just like any other form fields.
|
|
|
59
47
|
|
|
60
48
|
Full-width fields span the full width of a parent:
|
|
61
49
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
50
|
+
```docoff-react-preview
|
|
51
|
+
<FileInputField
|
|
52
|
+
fullWidth
|
|
53
|
+
label="First name"
|
|
54
|
+
/>
|
|
55
|
+
```
|
|
68
56
|
|
|
69
57
|
## Invisible Label
|
|
70
58
|
|
|
@@ -75,12 +63,12 @@ While it may be acceptable for simple forms with just a few fields, it's
|
|
|
75
63
|
dangerous to hide labels from users in most cases. Keep in mind you should
|
|
76
64
|
**provide another visual clue** so users know what to fill into the input.
|
|
77
65
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
66
|
+
```docoff-react-preview
|
|
67
|
+
<FileInputField
|
|
68
|
+
isLabelVisible={false}
|
|
69
|
+
label="Attachment"
|
|
70
|
+
/>
|
|
71
|
+
```
|
|
84
72
|
|
|
85
73
|
## Horizontal Layout
|
|
86
74
|
|
|
@@ -88,41 +76,41 @@ The default vertical layout is very easy to use and work with. However, there
|
|
|
88
76
|
are situations where horizontal layout suits better — and that's why React UI
|
|
89
77
|
supports this kind of layout as well.
|
|
90
78
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
79
|
+
```docoff-react-preview
|
|
80
|
+
<FileInputField
|
|
81
|
+
label="Attachment"
|
|
82
|
+
layout="horizontal"
|
|
83
|
+
/>
|
|
84
|
+
<FileInputField
|
|
85
|
+
fullWidth
|
|
86
|
+
isLabelVisible={false}
|
|
87
|
+
label="Attachment"
|
|
88
|
+
layout="horizontal"
|
|
89
|
+
/>
|
|
90
|
+
```
|
|
103
91
|
|
|
104
92
|
## Help Text
|
|
105
93
|
|
|
106
94
|
You may provide an additional help text to clarify how the input should be
|
|
107
95
|
filled.
|
|
108
96
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
97
|
+
```docoff-react-preview
|
|
98
|
+
<FileInputField
|
|
99
|
+
helpText="Choose one or more files to upload."
|
|
100
|
+
label="Attachment"
|
|
101
|
+
/>
|
|
102
|
+
<FileInputField
|
|
103
|
+
helpText="Choose one or more files to upload."
|
|
104
|
+
label="Attachment"
|
|
105
|
+
layout="horizontal"
|
|
106
|
+
/>
|
|
107
|
+
<FileInputField
|
|
108
|
+
fullWidth
|
|
109
|
+
helpText="Choose one or more files to upload."
|
|
110
|
+
label="Attachment"
|
|
111
|
+
layout="horizontal"
|
|
112
|
+
/>
|
|
113
|
+
```
|
|
126
114
|
|
|
127
115
|
## States
|
|
128
116
|
|
|
@@ -133,37 +121,37 @@ should always **provide a validation message for states other than valid** so
|
|
|
133
121
|
users know what happened and what action they should take or what options they
|
|
134
122
|
have.
|
|
135
123
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
124
|
+
```docoff-react-preview
|
|
125
|
+
<FileInputField
|
|
126
|
+
label="Attachment"
|
|
127
|
+
validationState="valid"
|
|
128
|
+
validationText="Looks good!"
|
|
129
|
+
/>
|
|
130
|
+
<FileInputField
|
|
131
|
+
label="Attachment"
|
|
132
|
+
validationState="invalid"
|
|
133
|
+
validationText="Your file is too big. Please select something smaller."
|
|
134
|
+
/>
|
|
135
|
+
<FileInputField
|
|
136
|
+
label="Attachment"
|
|
137
|
+
validationState="warning"
|
|
138
|
+
validationText={`
|
|
139
|
+
You selected more than 10 files.
|
|
140
|
+
It may take some time before we process them.
|
|
141
|
+
`}
|
|
142
|
+
/>
|
|
143
|
+
```
|
|
156
144
|
|
|
157
145
|
### Disabled State
|
|
158
146
|
|
|
159
147
|
It's possible to disable the whole input.
|
|
160
148
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
149
|
+
```docoff-react-preview
|
|
150
|
+
<FileInputField
|
|
151
|
+
disabled
|
|
152
|
+
label="Attachment"
|
|
153
|
+
/>
|
|
154
|
+
```
|
|
167
155
|
|
|
168
156
|
## Forwarding HTML Attributes
|
|
169
157
|
|
|
@@ -173,17 +161,17 @@ you like.** All attributes that don't interfere with the API are forwarded to
|
|
|
173
161
|
the native HTML `<input>`. This enables making the component interactive and
|
|
174
162
|
helps to improve its accessibility.
|
|
175
163
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
164
|
+
```docoff-react-preview
|
|
165
|
+
<FileInputField
|
|
166
|
+
accept=".pdf,.jpg,.jpeg,.png"
|
|
167
|
+
helpText={`
|
|
168
|
+
Choose up to 10 files. Allowed extensions are .pdf, .jpg, .jpeg, or .png.
|
|
169
|
+
Size limit is 10 MB.
|
|
170
|
+
`}
|
|
171
|
+
label="Attachment"
|
|
172
|
+
multiple
|
|
173
|
+
/>
|
|
174
|
+
```
|
|
187
175
|
|
|
188
176
|
👉 Refer to the MDN reference for the full list of supported attributes of the
|
|
189
177
|
[file] input type.
|
|
@@ -194,11 +182,11 @@ If you provide [ref], it is forwarded to the native HTML `<input>` element.
|
|
|
194
182
|
|
|
195
183
|
## API
|
|
196
184
|
|
|
197
|
-
<
|
|
185
|
+
<docoff-react-props src="/components/FileInputField/FileInputField.jsx"></docoff-react-props>
|
|
198
186
|
|
|
199
187
|
## Theming
|
|
200
188
|
|
|
201
|
-
Head to [Forms Theming](/customize/theming/forms) to see shared form theming
|
|
189
|
+
Head to [Forms Theming](/docs/customize/theming/forms) to see shared form theming
|
|
202
190
|
options.
|
|
203
191
|
|
|
204
192
|
[React synthetic events]: https://reactjs.org/docs/events.html
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { useMemo } from 'react';
|
|
3
3
|
import { withGlobalProps } from '../../provider';
|
|
4
4
|
import { transferProps } from '../_helpers/transferProps';
|
|
5
5
|
import { classNames } from '../../utils/classNames';
|
|
@@ -16,6 +16,8 @@ export const FormLayout = ({
|
|
|
16
16
|
labelWidth,
|
|
17
17
|
...restProps
|
|
18
18
|
}) => {
|
|
19
|
+
const childProps = useMemo(() => ({ layout: fieldLayout }), [fieldLayout]);
|
|
20
|
+
|
|
19
21
|
if (isChildrenEmpty(children)) {
|
|
20
22
|
return null;
|
|
21
23
|
}
|
|
@@ -57,9 +59,7 @@ export const FormLayout = ({
|
|
|
57
59
|
)}
|
|
58
60
|
{...hasCustomLabelWidth ? { style: { '--rui-custom-label-width': labelWidth } } : {}}
|
|
59
61
|
>
|
|
60
|
-
<FormLayoutContext.Provider
|
|
61
|
-
value={{ layout: fieldLayout }}
|
|
62
|
-
>
|
|
62
|
+
<FormLayoutContext.Provider value={childProps}>
|
|
63
63
|
{children}
|
|
64
64
|
</FormLayoutContext.Provider>
|
|
65
65
|
</div>
|