wix-style-react
Version:
wix-style-react
100 lines (99 loc) • 3.24 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Step = _interopRequireDefault(require("./components/Step"));
var _constants = require("./constants");
var _StepperSt = require("./Stepper.st.css");
var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/dist/cjs/Stepper/Stepper.js";
/** Stepper */
class Stepper extends _react.default.PureComponent {
constructor() {
super(...arguments);
this._getActiveStepType = () => {
var {
activeStep,
steps
} = this.props;
var step = steps[activeStep];
return step.type !== _constants.StepType.Disabled ? step.type : undefined;
};
}
render() {
var {
dataHook,
steps,
type,
fit,
activeStep,
onClick
} = this.props;
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _StepperSt.st)(_StepperSt.classes.root, {
fit
}),
"data-hook": dataHook,
"data-type": type,
"data-fit": fit,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 61,
columnNumber: 7
}
}, steps.map((step, index) => {
var isLastStep = index === steps.length - 1;
var isActiveStep = index === activeStep;
return /*#__PURE__*/_react.default.createElement(_Step.default, (0, _extends2.default)({}, step, {
key: index,
number: index + 1,
active: isActiveStep,
last: isLastStep,
type: isActiveStep ? this._getActiveStepType() : step.type,
styleType: type,
onClick: onClick && (() => onClick(index)),
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 72,
columnNumber: 13
}
}));
}));
}
}
Stepper.displayName = 'Stepper';
Stepper.propTypes = {
/** Hook for testing purposes. */
dataHook: _propTypes.default.string,
/** Event triggered on step click: `onClick(stepIndex)` */
onClick: _propTypes.default.func,
/** Index of the active step. */
activeStep: _propTypes.default.number.isRequired,
/**
* An array of steps, where each step is an object with the following properties:
* - `text` - step title text (required).
* - `type` - step type (`completed`, `disabled`, `error` or default `normal`).
*/
steps: _propTypes.default.arrayOf(_propTypes.default.shape({
text: _propTypes.default.string.isRequired,
type: _propTypes.default.oneOf(Object.values(_constants.StepType))
})).isRequired,
/** Style type. */
type: _propTypes.default.oneOf(['circle', 'text']),
/**
* Fit mode for steps. In `stretched` mode the component will grow to fill parent
* container width.
*/
fit: _propTypes.default.oneOf(['compact', 'stretched'])
};
Stepper.defaultProps = {
steps: [],
type: 'circle',
fit: 'compact'
};
var _default = exports.default = Stepper;
//# sourceMappingURL=Stepper.js.map