@bundle-stats/ui 3.2.6-beta.1 → 3.2.6-beta.2

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 (80) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/lib/components/bundle-assets/bundle-assets.js +8 -6
  3. package/lib/components/bundle-assets/bundle-assets.module.css +5 -0
  4. package/lib/components/bundle-modules/bundle-modules.js +4 -5
  5. package/lib/components/bundle-packages/bundle-packages.js +6 -4
  6. package/lib/components/bundle-packages/bundle-packages.module.css +4 -0
  7. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  8. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  9. package/lib/components/module-info/module-info.module.css +1 -0
  10. package/lib/components/summary-item/summary-item.js +14 -17
  11. package/lib/components/summary-item/summary-item.module.css +1 -19
  12. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  13. package/lib/css/variables.css +1 -1
  14. package/lib/hooks/search-params.js +6 -6
  15. package/lib/ui/dropdown/dropdown.js +15 -24
  16. package/lib/ui/dropdown/dropdown.module.css +7 -7
  17. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  18. package/lib/ui/hover-card/hover-card.js +100 -0
  19. package/lib/ui/hover-card/hover-card.module.css +52 -0
  20. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  21. package/lib/ui/{popover → hover-card}/index.js +4 -4
  22. package/lib/ui/icon/icon.js +6 -6
  23. package/lib/ui/index.js +0 -8
  24. package/lib/ui/tooltip/tooltip.js +10 -9
  25. package/lib-esm/components/bundle-assets/bundle-assets.js +8 -6
  26. package/lib-esm/components/bundle-assets/bundle-assets.module.css +5 -0
  27. package/lib-esm/components/bundle-modules/bundle-modules.js +4 -5
  28. package/lib-esm/components/bundle-packages/bundle-packages.js +6 -4
  29. package/lib-esm/components/bundle-packages/bundle-packages.module.css +4 -0
  30. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  31. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  32. package/lib-esm/components/module-info/module-info.module.css +1 -0
  33. package/lib-esm/components/summary-item/summary-item.js +13 -17
  34. package/lib-esm/components/summary-item/summary-item.module.css +1 -19
  35. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  36. package/lib-esm/css/variables.css +1 -1
  37. package/lib-esm/hooks/search-params.js +6 -6
  38. package/lib-esm/ui/dropdown/dropdown.js +14 -23
  39. package/lib-esm/ui/dropdown/dropdown.module.css +7 -7
  40. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  41. package/lib-esm/ui/hover-card/hover-card.js +86 -0
  42. package/lib-esm/ui/hover-card/hover-card.module.css +52 -0
  43. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  44. package/lib-esm/ui/hover-card/index.js +1 -0
  45. package/lib-esm/ui/icon/icon.js +3 -3
  46. package/lib-esm/ui/index.js +0 -1
  47. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  48. package/package.json +5 -5
  49. package/src/components/bundle-assets/bundle-assets.jsx +38 -36
  50. package/src/components/bundle-assets/bundle-assets.module.css +5 -0
  51. package/src/components/bundle-modules/bundle-modules.jsx +24 -14
  52. package/src/components/bundle-packages/bundle-packages.jsx +11 -3
  53. package/src/components/bundle-packages/bundle-packages.module.css +4 -0
  54. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  55. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  56. package/src/components/module-info/module-info.jsx +1 -5
  57. package/src/components/module-info/module-info.module.css +1 -0
  58. package/src/components/summary-item/summary-item.jsx +20 -26
  59. package/src/components/summary-item/summary-item.module.css +1 -19
  60. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  61. package/src/css/variables.css +1 -1
  62. package/src/hooks/search-params.js +18 -11
  63. package/src/ui/dropdown/dropdown.jsx +9 -17
  64. package/src/ui/dropdown/dropdown.module.css +7 -7
  65. package/src/ui/hover-card/hover-card.jsx +79 -0
  66. package/src/ui/hover-card/hover-card.module.css +52 -0
  67. package/src/ui/hover-card/index.js +1 -0
  68. package/src/ui/icon/icon.jsx +11 -7
  69. package/src/ui/index.js +0 -1
  70. package/src/ui/tooltip/tooltip.jsx +10 -14
  71. package/lib/ui/popover/popover.js +0 -92
  72. package/lib/ui/popover/popover.module.css +0 -66
  73. package/lib/ui/popover/popover.stories.js +0 -26
  74. package/lib-esm/ui/popover/index.js +0 -1
  75. package/lib-esm/ui/popover/popover.js +0 -71
  76. package/lib-esm/ui/popover/popover.module.css +0 -66
  77. package/lib-esm/ui/popover/popover.stories.js +0 -14
  78. package/src/ui/popover/index.js +0 -1
  79. package/src/ui/popover/popover.jsx +0 -79
  80. package/src/ui/popover/popover.module.css +0 -66
@@ -3,7 +3,8 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import { getGlobalMetricType, getMetricRunInfo } from '@bundle-stats/utils';
5
5
 
6
- import { Popover } from '../../ui/popover';
6
+ import { HoverCard } from '../../ui/hover-card';
7
+ import { Icon } from '../../ui/icon';
7
8
  import { Skeleton } from '../../ui/skeleton';
8
9
  import { Stack } from '../../layout/stack';
9
10
  import { FlexStack } from '../../layout/flex-stack';
@@ -11,32 +12,25 @@ import { Metric } from '../metric';
11
12
  import { Delta } from '../delta';
12
13
  import css from './summary-item.module.css';
13
14
 
14
- const MetricInfoPopover = ({ description, url }) => {
15
- // Workaround cases where the parent is a link
16
- const readMoreOnClick = () => {
17
- window.open(url);
18
- };
19
-
20
- return (
21
- <Stack space="xxxsmall">
22
- <p>{description}</p>
23
- {url && (
24
- <p>
25
- <button type="button" className={css.readMoreBtn} onClick={readMoreOnClick}>
26
- Read more
27
- </button>
28
- </p>
29
- )}
30
- </Stack>
31
- );
32
- };
33
-
34
- MetricInfoPopover.propTypes = {
15
+ const MetricInfo = ({ description, url }) => (
16
+ <Stack space="xxxsmall">
17
+ <p>{description}</p>
18
+ {url && (
19
+ <p>
20
+ <a href={url} className={css.readMoreLink}>
21
+ Read more
22
+ </a>
23
+ </p>
24
+ )}
25
+ </Stack>
26
+ );
27
+
28
+ MetricInfo.propTypes = {
35
29
  description: PropTypes.string.isRequired,
36
30
  url: PropTypes.string,
37
31
  };
38
32
 
39
- MetricInfoPopover.defaultProps = {
33
+ MetricInfo.defaultProps = {
40
34
  url: '',
41
35
  };
42
36
 
@@ -65,9 +59,9 @@ export const SummaryItem = ({
65
59
  <span>{metric.label}</span>
66
60
 
67
61
  {showMetricDescriptionTooltip && (
68
- <Popover className={css.icon} icon="help">
69
- <MetricInfoPopover {...metric} />
70
- </Popover>
62
+ <HoverCard className={css.icon} label={<Icon glyph="help" />}>
63
+ <MetricInfo {...metric} />
64
+ </HoverCard>
71
65
  )}
72
66
  </FlexStack>
73
67
 
@@ -1,4 +1,5 @@
1
1
  .title {
2
+ align-items: center;
2
3
  color: var(--color-text-ultra-light);
3
4
  font-weight: bold;
4
5
  font-size: var(--size-xsmall);
@@ -7,25 +8,6 @@
7
8
  white-space: nowrap;
8
9
  }
9
10
 
10
- .readMoreBtn {
11
- appearance: none;
12
- padding: 0;
13
- border: 0;
14
- background: none;
15
- cursor: pointer;
16
- /* simulate link */
17
- color: var(--color-primary);
18
- text-decoration: underline;
19
- line-height: var(--space-small);
20
- }
21
-
22
- .readMoreBtn:hover,
23
- .readMoreBtn:active,
24
- .readMoreBtn:focus {
25
- color: var(--color-primary-dark);
26
- text-decoration: none;
27
- }
28
-
29
11
  .currentMetric {
30
12
  display: block;
31
13
  color: var(--color-heading);
@@ -1,31 +1,28 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import cx from 'classnames'
3
+ import cx from 'classnames';
4
4
 
5
5
  import config from '../../config.json';
6
6
  import I18N from '../../i18n';
7
7
  import { FlexStack } from '../../layout/flex-stack';
8
8
  import { Stack } from '../../layout/stack';
9
- import { Popover } from '../../ui/popover';
9
+ import { Icon } from '../../ui/icon';
10
+ import { HoverCard } from '../../ui/hover-card';
10
11
  import css from './total-size-type-title.module.css';
11
12
 
12
13
  export const TotalSizeTypeTitle = ({ className }) => (
13
14
  <FlexStack space="xxxsmall" className={cx(css.title, className)}>
14
15
  <span>{I18N.ASSET_TOTALS}</span>
15
- <Popover icon="help">
16
+ <HoverCard label={<Icon glyph="help" />}>
16
17
  <Stack space="xxxsmall">
17
18
  <p>{I18N.ASSET_TOTALS_INFO}</p>
18
19
  <p>
19
- <a
20
- href={config.documentation.assets}
21
- target="_blank"
22
- rel="noreferrer"
23
- >
20
+ <a href={config.documentation.assets} target="_blank" rel="noreferrer">
24
21
  {I18N.READ_MORE}
25
22
  </a>
26
23
  </p>
27
24
  </Stack>
28
- </Popover>
25
+ </HoverCard>
29
26
  </FlexStack>
30
27
  );
31
28
 
@@ -170,7 +170,7 @@
170
170
  --color-outline-warning: var(--color-yellow-200);
171
171
  --color-outline-danger: var(--color-red-100);
172
172
 
173
- --color-shadow: rgba(0, 0, 0, 0.1);
173
+ --color-shadow: rgba(0, 0, 0, 0.2);
174
174
 
175
175
  --transition-in: all 0.2s ease-in;
176
176
  --transition-out: all 0.17s ease-out;
@@ -25,7 +25,8 @@ const getSearchPattern = (search) => {
25
25
  };
26
26
 
27
27
  const getSearchReducer =
28
- ({ defaultFilters, allEntriesFilters, setParentState }) => (state, action) => {
28
+ ({ defaultFilters, allEntriesFilters, setParentState }) =>
29
+ (state, action) => {
29
30
  const { type, payload } = action;
30
31
 
31
32
  switch (type) {
@@ -116,29 +117,35 @@ export const useSearchParams = ({
116
117
  // Update state when the custom filters/search are changing - initial load or route updates
117
118
  useLayoutEffect(() => {
118
119
  // Run a deep comparison to prevent circular setState triggering
119
- if (parentSearch === search || isEqual(parentFilters, filters)) {
120
+ if (parentSearch === search && isEqual(initialFilters, filters)) {
120
121
  return;
121
122
  }
122
123
 
123
124
  dispatch({ type: ACTION_SET, payload: generateState(initialFilters, parentSearch) });
124
- }, [search, filters, parentFilters, parentSearch]);
125
+ }, [dispatch, search, filters, parentSearch, initialFilters]);
125
126
 
126
127
  /** Callbacks */
127
- const handleUpdateSearch = useCallback((newValue) => {
128
- dispatch({ type: ACTION_SET_SEARCH, payload: newValue });
129
- }, []);
128
+ const handleUpdateSearch = useCallback(
129
+ (newValue) => {
130
+ dispatch({ type: ACTION_SET_SEARCH, payload: newValue });
131
+ },
132
+ [dispatch],
133
+ );
130
134
 
131
- const handleUpdateFilters = useCallback((newFilters) => {
132
- dispatch({ type: ACTION_SET_FILTERS, payload: newFilters });
133
- }, []);
135
+ const handleUpdateFilters = useCallback(
136
+ (newFilters) => {
137
+ dispatch({ type: ACTION_SET_FILTERS, payload: newFilters });
138
+ },
139
+ [dispatch],
140
+ );
134
141
 
135
142
  const handleResetFilters = useCallback(() => {
136
143
  dispatch({ type: ACTION_RESET_DEFAULT });
137
- }, []);
144
+ }, [dispatch]);
138
145
 
139
146
  const handleResetAllFilters = useCallback(() => {
140
147
  dispatch({ type: ACTION_RESET_ALL });
141
- }, []);
148
+ }, [dispatch]);
142
149
 
143
150
  return {
144
151
  search,
@@ -1,37 +1,36 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
- import { Menu, MenuItem, MenuButton, useMenuState } from 'reakit/Menu';
4
+ import { Menu, MenuButton, MenuItem, useMenuState } from 'ariakit/menu';
5
5
 
6
6
  import { FlexStack } from '../../layout/flex-stack';
7
7
  import { Icon } from '../icon';
8
8
  import css from './dropdown.module.css';
9
9
 
10
10
  export const Dropdown = (props) => {
11
- const { className, label, ariaLabel, glyph, activeLabel, children } = props;
12
- const rootClassName = cx(css.root, activeLabel && css.activeLabel, className);
13
-
14
- const menu = useMenuState({ baseId: process.env.NODE_ENV === 'test' && 'id-test', modal: true });
11
+ const { className, label, ariaLabel, glyph, children } = props;
12
+ const rootClassName = cx(css.root, className);
13
+ const menuState = useMenuState();
15
14
 
16
15
  return (
17
- <>
18
- <MenuButton {...menu} className={rootClassName} tabIndex={null}>
16
+ <div className={rootClassName}>
17
+ <MenuButton state={menuState} className={css.button} tabIndex={null}>
19
18
  <FlexStack space="xxxsmall">
20
19
  {glyph && <Icon className={css.labelIcon} glyph={glyph} />}
21
20
  {label}
22
21
  </FlexStack>
23
22
  </MenuButton>
24
- <Menu {...menu} aria-label={ariaLabel || label} className={css.dropdown}>
23
+ <Menu state={menuState} aria-label={ariaLabel || label} className={css.dropdown}>
25
24
  {typeof children === 'function'
26
25
  ? children({
27
26
  MenuItem,
28
- menu,
27
+ menu: menuState,
29
28
  menuItemClassName: css.menuItem,
30
29
  menuItemActiveClassName: css.menuItemActive,
31
30
  })
32
31
  : children}
33
32
  </Menu>
34
- </>
33
+ </div>
35
34
  );
36
35
  };
37
36
 
@@ -40,7 +39,6 @@ Dropdown.defaultProps = {
40
39
  label: null,
41
40
  ariaLabel: '',
42
41
  glyph: null,
43
- activeLabel: false,
44
42
  };
45
43
 
46
44
  Dropdown.propTypes = {
@@ -56,12 +54,6 @@ Dropdown.propTypes = {
56
54
  /** Icon glyph */
57
55
  glyph: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
58
56
 
59
- /** Dropdown open state */
60
- open: PropTypes.bool.isRequired,
61
-
62
- /** Active label flag */
63
- activeLabel: PropTypes.bool,
64
-
65
57
  /** Content */
66
58
  children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.func]).isRequired,
67
59
  };
@@ -1,4 +1,8 @@
1
1
  .root {
2
+ display: inline-block;
3
+ }
4
+
5
+ .button {
2
6
  background: none;
3
7
  border: none;
4
8
  padding: 0;
@@ -18,9 +22,9 @@
18
22
  color: var(--color-text-light);
19
23
  }
20
24
 
21
- .root:hover,
22
- .root:focus,
23
- .root:active {
25
+ .button:hover,
26
+ .button:focus,
27
+ .button:active {
24
28
  outline: none;
25
29
  box-shadow: 0 0 var(--space-xxxsmall) var(--color-shadow);
26
30
  border-color: var(--color-outline-dark);
@@ -44,10 +48,6 @@
44
48
  box-shadow: 0 2px var(--space-xsmall) var(--color-shadow);
45
49
  }
46
50
 
47
- .activeLabel .label {
48
- color: var(--color-text);
49
- }
50
-
51
51
  .menuItem {
52
52
  display: block;
53
53
  appearance: none;
@@ -0,0 +1,79 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import cx from 'classnames';
4
+ import {
5
+ Hovercard,
6
+ HovercardAnchor,
7
+ HovercardArrow,
8
+ useHovercard,
9
+ useHovercardState,
10
+ } from 'ariakit/hovercard';
11
+
12
+ import { Icon } from '../icon';
13
+ import css from './hover-card.module.css';
14
+
15
+ const resolveComponent = (as, href) => {
16
+ if (as) {
17
+ return as;
18
+ }
19
+
20
+ if (href) {
21
+ return 'a';
22
+ }
23
+
24
+ return 'span';
25
+ };
26
+
27
+ export const HoverCard = (props) => {
28
+ const { className, href, as, label, children } = props;
29
+ const state = useHovercardState({ gutter: 8 });
30
+ const hoverCardProps = useHovercard({ state, portal: true });
31
+
32
+ // Fallback to span if no href
33
+ const Component = resolveComponent(as, href);
34
+
35
+ return (
36
+ <div className={cx(css.root, className)}>
37
+ <HovercardAnchor state={state} href={href} className={css.anchor} as={Component}>
38
+ {label}
39
+ </HovercardAnchor>
40
+ <Hovercard
41
+ {...hoverCardProps}
42
+ state={state}
43
+ className={css.hoverCard}
44
+ style={{ zIndex: 10000 }}
45
+ >
46
+ <HovercardArrow size={24} />
47
+ {typeof children === 'function' ? children({ close: state.hide }) : children}
48
+ <Icon
49
+ glyph="close"
50
+ size="small"
51
+ as="button"
52
+ type="button"
53
+ className={css.closeBtn}
54
+ onClick={state.hide}
55
+ />
56
+ </Hovercard>
57
+ </div>
58
+ );
59
+ };
60
+
61
+ HoverCard.propTypes = {
62
+ /** Adopted child class name */
63
+ className: PropTypes.string,
64
+ /** Anchor label */
65
+ label: PropTypes.node,
66
+ /** Anchor href */
67
+ href: PropTypes.string,
68
+ /** Anchor component */
69
+ as: PropTypes.elementType,
70
+ /** Hover card component */
71
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
72
+ };
73
+
74
+ HoverCard.defaultProps = {
75
+ className: '',
76
+ label: '',
77
+ as: '',
78
+ href: '',
79
+ };
@@ -0,0 +1,52 @@
1
+ .root {
2
+ display: inline-block;
3
+ }
4
+
5
+ .anchor {
6
+ display: inline-block;
7
+ color: inherit;
8
+ text-decoration: none;
9
+ }
10
+
11
+ a.anchor,
12
+ buton.anchor {
13
+ cursor: pointer;
14
+ }
15
+
16
+ a.anchor:hover,
17
+ button.anchor:hover {
18
+ color: var(--color-primary);
19
+ text-decoration: underline;
20
+ }
21
+
22
+ .hoverCard {
23
+ padding: var(--space-xsmall) var(--space-large) var(--space-xsmall) var(--space-small);
24
+ border-radius: var(--radius-medium);
25
+ max-width: 320px;
26
+ outline: none;
27
+ filter: drop-shadow(0 0 var(--space-xxsmall) var(--color-shadow));
28
+ will-change: filter;
29
+ background: var(--color-light);
30
+ font-size: var(--size-small);
31
+ }
32
+
33
+ .closeBtn {
34
+ position: absolute;
35
+ right: 0;
36
+ top: var(--space-xxxsmall);
37
+ width: var(--space-large);
38
+ height: var(--space-large);
39
+ padding: var(--space-xxsmall);
40
+ background: none;
41
+ border: none;
42
+ cursor: pointer;
43
+ color: var(--color-text-ultra-light);
44
+ transition: var(--transition-out);
45
+ }
46
+
47
+ .closeBtn:hover,
48
+ .closeBtn:active,
49
+ .closeBtn:focus {
50
+ color: var(--color-text-light);
51
+ transition: var(--transition-in);
52
+ }
@@ -0,0 +1 @@
1
+ export * from './hover-card';
@@ -18,13 +18,17 @@ const ICONS = {
18
18
  WARNING: 'warning',
19
19
  };
20
20
 
21
- export const Icon = ({ className, glyph, as: Component, size, ...restProps }) => (
22
- <Component className={cx(css.root, className, css[size])} {...restProps}>
23
- <svg className={css.icon}>
24
- <use xlinkHref={`#${glyph}`} />
25
- </svg>
26
- </Component>
27
- );
21
+ export const Icon = (props) => {
22
+ const { className, glyph, as: Component, size, ...restProps } = props;
23
+
24
+ return (
25
+ <Component className={cx(css.root, className, css[size])} {...restProps}>
26
+ <svg className={css.icon}>
27
+ <use xlinkHref={`#${glyph}`} />
28
+ </svg>
29
+ </Component>
30
+ );
31
+ };
28
32
 
29
33
  Icon.ICONS = ICONS;
30
34
 
package/src/ui/index.js CHANGED
@@ -10,7 +10,6 @@ export { Input } from './input';
10
10
  export { Loader } from './loader';
11
11
  export { Logo } from './logo';
12
12
  export { Panels } from './panels';
13
- export { Popover } from './popover';
14
13
  export { Skeleton } from './skeleton';
15
14
  export { SortDropdown } from './sort-dropdown';
16
15
  export { Table } from './table';
@@ -3,10 +3,10 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import {
5
5
  Tooltip as UITooltip,
6
+ TooltipAnchor as UITooltipAnchor,
6
7
  TooltipArrow as UITooltipArrow,
7
- TooltipReference as UITooltipReference,
8
8
  useTooltipState,
9
- } from 'reakit/Tooltip';
9
+ } from 'ariakit/tooltip';
10
10
 
11
11
  import css from './tooltip.module.css';
12
12
 
@@ -21,26 +21,22 @@ export const Tooltip = (props) => {
21
21
  ...restProps
22
22
  } = props;
23
23
 
24
- const rootClassName = cx(css.root, className);
25
- const tooltipProps = useTooltipState({
26
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
27
- placement: 'top',
28
- });
24
+ const tooltip = useTooltipState({ placement: 'top' });
29
25
 
30
26
  return (
31
27
  <>
32
- <UITooltipReference
28
+ <UITooltipAnchor
33
29
  as={Component}
34
- className={rootClassName}
35
- {...ref ? { ref } : {}}
30
+ className={cx(css.root, className)}
31
+ state={tooltip}
32
+ {...(ref ? { ref } : {})}
36
33
  {...restProps}
37
- {...tooltipProps}
38
34
  >
39
35
  {children}
40
- </UITooltipReference>
36
+ </UITooltipAnchor>
41
37
  {title && (
42
- <UITooltip {...tooltipProps} className={cx(css.tooltip, darkMode && css.tooltipDarkMode)}>
43
- <UITooltipArrow {...tooltipProps} className={css.arrow} size={12} />
38
+ <UITooltip state={tooltip} className={cx(css.tooltip, darkMode && css.tooltipDarkMode)}>
39
+ <UITooltipArrow state={tooltip} className={css.arrow} size={12} />
44
40
  {title}
45
41
  </UITooltip>
46
42
  )}
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.Popover = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
- var _Popover = require("reakit/Popover");
17
-
18
- var _icon = require("../icon");
19
-
20
- var _popoverModule = _interopRequireDefault(require("./popover.module.css"));
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
-
30
- var Popover = function Popover(_ref) {
31
- var className = _ref.className,
32
- icon = _ref.icon,
33
- label = _ref.label,
34
- ariaLabel = _ref.ariaLabel,
35
- children = _ref.children;
36
- var popover = (0, _Popover.usePopoverState)({
37
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
38
- gutter: 12,
39
- modal: true,
40
- placement: 'top'
41
- });
42
- var onCloseButtonClick = (0, _react.useCallback)(function (event) {
43
- event.preventDefault();
44
- popover.toggle();
45
- }, [popover]);
46
- var onButtonClick = (0, _react.useCallback)(function (event) {
47
- event.preventDefault();
48
- popover.toggle();
49
- }, [popover]);
50
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Popover.PopoverDisclosure, _extends({
51
- className: (0, _classnames["default"])(_popoverModule["default"].button, className)
52
- }, popover, {
53
- onClick: onButtonClick,
54
- "aria-label": ariaLabel
55
- }), icon && (typeof icon === 'string' ? /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
56
- className: _popoverModule["default"].icon,
57
- glyph: icon
58
- }) : icon), label && /*#__PURE__*/_react["default"].createElement("span", {
59
- className: _popoverModule["default"].label
60
- }, label)), /*#__PURE__*/_react["default"].createElement(_Popover.Popover, _extends({
61
- className: _popoverModule["default"].popover
62
- }, popover, {
63
- tabIndex: 0
64
- }), /*#__PURE__*/_react["default"].createElement(_Popover.PopoverArrow, _extends({
65
- className: _popoverModule["default"].arrow
66
- }, popover, {
67
- size: 16
68
- })), typeof children === 'function' ? children({
69
- popoverToggle: popover.toggle
70
- }) : children, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
71
- glyph: "close",
72
- as: "button",
73
- type: "button",
74
- className: _popoverModule["default"].closeBtn,
75
- onClick: onCloseButtonClick
76
- })));
77
- };
78
-
79
- exports.Popover = Popover;
80
- Popover.propTypes = {
81
- className: _propTypes["default"].string,
82
- label: _propTypes["default"].element,
83
- icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element]),
84
- children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element, _propTypes["default"].func]).isRequired,
85
- ariaLabel: _propTypes["default"].string
86
- };
87
- Popover.defaultProps = {
88
- className: '',
89
- icon: '',
90
- label: '',
91
- ariaLabel: 'View more info'
92
- };