@canonical/react-components 0.37.2 → 0.37.3
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 }; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canonical/react-components",
|
|
3
|
-
"version": "0.37.
|
|
3
|
+
"version": "0.37.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"author": "Huw Wilkins <huw.wilkins@canonical.com>",
|
|
@@ -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.6.
|
|
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.6.
|
|
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",
|