@react-ui-org/react-ui 0.46.0 → 0.47.0

Sign up to get free protection for your applications and to get access to all the features.
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;