@bundle-stats/ui 3.2.6-beta.3 → 3.2.6
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 +6 -9
- package/lib/app/app.module.css +1 -1
- package/lib/app/header/header.js +1 -10
- package/lib/components/job-header/job-header.js +3 -1
- package/lib/components/job-header/job-header.module.css +6 -8
- package/lib/components/jobs-header/jobs-header.module.css +5 -0
- package/lib/components/summary-item/summary-item.js +1 -1
- package/lib/css/variables.css +1 -1
- package/lib/layout/footer/footer.module.css +1 -1
- package/lib/ui/dropdown/dropdown.js +6 -1
- package/lib/ui/filters/filters.js +12 -3
- package/lib/ui/filters/filters.module.css +3 -4
- package/lib/ui/hover-card/hover-card.module.css +1 -1
- package/lib/ui/table/table.module.css +25 -9
- package/lib-esm/app/app.module.css +1 -1
- package/lib-esm/app/header/header.js +1 -9
- package/lib-esm/components/job-header/job-header.js +2 -1
- package/lib-esm/components/job-header/job-header.module.css +6 -8
- package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
- package/lib-esm/components/summary-item/summary-item.js +1 -1
- package/lib-esm/css/variables.css +1 -1
- package/lib-esm/layout/footer/footer.module.css +1 -1
- package/lib-esm/ui/dropdown/dropdown.js +6 -1
- package/lib-esm/ui/filters/filters.js +11 -2
- package/lib-esm/ui/filters/filters.module.css +3 -4
- package/lib-esm/ui/hover-card/hover-card.module.css +1 -1
- package/lib-esm/ui/table/table.module.css +25 -9
- package/package.json +4 -4
- package/src/app/app.module.css +1 -1
- package/src/app/header/header.jsx +0 -10
- package/src/components/job-header/job-header.jsx +2 -1
- package/src/components/job-header/job-header.module.css +6 -8
- package/src/components/jobs-header/jobs-header.module.css +5 -0
- package/src/components/summary-item/summary-item.jsx +1 -1
- package/src/css/variables.css +1 -1
- package/src/layout/footer/footer.module.css +1 -1
- package/src/ui/dropdown/dropdown.jsx +6 -2
- package/src/ui/filters/filters.jsx +11 -3
- package/src/ui/filters/filters.module.css +3 -4
- package/src/ui/hover-card/hover-card.module.css +1 -1
- package/src/ui/table/table.module.css +25 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,23 +3,20 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [3.2.6
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @bundle-stats/ui
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## [3.2.6-beta.2](https://github.com/relative-ci/bundle-stats/compare/v3.2.5...v3.2.6-beta.2) (2022-02-27)
|
|
6
|
+
## [3.2.6](https://github.com/relative-ci/bundle-stats/compare/v3.2.5...v3.2.6) (2022-03-04)
|
|
15
7
|
|
|
16
8
|
|
|
17
9
|
### Bug Fixes
|
|
18
10
|
|
|
19
11
|
* **ui:** Add border-radius to flags ([4f7663b](https://github.com/relative-ci/bundle-stats/commit/4f7663b29a954cf1ace9caa9739acd9f37aa3b95))
|
|
20
12
|
* **ui:** Box - add border-radius to outline ([bd78d20](https://github.com/relative-ci/bundle-stats/commit/bd78d2052db4b781afc3a1d9e8dd583986d0093d))
|
|
13
|
+
* **ui:** Filters - fix border radius ([de014b5](https://github.com/relative-ci/bundle-stats/commit/de014b5d81b1e46a726789e93fa049e8577c2d4b))
|
|
14
|
+
* **ui:** Footer - update border ([7c76df8](https://github.com/relative-ci/bundle-stats/commit/7c76df85090649189b4b52e1dace53c96466402d))
|
|
15
|
+
* **ui:** HoverCard - align close icon ([bd179a8](https://github.com/relative-ci/bundle-stats/commit/bd179a8b74fd7627cc056f52ddeced95211a6ae4))
|
|
21
16
|
* **ui:** Normlize border-radius usage ([e8a6b30](https://github.com/relative-ci/bundle-stats/commit/e8a6b302729112d75a82c74ef1d952fc639d16ab))
|
|
22
17
|
* **ui:** SearchParams - trigger filter change correctly ([0c331d2](https://github.com/relative-ci/bundle-stats/commit/0c331d2704382cd72d42363db539107fe22ed2ee))
|
|
18
|
+
* **ui:** SummaryItem - update vertical spacing ([b4c57dc](https://github.com/relative-ci/bundle-stats/commit/b4c57dc6692d496fc45b3f66515fa4357307ff12))
|
|
19
|
+
* **ui:** Table - correct outline variation ([82804d1](https://github.com/relative-ci/bundle-stats/commit/82804d13a2016332042dd38a21a4a4b0dbb0c928))
|
|
23
20
|
* **ui:** Table - remove last row bottom line ([9398a93](https://github.com/relative-ci/bundle-stats/commit/9398a936e1d937aed188f96ce56ebfa56f3af7d7))
|
|
24
21
|
|
|
25
22
|
|
package/lib/app/app.module.css
CHANGED
package/lib/app/header/header.js
CHANGED
|
@@ -15,8 +15,6 @@ var _container = require("../../ui/container");
|
|
|
15
15
|
|
|
16
16
|
var _jobsHeader = require("../../components/jobs-header");
|
|
17
17
|
|
|
18
|
-
var _logo = require("../../ui/logo");
|
|
19
|
-
|
|
20
18
|
var _headerModule = _interopRequireDefault(require("./header.module.css"));
|
|
21
19
|
|
|
22
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -29,14 +27,7 @@ var Header = function Header(_ref) {
|
|
|
29
27
|
className: (0, _classnames["default"])(_headerModule["default"].root, className)
|
|
30
28
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
31
29
|
className: _headerModule["default"].inner
|
|
32
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
33
|
-
className: _headerModule["default"].branding,
|
|
34
|
-
href: "https://github.com/relative-ci/bundle-stats",
|
|
35
|
-
target: "_blank",
|
|
36
|
-
rel: "noopener noreferrer nofollow"
|
|
37
|
-
}, /*#__PURE__*/_react["default"].createElement(_logo.Logo, {
|
|
38
|
-
className: _headerModule["default"].brandingLogo
|
|
39
|
-
}, "BundleStats")), /*#__PURE__*/_react["default"].createElement(_jobsHeader.JobsHeader, {
|
|
30
|
+
}, /*#__PURE__*/_react["default"].createElement(_jobsHeader.JobsHeader, {
|
|
40
31
|
className: _headerModule["default"].jobs,
|
|
41
32
|
jobs: jobs
|
|
42
33
|
})));
|
|
@@ -23,6 +23,8 @@ var _stack = require("../../layout/stack");
|
|
|
23
23
|
|
|
24
24
|
var _icon = require("../../ui/icon");
|
|
25
25
|
|
|
26
|
+
var _tag = require("../../ui/tag");
|
|
27
|
+
|
|
26
28
|
var _jobHeaderModule = _interopRequireDefault(require("./job-header.module.css"));
|
|
27
29
|
|
|
28
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -43,7 +45,7 @@ var JobHeader = function JobHeader(props) {
|
|
|
43
45
|
space: "xxsmall"
|
|
44
46
|
}, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
45
47
|
className: _jobHeaderModule["default"].title
|
|
46
|
-
}, /*#__PURE__*/_react["default"].createElement("span", null, "#".concat(job.internalBuildNumber)), tag && /*#__PURE__*/_react["default"].createElement(
|
|
48
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, "#".concat(job.internalBuildNumber)), tag && /*#__PURE__*/_react["default"].createElement(_tag.Tag, {
|
|
47
49
|
className: _jobHeaderModule["default"].tag
|
|
48
50
|
}, tag)), /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
|
|
49
51
|
className: _jobHeaderModule["default"].meta,
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
.title {
|
|
2
|
+
font-size: var(--size-xlarge);
|
|
2
3
|
line-height: 1;
|
|
3
4
|
font-weight: bold;
|
|
4
5
|
vertical-align: top;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
.tag {
|
|
8
|
-
|
|
9
|
-
margin-left: var(--space-xxxsmall);
|
|
10
|
-
background-color: var(--color-highlight);
|
|
11
|
-
color: var(--color-text-light);
|
|
12
|
-
display: inline-block;
|
|
13
|
-
font-size: 9px;
|
|
14
|
-
line-height: var(--space-xxsmall);
|
|
15
|
-
font-weight: normal;
|
|
9
|
+
margin-left: var(--space-xxsmall);
|
|
16
10
|
vertical-align: top;
|
|
11
|
+
outline: 1px solid var(--color-outline);
|
|
12
|
+
background: var(--color-highlight);
|
|
13
|
+
color: var(--color-text-light);
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
.meta {
|
|
17
|
+
font-size: var(--size-small);
|
|
20
18
|
color: var(--color-text-light);
|
|
21
19
|
}
|
|
22
20
|
|
|
@@ -81,7 +81,7 @@ var SummaryItem = function SummaryItem(_ref2) {
|
|
|
81
81
|
var showMetricDescriptionTooltip = showMetricDescription && (metric === null || metric === void 0 ? void 0 : metric.description);
|
|
82
82
|
var rootClassName = (0, _classnames["default"])(_summaryItemModule["default"].root, className, _summaryItemModule["default"][size], showDelta && _summaryItemModule["default"].showDelta);
|
|
83
83
|
return /*#__PURE__*/_react["default"].createElement(_stack.Stack, _extends({
|
|
84
|
-
space: "
|
|
84
|
+
space: "xxxsmall",
|
|
85
85
|
as: Component,
|
|
86
86
|
className: rootClassName
|
|
87
87
|
}, props), /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
|
package/lib/css/variables.css
CHANGED
|
@@ -23,6 +23,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
23
23
|
|
|
24
24
|
var Dropdown = function Dropdown(props) {
|
|
25
25
|
var className = props.className,
|
|
26
|
+
buttonClassName = props.buttonClassName,
|
|
26
27
|
label = props.label,
|
|
27
28
|
ariaLabel = props.ariaLabel,
|
|
28
29
|
glyph = props.glyph,
|
|
@@ -33,7 +34,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
33
34
|
className: rootClassName
|
|
34
35
|
}, /*#__PURE__*/_react["default"].createElement(_menu.MenuButton, {
|
|
35
36
|
state: menuState,
|
|
36
|
-
className: _dropdownModule["default"].button,
|
|
37
|
+
className: (0, _classnames["default"])(_dropdownModule["default"].button, buttonClassName),
|
|
37
38
|
tabIndex: null
|
|
38
39
|
}, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
|
|
39
40
|
space: "xxxsmall"
|
|
@@ -55,6 +56,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
55
56
|
exports.Dropdown = Dropdown;
|
|
56
57
|
Dropdown.defaultProps = {
|
|
57
58
|
className: '',
|
|
59
|
+
buttonClassName: '',
|
|
58
60
|
label: null,
|
|
59
61
|
ariaLabel: '',
|
|
60
62
|
glyph: null
|
|
@@ -63,6 +65,9 @@ Dropdown.propTypes = {
|
|
|
63
65
|
/** Adopted child class name */
|
|
64
66
|
className: _propTypes["default"].string,
|
|
65
67
|
|
|
68
|
+
/** Button adopted child class name */
|
|
69
|
+
buttonClassName: _propTypes["default"].string,
|
|
70
|
+
|
|
66
71
|
/** Button label */
|
|
67
72
|
label: _propTypes["default"].node,
|
|
68
73
|
|
|
@@ -21,7 +21,7 @@ var _filters = require("./filters.utils");
|
|
|
21
21
|
|
|
22
22
|
var _filtersModule = _interopRequireDefault(require("./filters.module.css"));
|
|
23
23
|
|
|
24
|
-
var _excluded = ["className", "label", "name", "getOnOnlyClick"],
|
|
24
|
+
var _excluded = ["className", "buttonClassName", "label", "name", "getOnOnlyClick"],
|
|
25
25
|
_excluded2 = ["label"];
|
|
26
26
|
|
|
27
27
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -52,6 +52,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
52
52
|
|
|
53
53
|
var Filter = function Filter(props) {
|
|
54
54
|
var className = props.className,
|
|
55
|
+
buttonClassName = props.buttonClassName,
|
|
55
56
|
label = props.label,
|
|
56
57
|
name = props.name,
|
|
57
58
|
getOnOnlyClick = props.getOnOnlyClick,
|
|
@@ -64,7 +65,7 @@ var Filter = function Filter(props) {
|
|
|
64
65
|
}, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
|
|
65
66
|
space: "xxxsmall",
|
|
66
67
|
as: "label",
|
|
67
|
-
className: _filtersModule["default"].filterCheckbox
|
|
68
|
+
className: (0, _classnames["default"])(_filtersModule["default"].filterCheckbox, buttonClassName)
|
|
68
69
|
}, /*#__PURE__*/_react["default"].createElement("input", _extends({
|
|
69
70
|
className: _filtersModule["default"].filterInput,
|
|
70
71
|
type: "checkbox",
|
|
@@ -82,17 +83,20 @@ var Filter = function Filter(props) {
|
|
|
82
83
|
|
|
83
84
|
Filter.propTypes = {
|
|
84
85
|
className: _propTypes["default"].string,
|
|
86
|
+
buttonClassName: _propTypes["default"].string,
|
|
85
87
|
name: _propTypes["default"].string.isRequired,
|
|
86
88
|
label: _propTypes["default"].string.isRequired,
|
|
87
89
|
getOnOnlyClick: _propTypes["default"].func
|
|
88
90
|
};
|
|
89
91
|
Filter.defaultProps = {
|
|
90
92
|
className: '',
|
|
93
|
+
buttonClassName: '',
|
|
91
94
|
getOnOnlyClick: null
|
|
92
95
|
};
|
|
93
96
|
|
|
94
97
|
var FilterGroup = function FilterGroup(props) {
|
|
95
98
|
var className = props.className,
|
|
99
|
+
buttonClassName = props.buttonClassName,
|
|
96
100
|
groupKey = props.groupKey,
|
|
97
101
|
data = props.data,
|
|
98
102
|
values = props.values,
|
|
@@ -140,6 +144,7 @@ var FilterGroup = function FilterGroup(props) {
|
|
|
140
144
|
|
|
141
145
|
return /*#__PURE__*/_react["default"].createElement(_dropdown.Dropdown, {
|
|
142
146
|
className: className,
|
|
147
|
+
buttonClassName: buttonClassName,
|
|
143
148
|
label: dropdownLabel,
|
|
144
149
|
ariaLabel: "".concat(groupLabel, ": ").concat(filterSuffix)
|
|
145
150
|
}, function (_ref7) {
|
|
@@ -191,6 +196,7 @@ var FilterGroup = function FilterGroup(props) {
|
|
|
191
196
|
|
|
192
197
|
FilterGroup.propTypes = {
|
|
193
198
|
className: _propTypes["default"].string,
|
|
199
|
+
buttonClassName: _propTypes["default"].string,
|
|
194
200
|
groupKey: _propTypes["default"].string.isRequired,
|
|
195
201
|
data: _propTypes["default"].object.isRequired,
|
|
196
202
|
// eslint-disable-line react/forbid-prop-types
|
|
@@ -200,7 +206,8 @@ FilterGroup.propTypes = {
|
|
|
200
206
|
toggleFilters: _propTypes["default"].func.isRequired
|
|
201
207
|
};
|
|
202
208
|
FilterGroup.defaultProps = {
|
|
203
|
-
className: ''
|
|
209
|
+
className: '',
|
|
210
|
+
buttonClassName: ''
|
|
204
211
|
};
|
|
205
212
|
|
|
206
213
|
var Filters = function Filters(props) {
|
|
@@ -229,6 +236,7 @@ var Filters = function Filters(props) {
|
|
|
229
236
|
return /*#__PURE__*/_react["default"].createElement(Filter, {
|
|
230
237
|
key: name,
|
|
231
238
|
className: (0, _classnames["default"])(_filtersModule["default"].item, _filtersModule["default"].filterStandalone),
|
|
239
|
+
buttonClassName: _filtersModule["default"].itemButton,
|
|
232
240
|
name: name,
|
|
233
241
|
label: data.label,
|
|
234
242
|
onChange: onCheckboxChange,
|
|
@@ -239,6 +247,7 @@ var Filters = function Filters(props) {
|
|
|
239
247
|
|
|
240
248
|
return /*#__PURE__*/_react["default"].createElement(FilterGroup, {
|
|
241
249
|
className: _filtersModule["default"].item,
|
|
250
|
+
buttonClassName: _filtersModule["default"].itemButton,
|
|
242
251
|
key: name,
|
|
243
252
|
groupKey: name,
|
|
244
253
|
data: data,
|
|
@@ -130,17 +130,16 @@
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
.item {
|
|
133
|
-
border-radius: 0;
|
|
134
133
|
position: relative;
|
|
135
134
|
flex: 0 0 auto;
|
|
136
135
|
margin-right: -1px;
|
|
137
136
|
}
|
|
138
137
|
|
|
139
|
-
.
|
|
140
|
-
border-radius:
|
|
138
|
+
.itemButton {
|
|
139
|
+
border-radius: 0px;
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
.item:last-child {
|
|
142
|
+
.item:last-child .itemButton {
|
|
144
143
|
border-radius: 0 var(--radius-small) var(--radius-small) 0;
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.root {
|
|
2
2
|
border-width: 0;
|
|
3
3
|
width: 100%;
|
|
4
|
-
border-
|
|
4
|
+
border-spacing: 0;
|
|
5
5
|
empty-cells: show;
|
|
6
6
|
background: var(--color-background);
|
|
7
7
|
}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.root thead .cell {
|
|
17
|
-
border-width: 0 0
|
|
17
|
+
border-width: 0 0 1px;
|
|
18
18
|
text-transform: uppercase;
|
|
19
19
|
vertical-align: top;
|
|
20
|
+
background: var(--color-highlight);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
.root thead .cell:empty {
|
|
@@ -27,6 +28,10 @@
|
|
|
27
28
|
font-weight: normal;
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
.root tbody tr:first-child .cell {
|
|
32
|
+
border-top: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
30
35
|
.root tbody .cell a {
|
|
31
36
|
color: inherit;
|
|
32
37
|
text-decoration: none;
|
|
@@ -40,10 +45,6 @@
|
|
|
40
45
|
text-decoration: underline;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
.root tbody tr:nth-child(odd) .cell {
|
|
44
|
-
background-color: var(--color-highlight);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
48
|
.root tbody tr:hover .cell {
|
|
48
49
|
background-color: var(--color-highlight-warning);
|
|
49
50
|
}
|
|
@@ -58,12 +59,27 @@
|
|
|
58
59
|
|
|
59
60
|
/* outline variation */
|
|
60
61
|
.outline {
|
|
62
|
+
--table-radius: var(--radius-medium);
|
|
61
63
|
border: 1px solid var(--color-outline);
|
|
62
|
-
border-
|
|
64
|
+
border-radius: var(--table-radius);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.outline thead tr:first-child .cell:first-child,
|
|
68
|
+
.outline tbody:first-child tr:first-child .cell:first-child {
|
|
69
|
+
border-top-left-radius: var(--table-radius);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.outline thead tr:first-child .cell:last-child,
|
|
73
|
+
.outline tbody:first-child tr:first-child .cell:last-child {
|
|
74
|
+
border-top-right-radius: var(--table-radius);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.outline tbody:last-child tr:last-child .cell:first-child {
|
|
78
|
+
border-bottom-left-radius: var(--table-radius);
|
|
63
79
|
}
|
|
64
80
|
|
|
65
|
-
.outline
|
|
66
|
-
border-
|
|
81
|
+
.outline tbody:last-child tr:last-child .cell:last-child {
|
|
82
|
+
border-bottom-right-radius: var(--table-radius);
|
|
67
83
|
}
|
|
68
84
|
|
|
69
85
|
.outline.empty {
|
|
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import cx from 'classnames';
|
|
4
4
|
import { Container } from '../../ui/container';
|
|
5
5
|
import { JobsHeader } from '../../components/jobs-header';
|
|
6
|
-
import { Logo } from '../../ui/logo';
|
|
7
6
|
import css from './header.module.css';
|
|
8
7
|
export const Header = _ref => {
|
|
9
8
|
let {
|
|
@@ -15,14 +14,7 @@ export const Header = _ref => {
|
|
|
15
14
|
className: cx(css.root, className)
|
|
16
15
|
}, /*#__PURE__*/React.createElement("div", {
|
|
17
16
|
className: css.inner
|
|
18
|
-
}, /*#__PURE__*/React.createElement(
|
|
19
|
-
className: css.branding,
|
|
20
|
-
href: "https://github.com/relative-ci/bundle-stats",
|
|
21
|
-
target: "_blank",
|
|
22
|
-
rel: "noopener noreferrer nofollow"
|
|
23
|
-
}, /*#__PURE__*/React.createElement(Logo, {
|
|
24
|
-
className: css.brandingLogo
|
|
25
|
-
}, "BundleStats")), /*#__PURE__*/React.createElement(JobsHeader, {
|
|
17
|
+
}, /*#__PURE__*/React.createElement(JobsHeader, {
|
|
26
18
|
className: css.jobs,
|
|
27
19
|
jobs: jobs
|
|
28
20
|
})));
|
|
@@ -7,6 +7,7 @@ import { SOURCE_PATH_WEBPACK_STATS, formatDate, formatTime } from '@bundle-stats
|
|
|
7
7
|
import { FlexStack } from '../../layout/flex-stack';
|
|
8
8
|
import { Stack } from '../../layout/stack';
|
|
9
9
|
import { Icon } from '../../ui/icon';
|
|
10
|
+
import { Tag } from '../../ui/tag';
|
|
10
11
|
import css from './job-header.module.css';
|
|
11
12
|
export const JobHeader = props => {
|
|
12
13
|
const {
|
|
@@ -27,7 +28,7 @@ export const JobHeader = props => {
|
|
|
27
28
|
space: "xxsmall"
|
|
28
29
|
}, /*#__PURE__*/React.createElement("h1", {
|
|
29
30
|
className: css.title
|
|
30
|
-
}, /*#__PURE__*/React.createElement("span", null, `#${job.internalBuildNumber}`), tag && /*#__PURE__*/React.createElement(
|
|
31
|
+
}, /*#__PURE__*/React.createElement("span", null, `#${job.internalBuildNumber}`), tag && /*#__PURE__*/React.createElement(Tag, {
|
|
31
32
|
className: css.tag
|
|
32
33
|
}, tag)), /*#__PURE__*/React.createElement(FlexStack, {
|
|
33
34
|
className: css.meta,
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
.title {
|
|
2
|
+
font-size: var(--size-xlarge);
|
|
2
3
|
line-height: 1;
|
|
3
4
|
font-weight: bold;
|
|
4
5
|
vertical-align: top;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
.tag {
|
|
8
|
-
|
|
9
|
-
margin-left: var(--space-xxxsmall);
|
|
10
|
-
background-color: var(--color-highlight);
|
|
11
|
-
color: var(--color-text-light);
|
|
12
|
-
display: inline-block;
|
|
13
|
-
font-size: 9px;
|
|
14
|
-
line-height: var(--space-xxsmall);
|
|
15
|
-
font-weight: normal;
|
|
9
|
+
margin-left: var(--space-xxsmall);
|
|
16
10
|
vertical-align: top;
|
|
11
|
+
outline: 1px solid var(--color-outline);
|
|
12
|
+
background: var(--color-highlight);
|
|
13
|
+
color: var(--color-text-light);
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
.meta {
|
|
17
|
+
font-size: var(--size-small);
|
|
20
18
|
color: var(--color-text-light);
|
|
21
19
|
}
|
|
22
20
|
|
|
@@ -57,7 +57,7 @@ export const SummaryItem = _ref2 => {
|
|
|
57
57
|
const showMetricDescriptionTooltip = showMetricDescription && (metric == null ? void 0 : metric.description);
|
|
58
58
|
const rootClassName = cx(css.root, className, css[size], showDelta && css.showDelta);
|
|
59
59
|
return /*#__PURE__*/React.createElement(Stack, _extends({
|
|
60
|
-
space: "
|
|
60
|
+
space: "xxxsmall",
|
|
61
61
|
as: Component,
|
|
62
62
|
className: rootClassName
|
|
63
63
|
}, props), /*#__PURE__*/React.createElement(FlexStack, {
|
|
@@ -8,6 +8,7 @@ import css from './dropdown.module.css';
|
|
|
8
8
|
export const Dropdown = props => {
|
|
9
9
|
const {
|
|
10
10
|
className,
|
|
11
|
+
buttonClassName,
|
|
11
12
|
label,
|
|
12
13
|
ariaLabel,
|
|
13
14
|
glyph,
|
|
@@ -19,7 +20,7 @@ export const Dropdown = props => {
|
|
|
19
20
|
className: rootClassName
|
|
20
21
|
}, /*#__PURE__*/React.createElement(MenuButton, {
|
|
21
22
|
state: menuState,
|
|
22
|
-
className: css.button,
|
|
23
|
+
className: cx(css.button, buttonClassName),
|
|
23
24
|
tabIndex: null
|
|
24
25
|
}, /*#__PURE__*/React.createElement(FlexStack, {
|
|
25
26
|
space: "xxxsmall"
|
|
@@ -39,6 +40,7 @@ export const Dropdown = props => {
|
|
|
39
40
|
};
|
|
40
41
|
Dropdown.defaultProps = {
|
|
41
42
|
className: '',
|
|
43
|
+
buttonClassName: '',
|
|
42
44
|
label: null,
|
|
43
45
|
ariaLabel: '',
|
|
44
46
|
glyph: null
|
|
@@ -47,6 +49,9 @@ Dropdown.propTypes = {
|
|
|
47
49
|
/** Adopted child class name */
|
|
48
50
|
className: PropTypes.string,
|
|
49
51
|
|
|
52
|
+
/** Button adopted child class name */
|
|
53
|
+
buttonClassName: PropTypes.string,
|
|
54
|
+
|
|
50
55
|
/** Button label */
|
|
51
56
|
label: PropTypes.node,
|
|
52
57
|
|
|
@@ -13,6 +13,7 @@ import css from './filters.module.css';
|
|
|
13
13
|
const Filter = props => {
|
|
14
14
|
const {
|
|
15
15
|
className,
|
|
16
|
+
buttonClassName,
|
|
16
17
|
label,
|
|
17
18
|
name,
|
|
18
19
|
getOnOnlyClick,
|
|
@@ -25,7 +26,7 @@ const Filter = props => {
|
|
|
25
26
|
}, /*#__PURE__*/React.createElement(FlexStack, {
|
|
26
27
|
space: "xxxsmall",
|
|
27
28
|
as: "label",
|
|
28
|
-
className: css.filterCheckbox
|
|
29
|
+
className: cx(css.filterCheckbox, buttonClassName)
|
|
29
30
|
}, /*#__PURE__*/React.createElement("input", _extends({
|
|
30
31
|
className: css.filterInput,
|
|
31
32
|
type: "checkbox",
|
|
@@ -43,18 +44,21 @@ const Filter = props => {
|
|
|
43
44
|
|
|
44
45
|
Filter.propTypes = {
|
|
45
46
|
className: PropTypes.string,
|
|
47
|
+
buttonClassName: PropTypes.string,
|
|
46
48
|
name: PropTypes.string.isRequired,
|
|
47
49
|
label: PropTypes.string.isRequired,
|
|
48
50
|
getOnOnlyClick: PropTypes.func
|
|
49
51
|
};
|
|
50
52
|
Filter.defaultProps = {
|
|
51
53
|
className: '',
|
|
54
|
+
buttonClassName: '',
|
|
52
55
|
getOnOnlyClick: null
|
|
53
56
|
};
|
|
54
57
|
|
|
55
58
|
const FilterGroup = props => {
|
|
56
59
|
const {
|
|
57
60
|
className,
|
|
61
|
+
buttonClassName,
|
|
58
62
|
groupKey,
|
|
59
63
|
data,
|
|
60
64
|
values,
|
|
@@ -100,6 +104,7 @@ const FilterGroup = props => {
|
|
|
100
104
|
|
|
101
105
|
return /*#__PURE__*/React.createElement(Dropdown, {
|
|
102
106
|
className: className,
|
|
107
|
+
buttonClassName: buttonClassName,
|
|
103
108
|
label: dropdownLabel,
|
|
104
109
|
ariaLabel: `${groupLabel}: ${filterSuffix}`
|
|
105
110
|
}, _ref4 => {
|
|
@@ -150,6 +155,7 @@ const FilterGroup = props => {
|
|
|
150
155
|
|
|
151
156
|
FilterGroup.propTypes = {
|
|
152
157
|
className: PropTypes.string,
|
|
158
|
+
buttonClassName: PropTypes.string,
|
|
153
159
|
groupKey: PropTypes.string.isRequired,
|
|
154
160
|
data: PropTypes.object.isRequired,
|
|
155
161
|
// eslint-disable-line react/forbid-prop-types
|
|
@@ -159,7 +165,8 @@ FilterGroup.propTypes = {
|
|
|
159
165
|
toggleFilters: PropTypes.func.isRequired
|
|
160
166
|
};
|
|
161
167
|
FilterGroup.defaultProps = {
|
|
162
|
-
className: ''
|
|
168
|
+
className: '',
|
|
169
|
+
buttonClassName: ''
|
|
163
170
|
};
|
|
164
171
|
export const Filters = props => {
|
|
165
172
|
const {
|
|
@@ -189,6 +196,7 @@ export const Filters = props => {
|
|
|
189
196
|
return /*#__PURE__*/React.createElement(Filter, {
|
|
190
197
|
key: name,
|
|
191
198
|
className: cx(css.item, css.filterStandalone),
|
|
199
|
+
buttonClassName: css.itemButton,
|
|
192
200
|
name: name,
|
|
193
201
|
label: data.label,
|
|
194
202
|
onChange: onCheckboxChange,
|
|
@@ -199,6 +207,7 @@ export const Filters = props => {
|
|
|
199
207
|
|
|
200
208
|
return /*#__PURE__*/React.createElement(FilterGroup, {
|
|
201
209
|
className: css.item,
|
|
210
|
+
buttonClassName: css.itemButton,
|
|
202
211
|
key: name,
|
|
203
212
|
groupKey: name,
|
|
204
213
|
data: data,
|
|
@@ -130,17 +130,16 @@
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
.item {
|
|
133
|
-
border-radius: 0;
|
|
134
133
|
position: relative;
|
|
135
134
|
flex: 0 0 auto;
|
|
136
135
|
margin-right: -1px;
|
|
137
136
|
}
|
|
138
137
|
|
|
139
|
-
.
|
|
140
|
-
border-radius:
|
|
138
|
+
.itemButton {
|
|
139
|
+
border-radius: 0px;
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
.item:last-child {
|
|
142
|
+
.item:last-child .itemButton {
|
|
144
143
|
border-radius: 0 var(--radius-small) var(--radius-small) 0;
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.root {
|
|
2
2
|
border-width: 0;
|
|
3
3
|
width: 100%;
|
|
4
|
-
border-
|
|
4
|
+
border-spacing: 0;
|
|
5
5
|
empty-cells: show;
|
|
6
6
|
background: var(--color-background);
|
|
7
7
|
}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.root thead .cell {
|
|
17
|
-
border-width: 0 0
|
|
17
|
+
border-width: 0 0 1px;
|
|
18
18
|
text-transform: uppercase;
|
|
19
19
|
vertical-align: top;
|
|
20
|
+
background: var(--color-highlight);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
.root thead .cell:empty {
|
|
@@ -27,6 +28,10 @@
|
|
|
27
28
|
font-weight: normal;
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
.root tbody tr:first-child .cell {
|
|
32
|
+
border-top: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
30
35
|
.root tbody .cell a {
|
|
31
36
|
color: inherit;
|
|
32
37
|
text-decoration: none;
|
|
@@ -40,10 +45,6 @@
|
|
|
40
45
|
text-decoration: underline;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
.root tbody tr:nth-child(odd) .cell {
|
|
44
|
-
background-color: var(--color-highlight);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
48
|
.root tbody tr:hover .cell {
|
|
48
49
|
background-color: var(--color-highlight-warning);
|
|
49
50
|
}
|
|
@@ -58,12 +59,27 @@
|
|
|
58
59
|
|
|
59
60
|
/* outline variation */
|
|
60
61
|
.outline {
|
|
62
|
+
--table-radius: var(--radius-medium);
|
|
61
63
|
border: 1px solid var(--color-outline);
|
|
62
|
-
border-
|
|
64
|
+
border-radius: var(--table-radius);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.outline thead tr:first-child .cell:first-child,
|
|
68
|
+
.outline tbody:first-child tr:first-child .cell:first-child {
|
|
69
|
+
border-top-left-radius: var(--table-radius);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.outline thead tr:first-child .cell:last-child,
|
|
73
|
+
.outline tbody:first-child tr:first-child .cell:last-child {
|
|
74
|
+
border-top-right-radius: var(--table-radius);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.outline tbody:last-child tr:last-child .cell:first-child {
|
|
78
|
+
border-bottom-left-radius: var(--table-radius);
|
|
63
79
|
}
|
|
64
80
|
|
|
65
|
-
.outline
|
|
66
|
-
border-
|
|
81
|
+
.outline tbody:last-child tr:last-child .cell:last-child {
|
|
82
|
+
border-bottom-right-radius: var(--table-radius);
|
|
67
83
|
}
|
|
68
84
|
|
|
69
85
|
.outline.empty {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundle-stats/ui",
|
|
3
|
-
"version": "3.2.6
|
|
3
|
+
"version": "3.2.6",
|
|
4
4
|
"description": "UI components for BundleStats projects.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -85,12 +85,12 @@
|
|
|
85
85
|
"react-router-dom": "5.3.0"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@bundle-stats/utils": "^3.2.6
|
|
89
|
-
"ariakit": "2.0.0-alpha.
|
|
88
|
+
"@bundle-stats/utils": "^3.2.6",
|
|
89
|
+
"ariakit": "2.0.0-alpha.19",
|
|
90
90
|
"date-fns": "2.28.0",
|
|
91
91
|
"modern-css-reset": "1.4.0",
|
|
92
92
|
"query-string": "7.1.1",
|
|
93
93
|
"use-query-params": "1.2.3"
|
|
94
94
|
},
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "27848343746d211ecb964271bf4f8703a0be36d9"
|
|
96
96
|
}
|
package/src/app/app.module.css
CHANGED
|
@@ -4,21 +4,11 @@ import cx from 'classnames';
|
|
|
4
4
|
|
|
5
5
|
import { Container } from '../../ui/container';
|
|
6
6
|
import { JobsHeader } from '../../components/jobs-header';
|
|
7
|
-
import { Logo } from '../../ui/logo';
|
|
8
|
-
|
|
9
7
|
import css from './header.module.css';
|
|
10
8
|
|
|
11
9
|
export const Header = ({ className, jobs }) => (
|
|
12
10
|
<Container as="header" className={cx(css.root, className)}>
|
|
13
11
|
<div className={css.inner}>
|
|
14
|
-
<a
|
|
15
|
-
className={css.branding}
|
|
16
|
-
href="https://github.com/relative-ci/bundle-stats"
|
|
17
|
-
target="_blank"
|
|
18
|
-
rel="noopener noreferrer nofollow"
|
|
19
|
-
>
|
|
20
|
-
<Logo className={css.brandingLogo}>BundleStats</Logo>
|
|
21
|
-
</a>
|
|
22
12
|
<JobsHeader className={css.jobs} jobs={jobs} />
|
|
23
13
|
</div>
|
|
24
14
|
</Container>
|
|
@@ -8,6 +8,7 @@ import { SOURCE_PATH_WEBPACK_STATS, formatDate, formatTime } from '@bundle-stats
|
|
|
8
8
|
import { FlexStack } from '../../layout/flex-stack';
|
|
9
9
|
import { Stack } from '../../layout/stack';
|
|
10
10
|
import { Icon } from '../../ui/icon';
|
|
11
|
+
import { Tag } from '../../ui/tag';
|
|
11
12
|
import css from './job-header.module.css';
|
|
12
13
|
|
|
13
14
|
export const JobHeader = (props) => {
|
|
@@ -20,7 +21,7 @@ export const JobHeader = (props) => {
|
|
|
20
21
|
<Stack className={rootClassName} space="xxsmall">
|
|
21
22
|
<h1 className={css.title}>
|
|
22
23
|
<span>{`#${job.internalBuildNumber}`}</span>
|
|
23
|
-
{tag && <
|
|
24
|
+
{tag && <Tag className={css.tag}>{tag}</Tag>}
|
|
24
25
|
</h1>
|
|
25
26
|
<FlexStack className={css.meta} space="xxsmall">
|
|
26
27
|
{builtAt && (
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
.title {
|
|
2
|
+
font-size: var(--size-xlarge);
|
|
2
3
|
line-height: 1;
|
|
3
4
|
font-weight: bold;
|
|
4
5
|
vertical-align: top;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
.tag {
|
|
8
|
-
|
|
9
|
-
margin-left: var(--space-xxxsmall);
|
|
10
|
-
background-color: var(--color-highlight);
|
|
11
|
-
color: var(--color-text-light);
|
|
12
|
-
display: inline-block;
|
|
13
|
-
font-size: 9px;
|
|
14
|
-
line-height: var(--space-xxsmall);
|
|
15
|
-
font-weight: normal;
|
|
9
|
+
margin-left: var(--space-xxsmall);
|
|
16
10
|
vertical-align: top;
|
|
11
|
+
outline: 1px solid var(--color-outline);
|
|
12
|
+
background: var(--color-highlight);
|
|
13
|
+
color: var(--color-text-light);
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
.meta {
|
|
17
|
+
font-size: var(--size-small);
|
|
20
18
|
color: var(--color-text-light);
|
|
21
19
|
}
|
|
22
20
|
|
|
@@ -54,7 +54,7 @@ export const SummaryItem = ({
|
|
|
54
54
|
const rootClassName = cx(css.root, className, css[size], showDelta && css.showDelta);
|
|
55
55
|
|
|
56
56
|
return (
|
|
57
|
-
<Stack space="
|
|
57
|
+
<Stack space="xxxsmall" as={Component} className={rootClassName} {...props}>
|
|
58
58
|
<FlexStack as="h3" space="xxxsmall" className={css.title}>
|
|
59
59
|
<span>{metric.label}</span>
|
|
60
60
|
|
package/src/css/variables.css
CHANGED
|
@@ -8,13 +8,13 @@ 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, children } = props;
|
|
11
|
+
const { className, buttonClassName, label, ariaLabel, glyph, children } = props;
|
|
12
12
|
const rootClassName = cx(css.root, className);
|
|
13
13
|
const menuState = useMenuState();
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
16
|
<div className={rootClassName}>
|
|
17
|
-
<MenuButton state={menuState} className={css.button} tabIndex={null}>
|
|
17
|
+
<MenuButton state={menuState} className={cx(css.button, buttonClassName)} tabIndex={null}>
|
|
18
18
|
<FlexStack space="xxxsmall">
|
|
19
19
|
{glyph && <Icon className={css.labelIcon} glyph={glyph} />}
|
|
20
20
|
{label}
|
|
@@ -36,6 +36,7 @@ export const Dropdown = (props) => {
|
|
|
36
36
|
|
|
37
37
|
Dropdown.defaultProps = {
|
|
38
38
|
className: '',
|
|
39
|
+
buttonClassName: '',
|
|
39
40
|
label: null,
|
|
40
41
|
ariaLabel: '',
|
|
41
42
|
glyph: null,
|
|
@@ -45,6 +46,9 @@ Dropdown.propTypes = {
|
|
|
45
46
|
/** Adopted child class name */
|
|
46
47
|
className: PropTypes.string,
|
|
47
48
|
|
|
49
|
+
/** Button adopted child class name */
|
|
50
|
+
buttonClassName: PropTypes.string,
|
|
51
|
+
|
|
48
52
|
/** Button label */
|
|
49
53
|
label: PropTypes.node,
|
|
50
54
|
|
|
@@ -9,7 +9,7 @@ import { getGroupFiltersLabelSuffix, LABELS } from './filters.utils';
|
|
|
9
9
|
import css from './filters.module.css';
|
|
10
10
|
|
|
11
11
|
const Filter = (props) => {
|
|
12
|
-
const { className, label, name, getOnOnlyClick, ...inputProps } = props;
|
|
12
|
+
const { className, buttonClassName, label, name, getOnOnlyClick, ...inputProps } = props;
|
|
13
13
|
const id = `filter-${name}`;
|
|
14
14
|
|
|
15
15
|
const rootClassName = cx(css.filter, className);
|
|
@@ -17,7 +17,7 @@ const Filter = (props) => {
|
|
|
17
17
|
return (
|
|
18
18
|
<div className={rootClassName}>
|
|
19
19
|
{/* eslint-disable */}
|
|
20
|
-
<FlexStack space="xxxsmall" as="label" className={css.filterCheckbox}>
|
|
20
|
+
<FlexStack space="xxxsmall" as="label" className={cx(css.filterCheckbox, buttonClassName)}>
|
|
21
21
|
{/* eslint-enabled */}
|
|
22
22
|
<input className={css.filterInput} type="checkbox" id={id} name={name} {...inputProps} />
|
|
23
23
|
<span className={css.filterLabel} title={label}>
|
|
@@ -36,6 +36,7 @@ const Filter = (props) => {
|
|
|
36
36
|
|
|
37
37
|
Filter.propTypes = {
|
|
38
38
|
className: PropTypes.string,
|
|
39
|
+
buttonClassName: PropTypes.string,
|
|
39
40
|
name: PropTypes.string.isRequired,
|
|
40
41
|
label: PropTypes.string.isRequired,
|
|
41
42
|
getOnOnlyClick: PropTypes.func,
|
|
@@ -43,11 +44,13 @@ Filter.propTypes = {
|
|
|
43
44
|
|
|
44
45
|
Filter.defaultProps = {
|
|
45
46
|
className: '',
|
|
47
|
+
buttonClassName: '',
|
|
46
48
|
getOnOnlyClick: null,
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
const FilterGroup = (props) => {
|
|
50
|
-
const { className, groupKey, data, values, onCheckboxChange, toggleFilters } =
|
|
52
|
+
const { className, buttonClassName, groupKey, data, values, onCheckboxChange, toggleFilters } =
|
|
53
|
+
props;
|
|
51
54
|
|
|
52
55
|
const { label: groupLabel, ...groupData } = data;
|
|
53
56
|
|
|
@@ -89,6 +92,7 @@ const FilterGroup = (props) => {
|
|
|
89
92
|
return (
|
|
90
93
|
<Dropdown
|
|
91
94
|
className={className}
|
|
95
|
+
buttonClassName={buttonClassName}
|
|
92
96
|
label={dropdownLabel}
|
|
93
97
|
ariaLabel={`${groupLabel}: ${filterSuffix}`}
|
|
94
98
|
>
|
|
@@ -150,6 +154,7 @@ const FilterGroup = (props) => {
|
|
|
150
154
|
|
|
151
155
|
FilterGroup.propTypes = {
|
|
152
156
|
className: PropTypes.string,
|
|
157
|
+
buttonClassName: PropTypes.string,
|
|
153
158
|
groupKey: PropTypes.string.isRequired,
|
|
154
159
|
data: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
|
|
155
160
|
values: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types
|
|
@@ -159,6 +164,7 @@ FilterGroup.propTypes = {
|
|
|
159
164
|
|
|
160
165
|
FilterGroup.defaultProps = {
|
|
161
166
|
className: '',
|
|
167
|
+
buttonClassName: '',
|
|
162
168
|
};
|
|
163
169
|
|
|
164
170
|
export const Filters = (props) => {
|
|
@@ -176,6 +182,7 @@ export const Filters = (props) => {
|
|
|
176
182
|
<Filter
|
|
177
183
|
key={name}
|
|
178
184
|
className={cx(css.item, css.filterStandalone)}
|
|
185
|
+
buttonClassName={css.itemButton}
|
|
179
186
|
name={name}
|
|
180
187
|
label={data.label}
|
|
181
188
|
onChange={onCheckboxChange}
|
|
@@ -188,6 +195,7 @@ export const Filters = (props) => {
|
|
|
188
195
|
return (
|
|
189
196
|
<FilterGroup
|
|
190
197
|
className={css.item}
|
|
198
|
+
buttonClassName={css.itemButton}
|
|
191
199
|
key={name}
|
|
192
200
|
groupKey={name}
|
|
193
201
|
data={data}
|
|
@@ -130,17 +130,16 @@
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
.item {
|
|
133
|
-
border-radius: 0;
|
|
134
133
|
position: relative;
|
|
135
134
|
flex: 0 0 auto;
|
|
136
135
|
margin-right: -1px;
|
|
137
136
|
}
|
|
138
137
|
|
|
139
|
-
.
|
|
140
|
-
border-radius:
|
|
138
|
+
.itemButton {
|
|
139
|
+
border-radius: 0px;
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
.item:last-child {
|
|
142
|
+
.item:last-child .itemButton {
|
|
144
143
|
border-radius: 0 var(--radius-small) var(--radius-small) 0;
|
|
145
144
|
}
|
|
146
145
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.root {
|
|
2
2
|
border-width: 0;
|
|
3
3
|
width: 100%;
|
|
4
|
-
border-
|
|
4
|
+
border-spacing: 0;
|
|
5
5
|
empty-cells: show;
|
|
6
6
|
background: var(--color-background);
|
|
7
7
|
}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.root thead .cell {
|
|
17
|
-
border-width: 0 0
|
|
17
|
+
border-width: 0 0 1px;
|
|
18
18
|
text-transform: uppercase;
|
|
19
19
|
vertical-align: top;
|
|
20
|
+
background: var(--color-highlight);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
.root thead .cell:empty {
|
|
@@ -27,6 +28,10 @@
|
|
|
27
28
|
font-weight: normal;
|
|
28
29
|
}
|
|
29
30
|
|
|
31
|
+
.root tbody tr:first-child .cell {
|
|
32
|
+
border-top: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
30
35
|
.root tbody .cell a {
|
|
31
36
|
color: inherit;
|
|
32
37
|
text-decoration: none;
|
|
@@ -40,10 +45,6 @@
|
|
|
40
45
|
text-decoration: underline;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
.root tbody tr:nth-child(odd) .cell {
|
|
44
|
-
background-color: var(--color-highlight);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
48
|
.root tbody tr:hover .cell {
|
|
48
49
|
background-color: var(--color-highlight-warning);
|
|
49
50
|
}
|
|
@@ -58,12 +59,27 @@
|
|
|
58
59
|
|
|
59
60
|
/* outline variation */
|
|
60
61
|
.outline {
|
|
62
|
+
--table-radius: var(--radius-medium);
|
|
61
63
|
border: 1px solid var(--color-outline);
|
|
62
|
-
border-
|
|
64
|
+
border-radius: var(--table-radius);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.outline thead tr:first-child .cell:first-child,
|
|
68
|
+
.outline tbody:first-child tr:first-child .cell:first-child {
|
|
69
|
+
border-top-left-radius: var(--table-radius);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.outline thead tr:first-child .cell:last-child,
|
|
73
|
+
.outline tbody:first-child tr:first-child .cell:last-child {
|
|
74
|
+
border-top-right-radius: var(--table-radius);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.outline tbody:last-child tr:last-child .cell:first-child {
|
|
78
|
+
border-bottom-left-radius: var(--table-radius);
|
|
63
79
|
}
|
|
64
80
|
|
|
65
|
-
.outline
|
|
66
|
-
border-
|
|
81
|
+
.outline tbody:last-child tr:last-child .cell:last-child {
|
|
82
|
+
border-bottom-right-radius: var(--table-radius);
|
|
67
83
|
}
|
|
68
84
|
|
|
69
85
|
.outline.empty {
|