@astral/ui 4.20.0 → 4.21.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/components/ToggleButton/ToggleButton.js +2 -2
- package/components/ToggleButton/styles.d.ts +1 -0
- package/components/ToggleButton/styles.js +6 -6
- package/components/ToggleButton/useLogic/useLogic.d.ts +1 -0
- package/components/ToggleButton/useLogic/useLogic.js +4 -1
- package/components/ToggleButtonGroup/ToggleButtonGroup.d.ts +10 -0
- package/components/ToggleButtonGroup/ToggleButtonGroup.js +2 -2
- package/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContext.d.ts +1 -0
- package/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContext.js +1 -0
- package/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContextProvider/ToggleButtonGroupContextProvider.d.ts +1 -1
- package/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContextProvider/ToggleButtonGroupContextProvider.js +2 -2
- package/node/components/ToggleButton/ToggleButton.js +2 -2
- package/node/components/ToggleButton/styles.d.ts +1 -0
- package/node/components/ToggleButton/styles.js +6 -6
- package/node/components/ToggleButton/useLogic/useLogic.d.ts +1 -0
- package/node/components/ToggleButton/useLogic/useLogic.js +3 -0
- package/node/components/ToggleButtonGroup/ToggleButtonGroup.d.ts +10 -0
- package/node/components/ToggleButtonGroup/ToggleButtonGroup.js +2 -2
- package/node/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContext.d.ts +1 -0
- package/node/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContext.js +1 -0
- package/node/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContextProvider/ToggleButtonGroupContextProvider.d.ts +1 -1
- package/node/components/ToggleButtonGroup/ToggleButtonGroupContext/ToggleButtonGroupContextProvider/ToggleButtonGroupContextProvider.js +2 -2
- package/package.json +1 -1
|
@@ -3,6 +3,6 @@ import { forwardRef } from 'react';
|
|
|
3
3
|
import { StyledToggleButton } from './styles';
|
|
4
4
|
import { useLogic } from './useLogic';
|
|
5
5
|
export const ToggleButton = forwardRef((props, ref) => {
|
|
6
|
-
const { isVisibleCounter, children, disabled, counterLabel, color, selected, restProps, } = useLogic(props);
|
|
7
|
-
return (_jsxs(StyledToggleButton, { ref: ref, disabled: disabled, selected: selected, ...restProps, "$color": color, children: [children, isVisibleCounter && _jsxs(_Fragment, { children: [" \u00B7 ", counterLabel] })] }));
|
|
6
|
+
const { isVisibleCounter, children, disabled, counterLabel, color, selected, restProps, variant, } = useLogic(props);
|
|
7
|
+
return (_jsxs(StyledToggleButton, { ref: ref, disabled: disabled, selected: selected, ...restProps, "$color": color, "$variant": variant, children: [children, isVisibleCounter && _jsxs(_Fragment, { children: [" \u00B7 ", counterLabel] })] }));
|
|
8
8
|
});
|
|
@@ -19,7 +19,7 @@ const getColor = ({ color = 'primary', isSelected, state = 'default', theme, isD
|
|
|
19
19
|
}
|
|
20
20
|
return theme.palette.grey[800];
|
|
21
21
|
};
|
|
22
|
-
const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, isDisabled, }) => {
|
|
22
|
+
const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, isDisabled, variant, }) => {
|
|
23
23
|
if (isDisabled) {
|
|
24
24
|
return theme.palette.background.default;
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@ const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, i
|
|
|
32
32
|
if (state === 'active' || isSelected) {
|
|
33
33
|
return theme.palette[color][100];
|
|
34
34
|
}
|
|
35
|
-
return theme.palette.background.default;
|
|
35
|
+
return variant === 'plain' ? theme.palette.background.default : 'transparent';
|
|
36
36
|
};
|
|
37
37
|
const getBorderColor = ({ state = 'default', color = 'primary', theme, isSelected, }) => {
|
|
38
38
|
if (state === 'hover' && isSelected) {
|
|
@@ -43,14 +43,14 @@ const getBorderColor = ({ state = 'default', color = 'primary', theme, isSelecte
|
|
|
43
43
|
}
|
|
44
44
|
return theme.palette.grey[100];
|
|
45
45
|
};
|
|
46
|
-
const toggleButtonColorStyle = ({ theme, color, selected, disabled, state = 'default', }) => css `
|
|
46
|
+
const toggleButtonColorStyle = ({ theme, color, selected, disabled, state = 'default', variant = 'transparent', }) => css `
|
|
47
47
|
color: ${getColor({ theme, color, isSelected: selected, isDisabled: disabled, state })};
|
|
48
48
|
|
|
49
|
-
background-color: ${getBgColor({ theme, color, isSelected: selected, isDisabled: disabled, state })};
|
|
49
|
+
background-color: ${getBgColor({ theme, color, isSelected: selected, isDisabled: disabled, state, variant })};
|
|
50
50
|
border-color: ${getBorderColor({ theme, color, isSelected: selected, state })};
|
|
51
51
|
`;
|
|
52
52
|
export const StyledToggleButton = styled(MuiToggleButton, {
|
|
53
|
-
shouldForwardProp: (prop) => !['$color'].includes(prop),
|
|
53
|
+
shouldForwardProp: (prop) => !['$color', '$variant'].includes(prop),
|
|
54
54
|
}) `
|
|
55
55
|
gap: ${({ theme }) => theme.spacing(1)};
|
|
56
56
|
|
|
@@ -62,7 +62,7 @@ export const StyledToggleButton = styled(MuiToggleButton, {
|
|
|
62
62
|
|
|
63
63
|
border-radius: ${({ theme }) => theme.shape.medium};
|
|
64
64
|
|
|
65
|
-
${({ theme, $color, disabled }) => toggleButtonColorStyle({ theme, color: $color, disabled })}
|
|
65
|
+
${({ theme, $color, disabled, $variant }) => toggleButtonColorStyle({ theme, color: $color, disabled, variant: $variant })}
|
|
66
66
|
|
|
67
67
|
&:hover {
|
|
68
68
|
${({ theme, $color, disabled }) => toggleButtonColorStyle({ theme, color: $color, disabled, state: 'hover' })};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
|
+
import { ToggleButtonGroupContext } from '../../ToggleButtonGroup';
|
|
2
3
|
export const useLogic = ({ selected, color = 'primary', counter, children, disabled, counterMax = 99, ...restProps }) => {
|
|
3
4
|
const isVisibleCounter = Boolean(counter);
|
|
5
|
+
const { variant } = useContext(ToggleButtonGroupContext);
|
|
4
6
|
const counterLabel = useMemo(() => {
|
|
5
7
|
if (!isVisibleCounter) {
|
|
6
8
|
return undefined;
|
|
@@ -20,5 +22,6 @@ export const useLogic = ({ selected, color = 'primary', counter, children, disab
|
|
|
20
22
|
selected,
|
|
21
23
|
counterLabel,
|
|
22
24
|
restProps,
|
|
25
|
+
variant,
|
|
23
26
|
};
|
|
24
27
|
};
|
|
@@ -10,5 +10,15 @@ export type ToggleButtonGroupProps = WithoutEmotionSpecific<Omit<MuiToggleButton
|
|
|
10
10
|
* Текстовая информация об ошибке, будет отображен в тултипе при isError: true
|
|
11
11
|
*/
|
|
12
12
|
errorText?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Определяет стиль отображения группы кнопок
|
|
15
|
+
*
|
|
16
|
+
* - `transparent` — прозрачный фон кнопок ToggleButton
|
|
17
|
+
*
|
|
18
|
+
* - `plain` — белый фон кнопок ToggleButton
|
|
19
|
+
*
|
|
20
|
+
* @default transparent
|
|
21
|
+
*/
|
|
22
|
+
variant?: 'transparent' | 'plain';
|
|
13
23
|
};
|
|
14
24
|
export declare const ToggleButtonGroup: import("react").ForwardRefExoticComponent<Omit<ToggleButtonGroupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -4,6 +4,6 @@ import { Tooltip } from '../Tooltip';
|
|
|
4
4
|
import { StyledToggleButtonGroup } from './styles';
|
|
5
5
|
import { ToggleButtonGroupContextProvider } from './ToggleButtonGroupContext';
|
|
6
6
|
export const ToggleButtonGroup = forwardRef((props, ref) => {
|
|
7
|
-
const { size = 'medium', isError, errorText, ...restProps } = props;
|
|
8
|
-
return (_jsx(ToggleButtonGroupContextProvider, { isError: isError, children: _jsx(Tooltip, { title: isError && errorText, followCursor: true, arrow: false, children: _jsx(StyledToggleButtonGroup, { ref: ref, size: size, ...restProps, "$isError": isError }) }) }));
|
|
7
|
+
const { size = 'medium', isError, errorText, variant = 'transparent', ...restProps } = props;
|
|
8
|
+
return (_jsx(ToggleButtonGroupContextProvider, { isError: isError, variant: variant, children: _jsx(Tooltip, { title: isError && errorText, followCursor: true, arrow: false, children: _jsx(StyledToggleButtonGroup, { ref: ref, size: size, ...restProps, "$isError": isError }) }) }));
|
|
9
9
|
});
|
|
@@ -3,4 +3,4 @@ import { type ToggleButtonGroupContextProps } from '../ToggleButtonGroupContext'
|
|
|
3
3
|
export type Props = ToggleButtonGroupContextProps & {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
};
|
|
6
|
-
export declare const ToggleButtonGroupContextProvider: ({ children, isError, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const ToggleButtonGroupContextProvider: ({ children, isError, variant, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ToggleButtonGroupContext, } from '../ToggleButtonGroupContext';
|
|
3
|
-
export const ToggleButtonGroupContextProvider = ({ children, isError, }) => {
|
|
4
|
-
return (_jsx(ToggleButtonGroupContext.Provider, { value: { isError }, children: children }));
|
|
3
|
+
export const ToggleButtonGroupContextProvider = ({ children, isError, variant, }) => {
|
|
4
|
+
return (_jsx(ToggleButtonGroupContext.Provider, { value: { isError, variant }, children: children }));
|
|
5
5
|
};
|
|
@@ -6,6 +6,6 @@ const react_1 = require("react");
|
|
|
6
6
|
const styles_1 = require("./styles");
|
|
7
7
|
const useLogic_1 = require("./useLogic");
|
|
8
8
|
exports.ToggleButton = (0, react_1.forwardRef)((props, ref) => {
|
|
9
|
-
const { isVisibleCounter, children, disabled, counterLabel, color, selected, restProps, } = (0, useLogic_1.useLogic)(props);
|
|
10
|
-
return ((0, jsx_runtime_1.jsxs)(styles_1.StyledToggleButton, { ref: ref, disabled: disabled, selected: selected, ...restProps, "$color": color, children: [children, isVisibleCounter && (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [" \u00B7 ", counterLabel] })] }));
|
|
9
|
+
const { isVisibleCounter, children, disabled, counterLabel, color, selected, restProps, variant, } = (0, useLogic_1.useLogic)(props);
|
|
10
|
+
return ((0, jsx_runtime_1.jsxs)(styles_1.StyledToggleButton, { ref: ref, disabled: disabled, selected: selected, ...restProps, "$color": color, "$variant": variant, children: [children, isVisibleCounter && (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [" \u00B7 ", counterLabel] })] }));
|
|
11
11
|
});
|
|
@@ -45,7 +45,7 @@ const getColor = ({ color = 'primary', isSelected, state = 'default', theme, isD
|
|
|
45
45
|
}
|
|
46
46
|
return theme.palette.grey[800];
|
|
47
47
|
};
|
|
48
|
-
const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, isDisabled, }) => {
|
|
48
|
+
const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, isDisabled, variant, }) => {
|
|
49
49
|
if (isDisabled) {
|
|
50
50
|
return theme.palette.background.default;
|
|
51
51
|
}
|
|
@@ -58,7 +58,7 @@ const getBgColor = ({ color = 'primary', isSelected, state = 'default', theme, i
|
|
|
58
58
|
if (state === 'active' || isSelected) {
|
|
59
59
|
return theme.palette[color][100];
|
|
60
60
|
}
|
|
61
|
-
return theme.palette.background.default;
|
|
61
|
+
return variant === 'plain' ? theme.palette.background.default : 'transparent';
|
|
62
62
|
};
|
|
63
63
|
const getBorderColor = ({ state = 'default', color = 'primary', theme, isSelected, }) => {
|
|
64
64
|
if (state === 'hover' && isSelected) {
|
|
@@ -69,14 +69,14 @@ const getBorderColor = ({ state = 'default', color = 'primary', theme, isSelecte
|
|
|
69
69
|
}
|
|
70
70
|
return theme.palette.grey[100];
|
|
71
71
|
};
|
|
72
|
-
const toggleButtonColorStyle = ({ theme, color, selected, disabled, state = 'default', }) => (0, styled_1.css) `
|
|
72
|
+
const toggleButtonColorStyle = ({ theme, color, selected, disabled, state = 'default', variant = 'transparent', }) => (0, styled_1.css) `
|
|
73
73
|
color: ${getColor({ theme, color, isSelected: selected, isDisabled: disabled, state })};
|
|
74
74
|
|
|
75
|
-
background-color: ${getBgColor({ theme, color, isSelected: selected, isDisabled: disabled, state })};
|
|
75
|
+
background-color: ${getBgColor({ theme, color, isSelected: selected, isDisabled: disabled, state, variant })};
|
|
76
76
|
border-color: ${getBorderColor({ theme, color, isSelected: selected, state })};
|
|
77
77
|
`;
|
|
78
78
|
exports.StyledToggleButton = (0, styled_1.styled)(ToggleButton_1.default, {
|
|
79
|
-
shouldForwardProp: (prop) => !['$color'].includes(prop),
|
|
79
|
+
shouldForwardProp: (prop) => !['$color', '$variant'].includes(prop),
|
|
80
80
|
}) `
|
|
81
81
|
gap: ${({ theme }) => theme.spacing(1)};
|
|
82
82
|
|
|
@@ -88,7 +88,7 @@ exports.StyledToggleButton = (0, styled_1.styled)(ToggleButton_1.default, {
|
|
|
88
88
|
|
|
89
89
|
border-radius: ${({ theme }) => theme.shape.medium};
|
|
90
90
|
|
|
91
|
-
${({ theme, $color, disabled }) => toggleButtonColorStyle({ theme, color: $color, disabled })}
|
|
91
|
+
${({ theme, $color, disabled, $variant }) => toggleButtonColorStyle({ theme, color: $color, disabled, variant: $variant })}
|
|
92
92
|
|
|
93
93
|
&:hover {
|
|
94
94
|
${({ theme, $color, disabled }) => toggleButtonColorStyle({ theme, color: $color, disabled, state: 'hover' })};
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useLogic = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
+
const ToggleButtonGroup_1 = require("../../ToggleButtonGroup");
|
|
5
6
|
const useLogic = ({ selected, color = 'primary', counter, children, disabled, counterMax = 99, ...restProps }) => {
|
|
6
7
|
const isVisibleCounter = Boolean(counter);
|
|
8
|
+
const { variant } = (0, react_1.useContext)(ToggleButtonGroup_1.ToggleButtonGroupContext);
|
|
7
9
|
const counterLabel = (0, react_1.useMemo)(() => {
|
|
8
10
|
if (!isVisibleCounter) {
|
|
9
11
|
return undefined;
|
|
@@ -23,6 +25,7 @@ const useLogic = ({ selected, color = 'primary', counter, children, disabled, co
|
|
|
23
25
|
selected,
|
|
24
26
|
counterLabel,
|
|
25
27
|
restProps,
|
|
28
|
+
variant,
|
|
26
29
|
};
|
|
27
30
|
};
|
|
28
31
|
exports.useLogic = useLogic;
|
|
@@ -10,5 +10,15 @@ export type ToggleButtonGroupProps = WithoutEmotionSpecific<Omit<MuiToggleButton
|
|
|
10
10
|
* Текстовая информация об ошибке, будет отображен в тултипе при isError: true
|
|
11
11
|
*/
|
|
12
12
|
errorText?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Определяет стиль отображения группы кнопок
|
|
15
|
+
*
|
|
16
|
+
* - `transparent` — прозрачный фон кнопок ToggleButton
|
|
17
|
+
*
|
|
18
|
+
* - `plain` — белый фон кнопок ToggleButton
|
|
19
|
+
*
|
|
20
|
+
* @default transparent
|
|
21
|
+
*/
|
|
22
|
+
variant?: 'transparent' | 'plain';
|
|
13
23
|
};
|
|
14
24
|
export declare const ToggleButtonGroup: import("react").ForwardRefExoticComponent<Omit<ToggleButtonGroupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -7,6 +7,6 @@ const Tooltip_1 = require("../Tooltip");
|
|
|
7
7
|
const styles_1 = require("./styles");
|
|
8
8
|
const ToggleButtonGroupContext_1 = require("./ToggleButtonGroupContext");
|
|
9
9
|
exports.ToggleButtonGroup = (0, react_1.forwardRef)((props, ref) => {
|
|
10
|
-
const { size = 'medium', isError, errorText, ...restProps } = props;
|
|
11
|
-
return ((0, jsx_runtime_1.jsx)(ToggleButtonGroupContext_1.ToggleButtonGroupContextProvider, { isError: isError, children: (0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { title: isError && errorText, followCursor: true, arrow: false, children: (0, jsx_runtime_1.jsx)(styles_1.StyledToggleButtonGroup, { ref: ref, size: size, ...restProps, "$isError": isError }) }) }));
|
|
10
|
+
const { size = 'medium', isError, errorText, variant = 'transparent', ...restProps } = props;
|
|
11
|
+
return ((0, jsx_runtime_1.jsx)(ToggleButtonGroupContext_1.ToggleButtonGroupContextProvider, { isError: isError, variant: variant, children: (0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { title: isError && errorText, followCursor: true, arrow: false, children: (0, jsx_runtime_1.jsx)(styles_1.StyledToggleButtonGroup, { ref: ref, size: size, ...restProps, "$isError": isError }) }) }));
|
|
12
12
|
});
|
|
@@ -3,4 +3,4 @@ import { type ToggleButtonGroupContextProps } from '../ToggleButtonGroupContext'
|
|
|
3
3
|
export type Props = ToggleButtonGroupContextProps & {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
};
|
|
6
|
-
export declare const ToggleButtonGroupContextProvider: ({ children, isError, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const ToggleButtonGroupContextProvider: ({ children, isError, variant, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ToggleButtonGroupContextProvider = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const ToggleButtonGroupContext_1 = require("../ToggleButtonGroupContext");
|
|
6
|
-
const ToggleButtonGroupContextProvider = ({ children, isError, }) => {
|
|
7
|
-
return ((0, jsx_runtime_1.jsx)(ToggleButtonGroupContext_1.ToggleButtonGroupContext.Provider, { value: { isError }, children: children }));
|
|
6
|
+
const ToggleButtonGroupContextProvider = ({ children, isError, variant, }) => {
|
|
7
|
+
return ((0, jsx_runtime_1.jsx)(ToggleButtonGroupContext_1.ToggleButtonGroupContext.Provider, { value: { isError, variant }, children: children }));
|
|
8
8
|
};
|
|
9
9
|
exports.ToggleButtonGroupContextProvider = ToggleButtonGroupContextProvider;
|