@audius/harmony 0.0.34 → 0.1.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/dist/components/button/BaseButton/BaseButton.d.ts +2 -2
- package/dist/components/button/BaseButton/types.d.ts +2 -2
- package/dist/components/button/BaseButton/types.d.ts.map +1 -1
- package/dist/components/button/Button/Button.d.ts +1 -1
- package/dist/components/button/FilterButton/FilterButton.d.ts.map +1 -1
- package/dist/components/button/FilterButton/FilterButton.js +62 -68
- package/dist/components/button/FilterButton/FilterButton.js.map +1 -1
- package/dist/components/button/FilterButton/types.d.ts +38 -23
- package/dist/components/button/FilterButton/types.d.ts.map +1 -1
- package/dist/components/button/IconButton/IconButton.d.ts +2 -2
- package/dist/components/button/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/button/IconButton/IconButton.js +4 -3
- package/dist/components/button/IconButton/IconButton.js.map +1 -1
- package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts +18 -0
- package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts.map +1 -0
- package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js +123 -0
- package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js.map +1 -0
- package/dist/components/button/{FilterButton/FilterButton.stories.d.ts → OptionsFilterButton/OptionsFilterButton.stories.d.ts} +4 -4
- package/dist/components/button/OptionsFilterButton/OptionsFilterButton.stories.d.ts.map +1 -0
- package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts +18 -0
- package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts.map +1 -0
- package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.js +82 -0
- package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.js.map +1 -0
- package/dist/components/button/OptionsFilterButton/types.d.ts +62 -0
- package/dist/components/button/OptionsFilterButton/types.d.ts.map +1 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/PasswordInput/PasswordInput.js +1 -0
- package/dist/components/input/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/input/SelectablePill/SelectablePill.js +1 -1
- package/dist/components/input/SelectablePill/SelectablePill.js.map +1 -1
- package/dist/components/modal/Modal.js +1 -1
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/ModalHeader.js +1 -0
- package/dist/components/modal/ModalHeader.js.map +1 -1
- package/dist/components/music-badge/MusicBadge.d.ts +25 -0
- package/dist/components/music-badge/MusicBadge.d.ts.map +1 -0
- package/dist/components/music-badge/MusicBadge.js +40 -0
- package/dist/components/music-badge/MusicBadge.js.map +1 -0
- package/dist/components/music-badge/MusicBadge.stories.d.ts +7 -0
- package/dist/components/music-badge/MusicBadge.stories.d.ts.map +1 -0
- package/dist/components/music-badge/index.d.ts +3 -0
- package/dist/components/music-badge/index.d.ts.map +1 -0
- package/dist/components/pill/Pill.d.ts +2 -2
- package/dist/components/popup/Popup.d.ts.map +1 -1
- package/dist/components/popup/Popup.js +3 -0
- package/dist/components/popup/Popup.js.map +1 -1
- package/dist/components/text/Text.d.ts.map +1 -1
- package/dist/components/text/Text.js +6 -5
- package/dist/components/text/Text.js.map +1 -1
- package/dist/foundations/color/color.d.ts +9 -0
- package/dist/foundations/color/color.d.ts.map +1 -1
- package/dist/foundations/color/primitive.d.ts +6 -0
- package/dist/foundations/color/primitive.d.ts.map +1 -1
- package/dist/foundations/color/primitive.js +6 -0
- package/dist/foundations/color/primitive.js.map +1 -1
- package/dist/foundations/color/semantic.d.ts +3 -0
- package/dist/foundations/color/semantic.d.ts.map +1 -1
- package/dist/foundations/color/semantic.js +2 -1
- package/dist/foundations/color/semantic.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
- package/dist/components/button/FilterButton/FilterButton.stories.d.ts.map +0 -1
|
@@ -13,8 +13,8 @@ export declare const BaseButton: (props: {
|
|
|
13
13
|
minWidth?: number | undefined;
|
|
14
14
|
fullWidth?: boolean | undefined;
|
|
15
15
|
styles?: {
|
|
16
|
-
button
|
|
17
|
-
icon
|
|
16
|
+
button?: CSSObject | undefined;
|
|
17
|
+
icon?: CSSObject | undefined;
|
|
18
18
|
} | undefined;
|
|
19
19
|
asChild?: boolean | undefined;
|
|
20
20
|
} & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
|
|
@@ -4,8 +4,8 @@ import type { IconComponent } from '../../icon';
|
|
|
4
4
|
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'destructive';
|
|
5
5
|
export type ButtonSize = 'small' | 'default' | 'large';
|
|
6
6
|
type BaseButtonStyles = {
|
|
7
|
-
button
|
|
8
|
-
icon
|
|
7
|
+
button?: CSSObject;
|
|
8
|
+
icon?: CSSObject;
|
|
9
9
|
};
|
|
10
10
|
export type HTMLButtonProps = ComponentPropsWithoutRef<'button'>;
|
|
11
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAEtD,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAEtD,KAAK,gBAAgB,GAAG;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAEhE;;;KAGK;AACL,KAAK,aAAa,GAAG;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,eAAe,GACjB,aAAa,CAAA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* a delete operation.
|
|
7
7
|
*/
|
|
8
8
|
export declare const Button: (props: {
|
|
9
|
-
color?: "white" | "background" | "blue" | "orange" | "red" | "darkRed" | "green" | "lightGreen" | "gradient" | undefined;
|
|
9
|
+
color?: "white" | "background" | "blue" | "orange" | "red" | "darkRed" | "green" | "lightGreen" | "trendingBlue" | "aiGreen" | "gradient" | undefined;
|
|
10
10
|
hexColor?: `#${string}` | undefined;
|
|
11
11
|
variant?: import("./types").ButtonVariant | undefined;
|
|
12
12
|
size?: import("./types").ButtonSize | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,eAAO,MAAM,YAAY,gLAkLxB,CAAA"}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
import { __assign } from '../../../_virtual/_tslib.js';
|
|
2
|
-
import { jsxs
|
|
3
|
-
import { forwardRef, useState, useCallback, useRef } from 'react';
|
|
2
|
+
import { jsxs } from '@emotion/react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useState, useCallback, useEffect, useRef } from 'react';
|
|
4
4
|
import { useTheme } from '@emotion/react';
|
|
5
5
|
import { BaseButton } from '../BaseButton/BaseButton.js';
|
|
6
|
-
import { Box } from '../../layout/Box/Box.js';
|
|
7
|
-
import { Flex } from '../../layout/Flex/Flex.js';
|
|
8
|
-
import { Paper } from '../../layout/Paper/Paper.js';
|
|
9
|
-
import { Popup } from '../../popup/Popup.js';
|
|
10
6
|
import { useControlled } from '../../../hooks/useControlled.js';
|
|
11
|
-
import { IconCloseAlt
|
|
7
|
+
import { IconCloseAlt } from '../../../icons/utilityIcons.js';
|
|
12
8
|
import '@emotion/css';
|
|
13
9
|
|
|
14
10
|
var FilterButton = forwardRef(function FilterButton(props, ref) {
|
|
15
|
-
var _a, _b;
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
controlledProp: selectionProp,
|
|
11
|
+
var valueProp = props.value, children = props.children, labelProp = props.label, onChange = props.onChange, onClick = props.onClick, onOpen = props.onOpen, onReset = props.onReset, disabled = props.disabled, _a = props.variant, variant = _a === void 0 ? 'fillContainer' : _a, _b = props.size, size = _b === void 0 ? 'default' : _b, iconRight = props.iconRight;
|
|
12
|
+
var _c = useTheme(), color = _c.color, cornerRadius = _c.cornerRadius, spacing = _c.spacing, typography = _c.typography;
|
|
13
|
+
var _d = useControlled({
|
|
14
|
+
controlledProp: valueProp,
|
|
20
15
|
defaultValue: null,
|
|
21
|
-
stateName: '
|
|
16
|
+
stateName: 'value',
|
|
22
17
|
componentName: 'FilterButton'
|
|
23
|
-
}),
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
}), value = _d[0], setValue = _d[1];
|
|
19
|
+
var _e = useControlled({
|
|
20
|
+
controlledProp: labelProp,
|
|
21
|
+
defaultValue: null,
|
|
22
|
+
stateName: 'label',
|
|
23
|
+
componentName: 'FilterButton'
|
|
24
|
+
}), label = _e[0], setLabel = _e[1];
|
|
25
|
+
var _f = useState(false), isOpen = _f[0], setIsOpen = _f[1];
|
|
27
26
|
// Size Styles
|
|
28
27
|
var defaultStyles = {
|
|
29
28
|
paddingLeft: spacing.m,
|
|
@@ -53,76 +52,71 @@ var FilterButton = forwardRef(function FilterButton(props, ref) {
|
|
|
53
52
|
transform: 'none'
|
|
54
53
|
}
|
|
55
54
|
};
|
|
56
|
-
var activeStyle = variant !== 'fillContainer' ||
|
|
55
|
+
var activeStyle = variant !== 'fillContainer' || value === null
|
|
57
56
|
? {
|
|
58
57
|
border: "1px solid ".concat(color.border.strong),
|
|
59
58
|
background: color.background.surface2
|
|
60
59
|
}
|
|
61
60
|
: {};
|
|
61
|
+
var hoverStyle = {
|
|
62
|
+
border: "1px solid ".concat(color.neutral.n800),
|
|
63
|
+
transform: 'none'
|
|
64
|
+
};
|
|
62
65
|
// Button Styles
|
|
63
|
-
var buttonCss = __assign(__assign(__assign({ background: 'transparent', border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' &&
|
|
66
|
+
var buttonCss = __assign(__assign(__assign({ background: 'transparent', border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' && value !== null
|
|
64
67
|
? color.static.white
|
|
65
|
-
: color.text.default, gap: spacing.xs, fontSize: typography.size.s, fontWeight: typography.weight.demiBold, lineHeight: typography.lineHeight.s, opacity: disabled ? 0.6 : 1, '&:hover': {
|
|
66
|
-
border: "1px solid ".concat(color.neutral.n800),
|
|
67
|
-
transform: 'none'
|
|
68
|
-
}, '&:active': __assign(__assign({}, activeStyle), { transform: 'none' }) }, (size === 'small' ? smallStyles : defaultStyles)), (isOpen ? activeStyle : {})), (variant === 'fillContainer' && selection !== null
|
|
68
|
+
: color.text.default, gap: spacing.xs, fontSize: typography.size.s, fontWeight: typography.weight.demiBold, lineHeight: typography.lineHeight.s, opacity: disabled ? 0.6 : 1, '&:hover': hoverStyle, '&:focus': hoverStyle, '&:active': __assign(__assign({}, activeStyle), { transform: 'none' }) }, (size === 'small' ? smallStyles : defaultStyles)), (isOpen ? activeStyle : {})), (variant === 'fillContainer' && value !== null
|
|
69
69
|
? fillContainerStyles
|
|
70
70
|
: {}));
|
|
71
71
|
var iconCss = size === 'small' ? smallIconStyles : defaultIconStyles;
|
|
72
|
-
// Popup Styles
|
|
73
|
-
var optionCss = {
|
|
74
|
-
background: 'transparent',
|
|
75
|
-
border: 'none',
|
|
76
|
-
color: color.text.default,
|
|
77
|
-
fontWeight: typography.weight.medium,
|
|
78
|
-
gap: spacing.s,
|
|
79
|
-
paddingLeft: spacing.m,
|
|
80
|
-
paddingRight: spacing.m,
|
|
81
|
-
paddingTop: spacing.s,
|
|
82
|
-
paddingBottom: spacing.s,
|
|
83
|
-
width: '100%',
|
|
84
|
-
borderRadius: cornerRadius.s,
|
|
85
|
-
justifyContent: 'flex-start',
|
|
86
|
-
'&:hover': {
|
|
87
|
-
transform: 'none',
|
|
88
|
-
backgroundColor: color.secondary.s300,
|
|
89
|
-
color: color.special.white
|
|
90
|
-
},
|
|
91
|
-
'&:active': {
|
|
92
|
-
transform: 'none'
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
var optionIconCss = {
|
|
96
|
-
width: spacing.unit4,
|
|
97
|
-
height: spacing.unit4
|
|
98
|
-
};
|
|
99
72
|
var handleButtonClick = useCallback(function () {
|
|
100
|
-
if (
|
|
101
|
-
|
|
102
|
-
// @ts-ignore
|
|
103
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(null);
|
|
73
|
+
if (onClick) {
|
|
74
|
+
onClick();
|
|
104
75
|
}
|
|
105
76
|
else {
|
|
106
|
-
|
|
77
|
+
if (variant === 'fillContainer' && value !== null) {
|
|
78
|
+
setValue(null);
|
|
79
|
+
setLabel(null);
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(null);
|
|
82
|
+
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
setIsOpen(function (isOpen) { return !isOpen; });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, [
|
|
89
|
+
value,
|
|
90
|
+
variant,
|
|
91
|
+
setIsOpen,
|
|
92
|
+
setValue,
|
|
93
|
+
setLabel,
|
|
94
|
+
onChange,
|
|
95
|
+
onClick,
|
|
96
|
+
onReset
|
|
97
|
+
]);
|
|
98
|
+
useEffect(function () {
|
|
99
|
+
if (isOpen) {
|
|
100
|
+
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
107
101
|
}
|
|
108
|
-
}, [
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
102
|
+
}, [isOpen, onOpen]);
|
|
103
|
+
var handleChange = useCallback(function (value, label) {
|
|
104
|
+
setValue(value);
|
|
105
|
+
setLabel(label);
|
|
106
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
|
107
|
+
}, [onChange, setValue, setLabel]);
|
|
113
108
|
var anchorRef = useRef(null);
|
|
114
109
|
return (jsxs(BaseButton, __assign({ ref: ref || anchorRef, styles: {
|
|
115
110
|
button: buttonCss,
|
|
116
111
|
icon: iconCss
|
|
117
|
-
}, onClick: handleButtonClick, iconRight: variant === 'fillContainer' &&
|
|
112
|
+
}, onClick: handleButtonClick, iconRight: variant === 'fillContainer' && value !== null
|
|
118
113
|
? IconCloseAlt
|
|
119
|
-
: iconRight, disabled: disabled, "aria-haspopup": 'listbox', "aria-expanded": isOpen }, { children: [
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}) })) })) })) }))] })));
|
|
114
|
+
: iconRight, disabled: disabled, "aria-haspopup": 'listbox', "aria-expanded": isOpen }, { children: [label, children === null || children === void 0 ? void 0 : children({
|
|
115
|
+
isOpen: isOpen,
|
|
116
|
+
setIsOpen: setIsOpen,
|
|
117
|
+
handleChange: handleChange,
|
|
118
|
+
anchorRef: anchorRef
|
|
119
|
+
})] })));
|
|
126
120
|
});
|
|
127
121
|
|
|
128
122
|
export { FilterButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterButton.js","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"sourcesContent":["import { forwardRef, RefObject, useRef, useState, useCallback } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\n\nimport { BaseButton } from 'components/button/BaseButton/BaseButton'\nimport { Box, Flex, Paper } from 'components/layout'\nimport { Popup } from 'components/popup'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconCaretDown, IconCloseAlt } from 'icons'\n\nimport { FilterButtonOption, FilterButtonProps } from './types'\n\nexport const FilterButton = forwardRef<HTMLButtonElement, FilterButtonProps>(\n function FilterButton(props, ref) {\n const {\n selection: selectionProp,\n label,\n options,\n onSelect,\n disabled,\n variant = 'fillContainer',\n size = 'default',\n iconRight = IconCaretDown,\n popupAnchorOrigin,\n popupTransformOrigin,\n popupPortalLocation,\n popupZIndex\n } = props\n const { color, cornerRadius, spacing, typography } = useTheme()\n const [selection, setSelection] = useControlled({\n controlledProp: selectionProp,\n defaultValue: null,\n stateName: 'selection',\n componentName: 'FilterButton'\n })\n const selectedOption = options.find((option) => option.value === selection)\n const selectedLabel = selectedOption?.label ?? selectedOption?.value\n\n const [isOpen, setIsOpen] = useState(false)\n\n // Size Styles\n const defaultStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s\n }\n const defaultIconStyles: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const smallStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs\n }\n const smallIconStyles: CSSObject = {\n width: spacing.unit3,\n height: spacing.unit3\n }\n\n const fillContainerStyles: CSSObject = {\n background: color.secondary.s400,\n border: `1px solid ${color.secondary.s400}`,\n '&:hover': {\n border: `1px solid ${color.secondary.s400}`,\n transform: 'none'\n }\n }\n\n const activeStyle =\n variant !== 'fillContainer' || selection === null\n ? {\n border: `1px solid ${color.border.strong}`,\n background: color.background.surface2\n }\n : {}\n\n // Button Styles\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: `1px solid ${color.border.strong}`,\n borderRadius: cornerRadius.s,\n color:\n variant === 'fillContainer' && selection !== null\n ? color.static.white\n : color.text.default,\n gap: spacing.xs,\n fontSize: typography.size.s,\n fontWeight: typography.weight.demiBold,\n lineHeight: typography.lineHeight.s,\n opacity: disabled ? 0.6 : 1,\n\n '&:hover': {\n border: `1px solid ${color.neutral.n800}`,\n transform: 'none'\n },\n\n '&:active': {\n ...activeStyle,\n transform: 'none'\n },\n\n ...(size === 'small' ? smallStyles : defaultStyles),\n ...(isOpen ? activeStyle : {}),\n ...(variant === 'fillContainer' && selection !== null\n ? fillContainerStyles\n : {})\n }\n\n const iconCss = size === 'small' ? smallIconStyles : defaultIconStyles\n\n // Popup Styles\n const optionCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n color: color.text.default,\n fontWeight: typography.weight.medium,\n gap: spacing.s,\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s,\n width: '100%',\n borderRadius: cornerRadius.s,\n justifyContent: 'flex-start',\n\n '&:hover': {\n transform: 'none',\n backgroundColor: color.secondary.s300,\n color: color.special.white\n },\n\n '&:active': {\n transform: 'none'\n }\n }\n const optionIconCss: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const handleButtonClick = useCallback(() => {\n if (variant === 'fillContainer' && selection !== null) {\n setSelection(null)\n // @ts-ignore\n onSelect?.(null)\n } else {\n setIsOpen((isOpen: boolean) => !isOpen)\n }\n }, [selection, variant, setIsOpen, setSelection, onSelect])\n\n const handleOptionSelect = useCallback(\n (option: FilterButtonOption) => {\n setSelection(option.value)\n onSelect?.(option.value)\n },\n [onSelect, setSelection]\n )\n\n const anchorRef = useRef<HTMLButtonElement>(null)\n\n return (\n <BaseButton\n ref={ref || anchorRef}\n styles={{\n button: buttonCss,\n icon: iconCss\n }}\n onClick={handleButtonClick}\n iconRight={\n variant === 'fillContainer' && selection !== null\n ? IconCloseAlt\n : iconRight\n }\n disabled={disabled}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n >\n {selectedLabel ?? label}\n <Popup\n anchorRef={(ref as RefObject<HTMLElement>) || anchorRef}\n isVisible={isOpen}\n onClose={() => setIsOpen(false)}\n anchorOrigin={popupAnchorOrigin}\n transformOrigin={popupTransformOrigin}\n portalLocation={popupPortalLocation}\n zIndex={popupZIndex}\n >\n <Paper mt='s' border='strong' shadow='far'>\n <Box p='s'>\n <Flex\n direction='column'\n alignItems='flex-start'\n justifyContent='center'\n role='listbox'\n aria-label={selectedLabel ?? label ?? props['aria-label']}\n aria-activedescendant={selectedLabel}\n >\n {options.map((option) => (\n <BaseButton\n key={option.value}\n iconLeft={option.icon}\n styles={{\n button: optionCss,\n icon: optionIconCss\n }}\n onClick={() => handleOptionSelect(option)}\n aria-label={option.label ?? option.value}\n role='option'\n >\n {option.label ?? option.value}\n </BaseButton>\n ))}\n </Flex>\n </Box>\n </Paper>\n </Popup>\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterButton.js","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, useCallback, useEffect } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\n\nimport { BaseButton } from 'components/button/BaseButton/BaseButton'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconCloseAlt } from 'icons'\n\nimport { FilterButtonProps } from './types'\n\nexport const FilterButton = forwardRef<HTMLButtonElement, FilterButtonProps>(\n function FilterButton(props, ref) {\n const {\n value: valueProp,\n children,\n label: labelProp,\n onChange,\n onClick,\n onOpen,\n onReset,\n disabled,\n variant = 'fillContainer',\n size = 'default',\n iconRight\n } = props\n const { color, cornerRadius, spacing, typography } = useTheme()\n const [value, setValue] = useControlled({\n controlledProp: valueProp,\n defaultValue: null,\n stateName: 'value',\n componentName: 'FilterButton'\n })\n\n const [label, setLabel] = useControlled({\n controlledProp: labelProp,\n defaultValue: null,\n stateName: 'label',\n componentName: 'FilterButton'\n })\n\n const [isOpen, setIsOpen] = useState(false)\n\n // Size Styles\n const defaultStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s\n }\n const defaultIconStyles: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const smallStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs\n }\n const smallIconStyles: CSSObject = {\n width: spacing.unit3,\n height: spacing.unit3\n }\n\n const fillContainerStyles: CSSObject = {\n background: color.secondary.s400,\n border: `1px solid ${color.secondary.s400}`,\n '&:hover': {\n border: `1px solid ${color.secondary.s400}`,\n transform: 'none'\n }\n }\n\n const activeStyle =\n variant !== 'fillContainer' || value === null\n ? {\n border: `1px solid ${color.border.strong}`,\n background: color.background.surface2\n }\n : {}\n\n const hoverStyle = {\n border: `1px solid ${color.neutral.n800}`,\n transform: 'none'\n }\n\n // Button Styles\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: `1px solid ${color.border.strong}`,\n borderRadius: cornerRadius.s,\n color:\n variant === 'fillContainer' && value !== null\n ? color.static.white\n : color.text.default,\n gap: spacing.xs,\n fontSize: typography.size.s,\n fontWeight: typography.weight.demiBold,\n lineHeight: typography.lineHeight.s,\n opacity: disabled ? 0.6 : 1,\n\n '&:hover': hoverStyle,\n '&:focus': hoverStyle,\n\n '&:active': {\n ...activeStyle,\n transform: 'none'\n },\n\n ...(size === 'small' ? smallStyles : defaultStyles),\n ...(isOpen ? activeStyle : {}),\n ...(variant === 'fillContainer' && value !== null\n ? fillContainerStyles\n : {})\n }\n\n const iconCss = size === 'small' ? smallIconStyles : defaultIconStyles\n\n const handleButtonClick = useCallback(() => {\n if (onClick) {\n onClick()\n } else {\n if (variant === 'fillContainer' && value !== null) {\n setValue(null)\n setLabel(null)\n // @ts-ignore\n onChange?.(null)\n onReset?.()\n } else {\n setIsOpen((isOpen: boolean) => !isOpen)\n }\n }\n }, [\n value,\n variant,\n setIsOpen,\n setValue,\n setLabel,\n onChange,\n onClick,\n onReset\n ])\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.()\n }\n }, [isOpen, onOpen])\n\n const handleChange = useCallback(\n (value: string, label: string) => {\n setValue(value)\n setLabel(label)\n onChange?.(value)\n },\n [onChange, setValue, setLabel]\n )\n\n const anchorRef = useRef<HTMLButtonElement>(null)\n\n return (\n <BaseButton\n ref={ref || anchorRef}\n styles={{\n button: buttonCss,\n icon: iconCss\n }}\n onClick={handleButtonClick}\n iconRight={\n variant === 'fillContainer' && value !== null\n ? IconCloseAlt\n : iconRight\n }\n disabled={disabled}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n >\n {label}\n {children?.({\n isOpen,\n setIsOpen,\n handleChange,\n anchorRef\n })}\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { IconComponent } from "../../icon";
|
|
2
|
-
import { Origin } from "../../popup/types";
|
|
3
3
|
export type FilterButtonSize = 'default' | 'small';
|
|
4
4
|
export type FilterButtonVariant = 'fillContainer' | 'replaceLabel';
|
|
5
5
|
export type FilterButtonOption = {
|
|
@@ -10,12 +10,31 @@ export type FilterButtonOption = {
|
|
|
10
10
|
label?: string;
|
|
11
11
|
icon?: IconComponent;
|
|
12
12
|
};
|
|
13
|
+
type ChildrenProps = {
|
|
14
|
+
/**
|
|
15
|
+
* State representing whether the FilterButton is open.
|
|
16
|
+
* This can be used to implement a popup via `children`
|
|
17
|
+
*/
|
|
18
|
+
isOpen: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Set open state
|
|
21
|
+
*/
|
|
22
|
+
setIsOpen: (isOpen: boolean) => void;
|
|
23
|
+
/**
|
|
24
|
+
* A function to handle when the value is changed
|
|
25
|
+
*/
|
|
26
|
+
handleChange: (value: string, label: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* A ref to the anchor element (button)
|
|
29
|
+
*/
|
|
30
|
+
anchorRef: React.RefObject<HTMLButtonElement>;
|
|
31
|
+
};
|
|
13
32
|
export type FilterButtonProps = {
|
|
14
33
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
34
|
+
* Children render prop. This can be used to render a dropdown component
|
|
35
|
+
* for example
|
|
17
36
|
*/
|
|
18
|
-
|
|
37
|
+
children?: (props: ChildrenProps) => ReactNode;
|
|
19
38
|
/**
|
|
20
39
|
* The text that appears on the button component.
|
|
21
40
|
* If no label is provided, a different Icon can be specified
|
|
@@ -27,9 +46,9 @@ export type FilterButtonProps = {
|
|
|
27
46
|
*/
|
|
28
47
|
'aria-label'?: string;
|
|
29
48
|
/**
|
|
30
|
-
* The
|
|
49
|
+
* The value
|
|
31
50
|
*/
|
|
32
|
-
|
|
51
|
+
value?: string | null;
|
|
33
52
|
/**
|
|
34
53
|
* The button size
|
|
35
54
|
* @default FilterButtonSize.DEFAULT
|
|
@@ -47,32 +66,28 @@ export type FilterButtonProps = {
|
|
|
47
66
|
/**
|
|
48
67
|
* Optional icon element to include on the right side of the button
|
|
49
68
|
*/
|
|
50
|
-
iconRight?: IconComponent;
|
|
69
|
+
iconRight?: IconComponent | null;
|
|
51
70
|
/**
|
|
52
|
-
* What to do when
|
|
71
|
+
* What to do when the value is changed
|
|
53
72
|
*/
|
|
54
|
-
|
|
73
|
+
onChange?: (value: string) => void;
|
|
55
74
|
/**
|
|
56
|
-
*
|
|
75
|
+
* What to do when the filter button is opened
|
|
57
76
|
*/
|
|
58
|
-
|
|
77
|
+
onOpen?: () => void;
|
|
59
78
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @default { horizontal: 'center', vertical: 'bottom' }
|
|
79
|
+
* If provided, will be called when the selected value is reset
|
|
62
80
|
*/
|
|
63
|
-
|
|
81
|
+
onReset?: () => void;
|
|
64
82
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
83
|
+
* What to do when the button is clicked
|
|
84
|
+
* This will override the default behavior of toggling isOpen
|
|
67
85
|
*/
|
|
68
|
-
|
|
86
|
+
onClick?: () => void;
|
|
69
87
|
/**
|
|
70
|
-
*
|
|
71
|
-
*/
|
|
72
|
-
popupPortalLocation?: HTMLElement;
|
|
73
|
-
/**
|
|
74
|
-
* zIndex applied to the inner Popup component
|
|
88
|
+
* Whether interaction is disabled
|
|
75
89
|
*/
|
|
76
|
-
|
|
90
|
+
disabled?: boolean;
|
|
77
91
|
};
|
|
92
|
+
export {};
|
|
78
93
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,mBAAuB;AAE/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAA;AAGlD,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAA;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAA;IAE9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAErB;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA"}
|
|
@@ -7,7 +7,7 @@ export type IconButtonProps = {
|
|
|
7
7
|
ripple?: boolean;
|
|
8
8
|
'aria-label': string;
|
|
9
9
|
iconCss?: CSSObject;
|
|
10
|
-
} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> & Pick<BaseButtonProps, 'onClick' | 'disabled' | 'className' | 'type' | 'children'>;
|
|
10
|
+
} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> & Pick<BaseButtonProps, 'onClick' | 'disabled' | 'className' | 'type' | 'children' | 'isLoading'>;
|
|
11
11
|
/**
|
|
12
12
|
* The icon component allows you to pass in an icon and
|
|
13
13
|
* apply color and sizing properties.
|
|
@@ -17,5 +17,5 @@ export declare const IconButton: (props: {
|
|
|
17
17
|
ripple?: boolean | undefined;
|
|
18
18
|
'aria-label': string;
|
|
19
19
|
iconCss?: CSSObject | undefined;
|
|
20
|
-
} & Pick<IconProps, "color" | "size" | "shadow" | "height" | "width"> & Pick<BaseButtonProps, "disabled" | "type" | "className" | "children" | "onClick"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
|
|
20
|
+
} & Pick<IconProps, "color" | "size" | "shadow" | "height" | "width"> & Pick<BaseButtonProps, "disabled" | "type" | "className" | "children" | "onClick" | "isLoading"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
|
|
21
21
|
//# sourceMappingURL=IconButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GACnE,IAAI,CACF,eAAe,EACf,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GACnE,IAAI,CACF,eAAe,EACf,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CACzE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;UAdf,aAAa;;kBAEL,MAAM;;4TAkGrB,CAAA"}
|
|
@@ -10,8 +10,8 @@ import { BaseButton } from '../BaseButton/BaseButton.js';
|
|
|
10
10
|
*/
|
|
11
11
|
var IconButton = forwardRef(function (props, ref) {
|
|
12
12
|
var Icon = props.icon, iconColor = props.color, _a = props.size, size = _a === void 0 ? 'l' : _a, shadow = props.shadow, ripple = props.ripple, height = props.height, width = props.width, iconCss = props.iconCss, children = props.children, other = __rest(props, ["icon", "color", "size", "shadow", "ripple", "height", "width", "iconCss", "children"]);
|
|
13
|
-
var disabled = other.disabled;
|
|
14
|
-
var _b = useTheme(), color = _b.color, cornerRadius = _b.cornerRadius, spacing = _b.spacing, motion = _b.motion;
|
|
13
|
+
var disabled = other.disabled, isLoading = other.isLoading;
|
|
14
|
+
var _b = useTheme(), color = _b.color, cornerRadius = _b.cornerRadius, spacing = _b.spacing, motion = _b.motion, iconSizes = _b.iconSizes;
|
|
15
15
|
var buttonCss = {
|
|
16
16
|
background: 'transparent',
|
|
17
17
|
border: 'none',
|
|
@@ -46,7 +46,8 @@ var IconButton = forwardRef(function (props, ref) {
|
|
|
46
46
|
borderRadius: cornerRadius.s
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
|
|
49
|
+
var loadingIconCss = __assign(__assign({}, iconCss), { height: iconSizes[size], width: iconSizes[size], color: color.icon[iconColor !== null && iconColor !== void 0 ? iconColor : 'default'] });
|
|
50
|
+
return (jsxs(BaseButton, __assign({ ref: ref, type: 'button' }, other, { css: [buttonCss, ripple && rippleCss], styles: { icon: loadingIconCss } }, { children: [isLoading ? null : (jsx(Icon, { "aria-hidden": true, color: disabled ? 'disabled' : iconColor, size: size, shadow: shadow, height: height, width: width, css: iconCss })), children] })));
|
|
50
51
|
});
|
|
51
52
|
|
|
52
53
|
export { IconButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.js","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\n\nimport type { IconComponent, IconProps } from '../../icon'\nimport { BaseButton } from '../BaseButton/BaseButton'\nimport type { BaseButtonProps } from '../BaseButton/types'\n\nexport type IconButtonProps = {\n icon: IconComponent\n ripple?: boolean\n 'aria-label': string\n iconCss?: CSSObject\n} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> &\n Pick<\n BaseButtonProps,\n 'onClick' | 'disabled' | 'className' | 'type' | 'children'\n >\n\n/**\n * The icon component allows you to pass in an icon and\n * apply color and sizing properties.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props: IconButtonProps, ref) => {\n const {\n icon: Icon,\n color: iconColor,\n size = 'l',\n shadow,\n ripple,\n height,\n width,\n iconCss,\n children,\n ...other\n } = props\n const { disabled } = other\n const { color, cornerRadius, spacing, motion } = useTheme()\n\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n borderRadius: '50%',\n padding: spacing.xs,\n overflow: 'unset',\n svg: {\n transition: `\n transform ${motion.hover},\n color ${motion.hover}\n `\n },\n '&:hover': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(1.1)'\n }\n },\n '&:active': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(0.98)'\n }\n }\n }\n\n const rippleCss: CSSObject = {\n '&:hover': {\n backgroundColor: color.neutral.n100\n },\n '&:active': {\n backgroundColor: color.neutral.n150\n },\n '&:focus-visible': {\n border: `1px solid ${color.secondary.secondary}`,\n borderRadius: cornerRadius.s\n }\n }\n\n return (\n <BaseButton\n ref={ref}\n type='button'\n {...other}\n css={[buttonCss, ripple && rippleCss]}\n >\n <Icon\n
|
|
1
|
+
{"version":3,"file":"IconButton.js","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\n\nimport type { IconComponent, IconProps } from '../../icon'\nimport { BaseButton } from '../BaseButton/BaseButton'\nimport type { BaseButtonProps } from '../BaseButton/types'\n\nexport type IconButtonProps = {\n icon: IconComponent\n ripple?: boolean\n 'aria-label': string\n iconCss?: CSSObject\n} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> &\n Pick<\n BaseButtonProps,\n 'onClick' | 'disabled' | 'className' | 'type' | 'children' | 'isLoading'\n >\n\n/**\n * The icon component allows you to pass in an icon and\n * apply color and sizing properties.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props: IconButtonProps, ref) => {\n const {\n icon: Icon,\n color: iconColor,\n size = 'l',\n shadow,\n ripple,\n height,\n width,\n iconCss,\n children,\n ...other\n } = props\n const { disabled, isLoading } = other\n const { color, cornerRadius, spacing, motion, iconSizes } = useTheme()\n\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n borderRadius: '50%',\n padding: spacing.xs,\n overflow: 'unset',\n svg: {\n transition: `\n transform ${motion.hover},\n color ${motion.hover}\n `\n },\n '&:hover': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(1.1)'\n }\n },\n '&:active': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(0.98)'\n }\n }\n }\n\n const rippleCss: CSSObject = {\n '&:hover': {\n backgroundColor: color.neutral.n100\n },\n '&:active': {\n backgroundColor: color.neutral.n150\n },\n '&:focus-visible': {\n border: `1px solid ${color.secondary.secondary}`,\n borderRadius: cornerRadius.s\n }\n }\n\n const loadingIconCss: CSSObject = {\n ...iconCss,\n height: iconSizes[size],\n width: iconSizes[size],\n color: color.icon[iconColor ?? 'default']\n }\n\n return (\n <BaseButton\n ref={ref}\n type='button'\n {...other}\n css={[buttonCss, ripple && rippleCss]}\n styles={{ icon: loadingIconCss }}\n >\n {isLoading ? null : (\n <Icon\n aria-hidden\n color={disabled ? 'disabled' : iconColor}\n size={size}\n shadow={shadow}\n height={height}\n width={width}\n css={iconCss}\n />\n )}\n {children}\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { OptionsFilterButtonOption } from './types';
|
|
3
|
+
type FilterButtonOptionsProps = {
|
|
4
|
+
activeValue?: string | null;
|
|
5
|
+
options: OptionsFilterButtonOption[];
|
|
6
|
+
optionRefs?: RefObject<HTMLButtonElement[]>;
|
|
7
|
+
onChange: (option: OptionsFilterButtonOption) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const FilterButtonOptions: (props: FilterButtonOptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const OptionsFilterButton: (props: {
|
|
11
|
+
options: OptionsFilterButtonOption[];
|
|
12
|
+
optionsLabel?: string | undefined;
|
|
13
|
+
selection?: string | null | undefined;
|
|
14
|
+
showFilterInput?: boolean | undefined;
|
|
15
|
+
filterInputPlaceholder?: string | undefined;
|
|
16
|
+
} & import("./types").FilterButtonPopupProps & Omit<import("..").FilterButtonProps, "children" | "value"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=OptionsFilterButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OptionsFilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/OptionsFilterButton/OptionsFilterButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAA;AAed,OAAO,EAA4B,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAM7E,KAAK,wBAAwB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,yBAAyB,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,qDAkFlE,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;8PAsJ9B,CAAA"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { __rest, __assign } from '../../../_virtual/_tslib.js';
|
|
2
|
+
import { jsx, jsxs } from '@emotion/react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useState, useRef, useCallback, useMemo } from 'react';
|
|
4
|
+
import { useTheme } from '@emotion/react';
|
|
5
|
+
import { BaseButton } from '../BaseButton/BaseButton.js';
|
|
6
|
+
import '../../common/HiddenInput.js';
|
|
7
|
+
import '../../radio-group/RadioGroupContext.js';
|
|
8
|
+
import { Text } from '../../text/Text.js';
|
|
9
|
+
import { TextInput } from '../../input/TextInput/TextInput.js';
|
|
10
|
+
import { TextInputSize } from '../../input/TextInput/types.js';
|
|
11
|
+
import '../../input/PasswordInput/PasswordInput.js';
|
|
12
|
+
import '../../input/TokenAmountInput/TokenAmountInput.js';
|
|
13
|
+
import { Box } from '../../layout/Box/Box.js';
|
|
14
|
+
import { Flex } from '../../layout/Flex/Flex.js';
|
|
15
|
+
import { Paper } from '../../layout/Paper/Paper.js';
|
|
16
|
+
import { Popup } from '../../popup/Popup.js';
|
|
17
|
+
import { useControlled } from '../../../hooks/useControlled.js';
|
|
18
|
+
import { IconCaretDown, IconSearch } from '../../../icons/utilityIcons.js';
|
|
19
|
+
import '@emotion/css';
|
|
20
|
+
import { FilterButton } from '../FilterButton/FilterButton.js';
|
|
21
|
+
import { SelectPopupKeyHandler } from './SelectPopupKeyHandler.js';
|
|
22
|
+
|
|
23
|
+
var messages = {
|
|
24
|
+
noMatches: 'No matches'
|
|
25
|
+
};
|
|
26
|
+
var FilterButtonOptions = function (props) {
|
|
27
|
+
var activeValue = props.activeValue, options = props.options, onChange = props.onChange, optionRefs = props.optionRefs;
|
|
28
|
+
var _a = useTheme(), color = _a.color, cornerRadius = _a.cornerRadius, spacing = _a.spacing, typography = _a.typography;
|
|
29
|
+
// Popup Styles
|
|
30
|
+
var optionIconCss = {
|
|
31
|
+
width: spacing.unit4,
|
|
32
|
+
height: spacing.unit4
|
|
33
|
+
};
|
|
34
|
+
var activeOptionCss = {
|
|
35
|
+
transform: 'none',
|
|
36
|
+
backgroundColor: color.secondary.s300,
|
|
37
|
+
color: color.special.white
|
|
38
|
+
};
|
|
39
|
+
var optionCss = {
|
|
40
|
+
background: 'transparent',
|
|
41
|
+
border: 'none',
|
|
42
|
+
color: color.text.default,
|
|
43
|
+
fontWeight: typography.weight.medium,
|
|
44
|
+
gap: spacing.s,
|
|
45
|
+
paddingLeft: spacing.m,
|
|
46
|
+
paddingRight: spacing.m,
|
|
47
|
+
paddingTop: spacing.s,
|
|
48
|
+
paddingBottom: spacing.s,
|
|
49
|
+
width: '100%',
|
|
50
|
+
borderRadius: cornerRadius.s,
|
|
51
|
+
justifyContent: 'flex-start',
|
|
52
|
+
'&:hover': activeOptionCss,
|
|
53
|
+
'&:active': {
|
|
54
|
+
transform: 'none'
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (!options.length) {
|
|
58
|
+
return (jsx(Flex, __assign({ justifyContent: 'center' }, { children: jsx(Text, __assign({ variant: 'body', color: 'subdued', size: 's' }, { children: messages.noMatches })) })));
|
|
59
|
+
}
|
|
60
|
+
return (jsx(Flex, __assign({ direction: 'column' }, { children: options.map(function (option, index) {
|
|
61
|
+
var _a, _b, _c;
|
|
62
|
+
return (jsxs(BaseButton, __assign({ iconLeft: option.icon, styles: {
|
|
63
|
+
button: __assign(__assign({}, optionCss), (option.value === activeValue ? activeOptionCss : {})),
|
|
64
|
+
icon: optionIconCss
|
|
65
|
+
}, onClick: function () { return onChange(option); }, "aria-label": (_a = option.label) !== null && _a !== void 0 ? _a : option.value, role: 'option', ref: function (el) {
|
|
66
|
+
if (optionRefs && optionRefs.current && el) {
|
|
67
|
+
optionRefs.current[index] = el;
|
|
68
|
+
}
|
|
69
|
+
} }, { children: [(_b = option.leadingElement) !== null && _b !== void 0 ? _b : null, jsx(Text, __assign({ variant: 'body', strength: 'strong' }, { children: (_c = option.label) !== null && _c !== void 0 ? _c : option.value })), option.helperText ? (jsx(Text, __assign({ variant: 'body', strength: 'strong', color: 'subdued' }, { children: option.helperText }))) : null] }), option.value));
|
|
70
|
+
}) })));
|
|
71
|
+
};
|
|
72
|
+
var OptionsFilterButton = forwardRef(function OptionsFilterButton(props, ref) {
|
|
73
|
+
var _a;
|
|
74
|
+
var selectionProp = props.selection, options = props.options, optionsLabel = props.optionsLabel, showFilterInput = props.showFilterInput, _b = props.filterInputPlaceholder, filterInputPlaceholder = _b === void 0 ? 'Search' : _b, popupAnchorOrigin = props.popupAnchorOrigin, popupMaxHeight = props.popupMaxHeight, popupTransformOrigin = props.popupTransformOrigin, popupPortalLocation = props.popupPortalLocation, popupZIndex = props.popupZIndex, filterButtonProps = __rest(props, ["selection", "options", "optionsLabel", "showFilterInput", "filterInputPlaceholder", "popupAnchorOrigin", "popupMaxHeight", "popupTransformOrigin", "popupPortalLocation", "popupZIndex"]);
|
|
75
|
+
var _c = useControlled({
|
|
76
|
+
controlledProp: selectionProp,
|
|
77
|
+
defaultValue: null,
|
|
78
|
+
stateName: 'selection',
|
|
79
|
+
componentName: 'FilterButton'
|
|
80
|
+
}), selection = _c[0], setSelection = _c[1];
|
|
81
|
+
var _d = useState(''), filterInputValue = _d[0], setFilterInputValue = _d[1];
|
|
82
|
+
var selectedOption = options.find(function (option) { return option.value === selection; });
|
|
83
|
+
var selectedLabel = (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _a !== void 0 ? _a : selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value;
|
|
84
|
+
var inputRef = useRef(null);
|
|
85
|
+
var optionRefs = useRef([]);
|
|
86
|
+
var scrollRef = useRef(null);
|
|
87
|
+
var handleOptionSelect = useCallback(function (handleChange, setIsOpen) {
|
|
88
|
+
return function (option) {
|
|
89
|
+
var _a;
|
|
90
|
+
setSelection(option.value);
|
|
91
|
+
handleChange(option.value, (_a = option.label) !== null && _a !== void 0 ? _a : '');
|
|
92
|
+
setIsOpen(false);
|
|
93
|
+
};
|
|
94
|
+
}, [setSelection]);
|
|
95
|
+
var handleOpen = useCallback(function () {
|
|
96
|
+
// Focus the input after the popup is open
|
|
97
|
+
setTimeout(function () {
|
|
98
|
+
var _a;
|
|
99
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });
|
|
100
|
+
}, 0);
|
|
101
|
+
}, [inputRef]);
|
|
102
|
+
var filteredOptions = useMemo(function () {
|
|
103
|
+
return options.filter(function (_a) {
|
|
104
|
+
var label = _a.label;
|
|
105
|
+
return (!filterInputValue ||
|
|
106
|
+
(label === null || label === void 0 ? void 0 : label.toLowerCase().includes(filterInputValue.toLowerCase())));
|
|
107
|
+
});
|
|
108
|
+
}, [options, filterInputValue]);
|
|
109
|
+
return (jsx(FilterButton, __assign({ iconRight: IconCaretDown }, filterButtonProps, { value: selection, onOpen: handleOpen, onReset: function () { return setFilterInputValue(''); }, label: selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : filterButtonProps.label }, { children: function (_a) {
|
|
110
|
+
var isOpen = _a.isOpen, setIsOpen = _a.setIsOpen, handleChange = _a.handleChange, anchorRef = _a.anchorRef;
|
|
111
|
+
return (jsx(SelectPopupKeyHandler, __assign({ options: filteredOptions, disabled: !isOpen, onOptionSelect: handleOptionSelect(handleChange, setIsOpen), optionRefs: optionRefs, scrollRef: scrollRef }, { children: function (activeValue) {
|
|
112
|
+
var _a;
|
|
113
|
+
return (jsx(Popup, __assign({ anchorRef: ref || anchorRef, isVisible: isOpen, onClose: function () { return setIsOpen(false); }, anchorOrigin: popupAnchorOrigin, transformOrigin: popupTransformOrigin, portalLocation: popupPortalLocation, zIndex: popupZIndex, onAfterClose: function () { return setFilterInputValue(''); } }, { children: jsx(Paper, __assign({ mt: 's', border: 'strong', shadow: 'far', onClick: function (e) { return e.stopPropagation(); } }, { children: jsx(Flex, __assign({ p: 's', direction: 'column', alignItems: 'flex-start', role: 'listbox', "aria-label": (_a = selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : filterButtonProps.label) !== null && _a !== void 0 ? _a : props['aria-label'], "aria-activedescendant": selectedLabel, css: { maxHeight: popupMaxHeight, overflowY: 'auto' }, ref: scrollRef }, { children: jsxs(Flex, __assign({ direction: 'column', w: '100%', gap: 's' }, { children: [showFilterInput ? (jsx(TextInput, { ref: inputRef, placeholder: filterInputPlaceholder, label: filterInputPlaceholder, size: TextInputSize.SMALL, startIcon: IconSearch, onClick: function (e) {
|
|
114
|
+
e.stopPropagation();
|
|
115
|
+
}, onChange: function (e) {
|
|
116
|
+
setFilterInputValue(e.target.value);
|
|
117
|
+
}, autoComplete: 'off' })) : null, optionsLabel ? (jsx(Box, __assign({ pt: 's', ph: 'm' }, { children: jsx(Text, __assign({ variant: 'label', size: 'xs' }, { children: optionsLabel })) }))) : null, jsx(FilterButtonOptions, { activeValue: activeValue, options: filteredOptions, optionRefs: optionRefs, onChange: handleOptionSelect(handleChange, setIsOpen) })] })) })) })) })));
|
|
118
|
+
} })));
|
|
119
|
+
} })));
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
export { FilterButtonOptions, OptionsFilterButton };
|
|
123
|
+
//# sourceMappingURL=OptionsFilterButton.js.map
|