@react-ui-org/react-ui 0.47.0 → 0.49.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/lib.development.js +465 -93
- package/dist/lib.js +1 -1
- package/package.json +1 -1
- package/src/lib/components/Alert/Alert.jsx +3 -0
- package/src/lib/components/Alert/Alert.scss +10 -10
- package/src/lib/components/Alert/README.mdx +18 -2
- package/src/lib/components/Alert/index.js +1 -1
- package/src/lib/components/Badge/Badge.jsx +4 -8
- package/src/lib/components/Badge/Badge.scss +21 -21
- package/src/lib/components/Badge/README.mdx +15 -1
- package/src/lib/components/Badge/index.js +1 -1
- package/src/lib/components/Button/Button.jsx +23 -34
- package/src/lib/components/Button/README.mdx +21 -7
- package/src/lib/components/Button/_base.scss +20 -20
- package/src/lib/components/Button/_priorities.scss +35 -35
- package/src/lib/components/Button/helpers/getRootLabelVisibilityClassName.js +7 -7
- package/src/lib/components/Button/helpers/getRootPriorityClassName.js +3 -3
- package/src/lib/components/Button/index.js +1 -1
- package/src/lib/components/ButtonGroup/ButtonGroup.jsx +2 -8
- package/src/lib/components/ButtonGroup/README.mdx +18 -2
- package/src/lib/components/Card/Card.jsx +6 -10
- package/src/lib/components/Card/Card.scss +13 -13
- package/src/lib/components/Card/CardBody.jsx +6 -10
- package/src/lib/components/Card/CardFooter.jsx +6 -7
- package/src/lib/components/Card/README.mdx +21 -5
- package/src/lib/components/CheckboxField/CheckboxField.jsx +17 -44
- package/src/lib/components/CheckboxField/README.mdx +18 -6
- package/src/lib/components/CheckboxField/index.js +1 -1
- package/src/lib/components/FileInputField/FileInputField.jsx +20 -29
- package/src/lib/components/FileInputField/FileInputField.scss +3 -3
- package/src/lib/components/FileInputField/README.mdx +30 -28
- package/src/lib/components/FileInputField/index.js +1 -1
- package/src/lib/components/FormLayout/FormLayout.jsx +5 -9
- package/src/lib/components/FormLayout/FormLayout.scss +3 -3
- package/src/lib/components/FormLayout/FormLayoutCustomField.jsx +4 -1
- package/src/lib/components/FormLayout/FormLayoutCustomField.scss +8 -8
- package/src/lib/components/FormLayout/README.mdx +28 -13
- package/src/lib/components/Grid/Grid.jsx +31 -35
- package/src/lib/components/Grid/Grid.scss +10 -15
- package/src/lib/components/Grid/GridSpan.jsx +5 -11
- package/src/lib/components/Grid/README.mdx +48 -36
- package/src/lib/components/Grid/_helpers/generateResponsiveCustomProperties.js +11 -3
- package/src/lib/components/Grid/_settings.scss +18 -0
- package/src/lib/components/Grid/_tools.scss +5 -5
- package/src/lib/components/Modal/Modal.jsx +147 -254
- package/src/lib/components/Modal/Modal.scss +7 -55
- package/src/lib/components/Modal/ModalBody.jsx +60 -0
- package/src/lib/components/Modal/ModalBody.scss +18 -0
- package/src/lib/components/Modal/ModalCloseButton.jsx +45 -0
- package/src/lib/components/Modal/ModalCloseButton.scss +18 -0
- package/src/lib/components/Modal/ModalContent.jsx +39 -0
- package/src/lib/components/Modal/ModalContent.scss +5 -0
- package/src/lib/components/Modal/ModalFooter.jsx +42 -0
- package/src/lib/components/Modal/ModalFooter.scss +35 -0
- package/src/lib/components/Modal/ModalHeader.jsx +44 -0
- package/src/lib/components/Modal/ModalHeader.scss +30 -0
- package/src/lib/components/Modal/ModalTitle.jsx +44 -0
- package/src/lib/components/Modal/ModalTitle.scss +10 -0
- package/src/lib/components/Modal/README.mdx +865 -195
- package/src/lib/components/Modal/_helpers/getJustifyClassName.js +19 -0
- package/src/lib/components/Modal/_helpers/getScrollingClassName.js +11 -0
- package/src/lib/components/Modal/_settings.scss +1 -5
- package/src/lib/components/Modal/_theme.scss +6 -0
- package/src/lib/components/Modal/index.js +7 -1
- package/src/lib/components/Paper/Paper.jsx +5 -9
- package/src/lib/components/Paper/Paper.scss +2 -2
- package/src/lib/components/Paper/README.mdx +15 -1
- package/src/lib/components/Paper/index.js +1 -1
- package/src/lib/components/Popover/Popover.jsx +14 -30
- package/src/lib/components/Popover/Popover.scss +7 -6
- package/src/lib/components/Popover/PopoverWrapper.jsx +5 -12
- package/src/lib/components/Popover/PopoverWrapper.scss +3 -0
- package/src/lib/components/Popover/README.mdx +32 -11
- package/src/lib/components/Popover/_theme.scss +1 -1
- package/src/lib/components/Radio/README.mdx +13 -6
- package/src/lib/components/Radio/Radio.jsx +39 -29
- package/src/lib/components/Radio/Radio.scss +3 -3
- package/src/lib/components/Radio/index.js +1 -1
- package/src/lib/components/ScrollView/README.mdx +165 -84
- package/src/lib/components/ScrollView/ScrollView.jsx +115 -117
- package/src/lib/components/ScrollView/ScrollView.scss +18 -16
- package/src/lib/components/ScrollView/index.js +1 -1
- package/src/lib/components/SelectField/README.mdx +83 -7
- package/src/lib/components/SelectField/SelectField.jsx +86 -61
- package/src/lib/components/SelectField/SelectField.scss +8 -8
- package/src/lib/components/SelectField/_components/Option/Option.jsx +46 -0
- package/src/lib/components/SelectField/_components/Option/index.js +1 -0
- package/src/lib/components/SelectField/index.js +1 -1
- package/src/lib/components/Table/README.mdx +25 -9
- package/src/lib/components/Table/Table.jsx +43 -101
- package/src/lib/components/Table/Table.scss +0 -24
- package/src/lib/components/Table/_components/TableBodyCell/TableBodyCell.jsx +46 -0
- package/src/lib/components/Table/_components/TableBodyCell/index.js +1 -0
- package/src/lib/components/Table/_components/TableCell.scss +25 -0
- package/src/lib/components/Table/_components/TableHeaderCell/TableHeaderCell.jsx +71 -0
- package/src/lib/components/Table/_components/TableHeaderCell/index.js +1 -0
- package/src/lib/components/Table/index.js +1 -1
- package/src/lib/components/Tabs/README.mdx +21 -3
- package/src/lib/components/Tabs/Tabs.jsx +6 -1
- package/src/lib/components/Tabs/TabsItem.jsx +3 -0
- package/src/lib/components/Tabs/TabsItem.scss +1 -2
- package/src/lib/components/Text/README.mdx +25 -7
- package/src/lib/components/Text/Text.jsx +3 -7
- package/src/lib/components/Text/Text.scss +6 -6
- package/src/lib/components/Text/_helpers/getRootClampClassName.js +2 -2
- package/src/lib/components/Text/_helpers/getRootHyphensClassName.js +2 -2
- package/src/lib/components/Text/_helpers/getRootWordWrappingClassName.js +2 -2
- package/src/lib/components/Text/index.js +1 -1
- package/src/lib/components/TextArea/README.mdx +34 -31
- package/src/lib/components/TextArea/TextArea.jsx +23 -63
- package/src/lib/components/TextArea/TextArea.scss +8 -8
- package/src/lib/components/TextArea/index.js +1 -1
- package/src/lib/components/TextField/README.mdx +56 -54
- package/src/lib/components/TextField/TextField.jsx +25 -52
- package/src/lib/components/TextField/TextField.scss +9 -9
- package/src/lib/components/TextField/index.js +1 -1
- package/src/lib/components/TextLink/README.mdx +13 -6
- package/src/lib/components/TextLink/TextLink.jsx +0 -10
- package/src/lib/components/TextLink/index.js +1 -1
- package/src/lib/components/Toggle/README.mdx +18 -6
- package/src/lib/components/Toggle/Toggle.jsx +18 -44
- package/src/lib/components/Toggle/index.js +1 -1
- package/src/lib/components/Toolbar/README.mdx +21 -6
- package/src/lib/components/Toolbar/Toolbar.jsx +9 -43
- package/src/lib/components/Toolbar/Toolbar.scss +24 -12
- package/src/lib/components/Toolbar/ToolbarGroup.jsx +7 -26
- package/src/lib/components/Toolbar/ToolbarItem.jsx +3 -7
- package/src/lib/components/Toolbar/_helpers/getAlignClassName.js +19 -0
- package/src/lib/components/Toolbar/_helpers/getJustifyClassName.js +16 -0
- package/src/lib/components/_helpers/getRootColorClassName.js +10 -10
- package/src/lib/components/_helpers/getRootSizeClassName.js +3 -3
- package/src/lib/components/_helpers/transferProps.js +1 -1
- package/src/lib/index.js +24 -16
- package/src/lib/provider/withGlobalProps.jsx +20 -3
- package/src/lib/styles/tools/form-fields/_box-field-layout.scss +15 -15
- package/src/lib/styles/tools/form-fields/_inline-field-elements.scss +1 -1
- package/src/lib/styles/tools/form-fields/_inline-field-layout.scss +9 -9
- package/src/lib/theme.scss +18 -26
- package/src/lib/translations/en.js +1 -1
- package/src/lib/components/Grid/_theme.scss +0 -11
- package/src/lib/components/ScrollView/_theme.scss +0 -2
- package/src/lib/components/withForwardedRef.jsx +0 -11
package/package.json
CHANGED
@@ -4,6 +4,7 @@ import {
|
|
4
4
|
RUIContext,
|
5
5
|
withGlobalProps,
|
6
6
|
} from '../../provider';
|
7
|
+
import { transferProps } from '../_helpers/transferProps';
|
7
8
|
import { classNames } from '../../utils/classNames';
|
8
9
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
9
10
|
import styles from './Alert.scss';
|
@@ -14,11 +15,13 @@ export const Alert = ({
|
|
14
15
|
icon,
|
15
16
|
id,
|
16
17
|
onClose,
|
18
|
+
...restProps
|
17
19
|
}) => {
|
18
20
|
const { translations } = useContext(RUIContext);
|
19
21
|
|
20
22
|
return (
|
21
23
|
<div
|
24
|
+
{...transferProps(restProps)}
|
22
25
|
className={classNames(
|
23
26
|
styles.root,
|
24
27
|
getRootColorClassName(color, styles),
|
@@ -65,42 +65,42 @@
|
|
65
65
|
top: -0.1em;
|
66
66
|
}
|
67
67
|
|
68
|
-
.
|
68
|
+
.isRootColorPrimary {
|
69
69
|
@include tools.color(primary);
|
70
70
|
}
|
71
71
|
|
72
|
-
.
|
72
|
+
.isRootColorSecondary {
|
73
73
|
@include tools.color(secondary);
|
74
74
|
}
|
75
75
|
|
76
|
-
.
|
76
|
+
.isRootColorSuccess {
|
77
77
|
@include tools.color(success);
|
78
78
|
}
|
79
79
|
|
80
|
-
.
|
80
|
+
.isRootColorWarning {
|
81
81
|
@include tools.color(warning);
|
82
82
|
}
|
83
83
|
|
84
|
-
.
|
84
|
+
.isRootColorDanger {
|
85
85
|
@include tools.color(danger);
|
86
86
|
}
|
87
87
|
|
88
|
-
.
|
88
|
+
.isRootColorHelp {
|
89
89
|
@include tools.color(help);
|
90
90
|
}
|
91
91
|
|
92
|
-
.
|
92
|
+
.isRootColorInfo {
|
93
93
|
@include tools.color(info);
|
94
94
|
}
|
95
95
|
|
96
|
-
.
|
96
|
+
.isRootColorNote {
|
97
97
|
@include tools.color(note);
|
98
98
|
}
|
99
99
|
|
100
|
-
.
|
100
|
+
.isRootColorLight {
|
101
101
|
@include tools.color(light);
|
102
102
|
}
|
103
103
|
|
104
|
-
.
|
104
|
+
.isRootColorDark {
|
105
105
|
@include tools.color(dark);
|
106
106
|
}
|
@@ -12,8 +12,10 @@ import {
|
|
12
12
|
} from 'docz'
|
13
13
|
import Icon from '../../../docs/_components/Icon'
|
14
14
|
import Placeholder from '../../../docs/_components/Placeholder'
|
15
|
-
import
|
16
|
-
|
15
|
+
import {
|
16
|
+
Button,
|
17
|
+
Alert,
|
18
|
+
} from '../..'
|
17
19
|
|
18
20
|
Alert presents feedback or important information to users.
|
19
21
|
|
@@ -202,6 +204,17 @@ click on the close button:
|
|
202
204
|
}}
|
203
205
|
</Playground>
|
204
206
|
|
207
|
+
## Forwarding HTML Attributes
|
208
|
+
|
209
|
+
In addition to the options below in the [component's API](#api) section, you
|
210
|
+
can specify [React synthetic events] or **any HTML attribute you like.** All
|
211
|
+
attributes that don't interfere with the API are forwarded to the root `<div>`
|
212
|
+
HTML element. This enables making the component interactive and helps to improve
|
213
|
+
its accessibility.
|
214
|
+
|
215
|
+
👉 Refer to the MDN reference for the full list of supported attributes of the
|
216
|
+
[div] element.
|
217
|
+
|
205
218
|
## API
|
206
219
|
|
207
220
|
<Props table of={Alert} />
|
@@ -233,3 +246,6 @@ Where:
|
|
233
246
|
(see alert [color variants](#color-variants) and [API](#api)),
|
234
247
|
- `<PROPERTY>` is one of `color` (color of text), `foreground-color` (color of
|
235
248
|
border, icon, links, and emphasis), or `background-color`.
|
249
|
+
|
250
|
+
[React synthetic events]: https://reactjs.org/docs/events.html
|
251
|
+
[div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
|
@@ -1 +1 @@
|
|
1
|
-
export { default } from './Alert';
|
1
|
+
export { default as Alert } from './Alert';
|
@@ -1,23 +1,24 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
+
import { transferProps } from '../_helpers/transferProps';
|
4
5
|
import { classNames } from '../../utils/classNames';
|
5
6
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
6
7
|
import styles from './Badge.scss';
|
7
8
|
|
8
9
|
export const Badge = ({
|
9
10
|
color,
|
10
|
-
id,
|
11
11
|
label,
|
12
12
|
priority,
|
13
|
+
...restProps
|
13
14
|
}) => (
|
14
15
|
<div
|
16
|
+
{...transferProps(restProps)}
|
15
17
|
className={classNames(
|
16
18
|
styles.root,
|
17
|
-
priority === 'outline' && styles.
|
19
|
+
priority === 'outline' && styles.isRootPriorityOutline,
|
18
20
|
getRootColorClassName(color, styles),
|
19
21
|
)}
|
20
|
-
id={id}
|
21
22
|
>
|
22
23
|
{label}
|
23
24
|
</div>
|
@@ -25,7 +26,6 @@ export const Badge = ({
|
|
25
26
|
|
26
27
|
Badge.defaultProps = {
|
27
28
|
color: 'note',
|
28
|
-
id: undefined,
|
29
29
|
priority: 'filled',
|
30
30
|
};
|
31
31
|
|
@@ -36,10 +36,6 @@ Badge.propTypes = {
|
|
36
36
|
color: PropTypes.oneOf(
|
37
37
|
['primary', 'secondary', 'success', 'warning', 'danger', 'help', 'info', 'note', 'light', 'dark'],
|
38
38
|
),
|
39
|
-
/**
|
40
|
-
* ID of the root HTML element.
|
41
|
-
*/
|
42
|
-
id: PropTypes.string,
|
43
39
|
/**
|
44
40
|
* Text to be displayed.
|
45
41
|
*/
|
@@ -24,59 +24,59 @@ $_badge-size: 1.25rem;
|
|
24
24
|
box-shadow: var(--rui-local-box-shadow, #{0 0 0 2px rgb(255 255 255 / 80%)});
|
25
25
|
}
|
26
26
|
|
27
|
-
.
|
27
|
+
.isRootColorPrimary {
|
28
28
|
--rui-local-color: #{map.get(colors.$brand, on-primary)};
|
29
29
|
--rui-local-background-color: #{map.get(colors.$brand, primary)};
|
30
30
|
}
|
31
31
|
|
32
|
-
.
|
32
|
+
.isRootColorSecondary {
|
33
33
|
--rui-local-color: #{map.get(colors.$brand, on-secondary)};
|
34
34
|
--rui-local-background-color: #{map.get(colors.$brand, secondary)};
|
35
35
|
}
|
36
36
|
|
37
|
-
.
|
37
|
+
.isRootColorSuccess {
|
38
38
|
--rui-local-color: #{map.get(colors.$ui, on-success)};
|
39
39
|
--rui-local-background-color: #{map.get(colors.$ui, success)};
|
40
40
|
}
|
41
41
|
|
42
|
-
.
|
42
|
+
.isRootColorWarning {
|
43
43
|
--rui-local-color: #{map.get(colors.$ui, on-warning)};
|
44
44
|
--rui-local-background-color: #{map.get(colors.$ui, warning)};
|
45
45
|
}
|
46
46
|
|
47
|
-
.
|
47
|
+
.isRootColorDanger {
|
48
48
|
--rui-local-color: #{map.get(colors.$ui, on-danger)};
|
49
49
|
--rui-local-background-color: #{map.get(colors.$ui, danger)};
|
50
50
|
}
|
51
51
|
|
52
|
-
.
|
52
|
+
.isRootColorHelp {
|
53
53
|
--rui-local-color: #{map.get(colors.$ui, on-help)};
|
54
54
|
--rui-local-background-color: #{map.get(colors.$ui, help)};
|
55
55
|
}
|
56
56
|
|
57
|
-
.
|
57
|
+
.isRootColorInfo {
|
58
58
|
--rui-local-color: #{map.get(colors.$ui, on-info)};
|
59
59
|
--rui-local-background-color: #{map.get(colors.$ui, info)};
|
60
60
|
}
|
61
61
|
|
62
|
-
.
|
62
|
+
.isRootColorNote {
|
63
63
|
--rui-local-color: #{map.get(colors.$ui, on-note)};
|
64
64
|
--rui-local-background-color: #{map.get(colors.$ui, note)};
|
65
65
|
}
|
66
66
|
|
67
|
-
.
|
67
|
+
.isRootColorLight {
|
68
68
|
--rui-local-color: #{colors.$dark};
|
69
69
|
--rui-local-background-color: #{colors.$light};
|
70
70
|
--rui-local-box-shadow: none;
|
71
71
|
}
|
72
72
|
|
73
|
-
.
|
73
|
+
.isRootColorDark {
|
74
74
|
--rui-local-color: #{colors.$light};
|
75
75
|
--rui-local-background-color: #{colors.$dark};
|
76
76
|
--rui-local-box-shadow: none;
|
77
77
|
}
|
78
78
|
|
79
|
-
.
|
79
|
+
.isRootPriorityOutline {
|
80
80
|
--rui-local-background-color: transparent;
|
81
81
|
--rui-local-box-shadow: none;
|
82
82
|
|
@@ -85,42 +85,42 @@ $_badge-size: 1.25rem;
|
|
85
85
|
border: borders.$width solid currentColor;
|
86
86
|
}
|
87
87
|
|
88
|
-
.
|
88
|
+
.isRootPriorityOutline.isRootColorPrimary {
|
89
89
|
--rui-local-color: #{map.get(colors.$brand, primary)};
|
90
90
|
}
|
91
91
|
|
92
|
-
.
|
92
|
+
.isRootPriorityOutline.isRootColorSecondary {
|
93
93
|
--rui-local-color: #{map.get(colors.$brand, secondary)};
|
94
94
|
}
|
95
95
|
|
96
|
-
.
|
96
|
+
.isRootPriorityOutline.isRootColorSuccess {
|
97
97
|
--rui-local-color: #{map.get(colors.$ui, success)};
|
98
98
|
}
|
99
99
|
|
100
|
-
.
|
100
|
+
.isRootPriorityOutline.isRootColorWarning {
|
101
101
|
--rui-local-color: #{map.get(colors.$ui, warning)};
|
102
102
|
}
|
103
103
|
|
104
|
-
.
|
104
|
+
.isRootPriorityOutline.isRootColorDanger {
|
105
105
|
--rui-local-color: #{map.get(colors.$ui, danger)};
|
106
106
|
}
|
107
107
|
|
108
|
-
.
|
108
|
+
.isRootPriorityOutline.isRootColorHelp {
|
109
109
|
--rui-local-color: #{map.get(colors.$ui, help)};
|
110
110
|
}
|
111
111
|
|
112
|
-
.
|
112
|
+
.isRootPriorityOutline.isRootColorInfo {
|
113
113
|
--rui-local-color: #{map.get(colors.$ui, info)};
|
114
114
|
}
|
115
115
|
|
116
|
-
.
|
116
|
+
.isRootPriorityOutline.isRootColorNote {
|
117
117
|
--rui-local-color: #{map.get(colors.$ui, note)};
|
118
118
|
}
|
119
119
|
|
120
|
-
.
|
120
|
+
.isRootPriorityOutline.isRootColorLight {
|
121
121
|
--rui-local-color: #{colors.$light};
|
122
122
|
}
|
123
123
|
|
124
|
-
.
|
124
|
+
.isRootPriorityOutline.isRootColorDark {
|
125
125
|
--rui-local-color: #{colors.$dark};
|
126
126
|
}
|
@@ -13,7 +13,7 @@ import {
|
|
13
13
|
Props,
|
14
14
|
} from 'docz'
|
15
15
|
import Placeholder from '../../../docs/_components/Placeholder'
|
16
|
-
import { Badge } from '
|
16
|
+
import { Badge } from '../..'
|
17
17
|
|
18
18
|
## Basic Usage
|
19
19
|
|
@@ -115,6 +115,20 @@ Medium-emphasis priority to provide additional context in an unobtrusive way.
|
|
115
115
|
<Badge priority="outline" label="Dark" color="dark" />
|
116
116
|
</Playground>
|
117
117
|
|
118
|
+
## Forwarding HTML Attributes
|
119
|
+
|
120
|
+
In addition to the options below in the [component's API](#api) section, you
|
121
|
+
can specify [React synthetic events] or **any HTML attribute you like.** All
|
122
|
+
attributes that don't interfere with the API are forwarded to the root `<div>`
|
123
|
+
HTML element. This enables making the component interactive and helps to improve
|
124
|
+
its accessibility.
|
125
|
+
|
126
|
+
👉 Refer to the MDN reference for the full list of supported attributes of the
|
127
|
+
[div] element.
|
128
|
+
|
118
129
|
## API
|
119
130
|
|
120
131
|
<Props table of={Badge} />
|
132
|
+
|
133
|
+
[React synthetic events]: https://reactjs.org/docs/events.html
|
134
|
+
[div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
|
@@ -1 +1 @@
|
|
1
|
-
export { default } from './Badge';
|
1
|
+
export { default as Badge } from './Badge';
|
@@ -6,30 +6,29 @@ import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
|
6
6
|
import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
|
7
7
|
import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
|
8
8
|
import { transferProps } from '../_helpers/transferProps';
|
9
|
-
import withForwardedRef from '../withForwardedRef';
|
10
9
|
import { ButtonGroupContext } from '../ButtonGroup';
|
11
10
|
import getRootLabelVisibilityClassName from './helpers/getRootLabelVisibilityClassName';
|
12
11
|
import getRootPriorityClassName from './helpers/getRootPriorityClassName';
|
13
12
|
import styles from './Button.scss';
|
14
13
|
|
15
|
-
export const Button = ({
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
14
|
+
export const Button = React.forwardRef((props, ref) => {
|
15
|
+
const {
|
16
|
+
afterLabel,
|
17
|
+
beforeLabel,
|
18
|
+
block,
|
19
|
+
disabled,
|
20
|
+
endCorner,
|
21
|
+
feedbackIcon,
|
22
|
+
id,
|
23
|
+
label,
|
24
|
+
labelVisibility,
|
25
|
+
priority,
|
26
|
+
size,
|
27
|
+
startCorner,
|
28
|
+
color,
|
29
|
+
...restProps
|
30
|
+
} = props;
|
31
|
+
|
33
32
|
const context = useContext(ButtonGroupContext);
|
34
33
|
|
35
34
|
return (
|
@@ -49,14 +48,13 @@ export const Button = ({
|
|
49
48
|
styles,
|
50
49
|
),
|
51
50
|
getRootLabelVisibilityClassName(labelVisibility, styles),
|
52
|
-
resolveContextOrProp(context && context.block, block) && styles.
|
53
|
-
context && styles.
|
51
|
+
resolveContextOrProp(context && context.block, block) && styles.isRootBlock,
|
52
|
+
context && styles.isRootGrouped,
|
54
53
|
feedbackIcon && styles.hasRootFeedback,
|
55
54
|
)}
|
56
55
|
disabled={resolveContextOrProp(context && context.disabled, disabled) || !!feedbackIcon}
|
57
56
|
id={id}
|
58
|
-
ref={
|
59
|
-
type={type}
|
57
|
+
ref={ref}
|
60
58
|
>
|
61
59
|
{startCorner && (
|
62
60
|
<span className={styles.startCorner}>
|
@@ -92,7 +90,7 @@ export const Button = ({
|
|
92
90
|
</button>
|
93
91
|
/* eslint-enable react/button-has-type */
|
94
92
|
);
|
95
|
-
};
|
93
|
+
});
|
96
94
|
|
97
95
|
Button.defaultProps = {
|
98
96
|
afterLabel: null,
|
@@ -102,7 +100,6 @@ Button.defaultProps = {
|
|
102
100
|
disabled: false,
|
103
101
|
endCorner: null,
|
104
102
|
feedbackIcon: null,
|
105
|
-
forwardedRef: undefined,
|
106
103
|
id: undefined,
|
107
104
|
labelVisibility: 'xs',
|
108
105
|
priority: 'filled',
|
@@ -147,14 +144,6 @@ Button.propTypes = {
|
|
147
144
|
* button is in feedback state.
|
148
145
|
*/
|
149
146
|
feedbackIcon: PropTypes.node,
|
150
|
-
/**
|
151
|
-
* Reference forwarded to the `button` element.
|
152
|
-
*/
|
153
|
-
forwardedRef: PropTypes.oneOfType([
|
154
|
-
PropTypes.func,
|
155
|
-
// eslint-disable-next-line react/forbid-prop-types
|
156
|
-
PropTypes.shape({ current: PropTypes.any }),
|
157
|
-
]),
|
158
147
|
/**
|
159
148
|
* ID of the root HTML element.
|
160
149
|
*
|
@@ -194,6 +183,6 @@ Button.propTypes = {
|
|
194
183
|
type: PropTypes.oneOf(['button', 'submit']),
|
195
184
|
};
|
196
185
|
|
197
|
-
export const ButtonWithGlobalProps =
|
186
|
+
export const ButtonWithGlobalProps = withGlobalProps(Button, 'Button');
|
198
187
|
|
199
188
|
export default ButtonWithGlobalProps;
|
@@ -12,8 +12,10 @@ import {
|
|
12
12
|
} from 'docz'
|
13
13
|
import Icon from '../../../docs/_components/Icon'
|
14
14
|
import Placeholder from '../../../docs/_components/Placeholder'
|
15
|
-
import
|
16
|
-
|
15
|
+
import {
|
16
|
+
Badge,
|
17
|
+
Button,
|
18
|
+
} from '../..'
|
17
19
|
|
18
20
|
Buttons allow users to take actions.
|
19
21
|
|
@@ -395,12 +397,22 @@ Flat buttons in feedback state:
|
|
395
397
|
👉 Visit the [CSS Helpers](/css-helpers/animation) section to see how the icon
|
396
398
|
animation is made.
|
397
399
|
|
398
|
-
##
|
400
|
+
## Forwarding HTML Attributes
|
401
|
+
|
402
|
+
In addition to the options below in the [component's API](#api) section, you
|
403
|
+
can specify [React synthetic events] or **any HTML attribute you like.** All
|
404
|
+
attributes that don't interfere with the API are forwarded to the native HTML
|
405
|
+
`<button>`. This enables making the component interactive and helps to improve
|
406
|
+
its accessibility.
|
407
|
+
|
408
|
+
👉 Refer to the MDN reference for the full list of supported attributes of the
|
409
|
+
[button] element.
|
399
410
|
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
411
|
+
## Forwarding ref
|
412
|
+
|
413
|
+
If you provide [ref], it is forwarded to the native HTML `<button>` element.
|
414
|
+
|
415
|
+
## API
|
404
416
|
|
405
417
|
<Props table of={Button} />
|
406
418
|
|
@@ -560,3 +572,5 @@ feedback state.
|
|
560
572
|
| `--rui-Button--feedback__cursor` | Cursor to show on hovering buttons in feedback state |
|
561
573
|
|
562
574
|
[React synthetic events]: https://reactjs.org/docs/events.html
|
575
|
+
[button]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attributes
|
576
|
+
[ref]: https://reactjs.org/docs/refs-and-the-dom.html
|
@@ -49,19 +49,19 @@
|
|
49
49
|
align-items: center;
|
50
50
|
}
|
51
51
|
|
52
|
-
.
|
52
|
+
.isRootSizeSmall {
|
53
53
|
@include tools.button-size(small);
|
54
54
|
}
|
55
55
|
|
56
|
-
.
|
56
|
+
.isRootSizeMedium {
|
57
57
|
@include tools.button-size(medium);
|
58
58
|
}
|
59
59
|
|
60
|
-
.
|
60
|
+
.isRootSizeLarge {
|
61
61
|
@include tools.button-size(large);
|
62
62
|
}
|
63
63
|
|
64
|
-
.
|
64
|
+
.isRootBlock {
|
65
65
|
width: 100%;
|
66
66
|
}
|
67
67
|
|
@@ -76,7 +76,7 @@
|
|
76
76
|
color: transparent;
|
77
77
|
}
|
78
78
|
|
79
|
-
.
|
79
|
+
.isRootGrouped {
|
80
80
|
z-index: map.get(settings.$group-z-indexes, button);
|
81
81
|
|
82
82
|
&:not(:first-child) {
|
@@ -96,52 +96,52 @@
|
|
96
96
|
}
|
97
97
|
}
|
98
98
|
|
99
|
-
.
|
100
|
-
.
|
99
|
+
.isRootGrouped .startCorner,
|
100
|
+
.isRootGrouped .endCorner {
|
101
101
|
z-index: map.get(settings.$group-z-indexes, button-overflowing-elements);
|
102
102
|
}
|
103
103
|
|
104
|
-
.
|
105
|
-
.
|
106
|
-
.
|
107
|
-
.
|
108
|
-
.
|
109
|
-
.
|
110
|
-
.
|
104
|
+
.hasLabelHidden,
|
105
|
+
.hasLabelVisibleSm,
|
106
|
+
.hasLabelVisibleMd,
|
107
|
+
.hasLabelVisibleLg,
|
108
|
+
.hasLabelVisibleXl,
|
109
|
+
.hasLabelVisibleX2l,
|
110
|
+
.hasLabelVisibleX3l {
|
111
111
|
@include tools.hide-label();
|
112
112
|
}
|
113
113
|
|
114
|
-
.
|
114
|
+
.hasLabelVisibleSm {
|
115
115
|
@include breakpoint.up(sm) {
|
116
116
|
@include tools.show-label();
|
117
117
|
}
|
118
118
|
}
|
119
119
|
|
120
|
-
.
|
120
|
+
.hasLabelVisibleMd {
|
121
121
|
@include breakpoint.up(md) {
|
122
122
|
@include tools.show-label();
|
123
123
|
}
|
124
124
|
}
|
125
125
|
|
126
|
-
.
|
126
|
+
.hasLabelVisibleLg {
|
127
127
|
@include breakpoint.up(lg) {
|
128
128
|
@include tools.show-label();
|
129
129
|
}
|
130
130
|
}
|
131
131
|
|
132
|
-
.
|
132
|
+
.hasLabelVisibleXl {
|
133
133
|
@include breakpoint.up(xl) {
|
134
134
|
@include tools.show-label();
|
135
135
|
}
|
136
136
|
}
|
137
137
|
|
138
|
-
.
|
138
|
+
.hasLabelVisibleX2l {
|
139
139
|
@include breakpoint.up(x2l) {
|
140
140
|
@include tools.show-label();
|
141
141
|
}
|
142
142
|
}
|
143
143
|
|
144
|
-
.
|
144
|
+
.hasLabelVisibleX3l {
|
145
145
|
@include breakpoint.up(x3l) {
|
146
146
|
@include tools.show-label();
|
147
147
|
}
|