@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: Radio
|
|
3
|
-
menu: 'Inputs'
|
|
4
|
-
route: /components/radio
|
|
5
|
-
---
|
|
6
|
-
|
|
7
1
|
# Radio
|
|
8
2
|
|
|
9
3
|
Radio allows users to select one option from a set.
|
|
10
4
|
|
|
11
|
-
import {
|
|
12
|
-
Playground,
|
|
13
|
-
Props,
|
|
14
|
-
} from 'docz'
|
|
15
|
-
import { Radio } from '../..'
|
|
16
|
-
|
|
17
5
|
## Basic Usage
|
|
18
6
|
|
|
19
7
|
To implement the Radio component, you need to import it first:
|
|
@@ -24,45 +12,45 @@ import { Radio } 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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
15
|
+
```docoff-react-preview
|
|
16
|
+
React.createElement(() => {
|
|
17
|
+
const [fruit, setFruit] = React.useState('apple');
|
|
18
|
+
return (
|
|
19
|
+
<Radio
|
|
20
|
+
label="Your favourite fruit"
|
|
21
|
+
onChange={(e) => setFruit(e.target.value)}
|
|
22
|
+
options={[
|
|
23
|
+
{
|
|
24
|
+
label: 'Apple',
|
|
25
|
+
value: 'apple',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
label: 'Banana',
|
|
29
|
+
value: 'banana',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'Grapefruit',
|
|
33
|
+
value: 'grapefruit',
|
|
34
|
+
},
|
|
35
|
+
]}
|
|
36
|
+
value={fruit}
|
|
37
|
+
/>
|
|
38
|
+
);
|
|
39
|
+
})
|
|
40
|
+
```
|
|
53
41
|
|
|
54
42
|
See [API](#api) for all available options.
|
|
55
43
|
|
|
56
44
|
## General Guidelines
|
|
57
45
|
|
|
58
46
|
- Use Radio for **just a few options**. For larger sets of many options (say 4
|
|
59
|
-
and more) consider using the [SelectField](/components/
|
|
47
|
+
and more) consider using the [SelectField](/components/SelectField)
|
|
60
48
|
component. This will help keep your UI clean and uncluttered and prevent your
|
|
61
49
|
users from being overwhelmed by too many options.
|
|
62
50
|
|
|
63
51
|
- **Don't use for boolean** (true/false) selection or to toggle things on and
|
|
64
|
-
off. [CheckboxField](/components/
|
|
65
|
-
[Toggle](/components/
|
|
52
|
+
off. [CheckboxField](/components/CheckboxField) and
|
|
53
|
+
[Toggle](/components/Toggle) are more suitable for such cases.
|
|
66
54
|
|
|
67
55
|
- Use **short and descriptive labels**, ideally nouns rather than seemingly
|
|
68
56
|
polite phrases like _Please select your favourite fruit_. Short labels will
|
|
@@ -91,33 +79,33 @@ simple forms, it's dangerous to hide labels from users in most cases. Keep in
|
|
|
91
79
|
mind you should **provide another visual clue** so users know what to fill into
|
|
92
80
|
the input.
|
|
93
81
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
82
|
+
```docoff-react-preview
|
|
83
|
+
React.createElement(() => {
|
|
84
|
+
const [frequency, setFrequency] = React.useState('weekly');
|
|
85
|
+
return (
|
|
86
|
+
<Radio
|
|
87
|
+
isLabelVisible={false}
|
|
88
|
+
label="Newsletter frequency"
|
|
89
|
+
onChange={(e) => setFrequency(e.target.value)}
|
|
90
|
+
options={[
|
|
91
|
+
{
|
|
92
|
+
label: 'I want to subscribe to the weekly newsletter',
|
|
93
|
+
value: 'weekly',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
label: 'I want to subscribe to the monthly newsletter',
|
|
97
|
+
value: 'monthly',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
label: "I don't wish to receive anything",
|
|
101
|
+
value: 'never',
|
|
102
|
+
},
|
|
103
|
+
]}
|
|
104
|
+
value={frequency}
|
|
105
|
+
/>
|
|
106
|
+
);
|
|
107
|
+
})
|
|
108
|
+
```
|
|
121
109
|
|
|
122
110
|
## Horizontal Layout
|
|
123
111
|
|
|
@@ -125,66 +113,66 @@ The default vertical layout is very easy to use and work with. However, there
|
|
|
125
113
|
are situations where horizontal layout suits better — and that's why React UI
|
|
126
114
|
supports this kind of layout as well.
|
|
127
115
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
116
|
+
```docoff-react-preview
|
|
117
|
+
React.createElement(() => {
|
|
118
|
+
const [frequency, setFrequency] = React.useState('weekly');
|
|
119
|
+
return (
|
|
120
|
+
<Radio
|
|
121
|
+
label="Newsletter frequency"
|
|
122
|
+
layout="horizontal"
|
|
123
|
+
onChange={(e) => setFrequency(e.target.value)}
|
|
124
|
+
options={[
|
|
125
|
+
{
|
|
126
|
+
label: 'I want to subscribe to the weekly newsletter',
|
|
127
|
+
value: 'weekly',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
label: 'I want to subscribe to the monthly newsletter',
|
|
131
|
+
value: 'monthly',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: "I don't wish to receive anything",
|
|
135
|
+
value: 'never',
|
|
136
|
+
},
|
|
137
|
+
]}
|
|
138
|
+
value={frequency}
|
|
139
|
+
/>
|
|
140
|
+
);
|
|
141
|
+
})
|
|
142
|
+
```
|
|
155
143
|
|
|
156
144
|
## Help Text
|
|
157
145
|
|
|
158
146
|
You may provide an additional help text to clarify how the input should be
|
|
159
147
|
filled.
|
|
160
148
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
149
|
+
```docoff-react-preview
|
|
150
|
+
React.createElement(() => {
|
|
151
|
+
const [fruit, setFruit] = React.useState('apple');
|
|
152
|
+
return (
|
|
153
|
+
<Radio
|
|
154
|
+
helpText="What do you prefer?"
|
|
155
|
+
label="Your favourite fruit"
|
|
156
|
+
onChange={(e) => setFruit(e.target.value)}
|
|
157
|
+
options={[
|
|
158
|
+
{
|
|
159
|
+
label: 'Apple',
|
|
160
|
+
value: 'apple',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
label: 'Banana',
|
|
164
|
+
value: 'banana',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
label: 'Grapefruit',
|
|
168
|
+
value: 'grapefruit',
|
|
169
|
+
},
|
|
170
|
+
]}
|
|
171
|
+
value={fruit}
|
|
172
|
+
/>
|
|
173
|
+
);
|
|
174
|
+
})
|
|
175
|
+
```
|
|
188
176
|
|
|
189
177
|
## States
|
|
190
178
|
|
|
@@ -195,8 +183,8 @@ should always **provide a validation message for states other than valid** so
|
|
|
195
183
|
users know what happened and what action they should take or what options they
|
|
196
184
|
have.
|
|
197
185
|
|
|
198
|
-
|
|
199
|
-
|
|
186
|
+
```docoff-react-preview
|
|
187
|
+
React.createElement(() => {
|
|
200
188
|
const [fruit, setFruit] = React.useState('apple');
|
|
201
189
|
const options = [
|
|
202
190
|
{
|
|
@@ -243,15 +231,15 @@ have.
|
|
|
243
231
|
/>
|
|
244
232
|
</>
|
|
245
233
|
);
|
|
246
|
-
}
|
|
247
|
-
|
|
234
|
+
})
|
|
235
|
+
```
|
|
248
236
|
|
|
249
237
|
### Disabled State
|
|
250
238
|
|
|
251
239
|
It's possible to disable just some options or the whole set.
|
|
252
240
|
|
|
253
|
-
|
|
254
|
-
|
|
241
|
+
```docoff-react-preview
|
|
242
|
+
React.createElement(() => {
|
|
255
243
|
const [fruit, setFruit] = React.useState('apple');
|
|
256
244
|
const options = [
|
|
257
245
|
{
|
|
@@ -285,27 +273,27 @@ It's possible to disable just some options or the whole set.
|
|
|
285
273
|
/>
|
|
286
274
|
</>
|
|
287
275
|
);
|
|
288
|
-
}
|
|
289
|
-
|
|
276
|
+
})
|
|
277
|
+
```
|
|
290
278
|
|
|
291
279
|
## Forwarding HTML Attributes
|
|
292
280
|
|
|
293
281
|
In addition to the options below in the [component's API](#api) section, you
|
|
294
282
|
can specify [React synthetic events] or you can **add whatever HTML attribute
|
|
295
283
|
you like.** All attributes that don't interfere with the API are forwarded to
|
|
296
|
-
the native HTML `<input
|
|
297
|
-
to improve its accessibility.
|
|
284
|
+
the native HTML `<input>` elements. This enables making the component
|
|
285
|
+
interactive and helps to improve its accessibility.
|
|
298
286
|
|
|
299
287
|
👉 Refer to the MDN reference for the full list of supported attributes of the
|
|
300
288
|
[radio] input type.
|
|
301
289
|
|
|
302
290
|
## API
|
|
303
291
|
|
|
304
|
-
<
|
|
292
|
+
<docoff-react-props src="/components/Radio/Radio.jsx"></docoff-react-props>
|
|
305
293
|
|
|
306
294
|
## Theming
|
|
307
295
|
|
|
308
|
-
Head to [Forms Theming](/customize/theming/forms) to see shared form theming
|
|
296
|
+
Head to [Forms Theming](/docs/customize/theming/forms) to see shared form theming
|
|
309
297
|
options. On top of that, the following options are available for Radio.
|
|
310
298
|
|
|
311
299
|
| Custom Property | Description |
|
|
@@ -26,7 +26,6 @@ export const Radio = ({
|
|
|
26
26
|
|
|
27
27
|
return (
|
|
28
28
|
<fieldset
|
|
29
|
-
{...transferProps(restProps)}
|
|
30
29
|
className={classNames(
|
|
31
30
|
styles.root,
|
|
32
31
|
context && styles.isRootInFormLayout,
|
|
@@ -46,16 +45,15 @@ export const Radio = ({
|
|
|
46
45
|
>
|
|
47
46
|
{label}
|
|
48
47
|
</legend>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
styles.label
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</div>
|
|
48
|
+
{isLabelVisible && (
|
|
49
|
+
<div
|
|
50
|
+
aria-hidden
|
|
51
|
+
className={styles.label}
|
|
52
|
+
id={id && `${id}__displayLabel`}
|
|
53
|
+
>
|
|
54
|
+
{label}
|
|
55
|
+
</div>
|
|
56
|
+
)}
|
|
59
57
|
<div className={styles.field}>
|
|
60
58
|
<div className={styles.options}>
|
|
61
59
|
{
|
|
@@ -69,10 +67,11 @@ export const Radio = ({
|
|
|
69
67
|
key={key}
|
|
70
68
|
>
|
|
71
69
|
<input
|
|
72
|
-
|
|
70
|
+
{...transferProps(restProps)}
|
|
73
71
|
checked={restProps.onChange
|
|
74
72
|
? (value === option.value) || false
|
|
75
73
|
: undefined}
|
|
74
|
+
className={styles.input}
|
|
76
75
|
disabled={disabled || option.disabled}
|
|
77
76
|
id={id && `${id}__item__${key}`}
|
|
78
77
|
name={id}
|