@react-ui-org/react-ui 0.47.0 → 0.48.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 (94) hide show
  1. package/dist/lib.development.js +330 -54
  2. package/dist/lib.js +1 -1
  3. package/package.json +1 -1
  4. package/src/lib/components/Alert/README.mdx +4 -2
  5. package/src/lib/components/Alert/index.js +1 -1
  6. package/src/lib/components/Badge/README.mdx +1 -1
  7. package/src/lib/components/Badge/index.js +1 -1
  8. package/src/lib/components/Button/Button.jsx +31 -31
  9. package/src/lib/components/Button/README.mdx +4 -2
  10. package/src/lib/components/Button/index.js +1 -1
  11. package/src/lib/components/ButtonGroup/ButtonGroup.jsx +2 -1
  12. package/src/lib/components/ButtonGroup/README.mdx +4 -2
  13. package/src/lib/components/Card/README.mdx +7 -5
  14. package/src/lib/components/CheckboxField/CheckboxField.jsx +27 -28
  15. package/src/lib/components/CheckboxField/README.mdx +1 -1
  16. package/src/lib/components/CheckboxField/index.js +1 -1
  17. package/src/lib/components/FileInputField/FileInputField.jsx +27 -27
  18. package/src/lib/components/FileInputField/README.mdx +1 -1
  19. package/src/lib/components/FileInputField/index.js +1 -1
  20. package/src/lib/components/FormLayout/README.mdx +15 -13
  21. package/src/lib/components/Grid/Grid.jsx +31 -28
  22. package/src/lib/components/Grid/Grid.scss +10 -15
  23. package/src/lib/components/Grid/GridSpan.jsx +5 -4
  24. package/src/lib/components/Grid/README.mdx +34 -36
  25. package/src/lib/components/Grid/_helpers/generateResponsiveCustomProperties.js +11 -3
  26. package/src/lib/components/Grid/_settings.scss +18 -0
  27. package/src/lib/components/Grid/_tools.scss +5 -5
  28. package/src/lib/components/Modal/Modal.jsx +147 -250
  29. package/src/lib/components/Modal/Modal.scss +7 -55
  30. package/src/lib/components/Modal/ModalBody.jsx +64 -0
  31. package/src/lib/components/Modal/ModalBody.scss +18 -0
  32. package/src/lib/components/Modal/ModalCloseButton.jsx +61 -0
  33. package/src/lib/components/Modal/ModalCloseButton.scss +18 -0
  34. package/src/lib/components/Modal/ModalContent.jsx +43 -0
  35. package/src/lib/components/Modal/ModalContent.scss +5 -0
  36. package/src/lib/components/Modal/ModalFooter.jsx +46 -0
  37. package/src/lib/components/Modal/ModalFooter.scss +35 -0
  38. package/src/lib/components/Modal/ModalHeader.jsx +48 -0
  39. package/src/lib/components/Modal/ModalHeader.scss +30 -0
  40. package/src/lib/components/Modal/ModalTitle.jsx +45 -0
  41. package/src/lib/components/Modal/ModalTitle.scss +10 -0
  42. package/src/lib/components/Modal/README.mdx +842 -197
  43. package/src/lib/components/Modal/_helpers/getJustifyClassName.js +19 -0
  44. package/src/lib/components/Modal/_helpers/getScrollingClassName.js +11 -0
  45. package/src/lib/components/Modal/_settings.scss +1 -5
  46. package/src/lib/components/Modal/_theme.scss +6 -0
  47. package/src/lib/components/Modal/index.js +7 -1
  48. package/src/lib/components/Paper/README.mdx +1 -1
  49. package/src/lib/components/Paper/index.js +1 -1
  50. package/src/lib/components/Popover/Popover.jsx +24 -24
  51. package/src/lib/components/Popover/Popover.scss +7 -6
  52. package/src/lib/components/Popover/PopoverWrapper.jsx +5 -5
  53. package/src/lib/components/Popover/PopoverWrapper.scss +3 -0
  54. package/src/lib/components/Popover/README.mdx +13 -11
  55. package/src/lib/components/Popover/_theme.scss +1 -1
  56. package/src/lib/components/Radio/README.mdx +1 -1
  57. package/src/lib/components/Radio/Radio.jsx +37 -27
  58. package/src/lib/components/Radio/index.js +1 -1
  59. package/src/lib/components/ScrollView/README.mdx +146 -84
  60. package/src/lib/components/ScrollView/ScrollView.jsx +104 -113
  61. package/src/lib/components/ScrollView/ScrollView.scss +18 -16
  62. package/src/lib/components/ScrollView/index.js +1 -1
  63. package/src/lib/components/SelectField/README.mdx +66 -2
  64. package/src/lib/components/SelectField/SelectField.jsx +93 -49
  65. package/src/lib/components/SelectField/_components/Option/Option.jsx +46 -0
  66. package/src/lib/components/SelectField/_components/Option/index.js +1 -0
  67. package/src/lib/components/SelectField/index.js +1 -1
  68. package/src/lib/components/Table/README.mdx +4 -2
  69. package/src/lib/components/Table/Table.jsx +1 -1
  70. package/src/lib/components/Table/index.js +1 -1
  71. package/src/lib/components/Tabs/README.mdx +5 -3
  72. package/src/lib/components/Tabs/TabsItem.scss +1 -2
  73. package/src/lib/components/Text/README.mdx +9 -7
  74. package/src/lib/components/Text/index.js +1 -1
  75. package/src/lib/components/TextArea/README.mdx +1 -1
  76. package/src/lib/components/TextArea/TextArea.jsx +33 -33
  77. package/src/lib/components/TextArea/index.js +1 -1
  78. package/src/lib/components/TextField/README.mdx +3 -3
  79. package/src/lib/components/TextField/TextField.jsx +33 -34
  80. package/src/lib/components/TextField/index.js +1 -1
  81. package/src/lib/components/TextLink/README.mdx +1 -1
  82. package/src/lib/components/TextLink/index.js +1 -1
  83. package/src/lib/components/Toggle/README.mdx +1 -1
  84. package/src/lib/components/Toggle/Toggle.jsx +28 -28
  85. package/src/lib/components/Toggle/index.js +1 -1
  86. package/src/lib/components/Toolbar/README.mdx +8 -6
  87. package/src/lib/components/_helpers/transferProps.js +1 -1
  88. package/src/lib/index.js +24 -16
  89. package/src/lib/provider/withGlobalProps.jsx +20 -3
  90. package/src/lib/theme.scss +18 -26
  91. package/src/lib/translations/en.js +1 -1
  92. package/src/lib/components/Grid/_theme.scss +0 -11
  93. package/src/lib/components/ScrollView/_theme.scss +0 -2
  94. package/src/lib/components/withForwardedRef.jsx +0 -11
@@ -7,29 +7,29 @@ import { getRootValidationStateClassName } from '../_helpers/getRootValidationSt
7
7
  import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
8
8
  import { transferProps } from '../_helpers/transferProps';
9
9
  import { FormLayoutContext } from '../FormLayout';
10
- import withForwardedRef from '../withForwardedRef';
11
10
  import styles from './TextArea.scss';
12
11
 
13
- export const TextArea = ({
14
- cols,
15
- disabled,
16
- forwardedRef,
17
- fullWidth,
18
- helpText,
19
- id,
20
- isLabelVisible,
21
- label,
22
- layout,
23
- placeholder,
24
- required,
25
- rows,
26
- size,
27
- validationState,
28
- validationText,
29
- value,
30
- variant,
31
- ...restProps
32
- }) => {
12
+ export const TextArea = React.forwardRef((props, ref) => {
13
+ const {
14
+ cols,
15
+ disabled,
16
+ fullWidth,
17
+ helpText,
18
+ id,
19
+ isLabelVisible,
20
+ label,
21
+ layout,
22
+ placeholder,
23
+ required,
24
+ rows,
25
+ size,
26
+ validationState,
27
+ validationText,
28
+ value,
29
+ variant,
30
+ ...restProps
31
+ } = props;
32
+
33
33
  const context = useContext(FormLayoutContext);
34
34
 
35
35
  return (
@@ -68,7 +68,7 @@ export const TextArea = ({
68
68
  disabled={disabled}
69
69
  id={id}
70
70
  placeholder={placeholder}
71
- ref={forwardedRef}
71
+ ref={ref}
72
72
  required={required}
73
73
  rows={rows}
74
74
  value={value}
@@ -96,18 +96,18 @@ export const TextArea = ({
96
96
  </div>
97
97
  </label>
98
98
  );
99
- };
99
+ });
100
100
 
101
101
  TextArea.defaultProps = {
102
102
  cols: null,
103
103
  disabled: false,
104
- forwardedRef: undefined,
105
104
  fullWidth: false,
106
105
  helpText: null,
107
106
  id: undefined,
108
107
  isLabelVisible: true,
109
108
  layout: 'vertical',
110
109
  placeholder: null,
110
+ ref: undefined,
111
111
  required: false,
112
112
  rows: 3,
113
113
  size: 'medium',
@@ -126,14 +126,6 @@ TextArea.propTypes = {
126
126
  * If `true`, the input will be disabled.
127
127
  */
128
128
  disabled: PropTypes.bool,
129
- /**
130
- * Reference forwarded to the `textarea` element.
131
- */
132
- forwardedRef: PropTypes.oneOfType([
133
- PropTypes.func,
134
- // eslint-disable-next-line react/forbid-prop-types
135
- PropTypes.shape({ current: PropTypes.any }),
136
- ]),
137
129
  /**
138
130
  * If `true`, the field will span the full width of its parent.
139
131
  */
@@ -172,6 +164,14 @@ TextArea.propTypes = {
172
164
  /**
173
165
  * If `true`, the input will be required.
174
166
  */
167
+ /**
168
+ * Reference forwarded to the `textarea` element.
169
+ */
170
+ ref: PropTypes.oneOfType([
171
+ PropTypes.func,
172
+ // eslint-disable-next-line react/forbid-prop-types
173
+ PropTypes.shape({ current: PropTypes.any }),
174
+ ]),
175
175
  required: PropTypes.bool,
176
176
  /**
177
177
  * The number of visible text lines for the control.
@@ -202,6 +202,6 @@ TextArea.propTypes = {
202
202
  variant: PropTypes.oneOf(['filled', 'outline']),
203
203
  };
204
204
 
205
- export const TextAreaWithGlobalProps = withForwardedRef(withGlobalProps(TextArea, 'TextArea'));
205
+ export const TextAreaWithGlobalProps = withGlobalProps(TextArea, 'TextArea');
206
206
 
207
207
  export default TextAreaWithGlobalProps;
@@ -1 +1 @@
1
- export { default } from './TextArea';
1
+ export { default as TextArea } from './TextArea';
@@ -12,7 +12,7 @@ import {
12
12
  Playground,
13
13
  Props,
14
14
  } from 'docz'
15
- import { TextField } from './TextField'
15
+ import { TextField } from '../..'
16
16
 
17
17
  ## Basic Usage
18
18
 
@@ -189,8 +189,8 @@ attribute to achieve that effect (doesn't work for `number` input type though).
189
189
  by `inputSize` API option) is
190
190
  [not available for `number` input type][input-number-size]. TextField supports
191
191
  `inputSize` option for all types of inputs, so you can use it whenever you find
192
- it suitable. Just keep in mind the `size` attribute will not be present for
193
- numeric inputs.
192
+ it suitable. Just keep in mind the `size` attribute will not be present in the
193
+ DOM for numeric inputs.
194
194
 
195
195
  <Playground>
196
196
  <TextField
@@ -7,31 +7,30 @@ import { getRootValidationStateClassName } from '../_helpers/getRootValidationSt
7
7
  import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
8
8
  import { transferProps } from '../_helpers/transferProps';
9
9
  import { FormLayoutContext } from '../FormLayout';
10
- import withForwardedRef from '../withForwardedRef';
11
10
  import styles from './TextField.scss';
12
11
 
13
12
  const SMALL_INPUT_SIZE = 10;
14
13
 
15
- export const TextField = ({
16
- disabled,
17
- forwardedRef,
18
- fullWidth,
19
- helpText,
20
- id,
21
- inputSize,
22
- isLabelVisible,
23
- label,
24
- layout,
25
- placeholder,
26
- required,
27
- size,
28
- type,
29
- validationState,
30
- validationText,
31
- value,
32
- variant,
33
- ...restProps
34
- }) => {
14
+ export const TextField = React.forwardRef((props, ref) => {
15
+ const {
16
+ disabled,
17
+ fullWidth,
18
+ helpText,
19
+ id,
20
+ inputSize,
21
+ isLabelVisible,
22
+ label,
23
+ layout,
24
+ placeholder,
25
+ required,
26
+ size,
27
+ type,
28
+ validationState,
29
+ validationText,
30
+ value,
31
+ variant,
32
+ ...restProps
33
+ } = props;
35
34
  const context = useContext(FormLayoutContext);
36
35
  const hasSmallInput = (inputSize !== null) && (inputSize <= SMALL_INPUT_SIZE);
37
36
 
@@ -73,7 +72,7 @@ export const TextField = ({
73
72
  disabled={disabled}
74
73
  id={id}
75
74
  placeholder={placeholder}
76
- ref={forwardedRef}
75
+ ref={ref}
77
76
  required={required}
78
77
  size={type !== 'number' ? inputSize : null}
79
78
  type={type}
@@ -102,11 +101,10 @@ export const TextField = ({
102
101
  </div>
103
102
  </label>
104
103
  );
105
- };
104
+ });
106
105
 
107
106
  TextField.defaultProps = {
108
107
  disabled: false,
109
- forwardedRef: undefined,
110
108
  fullWidth: false,
111
109
  helpText: null,
112
110
  id: undefined,
@@ -114,6 +112,7 @@ TextField.defaultProps = {
114
112
  isLabelVisible: true,
115
113
  layout: 'vertical',
116
114
  placeholder: null,
115
+ ref: undefined,
117
116
  required: false,
118
117
  size: 'medium',
119
118
  type: 'text',
@@ -128,14 +127,6 @@ TextField.propTypes = {
128
127
  * If `true`, the input will be disabled.
129
128
  */
130
129
  disabled: PropTypes.bool,
131
- /**
132
- * Reference forwarded to the `input` element.
133
- */
134
- forwardedRef: PropTypes.oneOfType([
135
- PropTypes.func,
136
- // eslint-disable-next-line react/forbid-prop-types
137
- PropTypes.shape({ current: PropTypes.any }),
138
- ]),
139
130
  /**
140
131
  * If `true`, the field will span the full width of its parent.
141
132
  */
@@ -153,7 +144,7 @@ TextField.propTypes = {
153
144
  */
154
145
  id: PropTypes.string,
155
146
  /**
156
- * Treat the field differently when it's inside a FormLayout. Do not set manually!
147
+ * Width of the input field. Translated as `size` attribute for input types other than `number`.
157
148
  */
158
149
  inputSize: PropTypes.number,
159
150
  /**
@@ -176,6 +167,14 @@ TextField.propTypes = {
176
167
  * Optional example value.
177
168
  */
178
169
  placeholder: PropTypes.string,
170
+ /**
171
+ * Reference forwarded to the `input` element.
172
+ */
173
+ ref: PropTypes.oneOfType([
174
+ PropTypes.func,
175
+ // eslint-disable-next-line react/forbid-prop-types
176
+ PropTypes.shape({ current: PropTypes.any }),
177
+ ]),
179
178
  /**
180
179
  * If `true`, the input will be required.
181
180
  */
@@ -209,6 +208,6 @@ TextField.propTypes = {
209
208
  variant: PropTypes.oneOf(['filled', 'outline']),
210
209
  };
211
210
 
212
- export const TextFieldWithGlobalProps = withForwardedRef(withGlobalProps(TextField, 'TextField'));
211
+ export const TextFieldWithGlobalProps = withGlobalProps(TextField, 'TextField');
213
212
 
214
213
  export default TextFieldWithGlobalProps;
@@ -1 +1 @@
1
- export { default } from './TextField';
1
+ export { default as TextField } from './TextField';
@@ -10,7 +10,7 @@ import {
10
10
  Playground,
11
11
  Props,
12
12
  } from 'docz'
13
- import { TextLink } from './TextLink'
13
+ import { TextLink } from '../..'
14
14
 
15
15
  TextLink allows users to follow navigation.
16
16
 
@@ -1 +1 @@
1
- export { default } from './TextLink';
1
+ export { default as TextLink } from './TextLink';
@@ -12,7 +12,7 @@ import {
12
12
  Playground,
13
13
  Props,
14
14
  } from 'docz'
15
- import { Toggle } from './Toggle'
15
+ import { Toggle } from '../..'
16
16
 
17
17
  ## Basic Usage
18
18
 
@@ -5,24 +5,24 @@ import { classNames } from '../../utils/classNames';
5
5
  import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
6
6
  import { transferProps } from '../_helpers/transferProps';
7
7
  import { FormLayoutContext } from '../FormLayout';
8
- import withForwardedRef from '../withForwardedRef';
9
8
  import styles from './Toggle.scss';
10
9
 
11
- export const Toggle = ({
12
- checked,
13
- disabled,
14
- forwardedRef,
15
- helpText,
16
- id,
17
- isLabelVisible,
18
- label,
19
- labelPosition,
20
- required,
21
- validationState,
22
- validationText,
23
- value,
24
- ...restProps
25
- }) => {
10
+ export const Toggle = React.forwardRef((props, ref) => {
11
+ const {
12
+ checked,
13
+ disabled,
14
+ helpText,
15
+ id,
16
+ isLabelVisible,
17
+ label,
18
+ labelPosition,
19
+ required,
20
+ validationState,
21
+ validationText,
22
+ value,
23
+ ...restProps
24
+ } = props;
25
+
26
26
  const context = useContext(FormLayoutContext);
27
27
 
28
28
  return (
@@ -56,7 +56,7 @@ export const Toggle = ({
56
56
  disabled={disabled}
57
57
  id={id}
58
58
  name={id}
59
- ref={forwardedRef}
59
+ ref={ref}
60
60
  required={required}
61
61
  type="checkbox"
62
62
  value={value}
@@ -80,16 +80,16 @@ export const Toggle = ({
80
80
  )}
81
81
  </label>
82
82
  );
83
- };
83
+ });
84
84
 
85
85
  Toggle.defaultProps = {
86
86
  checked: undefined,
87
87
  disabled: false,
88
- forwardedRef: undefined,
89
88
  helpText: null,
90
89
  id: undefined,
91
90
  isLabelVisible: true,
92
91
  labelPosition: 'after',
92
+ ref: undefined,
93
93
  required: false,
94
94
  validationState: null,
95
95
  validationText: null,
@@ -105,14 +105,6 @@ Toggle.propTypes = {
105
105
  * If `true`, the input will be disabled.
106
106
  */
107
107
  disabled: PropTypes.bool,
108
- /**
109
- * Reference forwarded to the `input` element.
110
- */
111
- forwardedRef: PropTypes.oneOfType([
112
- PropTypes.func,
113
- // eslint-disable-next-line react/forbid-prop-types
114
- PropTypes.shape({ current: PropTypes.any }),
115
- ]),
116
108
  /**
117
109
  * Optional help text.
118
110
  */
@@ -138,6 +130,14 @@ Toggle.propTypes = {
138
130
  * Placement of the label relative to the input.
139
131
  */
140
132
  labelPosition: PropTypes.oneOf(['before', 'after']),
133
+ /**
134
+ * Reference forwarded to the `input` element.
135
+ */
136
+ ref: PropTypes.oneOfType([
137
+ PropTypes.func,
138
+ // eslint-disable-next-line react/forbid-prop-types
139
+ PropTypes.shape({ current: PropTypes.any }),
140
+ ]),
141
141
  /**
142
142
  * If `true`, the input will be required.
143
143
  */
@@ -159,6 +159,6 @@ Toggle.propTypes = {
159
159
  ]),
160
160
  };
161
161
 
162
- export const ToggleWithGlobalProps = withForwardedRef(withGlobalProps(Toggle, 'Toggle'));
162
+ export const ToggleWithGlobalProps = withGlobalProps(Toggle, 'Toggle');
163
163
 
164
164
  export default ToggleWithGlobalProps;
@@ -1 +1 @@
1
- export { default } from './Toggle';
1
+ export { default as Toggle } from './Toggle';
@@ -11,12 +11,14 @@ import {
11
11
  Props,
12
12
  } from 'docz'
13
13
  import { Placeholder } from '../../../docs/_components/Placeholder/Placeholder'
14
- import { CheckboxField } from '../CheckboxField/CheckboxField'
15
- import { Button } from '../Button/Button'
16
- import { ButtonGroup } from '../ButtonGroup/ButtonGroup'
17
- import { Toolbar } from './Toolbar'
18
- import { ToolbarGroup } from './ToolbarGroup'
19
- import { ToolbarItem } from './ToolbarItem'
14
+ import {
15
+ CheckboxField,
16
+ Button,
17
+ ButtonGroup,
18
+ Toolbar,
19
+ ToolbarGroup,
20
+ ToolbarItem,
21
+ } from '../..'
20
22
 
21
23
  The responsive Toolbar layout is a versatile tool that allows spacing, grouping,
22
24
  and aligning inline items.
@@ -1,7 +1,7 @@
1
1
  export const transferProps = ({
2
2
  children,
3
3
  className,
4
- forwardedRef,
4
+ ref,
5
5
  staticContext,
6
6
  ...restProps
7
7
  }) => restProps;
package/src/lib/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  // Components
2
- export { default as Alert } from './components/Alert';
3
- export { default as Badge } from './components/Badge';
4
- export { default as Button } from './components/Button';
2
+ export { Alert } from './components/Alert';
3
+ export { Badge } from './components/Badge';
4
+ export { Button } from './components/Button';
5
5
  export { ButtonGroup } from './components/ButtonGroup';
6
6
  export {
7
7
  Card,
8
8
  CardBody,
9
9
  CardFooter,
10
10
  } from './components/Card';
11
- export { default as CheckboxField } from './components/CheckboxField';
12
- export { default as FileInputField } from './components/FileInputField';
11
+ export { CheckboxField } from './components/CheckboxField';
12
+ export { FileInputField } from './components/FileInputField';
13
13
  export {
14
14
  FormLayout,
15
15
  FormLayoutCustomField,
@@ -18,25 +18,33 @@ export {
18
18
  Grid,
19
19
  GridSpan,
20
20
  } from './components/Grid';
21
- export { default as Modal } from './components/Modal';
22
- export { default as Paper } from './components/Paper';
21
+ export {
22
+ Modal,
23
+ ModalBody,
24
+ ModalCloseButton,
25
+ ModalContent,
26
+ ModalFooter,
27
+ ModalHeader,
28
+ ModalTitle,
29
+ } from './components/Modal';
30
+ export { Paper } from './components/Paper';
23
31
  export {
24
32
  Popover,
25
33
  PopoverWrapper,
26
34
  } from './components/Popover';
27
- export { default as Radio } from './components/Radio';
28
- export { default as ScrollView } from './components/ScrollView';
29
- export { default as SelectField } from './components/SelectField';
35
+ export { Radio } from './components/Radio';
36
+ export { ScrollView } from './components/ScrollView';
37
+ export { SelectField } from './components/SelectField';
30
38
  export {
31
39
  Tabs,
32
40
  TabsItem,
33
41
  } from './components/Tabs';
34
- export { default as Table } from './components/Table';
35
- export { default as Text } from './components/Text';
36
- export { default as TextArea } from './components/TextArea';
37
- export { default as TextField } from './components/TextField';
38
- export { default as TextLink } from './components/TextLink';
39
- export { default as Toggle } from './components/Toggle';
42
+ export { Table } from './components/Table';
43
+ export { Text } from './components/Text';
44
+ export { TextArea } from './components/TextArea';
45
+ export { TextField } from './components/TextField';
46
+ export { TextLink } from './components/TextLink';
47
+ export { Toggle } from './components/Toggle';
40
48
  export {
41
49
  Toolbar,
42
50
  ToolbarGroup,
@@ -1,8 +1,12 @@
1
+ import PropTypes from 'prop-types';
1
2
  import React from 'react';
2
3
  import RUIContext from './RUIContext';
3
4
 
4
5
  export default (Component, componentName) => {
5
- const WithGlobalPropsComponent = (props) => (
6
+ const WithGlobalPropsComponent = ({
7
+ forwardedRef,
8
+ ...rest
9
+ }) => (
6
10
  <RUIContext.Consumer>
7
11
  {({ globalProps }) => {
8
12
  const contextGlobalProps = globalProps ? globalProps[componentName] : null;
@@ -10,12 +14,25 @@ export default (Component, componentName) => {
10
14
  return (
11
15
  <Component
12
16
  {...contextGlobalProps}
13
- {...props}
17
+ {...rest}
18
+ ref={forwardedRef}
14
19
  />
15
20
  );
16
21
  }}
17
22
  </RUIContext.Consumer>
18
23
  );
19
24
 
20
- return WithGlobalPropsComponent;
25
+ WithGlobalPropsComponent.defaultProps = {
26
+ forwardedRef: undefined,
27
+ };
28
+
29
+ WithGlobalPropsComponent.propTypes = {
30
+ forwardedRef: PropTypes.oneOfType([
31
+ PropTypes.func,
32
+ // eslint-disable-next-line react/forbid-prop-types
33
+ PropTypes.shape({ current: PropTypes.any }),
34
+ ]),
35
+ };
36
+
37
+ return React.forwardRef((props, ref) => (<WithGlobalPropsComponent {...props} forwardedRef={ref} />));
21
38
  };
@@ -196,13 +196,6 @@
196
196
  --rui-FormLayout--horizontal__label__width--auto: auto;
197
197
  --rui-FormLayout--horizontal__label__width--limited: fit-content(50%);
198
198
 
199
- //
200
- // Grid
201
- // ====
202
-
203
- --rui-Grid__column-gap: var(--rui-spacing-4);
204
- --rui-Grid__row-gap: var(--rui-spacing-4);
205
-
206
199
  //
207
200
  // Toolbar
208
201
  // =======
@@ -850,24 +843,21 @@
850
843
  --rui-FormField--check--checked__border-color: var(--rui-color-active);
851
844
  --rui-FormField--check--checked__check-background-color: var(--rui-color-active);
852
845
 
853
- //
854
- // TextLink
855
- // ========
856
-
857
- --rui-TextLink__color: var(--rui-link-color);
858
- --rui-TextLink__text-decoration: var(--rui-link-decoration);
859
- --rui-TextLink--hover__color: var(--rui-link-hover-color);
860
- --rui-TextLink--hover__text-decoration: var(--rui-link-hover-decoration);
861
-
862
846
  //
863
847
  // Modal
864
848
  // =====
865
849
 
850
+ --rui-Modal__padding-x: var(--rui-spacing-4);
851
+ --rui-Modal__padding-y: var(--rui-spacing-4);
866
852
  --rui-Modal__background: var(--rui-color-white);
867
- --rui-Modal__box-shadow: var(--rui-elevation-2);
853
+ --rui-Modal__box-shadow: none;
854
+ --rui-Modal__separator__width: var(--rui-border-width);
855
+ --rui-Modal__separator__color: var(--rui-color-gray-100);
856
+ --rui-Modal__header__gap: var(--rui-spacing-2);
868
857
  --rui-Modal__outer-spacing--xs: var(--rui-spacing-2);
869
858
  --rui-Modal__outer-spacing--sm: var(--rui-spacing-6);
870
- --rui-Modal__footer__background: var(--rui-color-gray-100);
859
+ --rui-Modal__footer__background: var(--rui-color-white);
860
+ --rui-Modal__footer__gap: var(--rui-spacing-2);
871
861
  --rui-Modal__backdrop__background: rgb(0 0 0 / 50%);
872
862
  --rui-Modal--auto__min-width: 18rem;
873
863
  --rui-Modal--auto__max-width: 60rem;
@@ -894,7 +884,7 @@
894
884
  // Popover
895
885
  // =======
896
886
 
897
- --rui-Popover__width: 15rem;
887
+ --rui-Popover__max-width: 15rem;
898
888
  --rui-Popover__padding: var(--rui-spacing-3);
899
889
  --rui-Popover__border-width: 0;
900
890
  --rui-Popover__border-color: transparent;
@@ -903,13 +893,6 @@
903
893
  --rui-Popover__background-color: var(--rui-color-white);
904
894
  --rui-Popover__box-shadow: var(--rui-elevation-2);
905
895
 
906
- //
907
- // ScrollView
908
- // ==========
909
-
910
- --rui-ScrollView__arrow__initial-offset: -0.5rem;
911
- --rui-ScrollView__shadow__initial-offset: -1rem;
912
-
913
896
  //
914
897
  // Tabs
915
898
  // ====
@@ -961,4 +944,13 @@
961
944
  --rui-Tabs__item--active__box-shadow: var(--rui-Tabs__item__box-shadow);
962
945
  --rui-Tabs__item--active__shift-y: -0.25em;
963
946
  --rui-Tabs__item--active__label__shift-y: 0;
947
+
948
+ //
949
+ // TextLink
950
+ // ========
951
+
952
+ --rui-TextLink__color: var(--rui-link-color);
953
+ --rui-TextLink__text-decoration: var(--rui-link-decoration);
954
+ --rui-TextLink--hover__color: var(--rui-link-hover-color);
955
+ --rui-TextLink--hover__text-decoration: var(--rui-link-hover-decoration);
964
956
  }
@@ -2,7 +2,7 @@ export default {
2
2
  Alert: {
3
3
  close: 'Close',
4
4
  },
5
- Modal: {
5
+ ModalCloseButton: {
6
6
  close: 'Close',
7
7
  },
8
8
  ScrollView: {
@@ -1,11 +0,0 @@
1
- $responsive-properties: (
2
- columns: 1fr,
3
- column-gap: var(--rui-Grid__column-gap),
4
- rows: auto,
5
- row-gap: var(--rui-Grid__row-gap),
6
- auto-flow: initial,
7
- align-content: initial,
8
- align-items: initial,
9
- justify-content: initial,
10
- justify-items: initial,
11
- );
@@ -1,2 +0,0 @@
1
- $arrow-initial-offset: var(--rui-ScrollView__arrow__initial-offset);
2
- $shadow-initial-offset: var(--rui-ScrollView__shadow__initial-offset);
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
-
3
- export default (WrappedComponent) => {
4
- const withForwardedRef = (props, ref) => (
5
- <WrappedComponent {...props} forwardedRef={ref} />
6
- );
7
-
8
- withForwardedRef.displayName = `withForwardedRef(${WrappedComponent.name || WrappedComponent.name})`;
9
-
10
- return React.forwardRef(withForwardedRef);
11
- };