@dxc-technology/halstack-react 0.0.0-7c194f8 → 0.0.0-7c2b794
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/HalstackContext.d.ts +29 -15
- package/HalstackContext.js +1 -1
- package/accordion/Accordion.js +1 -1
- package/accordion-group/AccordionGroup.d.ts +2 -3
- package/accordion-group/AccordionGroup.js +3 -3
- package/accordion-group/AccordionGroupAccordion.js +2 -2
- package/accordion-group/AccordionGroupContext.d.ts +3 -0
- package/accordion-group/AccordionGroupContext.js +8 -0
- package/action-icon/ActionIcon.d.ts +4 -0
- package/action-icon/ActionIcon.js +47 -0
- package/action-icon/ActionIcon.stories.tsx +41 -0
- package/action-icon/ActionIcon.test.js +64 -0
- package/action-icon/types.d.ts +26 -0
- package/action-icon/types.js +5 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +140 -29
- package/badge/Badge.stories.tsx +210 -0
- package/badge/Badge.test.js +30 -0
- package/badge/types.d.ts +52 -3
- package/button/Button.js +3 -2
- package/button/Button.stories.tsx +32 -50
- package/button/Button.test.js +3 -1
- package/button/types.d.ts +1 -1
- package/common/coreTokens.js +2 -2
- package/common/variables.d.ts +29 -15
- package/common/variables.js +36 -22
- package/container/Container.js +1 -1
- package/contextual-menu/ContextualMenu.d.ts +7 -0
- package/contextual-menu/ContextualMenu.js +71 -0
- package/contextual-menu/ContextualMenu.stories.tsx +182 -0
- package/contextual-menu/ContextualMenu.test.js +71 -0
- package/contextual-menu/MenuItemAction.d.ts +4 -0
- package/contextual-menu/MenuItemAction.js +46 -0
- package/contextual-menu/types.d.ts +22 -0
- package/contextual-menu/types.js +5 -0
- package/date-input/types.d.ts +2 -2
- package/divider/Divider.d.ts +4 -0
- package/divider/Divider.js +36 -0
- package/divider/Divider.stories.tsx +223 -0
- package/divider/Divider.test.js +38 -0
- package/divider/types.d.ts +19 -0
- package/divider/types.js +5 -0
- package/dropdown/Dropdown.js +9 -7
- package/dropdown/types.d.ts +1 -1
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +25 -12
- package/footer/Footer.stories.tsx +19 -0
- package/footer/Icons.d.ts +1 -0
- package/footer/Icons.js +65 -1
- package/footer/types.d.ts +6 -0
- package/header/types.d.ts +2 -2
- package/icon/Icon.d.ts +4 -0
- package/icon/Icon.js +33 -0
- package/icon/Icon.stories.tsx +26 -0
- package/icon/types.d.ts +4 -0
- package/icon/types.js +5 -0
- package/image/Image.stories.tsx +3 -1
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +1 -1
- package/main.d.ts +5 -2
- package/main.js +22 -1
- package/nav-tabs/NavTabs.d.ts +1 -2
- package/nav-tabs/NavTabs.js +9 -6
- package/nav-tabs/NavTabs.stories.tsx +6 -4
- package/nav-tabs/NavTabs.test.js +3 -2
- package/nav-tabs/NavTabsContext.d.ts +3 -0
- package/nav-tabs/NavTabsContext.js +8 -0
- package/nav-tabs/Tab.js +8 -7
- package/number-input/NumberInput.d.ts +0 -7
- package/number-input/NumberInput.js +24 -5
- package/number-input/NumberInput.test.js +165 -6
- package/number-input/NumberInputContext.d.ts +3 -0
- package/number-input/NumberInputContext.js +8 -0
- package/number-input/types.d.ts +6 -0
- package/package.json +2 -2
- package/radio-group/RadioGroup.js +1 -1
- package/resultset-table/ResultsetTable.d.ts +4 -1
- package/resultset-table/ResultsetTable.js +13 -6
- package/resultset-table/ResultsetTable.stories.tsx +102 -5
- package/resultset-table/ResultsetTable.test.js +66 -0
- package/resultset-table/types.d.ts +6 -0
- package/select/Option.js +8 -1
- package/select/Select.js +33 -23
- package/select/types.d.ts +2 -2
- package/sidenav/Sidenav.js +3 -2
- package/slider/Slider.js +5 -6
- package/status-light/StatusLight.d.ts +4 -0
- package/status-light/StatusLight.js +51 -0
- package/status-light/StatusLight.stories.tsx +74 -0
- package/status-light/StatusLight.test.js +25 -0
- package/status-light/types.d.ts +17 -0
- package/status-light/types.js +5 -0
- package/table/DropdownTheme.js +62 -0
- package/table/Table.d.ts +6 -2
- package/table/Table.js +82 -8
- package/table/Table.stories.tsx +304 -2
- package/table/Table.test.js +92 -0
- package/table/types.d.ts +42 -0
- package/tabs/Tab.js +7 -4
- package/tabs/Tabs.js +4 -5
- package/tabs/Tabs.stories.tsx +1 -1
- package/text-input/TextInput.js +58 -71
- package/text-input/TextInput.test.js +96 -79
- package/useTheme.d.ts +29 -15
- package/utils/FocusLock.js +3 -0
- package/wizard/types.d.ts +1 -1
- package/common/OpenSans.css +0 -69
- package/common/fonts/OpenSans-Bold.ttf +0 -0
- package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
- package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- package/common/fonts/OpenSans-Italic.ttf +0 -0
- package/common/fonts/OpenSans-Light.ttf +0 -0
- package/common/fonts/OpenSans-LightItalic.ttf +0 -0
- package/common/fonts/OpenSans-Regular.ttf +0 -0
- package/common/fonts/OpenSans-SemiBold.ttf +0 -0
- package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
- /package/{layout → sidenav}/SidenavContext.d.ts +0 -0
- /package/{layout → sidenav}/SidenavContext.js +0 -0
package/HalstackContext.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
38
38
|
disabledIconColor: string;
|
|
39
39
|
iconSize: string;
|
|
40
40
|
iconMarginLeft: string;
|
|
41
|
-
|
|
41
|
+
iconMarginRight: string;
|
|
42
42
|
accordionGroupSeparatorBorderColor: string;
|
|
43
43
|
accordionGroupSeparatorBorderThickness: string;
|
|
44
44
|
accordionGroupSeparatorBorderRadius: string;
|
|
@@ -284,8 +284,14 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
284
284
|
buttonPaddingBottom: string;
|
|
285
285
|
buttonPaddingLeft: string;
|
|
286
286
|
buttonPaddingRight: string;
|
|
287
|
+
buttonHeight: string;
|
|
288
|
+
buttonBorderRadius: string;
|
|
289
|
+
buttonBorderStyle: string;
|
|
290
|
+
buttonBorderThickness: string;
|
|
291
|
+
buttonBorderColor: string;
|
|
287
292
|
disabledColor: string;
|
|
288
293
|
disabledButtonBackgroundColor: string;
|
|
294
|
+
disabledButtonBorderColor: string;
|
|
289
295
|
disabledBorderColor: string;
|
|
290
296
|
optionBackgroundColor: string;
|
|
291
297
|
hoverOptionBackgroundColor: string;
|
|
@@ -848,8 +854,16 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
848
854
|
dataPaddingBottom: string;
|
|
849
855
|
dataPaddingRight: string;
|
|
850
856
|
dataPaddingLeft: string;
|
|
857
|
+
dataPaddingTopReduced: string;
|
|
858
|
+
dataPaddingBottomReduced: string;
|
|
859
|
+
dataPaddingRightReduced: string;
|
|
860
|
+
dataPaddingLeftReduced: string;
|
|
851
861
|
dataTextAlign: string;
|
|
852
862
|
dataTextLineHeight: string;
|
|
863
|
+
firstChildPaddingLeft: string;
|
|
864
|
+
lastChildPaddingRight: string;
|
|
865
|
+
firstChildPaddingLeftReduced: string;
|
|
866
|
+
lastChildPaddingRightReduced: string;
|
|
853
867
|
headerBackgroundColor: string;
|
|
854
868
|
headerBorderRadius: string;
|
|
855
869
|
headerFontFamily: string;
|
|
@@ -862,11 +876,25 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
862
876
|
headerPaddingBottom: string;
|
|
863
877
|
headerPaddingRight: string;
|
|
864
878
|
headerPaddingLeft: string;
|
|
879
|
+
headerPaddingTopReduced: string;
|
|
880
|
+
headerPaddingBottomReduced: string;
|
|
881
|
+
headerPaddingRightReduced: string;
|
|
882
|
+
headerPaddingLeftReduced: string;
|
|
865
883
|
headerTextAlign: string;
|
|
866
884
|
headerTextLineHeight: string;
|
|
867
885
|
scrollBarThumbColor: string;
|
|
868
886
|
scrollBarTrackColor: string;
|
|
869
887
|
sortIconColor: string;
|
|
888
|
+
actionIconColor: string;
|
|
889
|
+
disabledActionIconColor: string;
|
|
890
|
+
hoverActionIconColor: string;
|
|
891
|
+
focusActionIconColor: string;
|
|
892
|
+
activeActionIconColor: string;
|
|
893
|
+
actionBackgroundColor: string;
|
|
894
|
+
disabledActionBackgroundColor: string;
|
|
895
|
+
hoverActionBackgroundColor: string;
|
|
896
|
+
focusActionBorderColor: string;
|
|
897
|
+
activeActionBackgroundColor: string;
|
|
870
898
|
};
|
|
871
899
|
tabs: {
|
|
872
900
|
fontFamily: string;
|
|
@@ -885,7 +913,6 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
885
913
|
disabledFontColor: string;
|
|
886
914
|
disabledIconColor: string;
|
|
887
915
|
disabledFontStyle: string;
|
|
888
|
-
disabledBadgeBackgroundColor: string;
|
|
889
916
|
hoverBackgroundColor: string;
|
|
890
917
|
pressedBackgroundColor: string;
|
|
891
918
|
pressedFontWeight: string;
|
|
@@ -893,19 +920,6 @@ declare const HalstackContext: React.Context<DeepPartial<{
|
|
|
893
920
|
dividerThickness: string;
|
|
894
921
|
focusOutline: string;
|
|
895
922
|
scrollButtonsWidth: string;
|
|
896
|
-
badgeBackgroundColor: string;
|
|
897
|
-
badgeFontFamily: string;
|
|
898
|
-
badgeFontSize: string;
|
|
899
|
-
badgeFontStyle: string;
|
|
900
|
-
badgeFontWeight: string;
|
|
901
|
-
badgeFontColor: string;
|
|
902
|
-
badgeLetterSpacing: string;
|
|
903
|
-
badgeWidth: string;
|
|
904
|
-
badgeHeight: string;
|
|
905
|
-
badgeRadius: string;
|
|
906
|
-
badgeWidthWithNotificationNumber: string;
|
|
907
|
-
badgeHeightWithNotificationNumber: string;
|
|
908
|
-
badgeRadiusWithNotificationNumber: string;
|
|
909
923
|
};
|
|
910
924
|
tag: {
|
|
911
925
|
fontFamily: string;
|
package/HalstackContext.js
CHANGED
|
@@ -306,5 +306,5 @@ var HalstackProvider = exports.HalstackProvider = function HalstackProvider(_ref
|
|
|
306
306
|
value: parsedLabels
|
|
307
307
|
}, children)));
|
|
308
308
|
};
|
|
309
|
-
var Halstack = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n @import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&display=swap\");\n"])));
|
|
309
|
+
var Halstack = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n @import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&display=swap\");\n @import url(\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:FILL@0..1\");\n"])));
|
|
310
310
|
var _default = exports["default"] = HalstackContext;
|
package/accordion/Accordion.js
CHANGED
|
@@ -156,7 +156,7 @@ var AccordionLabel = _styledComponents["default"].span(_templateObject5 || (_tem
|
|
|
156
156
|
var IconContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-left: ", ";\n margin-right: ", ";\n color: ", ";\n\n svg,\n img {\n height: ", ";\n width: ", ";\n }\n"])), function (props) {
|
|
157
157
|
return props.theme.iconMarginLeft;
|
|
158
158
|
}, function (props) {
|
|
159
|
-
return props.theme.
|
|
159
|
+
return props.theme.iconMarginRight;
|
|
160
160
|
}, function (props) {
|
|
161
161
|
return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
|
|
162
162
|
}, function (props) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import AccordionGroupPropsType
|
|
3
|
-
export declare const AccordionGroupAccordionContext: React.Context<AccordionGroupAccordionContextProps>;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import AccordionGroupPropsType from "./types";
|
|
4
3
|
declare const DxcAccordionGroup: {
|
|
5
4
|
({ defaultIndexActive, indexActive, disabled, onActiveChange, margin, children, }: AccordionGroupPropsType): JSX.Element;
|
|
6
5
|
Accordion: ({ ...childProps }: import("./types").AccordionPropsType) => JSX.Element;
|
|
@@ -5,7 +5,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] =
|
|
8
|
+
exports["default"] = void 0;
|
|
9
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -16,12 +16,12 @@ var _utils = require("../common/utils");
|
|
|
16
16
|
var _variables = require("../common/variables");
|
|
17
17
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
18
18
|
var _AccordionGroupAccordion = _interopRequireDefault(require("./AccordionGroupAccordion"));
|
|
19
|
+
var _AccordionGroupContext = require("./AccordionGroupContext");
|
|
19
20
|
var _templateObject;
|
|
20
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
21
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
22
23
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
23
24
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
24
|
-
var AccordionGroupAccordionContext = exports.AccordionGroupAccordionContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
25
25
|
var DxcAccordionGroup = function DxcAccordionGroup(_ref) {
|
|
26
26
|
var defaultIndexActive = _ref.defaultIndexActive,
|
|
27
27
|
indexActive = _ref.indexActive,
|
|
@@ -54,7 +54,7 @@ var DxcAccordionGroup = function DxcAccordionGroup(_ref) {
|
|
|
54
54
|
margin: margin,
|
|
55
55
|
disabled: disabled
|
|
56
56
|
}, _react.Children.map(children, function (accordion, index) {
|
|
57
|
-
return /*#__PURE__*/_react["default"].createElement(AccordionGroupAccordionContext.Provider, {
|
|
57
|
+
return /*#__PURE__*/_react["default"].createElement(_AccordionGroupContext.AccordionGroupAccordionContext.Provider, {
|
|
58
58
|
key: "accordion-".concat(index),
|
|
59
59
|
value: _objectSpread({
|
|
60
60
|
index: index
|
|
@@ -10,12 +10,12 @@ var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _Accordion = _interopRequireDefault(require("../accordion/Accordion"));
|
|
13
|
-
var
|
|
13
|
+
var _AccordionGroupContext = require("./AccordionGroupContext");
|
|
14
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
16
16
|
var AccordionGroupAccordion = function AccordionGroupAccordion(_ref) {
|
|
17
17
|
var childProps = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref), _ref));
|
|
18
|
-
var _useContext = (0, _react.useContext)(
|
|
18
|
+
var _useContext = (0, _react.useContext)(_AccordionGroupContext.AccordionGroupAccordionContext),
|
|
19
19
|
activeIndex = _useContext.activeIndex,
|
|
20
20
|
handlerActiveChange = _useContext.handlerActiveChange,
|
|
21
21
|
disabled = _useContext.disabled,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AccordionGroupAccordionContext = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var AccordionGroupAccordionContext = exports.AccordionGroupAccordionContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
|
|
12
|
+
var _templateObject;
|
|
13
|
+
var DxcActionIcon = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
14
|
+
var _ref$disabled = _ref.disabled,
|
|
15
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
16
|
+
title = _ref.title,
|
|
17
|
+
icon = _ref.icon,
|
|
18
|
+
onClick = _ref.onClick,
|
|
19
|
+
tabIndex = _ref.tabIndex;
|
|
20
|
+
return /*#__PURE__*/_react["default"].createElement(ActionIcon, {
|
|
21
|
+
"aria-label": title,
|
|
22
|
+
disabled: disabled,
|
|
23
|
+
onClick: onClick,
|
|
24
|
+
onMouseDown: function onMouseDown(event) {
|
|
25
|
+
event.stopPropagation();
|
|
26
|
+
},
|
|
27
|
+
tabIndex: tabIndex,
|
|
28
|
+
title: title,
|
|
29
|
+
type: "button",
|
|
30
|
+
ref: ref
|
|
31
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
32
|
+
src: icon
|
|
33
|
+
}) : icon);
|
|
34
|
+
});
|
|
35
|
+
var ActionIcon = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n border-radius: 2px;\n width: 24px;\n height: 24px;\n padding: 0px;\n ", "\n\n box-shadow: 0 0 0 2px transparent;\n background-color: ", ";\n color: ", ";\n\n ", "\n\n img, svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
|
|
36
|
+
return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
|
|
37
|
+
}, function (props) {
|
|
38
|
+
var _props$theme$disabled, _props$theme$actionBa;
|
|
39
|
+
return props.disabled ? (_props$theme$disabled = props.theme.disabledActionBackgroundColor) !== null && _props$theme$disabled !== void 0 ? _props$theme$disabled : _coreTokens["default"].color_transparent : (_props$theme$actionBa = props.theme.actionBackgroundColor) !== null && _props$theme$actionBa !== void 0 ? _props$theme$actionBa : _coreTokens["default"].color_transparent;
|
|
40
|
+
}, function (props) {
|
|
41
|
+
var _props$theme$disabled2, _props$theme$actionIc;
|
|
42
|
+
return props.disabled ? (_props$theme$disabled2 = props.theme.disabledActionIconColor) !== null && _props$theme$disabled2 !== void 0 ? _props$theme$disabled2 : _coreTokens["default"].color_grey_500 : (_props$theme$actionIc = props.theme.actionIconColor) !== null && _props$theme$actionIc !== void 0 ? _props$theme$actionIc : _coreTokens["default"].color_black;
|
|
43
|
+
}, function (props) {
|
|
44
|
+
var _props$theme$focusAct, _props$theme$focusAct2, _props$theme$hoverAct, _props$theme$hoverAct2, _props$theme$activeAc, _props$theme$activeAc2;
|
|
45
|
+
return !props.disabled && "\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ".concat((_props$theme$focusAct = props.theme.focusActionBorderColor) !== null && _props$theme$focusAct !== void 0 ? _props$theme$focusAct : _coreTokens["default"].color_blue_600, ";\n color: ").concat((_props$theme$focusAct2 = props.theme.focusActionIconColor) !== null && _props$theme$focusAct2 !== void 0 ? _props$theme$focusAct2 : _coreTokens["default"].color_black, ";\n }\n &:hover {\n background-color: ").concat((_props$theme$hoverAct = props.theme.hoverActionBackgroundColor) !== null && _props$theme$hoverAct !== void 0 ? _props$theme$hoverAct : _coreTokens["default"].color_grey_100, ";\n color: ").concat((_props$theme$hoverAct2 = props.theme.hoverActionIconColor) !== null && _props$theme$hoverAct2 !== void 0 ? _props$theme$hoverAct2 : _coreTokens["default"].color_black, ";\n }\n &:active {\n background-color: ").concat((_props$theme$activeAc = props.theme.activeActionBackgroundColor) !== null && _props$theme$activeAc !== void 0 ? _props$theme$activeAc : _coreTokens["default"].color_grey_300, ";\n color: ").concat((_props$theme$activeAc2 = props.theme.activeActionIconColor) !== null && _props$theme$activeAc2 !== void 0 ? _props$theme$activeAc2 : _coreTokens["default"].color_black, ";\n }\n ");
|
|
46
|
+
});
|
|
47
|
+
var _default = exports["default"] = DxcActionIcon;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Title from "../../.storybook/components/Title";
|
|
3
|
+
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
4
|
+
import DxcActionIcon from "./ActionIcon";
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: "Action Icon ",
|
|
8
|
+
component: DxcActionIcon,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const iconSVG = (
|
|
12
|
+
<svg width="24px" height="24px" viewBox="0 0 24 24" fill="currentColor">
|
|
13
|
+
<path d="M0 0h24v24H0z" fill="none" />
|
|
14
|
+
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
|
|
15
|
+
</svg>
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export const Chromatic = () => (
|
|
19
|
+
<>
|
|
20
|
+
<Title title="Default" theme="light" level={2} />
|
|
21
|
+
<ExampleContainer>
|
|
22
|
+
<DxcActionIcon icon={"https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"} title="Favourite" />
|
|
23
|
+
</ExampleContainer>
|
|
24
|
+
<Title title="Disabled" theme="light" level={2} />
|
|
25
|
+
<ExampleContainer>
|
|
26
|
+
<DxcActionIcon icon={iconSVG} title="Favourite" disabled />
|
|
27
|
+
</ExampleContainer>
|
|
28
|
+
<Title title="Hover" theme="light" level={2} />
|
|
29
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
30
|
+
<DxcActionIcon icon={iconSVG} title="Favourite" />
|
|
31
|
+
</ExampleContainer>
|
|
32
|
+
<Title title="Focus" theme="light" level={2} />
|
|
33
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
34
|
+
<DxcActionIcon icon={iconSVG} title="Favourite" />
|
|
35
|
+
</ExampleContainer>
|
|
36
|
+
<Title title="Active" theme="light" level={2} />
|
|
37
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
38
|
+
<DxcActionIcon icon={iconSVG} title="Favourite" />
|
|
39
|
+
</ExampleContainer>
|
|
40
|
+
</>
|
|
41
|
+
);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _ActionIcon = _interopRequireDefault(require("./ActionIcon.tsx"));
|
|
7
|
+
var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
8
|
+
width: "24px",
|
|
9
|
+
height: "24px",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
fill: "currentColor"
|
|
12
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
13
|
+
d: "M0 0h24v24H0z",
|
|
14
|
+
fill: "none"
|
|
15
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
16
|
+
d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
|
|
17
|
+
}));
|
|
18
|
+
describe("Action icon component tests", function () {
|
|
19
|
+
test("Action icon renders with correct text", function () {
|
|
20
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
21
|
+
icon: iconSVG,
|
|
22
|
+
title: "favourite"
|
|
23
|
+
})),
|
|
24
|
+
getByTitle = _render.getByTitle;
|
|
25
|
+
expect(getByTitle("favourite")).toBeTruthy();
|
|
26
|
+
});
|
|
27
|
+
test("Calls correct function on click", function () {
|
|
28
|
+
var onClick = jest.fn();
|
|
29
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
30
|
+
icon: iconSVG,
|
|
31
|
+
title: "favourite",
|
|
32
|
+
onClick: onClick
|
|
33
|
+
})),
|
|
34
|
+
getByTitle = _render2.getByTitle;
|
|
35
|
+
var action = getByTitle("favourite");
|
|
36
|
+
_react2.fireEvent.click(action);
|
|
37
|
+
expect(onClick).toHaveBeenCalled();
|
|
38
|
+
});
|
|
39
|
+
test("On click is not called when disabled", function () {
|
|
40
|
+
var onClick = jest.fn();
|
|
41
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
42
|
+
disabled: true,
|
|
43
|
+
icon: iconSVG,
|
|
44
|
+
title: "favourite",
|
|
45
|
+
onClick: onClick
|
|
46
|
+
})),
|
|
47
|
+
getByTitle = _render3.getByTitle;
|
|
48
|
+
var action = getByTitle("favourite");
|
|
49
|
+
_react2.fireEvent.click(action);
|
|
50
|
+
expect(onClick).toHaveBeenCalledTimes(0);
|
|
51
|
+
});
|
|
52
|
+
test("Renders with correct accessibility attributes", function () {
|
|
53
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
54
|
+
icon: iconSVG,
|
|
55
|
+
title: "favourite",
|
|
56
|
+
tabIndex: 1
|
|
57
|
+
})),
|
|
58
|
+
getByRole = _render4.getByRole;
|
|
59
|
+
var button = getByRole("button");
|
|
60
|
+
expect(button.getAttribute("aria-label")).toBe("favourite");
|
|
61
|
+
expect(button.getAttribute("title")).toBe("favourite");
|
|
62
|
+
expect(button.getAttribute("tabindex")).toBe("1");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
3
|
+
type Props = {
|
|
4
|
+
/**
|
|
5
|
+
* If true, the component will be disabled.
|
|
6
|
+
*/
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Value for the HTML properties title and aria-label.
|
|
10
|
+
*/
|
|
11
|
+
title: string;
|
|
12
|
+
/**
|
|
13
|
+
* Element or path used as the icon that will be placed next to the label.
|
|
14
|
+
*/
|
|
15
|
+
icon: string | SVG;
|
|
16
|
+
/**
|
|
17
|
+
* This function will be called when the user clicks the button.
|
|
18
|
+
*/
|
|
19
|
+
onClick?: () => void;
|
|
20
|
+
/**
|
|
21
|
+
* Value of the tabindex attribute.
|
|
22
|
+
*/
|
|
23
|
+
tabIndex?: number;
|
|
24
|
+
};
|
|
25
|
+
export type RefType = HTMLButtonElement;
|
|
26
|
+
export default Props;
|
package/badge/Badge.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import BadgePropsType from "./types";
|
|
3
|
-
declare const DxcBadge: ({
|
|
3
|
+
declare const DxcBadge: ({ label, title, mode, color, icon, notificationLimit, size, }: BadgePropsType) => JSX.Element;
|
|
4
4
|
export default DxcBadge;
|
package/badge/Badge.js
CHANGED
|
@@ -1,48 +1,159 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = void 0;
|
|
9
8
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
9
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
var _styledComponents =
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
var _Flex = _interopRequireDefault(require("../flex/Flex"));
|
|
12
|
+
var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
|
|
13
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
14
|
+
var contextualColorMap = {
|
|
15
|
+
grey: {
|
|
16
|
+
background: _coreTokens["default"].color_grey_200,
|
|
17
|
+
text: _coreTokens["default"].color_grey_900
|
|
18
|
+
},
|
|
19
|
+
blue: {
|
|
20
|
+
background: _coreTokens["default"].color_blue_200,
|
|
21
|
+
text: _coreTokens["default"].color_blue_900
|
|
22
|
+
},
|
|
23
|
+
green: {
|
|
24
|
+
background: _coreTokens["default"].color_green_200,
|
|
25
|
+
text: _coreTokens["default"].color_green_900
|
|
26
|
+
},
|
|
27
|
+
orange: {
|
|
28
|
+
background: _coreTokens["default"].color_orange_200,
|
|
29
|
+
text: _coreTokens["default"].color_orange_900
|
|
30
|
+
},
|
|
31
|
+
red: {
|
|
32
|
+
background: _coreTokens["default"].color_red_200,
|
|
33
|
+
text: _coreTokens["default"].color_red_900
|
|
34
|
+
},
|
|
35
|
+
yellow: {
|
|
36
|
+
background: _coreTokens["default"].color_yellow_200,
|
|
37
|
+
text: _coreTokens["default"].color_yellow_900
|
|
38
|
+
},
|
|
39
|
+
purple: {
|
|
40
|
+
background: _coreTokens["default"].color_purple_200,
|
|
41
|
+
text: _coreTokens["default"].color_purple_900
|
|
42
|
+
}
|
|
26
43
|
};
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
var sizeMap = {
|
|
45
|
+
small: {
|
|
46
|
+
height: "20px",
|
|
47
|
+
width: "20px",
|
|
48
|
+
minWidth: "20px",
|
|
49
|
+
fontSize: _coreTokens["default"].type_scale_01,
|
|
50
|
+
borderRadius: _coreTokens["default"].spacing_12,
|
|
51
|
+
iconSize: "14px",
|
|
52
|
+
padding: {
|
|
53
|
+
contextual: "".concat(_coreTokens["default"].spacing_4),
|
|
54
|
+
notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_4)
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
medium: {
|
|
58
|
+
height: "24px",
|
|
59
|
+
width: "24px",
|
|
60
|
+
minWidth: "24px",
|
|
61
|
+
fontSize: _coreTokens["default"].type_scale_02,
|
|
62
|
+
borderRadius: _coreTokens["default"].spacing_12,
|
|
63
|
+
iconSize: "16px",
|
|
64
|
+
padding: {
|
|
65
|
+
contextual: "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8),
|
|
66
|
+
notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_4)
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
large: {
|
|
70
|
+
height: "32px",
|
|
71
|
+
width: "32px",
|
|
72
|
+
minWidth: "32px",
|
|
73
|
+
fontSize: _coreTokens["default"].type_scale_04,
|
|
74
|
+
borderRadius: _coreTokens["default"].spacing_24,
|
|
75
|
+
iconSize: "24px",
|
|
76
|
+
padding: {
|
|
77
|
+
contextual: "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8),
|
|
78
|
+
notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_8)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
var Label = function Label(_ref) {
|
|
83
|
+
var label = _ref.label,
|
|
84
|
+
notificationLimit = _ref.notificationLimit,
|
|
85
|
+
size = _ref.size;
|
|
86
|
+
return /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
87
|
+
size: size
|
|
88
|
+
}, typeof label === "number" ? label > notificationLimit ? "+" + notificationLimit : label : label);
|
|
89
|
+
};
|
|
90
|
+
var DxcBadge = function DxcBadge(_ref2) {
|
|
91
|
+
var label = _ref2.label,
|
|
92
|
+
title = _ref2.title,
|
|
93
|
+
_ref2$mode = _ref2.mode,
|
|
94
|
+
mode = _ref2$mode === void 0 ? "contextual" : _ref2$mode,
|
|
95
|
+
_ref2$color = _ref2.color,
|
|
96
|
+
color = _ref2$color === void 0 ? "grey" : _ref2$color,
|
|
97
|
+
icon = _ref2.icon,
|
|
98
|
+
_ref2$notificationLim = _ref2.notificationLimit,
|
|
99
|
+
notificationLimit = _ref2$notificationLim === void 0 ? 99 : _ref2$notificationLim,
|
|
100
|
+
_ref2$size = _ref2.size,
|
|
101
|
+
size = _ref2$size === void 0 ? "medium" : _ref2$size;
|
|
102
|
+
return /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
|
|
103
|
+
label: label,
|
|
104
|
+
mode: mode,
|
|
105
|
+
color: mode === "contextual" && color || undefined,
|
|
106
|
+
size: size,
|
|
107
|
+
title: title,
|
|
108
|
+
"aria-label": title
|
|
109
|
+
}, mode === "contextual" && /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
|
|
110
|
+
gap: "0.125rem",
|
|
111
|
+
alignItems: "center"
|
|
112
|
+
}, icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
113
|
+
size: size
|
|
114
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
115
|
+
src: icon,
|
|
116
|
+
alt: title
|
|
117
|
+
}) : icon), /*#__PURE__*/_react["default"].createElement(Label, {
|
|
118
|
+
label: label,
|
|
119
|
+
notificationLimit: notificationLimit,
|
|
120
|
+
size: size
|
|
121
|
+
})) || /*#__PURE__*/_react["default"].createElement(Label, {
|
|
122
|
+
label: label,
|
|
123
|
+
notificationLimit: notificationLimit,
|
|
124
|
+
size: size
|
|
125
|
+
}));
|
|
126
|
+
};
|
|
127
|
+
var getColor = function getColor(mode, color) {
|
|
128
|
+
return mode === "contextual" ? contextualColorMap[color].text : _coreTokens["default"].color_white;
|
|
129
|
+
};
|
|
130
|
+
var getBackgroundColor = function getBackgroundColor(mode, color) {
|
|
131
|
+
return mode === "contextual" ? contextualColorMap[color].background : _coreTokens["default"].color_red_700;
|
|
132
|
+
};
|
|
133
|
+
var getPadding = function getPadding(mode, size) {
|
|
134
|
+
return mode === "contextual" ? sizeMap[size].padding.contextual : sizeMap[size].padding.notification;
|
|
135
|
+
};
|
|
136
|
+
var BadgeContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n background-color: ", ";\n border-radius: ", ";\n width: ", ";\n min-width: ", ";\n height: ", ";\n padding: ", ";\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n"])), function (props) {
|
|
137
|
+
return getColor(props.mode, props.color);
|
|
33
138
|
}, function (props) {
|
|
34
|
-
return props.
|
|
139
|
+
return getBackgroundColor(props.mode, props.color);
|
|
35
140
|
}, function (props) {
|
|
36
|
-
return props.
|
|
141
|
+
return sizeMap[props.size].borderRadius;
|
|
37
142
|
}, function (props) {
|
|
38
|
-
return props.
|
|
143
|
+
return !props.label && props.mode === "notification" ? sizeMap[props.size].width : "fit-content";
|
|
39
144
|
}, function (props) {
|
|
40
|
-
return props.
|
|
145
|
+
return props.mode === "notification" && sizeMap[props.size].minWidth;
|
|
41
146
|
}, function (props) {
|
|
42
|
-
return props.
|
|
147
|
+
return sizeMap[props.size].height;
|
|
43
148
|
}, function (props) {
|
|
44
|
-
return props.
|
|
149
|
+
return props.label ? getPadding(props.mode, props.size) : "";
|
|
150
|
+
});
|
|
151
|
+
var IconContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n img,\n svg {\n height: ", ";\n width: ", ";\n }\n"])), function (props) {
|
|
152
|
+
return sizeMap[props.size].iconSize;
|
|
45
153
|
}, function (props) {
|
|
46
|
-
return props.
|
|
154
|
+
return sizeMap[props.size].iconSize;
|
|
47
155
|
});
|
|
156
|
+
var LabelContainer = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n white-space: nowrap;\n"])), _coreTokens["default"].type_sans, function (props) {
|
|
157
|
+
return sizeMap[props.size].fontSize;
|
|
158
|
+
}, _coreTokens["default"].type_semibold);
|
|
48
159
|
var _default = exports["default"] = DxcBadge;
|