@dxc-technology/halstack-react 0.0.0-7550efd → 0.0.0-757bc34
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/BackgroundColorContext.d.ts +3 -3
- package/BackgroundColorContext.js +6 -18
- package/HalstackContext.d.ts +1347 -6
- package/HalstackContext.js +125 -110
- package/README.md +47 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +116 -157
- package/accordion/Accordion.stories.tsx +101 -125
- package/accordion/Accordion.test.js +25 -41
- package/accordion/types.d.ts +5 -16
- package/accordion-group/AccordionGroup.d.ts +4 -3
- package/accordion-group/AccordionGroup.js +30 -98
- package/accordion-group/AccordionGroup.stories.tsx +94 -67
- package/accordion-group/AccordionGroup.test.js +52 -105
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +31 -0
- package/accordion-group/types.d.ts +11 -16
- package/alert/Alert.js +19 -55
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +29 -46
- package/alert/types.d.ts +5 -5
- package/badge/Badge.js +4 -17
- package/badge/types.d.ts +1 -1
- package/bleed/Bleed.js +13 -21
- package/bleed/Bleed.stories.tsx +1 -0
- package/bleed/types.d.ts +2 -2
- package/box/Box.d.ts +1 -1
- package/box/Box.js +18 -56
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +2 -7
- package/box/types.d.ts +3 -14
- package/bulleted-list/BulletedList.js +11 -35
- package/bulleted-list/BulletedList.stories.tsx +8 -92
- package/bulleted-list/types.d.ts +32 -5
- package/button/Button.d.ts +1 -1
- package/button/Button.js +65 -100
- package/button/Button.stories.tsx +152 -91
- package/button/Button.test.js +18 -17
- package/button/types.d.ts +8 -4
- package/card/Card.d.ts +1 -1
- package/card/Card.js +48 -89
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +11 -22
- package/card/types.d.ts +6 -11
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +141 -178
- package/checkbox/Checkbox.stories.tsx +128 -94
- package/checkbox/Checkbox.test.js +160 -39
- package/checkbox/types.d.ts +11 -3
- package/chip/Chip.js +39 -79
- package/chip/Chip.stories.tsx +121 -26
- package/chip/Chip.test.js +16 -31
- package/chip/types.d.ts +4 -4
- package/common/OpenSans.css +68 -80
- package/common/coreTokens.d.ts +237 -0
- package/common/coreTokens.js +184 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +6 -12
- package/common/variables.d.ts +1499 -0
- package/common/variables.js +1008 -1145
- package/container/Container.d.ts +4 -0
- package/container/Container.js +198 -0
- package/container/Container.stories.tsx +229 -0
- package/container/types.d.ts +74 -0
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +214 -0
- package/date-input/DateInput.js +150 -299
- package/date-input/DateInput.stories.tsx +203 -56
- package/date-input/DateInput.test.js +700 -371
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +115 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +58 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +100 -0
- package/date-input/types.d.ts +72 -15
- package/dialog/Dialog.d.ts +1 -1
- package/dialog/Dialog.js +61 -116
- package/dialog/Dialog.stories.tsx +320 -166
- package/dialog/Dialog.test.js +269 -32
- package/dialog/types.d.ts +18 -25
- package/dropdown/Dropdown.js +72 -125
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +410 -402
- package/dropdown/DropdownMenu.js +20 -37
- package/dropdown/DropdownMenuItem.js +10 -35
- package/dropdown/types.d.ts +17 -19
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +241 -355
- package/file-input/FileInput.stories.tsx +123 -12
- package/file-input/FileInput.test.js +369 -367
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +45 -96
- package/file-input/types.d.ts +25 -8
- package/flex/Flex.d.ts +1 -1
- package/flex/Flex.js +40 -40
- package/flex/Flex.stories.tsx +35 -26
- package/flex/types.d.ts +84 -8
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +53 -104
- package/footer/Footer.stories.tsx +41 -19
- package/footer/Footer.test.js +33 -57
- package/footer/Icons.d.ts +2 -2
- package/footer/Icons.js +2 -7
- package/footer/types.d.ts +21 -28
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +76 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +41 -116
- package/header/Header.stories.tsx +118 -39
- package/header/Header.test.js +13 -26
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +2 -7
- package/header/types.d.ts +5 -19
- package/heading/Heading.js +10 -32
- package/heading/Heading.test.js +71 -88
- package/heading/types.d.ts +7 -7
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +127 -0
- package/image/types.d.ts +72 -0
- package/inset/Inset.js +13 -21
- package/inset/Inset.stories.tsx +2 -1
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +5 -5
- package/layout/ApplicationLayout.js +29 -66
- package/layout/ApplicationLayout.stories.tsx +1 -1
- package/layout/Icons.d.ts +8 -5
- package/layout/Icons.js +51 -59
- package/layout/SidenavContext.d.ts +1 -1
- package/layout/SidenavContext.js +3 -9
- package/layout/types.d.ts +5 -6
- package/link/Link.js +25 -46
- package/link/Link.stories.tsx +60 -0
- package/link/Link.test.js +24 -44
- package/link/types.d.ts +14 -14
- package/main.d.ts +6 -3
- package/main.js +25 -51
- package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
- package/{tabs-nav → nav-tabs}/NavTabs.js +17 -52
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +111 -7
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +37 -44
- package/nav-tabs/Tab.js +117 -0
- package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.d.ts +7 -0
- package/number-input/NumberInput.js +26 -35
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +701 -377
- package/number-input/types.d.ts +11 -5
- package/package.json +37 -40
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +21 -47
- package/paginator/Paginator.js +22 -55
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +253 -226
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.d.ts +3 -4
- package/paragraph/Paragraph.js +6 -17
- package/paragraph/Paragraph.stories.tsx +0 -17
- package/password-input/Icons.d.ts +6 -0
- package/password-input/Icons.js +35 -0
- package/password-input/PasswordInput.js +57 -126
- package/password-input/PasswordInput.stories.tsx +1 -32
- package/password-input/PasswordInput.test.js +160 -142
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +21 -47
- package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
- package/progress-bar/ProgressBar.test.js +36 -53
- package/progress-bar/types.d.ts +4 -3
- package/quick-nav/QuickNav.js +15 -39
- package/quick-nav/QuickNav.stories.tsx +112 -20
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +59 -76
- package/radio-group/RadioGroup.js +59 -105
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +518 -457
- package/radio-group/types.d.ts +10 -10
- package/resultset-table/Icons.d.ts +7 -0
- package/resultset-table/Icons.js +47 -0
- package/resultset-table/ResultsetTable.js +159 -0
- package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
- package/{resultsetTable → resultset-table}/ResultsetTable.test.js +101 -144
- package/{resultsetTable → resultset-table}/types.d.ts +7 -7
- package/resultset-table/types.js +5 -0
- package/select/Icons.d.ts +7 -7
- package/select/Icons.js +1 -5
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +17 -73
- package/select/Option.js +20 -50
- package/select/Select.js +95 -156
- package/select/Select.stories.tsx +497 -153
- package/select/Select.test.js +1934 -1775
- package/select/types.d.ts +16 -17
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +47 -0
- package/sidenav/Sidenav.d.ts +2 -2
- package/sidenav/Sidenav.js +80 -149
- package/sidenav/Sidenav.stories.tsx +165 -63
- package/sidenav/Sidenav.test.js +3 -10
- package/sidenav/types.d.ts +31 -28
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +57 -96
- package/slider/Slider.test.js +108 -104
- package/slider/types.d.ts +7 -3
- package/spinner/Spinner.js +27 -63
- package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
- package/spinner/Spinner.test.js +26 -35
- package/spinner/types.d.ts +3 -3
- package/switch/Switch.d.ts +3 -3
- package/switch/Switch.js +112 -144
- package/switch/Switch.stories.tsx +33 -34
- package/switch/Switch.test.js +70 -102
- package/switch/types.d.ts +8 -3
- package/table/Table.js +7 -26
- package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
- package/table/Table.test.js +3 -8
- package/table/types.d.ts +8 -8
- package/tabs/Tab.js +22 -44
- package/tabs/Tabs.js +59 -141
- package/tabs/Tabs.stories.tsx +45 -5
- package/tabs/Tabs.test.js +66 -123
- package/tabs/types.d.ts +19 -19
- package/tag/Tag.js +29 -61
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +20 -31
- package/tag/types.d.ts +7 -7
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +56 -0
- package/text-input/Suggestion.js +40 -28
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +89 -0
- package/text-input/TextInput.js +272 -441
- package/text-input/TextInput.stories.tsx +266 -274
- package/text-input/TextInput.test.js +1402 -1375
- package/text-input/types.d.ts +43 -16
- package/textarea/Textarea.js +63 -100
- package/textarea/Textarea.stories.tsx +175 -0
- package/textarea/Textarea.test.js +152 -183
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.d.ts +2 -2
- package/toggle-group/ToggleGroup.js +95 -106
- package/toggle-group/ToggleGroup.stories.tsx +49 -4
- package/toggle-group/ToggleGroup.test.js +69 -88
- package/toggle-group/types.d.ts +26 -17
- package/typography/Typography.d.ts +2 -2
- package/typography/Typography.js +15 -123
- package/typography/Typography.stories.tsx +1 -1
- package/typography/types.d.ts +1 -1
- package/useTheme.d.ts +1251 -1
- package/useTheme.js +2 -9
- package/useTranslatedLabels.d.ts +84 -1
- package/useTranslatedLabels.js +1 -7
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +94 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +121 -0
- package/wizard/Wizard.js +16 -51
- package/wizard/Wizard.stories.tsx +20 -0
- package/wizard/Wizard.test.js +54 -81
- package/wizard/types.d.ts +8 -9
- package/card/ice-cream.jpg +0 -0
- package/common/RequiredComponent.js +0 -32
- package/number-input/NumberInputContext.d.ts +0 -4
- package/number-input/NumberInputContext.js +0 -19
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/resultsetTable/ResultsetTable.js +0 -254
- package/slider/Slider.stories.tsx +0 -183
- package/tabs-nav/Tab.js +0 -130
- package/textarea/Textarea.stories.jsx +0 -157
- /package/{resultsetTable → container}/types.js +0 -0
- /package/{tabs-nav → grid}/types.js +0 -0
- /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
- /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
package/button/Button.js
CHANGED
|
@@ -1,103 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports["default"] = void 0;
|
|
11
|
-
|
|
12
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
-
|
|
14
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
-
|
|
18
12
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
19
|
-
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var _utils = require("../common/utils.js");
|
|
23
|
-
|
|
13
|
+
var _variables = require("../common/variables");
|
|
14
|
+
var _utils = require("../common/utils");
|
|
24
15
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
|
-
|
|
26
16
|
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
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); }
|
|
31
|
-
|
|
32
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
|
|
33
|
-
|
|
34
|
-
var sizes = {
|
|
35
|
-
small: "42px",
|
|
36
|
-
medium: "120px",
|
|
37
|
-
large: "240px",
|
|
38
|
-
fillParent: "100%",
|
|
39
|
-
fitContent: "fit-content"
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
var calculateWidth = function calculateWidth(margin, size) {
|
|
43
|
-
if (size === "fillParent") {
|
|
44
|
-
return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return sizes[size];
|
|
48
|
-
};
|
|
49
|
-
|
|
17
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
18
|
+
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); }
|
|
19
|
+
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; }
|
|
50
20
|
var DxcButton = function DxcButton(_ref) {
|
|
51
21
|
var _ref$label = _ref.label,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
22
|
+
label = _ref$label === void 0 ? "" : _ref$label,
|
|
23
|
+
_ref$mode = _ref.mode,
|
|
24
|
+
mode = _ref$mode === void 0 ? "primary" : _ref$mode,
|
|
25
|
+
_ref$disabled = _ref.disabled,
|
|
26
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
27
|
+
_ref$iconPosition = _ref.iconPosition,
|
|
28
|
+
iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
|
|
29
|
+
title = _ref.title,
|
|
30
|
+
_ref$type = _ref.type,
|
|
31
|
+
type = _ref$type === void 0 ? "button" : _ref$type,
|
|
32
|
+
icon = _ref.icon,
|
|
33
|
+
_ref$onClick = _ref.onClick,
|
|
34
|
+
_onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
|
|
35
|
+
margin = _ref.margin,
|
|
36
|
+
_ref$size = _ref.size,
|
|
37
|
+
size = _ref$size === void 0 ? "fitContent" : _ref$size,
|
|
38
|
+
_ref$tabIndex = _ref.tabIndex,
|
|
39
|
+
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
70
40
|
var colorsTheme = (0, _useTheme["default"])();
|
|
71
41
|
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
72
|
-
|
|
73
|
-
var labelComponent = /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
74
|
-
icon: icon,
|
|
75
|
-
iconPosition: iconPosition
|
|
76
|
-
}, label);
|
|
77
|
-
|
|
78
42
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
79
43
|
theme: colorsTheme.button
|
|
80
44
|
}, /*#__PURE__*/_react["default"].createElement(Button, {
|
|
81
|
-
|
|
82
|
-
mode: mode !== "primary" && mode !== "secondary" && mode !== "text" ? "primary" : mode,
|
|
45
|
+
"aria-label": title,
|
|
83
46
|
disabled: disabled,
|
|
84
|
-
|
|
47
|
+
onClick: function onClick() {
|
|
48
|
+
_onClick();
|
|
49
|
+
},
|
|
85
50
|
tabIndex: disabled ? -1 : tabIndex,
|
|
51
|
+
title: title,
|
|
52
|
+
type: type,
|
|
53
|
+
$mode: mode !== "primary" && mode !== "secondary" && mode !== "text" ? "primary" : mode,
|
|
54
|
+
hasLabel: label ? true : false,
|
|
55
|
+
hasIcon: icon ? true : false,
|
|
56
|
+
iconPosition: iconPosition,
|
|
86
57
|
backgroundType: backgroundType,
|
|
87
58
|
size: size,
|
|
88
|
-
margin: margin
|
|
89
|
-
|
|
90
|
-
_onClick();
|
|
91
|
-
}
|
|
92
|
-
}, label && iconPosition === "after" && labelComponent, icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
93
|
-
label: label,
|
|
94
|
-
iconPosition: iconPosition
|
|
95
|
-
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
|
|
59
|
+
margin: margin
|
|
60
|
+
}, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
96
61
|
src: icon
|
|
97
|
-
}) : icon)
|
|
62
|
+
}) : icon)));
|
|
98
63
|
};
|
|
99
|
-
|
|
100
|
-
|
|
64
|
+
var sizes = {
|
|
65
|
+
small: "42px",
|
|
66
|
+
medium: "120px",
|
|
67
|
+
large: "240px",
|
|
68
|
+
fillParent: "100%",
|
|
69
|
+
fitContent: "fit-content"
|
|
70
|
+
};
|
|
71
|
+
var calculateWidth = function calculateWidth(margin, size) {
|
|
72
|
+
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
73
|
+
};
|
|
74
|
+
var getButtonStyles = function getButtonStyles(props) {
|
|
75
|
+
var $mode = props.$mode,
|
|
76
|
+
backgroundType = props.backgroundType,
|
|
77
|
+
disabled = props.disabled;
|
|
78
|
+
return "\n border-radius: ".concat($mode === "primary" ? props.theme.primaryBorderRadius : $mode === "secondary" ? props.theme.secondaryBorderRadius : props.theme.textBorderRadius, ";\n border-width: ").concat($mode === "primary" ? props.theme.primaryBorderThickness : $mode === "secondary" ? props.theme.secondaryBorderThickness : props.theme.textBorderThickness, ";\n border-style: ").concat($mode === "primary" ? props.theme.primaryBorderStyle : $mode === "secondary" ? props.theme.secondaryBorderStyle : props.theme.textBorderStyle, ";\n font-family: ").concat($mode === "primary" ? props.theme.primaryFontFamily : $mode === "secondary" ? props.theme.secondaryFontFamily : props.theme.textFontFamily, ";\n font-size: ").concat($mode === "primary" ? props.theme.primaryFontSize : $mode === "secondary" ? props.theme.secondaryFontSize : props.theme.textFontSize, ";\n font-weight: ").concat($mode === "primary" ? props.theme.primaryFontWeight : $mode === "secondary" ? props.theme.secondaryFontWeight : props.theme.textFontWeight, ";\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryBackgroundColorOnDark : props.theme.primaryBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBackgroundColorOnDark : props.theme.secondaryBackgroundColor : backgroundType === "dark" ? props.theme.textBackgroundColorOnDark : props.theme.textBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryFontColorOnDark : props.theme.primaryFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryFontColorOnDark : props.theme.secondaryFontColor : backgroundType === "dark" ? props.theme.textFontColorOnDark : props.theme.textFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBorderColorOnDark : props.theme.secondaryBorderColor : "", ";\n &:hover {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryHoverBackgroundColorOnDark : props.theme.primaryHoverBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverBackgroundColorOnDark : props.theme.secondaryHoverBackgroundColor : backgroundType === "dark" ? props.theme.textHoverBackgroundColorOnDark : props.theme.textHoverBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryActiveBackgroundColorOnDark : props.theme.primaryActiveBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryActiveBackgroundColorOnDark : props.theme.secondaryActiveBackgroundColor : backgroundType === "dark" ? props.theme.textActiveBackgroundColorOnDark : props.theme.textActiveBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledBackgroundColorOnDark : props.theme.primaryDisabledBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBackgroundColorOnDark : props.theme.secondaryDisabledBackgroundColor : backgroundType === "dark" ? props.theme.textDisabledBackgroundColorOnDark : props.theme.textDisabledBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledFontColorOnDark : props.theme.primaryDisabledFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledFontColorOnDark : props.theme.secondaryDisabledFontColor : backgroundType === "dark" ? props.theme.textDisabledFontColorOnDark : props.theme.textDisabledFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBorderColorOnDark : props.theme.secondaryDisabledBorderColor : "", ";\n }\n ");
|
|
79
|
+
};
|
|
80
|
+
var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: 40px;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px\n ", ";\n }\n\n ", "\n"])), function (props) {
|
|
81
|
+
return props.iconPosition === "after" ? "row" : "row-reverse";
|
|
82
|
+
}, function (props) {
|
|
83
|
+
return calculateWidth(props.margin, props.size);
|
|
84
|
+
}, function (props) {
|
|
101
85
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
102
86
|
}, function (props) {
|
|
103
87
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
|
|
@@ -107,16 +91,14 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
|
|
|
107
91
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
|
|
108
92
|
}, function (props) {
|
|
109
93
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
110
|
-
}, function (props) {
|
|
111
|
-
return calculateWidth(props.margin, props.size);
|
|
112
|
-
}, function (props) {
|
|
113
|
-
return props.theme.paddingLeft;
|
|
114
|
-
}, function (props) {
|
|
115
|
-
return props.theme.paddingRight;
|
|
116
94
|
}, function (props) {
|
|
117
95
|
return props.theme.paddingTop;
|
|
118
96
|
}, function (props) {
|
|
119
97
|
return props.theme.paddingBottom;
|
|
98
|
+
}, function (props) {
|
|
99
|
+
return props.hasIcon && !props.hasLabel ? props.theme.paddingLeft : "calc(".concat(props.theme.paddingLeft, " + 8px)");
|
|
100
|
+
}, function (props) {
|
|
101
|
+
return props.hasIcon && !props.hasLabel ? props.theme.paddingRight : "calc(".concat(props.theme.paddingRight, " + 8px)");
|
|
120
102
|
}, function (props) {
|
|
121
103
|
return props.theme.fontFamily;
|
|
122
104
|
}, function (props) {
|
|
@@ -128,29 +110,12 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
|
|
|
128
110
|
}, function (props) {
|
|
129
111
|
return props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor;
|
|
130
112
|
}, function (props) {
|
|
131
|
-
|
|
132
|
-
backgroundType = props.backgroundType,
|
|
133
|
-
disabled = props.disabled;
|
|
134
|
-
return "\n border-radius: ".concat(props.mode === "primary" ? props.theme.primaryBorderRadius : props.mode === "secondary" ? props.theme.secondaryBorderRadius : props.theme.textBorderRadius, ";\n border-width: ").concat(props.mode === "primary" ? props.theme.primaryBorderThickness : props.mode === "secondary" ? props.theme.secondaryBorderThickness : props.theme.textBorderThickness, ";\n border-style: ").concat(mode === "primary" ? props.theme.primaryBorderStyle : mode === "secondary" ? props.theme.secondaryBorderStyle : props.theme.textBorderStyle, ";\n font-family: ").concat(mode === "primary" ? props.theme.primaryFontFamily : mode === "secondary" ? props.theme.secondaryFontFamily : props.theme.textFontFamily, ";\n font-size: ").concat(mode === "primary" ? props.theme.primaryFontSize : mode === "secondary" ? props.theme.secondaryFontSize : props.theme.textFontSize, ";\n font-weight: ").concat(mode === "primary" ? props.theme.primaryFontWeight : mode === "secondary" ? props.theme.secondaryFontWeight : props.theme.textFontWeight, ";\n background-color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryBackgroundColorOnDark : props.theme.primaryBackgroundColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBackgroundColorOnDark : props.theme.secondaryBackgroundColor : backgroundType === "dark" ? props.theme.textBackgroundColorOnDark : props.theme.textBackgroundColor, ";\n color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryFontColorOnDark : props.theme.primaryFontColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryFontColorOnDark : props.theme.secondaryFontColor : backgroundType === "dark" ? props.theme.textFontColorOnDark : props.theme.textFontColor, ";\n border-color: ").concat(mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBorderColorOnDark : props.theme.secondaryBorderColor : "", ";\n &:hover {\n background-color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryHoverBackgroundColorOnDark : props.theme.primaryHoverBackgroundColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverBackgroundColorOnDark : props.theme.secondaryHoverBackgroundColor : backgroundType === "dark" ? props.theme.textHoverBackgroundColorOnDark : props.theme.textHoverBackgroundColor, ";\n color: ").concat(mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat(mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryActiveBackgroundColorOnDark : props.theme.primaryActiveBackgroundColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryActiveBackgroundColorOnDark : props.theme.secondaryActiveBackgroundColor : backgroundType === "dark" ? props.theme.textActiveBackgroundColorOnDark : props.theme.textActiveBackgroundColor, ";\n color: ").concat(mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n border-color: ").concat(mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledBackgroundColorOnDark : props.theme.primaryDisabledBackgroundColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBackgroundColorOnDark : props.theme.secondaryDisabledBackgroundColor : backgroundType === "dark" ? props.theme.textDisabledBackgroundColorOnDark : props.theme.textDisabledBackgroundColor, ";\n color: ").concat(mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledFontColorOnDark : props.theme.primaryDisabledFontColor : mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledFontColorOnDark : props.theme.secondaryDisabledFontColor : backgroundType === "dark" ? props.theme.textDisabledFontColorOnDark : props.theme.textDisabledFontColor, ";\n border-color: ").concat(mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBorderColorOnDark : props.theme.secondaryDisabledBorderColor : "", ";\n }\n ");
|
|
113
|
+
return getButtonStyles(props);
|
|
135
114
|
});
|
|
136
|
-
|
|
137
|
-
var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n line-height: ", ";\n font-size: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n text-transform: none;\n white-space: nowrap;\n margin-right: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
115
|
+
var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n line-height: ", ";\n font-size: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n text-transform: none;\n white-space: nowrap;\n"])), function (props) {
|
|
138
116
|
return props.theme.labelFontLineHeight;
|
|
139
117
|
}, function (props) {
|
|
140
118
|
return props.theme.fontSize;
|
|
141
|
-
}, function (props) {
|
|
142
|
-
return !props.icon || props.iconPosition === "before" ? "8px" : "0px";
|
|
143
|
-
}, function (props) {
|
|
144
|
-
return !props.icon || props.iconPosition === "after" ? "8px" : "0px";
|
|
145
119
|
});
|
|
146
|
-
|
|
147
|
-
var
|
|
148
|
-
return !props.label ? "0px" : props.iconPosition === "after" && props.label !== "" && "8px" || "8px";
|
|
149
|
-
}, function (props) {
|
|
150
|
-
return !props.label ? "0px" : props.iconPosition === "before" && props.label !== "" && "8px" || "8px";
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
var ButtonIcon = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])));
|
|
154
|
-
|
|
155
|
-
var _default = DxcButton;
|
|
156
|
-
exports["default"] = _default;
|
|
120
|
+
var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n img,\n svg {\n height: 24px;\n width: 24px;\n }\n"])));
|
|
121
|
+
var _default = exports["default"] = DxcButton;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import DxcButton from "./Button";
|
|
3
3
|
import DxcFlex from "./../flex/Flex";
|
|
4
|
-
import { BackgroundColorProvider } from "../BackgroundColorContext";
|
|
5
4
|
import Title from "../../.storybook/components/Title";
|
|
6
5
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
7
|
-
import
|
|
6
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
8
7
|
|
|
9
8
|
export default {
|
|
10
9
|
title: "Button",
|
|
@@ -12,11 +11,50 @@ export default {
|
|
|
12
11
|
};
|
|
13
12
|
|
|
14
13
|
const iconSVG = (
|
|
15
|
-
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
14
|
+
<svg width="24px" height="24px" viewBox="0 0 24 24" fill="currentColor">
|
|
16
15
|
<path d="M0 0h24v24H0z" fill="none" />
|
|
17
16
|
<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" />
|
|
18
17
|
</svg>
|
|
19
18
|
);
|
|
19
|
+
|
|
20
|
+
const facebookIcon = (
|
|
21
|
+
<svg
|
|
22
|
+
version="1.1"
|
|
23
|
+
id="Capa_1"
|
|
24
|
+
x="0px"
|
|
25
|
+
y="0px"
|
|
26
|
+
width="438.536px"
|
|
27
|
+
height="438.536px"
|
|
28
|
+
viewBox="0 0 438.536 438.536"
|
|
29
|
+
fill="currentColor"
|
|
30
|
+
>
|
|
31
|
+
<g>
|
|
32
|
+
<path
|
|
33
|
+
d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
|
|
34
|
+
C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
|
|
35
|
+
h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
|
|
36
|
+
C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
|
|
37
|
+
c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
|
|
38
|
+
c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
|
|
39
|
+
/>
|
|
40
|
+
</g>
|
|
41
|
+
</svg>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const smallIcon = (
|
|
45
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20" fill="currentColor">
|
|
46
|
+
<path d="m7.646 18.333-.313-2.625q-.208-.125-.458-.27-.25-.146-.458-.271l-2.438 1.021-2.354-4.063 2.083-1.583V9.458L1.625 7.875l2.354-4.063 2.438 1.021q.208-.125.458-.27.25-.146.458-.271l.313-2.625h4.708l.313 2.625q.208.125.458.271.25.145.458.27l2.438-1.021 2.354 4.063-2.063 1.583v1.084l2.063 1.583-2.354 4.063-2.438-1.021q-.208.125-.458.271-.25.145-.458.27l-.313 2.625ZM10 12.979q1.229 0 2.104-.875T12.979 10q0-1.229-.875-2.104T10 7.021q-1.229 0-2.104.875T7.021 10q0 1.229.875 2.104t2.104.875Zm0-1.75q-.5 0-.865-.364-.364-.365-.364-.865t.364-.865q.365-.364.865-.364t.865.364q.364.365.364.865t-.364.865q-.365.364-.865.364ZM10.021 10Zm-.854 6.583h1.666l.25-2.166q.605-.167 1.167-.5.562-.334 1.021-.792l2.021.854.833-1.375-1.771-1.354q.104-.292.146-.604.042-.313.042-.646 0-.292-.042-.594t-.125-.635l1.771-1.375-.834-1.375-2.02.875q-.48-.479-1.032-.802-.552-.323-1.156-.49l-.271-2.187H9.167l-.271 2.187q-.604.167-1.156.49-.552.323-1.011.781l-2.021-.854-.833 1.375 1.75 1.354q-.083.333-.125.646-.042.312-.042.604t.042.594q.042.302.125.635l-1.75 1.375.833 1.375 2.021-.854q.459.458 1.011.781.552.323 1.156.49Z" />
|
|
47
|
+
</svg>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const opinionatedTheme = {
|
|
51
|
+
button: {
|
|
52
|
+
baseColor: "#5f249f",
|
|
53
|
+
primaryFontColor: "#ffffff",
|
|
54
|
+
secondaryHoverFontColor: "#ffffff",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
20
58
|
export const Chromatic = () => (
|
|
21
59
|
<>
|
|
22
60
|
<Title title="Primary" theme="light" level={2} />
|
|
@@ -38,7 +76,7 @@ export const Chromatic = () => (
|
|
|
38
76
|
</ExampleContainer>
|
|
39
77
|
<ExampleContainer>
|
|
40
78
|
<Title title="Disabled" theme="light" level={4} />
|
|
41
|
-
<DxcButton label="Primary disabled" disabled />
|
|
79
|
+
<DxcButton label="Primary disabled" disabled icon={iconSVG} />
|
|
42
80
|
</ExampleContainer>
|
|
43
81
|
<ExampleContainer>
|
|
44
82
|
<Title title="With left icon" theme="light" level={4} />
|
|
@@ -52,6 +90,18 @@ export const Chromatic = () => (
|
|
|
52
90
|
<Title title="Only icon" theme="light" level={4} />
|
|
53
91
|
<DxcButton icon={iconSVG} />
|
|
54
92
|
</ExampleContainer>
|
|
93
|
+
<ExampleContainer>
|
|
94
|
+
<Title title="Big icon (SVG)" theme="light" level={4} />
|
|
95
|
+
<DxcButton icon={facebookIcon} />
|
|
96
|
+
</ExampleContainer>
|
|
97
|
+
<ExampleContainer>
|
|
98
|
+
<Title title="Big icon (image)" theme="light" level={4} />
|
|
99
|
+
<DxcButton icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png" />
|
|
100
|
+
</ExampleContainer>
|
|
101
|
+
<ExampleContainer>
|
|
102
|
+
<Title title="Small icon" theme="light" level={4} />
|
|
103
|
+
<DxcButton icon={smallIcon} />
|
|
104
|
+
</ExampleContainer>
|
|
55
105
|
<Title title="Secondary" theme="light" level={2} />
|
|
56
106
|
<ExampleContainer>
|
|
57
107
|
<Title title="Enabled" theme="light" level={4} />
|
|
@@ -71,12 +121,19 @@ export const Chromatic = () => (
|
|
|
71
121
|
</ExampleContainer>
|
|
72
122
|
<ExampleContainer>
|
|
73
123
|
<Title title="Disabled" theme="light" level={4} />
|
|
74
|
-
<DxcButton mode="secondary" disabled label="Secondary disabled" />
|
|
124
|
+
<DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
|
|
75
125
|
</ExampleContainer>
|
|
76
126
|
<ExampleContainer>
|
|
77
127
|
<Title title="With icon" theme="light" level={4} />
|
|
78
128
|
<DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
|
|
79
129
|
</ExampleContainer>
|
|
130
|
+
<ExampleContainer>
|
|
131
|
+
<Title title="Only icon (image)" theme="light" level={4} />
|
|
132
|
+
<DxcButton
|
|
133
|
+
mode="secondary"
|
|
134
|
+
icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
|
|
135
|
+
/>
|
|
136
|
+
</ExampleContainer>
|
|
80
137
|
<Title title="Text" theme="light" level={2} />
|
|
81
138
|
<ExampleContainer>
|
|
82
139
|
<Title title="Enabled" theme="light" level={4} />
|
|
@@ -96,91 +153,19 @@ export const Chromatic = () => (
|
|
|
96
153
|
</ExampleContainer>
|
|
97
154
|
<ExampleContainer>
|
|
98
155
|
<Title title="Disabled" theme="light" level={4} />
|
|
99
|
-
<DxcButton mode="text" label="Text disabled" disabled />
|
|
156
|
+
<DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
|
|
100
157
|
</ExampleContainer>
|
|
101
158
|
<ExampleContainer>
|
|
102
159
|
<Title title="With icon" theme="light" level={4} />
|
|
103
160
|
<DxcButton label="Text" mode="text" icon={iconSVG} />
|
|
104
161
|
</ExampleContainer>
|
|
105
|
-
<
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
113
|
-
<Title title="Hovered" theme="dark" level={4} />
|
|
114
|
-
<DxcButton label="Primary hovered" />
|
|
115
|
-
</ExampleContainer>
|
|
116
|
-
<ExampleContainer pseudoState="pseudo-focus">
|
|
117
|
-
<Title title="Focused" theme="dark" level={4} />
|
|
118
|
-
<DxcButton label="Primary focused" />
|
|
119
|
-
</ExampleContainer>
|
|
120
|
-
<ExampleContainer pseudoState="pseudo-active">
|
|
121
|
-
<Title title="Actived" theme="dark" level={4} />
|
|
122
|
-
<DxcButton label="Primary actived" />
|
|
123
|
-
</ExampleContainer>
|
|
124
|
-
<ExampleContainer>
|
|
125
|
-
<Title title="Disabled" theme="dark" level={4} />
|
|
126
|
-
<DxcButton label="Primary disabled" disabled />
|
|
127
|
-
</ExampleContainer>
|
|
128
|
-
<ExampleContainer>
|
|
129
|
-
<Title title="With icon" theme="dark" level={4} />
|
|
130
|
-
<DxcButton label="Primary" icon={iconSVG} />
|
|
131
|
-
</ExampleContainer>
|
|
132
|
-
<Title title="Secondary" theme="dark" level={2} />
|
|
133
|
-
<ExampleContainer>
|
|
134
|
-
<Title title="Enabled" theme="dark" level={4} />
|
|
135
|
-
<DxcButton mode="secondary" label="Secondary enabled" />
|
|
136
|
-
</ExampleContainer>
|
|
137
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
138
|
-
<Title title="Hovered" theme="dark" level={4} />
|
|
139
|
-
<DxcButton mode="secondary" label="Secondary hovered" />
|
|
140
|
-
</ExampleContainer>
|
|
141
|
-
<ExampleContainer pseudoState="pseudo-focus">
|
|
142
|
-
<Title title="Focused" theme="dark" level={4} />
|
|
143
|
-
<DxcButton mode="secondary" label="Secondary focused" />
|
|
144
|
-
</ExampleContainer>
|
|
145
|
-
<ExampleContainer pseudoState="pseudo-active">
|
|
146
|
-
<Title title="Actived" theme="dark" level={4} />
|
|
147
|
-
<DxcButton mode="secondary" label="Secondary actived" />
|
|
148
|
-
</ExampleContainer>
|
|
149
|
-
<ExampleContainer>
|
|
150
|
-
<Title title="Disabled" theme="dark" level={4} />
|
|
151
|
-
<DxcButton mode="secondary" disabled label="Secondary disabled" />
|
|
152
|
-
</ExampleContainer>
|
|
153
|
-
<ExampleContainer>
|
|
154
|
-
<Title title="With icon" theme="dark" level={4} />
|
|
155
|
-
<DxcButton mode="secondary" label="Primary" icon={iconSVG} />
|
|
156
|
-
</ExampleContainer>
|
|
157
|
-
<Title title="Text" theme="dark" level={2} />
|
|
158
|
-
<ExampleContainer>
|
|
159
|
-
<Title title="Enabled" theme="dark" level={4} />
|
|
160
|
-
<DxcButton mode="text" label="Text enabled" />
|
|
161
|
-
</ExampleContainer>
|
|
162
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
163
|
-
<Title title="Hovered" theme="dark" level={4} />
|
|
164
|
-
<DxcButton mode="text" label="Text hovered" />
|
|
165
|
-
</ExampleContainer>
|
|
166
|
-
<ExampleContainer pseudoState="pseudo-focus">
|
|
167
|
-
<Title title="Focused" theme="dark" level={4} />
|
|
168
|
-
<DxcButton mode="text" label="Text focused" />
|
|
169
|
-
</ExampleContainer>
|
|
170
|
-
<ExampleContainer pseudoState="pseudo-active">
|
|
171
|
-
<Title title="Actived" theme="dark" level={4} />
|
|
172
|
-
<DxcButton mode="text" label="Text actived" />
|
|
173
|
-
</ExampleContainer>
|
|
174
|
-
<ExampleContainer>
|
|
175
|
-
<Title title="Disabled" theme="dark" level={4} />
|
|
176
|
-
<DxcButton mode="text" label="Text disabled" disabled />
|
|
177
|
-
</ExampleContainer>
|
|
178
|
-
<ExampleContainer>
|
|
179
|
-
<Title title="With icon" theme="dark" level={4} />
|
|
180
|
-
<DxcButton mode="text" label="Primary" icon={iconSVG} />
|
|
181
|
-
</ExampleContainer>
|
|
182
|
-
</DarkContainer>
|
|
183
|
-
</BackgroundColorProvider>
|
|
162
|
+
<ExampleContainer>
|
|
163
|
+
<Title title="Only icon (image)" theme="light" level={4} />
|
|
164
|
+
<DxcButton
|
|
165
|
+
mode="text"
|
|
166
|
+
icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
|
|
167
|
+
/>
|
|
168
|
+
</ExampleContainer>
|
|
184
169
|
<Title title="Sizes" theme="light" level={2} />
|
|
185
170
|
<ExampleContainer>
|
|
186
171
|
<Title title="Small size" theme="light" level={4} />
|
|
@@ -188,7 +173,7 @@ export const Chromatic = () => (
|
|
|
188
173
|
</ExampleContainer>
|
|
189
174
|
<ExampleContainer>
|
|
190
175
|
<Title title="Medium size" theme="light" level={4} />
|
|
191
|
-
<DxcButton label="
|
|
176
|
+
<DxcButton label="MediumSize" size="medium" />
|
|
192
177
|
</ExampleContainer>
|
|
193
178
|
<ExampleContainer>
|
|
194
179
|
<Title title="Medium size with ellipsis" theme="light" level={4} />
|
|
@@ -196,11 +181,11 @@ export const Chromatic = () => (
|
|
|
196
181
|
</ExampleContainer>
|
|
197
182
|
<ExampleContainer>
|
|
198
183
|
<Title title="Medium size icon after" theme="light" level={4} />
|
|
199
|
-
<DxcButton label="
|
|
184
|
+
<DxcButton label="Medium" iconPosition="after" icon={iconSVG} size="medium" />
|
|
200
185
|
</ExampleContainer>
|
|
201
186
|
<ExampleContainer>
|
|
202
187
|
<Title title="Medium size icon before" theme="light" level={4} />
|
|
203
|
-
<DxcButton label="
|
|
188
|
+
<DxcButton label="Medium" iconPosition="before" icon={iconSVG} size="medium" />
|
|
204
189
|
</ExampleContainer>
|
|
205
190
|
<ExampleContainer>
|
|
206
191
|
<Title title="Medium size icon after with ellipsis" theme="light" level={4} />
|
|
@@ -220,11 +205,11 @@ export const Chromatic = () => (
|
|
|
220
205
|
</ExampleContainer>
|
|
221
206
|
<ExampleContainer>
|
|
222
207
|
<Title title="Large size icon after" theme="light" level={4} />
|
|
223
|
-
<DxcButton label="
|
|
208
|
+
<DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon={iconSVG} size="large" />
|
|
224
209
|
</ExampleContainer>
|
|
225
210
|
<ExampleContainer>
|
|
226
211
|
<Title title="Large size icon before" theme="light" level={4} />
|
|
227
|
-
<DxcButton label="
|
|
212
|
+
<DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon={iconSVG} size="large" />
|
|
228
213
|
</ExampleContainer>
|
|
229
214
|
<ExampleContainer>
|
|
230
215
|
<Title title="Large size icon after with ellipsis" theme="light" level={4} />
|
|
@@ -273,11 +258,87 @@ export const Chromatic = () => (
|
|
|
273
258
|
</ExampleContainer>
|
|
274
259
|
<Title title="Inside a flex" theme="light" level={2} />
|
|
275
260
|
<ExampleContainer>
|
|
276
|
-
<DxcFlex direction="column" gap="
|
|
261
|
+
<DxcFlex direction="column" gap="1rem">
|
|
277
262
|
<DxcButton label="Button" />
|
|
278
263
|
<DxcButton label="Button" />
|
|
279
264
|
<DxcButton label="Button" />
|
|
280
265
|
</DxcFlex>
|
|
281
266
|
</ExampleContainer>
|
|
267
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
268
|
+
<Title title="Primary" theme="light" level={3} />
|
|
269
|
+
<ExampleContainer>
|
|
270
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
271
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
272
|
+
<DxcButton label="Primary" icon={iconSVG} />
|
|
273
|
+
</HalstackProvider>
|
|
274
|
+
</ExampleContainer>
|
|
275
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
276
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
277
|
+
<DxcButton label="Primary hovered" icon={iconSVG} />
|
|
278
|
+
</ExampleContainer>
|
|
279
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
280
|
+
<Title title="Focused" theme="light" level={4} />
|
|
281
|
+
<DxcButton label="Primary focused" icon={iconSVG} />
|
|
282
|
+
</ExampleContainer>
|
|
283
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
284
|
+
<Title title="Actived" theme="light" level={4} />
|
|
285
|
+
<DxcButton label="Primary actived" icon={iconSVG} />
|
|
286
|
+
</ExampleContainer>
|
|
287
|
+
<ExampleContainer>
|
|
288
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
289
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
290
|
+
<DxcButton label="Primary" icon={iconSVG} disabled />
|
|
291
|
+
</HalstackProvider>
|
|
292
|
+
</ExampleContainer>
|
|
293
|
+
<Title title="Secondary" theme="light" level={3} />
|
|
294
|
+
<ExampleContainer>
|
|
295
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
296
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
297
|
+
<DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
|
|
298
|
+
</HalstackProvider>
|
|
299
|
+
</ExampleContainer>
|
|
300
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
301
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
302
|
+
<DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
|
|
303
|
+
</ExampleContainer>
|
|
304
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
305
|
+
<Title title="Focused" theme="light" level={4} />
|
|
306
|
+
<DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
|
|
307
|
+
</ExampleContainer>
|
|
308
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
309
|
+
<Title title="Actived" theme="light" level={4} />
|
|
310
|
+
<DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
|
|
311
|
+
</ExampleContainer>
|
|
312
|
+
<ExampleContainer>
|
|
313
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
314
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
315
|
+
<DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
|
|
316
|
+
</HalstackProvider>
|
|
317
|
+
</ExampleContainer>
|
|
318
|
+
<Title title="Text" theme="light" level={3} />
|
|
319
|
+
<ExampleContainer>
|
|
320
|
+
<Title title="Enabled" theme="light" level={4} />
|
|
321
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
322
|
+
<DxcButton mode="text" label="Text" icon={iconSVG} />
|
|
323
|
+
</HalstackProvider>
|
|
324
|
+
</ExampleContainer>
|
|
325
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
326
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
327
|
+
<DxcButton mode="text" label="Text hovered" icon={iconSVG} />
|
|
328
|
+
</ExampleContainer>
|
|
329
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
330
|
+
<Title title="Focused" theme="light" level={4} />
|
|
331
|
+
<DxcButton mode="text" label="Text focused" icon={iconSVG} />
|
|
332
|
+
</ExampleContainer>
|
|
333
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
334
|
+
<Title title="Actived" theme="light" level={4} />
|
|
335
|
+
<DxcButton mode="text" label="Text actived" icon={iconSVG} />
|
|
336
|
+
</ExampleContainer>
|
|
337
|
+
<ExampleContainer>
|
|
338
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
339
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
340
|
+
<DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
|
|
341
|
+
</HalstackProvider>
|
|
342
|
+
</ExampleContainer>
|
|
282
343
|
</>
|
|
283
344
|
);
|
package/button/Button.test.js
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
|
|
7
5
|
var _react2 = require("@testing-library/react");
|
|
8
|
-
|
|
9
|
-
var _Button = _interopRequireDefault(require("./Button"));
|
|
10
|
-
|
|
6
|
+
var _Button = _interopRequireDefault(require("./Button.tsx"));
|
|
11
7
|
describe("Button component tests", function () {
|
|
12
8
|
test("Button renders with correct text", function () {
|
|
13
9
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
label: "Button"
|
|
11
|
+
})),
|
|
12
|
+
getByText = _render.getByText;
|
|
18
13
|
expect(getByText("Button")).toBeTruthy();
|
|
19
14
|
});
|
|
20
15
|
test("Calls correct function on click", function () {
|
|
21
16
|
var onClick = jest.fn();
|
|
22
|
-
|
|
23
17
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
label: "Button",
|
|
19
|
+
onClick: onClick
|
|
20
|
+
})),
|
|
21
|
+
getByText = _render2.getByText;
|
|
29
22
|
var button = getByText("Button");
|
|
30
|
-
|
|
31
23
|
_react2.fireEvent.click(button);
|
|
32
|
-
|
|
33
24
|
expect(onClick).toHaveBeenCalled();
|
|
34
25
|
});
|
|
26
|
+
test("Renders with correct accessibility attributes", function () {
|
|
27
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
28
|
+
label: "Home",
|
|
29
|
+
title: "Go home"
|
|
30
|
+
})),
|
|
31
|
+
getByRole = _render3.getByRole;
|
|
32
|
+
var button = getByRole("button");
|
|
33
|
+
expect(button.getAttribute("aria-label")).toBe("Go home");
|
|
34
|
+
expect(button.getAttribute("title")).toBe("Go home");
|
|
35
|
+
});
|
|
35
36
|
});
|