UNPKG

10.1 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _refType = _interopRequireDefault(require("@mui/utils/refType"));
14var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15var _colorManipulator = require("@mui/system/colorManipulator");
16var _SwitchBase = _interopRequireDefault(require("../internal/SwitchBase"));
17var _CheckBoxOutlineBlank = _interopRequireDefault(require("../internal/svg-icons/CheckBoxOutlineBlank"));
18var _CheckBox = _interopRequireDefault(require("../internal/svg-icons/CheckBox"));
19var _IndeterminateCheckBox = _interopRequireDefault(require("../internal/svg-icons/IndeterminateCheckBox"));
20var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
21var _rootShouldForwardProp = _interopRequireDefault(require("../styles/rootShouldForwardProp"));
22var _checkboxClasses = _interopRequireWildcard(require("./checkboxClasses"));
23var _zeroStyled = require("../zero-styled");
24var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
25var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
26var _DefaultPropsProvider = require("../DefaultPropsProvider");
27var _jsxRuntime = require("react/jsx-runtime");
28const useUtilityClasses = ownerState => {
29 const {
30 classes,
31 indeterminate,
32 color,
33 size
34 } = ownerState;
35 const slots = {
36 root: ['root', indeterminate && 'indeterminate', `color${(0, _capitalize.default)(color)}`, `size${(0, _capitalize.default)(size)}`]
37 };
38 const composedClasses = (0, _composeClasses.default)(slots, _checkboxClasses.getCheckboxUtilityClass, classes);
39 return {
40 ...classes,
41 // forward the disabled and checked classes to the SwitchBase
42 ...composedClasses
43 };
44};
45const CheckboxRoot = (0, _zeroStyled.styled)(_SwitchBase.default, {
46 shouldForwardProp: prop => (0, _rootShouldForwardProp.default)(prop) || prop === 'classes',
47 name: 'MuiCheckbox',
48 slot: 'Root',
49 overridesResolver: (props, styles) => {
50 const {
51 ownerState
52 } = props;
53 return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${(0, _capitalize.default)(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${(0, _capitalize.default)(ownerState.color)}`]];
54 }
55})((0, _memoTheme.default)(({
56 theme
57}) => ({
58 color: (theme.vars || theme).palette.text.secondary,
59 variants: [{
60 props: {
61 color: 'default',
62 disableRipple: false
63 },
64 style: {
65 '&:hover': {
66 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)
67 }
68 }
69 }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
70 props: {
71 color,
72 disableRipple: false
73 },
74 style: {
75 '&:hover': {
76 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)
77 }
78 }
79 })), ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
80 props: {
81 color
82 },
83 style: {
84 [`&.${_checkboxClasses.default.checked}, &.${_checkboxClasses.default.indeterminate}`]: {
85 color: (theme.vars || theme).palette[color].main
86 },
87 [`&.${_checkboxClasses.default.disabled}`]: {
88 color: (theme.vars || theme).palette.action.disabled
89 }
90 }
91 })), {
92 // Should be last to override other colors
93 props: {
94 disableRipple: false
95 },
96 style: {
97 // Reset on touch devices, it doesn't add specificity
98 '&:hover': {
99 '@media (hover: none)': {
100 backgroundColor: 'transparent'
101 }
102 }
103 }
104 }]
105})));
106const defaultCheckedIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckBox.default, {});
107const defaultIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckBoxOutlineBlank.default, {});
108const defaultIndeterminateIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_IndeterminateCheckBox.default, {});
109const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {
110 const props = (0, _DefaultPropsProvider.useDefaultProps)({
111 props: inProps,
112 name: 'MuiCheckbox'
113 });
114 const {
115 checkedIcon = defaultCheckedIcon,
116 color = 'primary',
117 icon: iconProp = defaultIcon,
118 indeterminate = false,
119 indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,
120 inputProps,
121 size = 'medium',
122 disableRipple = false,
123 className,
124 ...other
125 } = props;
126 const icon = indeterminate ? indeterminateIconProp : iconProp;
127 const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;
128 const ownerState = {
129 ...props,
130 disableRipple,
131 color,
132 indeterminate,
133 size
134 };
135 const classes = useUtilityClasses(ownerState);
136 return /*#__PURE__*/(0, _jsxRuntime.jsx)(CheckboxRoot, {
137 type: "checkbox",
138 inputProps: {
139 'data-indeterminate': indeterminate,
140 ...inputProps
141 },
142 icon: /*#__PURE__*/React.cloneElement(icon, {
143 fontSize: icon.props.fontSize ?? size
144 }),
145 checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {
146 fontSize: indeterminateIcon.props.fontSize ?? size
147 }),
148 ownerState: ownerState,
149 ref: ref,
150 className: (0, _clsx.default)(classes.root, className),
151 disableRipple: disableRipple,
152 ...other,
153 classes: classes
154 });
155});
156process.env.NODE_ENV !== "production" ? Checkbox.propTypes /* remove-proptypes */ = {
157 // ┌────────────────────────────── Warning ──────────────────────────────┐
158 // │ These PropTypes are generated from the TypeScript type definitions. │
159 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
160 // └─────────────────────────────────────────────────────────────────────┘
161 /**
162 * If `true`, the component is checked.
163 */
164 checked: _propTypes.default.bool,
165 /**
166 * The icon to display when the component is checked.
167 * @default <CheckBoxIcon />
168 */
169 checkedIcon: _propTypes.default.node,
170 /**
171 * Override or extend the styles applied to the component.
172 */
173 classes: _propTypes.default.object,
174 /**
175 * @ignore
176 */
177 className: _propTypes.default.string,
178 /**
179 * The color of the component.
180 * It supports both default and custom theme colors, which can be added as shown in the
181 * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
182 * @default 'primary'
183 */
184 color: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), _propTypes.default.string]),
185 /**
186 * The default checked state. Use when the component is not controlled.
187 */
188 defaultChecked: _propTypes.default.bool,
189 /**
190 * If `true`, the component is disabled.
191 * @default false
192 */
193 disabled: _propTypes.default.bool,
194 /**
195 * If `true`, the ripple effect is disabled.
196 * @default false
197 */
198 disableRipple: _propTypes.default.bool,
199 /**
200 * The icon to display when the component is unchecked.
201 * @default <CheckBoxOutlineBlankIcon />
202 */
203 icon: _propTypes.default.node,
204 /**
205 * The id of the `input` element.
206 */
207 id: _propTypes.default.string,
208 /**
209 * If `true`, the component appears indeterminate.
210 * This does not set the native input element to indeterminate due
211 * to inconsistent behavior across browsers.
212 * However, we set a `data-indeterminate` attribute on the `input`.
213 * @default false
214 */
215 indeterminate: _propTypes.default.bool,
216 /**
217 * The icon to display when the component is indeterminate.
218 * @default <IndeterminateCheckBoxIcon />
219 */
220 indeterminateIcon: _propTypes.default.node,
221 /**
222 * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
223 */
224 inputProps: _propTypes.default.object,
225 /**
226 * Pass a ref to the `input` element.
227 */
228 inputRef: _refType.default,
229 /**
230 * Callback fired when the state is changed.
231 *
232 * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
233 * You can pull out the new checked state by accessing `event.target.checked` (boolean).
234 */
235 onChange: _propTypes.default.func,
236 /**
237 * If `true`, the `input` element is required.
238 * @default false
239 */
240 required: _propTypes.default.bool,
241 /**
242 * The size of the component.
243 * `small` is equivalent to the dense checkbox styling.
244 * @default 'medium'
245 */
246 size: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['medium', 'small']), _propTypes.default.string]),
247 /**
248 * The system prop that allows defining system overrides as well as additional CSS styles.
249 */
250 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]),
251 /**
252 * The value of the component. The DOM API casts this to a string.
253 * The browser uses "on" as the default value.
254 */
255 value: _propTypes.default.any
256} : void 0;
257var _default = exports.default = Checkbox;
\No newline at end of file