UNPKG

7.99 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 _integerPropType = _interopRequireDefault(require("@mui/utils/integerPropType"));
14var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15var _Paper = _interopRequireDefault(require("../Paper"));
16var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
17var _LinearProgress = _interopRequireDefault(require("../LinearProgress"));
18var _zeroStyled = require("../zero-styled");
19var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
20var _DefaultPropsProvider = require("../DefaultPropsProvider");
21var _slotShouldForwardProp = _interopRequireDefault(require("../styles/slotShouldForwardProp"));
22var _mobileStepperClasses = require("./mobileStepperClasses");
23var _jsxRuntime = require("react/jsx-runtime");
24const useUtilityClasses = ownerState => {
25 const {
26 classes,
27 position
28 } = ownerState;
29 const slots = {
30 root: ['root', `position${(0, _capitalize.default)(position)}`],
31 dots: ['dots'],
32 dot: ['dot'],
33 dotActive: ['dotActive'],
34 progress: ['progress']
35 };
36 return (0, _composeClasses.default)(slots, _mobileStepperClasses.getMobileStepperUtilityClass, classes);
37};
38const MobileStepperRoot = (0, _zeroStyled.styled)(_Paper.default, {
39 name: 'MuiMobileStepper',
40 slot: 'Root',
41 overridesResolver: (props, styles) => {
42 const {
43 ownerState
44 } = props;
45 return [styles.root, styles[`position${(0, _capitalize.default)(ownerState.position)}`]];
46 }
47})((0, _memoTheme.default)(({
48 theme
49}) => ({
50 display: 'flex',
51 flexDirection: 'row',
52 justifyContent: 'space-between',
53 alignItems: 'center',
54 background: (theme.vars || theme).palette.background.default,
55 padding: 8,
56 variants: [{
57 props: ({
58 position
59 }) => position === 'top' || position === 'bottom',
60 style: {
61 position: 'fixed',
62 left: 0,
63 right: 0,
64 zIndex: (theme.vars || theme).zIndex.mobileStepper
65 }
66 }, {
67 props: {
68 position: 'top'
69 },
70 style: {
71 top: 0
72 }
73 }, {
74 props: {
75 position: 'bottom'
76 },
77 style: {
78 bottom: 0
79 }
80 }]
81})));
82const MobileStepperDots = (0, _zeroStyled.styled)('div', {
83 name: 'MuiMobileStepper',
84 slot: 'Dots',
85 overridesResolver: (props, styles) => styles.dots
86})({
87 variants: [{
88 props: {
89 variant: 'dots'
90 },
91 style: {
92 display: 'flex',
93 flexDirection: 'row'
94 }
95 }]
96});
97const MobileStepperDot = (0, _zeroStyled.styled)('div', {
98 name: 'MuiMobileStepper',
99 slot: 'Dot',
100 shouldForwardProp: prop => (0, _slotShouldForwardProp.default)(prop) && prop !== 'dotActive',
101 overridesResolver: (props, styles) => {
102 const {
103 dotActive
104 } = props;
105 return [styles.dot, dotActive && styles.dotActive];
106 }
107})((0, _memoTheme.default)(({
108 theme
109}) => ({
110 variants: [{
111 props: {
112 variant: 'dots'
113 },
114 style: {
115 transition: theme.transitions.create('background-color', {
116 duration: theme.transitions.duration.shortest
117 }),
118 backgroundColor: (theme.vars || theme).palette.action.disabled,
119 borderRadius: '50%',
120 width: 8,
121 height: 8,
122 margin: '0 2px'
123 }
124 }, {
125 props: {
126 variant: 'dots',
127 dotActive: true
128 },
129 style: {
130 backgroundColor: (theme.vars || theme).palette.primary.main
131 }
132 }]
133})));
134const MobileStepperProgress = (0, _zeroStyled.styled)(_LinearProgress.default, {
135 name: 'MuiMobileStepper',
136 slot: 'Progress',
137 overridesResolver: (props, styles) => styles.progress
138})({
139 variants: [{
140 props: {
141 variant: 'progress'
142 },
143 style: {
144 width: '50%'
145 }
146 }]
147});
148const MobileStepper = /*#__PURE__*/React.forwardRef(function MobileStepper(inProps, ref) {
149 const props = (0, _DefaultPropsProvider.useDefaultProps)({
150 props: inProps,
151 name: 'MuiMobileStepper'
152 });
153 const {
154 activeStep = 0,
155 backButton,
156 className,
157 LinearProgressProps,
158 nextButton,
159 position = 'bottom',
160 steps,
161 variant = 'dots',
162 ...other
163 } = props;
164 const ownerState = {
165 ...props,
166 activeStep,
167 position,
168 variant
169 };
170 let value;
171 if (variant === 'progress') {
172 if (steps === 1) {
173 value = 100;
174 } else {
175 value = Math.ceil(activeStep / (steps - 1) * 100);
176 }
177 }
178 const classes = useUtilityClasses(ownerState);
179 return /*#__PURE__*/(0, _jsxRuntime.jsxs)(MobileStepperRoot, {
180 square: true,
181 elevation: 0,
182 className: (0, _clsx.default)(classes.root, className),
183 ref: ref,
184 ownerState: ownerState,
185 ...other,
186 children: [backButton, variant === 'text' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
187 children: [activeStep + 1, " / ", steps]
188 }), variant === 'dots' && /*#__PURE__*/(0, _jsxRuntime.jsx)(MobileStepperDots, {
189 ownerState: ownerState,
190 className: classes.dots,
191 children: [...new Array(steps)].map((_, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(MobileStepperDot, {
192 className: (0, _clsx.default)(classes.dot, index === activeStep && classes.dotActive),
193 ownerState: ownerState,
194 dotActive: index === activeStep
195 }, index))
196 }), variant === 'progress' && /*#__PURE__*/(0, _jsxRuntime.jsx)(MobileStepperProgress, {
197 ownerState: ownerState,
198 className: classes.progress,
199 variant: "determinate",
200 value: value,
201 ...LinearProgressProps
202 }), nextButton]
203 });
204});
205process.env.NODE_ENV !== "production" ? MobileStepper.propTypes /* remove-proptypes */ = {
206 // ┌────────────────────────────── Warning ──────────────────────────────┐
207 // │ These PropTypes are generated from the TypeScript type definitions. │
208 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
209 // └─────────────────────────────────────────────────────────────────────┘
210 /**
211 * Set the active step (zero based index).
212 * Defines which dot is highlighted when the variant is 'dots'.
213 * @default 0
214 */
215 activeStep: _integerPropType.default,
216 /**
217 * A back button element. For instance, it can be a `Button` or an `IconButton`.
218 */
219 backButton: _propTypes.default.node,
220 /**
221 * Override or extend the styles applied to the component.
222 */
223 classes: _propTypes.default.object,
224 /**
225 * @ignore
226 */
227 className: _propTypes.default.string,
228 /**
229 * Props applied to the `LinearProgress` element.
230 */
231 LinearProgressProps: _propTypes.default.object,
232 /**
233 * A next button element. For instance, it can be a `Button` or an `IconButton`.
234 */
235 nextButton: _propTypes.default.node,
236 /**
237 * Set the positioning type.
238 * @default 'bottom'
239 */
240 position: _propTypes.default.oneOf(['bottom', 'static', 'top']),
241 /**
242 * The total steps.
243 */
244 steps: _integerPropType.default.isRequired,
245 /**
246 * The system prop that allows defining system overrides as well as additional CSS styles.
247 */
248 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]),
249 /**
250 * The variant to use.
251 * @default 'dots'
252 */
253 variant: _propTypes.default.oneOf(['dots', 'progress', 'text'])
254} : void 0;
255var _default = exports.default = MobileStepper;
\No newline at end of file