UNPKG

5.84 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 _zeroStyled = require("../zero-styled");
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _stepperClasses = require("./stepperClasses");
18var _StepConnector = _interopRequireDefault(require("../StepConnector"));
19var _StepperContext = _interopRequireDefault(require("./StepperContext"));
20var _jsxRuntime = require("react/jsx-runtime");
21const useUtilityClasses = ownerState => {
22 const {
23 orientation,
24 nonLinear,
25 alternativeLabel,
26 classes
27 } = ownerState;
28 const slots = {
29 root: ['root', orientation, nonLinear && 'nonLinear', alternativeLabel && 'alternativeLabel']
30 };
31 return (0, _composeClasses.default)(slots, _stepperClasses.getStepperUtilityClass, classes);
32};
33const StepperRoot = (0, _zeroStyled.styled)('div', {
34 name: 'MuiStepper',
35 slot: 'Root',
36 overridesResolver: (props, styles) => {
37 const {
38 ownerState
39 } = props;
40 return [styles.root, styles[ownerState.orientation], ownerState.alternativeLabel && styles.alternativeLabel, ownerState.nonLinear && styles.nonLinear];
41 }
42})({
43 display: 'flex',
44 variants: [{
45 props: {
46 orientation: 'horizontal'
47 },
48 style: {
49 flexDirection: 'row',
50 alignItems: 'center'
51 }
52 }, {
53 props: {
54 orientation: 'vertical'
55 },
56 style: {
57 flexDirection: 'column'
58 }
59 }, {
60 props: {
61 alternativeLabel: true
62 },
63 style: {
64 alignItems: 'flex-start'
65 }
66 }]
67});
68const defaultConnector = /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepConnector.default, {});
69const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
70 const props = (0, _DefaultPropsProvider.useDefaultProps)({
71 props: inProps,
72 name: 'MuiStepper'
73 });
74 const {
75 activeStep = 0,
76 alternativeLabel = false,
77 children,
78 className,
79 component = 'div',
80 connector = defaultConnector,
81 nonLinear = false,
82 orientation = 'horizontal',
83 ...other
84 } = props;
85 const ownerState = {
86 ...props,
87 nonLinear,
88 alternativeLabel,
89 orientation,
90 component
91 };
92 const classes = useUtilityClasses(ownerState);
93 const childrenArray = React.Children.toArray(children).filter(Boolean);
94 const steps = childrenArray.map((step, index) => {
95 return /*#__PURE__*/React.cloneElement(step, {
96 index,
97 last: index + 1 === childrenArray.length,
98 ...step.props
99 });
100 });
101 const contextValue = React.useMemo(() => ({
102 activeStep,
103 alternativeLabel,
104 connector,
105 nonLinear,
106 orientation
107 }), [activeStep, alternativeLabel, connector, nonLinear, orientation]);
108 return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepperContext.default.Provider, {
109 value: contextValue,
110 children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StepperRoot, {
111 as: component,
112 ownerState: ownerState,
113 className: (0, _clsx.default)(classes.root, className),
114 ref: ref,
115 ...other,
116 children: steps
117 })
118 });
119});
120process.env.NODE_ENV !== "production" ? Stepper.propTypes /* remove-proptypes */ = {
121 // ┌────────────────────────────── Warning ──────────────────────────────┐
122 // │ These PropTypes are generated from the TypeScript type definitions. │
123 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
124 // └─────────────────────────────────────────────────────────────────────┘
125 /**
126 * Set the active step (zero based index).
127 * Set to -1 to disable all the steps.
128 * @default 0
129 */
130 activeStep: _integerPropType.default,
131 /**
132 * If set to 'true' and orientation is horizontal,
133 * then the step label will be positioned under the icon.
134 * @default false
135 */
136 alternativeLabel: _propTypes.default.bool,
137 /**
138 * Two or more `<Step />` components.
139 */
140 children: _propTypes.default.node,
141 /**
142 * Override or extend the styles applied to the component.
143 */
144 classes: _propTypes.default.object,
145 /**
146 * @ignore
147 */
148 className: _propTypes.default.string,
149 /**
150 * The component used for the root node.
151 * Either a string to use a HTML element or a component.
152 */
153 component: _propTypes.default.elementType,
154 /**
155 * An element to be placed between each step.
156 * @default <StepConnector />
157 */
158 connector: _propTypes.default.element,
159 /**
160 * If set the `Stepper` will not assist in controlling steps for linear flow.
161 * @default false
162 */
163 nonLinear: _propTypes.default.bool,
164 /**
165 * The component orientation (layout flow direction).
166 * @default 'horizontal'
167 */
168 orientation: _propTypes.default.oneOf(['horizontal', 'vertical']),
169 /**
170 * The system prop that allows defining system overrides as well as additional CSS styles.
171 */
172 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])
173} : void 0;
174var _default = exports.default = Stepper;
\No newline at end of file