@react-ui-org/react-ui 0.46.0 → 0.47.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.
Files changed (76) hide show
  1. package/README.md +15 -16
  2. package/dist/lib.development.js +106 -154
  3. package/dist/lib.js +1 -1
  4. package/package.json +2 -1
  5. package/src/lib/components/Alert/Alert.jsx +43 -43
  6. package/src/lib/components/Alert/README.mdx +2 -5
  7. package/src/lib/components/Badge/Badge.jsx +3 -3
  8. package/src/lib/components/Button/Button.jsx +4 -4
  9. package/src/lib/components/Button/README.mdx +4 -4
  10. package/src/lib/components/Button/_base.scss +6 -6
  11. package/src/lib/components/Button/helpers/getRootLabelVisibilityClassName.js +4 -4
  12. package/src/lib/components/ButtonGroup/ButtonGroup.jsx +10 -3
  13. package/src/lib/components/ButtonGroup/README.mdx +1 -1
  14. package/src/lib/components/Card/Card.jsx +3 -3
  15. package/src/lib/components/Card/CardBody.jsx +16 -5
  16. package/src/lib/components/Card/CardFooter.jsx +13 -5
  17. package/src/lib/components/CheckboxField/CheckboxField.jsx +3 -3
  18. package/src/lib/components/FileInputField/FileInputField.jsx +3 -3
  19. package/src/lib/components/FormLayout/FormLayout.jsx +3 -3
  20. package/src/lib/components/FormLayout/FormLayoutCustomField.jsx +3 -3
  21. package/src/lib/components/FormLayout/README.mdx +4 -5
  22. package/src/lib/components/Grid/Grid.jsx +21 -21
  23. package/src/lib/components/Grid/Grid.scss +6 -0
  24. package/src/lib/components/Grid/GridSpan.jsx +7 -7
  25. package/src/lib/components/Grid/README.mdx +46 -20
  26. package/src/lib/components/Grid/_theme.scss +7 -7
  27. package/src/lib/components/Modal/Modal.jsx +30 -26
  28. package/src/lib/components/Modal/README.mdx +2 -5
  29. package/src/lib/components/Paper/Paper.jsx +3 -3
  30. package/src/lib/components/Popover/Popover.jsx +94 -0
  31. package/src/lib/components/Popover/Popover.scss +235 -0
  32. package/src/lib/components/Popover/PopoverWrapper.jsx +46 -0
  33. package/src/lib/components/Popover/README.mdx +333 -0
  34. package/src/lib/components/Popover/_helpers/getRootAlignmentClassName.js +13 -0
  35. package/src/lib/components/Popover/_helpers/getRootSideClassName.js +17 -0
  36. package/src/lib/components/Popover/_theme.scss +16 -0
  37. package/src/lib/components/Popover/index.js +2 -0
  38. package/src/lib/components/Radio/Radio.jsx +3 -3
  39. package/src/lib/components/ScrollView/README.mdx +2 -5
  40. package/src/lib/components/ScrollView/ScrollView.jsx +11 -13
  41. package/src/lib/components/SelectField/SelectField.jsx +3 -3
  42. package/src/lib/components/Table/README.mdx +1 -1
  43. package/src/lib/components/Table/Table.jsx +3 -3
  44. package/src/lib/components/Tabs/Tabs.jsx +3 -3
  45. package/src/lib/components/Tabs/TabsItem.jsx +3 -3
  46. package/src/lib/components/Text/README.mdx +2 -2
  47. package/src/lib/components/Text/Text.jsx +3 -3
  48. package/src/lib/components/TextArea/TextArea.jsx +3 -3
  49. package/src/lib/components/TextField/TextField.jsx +3 -3
  50. package/src/lib/components/TextLink/TextLink.jsx +3 -3
  51. package/src/lib/components/Toggle/Toggle.jsx +3 -3
  52. package/src/lib/components/Toolbar/README.mdx +18 -6
  53. package/src/lib/components/Toolbar/Toolbar.jsx +10 -3
  54. package/src/lib/components/Toolbar/Toolbar.scss +5 -23
  55. package/src/lib/components/Toolbar/ToolbarGroup.jsx +10 -3
  56. package/src/lib/components/Toolbar/ToolbarItem.jsx +10 -3
  57. package/src/lib/index.js +4 -9
  58. package/src/lib/provider/index.js +2 -1
  59. package/src/lib/provider/withGlobalProps.jsx +21 -0
  60. package/src/lib/styles/settings/_breakpoints.scss +2 -2
  61. package/src/lib/styles/theme-constants/_breakpoints.scss +2 -2
  62. package/src/lib/styles/tools/_spacing.scss +2 -6
  63. package/src/lib/theme.scss +19 -18
  64. package/src/lib/components/List/List.jsx +0 -73
  65. package/src/lib/components/List/List.scss +0 -53
  66. package/src/lib/components/List/ListItem.jsx +0 -32
  67. package/src/lib/components/List/README.mdx +0 -114
  68. package/src/lib/components/List/_theme.scss +0 -1
  69. package/src/lib/components/List/index.js +0 -2
  70. package/src/lib/components/Media/Media.jsx +0 -36
  71. package/src/lib/components/Media/Media.scss +0 -16
  72. package/src/lib/components/Media/MediaBody.jsx +0 -32
  73. package/src/lib/components/Media/MediaObject.jsx +0 -32
  74. package/src/lib/components/Media/README.mdx +0 -63
  75. package/src/lib/components/Media/index.js +0 -3
  76. package/src/lib/provider/withProviderContext.jsx +0 -32
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.46.0",
4
+ "version": "0.47.0",
5
5
  "keywords": [
6
6
  "react",
7
7
  "ui",
@@ -44,6 +44,7 @@
44
44
  "@babel/preset-env": "^7.16.0",
45
45
  "@babel/preset-react": "^7.16.0",
46
46
  "@babel/register": "^7.16.0",
47
+ "@floating-ui/react-dom": "^0.7.1",
47
48
  "@nejcm/docz-theme-extended": "^2.0.14",
48
49
  "@testing-library/jest-dom": "^5.15.0",
49
50
  "@testing-library/react": "^12.1.2",
@@ -1,6 +1,9 @@
1
1
  import PropTypes from 'prop-types';
2
- import React from 'react';
3
- import { withProviderContext } from '../../provider';
2
+ import React, { useContext } from 'react';
3
+ import {
4
+ RUIContext,
5
+ withGlobalProps,
6
+ } from '../../provider';
4
7
  import { classNames } from '../../utils/classNames';
5
8
  import { getRootColorClassName } from '../_helpers/getRootColorClassName';
6
9
  import styles from './Alert.scss';
@@ -11,42 +14,45 @@ export const Alert = ({
11
14
  icon,
12
15
  id,
13
16
  onClose,
14
- translations,
15
- }) => (
16
- <div
17
- className={classNames(
18
- styles.root,
19
- getRootColorClassName(color, styles),
20
- )}
21
- id={id}
22
- role="alert"
23
- >
24
- {icon && (
25
- <div className={styles.icon}>
26
- {icon}
27
- </div>
28
- )}
17
+ }) => {
18
+ const { translations } = useContext(RUIContext);
19
+
20
+ return (
29
21
  <div
30
- className={styles.message}
31
- {...(id && { id: `${id}__content` })}
22
+ className={classNames(
23
+ styles.root,
24
+ getRootColorClassName(color, styles),
25
+ )}
26
+ id={id}
27
+ role="alert"
32
28
  >
33
- {children}
34
- </div>
35
- {onClose && (
36
- <button
37
- type="button"
38
- {...(id && { id: `${id}__close` })}
39
- className={styles.close}
40
- onClick={() => onClose()}
41
- onKeyPress={() => onClose()}
42
- tabIndex="0"
43
- title={translations.close}
29
+ {icon && (
30
+ <div className={styles.icon}>
31
+ {icon}
32
+ </div>
33
+ )}
34
+ <div
35
+ className={styles.message}
36
+ {...(id && { id: `${id}__content` })}
44
37
  >
45
- <span className={styles.closeSign}>×</span>
46
- </button>
47
- )}
48
- </div>
49
- );
38
+ {children}
39
+ </div>
40
+ {onClose && (
41
+ <button
42
+ type="button"
43
+ {...(id && { id: `${id}__close` })}
44
+ className={styles.close}
45
+ onClick={() => onClose()}
46
+ onKeyPress={() => onClose()}
47
+ tabIndex="0"
48
+ title={translations.Alert.close}
49
+ >
50
+ <span className={styles.closeSign}>×</span>
51
+ </button>
52
+ )}
53
+ </div>
54
+ );
55
+ };
50
56
 
51
57
  Alert.defaultProps = {
52
58
  color: 'note',
@@ -83,14 +89,8 @@ Alert.propTypes = {
83
89
  * hidden.
84
90
  */
85
91
  onClose: PropTypes.func,
86
- /**
87
- * Translations required by the component.
88
- */
89
- translations: PropTypes.shape({
90
- close: PropTypes.string.isRequired,
91
- }).isRequired,
92
92
  };
93
93
 
94
- export const AlertWithContext = withProviderContext(Alert, 'Alert');
94
+ export const AlertWithGlobalProps = withGlobalProps(Alert, 'Alert');
95
95
 
96
- export default AlertWithContext;
96
+ export default AlertWithGlobalProps;
@@ -13,10 +13,7 @@ import {
13
13
  import Icon from '../../../docs/_components/Icon'
14
14
  import Placeholder from '../../../docs/_components/Placeholder'
15
15
  import Button from '../Button'
16
- import {
17
- AlertWithContext as Alert,
18
- Alert as ParsableAlert,
19
- } from './Alert'
16
+ import { Alert } from './Alert'
20
17
 
21
18
  Alert presents feedback or important information to users.
22
19
 
@@ -207,7 +204,7 @@ click on the close button:
207
204
 
208
205
  ## API
209
206
 
210
- <Props table of={ParsableAlert} />
207
+ <Props table of={Alert} />
211
208
 
212
209
  ## Theming
213
210
 
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootColorClassName } from '../_helpers/getRootColorClassName';
6
6
  import styles from './Badge.scss';
@@ -50,6 +50,6 @@ Badge.propTypes = {
50
50
  priority: PropTypes.oneOf(['filled', 'outline']),
51
51
  };
52
52
 
53
- export const BadgeWithContext = withProviderContext(Badge, 'Badge');
53
+ export const BadgeWithGlobalProps = withGlobalProps(Badge, 'Badge');
54
54
 
55
- export default BadgeWithContext;
55
+ export default BadgeWithGlobalProps;
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React, { useContext } from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootColorClassName } from '../_helpers/getRootColorClassName';
6
6
  import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
@@ -169,7 +169,7 @@ Button.propTypes = {
169
169
  /**
170
170
  * Defines minimum breakpoint from which the button label will be visible.
171
171
  */
172
- labelVisibility: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl', 'none']),
172
+ labelVisibility: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', 'x2l', 'x3l', 'none']),
173
173
  /**
174
174
  * Visual priority to highlight or suppress the button.
175
175
  *
@@ -194,6 +194,6 @@ Button.propTypes = {
194
194
  type: PropTypes.oneOf(['button', 'submit']),
195
195
  };
196
196
 
197
- export const ButtonWithContext = withForwardedRef(withProviderContext(Button, 'Button'));
197
+ export const ButtonWithGlobalProps = withForwardedRef(withGlobalProps(Button, 'Button'));
198
198
 
199
- export default ButtonWithContext;
199
+ export default ButtonWithGlobalProps;
@@ -194,13 +194,13 @@ of your choice and display label once you know there is enough room for it.
194
194
  beforeLabel={<Icon icon="pencil" />}
195
195
  />
196
196
  <Button
197
- label="Label visible from xxl up"
198
- labelVisibility="xxl"
197
+ label="Label visible from x2l up"
198
+ labelVisibility="x2l"
199
199
  beforeLabel={<Icon icon="pencil" />}
200
200
  />
201
201
  <Button
202
- label="Label visible from xxxl up"
203
- labelVisibility="xxxl"
202
+ label="Label visible from x3l up"
203
+ labelVisibility="x3l"
204
204
  beforeLabel={<Icon icon="pencil" />}
205
205
  />
206
206
  </Playground>
@@ -106,8 +106,8 @@
106
106
  .withLabelVisibleMd,
107
107
  .withLabelVisibleLg,
108
108
  .withLabelVisibleXl,
109
- .withLabelVisibleXxl,
110
- .withLabelVisibleXxxl {
109
+ .withLabelVisibleX2l,
110
+ .withLabelVisibleX3l {
111
111
  @include tools.hide-label();
112
112
  }
113
113
 
@@ -135,14 +135,14 @@
135
135
  }
136
136
  }
137
137
 
138
- .withLabelVisibleXxl {
139
- @include breakpoint.up(xxl) {
138
+ .withLabelVisibleX2l {
139
+ @include breakpoint.up(x2l) {
140
140
  @include tools.show-label();
141
141
  }
142
142
  }
143
143
 
144
- .withLabelVisibleXxxl {
145
- @include breakpoint.up(xxxl) {
144
+ .withLabelVisibleX3l {
145
+ @include breakpoint.up(x3l) {
146
146
  @include tools.show-label();
147
147
  }
148
148
  }
@@ -17,12 +17,12 @@ export default (labelVisibility, styles) => {
17
17
  return styles.withLabelVisibleXl;
18
18
  }
19
19
 
20
- if (labelVisibility === 'xxl') {
21
- return styles.withLabelVisibleXxl;
20
+ if (labelVisibility === 'x2l') {
21
+ return styles.withLabelVisibleX2l;
22
22
  }
23
23
 
24
- if (labelVisibility === 'xxxl') {
25
- return styles.withLabelVisibleXxxl;
24
+ if (labelVisibility === 'x3l') {
25
+ return styles.withLabelVisibleX3l;
26
26
  }
27
27
 
28
28
  if (labelVisibility === 'none') {
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
6
6
  import styles from './ButtonGroup.scss';
@@ -10,6 +10,7 @@ export const ButtonGroup = ({
10
10
  block,
11
11
  disabled,
12
12
  children,
13
+ id,
13
14
  priority,
14
15
  size,
15
16
  ...restProps
@@ -24,6 +25,7 @@ export const ButtonGroup = ({
24
25
  styles.root,
25
26
  block && styles.isRootBlock,
26
27
  )}
28
+ id={id}
27
29
  role="group"
28
30
  {...restProps}
29
31
  >
@@ -45,6 +47,7 @@ ButtonGroup.defaultProps = {
45
47
  block: false,
46
48
  children: null,
47
49
  disabled: false,
50
+ id: undefined,
48
51
  priority: 'filled',
49
52
  size: 'medium',
50
53
  };
@@ -62,6 +65,10 @@ ButtonGroup.propTypes = {
62
65
  * If `true`, all buttons inside the group will be disabled.
63
66
  */
64
67
  disabled: PropTypes.bool,
68
+ /**
69
+ * ID of the root HTML element.
70
+ */
71
+ id: PropTypes.string,
65
72
  /**
66
73
  * Visual priority to highlight or suppress the buttons.
67
74
  */
@@ -72,6 +79,6 @@ ButtonGroup.propTypes = {
72
79
  size: PropTypes.oneOf(['small', 'medium', 'large']),
73
80
  };
74
81
 
75
- export const ButtonGroupWithContext = withProviderContext(ButtonGroup, 'ButtonGroup');
82
+ export const ButtonGroupWithGlobalProps = withGlobalProps(ButtonGroup, 'ButtonGroup');
76
83
 
77
- export default ButtonGroupWithContext;
84
+ export default ButtonGroupWithGlobalProps;
@@ -221,7 +221,7 @@ and communicating the state of individual options.
221
221
  <Playground>
222
222
  <>
223
223
  <span id="period-label">Period:</span>
224
- <ButtonGroup aria-labelledby="#period-label">
224
+ <ButtonGroup aria-labelledby="period-label">
225
225
  <Button label="Week" aria-pressed color="dark" />
226
226
  <Button label="Month" aria-pressed={false} />
227
227
  <Button label="Year" aria-pressed={false} />
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootColorClassName } from '../_helpers/getRootColorClassName';
6
6
  import styles from './Card.scss';
@@ -67,6 +67,6 @@ Card.propTypes = {
67
67
  raised: PropTypes.bool,
68
68
  };
69
69
 
70
- export const CardWithContext = withProviderContext(Card, 'Card');
70
+ export const CardWithGlobalProps = withGlobalProps(Card, 'Card');
71
71
 
72
- export default CardWithContext;
72
+ export default CardWithGlobalProps;
@@ -1,21 +1,32 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import styles from './Card.scss';
5
5
 
6
- export const CardBody = ({ children }) => (
7
- <div className={styles.body}>
6
+ export const CardBody = ({
7
+ children,
8
+ id,
9
+ }) => (
10
+ <div className={styles.body} id={id}>
8
11
  {children}
9
12
  </div>
10
13
  );
11
14
 
15
+ CardBody.defaultProps = {
16
+ id: undefined,
17
+ };
18
+
12
19
  CardBody.propTypes = {
13
20
  /**
14
21
  * Content of the card.
15
22
  */
16
23
  children: PropTypes.node.isRequired,
24
+ /**
25
+ * ID of the root HTML element.
26
+ */
27
+ id: PropTypes.string,
17
28
  };
18
29
 
19
- export const CardBodyWithContext = withProviderContext(CardBody, 'CardBody');
30
+ export const CardBodyWithGlobalProps = withGlobalProps(CardBody, 'CardBody');
20
31
 
21
- export default CardBodyWithContext;
32
+ export default CardBodyWithGlobalProps;
@@ -1,16 +1,19 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
5
5
  import styles from './Card.scss';
6
6
 
7
- export const CardFooter = ({ children }) => {
7
+ export const CardFooter = ({
8
+ children,
9
+ id,
10
+ }) => {
8
11
  if (isChildrenEmpty(children)) {
9
12
  return null;
10
13
  }
11
14
 
12
15
  return (
13
- <div className={styles.footer}>
16
+ <div className={styles.footer} id={id}>
14
17
  {children}
15
18
  </div>
16
19
  );
@@ -18,6 +21,7 @@ export const CardFooter = ({ children }) => {
18
21
 
19
22
  CardFooter.defaultProps = {
20
23
  children: null,
24
+ id: undefined,
21
25
  };
22
26
 
23
27
  CardFooter.propTypes = {
@@ -25,8 +29,12 @@ CardFooter.propTypes = {
25
29
  * Card actions, usually buttons.
26
30
  */
27
31
  children: PropTypes.node,
32
+ /**
33
+ * ID of the root HTML element.
34
+ */
35
+ id: PropTypes.string,
28
36
  };
29
37
 
30
- export const CardFooterWithContext = withProviderContext(CardFooter, 'CardFooter');
38
+ export const CardFooterWithGlobalProps = withGlobalProps(CardFooter, 'CardFooter');
31
39
 
32
- export default CardFooterWithContext;
40
+ export default CardFooterWithGlobalProps;
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React, { useContext } from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
6
6
  import { transferProps } from '../_helpers/transferProps';
@@ -160,6 +160,6 @@ CheckboxField.propTypes = {
160
160
  ]),
161
161
  };
162
162
 
163
- export const CheckboxFieldWithContext = withForwardedRef(withProviderContext(CheckboxField, 'CheckboxField'));
163
+ export const CheckboxFieldWithGlobalProps = withForwardedRef(withGlobalProps(CheckboxField, 'CheckboxField'));
164
164
 
165
- export default CheckboxFieldWithContext;
165
+ export default CheckboxFieldWithGlobalProps;
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React, { useContext } from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
6
6
  import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
@@ -158,6 +158,6 @@ FileInputField.propTypes = {
158
158
  validationText: PropTypes.node,
159
159
  };
160
160
 
161
- export const FileInputFieldWithContext = withForwardedRef(withProviderContext(FileInputField, 'FileInputField'));
161
+ export const FileInputFieldWithGlobalProps = withForwardedRef(withGlobalProps(FileInputField, 'FileInputField'));
162
162
 
163
- export default FileInputFieldWithContext;
163
+ export default FileInputFieldWithGlobalProps;
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
6
6
  import { FormLayoutContext } from './FormLayoutContext';
@@ -110,6 +110,6 @@ FormLayout.propTypes = {
110
110
  ]),
111
111
  };
112
112
 
113
- export const FormLayoutWithContext = withProviderContext(FormLayout, 'FormLayout');
113
+ export const FormLayoutWithGlobalProps = withGlobalProps(FormLayout, 'FormLayout');
114
114
 
115
- export default FormLayoutWithContext;
115
+ export default FormLayoutWithGlobalProps;
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React, { useContext } from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { classNames } from '../../utils/classNames';
5
5
  import { getRootSizeClassName } from '../_helpers/getRootSizeClassName';
6
6
  import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
@@ -131,6 +131,6 @@ FormLayoutCustomField.propTypes = {
131
131
  validationState: PropTypes.oneOf(['invalid', 'valid', 'warning']),
132
132
  };
133
133
 
134
- export const FormLayoutCustomFieldWithContext = withProviderContext(FormLayoutCustomField, 'FormLayoutCustomField');
134
+ export const FormLayoutCustomFieldWithGlobalProps = withGlobalProps(FormLayoutCustomField, 'FormLayoutCustomField');
135
135
 
136
- export default FormLayoutCustomFieldWithContext;
136
+ export default FormLayoutCustomFieldWithGlobalProps;
@@ -75,10 +75,9 @@ there are longer validation messages or help texts.
75
75
 
76
76
  ## Vertical Layout
77
77
 
78
- Vertical FormLayout works similar to the [List](/components/list) layout
79
- except that no equivalent of ListItems is needed. It stacks the form fields
80
- vertically while it forces the vertical layout mode on them. To use this layout,
81
- simply wrap your form fields with the FormLayout component:
78
+ Vertical FormLayout works similar to single-column [Grid](/components/grid)
79
+ layout while it also forces vertical layout mode on form fields. To use this
80
+ layout, simply wrap your form fields with the FormLayout component:
82
81
 
83
82
  <Playground>
84
83
  <FormLayout>
@@ -143,7 +142,7 @@ with CSS custom properties.
143
142
  <span id="label-width-options-label">Label width:</span>
144
143
  </ToolbarItem>
145
144
  <ToolbarItem>
146
- <ButtonGroup aria-labelledby="#label-width-options-label">
145
+ <ButtonGroup aria-labelledby="label-width-options-label">
147
146
  <Button
148
147
  color={labelWidth === 'default' ? 'dark' : 'primary'}
149
148
  label="default"
@@ -1,6 +1,6 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import { withProviderContext } from '../../provider';
3
+ import { withGlobalProps } from '../../provider';
4
4
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
5
5
  import { generateResponsiveCustomProperties } from './_helpers/generateResponsiveCustomProperties';
6
6
  import styles from './Grid.scss';
@@ -77,8 +77,8 @@ Grid.propTypes = {
77
77
  md: PropTypes.string,
78
78
  lg: PropTypes.string,
79
79
  xl: PropTypes.string,
80
- xxl: PropTypes.string,
81
- xxxl: PropTypes.string,
80
+ x2l: PropTypes.string,
81
+ x3l: PropTypes.string,
82
82
  }),
83
83
  ]),
84
84
  /**
@@ -93,8 +93,8 @@ Grid.propTypes = {
93
93
  md: PropTypes.string,
94
94
  lg: PropTypes.string,
95
95
  xl: PropTypes.string,
96
- xxl: PropTypes.string,
97
- xxxl: PropTypes.string,
96
+ x2l: PropTypes.string,
97
+ x3l: PropTypes.string,
98
98
  }),
99
99
  ]),
100
100
  /**
@@ -109,8 +109,8 @@ Grid.propTypes = {
109
109
  md: PropTypes.string,
110
110
  lg: PropTypes.string,
111
111
  xl: PropTypes.string,
112
- xxl: PropTypes.string,
113
- xxxl: PropTypes.string,
112
+ x2l: PropTypes.string,
113
+ x3l: PropTypes.string,
114
114
  }),
115
115
  ]),
116
116
  /**
@@ -129,8 +129,8 @@ Grid.propTypes = {
129
129
  md: PropTypes.string,
130
130
  lg: PropTypes.string,
131
131
  xl: PropTypes.string,
132
- xxl: PropTypes.string,
133
- xxxl: PropTypes.string,
132
+ x2l: PropTypes.string,
133
+ x3l: PropTypes.string,
134
134
  }),
135
135
  ]),
136
136
  /**
@@ -145,8 +145,8 @@ Grid.propTypes = {
145
145
  md: PropTypes.string,
146
146
  lg: PropTypes.string,
147
147
  xl: PropTypes.string,
148
- xxl: PropTypes.string,
149
- xxxl: PropTypes.string,
148
+ x2l: PropTypes.string,
149
+ x3l: PropTypes.string,
150
150
  }),
151
151
  ]),
152
152
  /**
@@ -165,8 +165,8 @@ Grid.propTypes = {
165
165
  md: PropTypes.string,
166
166
  lg: PropTypes.string,
167
167
  xl: PropTypes.string,
168
- xxl: PropTypes.string,
169
- xxxl: PropTypes.string,
168
+ x2l: PropTypes.string,
169
+ x3l: PropTypes.string,
170
170
  }),
171
171
  ]),
172
172
  /**
@@ -181,8 +181,8 @@ Grid.propTypes = {
181
181
  md: PropTypes.string,
182
182
  lg: PropTypes.string,
183
183
  xl: PropTypes.string,
184
- xxl: PropTypes.string,
185
- xxxl: PropTypes.string,
184
+ x2l: PropTypes.string,
185
+ x3l: PropTypes.string,
186
186
  }),
187
187
  ]),
188
188
  /**
@@ -197,8 +197,8 @@ Grid.propTypes = {
197
197
  md: PropTypes.string,
198
198
  lg: PropTypes.string,
199
199
  xl: PropTypes.string,
200
- xxl: PropTypes.string,
201
- xxxl: PropTypes.string,
200
+ x2l: PropTypes.string,
201
+ x3l: PropTypes.string,
202
202
  }),
203
203
  ]),
204
204
  /**
@@ -213,8 +213,8 @@ Grid.propTypes = {
213
213
  md: PropTypes.string,
214
214
  lg: PropTypes.string,
215
215
  xl: PropTypes.string,
216
- xxl: PropTypes.string,
217
- xxxl: PropTypes.string,
216
+ x2l: PropTypes.string,
217
+ x3l: PropTypes.string,
218
218
  }),
219
219
  ]),
220
220
  /**
@@ -224,6 +224,6 @@ Grid.propTypes = {
224
224
  tag: PropTypes.string,
225
225
  };
226
226
 
227
- export const GridWithContext = withProviderContext(Grid, 'Grid');
227
+ export const GridWithGlobalProps = withGlobalProps(Grid, 'Grid');
228
228
 
229
- export default GridWithContext;
229
+ export default GridWithGlobalProps;
@@ -40,6 +40,11 @@
40
40
  justify-items: var(--rui-local-justify-items, #{map.get(theme.$responsive-properties, justify-items)}); // 2.
41
41
  }
42
42
 
43
+ // stylelint-disable-next-line selector-max-universal -- Reset any previously added margins.
44
+ .root > * {
45
+ margin-block: 0;
46
+ }
47
+
43
48
  .span {
44
49
  $responsive-properties: (
45
50
  column-span: 1,
@@ -58,5 +63,6 @@ ol.root,
58
63
  ul.root {
59
64
  padding-left: 0;
60
65
  margin-left: 0;
66
+ list-style: none;
61
67
  }
62
68
  // stylelint-enable selector-no-qualifying-type