UNPKG

5.76 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 _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _zeroStyled = require("../zero-styled");
15var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _Add = _interopRequireDefault(require("../internal/svg-icons/Add"));
18var _speedDialIconClasses = _interopRequireWildcard(require("./speedDialIconClasses"));
19var _jsxRuntime = require("react/jsx-runtime");
20const useUtilityClasses = ownerState => {
21 const {
22 classes,
23 open,
24 openIcon
25 } = ownerState;
26 const slots = {
27 root: ['root'],
28 icon: ['icon', open && 'iconOpen', openIcon && open && 'iconWithOpenIconOpen'],
29 openIcon: ['openIcon', open && 'openIconOpen']
30 };
31 return (0, _composeClasses.default)(slots, _speedDialIconClasses.getSpeedDialIconUtilityClass, classes);
32};
33const SpeedDialIconRoot = (0, _zeroStyled.styled)('span', {
34 name: 'MuiSpeedDialIcon',
35 slot: 'Root',
36 overridesResolver: (props, styles) => {
37 const {
38 ownerState
39 } = props;
40 return [{
41 [`& .${_speedDialIconClasses.default.icon}`]: styles.icon
42 }, {
43 [`& .${_speedDialIconClasses.default.icon}`]: ownerState.open && styles.iconOpen
44 }, {
45 [`& .${_speedDialIconClasses.default.icon}`]: ownerState.open && ownerState.openIcon && styles.iconWithOpenIconOpen
46 }, {
47 [`& .${_speedDialIconClasses.default.openIcon}`]: styles.openIcon
48 }, {
49 [`& .${_speedDialIconClasses.default.openIcon}`]: ownerState.open && styles.openIconOpen
50 }, styles.root];
51 }
52})((0, _memoTheme.default)(({
53 theme
54}) => ({
55 height: 24,
56 [`& .${_speedDialIconClasses.default.icon}`]: {
57 transition: theme.transitions.create(['transform', 'opacity'], {
58 duration: theme.transitions.duration.short
59 })
60 },
61 [`& .${_speedDialIconClasses.default.openIcon}`]: {
62 position: 'absolute',
63 transition: theme.transitions.create(['transform', 'opacity'], {
64 duration: theme.transitions.duration.short
65 }),
66 opacity: 0,
67 transform: 'rotate(-45deg)'
68 },
69 variants: [{
70 props: ({
71 ownerState
72 }) => ownerState.open,
73 style: {
74 [`& .${_speedDialIconClasses.default.icon}`]: {
75 transform: 'rotate(45deg)'
76 }
77 }
78 }, {
79 props: ({
80 ownerState
81 }) => ownerState.open && ownerState.openIcon,
82 style: {
83 [`& .${_speedDialIconClasses.default.icon}`]: {
84 opacity: 0
85 }
86 }
87 }, {
88 props: ({
89 ownerState
90 }) => ownerState.open,
91 style: {
92 [`& .${_speedDialIconClasses.default.openIcon}`]: {
93 transform: 'rotate(0deg)',
94 opacity: 1
95 }
96 }
97 }]
98})));
99const SpeedDialIcon = /*#__PURE__*/React.forwardRef(function SpeedDialIcon(inProps, ref) {
100 const props = (0, _DefaultPropsProvider.useDefaultProps)({
101 props: inProps,
102 name: 'MuiSpeedDialIcon'
103 });
104 const {
105 className,
106 icon: iconProp,
107 open,
108 openIcon: openIconProp,
109 ...other
110 } = props;
111 const ownerState = props;
112 const classes = useUtilityClasses(ownerState);
113 function formatIcon(icon, newClassName) {
114 if (/*#__PURE__*/React.isValidElement(icon)) {
115 return /*#__PURE__*/React.cloneElement(icon, {
116 className: newClassName
117 });
118 }
119 return icon;
120 }
121 return /*#__PURE__*/(0, _jsxRuntime.jsxs)(SpeedDialIconRoot, {
122 className: (0, _clsx.default)(classes.root, className),
123 ref: ref,
124 ownerState: ownerState,
125 ...other,
126 children: [openIconProp ? formatIcon(openIconProp, classes.openIcon) : null, iconProp ? formatIcon(iconProp, classes.icon) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Add.default, {
127 className: classes.icon
128 })]
129 });
130});
131process.env.NODE_ENV !== "production" ? SpeedDialIcon.propTypes /* remove-proptypes */ = {
132 // ┌────────────────────────────── Warning ──────────────────────────────┐
133 // │ These PropTypes are generated from the TypeScript type definitions. │
134 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
135 // └─────────────────────────────────────────────────────────────────────┘
136 /**
137 * Override or extend the styles applied to the component.
138 */
139 classes: _propTypes.default.object,
140 /**
141 * @ignore
142 */
143 className: _propTypes.default.string,
144 /**
145 * The icon to display.
146 */
147 icon: _propTypes.default.node,
148 /**
149 * @ignore
150 * If `true`, the component is shown.
151 */
152 open: _propTypes.default.bool,
153 /**
154 * The icon to display in the SpeedDial Floating Action Button when the SpeedDial is open.
155 */
156 openIcon: _propTypes.default.node,
157 /**
158 * The system prop that allows defining system overrides as well as additional CSS styles.
159 */
160 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])
161} : void 0;
162SpeedDialIcon.muiName = 'SpeedDialIcon';
163var _default = exports.default = SpeedDialIcon;
\No newline at end of file