@canonical/react-components 0.37.1 → 0.37.4
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.
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { HTMLProps } from "react";
|
|
2
|
+
import type { ClassName, PropsWithSpread, ValueOf } from "../../types";
|
|
3
|
+
export declare const BadgeType: {
|
|
4
|
+
readonly ROUNDED_LARGE_NUMBER: "ROUNDED_LARGE_NUMBER";
|
|
5
|
+
readonly UNDEFINED_LARGE_NUMBER: "UNDEFINED_LARGE_NUMBER";
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* The props for the Badge component.
|
|
9
|
+
*/
|
|
10
|
+
export declare type Props = PropsWithSpread<{
|
|
11
|
+
/**
|
|
12
|
+
* Numeric value to be displayed.
|
|
13
|
+
*/
|
|
14
|
+
value: number;
|
|
15
|
+
/**
|
|
16
|
+
* The type of the badge component.
|
|
17
|
+
*/
|
|
18
|
+
badgeType?: ValueOf<typeof BadgeType>;
|
|
19
|
+
/**
|
|
20
|
+
* The appearance of the badge.
|
|
21
|
+
*/
|
|
22
|
+
isNegative?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Optional class(es) to give to the badge.
|
|
25
|
+
*/
|
|
26
|
+
className?: ClassName;
|
|
27
|
+
}, HTMLProps<HTMLSpanElement>>;
|
|
28
|
+
declare const Badge: ({ value, badgeType, className, isNegative, ...spanProps }: Props) => JSX.Element;
|
|
29
|
+
export default Badge;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.BadgeType = void 0;
|
|
7
|
+
|
|
8
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _excluded = ["value", "badgeType", "className", "isNegative"];
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
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); }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
var BadgeType = {
|
|
25
|
+
ROUNDED_LARGE_NUMBER: "ROUNDED_LARGE_NUMBER",
|
|
26
|
+
UNDEFINED_LARGE_NUMBER: "UNDEFINED_LARGE_NUMBER"
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The props for the Badge component.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
exports.BadgeType = BadgeType;
|
|
33
|
+
var MAX_VAL = 999;
|
|
34
|
+
var units = ["", "k", "M", "B", "T"];
|
|
35
|
+
|
|
36
|
+
var round = function round(value) {
|
|
37
|
+
var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
38
|
+
|
|
39
|
+
if (value < 1000) {
|
|
40
|
+
var truncatedValue = Number(value.toString().slice(0, 3));
|
|
41
|
+
return "".concat(truncatedValue).concat(units[unit]);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (unit >= units.length - 1) {
|
|
45
|
+
return "999T";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var newValue = value / 1000;
|
|
49
|
+
return round(newValue, unit + 1);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var clamp = function clamp(value) {
|
|
53
|
+
if (value > MAX_VAL) {
|
|
54
|
+
return "".concat(MAX_VAL, "+");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return value;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var Badge = function Badge(_ref) {
|
|
61
|
+
var _classNames;
|
|
62
|
+
|
|
63
|
+
var value = _ref.value,
|
|
64
|
+
_ref$badgeType = _ref.badgeType,
|
|
65
|
+
badgeType = _ref$badgeType === void 0 ? BadgeType.UNDEFINED_LARGE_NUMBER : _ref$badgeType,
|
|
66
|
+
className = _ref.className,
|
|
67
|
+
isNegative = _ref.isNegative,
|
|
68
|
+
spanProps = _objectWithoutProperties(_ref, _excluded);
|
|
69
|
+
|
|
70
|
+
var badgeClassName = (0, _classnames.default)((_classNames = {}, _defineProperty(_classNames, "p-badge--negative", !!isNegative), _defineProperty(_classNames, "p-badge", !isNegative), _classNames), className);
|
|
71
|
+
var safeValue = Math.round(value);
|
|
72
|
+
|
|
73
|
+
if (value < 0) {
|
|
74
|
+
console.error("The value used in the badge should be positive");
|
|
75
|
+
safeValue = 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
var formattedValue = badgeType === BadgeType.ROUNDED_LARGE_NUMBER ? round(safeValue) : clamp(safeValue);
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement("span", _extends({}, spanProps, {
|
|
80
|
+
className: badgeClassName
|
|
81
|
+
}), formattedValue);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
var _default = Badge;
|
|
85
|
+
exports.default = _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _Badge.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _Badge = _interopRequireDefault(require("./Badge"));
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -231,13 +231,13 @@ var Navigation = function Navigation(_ref) {
|
|
|
231
231
|
}
|
|
232
232
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
233
233
|
className: "p-navigation__search-label"
|
|
234
|
-
}, "Search"))) : null, /*#__PURE__*/_react.default.createElement("li", {
|
|
234
|
+
}, "Search"))) : null, (items === null || items === void 0 ? void 0 : items.length) > 0 || (itemsRight === null || itemsRight === void 0 ? void 0 : itemsRight.length) > 0 ? /*#__PURE__*/_react.default.createElement("li", {
|
|
235
235
|
className: "p-navigation__item"
|
|
236
236
|
}, /*#__PURE__*/_react.default.createElement("button", {
|
|
237
237
|
"aria-pressed": mobileMenuOpen,
|
|
238
238
|
className: "p-navigation__link",
|
|
239
239
|
onClick: toggleMobileMenu
|
|
240
|
-
}, mobileMenuOpen ? "Close menu" : "Menu")))), /*#__PURE__*/_react.default.createElement("nav", _extends({
|
|
240
|
+
}, mobileMenuOpen ? "Close menu" : "Menu")) : null)), /*#__PURE__*/_react.default.createElement("nav", _extends({
|
|
241
241
|
className: "p-navigation__nav"
|
|
242
242
|
}, navProps), /*#__PURE__*/_react.default.createElement("ul", _extends({
|
|
243
243
|
className: "p-navigation__items"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonical/react-components",
|
|
3
|
-
"version": "0.37.
|
|
3
|
+
"version": "0.37.4",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"author": "Huw Wilkins <huw.wilkins@canonical.com>",
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
"@babel/preset-typescript": "7.17.12",
|
|
28
28
|
"@percy/cli": "1.2.1",
|
|
29
29
|
"@percy/storybook": "4.2.1",
|
|
30
|
-
"@storybook/addon-a11y": "6.
|
|
31
|
-
"@storybook/addon-controls": "6.
|
|
32
|
-
"@storybook/addon-docs": "6.
|
|
33
|
-
"@storybook/addons": "6.
|
|
34
|
-
"@storybook/react": "6.
|
|
35
|
-
"@storybook/theming": "6.
|
|
30
|
+
"@storybook/addon-a11y": "6.4.22",
|
|
31
|
+
"@storybook/addon-controls": "6.4.22",
|
|
32
|
+
"@storybook/addon-docs": "6.4.22",
|
|
33
|
+
"@storybook/addons": "6.4.22",
|
|
34
|
+
"@storybook/react": "6.4.22",
|
|
35
|
+
"@storybook/theming": "6.4.22",
|
|
36
36
|
"@testing-library/cypress": "8.0.2",
|
|
37
|
-
"@testing-library/dom": "8.
|
|
37
|
+
"@testing-library/dom": "8.14.0",
|
|
38
38
|
"@testing-library/jest-dom": "5.16.4",
|
|
39
39
|
"@testing-library/react": "12.1.5",
|
|
40
40
|
"@testing-library/react-hooks": "7.0.2",
|
|
41
41
|
"@testing-library/user-event": "13.5.0",
|
|
42
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
43
|
-
"@typescript-eslint/parser": "5.
|
|
42
|
+
"@typescript-eslint/eslint-plugin": "5.29.0",
|
|
43
|
+
"@typescript-eslint/parser": "5.29.0",
|
|
44
44
|
"@wojtekmaj/enzyme-adapter-react-17": "0.6.7",
|
|
45
45
|
"babel-jest": "27.5.1",
|
|
46
46
|
"babel-loader": "8.2.5",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"ts-jest": "27.1.5",
|
|
82
82
|
"tsc-alias": "1.6.8",
|
|
83
83
|
"typescript": "4.7.2",
|
|
84
|
-
"vanilla-framework": "3.
|
|
84
|
+
"vanilla-framework": "3.6.1",
|
|
85
85
|
"wait-on": "5.3.0"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
@@ -102,9 +102,9 @@
|
|
|
102
102
|
"postcss": "^8.3.11"
|
|
103
103
|
},
|
|
104
104
|
"peerDependencies": {
|
|
105
|
-
"react": "17.0.2",
|
|
106
|
-
"react-dom": "17.0.2",
|
|
107
|
-
"vanilla-framework": "3.
|
|
105
|
+
"react": "^17.0.2 || ^18.0.0",
|
|
106
|
+
"react-dom": "^17.0.2 || ^18.0.0",
|
|
107
|
+
"vanilla-framework": "3.6.1"
|
|
108
108
|
},
|
|
109
109
|
"scripts": {
|
|
110
110
|
"build": "rm -rf dist && yarn build-local; yarn build-declaration",
|