@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
@@ -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';
@@ -209,6 +209,6 @@ TextField.propTypes = {
209
209
  variant: PropTypes.oneOf(['filled', 'outline']),
210
210
  };
211
211
 
212
- export const TextFieldWithContext = withForwardedRef(withProviderContext(TextField, 'TextField'));
212
+ export const TextFieldWithGlobalProps = withForwardedRef(withGlobalProps(TextField, 'TextField'));
213
213
 
214
- export default TextFieldWithContext;
214
+ export default TextFieldWithGlobalProps;
@@ -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 { transferProps } from '../_helpers/transferProps';
5
5
  import styles from './TextLink.scss';
6
6
 
@@ -39,6 +39,6 @@ TextLink.propTypes = {
39
39
  label: PropTypes.string.isRequired,
40
40
  };
41
41
 
42
- export const LinkWithContext = withProviderContext(TextLink, 'Link');
42
+ export const LinkWithGlobalProps = withGlobalProps(TextLink, 'TextLink');
43
43
 
44
- export default LinkWithContext;
44
+ export default LinkWithGlobalProps;
@@ -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';
@@ -159,6 +159,6 @@ Toggle.propTypes = {
159
159
  ]),
160
160
  };
161
161
 
162
- export const ToggleWithContext = withForwardedRef(withProviderContext(Toggle, 'Toggle'));
162
+ export const ToggleWithGlobalProps = withForwardedRef(withGlobalProps(Toggle, 'Toggle'));
163
163
 
164
- export default ToggleWithContext;
164
+ export default ToggleWithGlobalProps;
@@ -50,8 +50,8 @@ See [API](#api) for all available options.
50
50
  ## General Guidelines
51
51
 
52
52
  - **Toolbar is great for flexible inline layouts.** For stacking your content
53
- vertically, use the [List][list] layout. For two-dimensional layouts head to
54
- the [Grid][grid] layout.
53
+ vertically or building two-dimensional layouts head to the [Grid][grid]
54
+ layout.
55
55
 
56
56
  - **Wrap your items** into the ToolbarItem component. This ensures your content
57
57
  is properly spaced and aligned with other Toolbar elements. Do **not** try to
@@ -88,7 +88,7 @@ of `right`.
88
88
  <span id="alignment-label">Alignment:</span>
89
89
  </ToolbarItem>
90
90
  <ToolbarItem>
91
- <ButtonGroup aria-labelledby="#alignment-label">
91
+ <ButtonGroup aria-labelledby="alignment-label">
92
92
  <Button
93
93
  color={alignment === 'top' ? 'dark' : 'primary'}
94
94
  label="top"
@@ -117,7 +117,7 @@ of `right`.
117
117
  <span id="justification-label">Justification:</span>
118
118
  </ToolbarItem>
119
119
  <ToolbarItem>
120
- <ButtonGroup aria-labelledby="#justification-label">
120
+ <ButtonGroup aria-labelledby="justification-label">
121
121
  <Button
122
122
  color={justification === 'start' ? 'dark' : 'primary'}
123
123
  label="start"
@@ -307,7 +307,7 @@ specifically for this kind of job.
307
307
  ## Flexible Items
308
308
 
309
309
  Toolbar items can be made flexible to grow and shrink according to the available
310
- space. This is useful e.g. when you need to combine text with an action.
310
+ space. This is useful e.g. when you need to combine text with an action:
311
311
 
312
312
  <Playground>
313
313
  <Toolbar>
@@ -320,6 +320,19 @@ space. This is useful e.g. when you need to combine text with an action.
320
320
  </Toolbar>
321
321
  </Playground>
322
322
 
323
+ Or to build a classic media layout with image on the left and text on the right:
324
+
325
+ <Playground>
326
+ <Toolbar>
327
+ <ToolbarItem>
328
+ <Placeholder bordered>Media object</Placeholder>
329
+ </ToolbarItem>
330
+ <ToolbarItem flexible>
331
+ <Placeholder bordered>Media body</Placeholder>
332
+ </ToolbarItem>
333
+ </Toolbar>
334
+ </Playground>
335
+
323
336
  ## API
324
337
 
325
338
  <Props table of={Toolbar} />
@@ -346,6 +359,5 @@ A wrapper for individual toolbar items.
346
359
  [inline-elements]: https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements
347
360
  [block-elements]: https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements
348
361
  [grid]: /components/grid
349
- [list]: /components/list
350
362
  [spacing]: /css-helpers/spacing
351
363
  [text]: /components/text
@@ -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 './Toolbar.scss';
@@ -9,6 +9,7 @@ export const Toolbar = ({
9
9
  align,
10
10
  children,
11
11
  dense,
12
+ id,
12
13
  justify,
13
14
  nowrap,
14
15
  }) => {
@@ -57,6 +58,7 @@ export const Toolbar = ({
57
58
  alignClass(align),
58
59
  justifyClass(justify),
59
60
  )}
61
+ id={id}
60
62
  >
61
63
  {children}
62
64
  </div>
@@ -67,6 +69,7 @@ Toolbar.defaultProps = {
67
69
  align: 'top',
68
70
  children: null,
69
71
  dense: false,
72
+ id: undefined,
70
73
  justify: 'start',
71
74
  nowrap: false,
72
75
  };
@@ -88,6 +91,10 @@ Toolbar.propTypes = {
88
91
  * If `true`, spacing of all toolbar items in the toolbar will be reduced.
89
92
  */
90
93
  dense: PropTypes.bool,
94
+ /**
95
+ * ID of the root HTML element.
96
+ */
97
+ id: PropTypes.string,
91
98
  /**
92
99
  * Horizontal alignment (distribution) of toolbar items and groups.
93
100
  */
@@ -98,6 +105,6 @@ Toolbar.propTypes = {
98
105
  nowrap: PropTypes.bool,
99
106
  };
100
107
 
101
- export const ToolbarWithContext = withProviderContext(Toolbar, 'Toolbar');
108
+ export const ToolbarWithGlobalProps = withGlobalProps(Toolbar, 'Toolbar');
102
109
 
103
- export default ToolbarWithContext;
110
+ export default ToolbarWithGlobalProps;
@@ -7,19 +7,17 @@
7
7
  .group {
8
8
  display: flex;
9
9
  flex-wrap: wrap;
10
+ gap: theme.$gap;
10
11
  }
11
12
 
12
13
  .toolbar {
13
- @include spacing.bottom(layouts, $compensation: theme.$gap);
14
-
15
- margin: calc(-1 * #{theme.$gap});
14
+ @include spacing.bottom(layouts);
16
15
  }
17
16
 
18
17
  .item {
19
18
  display: flex; // 1.
20
19
  flex: none;
21
20
  flex-direction: column; // 1.
22
- margin: theme.$gap;
23
21
  }
24
22
 
25
23
  .isItemFlexible {
@@ -59,16 +57,9 @@
59
57
  justify-content: space-between;
60
58
  }
61
59
 
62
- .isDense {
63
- margin: calc(-1 * #{theme.$gap-dense});
64
- }
65
-
66
- .isDense .item {
67
- margin: theme.$gap-dense;
68
- }
69
-
70
- .isDense > .isDense {
71
- margin: 0;
60
+ .isDense,
61
+ .isDense .group {
62
+ gap: theme.$gap-dense;
72
63
  }
73
64
 
74
65
  .isNowrap {
@@ -78,12 +69,3 @@
78
69
  .isNowrap > .item:not(.isItemFlexible) {
79
70
  flex: 0 1 auto;
80
71
  }
81
-
82
- .toolbar.isDense {
83
- @include spacing.bottom(layouts, $compensation: theme.$gap-dense);
84
- }
85
-
86
- .toolbar:not(.isDense) > .isDense,
87
- .group:not(.isDense) > .isDense {
88
- margin: theme.$gap-dense;
89
- }
@@ -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 './Toolbar.scss';
@@ -9,6 +9,7 @@ export const ToolbarGroup = ({
9
9
  align,
10
10
  children,
11
11
  dense,
12
+ id,
12
13
  nowrap,
13
14
  }) => {
14
15
  if (isChildrenEmpty(children)) {
@@ -39,6 +40,7 @@ export const ToolbarGroup = ({
39
40
  nowrap && styles.isNowrap,
40
41
  alignClass(align),
41
42
  )}
43
+ id={id}
42
44
  >
43
45
  {children}
44
46
  </div>
@@ -49,6 +51,7 @@ ToolbarGroup.defaultProps = {
49
51
  align: 'top',
50
52
  children: null,
51
53
  dense: false,
54
+ id: undefined,
52
55
  nowrap: false,
53
56
  };
54
57
 
@@ -65,12 +68,16 @@ ToolbarGroup.propTypes = {
65
68
  * If `true`, spacing of toolbar items in the group will be reduced.
66
69
  */
67
70
  dense: PropTypes.bool,
71
+ /**
72
+ * ID of the root HTML element.
73
+ */
74
+ id: PropTypes.string,
68
75
  /**
69
76
  * If set, the toolbar group will not wrap.
70
77
  */
71
78
  nowrap: PropTypes.bool,
72
79
  };
73
80
 
74
- export const ToolbarGroupWithContext = withProviderContext(ToolbarGroup, 'ToolbarGroup');
81
+ export const ToolbarGroupWithGlobalProps = withGlobalProps(ToolbarGroup, 'ToolbarGroup');
75
82
 
76
- export default ToolbarGroupWithContext;
83
+ export default ToolbarGroupWithGlobalProps;
@@ -1,13 +1,14 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
3
  import { classNames } from '../../utils/classNames';
4
- import { withProviderContext } from '../../provider';
4
+ import { withGlobalProps } from '../../provider';
5
5
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
6
6
  import styles from './Toolbar.scss';
7
7
 
8
8
  export const ToolbarItem = ({
9
9
  children,
10
10
  flexible,
11
+ id,
11
12
  }) => {
12
13
  if (isChildrenEmpty(children)) {
13
14
  return null;
@@ -19,6 +20,7 @@ export const ToolbarItem = ({
19
20
  styles.item,
20
21
  flexible && styles.isItemFlexible,
21
22
  )}
23
+ id={id}
22
24
  >
23
25
  {children}
24
26
  </div>
@@ -28,6 +30,7 @@ export const ToolbarItem = ({
28
30
  ToolbarItem.defaultProps = {
29
31
  children: null,
30
32
  flexible: false,
33
+ id: undefined,
31
34
  };
32
35
 
33
36
  ToolbarItem.propTypes = {
@@ -39,8 +42,12 @@ ToolbarItem.propTypes = {
39
42
  * Allow item to grow and shrink if needed.
40
43
  */
41
44
  flexible: PropTypes.bool,
45
+ /**
46
+ * ID of the root HTML element.
47
+ */
48
+ id: PropTypes.string,
42
49
  };
43
50
 
44
- export const ToolbarItemWithContext = withProviderContext(ToolbarItem, 'ToolbarItem');
51
+ export const ToolbarItemWithGlobalProps = withGlobalProps(ToolbarItem, 'ToolbarItem');
45
52
 
46
- export default ToolbarItemWithContext;
53
+ export default ToolbarItemWithGlobalProps;
package/src/lib/index.js CHANGED
@@ -18,17 +18,12 @@ export {
18
18
  Grid,
19
19
  GridSpan,
20
20
  } from './components/Grid';
21
- export {
22
- List,
23
- ListItem,
24
- } from './components/List';
25
- export {
26
- Media,
27
- MediaBody,
28
- MediaObject,
29
- } from './components/Media';
30
21
  export { default as Modal } from './components/Modal';
31
22
  export { default as Paper } from './components/Paper';
23
+ export {
24
+ Popover,
25
+ PopoverWrapper,
26
+ } from './components/Popover';
32
27
  export { default as Radio } from './components/Radio';
33
28
  export { default as ScrollView } from './components/ScrollView';
34
29
  export { default as SelectField } from './components/SelectField';
@@ -1,2 +1,3 @@
1
1
  export { default as RUIProvider } from './RUIProvider';
2
- export { default as withProviderContext } from './withProviderContext';
2
+ export { default as RUIContext } from './RUIContext';
3
+ export { default as withGlobalProps } from './withGlobalProps';
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import RUIContext from './RUIContext';
3
+
4
+ export default (Component, componentName) => {
5
+ const WithGlobalPropsComponent = (props) => (
6
+ <RUIContext.Consumer>
7
+ {({ globalProps }) => {
8
+ const contextGlobalProps = globalProps ? globalProps[componentName] : null;
9
+
10
+ return (
11
+ <Component
12
+ {...contextGlobalProps}
13
+ {...props}
14
+ />
15
+ );
16
+ }}
17
+ </RUIContext.Consumer>
18
+ );
19
+
20
+ return WithGlobalPropsComponent;
21
+ };
@@ -4,6 +4,6 @@ $values: (
4
4
  md: 48em,
5
5
  lg: 66em,
6
6
  xl: 84em,
7
- xxl: 100em,
8
- xxxl: 120em,
7
+ x2l: 100em,
8
+ x3l: 120em,
9
9
  );
@@ -8,5 +8,5 @@ $sm: map.get(breakpoints.$values, sm);
8
8
  $md: map.get(breakpoints.$values, md);
9
9
  $lg: map.get(breakpoints.$values, lg);
10
10
  $xl: map.get(breakpoints.$values, xl);
11
- $xxl: map.get(breakpoints.$values, xxl);
12
- $xxxl: map.get(breakpoints.$values, xxxl);
11
+ $x2l: map.get(breakpoints.$values, x2l);
12
+ $x3l: map.get(breakpoints.$values, x3l);
@@ -11,17 +11,13 @@
11
11
  }
12
12
  }
13
13
 
14
- @mixin bottom($category: default, $compensation: null) {
14
+ @mixin bottom($category: default) {
15
15
  @if not map.has-key(spacing.$bottom, $category) {
16
16
  @error "Invalid spacing category specified! #{$category} doesn't exist. "
17
17
  + "Choose one of #{map.keys(spacing.$bottom)}.";
18
18
  }
19
19
 
20
20
  &:not(:last-child) {
21
- @if $compensation {
22
- margin-bottom: calc(#{map.get(spacing.$bottom, $category)} - #{$compensation});
23
- } @else {
24
- margin-bottom: map.get(spacing.$bottom, $category);
25
- }
21
+ margin-bottom: map.get(spacing.$bottom, $category);
26
22
  }
27
23
  }
@@ -98,8 +98,8 @@
98
98
  --rui-breakpoint-md: #{breakpoints.$md};
99
99
  --rui-breakpoint-lg: #{breakpoints.$lg};
100
100
  --rui-breakpoint-xl: #{breakpoints.$xl};
101
- --rui-breakpoint-xxl: #{breakpoints.$xxl};
102
- --rui-breakpoint-xxxl: #{breakpoints.$xxxl};
101
+ --rui-breakpoint-x2l: #{breakpoints.$x2l};
102
+ --rui-breakpoint-x3l: #{breakpoints.$x3l};
103
103
 
104
104
  // Spacing
105
105
  --rui-spacing-0: 0;
@@ -145,6 +145,7 @@
145
145
 
146
146
  // Elevations
147
147
  --rui-elevation-1: 0 0.01rem 0.65rem -0.1rem #{rgba(0, 0, 0, 0.3)};
148
+ --rui-elevation-2: 0.2rem 0.25rem 1.2rem -0.1rem #{rgba(0, 0, 0, 0.15)};
148
149
 
149
150
  // Accessibility
150
151
  --rui-tap-target-size: 10mm;
@@ -199,28 +200,15 @@
199
200
  // Grid
200
201
  // ====
201
202
 
202
- --rui-Grid__columns: 1fr;
203
203
  --rui-Grid__column-gap: var(--rui-spacing-4);
204
- --rui-Grid__rows: auto;
205
204
  --rui-Grid__row-gap: var(--rui-spacing-4);
206
- --rui-Grid__auto-flow: initial;
207
- --rui-Grid__align-content: initial;
208
- --rui-Grid__align-items: initial;
209
- --rui-Grid__justify-content: initial;
210
- --rui-Grid__justify-items: initial;
211
-
212
- //
213
- // List
214
- // ====
215
-
216
- --rui-List__row-gap: var(--rui-spacing-2);
217
205
 
218
206
  //
219
207
  // Toolbar
220
208
  // =======
221
209
 
222
- --rui-Toolbar__gap: var(--rui-spacing-2);
223
- --rui-Toolbar__gap--dense: var(--rui-spacing-1);
210
+ --rui-Toolbar__gap: var(--rui-spacing-4);
211
+ --rui-Toolbar__gap--dense: var(--rui-spacing-2);
224
212
 
225
213
  // ============================================================================================ //
226
214
  // 3. UI COMPONENTS //
@@ -876,7 +864,7 @@
876
864
  // =====
877
865
 
878
866
  --rui-Modal__background: var(--rui-color-white);
879
- --rui-Modal__box-shadow: none;
867
+ --rui-Modal__box-shadow: var(--rui-elevation-2);
880
868
  --rui-Modal__outer-spacing--xs: var(--rui-spacing-2);
881
869
  --rui-Modal__outer-spacing--sm: var(--rui-spacing-6);
882
870
  --rui-Modal__footer__background: var(--rui-color-gray-100);
@@ -902,6 +890,19 @@
902
890
  --rui-Paper--muted__opacity: var(--rui-disabled-opacity);
903
891
  --rui-Paper--raised__box-shadow: var(--rui-elevation-1);
904
892
 
893
+ //
894
+ // Popover
895
+ // =======
896
+
897
+ --rui-Popover__width: 15rem;
898
+ --rui-Popover__padding: var(--rui-spacing-3);
899
+ --rui-Popover__border-width: 0;
900
+ --rui-Popover__border-color: transparent;
901
+ --rui-Popover__border-radius: var(--rui-border-radius);
902
+ --rui-Popover__color: var(--rui-color-black);
903
+ --rui-Popover__background-color: var(--rui-color-white);
904
+ --rui-Popover__box-shadow: var(--rui-elevation-2);
905
+
905
906
  //
906
907
  // ScrollView
907
908
  // ==========
@@ -1,73 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import React from 'react';
3
- import { withProviderContext } from '../../provider';
4
- import { classNames } from '../../utils/classNames';
5
- import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
6
- import styles from './List.scss';
7
-
8
- export const List = ({
9
- align,
10
- autoWidth,
11
- children,
12
- }) => {
13
- if (isChildrenEmpty(children)) {
14
- return null;
15
- }
16
-
17
- let alignClass;
18
-
19
- if (align === 'start') {
20
- alignClass = styles.alignStart;
21
- } else if (align === 'end') {
22
- alignClass = styles.alignEnd;
23
- }
24
-
25
- let autoWidthClass;
26
-
27
- if (autoWidth) {
28
- autoWidthClass = styles.isAutoWidth;
29
- }
30
-
31
- return (
32
- <div
33
- className={classNames(
34
- styles.root,
35
- autoWidthClass,
36
- )}
37
- >
38
- <ul
39
- className={classNames(
40
- styles.list,
41
- alignClass,
42
- )}
43
- >
44
- {children}
45
- </ul>
46
- </div>
47
- );
48
- };
49
-
50
- List.defaultProps = {
51
- align: 'start',
52
- autoWidth: false,
53
- children: null,
54
- };
55
-
56
- List.propTypes = {
57
- /**
58
- * Horizontal alignment of list items.
59
- */
60
- align: PropTypes.oneOf(['start', 'end']),
61
- /**
62
- * If `true`, the list items will take up only as much horizontal space as necessary.
63
- */
64
- autoWidth: PropTypes.bool,
65
- /**
66
- * Individual ListItems. If none are provided nothing is rendered.
67
- */
68
- children: PropTypes.node,
69
- };
70
-
71
- export const ListWithContext = withProviderContext(List, 'List');
72
-
73
- export default ListWithContext;
@@ -1,53 +0,0 @@
1
- @use "../../styles/tools/reset";
2
- @use "../../styles/tools/spacing";
3
- @use "theme";
4
-
5
- .root {
6
- @include spacing.bottom(layouts);
7
- }
8
-
9
- .list {
10
- @include reset.list();
11
-
12
- display: flex;
13
- flex-direction: column;
14
- }
15
-
16
- .item {
17
- width: 100%;
18
- margin-bottom: theme.$row-gap;
19
-
20
- &:last-child {
21
- margin-bottom: 0;
22
- }
23
- }
24
-
25
- .alignStart {
26
- align-items: flex-start;
27
- text-align: left;
28
- }
29
-
30
- .alignEnd {
31
- align-items: flex-end;
32
- text-align: right;
33
- }
34
-
35
- [dir="rtl"] .alignStart {
36
- text-align: right;
37
- }
38
-
39
- [dir="rtl"] .alignEnd {
40
- text-align: left;
41
- }
42
-
43
- .isAutoWidth .list {
44
- display: inline-flex;
45
- }
46
-
47
- .isAutoWidth .item {
48
- width: auto;
49
- }
50
-
51
- .item .root {
52
- margin-bottom: 0;
53
- }
@@ -1,32 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import React from 'react';
3
- import { withProviderContext } from '../../provider';
4
- import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
5
- import styles from './List.scss';
6
-
7
- export const ListItem = ({ children }) => {
8
- if (isChildrenEmpty(children)) {
9
- return null;
10
- }
11
-
12
- return (
13
- <li className={styles.item}>
14
- {children}
15
- </li>
16
- );
17
- };
18
-
19
- ListItem.defaultProps = {
20
- children: null,
21
- };
22
-
23
- ListItem.propTypes = {
24
- /**
25
- * Content of the list item. If none are provided nothing is rendered.
26
- */
27
- children: PropTypes.node,
28
- };
29
-
30
- export const ListItemWithContext = withProviderContext(ListItem, 'ListItem');
31
-
32
- export default ListItemWithContext;