@bundle-stats/ui 4.0.6-beta.0 → 4.0.7-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/app/app.js CHANGED
@@ -263,19 +263,23 @@ var AppComponent = function AppComponent(_ref3) {
263
263
  className: _appModule["default"].tabsContainer
264
264
  }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs, {
265
265
  className: _appModule["default"].tabs
266
- }, /*#__PURE__*/_react["default"].createElement(_reactRouterDom.NavLink, {
266
+ }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, {
267
+ as: _reactRouterDom.NavLink,
267
268
  exact: true,
268
269
  to: _constants.URLS.OVERVIEW,
269
270
  activeClassName: _appModule["default"].tabActive
270
- }, _i18n["default"].OVERVIEW), /*#__PURE__*/_react["default"].createElement(_reactRouterDom.NavLink, {
271
+ }, _i18n["default"].OVERVIEW), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, {
272
+ as: _reactRouterDom.NavLink,
271
273
  exact: true,
272
274
  to: _constants.URLS.ASSETS,
273
275
  activeClassName: _appModule["default"].tabActive
274
- }, _i18n["default"].ASSETS), /*#__PURE__*/_react["default"].createElement(_reactRouterDom.NavLink, {
276
+ }, _i18n["default"].ASSETS), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, {
277
+ as: _reactRouterDom.NavLink,
275
278
  exact: true,
276
279
  to: _constants.URLS.MODULES,
277
280
  activeClassName: _appModule["default"].tabActive
278
- }, _i18n["default"].MODULES), /*#__PURE__*/_react["default"].createElement(_reactRouterDom.NavLink, {
281
+ }, _i18n["default"].MODULES), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, {
282
+ as: _reactRouterDom.NavLink,
279
283
  exact: true,
280
284
  to: _constants.URLS.PACKAGES,
281
285
  activeClassName: _appModule["default"].tabActive
@@ -28,7 +28,7 @@ stories.add('default', function () {
28
28
  var className = _ref2.className;
29
29
  return /*#__PURE__*/_react["default"].createElement("div", {
30
30
  className: className
31
- }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("span", null, "Totals"), /*#__PURE__*/_react["default"].createElement("span", null, "Assets"), /*#__PURE__*/_react["default"].createElement("span", null, "Modules")));
31
+ }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Totals"), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Assets"), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Modules")));
32
32
  },
33
33
  renderRight: function renderRight(_ref3) {
34
34
  var className = _ref3.className;
@@ -55,7 +55,7 @@ stories.add('menu on the right', function () {
55
55
  style: {
56
56
  flexBasis: '100%'
57
57
  }
58
- }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("span", null, "Totals"), /*#__PURE__*/_react["default"].createElement("span", null, "Assets"), /*#__PURE__*/_react["default"].createElement("span", null, "Modules")));
58
+ }, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Totals"), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Assets"), /*#__PURE__*/_react["default"].createElement(_tabs.Tabs.Item, null, "Modules")));
59
59
  }
60
60
  });
61
61
  });
@@ -13,37 +13,46 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _tabsModule = _interopRequireDefault(require("./tabs.module.css"));
15
15
 
16
- var _excluded = ["className", "isTabActive"];
16
+ var _excluded = ["isTabActive", "as", "className"],
17
+ _excluded2 = ["className"];
17
18
 
18
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
20
 
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
-
24
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
25
22
 
26
23
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
24
 
28
25
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
26
 
30
- var cloneElement = function cloneElement(element) {
31
- var _element$props = element.props,
32
- className = _element$props.className,
33
- isTabActive = _element$props.isTabActive,
34
- restProps = _objectWithoutProperties(_element$props, _excluded);
27
+ var Item = function Item(_ref) {
28
+ var isTabActive = _ref.isTabActive,
29
+ Component = _ref.as,
30
+ className = _ref.className,
31
+ restProps = _objectWithoutProperties(_ref, _excluded);
32
+
33
+ return /*#__PURE__*/_react["default"].createElement(Component, _extends({
34
+ className: (0, _classnames["default"])(_tabsModule["default"].item, className, isTabActive && _tabsModule["default"].itemActive)
35
+ }, restProps));
36
+ };
35
37
 
36
- return /*#__PURE__*/_react["default"].cloneElement(element, _objectSpread(_objectSpread({}, restProps), {}, {
37
- className: (0, _classnames["default"])(_tabsModule["default"].item, isTabActive && _tabsModule["default"].itemActive, className)
38
- }));
38
+ Item.defaultProps = {
39
+ isTabActive: false,
40
+ className: '',
41
+ as: 'span'
42
+ };
43
+ Item.propTypes = {
44
+ isTabActive: _propTypes["default"].bool,
45
+ className: _propTypes["default"].string,
46
+ as: _propTypes["default"].elementType
39
47
  };
40
48
 
41
- var Tabs = function Tabs(_ref) {
42
- var className = _ref.className,
43
- children = _ref.children;
44
- return /*#__PURE__*/_react["default"].createElement("nav", {
49
+ var Tabs = function Tabs(_ref2) {
50
+ var className = _ref2.className,
51
+ restProps = _objectWithoutProperties(_ref2, _excluded2);
52
+
53
+ return /*#__PURE__*/_react["default"].createElement("nav", _extends({
45
54
  className: (0, _classnames["default"])(_tabsModule["default"].root, className)
46
- }, _react["default"].Children.map(children, cloneElement));
55
+ }, restProps));
47
56
  };
48
57
 
49
58
  exports.Tabs = Tabs;
@@ -56,4 +65,5 @@ Tabs.propTypes = {
56
65
 
57
66
  /** Component children */
58
67
  children: _propTypes["default"].node.isRequired
59
- };
68
+ };
69
+ Tabs.Item = Item;
@@ -13,7 +13,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
13
13
  var stories = (0, _react2.storiesOf)('UI/Tabs', module);
14
14
  stories.addDecorator((0, _stories.getWrapperDecorator)());
15
15
  stories.add('default', function () {
16
- return /*#__PURE__*/_react["default"].createElement(_.Tabs, null, /*#__PURE__*/_react["default"].createElement("span", {
16
+ return /*#__PURE__*/_react["default"].createElement(_.Tabs, null, /*#__PURE__*/_react["default"].createElement(_.Tabs.Item, {
17
17
  isTabActive: true
18
- }, "Option A"), /*#__PURE__*/_react["default"].createElement("span", null, "Option B"), /*#__PURE__*/_react["default"].createElement("span", null, "Option C"));
18
+ }, "Option A"), /*#__PURE__*/_react["default"].createElement(_.Tabs.Item, null, "Option B"), /*#__PURE__*/_react["default"].createElement(_.Tabs.Item, null, "Option C"));
19
19
  });
@@ -199,19 +199,23 @@ const AppComponent = _ref3 => {
199
199
  className: css.tabsContainer
200
200
  }, /*#__PURE__*/React.createElement(Tabs, {
201
201
  className: css.tabs
202
- }, /*#__PURE__*/React.createElement(NavLink, {
202
+ }, /*#__PURE__*/React.createElement(Tabs.Item, {
203
+ as: NavLink,
203
204
  exact: true,
204
205
  to: URLS.OVERVIEW,
205
206
  activeClassName: css.tabActive
206
- }, I18N.OVERVIEW), /*#__PURE__*/React.createElement(NavLink, {
207
+ }, I18N.OVERVIEW), /*#__PURE__*/React.createElement(Tabs.Item, {
208
+ as: NavLink,
207
209
  exact: true,
208
210
  to: URLS.ASSETS,
209
211
  activeClassName: css.tabActive
210
- }, I18N.ASSETS), /*#__PURE__*/React.createElement(NavLink, {
212
+ }, I18N.ASSETS), /*#__PURE__*/React.createElement(Tabs.Item, {
213
+ as: NavLink,
211
214
  exact: true,
212
215
  to: URLS.MODULES,
213
216
  activeClassName: css.tabActive
214
- }, I18N.MODULES), /*#__PURE__*/React.createElement(NavLink, {
217
+ }, I18N.MODULES), /*#__PURE__*/React.createElement(Tabs.Item, {
218
+ as: NavLink,
215
219
  exact: true,
216
220
  to: URLS.PACKAGES,
217
221
  activeClassName: css.tabActive
@@ -21,7 +21,7 @@ stories.add('default', () => /*#__PURE__*/React.createElement(Header, {
21
21
  } = _ref2;
22
22
  return /*#__PURE__*/React.createElement("div", {
23
23
  className: className
24
- }, /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement("span", null, "Totals"), /*#__PURE__*/React.createElement("span", null, "Assets"), /*#__PURE__*/React.createElement("span", null, "Modules")));
24
+ }, /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement(Tabs.Item, null, "Totals"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Assets"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Modules")));
25
25
  },
26
26
  renderRight: _ref3 => {
27
27
  let {
@@ -52,6 +52,6 @@ stories.add('menu on the right', () => /*#__PURE__*/React.createElement(Header,
52
52
  style: {
53
53
  flexBasis: '100%'
54
54
  }
55
- }, /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement("span", null, "Totals"), /*#__PURE__*/React.createElement("span", null, "Assets"), /*#__PURE__*/React.createElement("span", null, "Modules")));
55
+ }, /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement(Tabs.Item, null, "Totals"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Assets"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Modules")));
56
56
  }
57
57
  }));
@@ -1,27 +1,40 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
2
+
1
3
  import React from 'react';
2
4
  import PropTypes from 'prop-types';
3
5
  import cx from 'classnames';
4
6
  import css from './tabs.module.css';
5
7
 
6
- const cloneElement = element => {
7
- const {
8
- className,
8
+ const Item = _ref => {
9
+ let {
9
10
  isTabActive,
11
+ as: Component,
12
+ className,
10
13
  ...restProps
11
- } = element.props;
12
- return /*#__PURE__*/React.cloneElement(element, { ...restProps,
13
- className: cx(css.item, isTabActive && css.itemActive, className)
14
- });
14
+ } = _ref;
15
+ return /*#__PURE__*/React.createElement(Component, _extends({
16
+ className: cx(css.item, className, isTabActive && css.itemActive)
17
+ }, restProps));
15
18
  };
16
19
 
17
- export const Tabs = _ref => {
20
+ Item.defaultProps = {
21
+ isTabActive: false,
22
+ className: '',
23
+ as: 'span'
24
+ };
25
+ Item.propTypes = {
26
+ isTabActive: PropTypes.bool,
27
+ className: PropTypes.string,
28
+ as: PropTypes.elementType
29
+ };
30
+ export const Tabs = _ref2 => {
18
31
  let {
19
32
  className,
20
- children
21
- } = _ref;
22
- return /*#__PURE__*/React.createElement("nav", {
33
+ ...restProps
34
+ } = _ref2;
35
+ return /*#__PURE__*/React.createElement("nav", _extends({
23
36
  className: cx(css.root, className)
24
- }, React.Children.map(children, cloneElement));
37
+ }, restProps));
25
38
  };
26
39
  Tabs.defaultProps = {
27
40
  className: ''
@@ -32,4 +45,5 @@ Tabs.propTypes = {
32
45
 
33
46
  /** Component children */
34
47
  children: PropTypes.node.isRequired
35
- };
48
+ };
49
+ Tabs.Item = Item;
@@ -4,6 +4,6 @@ import { getWrapperDecorator } from '../../stories';
4
4
  import { Tabs } from '.';
5
5
  const stories = storiesOf('UI/Tabs', module);
6
6
  stories.addDecorator(getWrapperDecorator());
7
- stories.add('default', () => /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement("span", {
7
+ stories.add('default', () => /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement(Tabs.Item, {
8
8
  isTabActive: true
9
- }, "Option A"), /*#__PURE__*/React.createElement("span", null, "Option B"), /*#__PURE__*/React.createElement("span", null, "Option C")));
9
+ }, "Option A"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Option B"), /*#__PURE__*/React.createElement(Tabs.Item, null, "Option C")));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.0.6-beta.0",
3
+ "version": "4.0.7-beta.0",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -37,27 +37,27 @@
37
37
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/ui#readme",
38
38
  "devDependencies": {
39
39
  "@babel/cli": "7.18.10",
40
- "@babel/core": "7.18.13",
40
+ "@babel/core": "7.19.1",
41
41
  "@babel/plugin-proposal-class-properties": "7.18.6",
42
- "@babel/preset-env": "7.18.10",
42
+ "@babel/preset-env": "7.19.1",
43
43
  "@babel/preset-react": "7.18.6",
44
44
  "@simplyianm/babel-plugin-inline-react-svg": "1.2.0",
45
- "@storybook/addon-essentials": "6.5.10",
45
+ "@storybook/addon-essentials": "6.5.12",
46
46
  "@storybook/addon-knobs": "6.4.0",
47
47
  "@storybook/addon-postcss": "2.0.0",
48
- "@storybook/addon-storyshots": "6.5.10",
49
- "@storybook/addons": "6.5.10",
50
- "@storybook/builder-webpack5": "6.5.10",
51
- "@storybook/manager-webpack5": "6.5.10",
52
- "@storybook/react": "6.5.10",
48
+ "@storybook/addon-storyshots": "6.5.12",
49
+ "@storybook/addons": "6.5.12",
50
+ "@storybook/builder-webpack5": "6.5.12",
51
+ "@storybook/manager-webpack5": "6.5.12",
52
+ "@storybook/react": "6.5.12",
53
53
  "babel-core": "7.0.0-bridge.0",
54
- "babel-jest": "28.1.3",
54
+ "babel-jest": "29.0.3",
55
55
  "babel-plugin-lodash": "3.3.4",
56
56
  "babel-plugin-require-context-hook": "1.0.0",
57
- "chromatic": "6.7.4",
58
- "classnames": "2.3.1",
57
+ "chromatic": "6.10.0",
58
+ "classnames": "2.3.2",
59
59
  "colormap": "2.3.2",
60
- "core-js": "3.24.1",
60
+ "core-js": "3.25.2",
61
61
  "cross-env": "7.0.3",
62
62
  "enzyme": "3.11.0",
63
63
  "enzyme-adapter-react-16": "1.15.6",
@@ -71,7 +71,7 @@
71
71
  "prop-types": "15.8.1",
72
72
  "react": "16.14.0",
73
73
  "react-dom": "16.14.0",
74
- "react-router-dom": "5.3.1",
74
+ "react-router-dom": "5.3.3",
75
75
  "react-test-renderer": "16.14.0",
76
76
  "rimraf": "3.0.2"
77
77
  },
@@ -85,12 +85,12 @@
85
85
  "react-router-dom": "^5.0.0"
86
86
  },
87
87
  "dependencies": {
88
- "@bundle-stats/utils": "^4.0.6-beta.0",
88
+ "@bundle-stats/utils": "^4.0.7-beta.0",
89
89
  "ariakit": "^2.0.0-next.33",
90
90
  "date-fns": "^2.28.0",
91
91
  "modern-css-reset": "^1.4.0",
92
92
  "query-string": "^7.1.0",
93
93
  "use-query-params": "^2.0.0"
94
94
  },
95
- "gitHead": "54a399cb5bbffde01089f286fdc7c8b1aa635f94"
95
+ "gitHead": "b5c30d5074ec4fc3bfceed4475e8d3c3e1f2dac5"
96
96
  }
package/src/app/app.jsx CHANGED
@@ -183,18 +183,18 @@ const AppComponent = ({ version, jobs }) => {
183
183
 
184
184
  <Container className={css.tabsContainer}>
185
185
  <Tabs className={css.tabs}>
186
- <NavLink exact to={URLS.OVERVIEW} activeClassName={css.tabActive}>
186
+ <Tabs.Item as={NavLink} exact to={URLS.OVERVIEW} activeClassName={css.tabActive}>
187
187
  {I18N.OVERVIEW}
188
- </NavLink>
189
- <NavLink exact to={URLS.ASSETS} activeClassName={css.tabActive}>
188
+ </Tabs.Item>
189
+ <Tabs.Item as={NavLink} exact to={URLS.ASSETS} activeClassName={css.tabActive}>
190
190
  {I18N.ASSETS}
191
- </NavLink>
192
- <NavLink exact to={URLS.MODULES} activeClassName={css.tabActive}>
191
+ </Tabs.Item>
192
+ <Tabs.Item as={NavLink} exact to={URLS.MODULES} activeClassName={css.tabActive}>
193
193
  {I18N.MODULES}
194
- </NavLink>
195
- <NavLink exact to={URLS.PACKAGES} activeClassName={css.tabActive}>
194
+ </Tabs.Item>
195
+ <Tabs.Item as={NavLink} exact to={URLS.PACKAGES} activeClassName={css.tabActive}>
196
196
  {I18N.PACKAGES}
197
- </NavLink>
197
+ </Tabs.Item>
198
198
  </Tabs>
199
199
  </Container>
200
200
 
@@ -4,22 +4,24 @@ import cx from 'classnames';
4
4
 
5
5
  import css from './tabs.module.css';
6
6
 
7
- const cloneElement = (element) => {
8
- const { className, isTabActive, ...restProps } = element.props;
9
-
10
- return React.cloneElement(
11
- element,
12
- {
13
- ...restProps,
14
- className: cx(css.item, isTabActive && css.itemActive, className),
15
- },
16
- );
7
+ const Item = ({ isTabActive, as: Component, className,...restProps }) => (
8
+ <Component className={cx(css.item, className, isTabActive && css.itemActive)} {...restProps} />
9
+ );
10
+
11
+ Item.defaultProps = {
12
+ isTabActive: false,
13
+ className: '',
14
+ as: 'span',
17
15
  };
18
16
 
19
- export const Tabs = ({ className, children }) => (
20
- <nav className={cx(css.root, className)}>
21
- {React.Children.map(children, cloneElement)}
22
- </nav>
17
+ Item.propTypes = {
18
+ isTabActive: PropTypes.bool,
19
+ className: PropTypes.string,
20
+ as: PropTypes.elementType,
21
+ };
22
+
23
+ export const Tabs = ({ className, ...restProps }) => (
24
+ <nav className={cx(css.root, className)} {...restProps} />
23
25
  );
24
26
 
25
27
  Tabs.defaultProps = {
@@ -33,3 +35,5 @@ Tabs.propTypes = {
33
35
  /** Component children */
34
36
  children: PropTypes.node.isRequired,
35
37
  };
38
+
39
+ Tabs.Item = Item;