@decisiv/ui-components 2.0.1-alpha.144 → 2.0.1-alpha.148
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/components/Button/StyledButton.d.ts +3 -2
- package/lib/components/Button/StyledButton.d.ts.map +1 -1
- package/lib/components/Button/StyledButton.js +21 -7
- package/lib/components/Button/index.d.ts.map +1 -1
- package/lib/components/Button/index.js +19 -9
- package/lib/components/Button/index.test.js +24 -8
- package/lib/components/Button/schema.d.ts.map +1 -1
- package/lib/components/Button/schema.js +2 -1
- package/lib/components/Button/types.d.ts +2 -1
- package/lib/components/Button/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Size, Kind, Intent, Variant } from './types';
|
|
3
3
|
export interface StyledButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
-
kind?: Kind;
|
|
5
4
|
intent?: Intent;
|
|
6
|
-
|
|
5
|
+
kind?: Kind;
|
|
6
|
+
minWidth?: string;
|
|
7
7
|
size: Size;
|
|
8
|
+
variant?: Variant;
|
|
8
9
|
}
|
|
9
10
|
declare const StyledButton: import("styled-components").StyledComponent<"button", any, StyledButtonProps, never>;
|
|
10
11
|
export default StyledButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyledButton.d.ts","sourceRoot":"","sources":["../../../src/components/Button/StyledButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StyledButton.d.ts","sourceRoot":"","sources":["../../../src/components/Button/StyledButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAuKnE,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,YAAY,sFAkBjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -17,6 +17,8 @@ var _designTokens = _interopRequireWildcard(require("@decisiv/design-tokens"));
|
|
|
17
17
|
|
|
18
18
|
var _ConfigProvider = require("../../providers/ConfigProvider");
|
|
19
19
|
|
|
20
|
+
var _dynamicModifiers = require("../../utils/dynamicModifiers");
|
|
21
|
+
|
|
20
22
|
var _focusRingWithColor = _interopRequireDefault(require("../../utils/focusRingWithColor"));
|
|
21
23
|
|
|
22
24
|
var _BaseButton = _interopRequireDefault(require("../../atoms/BaseButton"));
|
|
@@ -49,23 +51,35 @@ var color = _styledTheming.default.variants(_ConfigProvider.themeKeys.mode, 'var
|
|
|
49
51
|
dark: (0, _styledComponents.css)(["background-color:transparent;color:", ";padding:0;&:focus:not(:active){border-color:", ";", "}&:hover:not(:active){color:", ";}&:disabled:disabled{background-color:transparent;color:", ";}"], _colors.interactionPrimaryDark, _colors.focusRingColors.dark.ghost.border, (0, _focusRingWithColor.default)(_colors.focusRingColors.dark.ghost.shadow), _colors.interactionSecondaryLight, (0, _toColorString.default)(opacityColors.charcoal40))
|
|
50
52
|
}
|
|
51
53
|
});
|
|
52
|
-
/** map the Button size values to the matching font size values */
|
|
54
|
+
/** map the Button size values to the matching font size scalar values */
|
|
53
55
|
|
|
54
56
|
|
|
55
|
-
var
|
|
56
|
-
medium:
|
|
57
|
-
small:
|
|
57
|
+
var sizeToScalarSize = {
|
|
58
|
+
medium: fontSizes.default,
|
|
59
|
+
small: fontSizes.paragraph2,
|
|
60
|
+
large: fontSizes.header4,
|
|
61
|
+
extraLarge: 18
|
|
58
62
|
};
|
|
59
63
|
/** map the Button size values to the matching heights, in rem */
|
|
60
64
|
|
|
61
65
|
var sizeToHeight = {
|
|
62
66
|
medium: (0, _rem.default)(32),
|
|
63
|
-
small: (0, _rem.default)(24)
|
|
67
|
+
small: (0, _rem.default)(24),
|
|
68
|
+
large: (0, _rem.default)(44),
|
|
69
|
+
extraLarge: (0, _rem.default)(50)
|
|
70
|
+
};
|
|
71
|
+
/** map the Button size values to the matching X padding, in rem */
|
|
72
|
+
|
|
73
|
+
var sizeToPaddingX = {
|
|
74
|
+
medium: (0, _rem.default)(base),
|
|
75
|
+
small: (0, _rem.default)(base),
|
|
76
|
+
large: (0, _rem.default)(base * 1.5),
|
|
77
|
+
extraLarge: (0, _rem.default)(base * 1.5)
|
|
64
78
|
};
|
|
65
79
|
|
|
66
80
|
var buttonSizeModifier = function buttonSizeModifier(_ref) {
|
|
67
81
|
var size = _ref.size;
|
|
68
|
-
return (0, _styledComponents.css)(["font-size:", ";height:", ";"], (0, _rem.default)(
|
|
82
|
+
return (0, _styledComponents.css)(["font-size:", ";height:", ";padding:0 ", ";"], (0, _rem.default)(sizeToScalarSize[size]), sizeToHeight[size], sizeToPaddingX[size]);
|
|
69
83
|
};
|
|
70
84
|
|
|
71
85
|
var disabledStyles = function disabledStyles(_ref2) {
|
|
@@ -81,6 +95,6 @@ var disabledStyles = function disabledStyles(_ref2) {
|
|
|
81
95
|
var StyledButton = (0, _styledComponents.default)(_BaseButton.default).withConfig({
|
|
82
96
|
displayName: "StyledButton",
|
|
83
97
|
componentId: "sc-1khcx6y-0"
|
|
84
|
-
})(["align-items:center;border-radius:", ";border:1px solid transparent;display:flex;font-weight:", ";justify-content:center;line-height:1;outline:none;
|
|
98
|
+
})(["align-items:center;border-radius:", ";border:1px solid transparent;display:flex;font-weight:", ";justify-content:center;line-height:1;outline:none;text-transform:uppercase;white-space:nowrap;", ";", ";", ";", ";", ";", ";"], (0, _rem.default)(2), _designTokens.typography.weight.alias.default, color, _kind.default, _intent.default, buttonSizeModifier, (0, _dynamicModifiers.applyDynamicModifiers)('minWidth', 'min-width'), disabledStyles);
|
|
85
99
|
var _default = StyledButton;
|
|
86
100
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA4B,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAMhF,OAAO,EACL,WAAW,EACX,SAAS,EAOV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA4B,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAMhF,OAAO,EACL,WAAW,EACX,SAAS,EAOV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAkGrD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AASvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,eAAe,aAAa,CAAC"}
|
|
@@ -72,6 +72,12 @@ var iconMarginProp = {
|
|
|
72
72
|
left: 'margin-right',
|
|
73
73
|
right: 'margin-left'
|
|
74
74
|
};
|
|
75
|
+
var sizeToIconSize = {
|
|
76
|
+
small: 'small',
|
|
77
|
+
medium: 'medium',
|
|
78
|
+
large: 'medium',
|
|
79
|
+
extraLarge: 'medium'
|
|
80
|
+
};
|
|
75
81
|
|
|
76
82
|
var iconMargin = function iconMargin(props) {
|
|
77
83
|
return !props.iconOnly && "".concat(iconMarginProp[props.position], ": ").concat((0, _rem.default)(5));
|
|
@@ -83,16 +89,17 @@ var IconContainer = _styledComponents.default.span.withConfig({
|
|
|
83
89
|
})(["line-height:0;", ";"], iconMargin);
|
|
84
90
|
|
|
85
91
|
var Button = function Button(props, ref) {
|
|
86
|
-
var
|
|
87
|
-
disabled = props.disabled,
|
|
92
|
+
var disabled = props.disabled,
|
|
88
93
|
icon = props.icon,
|
|
89
94
|
iconPosition = props.iconPosition,
|
|
90
95
|
intent = props.intent,
|
|
91
|
-
onClick = props.onClick,
|
|
92
96
|
kind = props.kind,
|
|
97
|
+
minWidth = props.minWidth,
|
|
98
|
+
onClick = props.onClick,
|
|
93
99
|
size = props.size,
|
|
100
|
+
text = props.text,
|
|
94
101
|
variant = props.variant,
|
|
95
|
-
rest = _objectWithoutProperties(props, ["
|
|
102
|
+
rest = _objectWithoutProperties(props, ["disabled", "icon", "iconPosition", "intent", "kind", "minWidth", "onClick", "size", "text", "variant"]);
|
|
96
103
|
|
|
97
104
|
var ButtonIcon = (0, _react.useMemo)(function () {
|
|
98
105
|
var Icon = icon;
|
|
@@ -100,15 +107,16 @@ var Button = function Button(props, ref) {
|
|
|
100
107
|
position: iconPosition,
|
|
101
108
|
iconOnly: !text
|
|
102
109
|
}, _react.default.createElement(Icon, {
|
|
103
|
-
size: size
|
|
110
|
+
size: sizeToIconSize[size]
|
|
104
111
|
}));
|
|
105
112
|
}, [icon, iconPosition, size, text]);
|
|
106
113
|
return _react.default.createElement(_StyledButton.default, _extends({
|
|
107
|
-
ref: ref,
|
|
108
114
|
disabled: disabled,
|
|
109
|
-
kind: kind,
|
|
110
115
|
intent: intent,
|
|
116
|
+
kind: kind,
|
|
117
|
+
minWidth: minWidth,
|
|
111
118
|
onClick: disabled ? _noop.default : onClick,
|
|
119
|
+
ref: ref,
|
|
112
120
|
size: size,
|
|
113
121
|
type: "button",
|
|
114
122
|
variant: variant
|
|
@@ -121,12 +129,13 @@ var propTypes = {
|
|
|
121
129
|
return (0, _isEmpty.default)(text);
|
|
122
130
|
}),
|
|
123
131
|
disabled: _propTypes.default.bool,
|
|
124
|
-
text: _propTypes.default.string,
|
|
125
|
-
size: _propTypes.default.oneOf(['small', 'medium']),
|
|
126
132
|
icon: _propTypes.default.elementType,
|
|
127
133
|
iconPosition: _propTypes.default.oneOf(['left', 'right']),
|
|
128
134
|
intent: _propTypes.default.oneOf(['success', 'danger']),
|
|
129
135
|
kind: _propTypes.default.oneOf(['primary', 'secondary']),
|
|
136
|
+
minWidth: _propTypes.default.string,
|
|
137
|
+
size: _propTypes.default.oneOf(['small', 'medium', 'large', 'extraLarge']),
|
|
138
|
+
text: _propTypes.default.string,
|
|
130
139
|
variant: _propTypes.default.oneOf(['normal', 'inverted', 'ghost'])
|
|
131
140
|
};
|
|
132
141
|
var defaultProps = {
|
|
@@ -135,6 +144,7 @@ var defaultProps = {
|
|
|
135
144
|
iconPosition: 'left',
|
|
136
145
|
intent: undefined,
|
|
137
146
|
kind: undefined,
|
|
147
|
+
minWidth: undefined,
|
|
138
148
|
size: 'medium',
|
|
139
149
|
text: undefined,
|
|
140
150
|
variant: 'normal'
|
|
@@ -101,39 +101,55 @@ describe('Button', function () {
|
|
|
101
101
|
|
|
102
102
|
expect(container).toMatchSnapshot();
|
|
103
103
|
});
|
|
104
|
+
it('renders correctly the large size', function () {
|
|
105
|
+
var _renderButton3 = renderButton({
|
|
106
|
+
size: 'large'
|
|
107
|
+
}),
|
|
108
|
+
container = _renderButton3.container;
|
|
109
|
+
|
|
110
|
+
expect(container).toMatchSnapshot();
|
|
111
|
+
});
|
|
112
|
+
it('renders correctly the extraLarge size', function () {
|
|
113
|
+
var _renderButton4 = renderButton({
|
|
114
|
+
size: 'extraLarge'
|
|
115
|
+
}),
|
|
116
|
+
container = _renderButton4.container;
|
|
117
|
+
|
|
118
|
+
expect(container).toMatchSnapshot();
|
|
119
|
+
});
|
|
104
120
|
describe('kind=secondary', function () {
|
|
105
121
|
it('renders correctly with the light theme', function () {
|
|
106
|
-
var
|
|
122
|
+
var _renderButton5 = renderButton({
|
|
107
123
|
kind: 'secondary'
|
|
108
124
|
}),
|
|
109
|
-
container =
|
|
125
|
+
container = _renderButton5.container;
|
|
110
126
|
|
|
111
127
|
expect(container).toMatchSnapshot();
|
|
112
128
|
});
|
|
113
129
|
it('renders correctly with the dark theme', function () {
|
|
114
|
-
var
|
|
130
|
+
var _renderButton6 = renderButton({
|
|
115
131
|
kind: 'secondary'
|
|
116
132
|
}, 'dark'),
|
|
117
|
-
container =
|
|
133
|
+
container = _renderButton6.container;
|
|
118
134
|
|
|
119
135
|
expect(container).toMatchSnapshot();
|
|
120
136
|
});
|
|
121
137
|
describe('inverted', function () {
|
|
122
138
|
it('renders correctly with the light theme', function () {
|
|
123
|
-
var
|
|
139
|
+
var _renderButton7 = renderButton({
|
|
124
140
|
kind: 'secondary',
|
|
125
141
|
variant: 'inverted'
|
|
126
142
|
}),
|
|
127
|
-
container =
|
|
143
|
+
container = _renderButton7.container;
|
|
128
144
|
|
|
129
145
|
expect(container).toMatchSnapshot();
|
|
130
146
|
});
|
|
131
147
|
it('renders correctly with the dark theme', function () {
|
|
132
|
-
var
|
|
148
|
+
var _renderButton8 = renderButton({
|
|
133
149
|
kind: 'secondary',
|
|
134
150
|
variant: 'inverted'
|
|
135
151
|
}, 'dark'),
|
|
136
|
-
container =
|
|
152
|
+
container = _renderButton8.container;
|
|
137
153
|
|
|
138
154
|
expect(container).toMatchSnapshot();
|
|
139
155
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Button/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Button/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;CAqCpC,CAAC;AAEH,QAAA,MAAM,MAAM,KAAsC,CAAC;AAInD,eAAe,MAAM,CAAC"}
|
|
@@ -17,11 +17,12 @@ var makeButtonSchemaPropTypes = function makeButtonSchemaPropTypes(extensions) {
|
|
|
17
17
|
return _objectSpread({
|
|
18
18
|
text: _reactDesc.PropTypes.string.description("The button's text"),
|
|
19
19
|
disabled: _reactDesc.PropTypes.bool.description('Defines if the button will be disabled').defaultValue('false'),
|
|
20
|
-
size: _reactDesc.PropTypes.oneOf(['small', 'medium']).description('Defines the size of the button').defaultValue('medium'),
|
|
20
|
+
size: _reactDesc.PropTypes.oneOf(['small', 'medium', 'large', 'extraLarge']).description('Defines the size of the button').defaultValue('medium'),
|
|
21
21
|
icon: _reactDesc.PropTypes.element.description('Which `iconix` icon to render'),
|
|
22
22
|
iconPosition: _reactDesc.PropTypes.oneOf(['left', 'right']).description('In which side of the text the icon should be rendered').defaultValue('left'),
|
|
23
23
|
intent: _reactDesc.PropTypes.oneOf(['success', 'danger']).description('Applies desired hover state of button'),
|
|
24
24
|
kind: _reactDesc.PropTypes.oneOf(['primary', 'secondary']).description('Applies inverted button styles'),
|
|
25
|
+
minWidth: _reactDesc.PropTypes.string.description('A pass-through CSS value for the min-width attribute'),
|
|
25
26
|
variant: _reactDesc.PropTypes.oneOf(['normal', 'inverted']).description('Applies secondary button styles')
|
|
26
27
|
}, extensions);
|
|
27
28
|
};
|
|
@@ -2,7 +2,7 @@ import { ButtonHTMLAttributes, Ref } from 'react';
|
|
|
2
2
|
import { IconProps } from '@decisiv/iconix';
|
|
3
3
|
import { TranslatedText } from '../../utils/useTranslations';
|
|
4
4
|
export declare type ButtonRef = HTMLButtonElement;
|
|
5
|
-
export declare type Size = 'medium' | '
|
|
5
|
+
export declare type Size = 'small' | 'medium' | 'large' | 'extraLarge';
|
|
6
6
|
export declare type IconPosition = 'left' | 'right';
|
|
7
7
|
export declare type Intent = 'danger' | 'success';
|
|
8
8
|
export declare type Variant = 'normal' | 'inverted' | 'ghost';
|
|
@@ -14,6 +14,7 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
14
14
|
iconPosition?: IconPosition;
|
|
15
15
|
intent?: Intent;
|
|
16
16
|
kind?: Kind;
|
|
17
|
+
minWidth?: string;
|
|
17
18
|
ref?: Ref<ButtonRef>;
|
|
18
19
|
size?: Size;
|
|
19
20
|
text?: TranslatedText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAC1C,oBAAY,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Button/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAC1C,oBAAY,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAC/D,oBAAY,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C,oBAAY,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1C,oBAAY,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AACtD,oBAAY,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;AAC3C,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;AAE9D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decisiv/ui-components",
|
|
3
|
-
"version": "2.0.1-alpha.
|
|
3
|
+
"version": "2.0.1-alpha.148+848f308",
|
|
4
4
|
"description": "Decisiv's design system React components",
|
|
5
5
|
"author": "Decisiv UI Development Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
73
|
"private": false,
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "848f3088dfd484a3822653ed13e77adff76fca92"
|
|
75
75
|
}
|