1 | "use strict";
|
2 | 'use client';
|
3 |
|
4 |
|
5 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
6 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports.default = void 0;
|
11 | var React = _interopRequireWildcard(require("react"));
|
12 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
13 | var _clsx = _interopRequireDefault(require("clsx"));
|
14 | var _resolveProps = _interopRequireDefault(require("@mui/utils/resolveProps"));
|
15 | var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
16 | var _colorManipulator = require("@mui/system/colorManipulator");
|
17 | var _ButtonBase = _interopRequireDefault(require("../ButtonBase"));
|
18 | var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
|
19 | var _zeroStyled = require("../zero-styled");
|
20 | var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
|
21 | var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
|
22 | var _DefaultPropsProvider = require("../DefaultPropsProvider");
|
23 | var _toggleButtonClasses = _interopRequireWildcard(require("./toggleButtonClasses"));
|
24 | var _ToggleButtonGroupContext = _interopRequireDefault(require("../ToggleButtonGroup/ToggleButtonGroupContext"));
|
25 | var _ToggleButtonGroupButtonContext = _interopRequireDefault(require("../ToggleButtonGroup/ToggleButtonGroupButtonContext"));
|
26 | var _isValueSelected = _interopRequireDefault(require("../ToggleButtonGroup/isValueSelected"));
|
27 | var _jsxRuntime = require("react/jsx-runtime");
|
28 | const useUtilityClasses = ownerState => {
|
29 | const {
|
30 | classes,
|
31 | fullWidth,
|
32 | selected,
|
33 | disabled,
|
34 | size,
|
35 | color
|
36 | } = ownerState;
|
37 | const slots = {
|
38 | root: ['root', selected && 'selected', disabled && 'disabled', fullWidth && 'fullWidth', `size${(0, _capitalize.default)(size)}`, color]
|
39 | };
|
40 | return (0, _composeClasses.default)(slots, _toggleButtonClasses.getToggleButtonUtilityClass, classes);
|
41 | };
|
42 | const ToggleButtonRoot = (0, _zeroStyled.styled)(_ButtonBase.default, {
|
43 | name: 'MuiToggleButton',
|
44 | slot: 'Root',
|
45 | overridesResolver: (props, styles) => {
|
46 | const {
|
47 | ownerState
|
48 | } = props;
|
49 | return [styles.root, styles[`size${(0, _capitalize.default)(ownerState.size)}`]];
|
50 | }
|
51 | })((0, _memoTheme.default)(({
|
52 | theme
|
53 | }) => ({
|
54 | ...theme.typography.button,
|
55 | borderRadius: (theme.vars || theme).shape.borderRadius,
|
56 | padding: 11,
|
57 | border: `1px solid ${(theme.vars || theme).palette.divider}`,
|
58 | color: (theme.vars || theme).palette.action.active,
|
59 | [`&.${_toggleButtonClasses.default.disabled}`]: {
|
60 | color: (theme.vars || theme).palette.action.disabled,
|
61 | border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`
|
62 | },
|
63 | '&:hover': {
|
64 | textDecoration: 'none',
|
65 |
|
66 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, _colorManipulator.alpha)(theme.palette.text.primary, theme.palette.action.hoverOpacity),
|
67 | '@media (hover: none)': {
|
68 | backgroundColor: 'transparent'
|
69 | }
|
70 | },
|
71 | variants: [{
|
72 | props: {
|
73 | color: 'standard'
|
74 | },
|
75 | style: {
|
76 | [`&.${_toggleButtonClasses.default.selected}`]: {
|
77 | color: (theme.vars || theme).palette.text.primary,
|
78 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _colorManipulator.alpha)(theme.palette.text.primary, theme.palette.action.selectedOpacity),
|
79 | '&:hover': {
|
80 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, _colorManipulator.alpha)(theme.palette.text.primary, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
|
81 |
|
82 | '@media (hover: none)': {
|
83 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _colorManipulator.alpha)(theme.palette.text.primary, theme.palette.action.selectedOpacity)
|
84 | }
|
85 | }
|
86 | }
|
87 | }
|
88 | }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
|
89 | props: {
|
90 | color
|
91 | },
|
92 | style: {
|
93 | [`&.${_toggleButtonClasses.default.selected}`]: {
|
94 | color: (theme.vars || theme).palette[color].main,
|
95 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _colorManipulator.alpha)(theme.palette[color].main, theme.palette.action.selectedOpacity),
|
96 | '&:hover': {
|
97 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, _colorManipulator.alpha)(theme.palette[color].main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
|
98 |
|
99 | '@media (hover: none)': {
|
100 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _colorManipulator.alpha)(theme.palette[color].main, theme.palette.action.selectedOpacity)
|
101 | }
|
102 | }
|
103 | }
|
104 | }
|
105 | })), {
|
106 | props: {
|
107 | fullWidth: true
|
108 | },
|
109 | style: {
|
110 | width: '100%'
|
111 | }
|
112 | }, {
|
113 | props: {
|
114 | size: 'small'
|
115 | },
|
116 | style: {
|
117 | padding: 7,
|
118 | fontSize: theme.typography.pxToRem(13)
|
119 | }
|
120 | }, {
|
121 | props: {
|
122 | size: 'large'
|
123 | },
|
124 | style: {
|
125 | padding: 15,
|
126 | fontSize: theme.typography.pxToRem(15)
|
127 | }
|
128 | }]
|
129 | })));
|
130 | const ToggleButton = React.forwardRef(function ToggleButton(inProps, ref) {
|
131 |
|
132 | const {
|
133 | value: contextValue,
|
134 | ...contextProps
|
135 | } = React.useContext(_ToggleButtonGroupContext.default);
|
136 | const toggleButtonGroupButtonContextPositionClassName = React.useContext(_ToggleButtonGroupButtonContext.default);
|
137 | const resolvedProps = (0, _resolveProps.default)({
|
138 | ...contextProps,
|
139 | selected: (0, _isValueSelected.default)(inProps.value, contextValue)
|
140 | }, inProps);
|
141 | const props = (0, _DefaultPropsProvider.useDefaultProps)({
|
142 | props: resolvedProps,
|
143 | name: 'MuiToggleButton'
|
144 | });
|
145 | const {
|
146 | children,
|
147 | className,
|
148 | color = 'standard',
|
149 | disabled = false,
|
150 | disableFocusRipple = false,
|
151 | fullWidth = false,
|
152 | onChange,
|
153 | onClick,
|
154 | selected,
|
155 | size = 'medium',
|
156 | value,
|
157 | ...other
|
158 | } = props;
|
159 | const ownerState = {
|
160 | ...props,
|
161 | color,
|
162 | disabled,
|
163 | disableFocusRipple,
|
164 | fullWidth,
|
165 | size
|
166 | };
|
167 | const classes = useUtilityClasses(ownerState);
|
168 | const handleChange = event => {
|
169 | if (onClick) {
|
170 | onClick(event, value);
|
171 | if (event.defaultPrevented) {
|
172 | return;
|
173 | }
|
174 | }
|
175 | if (onChange) {
|
176 | onChange(event, value);
|
177 | }
|
178 | };
|
179 | const positionClassName = toggleButtonGroupButtonContextPositionClassName || '';
|
180 | return (0, _jsxRuntime.jsx)(ToggleButtonRoot, {
|
181 | className: (0, _clsx.default)(contextProps.className, classes.root, className, positionClassName),
|
182 | disabled: disabled,
|
183 | focusRipple: !disableFocusRipple,
|
184 | ref: ref,
|
185 | onClick: handleChange,
|
186 | onChange: onChange,
|
187 | value: value,
|
188 | ownerState: ownerState,
|
189 | "aria-pressed": selected,
|
190 | ...other,
|
191 | children: children
|
192 | });
|
193 | });
|
194 | process.env.NODE_ENV !== "production" ? ToggleButton.propTypes = {
|
195 |
|
196 |
|
197 |
|
198 |
|
199 | |
200 |
|
201 |
|
202 | children: _propTypes.default.node,
|
203 | |
204 |
|
205 |
|
206 | classes: _propTypes.default.object,
|
207 | |
208 |
|
209 |
|
210 | className: _propTypes.default.string,
|
211 | |
212 |
|
213 |
|
214 |
|
215 |
|
216 |
|
217 | color: _propTypes.default .oneOfType([_propTypes.default.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), _propTypes.default.string]),
|
218 | |
219 |
|
220 |
|
221 |
|
222 | disabled: _propTypes.default.bool,
|
223 | |
224 |
|
225 |
|
226 |
|
227 | disableFocusRipple: _propTypes.default.bool,
|
228 | |
229 |
|
230 |
|
231 |
|
232 |
|
233 |
|
234 |
|
235 | disableRipple: _propTypes.default.bool,
|
236 | |
237 |
|
238 |
|
239 |
|
240 | fullWidth: _propTypes.default.bool,
|
241 | |
242 |
|
243 |
|
244 |
|
245 |
|
246 |
|
247 | onChange: _propTypes.default.func,
|
248 | |
249 |
|
250 |
|
251 |
|
252 |
|
253 |
|
254 | onClick: _propTypes.default.func,
|
255 | |
256 |
|
257 |
|
258 | selected: _propTypes.default.bool,
|
259 | |
260 |
|
261 |
|
262 |
|
263 |
|
264 | size: _propTypes.default .oneOfType([_propTypes.default.oneOf(['small', 'medium', 'large']), _propTypes.default.string]),
|
265 | |
266 |
|
267 |
|
268 | sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
|
269 | |
270 |
|
271 |
|
272 |
|
273 | value: _propTypes.default .any.isRequired
|
274 | } : void 0;
|
275 | var _default = exports.default = ToggleButton; |
\ | No newline at end of file |