@bundle-stats/ui 3.2.1-alpha.0 → 3.2.1-beta.9
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.
- package/CHANGELOG.md +2 -1
- package/lib/components/browsertime-table/browsertime-table.stories.js +1 -0
- package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +17 -18
- package/lib/components/job-meta/job-meta.js +1 -1
- package/lib/components/summary/summary.js +52 -34
- package/lib/hooks/search-params.js +1 -1
- package/lib/utils.js +6 -3
- package/lib-esm/app/app.js +60 -50
- package/lib-esm/app/header/header.js +22 -19
- package/lib-esm/components/asset-info/asset-info.js +8 -6
- package/lib-esm/components/browsertime-table/browsertime-table.stories.js +2 -1
- package/lib-esm/components/bundle-assets/bundle-assets.js +93 -80
- package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +29 -26
- package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +6 -5
- package/lib-esm/components/bundle-modules/bundle-modules.js +82 -67
- package/lib-esm/components/bundle-modules/bundle-modules.utils.js +9 -6
- package/lib-esm/components/bundle-modules/index.js +6 -3
- package/lib-esm/components/bundle-packages/bundle-packages.js +29 -24
- package/lib-esm/components/component-link.js +7 -6
- package/lib-esm/components/delta/delta.js +7 -6
- package/lib-esm/components/job-meta/job-meta.js +6 -5
- package/lib-esm/components/job-name/job-name.js +14 -11
- package/lib-esm/components/metric/metric.js +10 -9
- package/lib-esm/components/metrics-table/metrics-table.js +24 -20
- package/lib-esm/components/metrics-table-options/metrics-table-options.js +7 -5
- package/lib-esm/components/summary/summary.js +60 -30
- package/lib-esm/components/summary/summary.stories.js +11 -8
- package/lib-esm/components/summary-item/summary-item.js +18 -15
- package/lib-esm/components/total-size-type-title/total-size-type-title.js +17 -14
- package/lib-esm/hooks/rows-filter.js +7 -6
- package/lib-esm/hooks/rows-sort.js +8 -7
- package/lib-esm/hooks/search-params.js +74 -70
- package/lib-esm/layout/footer/footer.js +33 -30
- package/lib-esm/layout/header/header.js +17 -14
- package/lib-esm/layout/header/header.stories.js +45 -30
- package/lib-esm/prototypes/typography.stories.js +5 -4
- package/lib-esm/stories/wrapper.js +20 -14
- package/lib-esm/ui/container/container.js +12 -9
- package/lib-esm/ui/dropdown/dropdown.stories.js +9 -6
- package/lib-esm/ui/file-name/file-name.js +10 -7
- package/lib-esm/ui/filters/filters.container.js +14 -8
- package/lib-esm/ui/filters/filters.js +41 -19
- package/lib-esm/ui/filters/filters.stories.js +4 -3
- package/lib-esm/ui/filters/filters.utils.js +12 -6
- package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +7 -6
- package/lib-esm/ui/icon/icon.js +16 -13
- package/lib-esm/ui/input/input.js +6 -5
- package/lib-esm/ui/loader/loader.js +10 -7
- package/lib-esm/ui/logo/logo.js +7 -6
- package/lib-esm/ui/logo/logo.stories.js +7 -1
- package/lib-esm/ui/panels/panels.js +10 -7
- package/lib-esm/ui/popover/popover.js +8 -7
- package/lib-esm/ui/sort-dropdown/sort-dropdown.js +10 -7
- package/lib-esm/ui/table/table.js +8 -7
- package/lib-esm/ui/tabs/tabs.js +9 -6
- package/lib-esm/ui/toolbar/toolbar.stories.js +10 -7
- package/lib-esm/utils.js +13 -4
- package/package.json +19 -14
- package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.jsx +15 -15
- package/src/components/job-meta/job-meta.jsx +1 -3
- package/src/components/summary/summary.jsx +26 -10
- package/src/hooks/search-params.js +1 -1
- package/src/utils.jsx +5 -3
|
@@ -62,13 +62,14 @@ Td.propTypes = {
|
|
|
62
62
|
/** Adopted child class name */
|
|
63
63
|
className: PropTypes.string
|
|
64
64
|
};
|
|
65
|
-
export const Table =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
export const Table = _ref => {
|
|
66
|
+
let {
|
|
67
|
+
className,
|
|
68
|
+
emptyMessage,
|
|
69
|
+
compact,
|
|
70
|
+
outline,
|
|
71
|
+
children
|
|
72
|
+
} = _ref;
|
|
72
73
|
const rootClassName = cx(css.root, className, compact && css.compact, outline && css.outline);
|
|
73
74
|
|
|
74
75
|
if (!children) {
|
package/lib-esm/ui/tabs/tabs.js
CHANGED
|
@@ -14,12 +14,15 @@ const cloneElement = element => {
|
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
export const Tabs =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
export const Tabs = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
className,
|
|
20
|
+
children
|
|
21
|
+
} = _ref;
|
|
22
|
+
return /*#__PURE__*/React.createElement("nav", {
|
|
23
|
+
className: cx(css.root, className)
|
|
24
|
+
}, React.Children.map(children, cloneElement));
|
|
25
|
+
};
|
|
23
26
|
Tabs.defaultProps = {
|
|
24
27
|
className: ''
|
|
25
28
|
};
|
|
@@ -6,11 +6,14 @@ const stories = storiesOf('UI/Toolbar', module);
|
|
|
6
6
|
stories.addDecorator(getWrapperDecorator());
|
|
7
7
|
stories.add('default', () => /*#__PURE__*/React.createElement(Toolbar, null, /*#__PURE__*/React.createElement("div", null, "Content")));
|
|
8
8
|
stories.add('with actions', () => /*#__PURE__*/React.createElement(Toolbar, {
|
|
9
|
-
renderActions:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
renderActions: _ref => {
|
|
10
|
+
let {
|
|
11
|
+
actionClassName
|
|
12
|
+
} = _ref;
|
|
13
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
14
|
+
className: actionClassName
|
|
15
|
+
}, "Action 1"), /*#__PURE__*/React.createElement("div", {
|
|
16
|
+
className: actionClassName
|
|
17
|
+
}, "Action 2"));
|
|
18
|
+
}
|
|
16
19
|
}, "Content"));
|
package/lib-esm/utils.js
CHANGED
|
@@ -2,7 +2,11 @@ import _chunk from "lodash/chunk";
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import cx from 'classnames';
|
|
4
4
|
import COLORS from './chart-colors.json';
|
|
5
|
-
export const getColors = (count
|
|
5
|
+
export const getColors = function (count) {
|
|
6
|
+
if (count === void 0) {
|
|
7
|
+
count = 2;
|
|
8
|
+
}
|
|
9
|
+
|
|
6
10
|
const chunks = _chunk(COLORS, Math.round(COLORS.length / count));
|
|
7
11
|
|
|
8
12
|
return chunks.map((chunkColors, index) => {
|
|
@@ -22,13 +26,18 @@ export const getRenderChildWithClassName = className => child => {
|
|
|
22
26
|
return null;
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
|
|
29
|
+
const {
|
|
30
|
+
props
|
|
31
|
+
} = child;
|
|
32
|
+
|
|
33
|
+
if (!props) {
|
|
26
34
|
return /*#__PURE__*/React.createElement("div", {
|
|
27
35
|
className: className
|
|
28
36
|
}, child);
|
|
29
37
|
}
|
|
30
38
|
|
|
31
|
-
return /*#__PURE__*/React.cloneElement(child, { ...
|
|
32
|
-
className: cx(className,
|
|
39
|
+
return /*#__PURE__*/React.cloneElement(child, { ...props,
|
|
40
|
+
className: cx(className, props.className) // eslint-disable-line react/prop-types
|
|
41
|
+
|
|
33
42
|
});
|
|
34
43
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundle-stats/ui",
|
|
3
|
-
"version": "3.2.1-
|
|
3
|
+
"version": "3.2.1-beta.9",
|
|
4
4
|
"description": "UI components for BundleStats projects.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -36,32 +36,37 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/ui#readme",
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@babel/cli": "7.
|
|
40
|
-
"@babel/core": "7.
|
|
41
|
-
"@babel/
|
|
42
|
-
"@babel/preset-
|
|
39
|
+
"@babel/cli": "7.16.0",
|
|
40
|
+
"@babel/core": "7.16.0",
|
|
41
|
+
"@babel/plugin-proposal-class-properties": "7.16.0",
|
|
42
|
+
"@babel/preset-env": "7.16.4",
|
|
43
|
+
"@babel/preset-react": "7.16.0",
|
|
43
44
|
"@simplyianm/babel-plugin-inline-react-svg": "1.2.0",
|
|
44
45
|
"@storybook/addon-knobs": "6.3.1",
|
|
45
|
-
"@storybook/addon-
|
|
46
|
-
"@storybook/
|
|
47
|
-
"@storybook/
|
|
46
|
+
"@storybook/addon-postcss": "2.0.0",
|
|
47
|
+
"@storybook/addon-storyshots": "6.3.12",
|
|
48
|
+
"@storybook/addons": "6.3.12",
|
|
49
|
+
"@storybook/builder-webpack5": "6.3.12",
|
|
50
|
+
"@storybook/manager-webpack5": "6.3.12",
|
|
51
|
+
"@storybook/react": "6.3.12",
|
|
48
52
|
"babel-core": "7.0.0-bridge.0",
|
|
49
|
-
"babel-jest": "
|
|
53
|
+
"babel-jest": "27.3.1",
|
|
50
54
|
"babel-plugin-lodash": "3.3.4",
|
|
51
55
|
"babel-plugin-require-context-hook": "1.0.0",
|
|
52
|
-
"chromatic": "6.0.
|
|
56
|
+
"chromatic": "6.0.6",
|
|
53
57
|
"classnames": "2.3.1",
|
|
54
58
|
"colormap": "2.3.2",
|
|
55
|
-
"core-js": "3.19.
|
|
59
|
+
"core-js": "3.19.1",
|
|
56
60
|
"cross-env": "7.0.3",
|
|
57
61
|
"enzyme": "3.11.0",
|
|
58
62
|
"enzyme-adapter-react-16": "1.15.6",
|
|
59
63
|
"enzyme-to-json": "3.6.2",
|
|
60
64
|
"hex-rgb": "5.0.0",
|
|
61
65
|
"identity-obj-proxy": "3.0.0",
|
|
62
|
-
"jest": "
|
|
66
|
+
"jest": "27.3.1",
|
|
63
67
|
"jest-date-mock": "1.0.8",
|
|
64
68
|
"lodash": "4.17.21",
|
|
69
|
+
"postcss": "8.3.11",
|
|
65
70
|
"prop-types": "15.7.2",
|
|
66
71
|
"react": "16.14.0",
|
|
67
72
|
"react-dom": "16.14.0",
|
|
@@ -79,11 +84,11 @@
|
|
|
79
84
|
"react-router-dom": "^5.3.0"
|
|
80
85
|
},
|
|
81
86
|
"dependencies": {
|
|
82
|
-
"@bundle-stats/utils": "^3.2.1-
|
|
87
|
+
"@bundle-stats/utils": "^3.2.1-beta.9",
|
|
83
88
|
"date-fns": "^2.6.0",
|
|
84
89
|
"query-string": "^7.0.0",
|
|
85
90
|
"reakit": "^1.3.6",
|
|
86
91
|
"use-query-params": "^1.2.2"
|
|
87
92
|
},
|
|
88
|
-
"gitHead": "
|
|
93
|
+
"gitHead": "43b453a608ced66881eeca23c3b6c464b7dcfd8b"
|
|
89
94
|
}
|
|
@@ -13,6 +13,20 @@ import { Stack } from '../../layout/stack';
|
|
|
13
13
|
import { SummaryItem } from '../summary-item';
|
|
14
14
|
import css from './bundle-assets-totals-chart-bars.module.css';
|
|
15
15
|
|
|
16
|
+
const getTooltip = (items, jobs, itemIndex, runIndex) => () => (
|
|
17
|
+
<SummaryItem
|
|
18
|
+
className={css.itemTooltip}
|
|
19
|
+
id={get(items, [itemIndex, 'key'])}
|
|
20
|
+
data={{
|
|
21
|
+
current: get(items, [itemIndex, 'runs', runIndex, 'value'], 0),
|
|
22
|
+
baseline: get(items, [itemIndex, 'runs', runIndex + 1, 'value'], 0),
|
|
23
|
+
}}
|
|
24
|
+
showDelta={runIndex < jobs.length - 1}
|
|
25
|
+
showBaselineValue={runIndex < jobs.length - 1}
|
|
26
|
+
size="large"
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
|
|
16
30
|
export const BundleAssetsTotalsChartBars = ({
|
|
17
31
|
className,
|
|
18
32
|
jobs,
|
|
@@ -43,20 +57,6 @@ export const BundleAssetsTotalsChartBars = ({
|
|
|
43
57
|
});
|
|
44
58
|
const colors = getColors(max(map(dataGraphs, (values) => values.length)));
|
|
45
59
|
|
|
46
|
-
const getTooltip = (itemIndex, runIndex) => () => (
|
|
47
|
-
<SummaryItem
|
|
48
|
-
className={css.itemTooltip}
|
|
49
|
-
id={get(items, [itemIndex, 'key'])}
|
|
50
|
-
data={{
|
|
51
|
-
current: get(items, [itemIndex, 'runs', runIndex, 'value'], 0),
|
|
52
|
-
baseline: get(items, [itemIndex, 'runs', runIndex + 1, 'value'], 0),
|
|
53
|
-
}}
|
|
54
|
-
showDelta={runIndex < jobs.length - 1}
|
|
55
|
-
showBaselineValue={runIndex < jobs.length - 1}
|
|
56
|
-
size="large"
|
|
57
|
-
/>
|
|
58
|
-
);
|
|
59
|
-
|
|
60
60
|
return (
|
|
61
61
|
<Stack className={rootClassName} space="medium">
|
|
62
62
|
{dataGraphs.map((data, runIndex) => {
|
|
@@ -66,7 +66,7 @@ export const BundleAssetsTotalsChartBars = ({
|
|
|
66
66
|
value,
|
|
67
67
|
color: colors[valueIndex],
|
|
68
68
|
label: labels[valueIndex],
|
|
69
|
-
getItemTooltip: getTooltip(valueIndex, runIndex),
|
|
69
|
+
getItemTooltip: getTooltip(items, jobs, valueIndex, runIndex),
|
|
70
70
|
}));
|
|
71
71
|
|
|
72
72
|
return (
|
|
@@ -11,6 +11,28 @@ import { ComponentLink } from '../component-link';
|
|
|
11
11
|
import { SummaryItem } from '../summary-item';
|
|
12
12
|
import css from './summary.module.css';
|
|
13
13
|
|
|
14
|
+
const CustomSummaryItem = ({ className, metricOptions, SummaryItemCustomLink, ...props }) => (
|
|
15
|
+
<Box
|
|
16
|
+
padding={['xsmall', 'small']}
|
|
17
|
+
className={cx(className, css.summaryItemLink)}
|
|
18
|
+
{...props}
|
|
19
|
+
as={SummaryItemCustomLink}
|
|
20
|
+
{...metricOptions.link}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CustomSummaryItem.propTypes = {
|
|
25
|
+
className: PropTypes.string,
|
|
26
|
+
metricOptions: PropTypes.shape({
|
|
27
|
+
link: PropTypes.any, // eslint-disable-line react/forbid-prop-types
|
|
28
|
+
}).isRequired,
|
|
29
|
+
SummaryItemCustomLink: PropTypes.elementType.isRequired,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
CustomSummaryItem.defaultProps = {
|
|
33
|
+
className: '',
|
|
34
|
+
};
|
|
35
|
+
|
|
14
36
|
export const Summary = ({
|
|
15
37
|
className,
|
|
16
38
|
size,
|
|
@@ -25,15 +47,10 @@ export const Summary = ({
|
|
|
25
47
|
{Array.from(METRIC_COMPONENT_LINKS).filter(([metricId]) => keys.includes(metricId)).map(
|
|
26
48
|
([metricId, metricOptions]) => (
|
|
27
49
|
<SummaryItem
|
|
28
|
-
as={
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{...itemProps}
|
|
33
|
-
as={SummaryItemCustomLink}
|
|
34
|
-
{...metricOptions.link}
|
|
35
|
-
/>
|
|
36
|
-
)}
|
|
50
|
+
as={CustomSummaryItem}
|
|
51
|
+
className={css.item}
|
|
52
|
+
metricOptions={metricOptions}
|
|
53
|
+
SummaryItemCustomLink={SummaryItemCustomLink}
|
|
37
54
|
size={size}
|
|
38
55
|
key={metricId}
|
|
39
56
|
id={metricId}
|
|
@@ -41,7 +58,6 @@ export const Summary = ({
|
|
|
41
58
|
loading={loading}
|
|
42
59
|
showMetricDescription
|
|
43
60
|
showDelta={showSummaryItemDelta && metricOptions.showDelta !== false}
|
|
44
|
-
className={css.item}
|
|
45
61
|
/>
|
|
46
62
|
)
|
|
47
63
|
)}
|
package/src/utils.jsx
CHANGED
|
@@ -25,12 +25,14 @@ export const getRenderChildWithClassName = (className) => (child) => {
|
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
const { props } = child;
|
|
29
|
+
|
|
30
|
+
if (!props) {
|
|
29
31
|
return <div className={className}>{child}</div>;
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
return React.cloneElement(child, {
|
|
33
|
-
...
|
|
34
|
-
className: cx(className,
|
|
35
|
+
...props,
|
|
36
|
+
className: cx(className, props.className), // eslint-disable-line react/prop-types
|
|
35
37
|
});
|
|
36
38
|
};
|