carbon-react 102.0.0 → 102.3.0
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/lib/__internal__/label/icon-wrapper.style.js +1 -8
- package/lib/__internal__/label/label.style.js +13 -24
- package/lib/components/button-toggle/button-toggle-input.component.js +4 -7
- package/lib/components/button-toggle/button-toggle.component.js +28 -1
- package/lib/components/button-toggle/button-toggle.d.ts +10 -0
- package/lib/components/button-toggle/button-toggle.style.js +5 -2
- package/lib/components/button-toggle-group/button-toggle-group.component.js +1 -1
- package/lib/components/link/link.style.js +10 -10
- package/lib/components/radio-button/radio-button.style.js +4 -5
- package/package.json +8 -4
|
@@ -11,8 +11,6 @@ var _validationIcon = _interopRequireDefault(require("../validations/validation-
|
|
|
11
11
|
|
|
12
12
|
var _help = _interopRequireDefault(require("../../components/help/help.style"));
|
|
13
13
|
|
|
14
|
-
var _base = _interopRequireDefault(require("../../style/themes/base"));
|
|
15
|
-
|
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
15
|
|
|
18
16
|
const IconWrapperStyle = _styledComponents.default.div`
|
|
@@ -27,17 +25,12 @@ const IconWrapperStyle = _styledComponents.default.div`
|
|
|
27
25
|
vertical-align: top;
|
|
28
26
|
|
|
29
27
|
:focus {
|
|
30
|
-
outline:
|
|
31
|
-
theme
|
|
32
|
-
}) => `2px solid ${theme.colors.focus}`};
|
|
28
|
+
outline: 2px solid var(--colorsSemanticFocus500);
|
|
33
29
|
}
|
|
34
30
|
|
|
35
31
|
${_validationIcon.default}, ${_help.default} {
|
|
36
32
|
position: static;
|
|
37
33
|
}
|
|
38
34
|
`;
|
|
39
|
-
IconWrapperStyle.defaultProps = {
|
|
40
|
-
theme: _base.default
|
|
41
|
-
};
|
|
42
35
|
var _default = IconWrapperStyle;
|
|
43
36
|
exports.default = _default;
|
|
@@ -9,8 +9,6 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
-
var _base = _interopRequireDefault(require("../../style/themes/base"));
|
|
13
|
-
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
13
|
|
|
16
14
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
@@ -18,36 +16,30 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
|
|
|
18
16
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
19
17
|
|
|
20
18
|
const LabelStyle = _styledComponents.default.label`
|
|
21
|
-
color:
|
|
22
|
-
theme
|
|
23
|
-
}) => theme.text.color};
|
|
19
|
+
color: var(--colorsYin090);
|
|
24
20
|
display: block;
|
|
25
|
-
font-weight: 600;
|
|
21
|
+
font-weight: 600; //TODO: (tokens) use token var(--fontWeights500)
|
|
26
22
|
|
|
27
23
|
${({
|
|
28
|
-
isRequired
|
|
29
|
-
theme
|
|
24
|
+
isRequired
|
|
30
25
|
}) => isRequired && (0, _styledComponents.css)`
|
|
31
26
|
::after {
|
|
32
27
|
content: "*";
|
|
33
|
-
color:
|
|
28
|
+
color: var(--colorsSemanticNegative500);
|
|
34
29
|
font-weight: 700;
|
|
35
|
-
margin-left:
|
|
30
|
+
margin-left: var(--spacing100);
|
|
36
31
|
}
|
|
37
32
|
`}
|
|
38
33
|
|
|
39
34
|
${({
|
|
40
|
-
disabled
|
|
41
|
-
theme
|
|
35
|
+
disabled
|
|
42
36
|
}) => disabled && (0, _styledComponents.css)`
|
|
43
|
-
color:
|
|
37
|
+
color: var(--colorsYin030);
|
|
44
38
|
`}
|
|
45
39
|
`;
|
|
46
|
-
LabelStyle.defaultProps = {
|
|
47
|
-
theme: _base.default
|
|
48
|
-
};
|
|
49
40
|
LabelStyle.propTypes = {
|
|
50
|
-
disabled: _propTypes.default.bool
|
|
41
|
+
disabled: _propTypes.default.bool,
|
|
42
|
+
isRequired: _propTypes.default.bool
|
|
51
43
|
};
|
|
52
44
|
const StyledLabelContainer = _styledComponents.default.div`
|
|
53
45
|
display: flex;
|
|
@@ -59,16 +51,15 @@ const StyledLabelContainer = _styledComponents.default.div`
|
|
|
59
51
|
inline,
|
|
60
52
|
pr,
|
|
61
53
|
pl,
|
|
62
|
-
width
|
|
63
|
-
theme
|
|
54
|
+
width
|
|
64
55
|
}) => inline && (0, _styledComponents.css)`
|
|
65
56
|
box-sizing: border-box;
|
|
66
57
|
margin-bottom: 0;
|
|
67
58
|
${pr && (0, _styledComponents.css)`
|
|
68
|
-
padding-right: ${pr
|
|
59
|
+
padding-right: var(${pr === 1 ? "--spacing100" : "--spacing200"});
|
|
69
60
|
`};
|
|
70
61
|
${pl && (0, _styledComponents.css)`
|
|
71
|
-
padding-left: ${pl
|
|
62
|
+
padding-left: var(${pl === 1 ? "--spacing100" : "--spacing200"});
|
|
72
63
|
`};
|
|
73
64
|
justify-content: ${align === "right" ? "flex-end" : "flex-start"};
|
|
74
65
|
width: ${width === 0 ? StyledLabelContainer.defaultProps.width : width}%;
|
|
@@ -79,7 +70,7 @@ const StyledLabelContainer = _styledComponents.default.div`
|
|
|
79
70
|
}) => optional && (0, _styledComponents.css)`
|
|
80
71
|
::after {
|
|
81
72
|
content: "(optional)";
|
|
82
|
-
font-weight: 350;
|
|
73
|
+
font-weight: 350; //TODO: (tokens) use token var(--fontWeights400)
|
|
83
74
|
margin-left: 4px;
|
|
84
75
|
}
|
|
85
76
|
`}
|
|
@@ -87,14 +78,12 @@ const StyledLabelContainer = _styledComponents.default.div`
|
|
|
87
78
|
exports.StyledLabelContainer = StyledLabelContainer;
|
|
88
79
|
StyledLabelContainer.defaultProps = {
|
|
89
80
|
align: "right",
|
|
90
|
-
theme: _base.default,
|
|
91
81
|
width: 30
|
|
92
82
|
};
|
|
93
83
|
StyledLabelContainer.propTypes = {
|
|
94
84
|
align: _propTypes.default.oneOf(["left", "right"]),
|
|
95
85
|
inline: _propTypes.default.bool,
|
|
96
86
|
width: _propTypes.default.number,
|
|
97
|
-
readOnly: _propTypes.default.bool,
|
|
98
87
|
pr: _propTypes.default.number,
|
|
99
88
|
pl: _propTypes.default.number
|
|
100
89
|
};
|
|
@@ -19,6 +19,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
|
|
|
19
19
|
|
|
20
20
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
21
21
|
|
|
22
|
+
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); }
|
|
23
|
+
|
|
22
24
|
const ButtonToggleInput = /*#__PURE__*/_react.default.forwardRef((props, forwardRef) => {
|
|
23
25
|
const {
|
|
24
26
|
onFocus,
|
|
@@ -41,18 +43,13 @@ const ButtonToggleInput = /*#__PURE__*/_react.default.forwardRef((props, forward
|
|
|
41
43
|
if (onFocus) onFocus(ev);
|
|
42
44
|
};
|
|
43
45
|
|
|
44
|
-
return /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggleInput, {
|
|
46
|
+
return /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggleInput, _extends({}, props, {
|
|
45
47
|
type: "radio",
|
|
46
|
-
name: props.name,
|
|
47
48
|
id: props.guid,
|
|
48
|
-
disabled: props.disabled,
|
|
49
|
-
checked: props.checked,
|
|
50
|
-
onChange: props.onChange,
|
|
51
49
|
onBlur: handleBlur,
|
|
52
50
|
onFocus: handleFocus,
|
|
53
|
-
value: props.value,
|
|
54
51
|
ref: forwardRef
|
|
55
|
-
});
|
|
52
|
+
}));
|
|
56
53
|
});
|
|
57
54
|
|
|
58
55
|
ButtonToggleInput.propTypes = {
|
|
@@ -27,10 +27,15 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
27
27
|
|
|
28
28
|
const ButtonToggle = props => {
|
|
29
29
|
const {
|
|
30
|
+
"aria-label": ariaLabel,
|
|
31
|
+
"aria-labelledby": ariaLabelledBy,
|
|
30
32
|
buttonIcon,
|
|
31
33
|
buttonIconSize,
|
|
32
34
|
checked,
|
|
33
35
|
children,
|
|
36
|
+
"data-component": dataComponent,
|
|
37
|
+
"data-element": dataElement,
|
|
38
|
+
"data-role": dataRole,
|
|
34
39
|
disabled,
|
|
35
40
|
grouped,
|
|
36
41
|
name,
|
|
@@ -50,8 +55,10 @@ const ButtonToggle = props => {
|
|
|
50
55
|
|
|
51
56
|
if (buttonIcon) {
|
|
52
57
|
icon = /*#__PURE__*/_react.default.createElement(_buttonToggleIcon.default, {
|
|
58
|
+
"aria-hidden": true,
|
|
53
59
|
buttonIcon: buttonIcon,
|
|
54
60
|
buttonIconSize: buttonIconSize,
|
|
61
|
+
hasNoContent: !children,
|
|
55
62
|
disabled: disabled
|
|
56
63
|
});
|
|
57
64
|
}
|
|
@@ -61,10 +68,15 @@ const ButtonToggle = props => {
|
|
|
61
68
|
}
|
|
62
69
|
|
|
63
70
|
return /*#__PURE__*/_react.default.createElement(_buttonToggle.StyledButtonToggle, {
|
|
64
|
-
"data-component": "button-toggle",
|
|
71
|
+
"data-component": dataComponent || "button-toggle",
|
|
72
|
+
"data-element": dataElement,
|
|
73
|
+
"data-role": dataRole,
|
|
65
74
|
grouped: grouped,
|
|
66
75
|
onClick: handleClick
|
|
67
76
|
}, /*#__PURE__*/_react.default.createElement(_buttonToggleInput.default, {
|
|
77
|
+
"aria-label": ariaLabel,
|
|
78
|
+
"aria-labelledby": ariaLabelledBy,
|
|
79
|
+
"data-element": "button-toggle-input",
|
|
68
80
|
name: name,
|
|
69
81
|
checked: checked,
|
|
70
82
|
disabled: disabled,
|
|
@@ -86,9 +98,24 @@ const ButtonToggle = props => {
|
|
|
86
98
|
};
|
|
87
99
|
|
|
88
100
|
ButtonToggle.propTypes = {
|
|
101
|
+
/** Prop to specify the aria-label of the component */
|
|
102
|
+
"aria-label": _propTypes.default.string,
|
|
103
|
+
|
|
104
|
+
/** Prop to specify the aria-labelledby property of the component */
|
|
105
|
+
"aria-labelledby": _propTypes.default.string,
|
|
106
|
+
|
|
89
107
|
/** Set the checked value of the radio button */
|
|
90
108
|
checked: _propTypes.default.bool,
|
|
91
109
|
|
|
110
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
111
|
+
"data-component": _propTypes.default.string,
|
|
112
|
+
|
|
113
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
114
|
+
"data-element": _propTypes.default.string,
|
|
115
|
+
|
|
116
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
117
|
+
"data-role": _propTypes.default.string,
|
|
118
|
+
|
|
92
119
|
/** Name used on the hidden radio button. */
|
|
93
120
|
name: _propTypes.default.string,
|
|
94
121
|
|
|
@@ -2,10 +2,20 @@ import * as React from "react";
|
|
|
2
2
|
import { ButtonToggleIconSizes } from "./button-toggle-types";
|
|
3
3
|
|
|
4
4
|
export interface ButtonToggleProps {
|
|
5
|
+
/** Prop to specify the aria-label of the component */
|
|
6
|
+
"aria-label"?: string;
|
|
7
|
+
/** Prop to specify the aria-labelledby property of the component */
|
|
8
|
+
"aria-labelledby"?: string;
|
|
5
9
|
/** buttonIcon to render. */
|
|
6
10
|
buttonIcon?: string;
|
|
7
11
|
/** Sets the size of the buttonIcon (eg. large) */
|
|
8
12
|
buttonIconSize?: ButtonToggleIconSizes;
|
|
13
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
14
|
+
"data-component"?: string;
|
|
15
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
16
|
+
"data-element"?: string;
|
|
17
|
+
/** Identifier used for testing purposes, applied to the root element of the component. */
|
|
18
|
+
"data-role"?: string;
|
|
9
19
|
/** ButtonToggle size */
|
|
10
20
|
size?: "small" | "medium" | "large";
|
|
11
21
|
/** Set the checked value of the radio button */
|
|
@@ -134,8 +134,11 @@ const iconFontSizes = {
|
|
|
134
134
|
largeIcon: 32
|
|
135
135
|
};
|
|
136
136
|
const StyledButtonToggleIcon = _styledComponents.default.div`
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
${({
|
|
138
|
+
hasNoContent
|
|
139
|
+
}) => hasNoContent ? "" : (0, _styledComponents.css)`
|
|
140
|
+
margin-right: 8px;
|
|
141
|
+
`}
|
|
139
142
|
${({
|
|
140
143
|
buttonIconSize
|
|
141
144
|
}) => buttonIconSize === "large" && (0, _styledComponents.css)`
|
|
@@ -80,7 +80,7 @@ const ButtonToggleGroup = ({
|
|
|
80
80
|
"data-element": dataElement
|
|
81
81
|
}, validationProps, (0, _utils.filterStyledSystemMarginProps)(props)), /*#__PURE__*/_react.default.createElement(_buttonToggleGroup.default, _extends({
|
|
82
82
|
"aria-label": label,
|
|
83
|
-
role: "
|
|
83
|
+
role: "radiogroup",
|
|
84
84
|
inputWidth: inputWidth
|
|
85
85
|
}, validationProps), /*#__PURE__*/_react.default.createElement(_radioButtonMapper.default, {
|
|
86
86
|
name: name,
|
|
@@ -37,8 +37,8 @@ const StyledLink = _styledComponents.default.span`
|
|
|
37
37
|
line-height: 36px;
|
|
38
38
|
left: -999em;
|
|
39
39
|
z-index: ${theme.zIndex.aboveAll};
|
|
40
|
-
box-shadow: inset 0 0 0 2px
|
|
41
|
-
border: 2px solid
|
|
40
|
+
box-shadow: inset 0 0 0 2px var(--colorsActionMajor500);
|
|
41
|
+
border: 2px solid var(--colorsYang100);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
a:focus {
|
|
@@ -51,38 +51,38 @@ const StyledLink = _styledComponents.default.span`
|
|
|
51
51
|
button {
|
|
52
52
|
font-size: ${isSkipLink ? "16px" : "14px"};
|
|
53
53
|
text-decoration: underline;
|
|
54
|
-
color: ${isSkipLink ?
|
|
54
|
+
color: ${isSkipLink ? "var(--colorsYin090)" : "var(--colorsActionMajor500)"};
|
|
55
55
|
display: inline-block;
|
|
56
56
|
${_icon.default} {
|
|
57
57
|
display: inline-block;
|
|
58
58
|
position: relative;
|
|
59
59
|
vertical-align: middle;
|
|
60
60
|
${iconAlign === "left" && (0, _styledComponents.css)`
|
|
61
|
-
margin-right: ${hasContent ? "
|
|
61
|
+
margin-right: ${hasContent ? "var(--spacing100)" : 0};
|
|
62
62
|
`}
|
|
63
63
|
${iconAlign === "right" && (0, _styledComponents.css)`
|
|
64
64
|
margin-right: 0;
|
|
65
|
-
margin-left: ${hasContent ? "
|
|
65
|
+
margin-left: ${hasContent ? "var(--spacing100)" : 0};
|
|
66
66
|
`}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
&:hover {
|
|
70
70
|
cursor: pointer;
|
|
71
|
-
color: ${isSkipLink ?
|
|
71
|
+
color: ${isSkipLink ? "var(--colorsYin090)" : "var(--colorsActionMajor600)"};
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
&:focus {
|
|
75
|
-
color:
|
|
76
|
-
background-color: ${isSkipLink ?
|
|
75
|
+
color: var(--colorsYin090);
|
|
76
|
+
background-color: ${isSkipLink ? "var(--colorsYang100)" : "var(--colorsSemanticFocus250)"};
|
|
77
77
|
outline: none;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
${disabled && (0, _styledComponents.css)`
|
|
81
|
-
color:
|
|
81
|
+
color: var(--colorsYin065);
|
|
82
82
|
&:hover,
|
|
83
83
|
&:focus {
|
|
84
84
|
cursor: not-allowed;
|
|
85
|
-
color:
|
|
85
|
+
color: var(--colorsYin065);
|
|
86
86
|
}
|
|
87
87
|
`}
|
|
88
88
|
}
|
|
@@ -37,10 +37,9 @@ const RadioButtonStyle = (0, _styledComponents.default)(_checkbox.default)`
|
|
|
37
37
|
fieldHelpInline,
|
|
38
38
|
reverse,
|
|
39
39
|
size,
|
|
40
|
-
theme,
|
|
41
40
|
inline
|
|
42
41
|
}) => (0, _styledComponents.css)`
|
|
43
|
-
margin-bottom:
|
|
42
|
+
margin-bottom: var(--spacing150);
|
|
44
43
|
|
|
45
44
|
:last-of-type {
|
|
46
45
|
margin-bottom: 0;
|
|
@@ -79,16 +78,16 @@ const RadioButtonStyle = (0, _styledComponents.default)(_checkbox.default)`
|
|
|
79
78
|
}
|
|
80
79
|
|
|
81
80
|
${_hiddenCheckableInput.default}:checked + ${_checkableInputSvgWrapper.default} circle {
|
|
82
|
-
fill:
|
|
81
|
+
fill: var(--colorsUtilityYin090);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
${disabled && (0, _styledComponents.css)`
|
|
86
85
|
circle {
|
|
87
|
-
fill:
|
|
86
|
+
fill: var(--colorsCtilityDisabled400);
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
${_hiddenCheckableInput.default}:checked + ${_checkableInputSvgWrapper.default} circle {
|
|
91
|
-
fill:
|
|
90
|
+
fill: var(--colorsUtilityDisabled600);
|
|
92
91
|
}
|
|
93
92
|
`}
|
|
94
93
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "carbon-react",
|
|
3
|
-
"version": "102.
|
|
3
|
+
"version": "102.3.0",
|
|
4
4
|
"description": "A library of reusable React components for easily building user interfaces.",
|
|
5
5
|
"engineStrict": true,
|
|
6
6
|
"engines": {
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"start:debug-theme": "cross-env STORYBOOK_DEBUG_THEME=true npm run start",
|
|
18
18
|
"test": "jest --config=./jest.conf.json",
|
|
19
19
|
"test-update": "jest --config=./jest.conf.json --updateSnapshot",
|
|
20
|
-
"test
|
|
20
|
+
"test:cypress": "cypress open",
|
|
21
|
+
"cypress:react": "npx cypress open-ct",
|
|
21
22
|
"debug": "node --inspect ./node_modules/jest-cli/bin/jest --watch --config=./jest.conf.json",
|
|
22
23
|
"format": "prettier --write './src'",
|
|
23
24
|
"lint": "eslint ./src",
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
"watch": "npm run clean-lib && npm run copy-files -- --watch & npm run babel -- --watch",
|
|
28
29
|
"build-storybook": "build-storybook -c .storybook -s .assets",
|
|
29
30
|
"start:static": "npx http-server -p 9001 ./storybook-static",
|
|
30
|
-
"babel": "cross-env NODE_ENV=production babel ./src --config-file ./babel.config.js --out-dir ./lib --ignore '**/*/__spec__.js','**/*.spec.js','**/__definition__.js' --quiet",
|
|
31
|
+
"babel": "cross-env NODE_ENV=production babel ./src --config-file ./babel.config.js --out-dir ./lib --ignore '**/*/__spec__.js','**/*.spec.js','**/__definition__.js','**/*.test.js' --quiet",
|
|
31
32
|
"clean-lib": "rimraf ./lib",
|
|
32
33
|
"copy-files": "cpy \"**/\" \"!**/(*.js|*.md|*.mdx|*.stories.*|*.snap)\" ../lib/ --cwd=src --parents",
|
|
33
34
|
"commit": "git-cz",
|
|
@@ -59,6 +60,8 @@
|
|
|
59
60
|
"@babel/preset-typescript": "7.12.7",
|
|
60
61
|
"@commitlint/cli": "^11.0.0",
|
|
61
62
|
"@commitlint/config-conventional": "^11.0.0",
|
|
63
|
+
"@cypress/react": "^5.9.2",
|
|
64
|
+
"@cypress/webpack-dev-server": "^1.4.0",
|
|
62
65
|
"@semantic-release/changelog": "^6.0.1",
|
|
63
66
|
"@semantic-release/exec": "^6.0.2",
|
|
64
67
|
"@semantic-release/git": "^10.0.1",
|
|
@@ -136,7 +139,8 @@
|
|
|
136
139
|
"semver": "^7.3.5",
|
|
137
140
|
"sprintf-js": "^1.1.2",
|
|
138
141
|
"styled-components": "^4.4.1",
|
|
139
|
-
"typescript": "^3.9.5"
|
|
142
|
+
"typescript": "^3.9.5",
|
|
143
|
+
"webpack-dev-server": "^3.11.2"
|
|
140
144
|
},
|
|
141
145
|
"dependencies": {
|
|
142
146
|
"@octokit/rest": "^18.12.0",
|