UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

144 lines (117 loc) 5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "WizardStep", { enumerable: true, get: function () { return _WizardStep.default; } }); exports.default = void 0; var _styledComponents = _interopRequireWildcard(require("styled-components")); var React = _interopRequireWildcard(require("react")); var _WizardStep = _interopRequireDefault(require("./WizardStep")); var _WizardContext = require("./WizardContext"); var _Button = _interopRequireDefault(require("../Button")); var _ButtonLink = _interopRequireDefault(require("../ButtonLink")); var _Stack = _interopRequireDefault(require("../Stack")); var _ChevronDown = _interopRequireDefault(require("../icons/ChevronDown")); var _Portal = _interopRequireDefault(require("../Portal")); var _Modal = _interopRequireDefault(require("../Modal")); var _Card = require("../Card"); var _useMediaQuery = _interopRequireDefault(require("../hooks/useMediaQuery")); var _useTranslate = _interopRequireDefault(require("../hooks/useTranslate")); const unstyledListMixin = (0, _styledComponents.css)(["list-style-type:none;margin:0;padding:0;"]); const Wizard = ({ dataTest, lockScrolling = true, id, completedSteps, activeStep, children, onChangeStep }) => { var _childrenArray$find; const { isLargeMobile } = (0, _useMediaQuery.default)(); const [open, setOpen] = React.useState(false); const toggle = React.useRef(null); const translate = (0, _useTranslate.default)(); const isCompact = !isLargeMobile; const childrenArray = React.Children.toArray(children); const stepStatuses = childrenArray.map((step, index) => { if (index < completedSteps) return "completed"; if (index === completedSteps) return "available"; return "disabled"; }); // $FlowFixMe: not sure why "props" evaluates to "mixed" const activeStepTitle = (_childrenArray$find = childrenArray.find((step, index) => index === activeStep)) === null || _childrenArray$find === void 0 ? void 0 : _childrenArray$find.props.title; const stepsCount = React.Children.count(children); const steps = React.Children.map(children, (step, index) => /*#__PURE__*/React.createElement(_WizardContext.WizardStepContext.Provider, { value: { index, status: stepStatuses[index], nextStepStatus: stepStatuses[index + 1], isCompact, isActive: activeStep === index, onChangeStep, onClose: () => setOpen(false) } }, step)); if (isCompact) { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Button.default, { ref: toggle, dataTest: dataTest, ariaControls: id, ariaExpanded: open, type: "secondary", fullWidth: true, iconRight: /*#__PURE__*/React.createElement(_ChevronDown.default, null), onClick: () => { setOpen(true); } }, /*#__PURE__*/React.createElement(_Stack.default, { as: "span", inline: true }, /*#__PURE__*/React.createElement("b", null, translate("wizard_progress", { number: activeStep + 1, total: stepsCount })), " ", /*#__PURE__*/React.createElement(_StyledSpan, null, activeStepTitle))), /*#__PURE__*/React.createElement(_Portal.default, null, /*#__PURE__*/React.createElement("div", { id: id }, open && /*#__PURE__*/React.createElement(_Modal.default, { hasCloseButton: false, lockScrolling: lockScrolling, onClose: () => { setOpen(false); } }, /*#__PURE__*/React.createElement(_StyledNav, null, /*#__PURE__*/React.createElement(_StyledUl, null, steps, /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement(_Card.CardSection, null, /*#__PURE__*/React.createElement(_Button.default, { type: "secondary", fullWidth: true, onClick: () => { setOpen(false); } }, translate("button_close")))))))))); } return /*#__PURE__*/React.createElement("nav", null, /*#__PURE__*/React.createElement(_StyledUl2, null, steps)); }; var _default = Wizard; exports.default = _default; var _StyledSpan = (0, _styledComponents.default)("span").withConfig({ displayName: "Wizard___StyledSpan", componentId: "sc-ao87p0-0" })(["font-weight:normal;"]); var _StyledNav = (0, _styledComponents.default)("nav").withConfig({ displayName: "Wizard___StyledNav", componentId: "sc-ao87p0-1" })(["padding-top:9px;"]); var _StyledUl = (0, _styledComponents.default)("ul").withConfig({ displayName: "Wizard___StyledUl", componentId: "sc-ao87p0-2" })(["", ";"], unstyledListMixin); var _StyledUl2 = (0, _styledComponents.default)("ul").withConfig({ displayName: "Wizard___StyledUl2", componentId: "sc-ao87p0-3" })(["", ";display:flex;li{flex:1 1 0%;}"], unstyledListMixin);