@react-ui-org/react-ui 0.55.1 → 0.56.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/.nvmrc +1 -1
- package/dist/react-ui.css +16 -21
- package/dist/react-ui.development.css +18 -37
- package/dist/react-ui.development.js +101 -91
- package/dist/react-ui.js +1 -1
- package/package.json +41 -39
- package/src/components/Alert/Alert.jsx +1 -1
- package/src/components/Alert/README.md +5 -4
- package/src/components/Badge/Badge.jsx +1 -1
- package/src/components/Badge/README.md +5 -4
- package/src/components/Button/Button.jsx +1 -1
- package/src/components/Button/README.md +20 -18
- package/src/components/Button/_base.scss +1 -4
- package/src/components/ButtonGroup/ButtonGroup.jsx +1 -1
- package/src/components/ButtonGroup/README.md +5 -4
- package/src/components/Card/Card.jsx +1 -1
- package/src/components/Card/CardBody.jsx +1 -1
- package/src/components/Card/CardFooter.jsx +1 -1
- package/src/components/Card/README.md +5 -4
- package/src/components/CheckboxField/CheckboxField.jsx +2 -2
- package/src/components/CheckboxField/README.md +8 -4
- package/src/components/FileInputField/FileInputField.jsx +3 -3
- package/src/components/FileInputField/README.md +8 -4
- package/src/components/FormLayout/FormLayout.jsx +1 -1
- package/src/components/FormLayout/FormLayoutCustomField.jsx +1 -1
- package/src/components/FormLayout/README.md +5 -4
- package/src/components/Grid/Grid.jsx +1 -1
- package/src/components/Grid/Grid.module.scss +2 -4
- package/src/components/Grid/GridSpan.jsx +1 -1
- package/src/components/Grid/README.md +6 -4
- package/src/components/Grid/_settings.scss +2 -2
- package/src/components/InputGroup/InputGroup.jsx +2 -2
- package/src/components/InputGroup/README.md +5 -4
- package/src/components/Modal/Modal.jsx +1 -1
- package/src/components/Modal/Modal.module.scss +1 -1
- package/src/components/Modal/ModalBody.jsx +1 -1
- package/src/components/Modal/ModalCloseButton.jsx +1 -1
- package/src/components/Modal/ModalContent.jsx +1 -1
- package/src/components/Modal/ModalFooter.jsx +1 -1
- package/src/components/Modal/ModalHeader.jsx +2 -4
- package/src/components/Modal/ModalTitle.jsx +2 -4
- package/src/components/Modal/README.md +3 -2
- package/src/components/Paper/Paper.jsx +1 -1
- package/src/components/Paper/README.md +5 -4
- package/src/components/Popover/Popover.jsx +1 -1
- package/src/components/Popover/PopoverWrapper.jsx +1 -1
- package/src/components/Popover/README.md +5 -4
- package/src/components/Radio/README.md +8 -4
- package/src/components/Radio/Radio.jsx +2 -2
- package/src/components/ScrollView/README.md +5 -4
- package/src/components/ScrollView/ScrollView.jsx +1 -1
- package/src/components/ScrollView/ScrollView.module.scss +2 -4
- package/src/components/SelectField/README.md +8 -4
- package/src/components/SelectField/SelectField.jsx +2 -2
- package/src/components/Table/README.md +5 -4
- package/src/components/Table/Table.jsx +1 -1
- package/src/components/Tabs/README.md +3 -2
- package/src/components/Tabs/Tabs.jsx +1 -1
- package/src/components/Tabs/TabsItem.jsx +1 -1
- package/src/components/Text/README.md +3 -2
- package/src/components/Text/Text.jsx +1 -1
- package/src/components/TextArea/README.md +8 -4
- package/src/components/TextArea/TextArea.jsx +2 -2
- package/src/components/TextField/README.md +8 -4
- package/src/components/TextField/TextField.jsx +2 -2
- package/src/components/TextLink/README.md +5 -4
- package/src/components/TextLink/TextLink.jsx +1 -1
- package/src/components/Toggle/README.md +8 -4
- package/src/components/Toggle/Toggle.jsx +2 -2
- package/src/components/Toolbar/README.md +5 -4
- package/src/components/Toolbar/Toolbar.jsx +1 -1
- package/src/components/Toolbar/ToolbarGroup.jsx +1 -1
- package/src/components/Toolbar/ToolbarItem.jsx +1 -1
- package/src/index.js +1 -0
- package/src/provider/RUIProvider.jsx +6 -3
- package/src/styles/tools/form-fields/_box-field-layout.scss +1 -2
- package/src/styles/tools/form-fields/_inline-field-layout.scss +1 -0
- package/src/utils/mergeDeep.js +28 -0
- package/src/{components/_helpers → utils}/transferProps.js +0 -8
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@react-ui-org/react-ui",
|
3
3
|
"description": "React UI is a themeable UI library for React apps.",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.56.0",
|
5
5
|
"keywords": [
|
6
6
|
"react",
|
7
7
|
"ui",
|
@@ -29,8 +29,7 @@
|
|
29
29
|
"url": "https://github.com/react-ui-org/react-ui"
|
30
30
|
},
|
31
31
|
"engines": {
|
32
|
-
"node": ">=
|
33
|
-
"npm": ">=9"
|
32
|
+
"node": ">=20"
|
34
33
|
},
|
35
34
|
"scripts": {
|
36
35
|
"build": "webpack --mode=production && webpack --mode=development",
|
@@ -54,54 +53,57 @@
|
|
54
53
|
},
|
55
54
|
"peerDependencies": {
|
56
55
|
"prop-types": "^15.8.0",
|
57
|
-
"react": "
|
58
|
-
"react-dom": "
|
56
|
+
"react": "~18.2.0",
|
57
|
+
"react-dom": "~18.2.0"
|
59
58
|
},
|
60
59
|
"devDependencies": {
|
61
|
-
"@babel/cli": "^7.
|
62
|
-
"@babel/core": "^7.
|
63
|
-
"@babel/eslint-parser": "^7.
|
60
|
+
"@babel/cli": "^7.24.7",
|
61
|
+
"@babel/core": "^7.24.7",
|
62
|
+
"@babel/eslint-parser": "^7.24.7",
|
64
63
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
65
|
-
"@babel/plugin-transform-spread": "^7.
|
66
|
-
"@babel/preset-env": "^7.
|
67
|
-
"@babel/preset-react": "^7.
|
68
|
-
"@babel/register": "^7.
|
64
|
+
"@babel/plugin-transform-spread": "^7.24.7",
|
65
|
+
"@babel/preset-env": "^7.24.7",
|
66
|
+
"@babel/preset-react": "^7.24.7",
|
67
|
+
"@babel/register": "^7.24.6",
|
68
|
+
"@stylistic/stylelint-config": "^1.0.1",
|
69
69
|
"@svgr/webpack": "^8.1.0",
|
70
|
-
"@testing-library/jest-dom": "^6.
|
71
|
-
"@testing-library/react": "^
|
72
|
-
"@testing-library/user-event": "^14.
|
70
|
+
"@testing-library/jest-dom": "^6.4.6",
|
71
|
+
"@testing-library/react": "^16.0.0",
|
72
|
+
"@testing-library/user-event": "^14.5.2",
|
73
73
|
"@visionappscz/eslint-config-visionapps": "^1.7.0",
|
74
|
-
"@visionappscz/stylelint-config": "^
|
75
|
-
"autoprefixer": "^10.4.
|
76
|
-
"babel-jest": "^29.
|
74
|
+
"@visionappscz/stylelint-config": "^4.0.0-beta1",
|
75
|
+
"autoprefixer": "^10.4.19",
|
76
|
+
"babel-jest": "^29.7.0",
|
77
77
|
"babel-loader": "^9.1.3",
|
78
|
-
"core-js": "^3.
|
79
|
-
"css-loader": "^
|
80
|
-
"eslint": "^8.
|
78
|
+
"core-js": "^3.37.1",
|
79
|
+
"css-loader": "^7.1.2",
|
80
|
+
"eslint": "^8.57.0",
|
81
81
|
"eslint-config-airbnb": "^19.0.4",
|
82
|
-
"eslint-plugin-import": "^2.
|
83
|
-
"eslint-plugin-jsx-a11y": "^6.
|
82
|
+
"eslint-plugin-import": "^2.29.1",
|
83
|
+
"eslint-plugin-jsx-a11y": "^6.9.0",
|
84
84
|
"eslint-plugin-markdown": "^3.0.1",
|
85
|
-
"eslint-plugin-react": "^7.
|
86
|
-
"eslint-plugin-react-hooks": "^4.6.
|
85
|
+
"eslint-plugin-react": "^7.34.3",
|
86
|
+
"eslint-plugin-react-hooks": "^4.6.2",
|
87
87
|
"identity-obj-proxy": "^3.0.0",
|
88
|
-
"jest": "^29.
|
89
|
-
"jest-environment-jsdom": "^29.
|
90
|
-
"markdownlint-cli2": "
|
91
|
-
"mini-css-extract-plugin": "^2.
|
92
|
-
"postcss": "^8.4.
|
93
|
-
"postcss-loader": "^
|
88
|
+
"jest": "^29.7.0",
|
89
|
+
"jest-environment-jsdom": "^29.7.0",
|
90
|
+
"markdownlint-cli2": "^0.13.0",
|
91
|
+
"mini-css-extract-plugin": "^2.9.0",
|
92
|
+
"postcss": "^8.4.39",
|
93
|
+
"postcss-loader": "^8.1.1",
|
94
94
|
"prop-types": "^15.8.1",
|
95
|
-
"
|
96
|
-
"
|
97
|
-
"
|
98
|
-
"
|
99
|
-
"
|
100
|
-
"webpack": "^5.
|
95
|
+
"react": "~18.2.0",
|
96
|
+
"react-dom": "~18.2.0",
|
97
|
+
"sass": "^1.77.6",
|
98
|
+
"sass-loader": "^14.2.1",
|
99
|
+
"stylelint": "^16.7.0",
|
100
|
+
"stylelint-webpack-plugin": "^5.0.1",
|
101
|
+
"terser-webpack-plugin": "^5.3.10",
|
102
|
+
"webpack": "^5.92.1",
|
101
103
|
"webpack-cli": "^5.1.4",
|
102
|
-
"webpack-visualizer-plugin2": "^1.
|
104
|
+
"webpack-visualizer-plugin2": "^1.1.0"
|
103
105
|
},
|
104
106
|
"resolutions": {
|
105
|
-
"@babel/plugin-transform-spread": "7.
|
107
|
+
"@babel/plugin-transform-spread": "7.24.7"
|
106
108
|
}
|
107
109
|
}
|
@@ -4,8 +4,8 @@ import {
|
|
4
4
|
RUIContext,
|
5
5
|
withGlobalProps,
|
6
6
|
} from '../../provider';
|
7
|
-
import { transferProps } from '../_helpers/transferProps';
|
8
7
|
import { classNames } from '../../utils/classNames';
|
8
|
+
import { transferProps } from '../../utils/transferProps';
|
9
9
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
10
10
|
import styles from './Alert.module.scss';
|
11
11
|
|
@@ -171,10 +171,11 @@ React.createElement(() => {
|
|
171
171
|
## Forwarding HTML Attributes
|
172
172
|
|
173
173
|
In addition to the options below in the [component's API](#api) section, you
|
174
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
175
|
-
with the API of the React component
|
176
|
-
|
177
|
-
|
174
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
175
|
+
interfere with the API of the React component and that aren't filtered out by
|
176
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
177
|
+
root `<div>` HTML element. This enables making the component interactive and
|
178
|
+
helps to improve its accessibility.
|
178
179
|
|
179
180
|
👉 For the full list of supported attributes refer to:
|
180
181
|
|
@@ -1,8 +1,8 @@
|
|
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';
|
5
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
6
6
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
7
7
|
import styles from './Badge.module.scss';
|
8
8
|
|
@@ -87,10 +87,11 @@ Medium-emphasis priority to provide additional context in an unobtrusive way.
|
|
87
87
|
## Forwarding HTML Attributes
|
88
88
|
|
89
89
|
In addition to the options below in the [component's API](#api) section, you
|
90
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
91
|
-
with the API of the React component
|
92
|
-
|
93
|
-
|
90
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
91
|
+
interfere with the API of the React component and that aren't filtered out by
|
92
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
93
|
+
root `<div>` HTML element. This enables making the component interactive and
|
94
|
+
helps to improve its accessibility.
|
94
95
|
|
95
96
|
👉 For the full list of supported attributes refer to:
|
96
97
|
|
@@ -2,10 +2,10 @@ import PropTypes from 'prop-types';
|
|
2
2
|
import React, { useContext } from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
5
6
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
6
7
|
import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
|
7
8
|
import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
|
8
|
-
import { transferProps } from '../_helpers/transferProps';
|
9
9
|
import { ButtonGroupContext } from '../ButtonGroup';
|
10
10
|
import { InputGroupContext } from '../InputGroup/InputGroupContext';
|
11
11
|
import getRootPriorityClassName from '../_helpers/getRootPriorityClassName';
|
@@ -23,10 +23,13 @@ See [API](#api) for all available options.
|
|
23
23
|
- Use **short yet comprehensible labels** to make buttons fit small screens.
|
24
24
|
|
25
25
|
- Since buttons are there to take actions, **use a verb** to make it obvious
|
26
|
-
|
26
|
+
what your buttons do.
|
27
27
|
|
28
28
|
- **Don't overwhelm your UI** with too many high-emphasis actions. There should
|
29
|
-
|
29
|
+
always be one but chances are that having more of them is not necessary.
|
30
|
+
|
31
|
+
- Ensure the **button action is well recognazible** across your target audience.
|
32
|
+
This is especially important when using the button [with an icon only](#icon-buttons).
|
30
33
|
|
31
34
|
## Priorities
|
32
35
|
|
@@ -144,8 +147,11 @@ before or after the button's label.
|
|
144
147
|
|
145
148
|
### Icon Buttons
|
146
149
|
|
147
|
-
|
148
|
-
Label remains mandatory to keep the button accessible
|
150
|
+
With a common and well-known icon, buttons can visually consist just of an icon.
|
151
|
+
Label remains mandatory to keep the button accessible when using assistive
|
152
|
+
technologies.
|
153
|
+
|
154
|
+
👉 Use `labelVisibility="xs"` to make label always visible.
|
149
155
|
|
150
156
|
```docoff-react-preview
|
151
157
|
<Button
|
@@ -161,6 +167,11 @@ of your choice and display label once you know there is enough room for it.
|
|
161
167
|
📐 Try resizing your browser to see how label visibility changes.
|
162
168
|
|
163
169
|
```docoff-react-preview
|
170
|
+
<Button
|
171
|
+
label="Label always visible"
|
172
|
+
labelVisibility="xs"
|
173
|
+
beforeLabel={<rui-icon icon="pencil" />}
|
174
|
+
/>
|
164
175
|
<Button
|
165
176
|
label="Label visible from sm up"
|
166
177
|
labelVisibility="sm"
|
@@ -181,16 +192,6 @@ of your choice and display label once you know there is enough room for it.
|
|
181
192
|
labelVisibility="xl"
|
182
193
|
beforeLabel={<rui-icon icon="pencil" />}
|
183
194
|
/>
|
184
|
-
<Button
|
185
|
-
label="Label visible from x2l up"
|
186
|
-
labelVisibility="x2l"
|
187
|
-
beforeLabel={<rui-icon icon="pencil" />}
|
188
|
-
/>
|
189
|
-
<Button
|
190
|
-
label="Label visible from x3l up"
|
191
|
-
labelVisibility="x3l"
|
192
|
-
beforeLabel={<rui-icon icon="pencil" />}
|
193
|
-
/>
|
194
195
|
```
|
195
196
|
|
196
197
|
## Buttons with Badges
|
@@ -388,10 +389,11 @@ animation is made.
|
|
388
389
|
## Forwarding HTML Attributes
|
389
390
|
|
390
391
|
In addition to the options below in the [component's API](#api) section, you
|
391
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
392
|
-
with the API of the React component
|
393
|
-
|
394
|
-
|
392
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
393
|
+
interfere with the API of the React component and that aren't filtered out by
|
394
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
395
|
+
root `<button>` HTML element. This enables making the component interactive and
|
396
|
+
helps to improve its accessibility.
|
395
397
|
|
396
398
|
👉 For the full list of supported attributes refer to:
|
397
399
|
|
@@ -4,9 +4,9 @@ import React, {
|
|
4
4
|
} from 'react';
|
5
5
|
import { withGlobalProps } from '../../provider';
|
6
6
|
import { classNames } from '../../utils/classNames';
|
7
|
+
import { transferProps } from '../../utils/transferProps';
|
7
8
|
import getRootPriorityClassName from '../_helpers/getRootPriorityClassName';
|
8
9
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
9
|
-
import { transferProps } from '../_helpers/transferProps';
|
10
10
|
import styles from './ButtonGroup.module.scss';
|
11
11
|
import { ButtonGroupContext } from './ButtonGroupContext';
|
12
12
|
|
@@ -249,10 +249,11 @@ and communicating the state of individual options.
|
|
249
249
|
## Forwarding HTML Attributes
|
250
250
|
|
251
251
|
In addition to the options below in the [component's API](#api) section, you
|
252
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
253
|
-
with the API of the React component
|
254
|
-
|
255
|
-
|
252
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
253
|
+
interfere with the API of the React component and that aren't filtered out by
|
254
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
255
|
+
root `<div>` HTML element. This enables making the component interactive and
|
256
|
+
helps to improve its accessibility.
|
256
257
|
|
257
258
|
👉 For the full list of supported attributes refer to:
|
258
259
|
|
@@ -1,8 +1,8 @@
|
|
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';
|
5
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
6
6
|
import { getRootColorClassName } from '../_helpers/getRootColorClassName';
|
7
7
|
import styles from './Card.module.scss';
|
8
8
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
-
import { transferProps } from '
|
4
|
+
import { transferProps } from '../../utils/transferProps';
|
5
5
|
import styles from './Card.module.scss';
|
6
6
|
|
7
7
|
export const CardBody = ({
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
+
import { transferProps } from '../../utils/transferProps';
|
4
5
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
5
|
-
import { transferProps } from '../_helpers/transferProps';
|
6
6
|
import styles from './Card.module.scss';
|
7
7
|
|
8
8
|
export const CardFooter = ({
|
@@ -255,10 +255,11 @@ its interactive elements to disallow user's interaction.
|
|
255
255
|
## Forwarding HTML Attributes
|
256
256
|
|
257
257
|
In addition to the options below in the [component's API](#api) section, you
|
258
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
259
|
-
with the API of the React component
|
260
|
-
|
261
|
-
|
258
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
259
|
+
interfere with the API of the React component and that aren't filtered out by
|
260
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
261
|
+
root `<div>` HTML element. This enables making the component interactive and
|
262
|
+
helps to improve its accessibility.
|
262
263
|
|
263
264
|
👉 For the full list of supported attributes refer to:
|
264
265
|
|
@@ -2,8 +2,8 @@ import PropTypes from 'prop-types';
|
|
2
2
|
import React, { useContext } from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
5
6
|
import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
|
6
|
-
import { transferProps } from '../_helpers/transferProps';
|
7
7
|
import { FormLayoutContext } from '../FormLayout';
|
8
8
|
import styles from './CheckboxField.module.scss';
|
9
9
|
|
@@ -114,7 +114,7 @@ CheckboxField.propTypes = {
|
|
114
114
|
/**
|
115
115
|
* Checkbox field label.
|
116
116
|
*/
|
117
|
-
label: PropTypes.
|
117
|
+
label: PropTypes.node.isRequired,
|
118
118
|
/**
|
119
119
|
* Placement of the label relative to the input.
|
120
120
|
*/
|
@@ -45,6 +45,9 @@ See [API](#api) for all available options.
|
|
45
45
|
send me any emails” which would mean that the user needs to turn the
|
46
46
|
checkbox **on** in order for something **not** to happen.
|
47
47
|
|
48
|
+
- **Use text labels** unless it is necessary to wrap text label into
|
49
|
+
Popover-like to component to provide additional info about the field.
|
50
|
+
|
48
51
|
- Only make the CheckboxField's label invisible when there is **another visual
|
49
52
|
clue** to guide users through toggling the input.
|
50
53
|
|
@@ -172,10 +175,11 @@ Disabled state makes the input unavailable.
|
|
172
175
|
## Forwarding HTML Attributes
|
173
176
|
|
174
177
|
In addition to the options below in the [component's API](#api) section, you
|
175
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
176
|
-
with the API of the React component
|
177
|
-
|
178
|
-
|
178
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
179
|
+
interfere with the API of the React component and that aren't filtered out by
|
180
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
181
|
+
`<input>` HTML element. This enables making the component interactive and helps
|
182
|
+
to improve its accessibility.
|
179
183
|
|
180
184
|
👉 For the full list of supported attributes refer to:
|
181
185
|
|
@@ -2,9 +2,9 @@ import PropTypes from 'prop-types';
|
|
2
2
|
import React, { useContext } from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
5
6
|
import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
|
6
7
|
import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
|
7
|
-
import { transferProps } from '../_helpers/transferProps';
|
8
8
|
import { FormLayoutContext } from '../FormLayout';
|
9
9
|
import styles from './FileInputField.module.scss';
|
10
10
|
|
@@ -123,9 +123,9 @@ FileInputField.propTypes = {
|
|
123
123
|
*/
|
124
124
|
isLabelVisible: PropTypes.bool,
|
125
125
|
/**
|
126
|
-
*
|
126
|
+
* File input field label.
|
127
127
|
*/
|
128
|
-
label: PropTypes.
|
128
|
+
label: PropTypes.node.isRequired,
|
129
129
|
/**
|
130
130
|
* Layout of the field.
|
131
131
|
*
|
@@ -27,6 +27,9 @@ See [API](#api) for all available options.
|
|
27
27
|
polite phrases like _Please attach your file here_. Short labels will help
|
28
28
|
your users accomplish their task faster.
|
29
29
|
|
30
|
+
- **Use text labels** unless it is necessary to wrap text label into
|
31
|
+
Popover-like to component to provide additional info about the field.
|
32
|
+
|
30
33
|
- Only make the FileInputField's label invisible when there is **another visual
|
31
34
|
clue** to guide users through filling the input.
|
32
35
|
|
@@ -156,10 +159,11 @@ It's possible to disable the whole input.
|
|
156
159
|
## Forwarding HTML Attributes
|
157
160
|
|
158
161
|
In addition to the options below in the [component's API](#api) section, you
|
159
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
160
|
-
with the API of the React component
|
161
|
-
|
162
|
-
|
162
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
163
|
+
interfere with the API of the React component and that aren't filtered out by
|
164
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
165
|
+
`<input>` HTML element. This enables making the component interactive and helps
|
166
|
+
to improve its accessibility.
|
163
167
|
|
164
168
|
```docoff-react-preview
|
165
169
|
<FileInputField
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React, { useMemo } from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
-
import { transferProps } from '../_helpers/transferProps';
|
5
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
6
6
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
7
7
|
import { FormLayoutContext } from './FormLayoutContext';
|
8
8
|
import styles from './FormLayout.module.scss';
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React, { useContext } from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
-
import { transferProps } from '../_helpers/transferProps';
|
5
4
|
import { classNames } from '../../utils/classNames';
|
5
|
+
import { transferProps } from '../../utils/transferProps';
|
6
6
|
import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
|
7
7
|
import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
|
8
8
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
@@ -416,10 +416,11 @@ React.createElement(() => {
|
|
416
416
|
## Forwarding HTML Attributes
|
417
417
|
|
418
418
|
In addition to the options below in the [component's API](#api) section, you
|
419
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
420
|
-
with the API of the React component
|
421
|
-
|
422
|
-
|
419
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
420
|
+
interfere with the API of the React component and that aren't filtered out by
|
421
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
422
|
+
root `<div>` HTML element. This enables making the component interactive and
|
423
|
+
helps to improve its accessibility.
|
423
424
|
|
424
425
|
👉 For the full list of supported attributes refer to:
|
425
426
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
+
import { transferProps } from '../../utils/transferProps';
|
4
5
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
5
|
-
import { transferProps } from '../_helpers/transferProps';
|
6
6
|
import { generateResponsiveCustomProperties } from './_helpers/generateResponsiveCustomProperties';
|
7
7
|
import styles from './Grid.module.scss';
|
8
8
|
|
@@ -35,10 +35,8 @@
|
|
35
35
|
grid-template-rows: var(--rui-local-rows); // 2.
|
36
36
|
grid-auto-flow: var(--rui-local-auto-flow); // 2.
|
37
37
|
grid-gap: var(--rui-local-row-gap) var(--rui-local-column-gap); // 2.
|
38
|
-
|
39
|
-
|
40
|
-
justify-content: var(--rui-local-justify-content); // 2.
|
41
|
-
justify-items: var(--rui-local-justify-items); // 2.
|
38
|
+
place-content: var(--rui-local-align-content) var(--rui-local-justify-content); // 2.
|
39
|
+
place-items: var(--rui-local-align-items) var(--rui-local-justify-items); // 2.
|
42
40
|
}
|
43
41
|
|
44
42
|
// stylelint-disable-next-line selector-max-universal -- Reset any previously added margins.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { withGlobalProps } from '../../provider';
|
4
|
+
import { transferProps } from '../../utils/transferProps';
|
4
5
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
5
|
-
import { transferProps } from '../_helpers/transferProps';
|
6
6
|
import { generateResponsiveCustomProperties } from './_helpers/generateResponsiveCustomProperties';
|
7
7
|
import styles from './Grid.module.scss';
|
8
8
|
|
@@ -248,10 +248,12 @@ property. Check [MDN][grid-auto-flow] to fully understand available options.
|
|
248
248
|
## Forwarding HTML Attributes
|
249
249
|
|
250
250
|
In addition to the options below in the [component's API](#api) section, you
|
251
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
252
|
-
with the API of the React component
|
253
|
-
|
254
|
-
|
251
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
252
|
+
interfere with the API of the React component and that aren't filtered out by
|
253
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
254
|
+
root HTML element of your choice provided by `tag`, which is `<div>` by
|
255
|
+
default. This enables making the component interactive and helps to improve its
|
256
|
+
accessibility.
|
255
257
|
|
256
258
|
👉 For the full list of supported attributes refer to:
|
257
259
|
|
@@ -8,11 +8,11 @@ $grid-responsive-properties: [
|
|
8
8
|
align-items,
|
9
9
|
justify-content,
|
10
10
|
justify-items,
|
11
|
-
]; // stylelint-disable-line indentation -- Broken rule?
|
11
|
+
]; // stylelint-disable-line @stylistic/indentation -- Broken rule?
|
12
12
|
|
13
13
|
$grid-span-responsive-properties: [
|
14
14
|
column-span,
|
15
15
|
row-span,
|
16
|
-
]; // stylelint-disable-line indentation -- Broken rule?
|
16
|
+
]; // stylelint-disable-line @stylistic/indentation -- Broken rule?
|
17
17
|
|
18
18
|
$initial-fallback-value: initial;
|
@@ -6,11 +6,11 @@ import React, {
|
|
6
6
|
import { Text } from '../Text';
|
7
7
|
import { withGlobalProps } from '../../provider';
|
8
8
|
import { classNames } from '../../utils/classNames';
|
9
|
+
import { transferProps } from '../../utils/transferProps';
|
9
10
|
import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
|
10
11
|
import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
|
11
12
|
import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
|
12
13
|
import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
|
13
|
-
import { transferProps } from '../_helpers/transferProps';
|
14
14
|
import { FormLayoutContext } from '../FormLayout';
|
15
15
|
import { InputGroupContext } from './InputGroupContext';
|
16
16
|
import styles from './InputGroup.module.scss';
|
@@ -151,7 +151,7 @@ InputGroup.propTypes = {
|
|
151
151
|
/**
|
152
152
|
* Input group label.
|
153
153
|
*/
|
154
|
-
label: PropTypes.
|
154
|
+
label: PropTypes.node.isRequired,
|
155
155
|
/**
|
156
156
|
* Layout of the group.
|
157
157
|
*
|
@@ -250,10 +250,11 @@ for the underlying `<fieldset>` element.
|
|
250
250
|
## Forwarding HTML Attributes
|
251
251
|
|
252
252
|
In addition to the options below in the [component's API](#api) section, you
|
253
|
-
can specify **any HTML attribute you like.** All attributes that don't
|
254
|
-
with the API of the React component
|
255
|
-
|
256
|
-
|
253
|
+
can specify **any HTML attribute you like.** All attributes that don't
|
254
|
+
interfere with the API of the React component and that aren't filtered out by
|
255
|
+
[`transferProps`](/docs/js-helpers/transferProps) helper are forwarded to the
|
256
|
+
root `<fieldset>` HTML element. This enables making the component interactive
|
257
|
+
and helps to improve its accessibility.
|
257
258
|
|
258
259
|
👉 For the full list of supported attributes refer to:
|
259
260
|
|
@@ -2,8 +2,8 @@ import PropTypes from 'prop-types';
|
|
2
2
|
import React, { useRef } from 'react';
|
3
3
|
import { createPortal } from 'react-dom';
|
4
4
|
import { withGlobalProps } from '../../provider';
|
5
|
-
import { transferProps } from '../_helpers/transferProps';
|
6
5
|
import { classNames } from '../../utils/classNames';
|
6
|
+
import { transferProps } from '../../utils/transferProps';
|
7
7
|
import { getPositionClassName } from './_helpers/getPositionClassName';
|
8
8
|
import { getSizeClassName } from './_helpers/getSizeClassName';
|
9
9
|
import { useModalFocus } from './_hooks/useModalFocus';
|
@@ -21,11 +21,11 @@
|
|
21
21
|
max-width: var(--rui-local-max-width);
|
22
22
|
max-height: var(--rui-local-max-height);
|
23
23
|
overflow-y: auto;
|
24
|
-
overscroll-behavior: contain;
|
25
24
|
border-radius: settings.$border-radius;
|
26
25
|
background: theme.$background;
|
27
26
|
box-shadow: theme.$box-shadow;
|
28
27
|
transform: translateX(-50%);
|
28
|
+
overscroll-behavior: contain;
|
29
29
|
|
30
30
|
@include breakpoint.up(sm) {
|
31
31
|
--rui-local-outer-spacing: #{theme.$outer-spacing-sm};
|