1 | "use strict";
|
2 | 'use client';
|
3 |
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
5 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
6 | Object.defineProperty(exports, "__esModule", {
|
7 | value: true
|
8 | });
|
9 | exports.default = void 0;
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
12 | var _clsx = _interopRequireDefault(require("clsx"));
|
13 | var _refType = _interopRequireDefault(require("@mui/utils/refType"));
|
14 | var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
15 | var _colorManipulator = require("@mui/system/colorManipulator");
|
16 | var _SwitchBase = _interopRequireDefault(require("../internal/SwitchBase"));
|
17 | var _RadioButtonIcon = _interopRequireDefault(require("./RadioButtonIcon"));
|
18 | var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
|
19 | var _createChainedFunction = _interopRequireDefault(require("../utils/createChainedFunction"));
|
20 | var _useFormControl = _interopRequireDefault(require("../FormControl/useFormControl"));
|
21 | var _useRadioGroup = _interopRequireDefault(require("../RadioGroup/useRadioGroup"));
|
22 | var _radioClasses = _interopRequireWildcard(require("./radioClasses"));
|
23 | var _rootShouldForwardProp = _interopRequireDefault(require("../styles/rootShouldForwardProp"));
|
24 | var _zeroStyled = require("../zero-styled");
|
25 | var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
|
26 | var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
|
27 | var _DefaultPropsProvider = require("../DefaultPropsProvider");
|
28 | var _jsxRuntime = require("react/jsx-runtime");
|
29 | const useUtilityClasses = ownerState => {
|
30 | const {
|
31 | classes,
|
32 | color,
|
33 | size
|
34 | } = ownerState;
|
35 | const slots = {
|
36 | root: ['root', `color${(0, _capitalize.default)(color)}`, size !== 'medium' && `size${(0, _capitalize.default)(size)}`]
|
37 | };
|
38 | return {
|
39 | ...classes,
|
40 | ...(0, _composeClasses.default)(slots, _radioClasses.getRadioUtilityClass, classes)
|
41 | };
|
42 | };
|
43 | const RadioRoot = (0, _zeroStyled.styled)(_SwitchBase.default, {
|
44 | shouldForwardProp: prop => (0, _rootShouldForwardProp.default)(prop) || prop === 'classes',
|
45 | name: 'MuiRadio',
|
46 | slot: 'Root',
|
47 | overridesResolver: (props, styles) => {
|
48 | const {
|
49 | ownerState
|
50 | } = props;
|
51 | return [styles.root, ownerState.size !== 'medium' && styles[`size${(0, _capitalize.default)(ownerState.size)}`], styles[`color${(0, _capitalize.default)(ownerState.color)}`]];
|
52 | }
|
53 | })((0, _memoTheme.default)(({
|
54 | theme
|
55 | }) => ({
|
56 | color: (theme.vars || theme).palette.text.secondary,
|
57 | [`&.${_radioClasses.default.disabled}`]: {
|
58 | color: (theme.vars || theme).palette.action.disabled
|
59 | },
|
60 | variants: [{
|
61 | props: {
|
62 | color: 'default',
|
63 | disabled: false,
|
64 | disableRipple: false
|
65 | },
|
66 | style: {
|
67 | '&:hover': {
|
68 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, _colorManipulator.alpha)(theme.palette.action.active, theme.palette.action.hoverOpacity)
|
69 | }
|
70 | }
|
71 | }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
|
72 | props: {
|
73 | color,
|
74 | disabled: false,
|
75 | disableRipple: false
|
76 | },
|
77 | style: {
|
78 | '&:hover': {
|
79 | backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, _colorManipulator.alpha)(theme.palette[color].main, theme.palette.action.hoverOpacity)
|
80 | }
|
81 | }
|
82 | })), ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
|
83 | props: {
|
84 | color,
|
85 | disabled: false
|
86 | },
|
87 | style: {
|
88 | [`&.${_radioClasses.default.checked}`]: {
|
89 | color: (theme.vars || theme).palette[color].main
|
90 | }
|
91 | }
|
92 | })), {
|
93 |
|
94 | props: {
|
95 | disableRipple: false
|
96 | },
|
97 | style: {
|
98 |
|
99 | '&:hover': {
|
100 | '@media (hover: none)': {
|
101 | backgroundColor: 'transparent'
|
102 | }
|
103 | }
|
104 | }
|
105 | }]
|
106 | })));
|
107 | function areEqualValues(a, b) {
|
108 | if (typeof b === 'object' && b !== null) {
|
109 | return a === b;
|
110 | }
|
111 |
|
112 |
|
113 | return String(a) === String(b);
|
114 | }
|
115 | const defaultCheckedIcon = (0, _jsxRuntime.jsx)(_RadioButtonIcon.default, {
|
116 | checked: true
|
117 | });
|
118 | const defaultIcon = (0, _jsxRuntime.jsx)(_RadioButtonIcon.default, {});
|
119 | const Radio = React.forwardRef(function Radio(inProps, ref) {
|
120 | const props = (0, _DefaultPropsProvider.useDefaultProps)({
|
121 | props: inProps,
|
122 | name: 'MuiRadio'
|
123 | });
|
124 | const {
|
125 | checked: checkedProp,
|
126 | checkedIcon = defaultCheckedIcon,
|
127 | color = 'primary',
|
128 | icon = defaultIcon,
|
129 | name: nameProp,
|
130 | onChange: onChangeProp,
|
131 | size = 'medium',
|
132 | className,
|
133 | disabled: disabledProp,
|
134 | disableRipple = false,
|
135 | ...other
|
136 | } = props;
|
137 | const muiFormControl = (0, _useFormControl.default)();
|
138 | let disabled = disabledProp;
|
139 | if (muiFormControl) {
|
140 | if (typeof disabled === 'undefined') {
|
141 | disabled = muiFormControl.disabled;
|
142 | }
|
143 | }
|
144 | disabled ?? (disabled = false);
|
145 | const ownerState = {
|
146 | ...props,
|
147 | disabled,
|
148 | disableRipple,
|
149 | color,
|
150 | size
|
151 | };
|
152 | const classes = useUtilityClasses(ownerState);
|
153 | const radioGroup = (0, _useRadioGroup.default)();
|
154 | let checked = checkedProp;
|
155 | const onChange = (0, _createChainedFunction.default)(onChangeProp, radioGroup && radioGroup.onChange);
|
156 | let name = nameProp;
|
157 | if (radioGroup) {
|
158 | if (typeof checked === 'undefined') {
|
159 | checked = areEqualValues(radioGroup.value, props.value);
|
160 | }
|
161 | if (typeof name === 'undefined') {
|
162 | name = radioGroup.name;
|
163 | }
|
164 | }
|
165 | return (0, _jsxRuntime.jsx)(RadioRoot, {
|
166 | type: "radio",
|
167 | icon: React.cloneElement(icon, {
|
168 | fontSize: defaultIcon.props.fontSize ?? size
|
169 | }),
|
170 | checkedIcon: React.cloneElement(checkedIcon, {
|
171 | fontSize: defaultCheckedIcon.props.fontSize ?? size
|
172 | }),
|
173 | disabled: disabled,
|
174 | ownerState: ownerState,
|
175 | classes: classes,
|
176 | name: name,
|
177 | checked: checked,
|
178 | onChange: onChange,
|
179 | ref: ref,
|
180 | className: (0, _clsx.default)(classes.root, className),
|
181 | ...other
|
182 | });
|
183 | });
|
184 | process.env.NODE_ENV !== "production" ? Radio.propTypes = {
|
185 |
|
186 |
|
187 |
|
188 |
|
189 | |
190 |
|
191 |
|
192 | checked: _propTypes.default.bool,
|
193 | |
194 |
|
195 |
|
196 |
|
197 | checkedIcon: _propTypes.default.node,
|
198 | |
199 |
|
200 |
|
201 | classes: _propTypes.default.object,
|
202 | |
203 |
|
204 |
|
205 | className: _propTypes.default.string,
|
206 | |
207 |
|
208 |
|
209 |
|
210 |
|
211 |
|
212 | color: _propTypes.default .oneOfType([_propTypes.default.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), _propTypes.default.string]),
|
213 | |
214 |
|
215 |
|
216 | disabled: _propTypes.default.bool,
|
217 | |
218 |
|
219 |
|
220 |
|
221 | disableRipple: _propTypes.default.bool,
|
222 | |
223 |
|
224 |
|
225 |
|
226 | icon: _propTypes.default.node,
|
227 | |
228 |
|
229 |
|
230 | id: _propTypes.default.string,
|
231 | |
232 |
|
233 |
|
234 | inputProps: _propTypes.default.object,
|
235 | |
236 |
|
237 |
|
238 | inputRef: _refType.default,
|
239 | |
240 |
|
241 |
|
242 | name: _propTypes.default.string,
|
243 | |
244 |
|
245 |
|
246 |
|
247 |
|
248 |
|
249 |
|
250 | onChange: _propTypes.default.func,
|
251 | |
252 |
|
253 |
|
254 |
|
255 | required: _propTypes.default.bool,
|
256 | |
257 |
|
258 |
|
259 |
|
260 |
|
261 | size: _propTypes.default .oneOfType([_propTypes.default.oneOf(['medium', 'small']), _propTypes.default.string]),
|
262 | |
263 |
|
264 |
|
265 | 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]),
|
266 | |
267 |
|
268 |
|
269 | value: _propTypes.default.any
|
270 | } : void 0;
|
271 | var _default = exports.default = Radio; |
\ | No newline at end of file |