beem-component 1.2.6 → 1.2.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/dist/components/BannerCard/bannerCard.stories.js +110 -0
- package/dist/components/BannerCard/bannerCards.js +107 -0
- package/dist/components/Modals/modal.js +17 -29
- package/dist/components/Modals/modals.stories.js +10 -15
- package/dist/components/ProgressRing/progressRing.js +186 -0
- package/dist/components/ProgressRing/progressRing.stories.js +63 -0
- package/dist/components/index.js +16 -0
- package/package.json +1 -1
- package/src/App.js +22 -42
- package/src/MainChat.js +41 -0
- package/src/lib/components/BannerCard/bannerCard.stories.js +82 -0
- package/src/lib/components/BannerCard/bannerCards.js +67 -0
- package/src/lib/components/Modals/modal.js +3 -10
- package/src/lib/components/Modals/modals.stories.js +10 -10
- package/src/lib/components/ProgressRing/progressRing.js +156 -0
- package/src/lib/components/ProgressRing/progressRing.stories.js +41 -0
- package/src/lib/components/index.js +5 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.SampleBanner = exports.GenericBanner = exports.FeatureBanner = exports.AnnouncementBanner = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _bannerCards = _interopRequireDefault(require("./bannerCards"));
|
|
11
|
+
|
|
12
|
+
var _ = require("..");
|
|
13
|
+
|
|
14
|
+
var _colors = require("../colors");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
/* eslint-disable import/no-anonymous-default-export */
|
|
19
|
+
var _default = {
|
|
20
|
+
component: _bannerCards.default,
|
|
21
|
+
title: "components/Banner",
|
|
22
|
+
argTypes: {
|
|
23
|
+
border: {
|
|
24
|
+
options: ["dashed", "solid"],
|
|
25
|
+
control: {
|
|
26
|
+
type: "select"
|
|
27
|
+
},
|
|
28
|
+
description: "Banner border",
|
|
29
|
+
defaultValue: {
|
|
30
|
+
summary: "none"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
bannerBg: {
|
|
34
|
+
description: "Banner Background Color, Can be set as 'default', or custom color"
|
|
35
|
+
},
|
|
36
|
+
content: {
|
|
37
|
+
options: ["left", "center", "right"],
|
|
38
|
+
control: {
|
|
39
|
+
type: "select"
|
|
40
|
+
},
|
|
41
|
+
description: "Aligning content of banner, will not work if closeButton is present"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.default = _default;
|
|
46
|
+
|
|
47
|
+
var SampleBanner = function SampleBanner() {
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
|
|
49
|
+
border: "dashed",
|
|
50
|
+
content: "center",
|
|
51
|
+
bannerBg: "default"
|
|
52
|
+
}, /*#__PURE__*/_react.default.createElement("h3", null, "Message Title"), /*#__PURE__*/_react.default.createElement("p", null, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
|
|
53
|
+
size: "small"
|
|
54
|
+
}, "Label")));
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
exports.SampleBanner = SampleBanner;
|
|
58
|
+
|
|
59
|
+
var AnnouncementBanner = function AnnouncementBanner() {
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
|
|
61
|
+
bannerBg: "".concat(_colors.BmPrimaryBlue),
|
|
62
|
+
closeButton: true
|
|
63
|
+
}, /*#__PURE__*/_react.default.createElement("h3", {
|
|
64
|
+
style: {
|
|
65
|
+
color: "white"
|
|
66
|
+
}
|
|
67
|
+
}, "Special Announcement Title"), /*#__PURE__*/_react.default.createElement("p", {
|
|
68
|
+
style: {
|
|
69
|
+
color: "white"
|
|
70
|
+
}
|
|
71
|
+
}, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
|
|
72
|
+
variant: "neutral",
|
|
73
|
+
size: "small"
|
|
74
|
+
}, "Label")));
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
exports.AnnouncementBanner = AnnouncementBanner;
|
|
78
|
+
|
|
79
|
+
var FeatureBanner = function FeatureBanner() {
|
|
80
|
+
return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
|
|
81
|
+
bannerBg: "".concat(_colors.BmSecondaryYellow),
|
|
82
|
+
closeButton: true
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_.BmTag, {
|
|
84
|
+
variant: "light"
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement("p", null, "New")), /*#__PURE__*/_react.default.createElement("h3", {
|
|
86
|
+
style: {
|
|
87
|
+
color: "white"
|
|
88
|
+
}
|
|
89
|
+
}, "New Feature Title"), /*#__PURE__*/_react.default.createElement("p", {
|
|
90
|
+
style: {
|
|
91
|
+
color: "white"
|
|
92
|
+
}
|
|
93
|
+
}, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
|
|
94
|
+
size: "small"
|
|
95
|
+
}, "Label")));
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exports.FeatureBanner = FeatureBanner;
|
|
99
|
+
|
|
100
|
+
var GenericBanner = function GenericBanner() {
|
|
101
|
+
return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
|
|
102
|
+
border: "solid",
|
|
103
|
+
bannerBg: "default",
|
|
104
|
+
closeButton: true
|
|
105
|
+
}, /*#__PURE__*/_react.default.createElement("h3", null, "New Feature Title"), /*#__PURE__*/_react.default.createElement("p", null, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
|
|
106
|
+
size: "small"
|
|
107
|
+
}, "Label")));
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
exports.GenericBanner = GenericBanner;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _icons = require("@material-ui/icons");
|
|
13
|
+
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
+
|
|
16
|
+
var _ = require("..");
|
|
17
|
+
|
|
18
|
+
var _colors = require("../colors");
|
|
19
|
+
|
|
20
|
+
var _excluded = ["closeButton", "children"];
|
|
21
|
+
|
|
22
|
+
var _templateObject, _templateObject2;
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
function _extends() { _extends = Object.assign || 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); }
|
|
31
|
+
|
|
32
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
33
|
+
|
|
34
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
+
|
|
36
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
37
|
+
|
|
38
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
39
|
+
|
|
40
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
41
|
+
|
|
42
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
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; }
|
|
47
|
+
|
|
48
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
49
|
+
|
|
50
|
+
var BannerCardWrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: ", ";\n flex-direction: column;\n padding: 0.5rem;\n border: 0.071rem\n ", "\n ", ";\n border-radius: 0.25rem;\n align-items: ", ";\n background: ", "};\n > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n"])), function (_ref) {
|
|
51
|
+
var closeButton = _ref.closeButton,
|
|
52
|
+
show = _ref.show;
|
|
53
|
+
|
|
54
|
+
if (!closeButton) {
|
|
55
|
+
return "flex";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return show ? "flex" : "none";
|
|
59
|
+
}, function (_ref2) {
|
|
60
|
+
var border = _ref2.border;
|
|
61
|
+
if (border === "dashed") return "dashed";
|
|
62
|
+
if (border === "solid") return "solid";
|
|
63
|
+
return "none";
|
|
64
|
+
}, _colors.BmPrimaryBlue, function (_ref3) {
|
|
65
|
+
var content = _ref3.content,
|
|
66
|
+
closeButton = _ref3.closeButton;
|
|
67
|
+
|
|
68
|
+
if (!closeButton) {
|
|
69
|
+
if (content === "center") return "center";
|
|
70
|
+
if (content === "left") return "flex-start";
|
|
71
|
+
if (content === "right") return "flex-end";
|
|
72
|
+
return "center";
|
|
73
|
+
}
|
|
74
|
+
}, function (_ref4) {
|
|
75
|
+
var bannerBg = _ref4.bannerBg;
|
|
76
|
+
if (bannerBg === "default") return "".concat(_colors.BmGrey50);
|
|
77
|
+
if (!bannerBg) return "none";
|
|
78
|
+
return bannerBg;
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
var BannerComponent = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n"])));
|
|
82
|
+
|
|
83
|
+
var BmBanner = function BmBanner(_ref5) {
|
|
84
|
+
var closeButton = _ref5.closeButton,
|
|
85
|
+
children = _ref5.children,
|
|
86
|
+
rest = _objectWithoutProperties(_ref5, _excluded);
|
|
87
|
+
|
|
88
|
+
var _useState = (0, _react.useState)(true),
|
|
89
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
90
|
+
show = _useState2[0],
|
|
91
|
+
setShow = _useState2[1];
|
|
92
|
+
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(BannerCardWrapper, _extends({
|
|
94
|
+
closeButton: closeButton
|
|
95
|
+
}, rest, {
|
|
96
|
+
show: show
|
|
97
|
+
}), closeButton && /*#__PURE__*/_react.default.createElement(BannerComponent, null, children[0], " ", /*#__PURE__*/_react.default.createElement(_.BmIcons, {
|
|
98
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.Clear, null),
|
|
99
|
+
size: "small",
|
|
100
|
+
onClick: function onClick() {
|
|
101
|
+
return setShow(!show);
|
|
102
|
+
}
|
|
103
|
+
})), closeButton ? children.slice(1) : children);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var _default = BmBanner;
|
|
107
|
+
exports.default = _default;
|
|
@@ -58,19 +58,7 @@ var Overlay = _styledComponents.default.div(_templateObject || (_templateObject
|
|
|
58
58
|
|
|
59
59
|
exports.Overlay = Overlay;
|
|
60
60
|
|
|
61
|
-
var ModalContent = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n border-radius: 0.25rem;\n padding: 1rem;\n margin: auto;\n background: ", ";\n width:
|
|
62
|
-
var size = _ref.size;
|
|
63
|
-
|
|
64
|
-
if (size) {
|
|
65
|
-
if (size === "small") return "300px";
|
|
66
|
-
if (size === "default") return "500px";
|
|
67
|
-
if (size === "large") return "800px";
|
|
68
|
-
if (size === "xlarge") return "1140px";
|
|
69
|
-
return size;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return "500px";
|
|
73
|
-
});
|
|
61
|
+
var ModalContent = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n border-radius: 0.25rem;\n padding: 1rem;\n margin: auto;\n background: ", ";\n width: auto;\n max-width: 100%;\n\n > *:not(:last-child) {\n margin-bottom: 1rem;\n }\n @media (min-width: 576px) {\n max-width: 500px;\n width: 500px;\n }\n"])), _colors.BmPrimaryWhite);
|
|
74
62
|
|
|
75
63
|
exports.ModalContent = ModalContent;
|
|
76
64
|
|
|
@@ -78,13 +66,13 @@ var ModalWrapper = _styledComponents.default.div(_templateObject3 || (_templateO
|
|
|
78
66
|
|
|
79
67
|
exports.ModalWrapper = ModalWrapper;
|
|
80
68
|
|
|
81
|
-
var BmModal = function BmModal(
|
|
82
|
-
var children =
|
|
83
|
-
show =
|
|
84
|
-
size =
|
|
85
|
-
onHide =
|
|
86
|
-
centered =
|
|
87
|
-
rest = _objectWithoutProperties(
|
|
69
|
+
var BmModal = function BmModal(_ref) {
|
|
70
|
+
var children = _ref.children,
|
|
71
|
+
show = _ref.show,
|
|
72
|
+
size = _ref.size,
|
|
73
|
+
onHide = _ref.onHide,
|
|
74
|
+
centered = _ref.centered,
|
|
75
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
88
76
|
|
|
89
77
|
var _useState = (0, _react.useState)(show),
|
|
90
78
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -126,13 +114,13 @@ exports.BmModal = BmModal;
|
|
|
126
114
|
|
|
127
115
|
var ModalHeader = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n"])));
|
|
128
116
|
|
|
129
|
-
BmModal.Header = function (
|
|
130
|
-
var children =
|
|
131
|
-
size =
|
|
132
|
-
onHide =
|
|
133
|
-
closeButton =
|
|
134
|
-
show =
|
|
135
|
-
rest = _objectWithoutProperties(
|
|
117
|
+
BmModal.Header = function (_ref2) {
|
|
118
|
+
var children = _ref2.children,
|
|
119
|
+
size = _ref2.size,
|
|
120
|
+
onHide = _ref2.onHide,
|
|
121
|
+
closeButton = _ref2.closeButton,
|
|
122
|
+
show = _ref2.show,
|
|
123
|
+
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
136
124
|
|
|
137
125
|
return /*#__PURE__*/_react.default.createElement(Consumer, null, function (value) {
|
|
138
126
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ModalHeader, rest, children, closeButton && /*#__PURE__*/_react.default.createElement(_iconStyles.BmIcons, _extends({
|
|
@@ -145,8 +133,8 @@ BmModal.Header = function (_ref3) {
|
|
|
145
133
|
});
|
|
146
134
|
};
|
|
147
135
|
|
|
148
|
-
BmModal.Body = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n max-height: ", ";\n overflow: auto;\n"])), function (
|
|
149
|
-
var size =
|
|
136
|
+
BmModal.Body = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n max-height: ", ";\n overflow: auto;\n"])), function (_ref3) {
|
|
137
|
+
var size = _ref3.size;
|
|
150
138
|
|
|
151
139
|
if (size) {
|
|
152
140
|
if (size === "small") return "21.429rem";
|
|
@@ -35,22 +35,18 @@ var _default = {
|
|
|
35
35
|
component: _modal.default,
|
|
36
36
|
title: "components/Modals",
|
|
37
37
|
argType: {
|
|
38
|
-
size: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
defaultValue: {
|
|
45
|
-
summary: "default"
|
|
46
|
-
}
|
|
47
|
-
},
|
|
38
|
+
// size: {
|
|
39
|
+
// options: ["small", "default", "large", "xlarge"],
|
|
40
|
+
// control: { type: "select" },
|
|
41
|
+
// description: "Size of the Modal (Optional)",
|
|
42
|
+
// defaultValue: { summary: "default" },
|
|
43
|
+
// },
|
|
48
44
|
closeButton: {
|
|
49
45
|
description: "Placed on BmModal.Header component. Displays the close button (X)"
|
|
50
46
|
},
|
|
51
|
-
centered: {
|
|
52
|
-
|
|
53
|
-
},
|
|
47
|
+
// centered: {
|
|
48
|
+
// description: "Centers the modal",
|
|
49
|
+
// },
|
|
54
50
|
show: {
|
|
55
51
|
control: {
|
|
56
52
|
type: "boolean"
|
|
@@ -78,8 +74,7 @@ var SampleModal = function SampleModal() {
|
|
|
78
74
|
show: showModal,
|
|
79
75
|
onHide: function onHide() {
|
|
80
76
|
return setShowModal(false);
|
|
81
|
-
}
|
|
82
|
-
centered: true
|
|
77
|
+
}
|
|
83
78
|
}, /*#__PURE__*/_react.default.createElement(_modal.default.Header, {
|
|
84
79
|
closeButton: true
|
|
85
80
|
}, /*#__PURE__*/_react.default.createElement("h2", null, "Header")), /*#__PURE__*/_react.default.createElement(_modal.default.Body, null, /*#__PURE__*/_react.default.createElement("p", null, "This is a body")), /*#__PURE__*/_react.default.createElement(_modal.default.Footer, null, /*#__PURE__*/_react.default.createElement("p", null, "This is a footer"))));
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
+
|
|
16
|
+
var _colors = require("../colors");
|
|
17
|
+
|
|
18
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
27
|
+
|
|
28
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
29
|
+
|
|
30
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
31
|
+
|
|
32
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
33
|
+
|
|
34
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
35
|
+
|
|
36
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
37
|
+
|
|
38
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
39
|
+
|
|
40
|
+
var xsmall = 1.143;
|
|
41
|
+
var small = 1.429;
|
|
42
|
+
var medium = 1.714;
|
|
43
|
+
var large = 1.714;
|
|
44
|
+
var xlarge = 2.286;
|
|
45
|
+
var center;
|
|
46
|
+
var radius;
|
|
47
|
+
var circumference;
|
|
48
|
+
var strokeWidth = 5;
|
|
49
|
+
var initialSize;
|
|
50
|
+
|
|
51
|
+
var measurement = function measurement(size) {
|
|
52
|
+
var initialSize = size || large * 14;
|
|
53
|
+
|
|
54
|
+
if (size === "xsmall") {
|
|
55
|
+
initialSize = xsmall * 14;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (size === "small") {
|
|
59
|
+
initialSize = small * 14;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (size === "medium") {
|
|
63
|
+
initialSize = medium * 14;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (size === "large") {
|
|
67
|
+
initialSize = large * 14;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (size === "xlarge") {
|
|
71
|
+
initialSize = xlarge * 14;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
center = initialSize / 2;
|
|
75
|
+
radius = initialSize / 2 - strokeWidth / 2;
|
|
76
|
+
circumference = 2 * Math.PI * radius;
|
|
77
|
+
return {
|
|
78
|
+
center: center,
|
|
79
|
+
radius: radius,
|
|
80
|
+
circumference: circumference,
|
|
81
|
+
initialSize: initialSize
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var ProgressRingWrapper = _styledComponents.default.svg(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n width: ", ";\n height: ", ";\n"])), function (_ref) {
|
|
86
|
+
var size = _ref.size;
|
|
87
|
+
if (size === "xsmall") return "1.143rem";
|
|
88
|
+
if (size === "small") return "1.429rem";
|
|
89
|
+
if (size === "medium") return "1.714rem";
|
|
90
|
+
if (size === "large") return "1.714rem";
|
|
91
|
+
if (size === "xlarge") return "2.286rem";
|
|
92
|
+
if (!size) return "1.714rem";
|
|
93
|
+
return size;
|
|
94
|
+
}, function (_ref2) {
|
|
95
|
+
var size = _ref2.size;
|
|
96
|
+
if (size === "xsmall") return "1.143rem";
|
|
97
|
+
if (size === "small") return "1.429rem";
|
|
98
|
+
if (size === "medium") return "1.714rem";
|
|
99
|
+
if (size === "large") return "1.714rem";
|
|
100
|
+
if (size === "xlarge") return "2.286rem";
|
|
101
|
+
if (!size) return "1.714rem";
|
|
102
|
+
return size;
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
var ProgressRingCircle1 = _styledComponents.default.circle(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n fill: none;\n"])));
|
|
106
|
+
|
|
107
|
+
var ProgressRingCircle2 = _styledComponents.default.circle(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n fill: none;\n stroke: ", ";\n"])), function (_ref3) {
|
|
108
|
+
var variant = _ref3.variant,
|
|
109
|
+
progress = _ref3.progress;
|
|
110
|
+
|
|
111
|
+
if (progress) {
|
|
112
|
+
if (variant === "primary") return "".concat(_colors.BmPrimaryBlue);
|
|
113
|
+
if (variant === "success") return "".concat(_colors.BmSecondaryDarkGreen);
|
|
114
|
+
if (variant === "warning") return "".concat(_colors.BmPrimaryGold);
|
|
115
|
+
if (variant === "danger") return "".concat(_colors.BmSecondaryRed);
|
|
116
|
+
if (!variant) return "".concat(_colors.BmPrimaryBlue);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (!progress) return "".concat(_colors.BmGrey100);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
var Text = _styledComponents.default.text(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n font-size: ", ";\n text-anchor: middle;\n fill: black;\n position: absolute;\n"])), function () {
|
|
123
|
+
if (initialSize >= 50 && initialSize < 100) {
|
|
124
|
+
return "1rem";
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (initialSize >= 100) {
|
|
128
|
+
return "2rem";
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return "0.5rem";
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
var BmProgressRing = function BmProgressRing(props) {
|
|
135
|
+
var _useState = (0, _react.useState)(0),
|
|
136
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
137
|
+
offset = _useState2[0],
|
|
138
|
+
setOffset = _useState2[1];
|
|
139
|
+
|
|
140
|
+
var circleRef = (0, _react.useRef)(null);
|
|
141
|
+
var size = props.size,
|
|
142
|
+
progress = props.progress,
|
|
143
|
+
variant = props.variant;
|
|
144
|
+
var initialMeasure = measurement(size);
|
|
145
|
+
circumference = initialMeasure.circumference;
|
|
146
|
+
radius = initialMeasure.radius;
|
|
147
|
+
center = initialMeasure.center;
|
|
148
|
+
initialSize = initialMeasure.initialSize;
|
|
149
|
+
(0, _react.useEffect)(function () {
|
|
150
|
+
var progressOffset = (100 - progress) / 100 * circumference;
|
|
151
|
+
setOffset(progressOffset);
|
|
152
|
+
circleRef.current.style = "transition: stroke-dashoffset 850ms ease-in-out";
|
|
153
|
+
}, [setOffset, progress, offset]);
|
|
154
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ProgressRingWrapper, {
|
|
155
|
+
size: size
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(ProgressRingCircle1, {
|
|
157
|
+
stroke: "".concat(_colors.BmGrey100),
|
|
158
|
+
cx: center,
|
|
159
|
+
cy: center,
|
|
160
|
+
r: radius,
|
|
161
|
+
strokeWidth: strokeWidth
|
|
162
|
+
}), /*#__PURE__*/_react.default.createElement(ProgressRingCircle2, {
|
|
163
|
+
progress: progress,
|
|
164
|
+
ref: circleRef,
|
|
165
|
+
variant: variant,
|
|
166
|
+
cx: center,
|
|
167
|
+
cy: center,
|
|
168
|
+
r: radius,
|
|
169
|
+
strokeWidth: strokeWidth,
|
|
170
|
+
strokeDasharray: circumference,
|
|
171
|
+
strokeDashoffset: offset,
|
|
172
|
+
"data-testid": "progress-bar-bar"
|
|
173
|
+
}), /*#__PURE__*/_react.default.createElement(Text, {
|
|
174
|
+
x: "".concat(center),
|
|
175
|
+
y: "".concat(center),
|
|
176
|
+
size: size
|
|
177
|
+
}, progress, "%")));
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
BmProgressRing.propTypes = {
|
|
181
|
+
size: _propTypes.default.number.isRequired,
|
|
182
|
+
progress: _propTypes.default.number.isRequired,
|
|
183
|
+
variant: _propTypes.default.string
|
|
184
|
+
};
|
|
185
|
+
var _default = BmProgressRing;
|
|
186
|
+
exports.default = _default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.CustomProgressRing = exports.BasicProgressRing = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _progressRing = _interopRequireDefault(require("./progressRing"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
/* eslint-disable import/no-anonymous-default-export */
|
|
15
|
+
var _default = {
|
|
16
|
+
component: _progressRing.default,
|
|
17
|
+
title: "components/ProgressRing",
|
|
18
|
+
argTypes: {
|
|
19
|
+
size: {
|
|
20
|
+
options: ["xsmall", "small", "medium", "large", "xlarge"],
|
|
21
|
+
control: {
|
|
22
|
+
type: "select"
|
|
23
|
+
},
|
|
24
|
+
description: "Size of the Progress Ring (Can also be predefined e.g. 50)",
|
|
25
|
+
defaultValue: {
|
|
26
|
+
summary: "large"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
progress: {
|
|
30
|
+
description: "Progress Indicator"
|
|
31
|
+
},
|
|
32
|
+
variant: {
|
|
33
|
+
options: ["primary", "success", "warning", "danger"],
|
|
34
|
+
control: {
|
|
35
|
+
type: "select"
|
|
36
|
+
},
|
|
37
|
+
description: "Color of the Progress Ring",
|
|
38
|
+
defaultValue: {
|
|
39
|
+
summary: "xsmall"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.default = _default;
|
|
45
|
+
|
|
46
|
+
var MainProgressRing = function MainProgressRing(args) {
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_progressRing.default, args);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var BasicProgressRing = MainProgressRing.bind({});
|
|
51
|
+
exports.BasicProgressRing = BasicProgressRing;
|
|
52
|
+
BasicProgressRing.args = {
|
|
53
|
+
progress: 30,
|
|
54
|
+
variant: "success",
|
|
55
|
+
size: "xlarge"
|
|
56
|
+
};
|
|
57
|
+
var CustomProgressRing = MainProgressRing.bind({});
|
|
58
|
+
exports.CustomProgressRing = CustomProgressRing;
|
|
59
|
+
CustomProgressRing.args = {
|
|
60
|
+
progress: 50,
|
|
61
|
+
variant: "primary",
|
|
62
|
+
size: "40"
|
|
63
|
+
};
|
package/dist/components/index.js
CHANGED
|
@@ -29,6 +29,12 @@ Object.defineProperty(exports, "BmAvatarIcon", {
|
|
|
29
29
|
return _iconStyles.BmAvatarIcon;
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
+
Object.defineProperty(exports, "BmBanner", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function get() {
|
|
35
|
+
return _bannerCards.default;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
32
38
|
Object.defineProperty(exports, "BmBtnIcon", {
|
|
33
39
|
enumerable: true,
|
|
34
40
|
get: function get() {
|
|
@@ -204,6 +210,12 @@ Object.defineProperty(exports, "BmProgressBar", {
|
|
|
204
210
|
return _progressbar.BmProgressBar;
|
|
205
211
|
}
|
|
206
212
|
});
|
|
213
|
+
Object.defineProperty(exports, "BmProgressRing", {
|
|
214
|
+
enumerable: true,
|
|
215
|
+
get: function get() {
|
|
216
|
+
return _progressRing.default;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
207
219
|
Object.defineProperty(exports, "BmQuickReplyIcon", {
|
|
208
220
|
enumerable: true,
|
|
209
221
|
get: function get() {
|
|
@@ -349,6 +361,10 @@ var _checkbox = require("./checkbox");
|
|
|
349
361
|
|
|
350
362
|
var _tags = require("../components/Tags/tags");
|
|
351
363
|
|
|
364
|
+
var _bannerCards = _interopRequireDefault(require("../components/BannerCard/bannerCards"));
|
|
365
|
+
|
|
366
|
+
var _progressRing = _interopRequireDefault(require("./ProgressRing/progressRing"));
|
|
367
|
+
|
|
352
368
|
var _iconStyles = require("./iconStyles");
|
|
353
369
|
|
|
354
370
|
var _noteBar = require("./NoteBar/noteBar");
|
package/package.json
CHANGED
package/src/App.js
CHANGED
|
@@ -1,56 +1,36 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from "react";
|
|
2
2
|
import "../src/main.scss";
|
|
3
|
-
import { BmButton,
|
|
3
|
+
import { BmButton, BmCard, BmIcons, MainWrapper } from "./lib/components";
|
|
4
4
|
import { GlobalStyle } from "./lib/components/globalStyles";
|
|
5
5
|
import "./lib/assets/css/sidebar.scss";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import CustomerInfo from "./CustomerInfo";
|
|
10
|
-
import InfoAccordion from "./InfoAccordion";
|
|
6
|
+
import BmBanner from "./lib/components/BannerCard/bannerCards";
|
|
7
|
+
import { FileCopyOutlined } from "@material-ui/icons";
|
|
8
|
+
import ProgressBar from "./lib/components/ProgressRing/progressRing";
|
|
11
9
|
|
|
12
10
|
export const App = () => {
|
|
13
|
-
const [showModal, setShowModal] = useState(false);
|
|
14
11
|
return (
|
|
15
12
|
<>
|
|
16
13
|
<GlobalStyle />
|
|
17
|
-
<MainWrapper>
|
|
14
|
+
{/* <MainWrapper> */}
|
|
15
|
+
<BmBanner border="dashed" content="center" bannerBg="default" closeButton>
|
|
16
|
+
<BmIcons icon={<FileCopyOutlined />} />
|
|
17
|
+
<h3>Message Title</h3>
|
|
18
|
+
<p>Message Text</p>
|
|
18
19
|
<div>
|
|
19
|
-
<BmButton
|
|
20
|
-
|
|
20
|
+
<BmButton variant="neutral" size="small">
|
|
21
|
+
Label
|
|
21
22
|
</BmButton>
|
|
22
23
|
</div>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
</
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</BmModal>
|
|
34
|
-
<div className="main-chat-container">
|
|
35
|
-
<div className="chat-container">
|
|
36
|
-
<div className="sidebar">
|
|
37
|
-
<SideBar />
|
|
38
|
-
</div>
|
|
39
|
-
<div className="chat">
|
|
40
|
-
<ChatHeader />
|
|
41
|
-
<div className="chat-menu">
|
|
42
|
-
<div className="chat-messages">
|
|
43
|
-
<Chat />
|
|
44
|
-
</div>
|
|
45
|
-
<div className="chat-contact-info">
|
|
46
|
-
<CustomerInfo />
|
|
47
|
-
<InfoAccordion />
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</MainWrapper>
|
|
24
|
+
</BmBanner>
|
|
25
|
+
<BmCard>
|
|
26
|
+
<BmCard.Header>
|
|
27
|
+
<h3>Card Header</h3>
|
|
28
|
+
</BmCard.Header>
|
|
29
|
+
<BmCard.Body></BmCard.Body>
|
|
30
|
+
<BmCard.Footer>Card Footer</BmCard.Footer>
|
|
31
|
+
</BmCard>
|
|
32
|
+
<ProgressBar progress="70" size="40" />
|
|
33
|
+
{/* </MainWrapper> */}
|
|
54
34
|
</>
|
|
55
35
|
);
|
|
56
36
|
};
|
package/src/MainChat.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "../src/main.scss";
|
|
3
|
+
import { MainWrapper } from "./lib/components";
|
|
4
|
+
import { GlobalStyle } from "./lib/components/globalStyles";
|
|
5
|
+
import "./lib/assets/css/sidebar.scss";
|
|
6
|
+
import SideBar from "./SideBar";
|
|
7
|
+
import ChatHeader from "./ChatHeader";
|
|
8
|
+
import Chat from "./Chat";
|
|
9
|
+
import CustomerInfo from "./CustomerInfo";
|
|
10
|
+
import InfoAccordion from "./InfoAccordion";
|
|
11
|
+
|
|
12
|
+
export const App = () => {
|
|
13
|
+
return (
|
|
14
|
+
<>
|
|
15
|
+
<GlobalStyle />
|
|
16
|
+
<MainWrapper>
|
|
17
|
+
<div className="main-chat-container">
|
|
18
|
+
<div className="chat-container">
|
|
19
|
+
<div className="sidebar">
|
|
20
|
+
<SideBar />
|
|
21
|
+
</div>
|
|
22
|
+
<div className="chat">
|
|
23
|
+
<ChatHeader />
|
|
24
|
+
<div className="chat-menu">
|
|
25
|
+
<div className="chat-messages">
|
|
26
|
+
<Chat />
|
|
27
|
+
</div>
|
|
28
|
+
<div className="chat-contact-info">
|
|
29
|
+
<CustomerInfo />
|
|
30
|
+
<InfoAccordion />
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</MainWrapper>
|
|
37
|
+
</>
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export default App;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* eslint-disable import/no-anonymous-default-export */
|
|
2
|
+
import React from "react";
|
|
3
|
+
import BmBanner from "./bannerCards";
|
|
4
|
+
import { BmButton, BmTag } from "..";
|
|
5
|
+
import { BmPrimaryBlue, BmSecondaryYellow } from "../colors";
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
component: BmBanner,
|
|
9
|
+
title: "components/Banner",
|
|
10
|
+
argTypes: {
|
|
11
|
+
border: {
|
|
12
|
+
options: ["dashed", "solid"],
|
|
13
|
+
control: { type: "select" },
|
|
14
|
+
description: "Banner border",
|
|
15
|
+
defaultValue: { summary: "none" },
|
|
16
|
+
},
|
|
17
|
+
bannerBg: {
|
|
18
|
+
description:
|
|
19
|
+
"Banner Background Color, Can be set as 'default', or custom color",
|
|
20
|
+
},
|
|
21
|
+
content: {
|
|
22
|
+
options: ["left", "center", "right"],
|
|
23
|
+
control: { type: "select" },
|
|
24
|
+
description:
|
|
25
|
+
"Aligning content of banner, will not work if closeButton is present",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const SampleBanner = () => {
|
|
31
|
+
return (
|
|
32
|
+
<BmBanner border="dashed" content="center" bannerBg="default">
|
|
33
|
+
<h3>Message Title</h3>
|
|
34
|
+
<p>Message Text</p>
|
|
35
|
+
<div>
|
|
36
|
+
<BmButton size="small">Label</BmButton>
|
|
37
|
+
</div>
|
|
38
|
+
</BmBanner>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const AnnouncementBanner = () => {
|
|
43
|
+
return (
|
|
44
|
+
<BmBanner bannerBg={`${BmPrimaryBlue}`} closeButton>
|
|
45
|
+
<h3 style={{ color: "white" }}>Special Announcement Title</h3>
|
|
46
|
+
<p style={{ color: "white" }}>Message Text</p>
|
|
47
|
+
<div>
|
|
48
|
+
<BmButton variant="neutral" size="small">
|
|
49
|
+
Label
|
|
50
|
+
</BmButton>
|
|
51
|
+
</div>
|
|
52
|
+
</BmBanner>
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const FeatureBanner = () => {
|
|
57
|
+
return (
|
|
58
|
+
<BmBanner bannerBg={`${BmSecondaryYellow}`} closeButton>
|
|
59
|
+
<BmTag variant="light">
|
|
60
|
+
<p>New</p>
|
|
61
|
+
</BmTag>
|
|
62
|
+
<h3 style={{ color: "white" }}>New Feature Title</h3>
|
|
63
|
+
<p style={{ color: "white" }}>Message Text</p>
|
|
64
|
+
<div>
|
|
65
|
+
<BmButton size="small">Label</BmButton>
|
|
66
|
+
</div>
|
|
67
|
+
</BmBanner>
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const GenericBanner = () => {
|
|
72
|
+
return (
|
|
73
|
+
<BmBanner border="solid" bannerBg="default" closeButton>
|
|
74
|
+
<h3>New Feature Title</h3>
|
|
75
|
+
<p>Message Text</p>
|
|
76
|
+
<div>
|
|
77
|
+
<BmButton size="small">Label</BmButton>
|
|
78
|
+
</div>
|
|
79
|
+
</BmBanner>
|
|
80
|
+
|
|
81
|
+
);
|
|
82
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Clear } from "@material-ui/icons";
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { BmIcons } from "..";
|
|
5
|
+
import { BmGrey50, BmPrimaryBlue } from "../colors";
|
|
6
|
+
|
|
7
|
+
const BannerCardWrapper = styled.div`
|
|
8
|
+
display: ${({ closeButton, show }) => {
|
|
9
|
+
if (!closeButton) {
|
|
10
|
+
return "flex";
|
|
11
|
+
}
|
|
12
|
+
return show ? "flex" : "none";
|
|
13
|
+
}};
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
padding: 0.5rem;
|
|
16
|
+
border: 0.071rem
|
|
17
|
+
${({ border }) => {
|
|
18
|
+
if (border === "dashed") return "dashed";
|
|
19
|
+
if (border === "solid") return "solid";
|
|
20
|
+
return "none";
|
|
21
|
+
}}
|
|
22
|
+
${BmPrimaryBlue};
|
|
23
|
+
border-radius: 0.25rem;
|
|
24
|
+
align-items: ${({ content, closeButton }) => {
|
|
25
|
+
if (!closeButton) {
|
|
26
|
+
if (content === "center") return "center";
|
|
27
|
+
if (content === "left") return "flex-start";
|
|
28
|
+
if (content === "right") return "flex-end";
|
|
29
|
+
return "center";
|
|
30
|
+
}
|
|
31
|
+
}};
|
|
32
|
+
background: ${({ bannerBg }) => {
|
|
33
|
+
if (bannerBg === "default") return `${BmGrey50}`;
|
|
34
|
+
if (!bannerBg) return "none";
|
|
35
|
+
return bannerBg;
|
|
36
|
+
}}};
|
|
37
|
+
> *:not(:last-child) {
|
|
38
|
+
margin-bottom: 0.5rem;
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
const BannerComponent = styled.div`
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: row;
|
|
45
|
+
justify-content: space-between;
|
|
46
|
+
`;
|
|
47
|
+
|
|
48
|
+
const BmBanner = ({ closeButton, children, ...rest }) => {
|
|
49
|
+
const [show, setShow] = useState(true);
|
|
50
|
+
return (
|
|
51
|
+
<BannerCardWrapper closeButton={closeButton} {...rest} show={show}>
|
|
52
|
+
{closeButton && (
|
|
53
|
+
<BannerComponent>
|
|
54
|
+
{children[0]}{" "}
|
|
55
|
+
<BmIcons
|
|
56
|
+
icon={<Clear />}
|
|
57
|
+
size="small"
|
|
58
|
+
onClick={() => setShow(!show)}
|
|
59
|
+
/>
|
|
60
|
+
</BannerComponent>
|
|
61
|
+
)}
|
|
62
|
+
{closeButton ? children.slice(1) : children}
|
|
63
|
+
</BannerCardWrapper>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export default BmBanner;
|
|
@@ -24,16 +24,9 @@ export const ModalContent = styled.div`
|
|
|
24
24
|
padding: 1rem;
|
|
25
25
|
margin: auto;
|
|
26
26
|
background: ${BmPrimaryWhite};
|
|
27
|
-
width:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (size === "default") return "500px";
|
|
31
|
-
if (size === "large") return "800px";
|
|
32
|
-
if (size === "xlarge") return "1140px";
|
|
33
|
-
return size;
|
|
34
|
-
}
|
|
35
|
-
return "500px";
|
|
36
|
-
}};
|
|
27
|
+
width: auto;
|
|
28
|
+
max-width: 100%;
|
|
29
|
+
|
|
37
30
|
> *:not(:last-child) {
|
|
38
31
|
margin-bottom: 1rem;
|
|
39
32
|
}
|
|
@@ -7,19 +7,19 @@ export default {
|
|
|
7
7
|
component: BmModal,
|
|
8
8
|
title: "components/Modals",
|
|
9
9
|
argType: {
|
|
10
|
-
size: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
},
|
|
10
|
+
// size: {
|
|
11
|
+
// options: ["small", "default", "large", "xlarge"],
|
|
12
|
+
// control: { type: "select" },
|
|
13
|
+
// description: "Size of the Modal (Optional)",
|
|
14
|
+
// defaultValue: { summary: "default" },
|
|
15
|
+
// },
|
|
16
16
|
closeButton: {
|
|
17
17
|
description:
|
|
18
18
|
"Placed on BmModal.Header component. Displays the close button (X)",
|
|
19
19
|
},
|
|
20
|
-
centered: {
|
|
21
|
-
|
|
22
|
-
},
|
|
20
|
+
// centered: {
|
|
21
|
+
// description: "Centers the modal",
|
|
22
|
+
// },
|
|
23
23
|
show: {
|
|
24
24
|
control: { type: "boolean" },
|
|
25
25
|
description: "Handling the opening and closing of the modal",
|
|
@@ -37,7 +37,7 @@ export const SampleModal = () => {
|
|
|
37
37
|
<div>
|
|
38
38
|
<BmButton onClick={() => setShowModal(!showModal)}>Click Me!</BmButton>
|
|
39
39
|
</div>
|
|
40
|
-
<BmModal show={showModal} onHide={() => setShowModal(false)}
|
|
40
|
+
<BmModal show={showModal} onHide={() => setShowModal(false)}>
|
|
41
41
|
<BmModal.Header closeButton>
|
|
42
42
|
<h2>Header</h2>
|
|
43
43
|
</BmModal.Header>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import React, { useEffect, useState, useRef } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import {
|
|
5
|
+
BmGrey100,
|
|
6
|
+
BmPrimaryBlue,
|
|
7
|
+
BmSecondaryDarkGreen,
|
|
8
|
+
BmPrimaryGold,
|
|
9
|
+
BmSecondaryRed,
|
|
10
|
+
} from "../colors";
|
|
11
|
+
|
|
12
|
+
const xsmall = 1.143;
|
|
13
|
+
const small = 1.429;
|
|
14
|
+
const medium = 1.714;
|
|
15
|
+
const large = 1.714;
|
|
16
|
+
const xlarge = 2.286;
|
|
17
|
+
|
|
18
|
+
let center;
|
|
19
|
+
let radius;
|
|
20
|
+
let circumference;
|
|
21
|
+
let strokeWidth = 5;
|
|
22
|
+
let initialSize;
|
|
23
|
+
|
|
24
|
+
const measurement = (size) => {
|
|
25
|
+
let initialSize = size || large * 14;
|
|
26
|
+
if (size === "xsmall") {
|
|
27
|
+
initialSize = xsmall * 14;
|
|
28
|
+
}
|
|
29
|
+
if (size === "small") {
|
|
30
|
+
initialSize = small * 14;
|
|
31
|
+
}
|
|
32
|
+
if (size === "medium") {
|
|
33
|
+
initialSize = medium * 14;
|
|
34
|
+
}
|
|
35
|
+
if (size === "large") {
|
|
36
|
+
initialSize = large * 14;
|
|
37
|
+
}
|
|
38
|
+
if (size === "xlarge") {
|
|
39
|
+
initialSize = xlarge * 14;
|
|
40
|
+
}
|
|
41
|
+
center = initialSize / 2;
|
|
42
|
+
radius = initialSize / 2 - strokeWidth / 2;
|
|
43
|
+
circumference = 2 * Math.PI * radius;
|
|
44
|
+
return { center, radius, circumference, initialSize };
|
|
45
|
+
};
|
|
46
|
+
const ProgressRingWrapper = styled.svg`
|
|
47
|
+
display: flex;
|
|
48
|
+
width: ${({ size }) => {
|
|
49
|
+
if (size === "xsmall") return "1.143rem";
|
|
50
|
+
if (size === "small") return "1.429rem";
|
|
51
|
+
if (size === "medium") return "1.714rem";
|
|
52
|
+
if (size === "large") return "1.714rem";
|
|
53
|
+
if (size === "xlarge") return "2.286rem";
|
|
54
|
+
if (!size) return "1.714rem";
|
|
55
|
+
return size;
|
|
56
|
+
}};
|
|
57
|
+
height: ${({ size }) => {
|
|
58
|
+
if (size === "xsmall") return "1.143rem";
|
|
59
|
+
if (size === "small") return "1.429rem";
|
|
60
|
+
if (size === "medium") return "1.714rem";
|
|
61
|
+
if (size === "large") return "1.714rem";
|
|
62
|
+
if (size === "xlarge") return "2.286rem";
|
|
63
|
+
if (!size) return "1.714rem";
|
|
64
|
+
return size;
|
|
65
|
+
}};
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
const ProgressRingCircle1 = styled.circle`
|
|
69
|
+
fill: none;
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
const ProgressRingCircle2 = styled.circle`
|
|
73
|
+
fill: none;
|
|
74
|
+
stroke: ${({ variant, progress }) => {
|
|
75
|
+
if (progress) {
|
|
76
|
+
if (variant === "primary") return `${BmPrimaryBlue}`;
|
|
77
|
+
if (variant === "success") return `${BmSecondaryDarkGreen}`;
|
|
78
|
+
if (variant === "warning") return `${BmPrimaryGold}`;
|
|
79
|
+
if (variant === "danger") return `${BmSecondaryRed}`;
|
|
80
|
+
if (!variant) return `${BmPrimaryBlue}`;
|
|
81
|
+
}
|
|
82
|
+
if (!progress) return `${BmGrey100}`;
|
|
83
|
+
}};
|
|
84
|
+
`;
|
|
85
|
+
|
|
86
|
+
const Text = styled.text`
|
|
87
|
+
font-size: ${() => {
|
|
88
|
+
if (initialSize >= 50 && initialSize < 100) {
|
|
89
|
+
return "1rem";
|
|
90
|
+
}
|
|
91
|
+
if (initialSize >= 100) {
|
|
92
|
+
return "2rem";
|
|
93
|
+
}
|
|
94
|
+
return "0.5rem";
|
|
95
|
+
}};
|
|
96
|
+
text-anchor: middle;
|
|
97
|
+
fill: black;
|
|
98
|
+
position: absolute;
|
|
99
|
+
`;
|
|
100
|
+
|
|
101
|
+
const BmProgressRing = (props) => {
|
|
102
|
+
const [offset, setOffset] = useState(0);
|
|
103
|
+
const circleRef = useRef(null);
|
|
104
|
+
const { size, progress, variant } = props;
|
|
105
|
+
|
|
106
|
+
const initialMeasure = measurement(size);
|
|
107
|
+
|
|
108
|
+
circumference = initialMeasure.circumference;
|
|
109
|
+
radius = initialMeasure.radius;
|
|
110
|
+
center = initialMeasure.center;
|
|
111
|
+
initialSize = initialMeasure.initialSize;
|
|
112
|
+
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
const progressOffset = ((100 - progress) / 100) * circumference;
|
|
115
|
+
setOffset(progressOffset);
|
|
116
|
+
|
|
117
|
+
circleRef.current.style = "transition: stroke-dashoffset 850ms ease-in-out";
|
|
118
|
+
}, [setOffset, progress, offset]);
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<>
|
|
122
|
+
<ProgressRingWrapper size={size}>
|
|
123
|
+
<ProgressRingCircle1
|
|
124
|
+
stroke={`${BmGrey100}`}
|
|
125
|
+
cx={center}
|
|
126
|
+
cy={center}
|
|
127
|
+
r={radius}
|
|
128
|
+
strokeWidth={strokeWidth}
|
|
129
|
+
/>
|
|
130
|
+
<ProgressRingCircle2
|
|
131
|
+
progress={progress}
|
|
132
|
+
ref={circleRef}
|
|
133
|
+
variant={variant}
|
|
134
|
+
cx={center}
|
|
135
|
+
cy={center}
|
|
136
|
+
r={radius}
|
|
137
|
+
strokeWidth={strokeWidth}
|
|
138
|
+
strokeDasharray={circumference}
|
|
139
|
+
strokeDashoffset={offset}
|
|
140
|
+
data-testid="progress-bar-bar"
|
|
141
|
+
/>
|
|
142
|
+
<Text x={`${center}`} y={`${center}`} size={size}>
|
|
143
|
+
{progress}%
|
|
144
|
+
</Text>
|
|
145
|
+
</ProgressRingWrapper>
|
|
146
|
+
</>
|
|
147
|
+
);
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
BmProgressRing.propTypes = {
|
|
151
|
+
size: PropTypes.number.isRequired,
|
|
152
|
+
progress: PropTypes.number.isRequired,
|
|
153
|
+
variant: PropTypes.string,
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export default BmProgressRing;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* eslint-disable import/no-anonymous-default-export */
|
|
2
|
+
import React from "react";
|
|
3
|
+
import BmProgressRing from "./progressRing";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
component: BmProgressRing,
|
|
7
|
+
title: "components/ProgressRing",
|
|
8
|
+
argTypes: {
|
|
9
|
+
size: {
|
|
10
|
+
options: ["xsmall", "small", "medium", "large", "xlarge"],
|
|
11
|
+
control: { type: "select" },
|
|
12
|
+
description: "Size of the Progress Ring (Can also be predefined e.g. 50)",
|
|
13
|
+
defaultValue: { summary: "large" },
|
|
14
|
+
},
|
|
15
|
+
progress: {
|
|
16
|
+
description: "Progress Indicator",
|
|
17
|
+
},
|
|
18
|
+
variant: {
|
|
19
|
+
options: ["primary", "success", "warning", "danger"],
|
|
20
|
+
control: { type: "select" },
|
|
21
|
+
description: "Color of the Progress Ring",
|
|
22
|
+
defaultValue: { summary: "xsmall" },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const MainProgressRing = (args) => <BmProgressRing {...args} />;
|
|
28
|
+
|
|
29
|
+
export const BasicProgressRing = MainProgressRing.bind({});
|
|
30
|
+
BasicProgressRing.args = {
|
|
31
|
+
progress: 30,
|
|
32
|
+
variant: "success",
|
|
33
|
+
size: "xlarge"
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const CustomProgressRing = MainProgressRing.bind({});
|
|
37
|
+
CustomProgressRing.args = {
|
|
38
|
+
progress: 50,
|
|
39
|
+
variant: "primary",
|
|
40
|
+
size: "40"
|
|
41
|
+
};
|
|
@@ -18,6 +18,9 @@ import * as BmColors from "./colors";
|
|
|
18
18
|
import { BmLoader } from "./Loader/loader";
|
|
19
19
|
import { BmCheckbox } from "./checkbox";
|
|
20
20
|
import { BmTag } from "../components/Tags/tags";
|
|
21
|
+
import BmBanner from "../components/BannerCard/bannerCards";
|
|
22
|
+
import BmProgressRing from "./ProgressRing/progressRing";
|
|
23
|
+
|
|
21
24
|
import {
|
|
22
25
|
BmTagIcon,
|
|
23
26
|
BmAvatarIcon,
|
|
@@ -72,6 +75,8 @@ export {
|
|
|
72
75
|
BmListBox,
|
|
73
76
|
BmListHeader,
|
|
74
77
|
BmRowLabel,
|
|
78
|
+
BmBanner,
|
|
79
|
+
BmProgressRing,
|
|
75
80
|
// Fix height and if there is dropdown option inside the modal body
|
|
76
81
|
BmModal,
|
|
77
82
|
BmNoteBar,
|