@toptal/picasso-button 1.0.12 → 1.0.13-alpha-fx-5263-merge-feature-branch-d124b1f9a.10
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/LICENSE +20 -0
- package/dist-package/src/Button/Button.d.ts.map +1 -1
- package/dist-package/src/Button/Button.js +39 -47
- package/dist-package/src/Button/Button.js.map +1 -1
- package/dist-package/src/Button/styles.d.ts +19 -45
- package/dist-package/src/Button/styles.d.ts.map +1 -1
- package/dist-package/src/Button/styles.js +161 -178
- package/dist-package/src/Button/styles.js.map +1 -1
- package/dist-package/src/ButtonAction/ButtonAction.d.ts.map +1 -1
- package/dist-package/src/ButtonAction/ButtonAction.js +20 -28
- package/dist-package/src/ButtonAction/ButtonAction.js.map +1 -1
- package/dist-package/src/ButtonAction/styles.d.ts +11 -3
- package/dist-package/src/ButtonAction/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonAction/styles.js +36 -55
- package/dist-package/src/ButtonAction/styles.js.map +1 -1
- package/dist-package/src/ButtonBase/ButtonBase.d.ts +29 -0
- package/dist-package/src/ButtonBase/ButtonBase.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/ButtonBase.js +78 -0
- package/dist-package/src/ButtonBase/ButtonBase.js.map +1 -0
- package/dist-package/src/ButtonBase/index.d.ts +5 -0
- package/dist-package/src/ButtonBase/index.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/index.js +2 -0
- package/dist-package/src/ButtonBase/index.js.map +1 -0
- package/dist-package/src/ButtonBase/styles.d.ts +6 -0
- package/dist-package/src/ButtonBase/styles.d.ts.map +1 -0
- package/dist-package/src/ButtonBase/styles.js +29 -0
- package/dist-package/src/ButtonBase/styles.js.map +1 -0
- package/dist-package/src/ButtonCircular/ButtonCircular.d.ts.map +1 -1
- package/dist-package/src/ButtonCircular/ButtonCircular.js +12 -26
- package/dist-package/src/ButtonCircular/ButtonCircular.js.map +1 -1
- package/dist-package/src/ButtonCircular/styles.d.ts +15 -3
- package/dist-package/src/ButtonCircular/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonCircular/styles.js +92 -57
- package/dist-package/src/ButtonCircular/styles.js.map +1 -1
- package/dist-package/src/ButtonCompound/index.d.ts +1 -1
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.d.ts.map +1 -1
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.js +4 -13
- package/dist-package/src/ButtonControlLabel/ButtonControlLabel.js.map +1 -1
- package/dist-package/src/ButtonControlLabel/styles.d.ts +2 -2
- package/dist-package/src/ButtonControlLabel/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonControlLabel/styles.js +16 -25
- package/dist-package/src/ButtonControlLabel/styles.js.map +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist-package/src/ButtonGroup/ButtonGroup.js +5 -27
- package/dist-package/src/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist-package/src/ButtonGroup/styles.d.ts +1 -2
- package/dist-package/src/ButtonGroup/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonGroup/styles.js +20 -47
- package/dist-package/src/ButtonGroup/styles.js.map +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.d.ts +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.d.ts.map +1 -1
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.js +17 -12
- package/dist-package/src/ButtonGroupItem/ButtonGroupItem.js.map +1 -1
- package/dist-package/src/ButtonGroupItem/styles.d.ts +13 -3
- package/dist-package/src/ButtonGroupItem/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonGroupItem/styles.js +39 -17
- package/dist-package/src/ButtonGroupItem/styles.js.map +1 -1
- package/dist-package/src/ButtonSplit/ButtonSplit.d.ts.map +1 -1
- package/dist-package/src/ButtonSplit/ButtonSplit.js +28 -24
- package/dist-package/src/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist-package/src/ButtonSplit/styles.d.ts +9 -3
- package/dist-package/src/ButtonSplit/styles.d.ts.map +1 -1
- package/dist-package/src/ButtonSplit/styles.js +13 -50
- package/dist-package/src/ButtonSplit/styles.js.map +1 -1
- package/package.json +20 -15
- package/src/Button/Button.tsx +69 -100
- package/src/Button/__snapshots__/test.tsx.snap +8 -4
- package/src/Button/styles.ts +214 -221
- package/src/Button/test.tsx +3 -1
- package/src/ButtonAction/ButtonAction.tsx +36 -48
- package/src/ButtonAction/styles.ts +57 -57
- package/src/ButtonBase/ButtonBase.tsx +182 -0
- package/src/ButtonBase/__snapshots__/test.tsx.snap +262 -0
- package/src/ButtonBase/index.ts +5 -0
- package/src/ButtonBase/styles.ts +36 -0
- package/src/ButtonBase/test.tsx +212 -0
- package/src/ButtonCheckbox/__snapshots__/test.tsx.snap +4 -3
- package/src/ButtonCircular/ButtonCircular.tsx +22 -37
- package/src/ButtonCircular/styles.ts +127 -75
- package/src/ButtonControlLabel/ButtonControlLabel.tsx +7 -16
- package/src/ButtonControlLabel/styles.ts +30 -26
- package/src/ButtonGroup/ButtonGroup.tsx +9 -44
- package/src/ButtonGroup/__snapshots__/test.tsx.snap +13 -7
- package/src/ButtonGroup/styles.ts +21 -63
- package/src/ButtonGroupItem/ButtonGroupItem.tsx +24 -15
- package/src/ButtonGroupItem/styles.ts +62 -28
- package/src/ButtonRadio/__snapshots__/test.tsx.snap +4 -3
- package/src/ButtonSplit/ButtonSplit.tsx +46 -42
- package/src/ButtonSplit/__snapshots__/test.tsx.snap +13 -9
- package/src/ButtonSplit/styles.ts +37 -56
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonGroupItem/styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonGroupItem/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,EAC9C,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,GAOP,EAAE,EAAE;IACH,MAAM,UAAU,GAAG;QACjB,cAAc;QACd,+BAA+B;QAC/B,6DAA6D;KAC9D,CAAA;IAED,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,EAAE;QAC5C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACzB;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,QAAQ,EACR,OAAO,EACP,MAAM,GAMP,EAAY,EAAE;IACb,MAAM,UAAU,GAAG,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAA;IAEzD,IAAI,QAAQ,EAAE;QACZ,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACrC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEhC,IAAI,MAAM,EAAE;YACV,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;SACvD;aAAM;YACL,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;SACnC;KACF;SAAM;QACL,UAAU,CAAC,IAAI,CACb,qEAAqE,CACtE,CAAA;QACD,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAErC,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;SAC3C;aAAM,IAAI,MAAM,EAAE;YACjB,UAAU,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;YACjE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;SAC/B;aAAM;YACL,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;SAC9C;KACF;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonSplit.d.ts","sourceRoot":"","sources":["../../../src/ButtonSplit/ButtonSplit.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,KAAqB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ButtonSplit.d.ts","sourceRoot":"","sources":["../../../src/ButtonSplit/ButtonSplit.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,KAAqB,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAS5C,MAAM,WAAW,KACf,SAAQ,SAAS,EACf,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACjD,kCAAkC;IAClC,QAAQ,EAAE,SAAS,CAAA;IACnB,wDAAwD;IACxD,IAAI,EAAE,SAAS,CAAA;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,wCAAwC;IACxC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,yBAAyB;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IACjC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,eAAe,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAC/C,iBAAiB,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AA0BD,eAAO,MAAM,WAAW,8EA4FvB,CAAA;AASD,eAAe,WAAW,CAAA"}
|
|
@@ -10,20 +10,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
12
|
import React, { forwardRef } from 'react';
|
|
13
|
-
import {
|
|
14
|
-
import cx from 'classnames';
|
|
13
|
+
import { twMerge } from 'tailwind-merge';
|
|
15
14
|
import { ArrowDownMinor24, ArrowDownMinor16 } from '@toptal/picasso-icons';
|
|
16
15
|
import { Dropdown } from '@toptal/picasso-dropdown';
|
|
17
16
|
import { Button } from '../Button';
|
|
18
17
|
import { ButtonGroup } from '../ButtonGroup';
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
// in order to prevent Button's styles to override ButtonSplit's ones
|
|
22
|
-
// Related Jira issue: https://toptal-core.atlassian.net/browse/FX-1520
|
|
23
|
-
const useStyles = makeStyles(styles, {
|
|
24
|
-
name: 'PicassoButtonSplit',
|
|
25
|
-
index: -1,
|
|
26
|
-
});
|
|
18
|
+
import { createButtonGroupItemClassNames } from '../ButtonGroupItem/styles';
|
|
19
|
+
import { createActionButtonClassNames, createMenuButtonClassNames, } from './styles';
|
|
27
20
|
const DropdownIcon = ({ size, className, }) => {
|
|
28
21
|
if (size === 'large') {
|
|
29
22
|
return React.createElement(ArrowDownMinor24, { className: className });
|
|
@@ -38,23 +31,34 @@ const EventStopPropagation = ({ children }) => {
|
|
|
38
31
|
};
|
|
39
32
|
export const ButtonSplit = forwardRef(function ButtonSplit(props, ref) {
|
|
40
33
|
const { size = 'medium', menu, children, variant = 'primary', disabled, style, className, onClick, menuButtonProps, actionButtonProps, testIds = {} } = props, rest = __rest(props, ["size", "menu", "children", "variant", "disabled", "style", "className", "onClick", "menuButtonProps", "actionButtonProps", "testIds"]);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
34
|
+
const renderMenuButton = ({ isOpen }) => {
|
|
35
|
+
const menuButtonClassName = twMerge(createButtonGroupItemClassNames({
|
|
36
|
+
active: menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.active,
|
|
37
|
+
hovered: menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.hovered,
|
|
38
|
+
disabled: (menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.disabled) || disabled,
|
|
39
|
+
focused: menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.focused,
|
|
40
|
+
}), createMenuButtonClassNames({
|
|
41
|
+
variant,
|
|
42
|
+
size,
|
|
43
|
+
disabled: (menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.disabled) || disabled,
|
|
44
|
+
}), menuButtonProps === null || menuButtonProps === void 0 ? void 0 : menuButtonProps.className);
|
|
45
|
+
const iconClassName = isOpen ? 'rotate-180' : '';
|
|
46
|
+
const menuButton = (React.createElement(Button, Object.assign({}, menuButtonProps, { variant: variant, className: menuButtonClassName, size: size, disabled: disabled, "data-testid": testIds.menuButton }),
|
|
47
|
+
React.createElement(DropdownIcon, { className: iconClassName, size: size })));
|
|
51
48
|
return disabled ? (React.createElement(EventStopPropagation, null, menuButton)) : (menuButton);
|
|
52
49
|
};
|
|
50
|
+
const actionButtonClassName = twMerge(createButtonGroupItemClassNames({
|
|
51
|
+
active: actionButtonProps === null || actionButtonProps === void 0 ? void 0 : actionButtonProps.active,
|
|
52
|
+
hovered: actionButtonProps === null || actionButtonProps === void 0 ? void 0 : actionButtonProps.hovered,
|
|
53
|
+
disabled: (actionButtonProps === null || actionButtonProps === void 0 ? void 0 : actionButtonProps.disabled) || disabled,
|
|
54
|
+
focused: actionButtonProps === null || actionButtonProps === void 0 ? void 0 : actionButtonProps.focused,
|
|
55
|
+
}), createActionButtonClassNames({
|
|
56
|
+
variant,
|
|
57
|
+
}), actionButtonProps === null || actionButtonProps === void 0 ? void 0 : actionButtonProps.className);
|
|
58
|
+
const dropdownClassName = twMerge('block cursor-pointer', disabled && '[&>div]:cursor-auto');
|
|
53
59
|
return (React.createElement(ButtonGroup, Object.assign({}, rest, { ref: ref, style: style, className: className }),
|
|
54
|
-
React.createElement(Button, Object.assign({}, actionButtonProps, { className:
|
|
55
|
-
React.createElement(Dropdown, { content: menu, className:
|
|
56
|
-
[classes.disabled]: disabled,
|
|
57
|
-
}) }, ({ isOpen }) => renderMenuButton({ isOpen, disabled }))));
|
|
60
|
+
React.createElement(Button, Object.assign({}, actionButtonProps, { className: actionButtonClassName, size: size, variant: variant, disabled: disabled, onClick: onClick, "data-testid": testIds.actionButton }), children),
|
|
61
|
+
React.createElement(Dropdown, { content: menu, className: dropdownClassName }, ({ isOpen }) => renderMenuButton({ isOpen }))));
|
|
58
62
|
});
|
|
59
63
|
ButtonSplit.defaultProps = {
|
|
60
64
|
size: 'medium',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonSplit.js","sourceRoot":"","sources":["../../../src/ButtonSplit/ButtonSplit.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ButtonSplit.js","sourceRoot":"","sources":["../../../src/ButtonSplit/ButtonSplit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
1
|
+
import type { SizeType } from '@toptal/picasso-shared';
|
|
2
|
+
export declare const createActionButtonClassNames: ({ variant, }: {
|
|
3
|
+
variant?: "primary" | "secondary" | undefined;
|
|
4
|
+
}) => string;
|
|
5
|
+
export declare const createMenuButtonClassNames: ({ variant, size, disabled, }: {
|
|
6
|
+
variant?: "primary" | "secondary" | undefined;
|
|
7
|
+
size: SizeType<'small' | 'medium' | 'large'>;
|
|
8
|
+
disabled?: boolean | undefined;
|
|
9
|
+
}) => string;
|
|
4
10
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonSplit/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ButtonSplit/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGtD,eAAO,MAAM,4BAA4B;;YAUxC,CAAA;AAWD,eAAO,MAAM,0BAA0B;;UAM/B,SAAS,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;;YAS7C,CAAA"}
|
|
@@ -1,51 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
primaryVariant: {
|
|
16
|
-
'&$actionButton': {
|
|
17
|
-
borderRight: `1px solid ${palette.blue.darker}`,
|
|
18
|
-
},
|
|
19
|
-
'&$menuButton': {
|
|
20
|
-
borderLeft: `1px solid ${palette.blue.darker}`,
|
|
21
|
-
'&$disabled': {
|
|
22
|
-
borderLeftColor: palette.grey.main,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
smallSize: {
|
|
27
|
-
minWidth: '1.5em',
|
|
28
|
-
paddingLeft: '0.25em',
|
|
29
|
-
paddingRight: '0.25em',
|
|
30
|
-
},
|
|
31
|
-
mediumSize: {},
|
|
32
|
-
largeSize: {
|
|
33
|
-
minWidth: '3em',
|
|
34
|
-
paddingLeft: '0.75em',
|
|
35
|
-
paddingRight: '0.75em',
|
|
36
|
-
},
|
|
37
|
-
dropdown: {
|
|
38
|
-
display: 'block',
|
|
39
|
-
cursor: 'pointer',
|
|
40
|
-
},
|
|
41
|
-
disabled: {
|
|
42
|
-
// override dropdown anchor styles
|
|
43
|
-
'& > div': {
|
|
44
|
-
cursor: 'auto',
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
rotated: {
|
|
48
|
-
transform: 'rotate(180deg)',
|
|
49
|
-
},
|
|
50
|
-
});
|
|
1
|
+
import { twMerge } from 'tailwind-merge';
|
|
2
|
+
export const createActionButtonClassNames = ({ variant, }) => {
|
|
3
|
+
return twMerge('transition-[color,background]', variant === 'primary' &&
|
|
4
|
+
'border-r border-l-0 border-y-0 border-solid border-blue-700');
|
|
5
|
+
};
|
|
6
|
+
const menuButtonSizeClassNames = {
|
|
7
|
+
small: 'min-w-[1.5em] px-[0.25em]',
|
|
8
|
+
medium: 'min-w-[2em] px-[0.5em]',
|
|
9
|
+
large: 'min-w-[3em] px-[0.75em]',
|
|
10
|
+
};
|
|
11
|
+
export const createMenuButtonClassNames = ({ variant, size, disabled, }) => {
|
|
12
|
+
return twMerge(menuButtonSizeClassNames[size], variant === 'primary' && 'border-l border-r-0 border-y-0 border-solid', variant === 'primary' && disabled && 'border-gray-500', variant === 'primary' && !disabled && 'border-blue-700');
|
|
13
|
+
};
|
|
51
14
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonSplit/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ButtonSplit/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,OAAO,GAGR,EAAE,EAAE;IACH,OAAO,OAAO,CACZ,+BAA+B,EAC/B,OAAO,KAAK,SAAS;QACnB,6DAA6D,CAChE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAG1B;IACF,KAAK,EAAE,2BAA2B;IAClC,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,yBAAyB;CACjC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,OAAO,EACP,IAAI,EACJ,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,OAAO,CACZ,wBAAwB,CAAC,IAAI,CAAC,EAC9B,OAAO,KAAK,SAAS,IAAI,6CAA6C,EACtE,OAAO,KAAK,SAAS,IAAI,QAAQ,IAAI,iBAAiB,EACtD,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CACxD,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toptal/picasso-button",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13-alpha-fx-5263-merge-feature-branch-d124b1f9a.10+d124b1f9a",
|
|
4
4
|
"description": "Toptal UI components library - Button",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -22,17 +22,19 @@
|
|
|
22
22
|
},
|
|
23
23
|
"homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@
|
|
26
|
-
"@toptal/picasso-
|
|
27
|
-
"@toptal/picasso-
|
|
28
|
-
"@toptal/picasso-
|
|
29
|
-
"@toptal/picasso-
|
|
30
|
-
"@toptal/picasso-
|
|
31
|
-
"@toptal/picasso-
|
|
32
|
-
"@toptal/picasso-
|
|
33
|
-
"@toptal/picasso-
|
|
25
|
+
"@mui/base": "5.0.0-beta.40",
|
|
26
|
+
"@toptal/picasso-checkbox": "1.0.8-alpha-fx-5263-merge-feature-branch-d124b1f9a.10+d124b1f9a",
|
|
27
|
+
"@toptal/picasso-container": "1.0.3-alpha-fx-5263-merge-feature-branch-d124b1f9a.72+d124b1f9a",
|
|
28
|
+
"@toptal/picasso-dropdown": "2.0.2-alpha-fx-5263-merge-feature-branch-d124b1f9a.14+d124b1f9a",
|
|
29
|
+
"@toptal/picasso-icons": "1.1.1-alpha-fx-5263-merge-feature-branch-d124b1f9a.10+d124b1f9a",
|
|
30
|
+
"@toptal/picasso-link": "1.0.3-alpha-fx-5263-merge-feature-branch-d124b1f9a.72+d124b1f9a",
|
|
31
|
+
"@toptal/picasso-loader": "1.0.3-alpha-fx-5263-merge-feature-branch-d124b1f9a.72+d124b1f9a",
|
|
32
|
+
"@toptal/picasso-radio": "1.0.8-alpha-fx-5263-merge-feature-branch-d124b1f9a.10+d124b1f9a",
|
|
33
|
+
"@toptal/picasso-shared": "14.0.2-alpha-fx-5263-merge-feature-branch-d124b1f9a.72+d124b1f9a",
|
|
34
|
+
"@toptal/picasso-utils": "1.0.3-alpha-fx-5263-merge-feature-branch-d124b1f9a.72+d124b1f9a",
|
|
34
35
|
"ap-style-title-case": "^1.1.2",
|
|
35
|
-
"classnames": "^2.5.1"
|
|
36
|
+
"classnames": "^2.5.1",
|
|
37
|
+
"tailwind-merge": "^2.2.2"
|
|
36
38
|
},
|
|
37
39
|
"sideEffects": [
|
|
38
40
|
"**/styles.ts",
|
|
@@ -41,18 +43,21 @@
|
|
|
41
43
|
"peerDependencies": {
|
|
42
44
|
"@material-ui/core": "4.12.4",
|
|
43
45
|
"@toptal/picasso-provider": "*",
|
|
44
|
-
"
|
|
46
|
+
"@toptal/picasso-tailwind": ">=2.0.1",
|
|
47
|
+
"react": ">=16.12.0 < 19.0.0",
|
|
48
|
+
"tailwindcss": ">=3"
|
|
45
49
|
},
|
|
46
50
|
"exports": {
|
|
47
51
|
".": "./dist-package/src/index.js"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
|
-
"@toptal/picasso-provider": "4.2.
|
|
51
|
-
"@toptal/picasso-test-utils": "1.1.
|
|
54
|
+
"@toptal/picasso-provider": "4.2.1-alpha-fx-5263-merge-feature-branch-d124b1f9a.43+d124b1f9a",
|
|
55
|
+
"@toptal/picasso-test-utils": "1.1.1-alpha-fx-5263-merge-feature-branch-d124b1f9a.64+d124b1f9a"
|
|
52
56
|
},
|
|
53
57
|
"files": [
|
|
54
58
|
"dist-package/**",
|
|
55
59
|
"!dist-package/tsconfig.tsbuildinfo",
|
|
56
60
|
"src"
|
|
57
|
-
]
|
|
61
|
+
],
|
|
62
|
+
"gitHead": "d124b1f9aadd31c53d6d913526e17fac9cbeedb8"
|
|
58
63
|
}
|
package/src/Button/Button.tsx
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import type { ReactNode, ReactElement, MouseEvent, ElementType } from 'react'
|
|
2
2
|
import React, { forwardRef } from 'react'
|
|
3
3
|
import cx from 'classnames'
|
|
4
|
+
import { twMerge } from 'tailwind-merge'
|
|
4
5
|
import type {
|
|
5
6
|
StandardProps,
|
|
6
7
|
SizeType,
|
|
7
8
|
ButtonOrAnchorProps,
|
|
8
9
|
OverridableComponent,
|
|
9
10
|
TextLabelProps,
|
|
10
|
-
Classes,
|
|
11
11
|
} from '@toptal/picasso-shared'
|
|
12
|
-
import {
|
|
13
|
-
import type { Theme } from '@material-ui/core'
|
|
14
|
-
import { makeStyles, ButtonBase } from '@material-ui/core'
|
|
15
|
-
import { Loader } from '@toptal/picasso-loader'
|
|
16
|
-
import { Container } from '@toptal/picasso-container'
|
|
17
|
-
import { noop, toTitleCase } from '@toptal/picasso-utils'
|
|
12
|
+
import { noop } from '@toptal/picasso-utils'
|
|
18
13
|
// we need to ensure the correct order of styles import
|
|
19
14
|
// TODO: [FX-4614] To be removed when Link component is migrated to tailwind
|
|
20
15
|
import { Link } from '@toptal/picasso-link'
|
|
21
16
|
|
|
22
|
-
import
|
|
17
|
+
import { ButtonBase } from '../ButtonBase'
|
|
18
|
+
import {
|
|
19
|
+
createVariantClassNames,
|
|
20
|
+
createCoreClassNames,
|
|
21
|
+
createSizeClassNames,
|
|
22
|
+
createIconClassNames,
|
|
23
|
+
} from './styles'
|
|
23
24
|
|
|
24
25
|
// HACK: This statement is only used to prevent webpack from tree shaking the import
|
|
25
26
|
void Link
|
|
26
27
|
|
|
27
|
-
const useStyles = makeStyles<Theme, Props>(styles, {
|
|
28
|
-
name: 'PicassoButton',
|
|
29
|
-
})
|
|
30
|
-
|
|
31
28
|
export type VariantType =
|
|
32
29
|
| 'primary'
|
|
33
30
|
| 'negative'
|
|
@@ -73,31 +70,28 @@ export interface Props
|
|
|
73
70
|
type?: 'button' | 'reset' | 'submit'
|
|
74
71
|
}
|
|
75
72
|
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
const getIcon = ({
|
|
74
|
+
children,
|
|
75
|
+
icon,
|
|
76
|
+
iconPosition,
|
|
77
|
+
size,
|
|
78
|
+
}: {
|
|
79
|
+
children: ReactNode
|
|
80
|
+
icon?: ReactElement
|
|
83
81
|
iconPosition?: IconPositionType
|
|
84
|
-
|
|
82
|
+
size: SizeType<'small' | 'medium' | 'large'>
|
|
83
|
+
}) => {
|
|
85
84
|
if (!icon) {
|
|
86
|
-
return
|
|
85
|
+
return undefined
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
const {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
} = classes
|
|
88
|
+
const iconClassNames = createIconClassNames({
|
|
89
|
+
size,
|
|
90
|
+
iconPosition: children && iconPosition ? iconPosition : undefined,
|
|
91
|
+
})
|
|
94
92
|
|
|
95
93
|
return React.cloneElement(icon, {
|
|
96
|
-
className:
|
|
97
|
-
[iconLeftClass]: children && iconPosition === 'left',
|
|
98
|
-
[iconRightClass]: children && iconPosition === 'right',
|
|
99
|
-
}),
|
|
100
|
-
key: 'button-icon',
|
|
94
|
+
className: twMerge(iconClassNames, icon.props.className),
|
|
101
95
|
})
|
|
102
96
|
}
|
|
103
97
|
|
|
@@ -109,9 +103,7 @@ export const Button: OverridableComponent<Props> = forwardRef<
|
|
|
109
103
|
icon,
|
|
110
104
|
iconPosition,
|
|
111
105
|
loading,
|
|
112
|
-
children,
|
|
113
106
|
className,
|
|
114
|
-
style,
|
|
115
107
|
fullWidth,
|
|
116
108
|
variant = 'primary',
|
|
117
109
|
size = 'medium',
|
|
@@ -119,86 +111,63 @@ export const Button: OverridableComponent<Props> = forwardRef<
|
|
|
119
111
|
hovered,
|
|
120
112
|
disabled,
|
|
121
113
|
active,
|
|
122
|
-
onClick,
|
|
123
|
-
title,
|
|
124
|
-
value,
|
|
125
|
-
type,
|
|
126
|
-
as = 'button',
|
|
127
|
-
titleCase: propsTitleCase,
|
|
128
114
|
...rest
|
|
129
115
|
} = props
|
|
130
|
-
const classes = useStyles(props)
|
|
131
116
|
|
|
132
|
-
const {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
117
|
+
const iconComponent = getIcon({
|
|
118
|
+
children: rest.children,
|
|
119
|
+
icon,
|
|
120
|
+
iconPosition,
|
|
121
|
+
size,
|
|
122
|
+
})
|
|
123
|
+
const coreClassNames = createCoreClassNames({
|
|
124
|
+
disabled,
|
|
125
|
+
focused,
|
|
126
|
+
hovered,
|
|
127
|
+
active,
|
|
128
|
+
})
|
|
129
|
+
const variantClassNames = createVariantClassNames(variant, {
|
|
130
|
+
disabled,
|
|
131
|
+
focused,
|
|
132
|
+
hovered,
|
|
133
|
+
active,
|
|
134
|
+
})
|
|
135
|
+
const sizeClassNames = createSizeClassNames(size)
|
|
136
|
+
|
|
137
|
+
const finalClassName = twMerge(
|
|
138
|
+
coreClassNames,
|
|
139
|
+
variantClassNames,
|
|
140
|
+
sizeClassNames,
|
|
141
|
+
fullWidth ? 'w-full' : '',
|
|
142
|
+
className
|
|
143
|
+
)
|
|
145
144
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
const contentSizeClassNames: Record<
|
|
146
|
+
SizeType<'small' | 'medium' | 'large'>,
|
|
147
|
+
string[]
|
|
148
|
+
> = {
|
|
149
|
+
small: ['text-button-small'],
|
|
150
|
+
medium: ['text-button-medium'],
|
|
151
|
+
large: ['text-button-large'],
|
|
151
152
|
}
|
|
152
153
|
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
{
|
|
158
|
-
[classes.fullWidth]: fullWidth,
|
|
159
|
-
[classes.active]: active,
|
|
160
|
-
[classes.focused]: focused,
|
|
161
|
-
[classes.hovered]: hovered,
|
|
162
|
-
[classes.disabled]: disabled,
|
|
163
|
-
},
|
|
164
|
-
sizeClassName,
|
|
165
|
-
variantClassName,
|
|
166
|
-
rootClass
|
|
154
|
+
const contentClassName = cx(
|
|
155
|
+
'font-semibold whitespace-nowrap',
|
|
156
|
+
contentSizeClassNames[size],
|
|
157
|
+
loading ? 'opacity-0' : ''
|
|
167
158
|
)
|
|
168
159
|
|
|
169
160
|
return (
|
|
170
161
|
<ButtonBase
|
|
171
162
|
{...rest}
|
|
172
163
|
ref={ref}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
className={className}
|
|
179
|
-
style={style}
|
|
164
|
+
className={finalClassName}
|
|
165
|
+
contentClassName={contentClassName}
|
|
166
|
+
icon={iconComponent}
|
|
167
|
+
iconPosition={iconPosition}
|
|
168
|
+
loading={loading}
|
|
180
169
|
disabled={disabled}
|
|
181
|
-
|
|
182
|
-
value={value}
|
|
183
|
-
type={type}
|
|
184
|
-
component={as}
|
|
185
|
-
data-component-type='button'
|
|
186
|
-
>
|
|
187
|
-
<Container
|
|
188
|
-
as='span'
|
|
189
|
-
inline
|
|
190
|
-
flex
|
|
191
|
-
direction='row'
|
|
192
|
-
alignItems='center'
|
|
193
|
-
className={cx({ [hiddenClass]: loading }, contentClass)}
|
|
194
|
-
>
|
|
195
|
-
{finalChildren}
|
|
196
|
-
</Container>
|
|
197
|
-
|
|
198
|
-
{loading && (
|
|
199
|
-
<Loader variant='inherit' className={loaderClass} inline size='small' />
|
|
200
|
-
)}
|
|
201
|
-
</ButtonBase>
|
|
170
|
+
/>
|
|
202
171
|
)
|
|
203
172
|
})
|
|
204
173
|
|
|
@@ -7,13 +7,15 @@ exports[`Button disabled button as link renders disabled version 1`] = `
|
|
|
7
7
|
>
|
|
8
8
|
<a
|
|
9
9
|
aria-disabled="true"
|
|
10
|
-
class="MuiTypography-root MuiLink-root MuiLink-underlineHover PicassoLink-root
|
|
10
|
+
class="MuiTypography-root MuiLink-root MuiLink-underlineHover PicassoLink-root base-Button base- text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-default pointer-events no-underline rounded-sm shadow-none border-none text-white visited:text-white bg-gray min-w h-8 py-0 px-4 PicassoLink-blue MuiTypography-colorPrimary"
|
|
11
11
|
data-component-type="button"
|
|
12
|
+
href="URL"
|
|
12
13
|
role="button"
|
|
13
14
|
tabindex="-1"
|
|
15
|
+
type="button"
|
|
14
16
|
>
|
|
15
17
|
<span
|
|
16
|
-
class="PicassoContainer-centerAlignItems PicassoContainer-flex PicassoContainer-inline
|
|
18
|
+
class="PicassoContainer-centerAlignItems PicassoContainer-flex PicassoContainer-inline font-semibold whitespace-nowrap text-button"
|
|
17
19
|
>
|
|
18
20
|
Click me!
|
|
19
21
|
</span>
|
|
@@ -28,14 +30,16 @@ exports[`Button disabled button renders disabled version 1`] = `
|
|
|
28
30
|
class="Picasso-root"
|
|
29
31
|
>
|
|
30
32
|
<button
|
|
31
|
-
|
|
33
|
+
aria-disabled="true"
|
|
34
|
+
class="base-Button base- text-lg inline-flex items-center justify-center select-none appearance-none m-0 relative normal-case align-middle transition-colors duration-350 ease-out shrink-0 outline-none [&+&]:ml-4 cursor-default pointer-events no-underline rounded-sm shadow-none border-none text-white visited:text-white bg-gray min-w h-8 py-0 px-4"
|
|
32
35
|
data-component-type="button"
|
|
33
36
|
disabled=""
|
|
37
|
+
role="button"
|
|
34
38
|
tabindex="-1"
|
|
35
39
|
type="button"
|
|
36
40
|
>
|
|
37
41
|
<span
|
|
38
|
-
class="PicassoContainer-centerAlignItems PicassoContainer-flex PicassoContainer-inline
|
|
42
|
+
class="PicassoContainer-centerAlignItems PicassoContainer-flex PicassoContainer-inline font-semibold whitespace-nowrap text-button"
|
|
39
43
|
>
|
|
40
44
|
Click me!
|
|
41
45
|
</span>
|