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.

218 lines (176 loc) 8.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 }); exports.default = void 0; var _styledComponents = _interopRequireWildcard(require("styled-components")); var React = _interopRequireWildcard(require("react")); var _orbitDesignTokens = require("@kiwicom/orbit-design-tokens"); var _mediaQuery = _interopRequireDefault(require("../utils/mediaQuery")); var _ButtonLink = _interopRequireDefault(require("../ButtonLink")); var _Stack = _interopRequireDefault(require("../Stack")); var _Text = _interopRequireDefault(require("../Text")); var _useTheme = _interopRequireDefault(require("../hooks/useTheme")); var _WizardStepIcon = _interopRequireWildcard(require("./WizardStepIcon")); var _WizardContext = require("./WizardContext"); var _defaultTheme = _interopRequireDefault(require("../defaultTheme")); var _rtl = require("../utils/rtl"); const StyledBorder = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledBorder", componentId: "sc-v1tvdj-0" })(["", ""], ({ theme }) => (0, _styledComponents.css)(["border-top:1px solid ", ";position:absolute;bottom:0px;width:100%;left:40px;"], theme.orbit.paletteCloudDark)); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledBorder.defaultProps = { theme: _defaultTheme.default }; const StyledContainer = _styledComponents.default.li.withConfig({ displayName: "WizardStep__StyledContainer", componentId: "sc-v1tvdj-1" })(["", ""], ({ theme, isCompact, status }) => (0, _styledComponents.css)(["position:relative;margin:-1px 0;", " ", ""], isCompact && (0, _styledComponents.css)(["button{border-radius:0;}", ""], status === "disabled" && (0, _styledComponents.css)(["background:", ";button{opacity:1;}"], theme.orbit.paletteCloudLight)), _mediaQuery.default.desktop((0, _styledComponents.css)(["&:hover{", "{transition:box-shadow ", " ease-in;box-shadow:", ";}}"], _WizardStepIcon.StyledStepIconContainer, theme.orbit.durationFast, status !== "disabled" && `0 0 0 6px ${(0, _orbitDesignTokens.convertHexToRgba)(theme.orbit.paletteProductNormal, 20)}`)))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledContainer.defaultProps = { theme: _defaultTheme.default }; const StyledContent = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledContent", componentId: "sc-v1tvdj-2" })(["position:relative;"]); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledContent.defaultProps = { theme: _defaultTheme.default }; const StyledActiveMarker = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledActiveMarker", componentId: "sc-v1tvdj-3" })(["", ""], ({ theme }) => (0, _styledComponents.css)(["position:absolute;top:1px;", ":0;bottom:1px;width:2px;border-top-", "-radius:", ";border-bottom-", "-radius:", ";background:", ";pointer-events:none;"], _rtl.left, _rtl.right, theme.orbit.borderRadiusNormal, _rtl.right, theme.orbit.borderRadiusNormal, theme.orbit.paletteProductNormal)); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledActiveMarker.defaultProps = { theme: _defaultTheme.default }; const StyledProgressBar = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledProgressBar", componentId: "sc-v1tvdj-4" })(["", ""], ({ theme, status, nextStepStatus }) => (0, _styledComponents.css)(["position:relative;&:before,&:after{content:\"\";display:block;position:absolute;top:", "px;width:50%;height:2px;}&:before{", ":0;background:", ";}&:after{", ":0;background:", ";}"], parseFloat(theme.orbit.heightIconSmall) / 2 - 1, _rtl.left, status === "disabled" ? theme.orbit.paletteCloudNormalHover : theme.orbit.paletteProductNormal, _rtl.right, status === "disabled" || nextStepStatus === "disabled" ? theme.orbit.paletteCloudNormalHover : theme.orbit.paletteProductNormal)); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledProgressBar.defaultProps = { theme: _defaultTheme.default }; const StyledLabel = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledLabel", componentId: "sc-v1tvdj-5" })(["", ";"], ({ theme, active }) => (0, _styledComponents.css)(["display:block;span{display:block;color:", ";}", ""], theme.orbit.colorTextSecondary, active && (0, _styledComponents.css)(["span{font-weight:", ";color:", ";}"], theme.orbit.fontWeightMedium, theme.orbit.colorTextPrimary))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledLabel.defaultProps = { theme: _defaultTheme.default }; const StyledButtonWrapper = _styledComponents.default.div.withConfig({ displayName: "WizardStep__StyledButtonWrapper", componentId: "sc-v1tvdj-6" })(["", ""], ({ theme, active }) => (0, _styledComponents.css)(["cursor:pointer;padding:0 ", ";", ""], theme.orbit.spaceXSmall, !active && (0, _styledComponents.css)(["&:hover,&:focus{", "{span{text-decoration:underline;color:", ";}}}"], StyledLabel, theme.orbit.colorTextPrimary))); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledButtonWrapper.defaultProps = { theme: _defaultTheme.default }; const WizardStep = ({ dataTest, title, onClick }) => { const theme = (0, _useTheme.default)(); const { index, status, nextStepStatus, isCompact, isActive, onChangeStep, onClose } = React.useContext(_WizardContext.WizardStepContext); const handleClick = event => { if (onClick) onClick(event); if (onChangeStep) onChangeStep(index); onClose(); }; if (isCompact) { return /*#__PURE__*/React.createElement(StyledContainer, { "data-test": dataTest, isCompact: isCompact, status: status }, /*#__PURE__*/React.createElement(_ButtonLink.default, { disabled: status === "disabled", type: "secondary", fullWidth: true, iconLeft: /*#__PURE__*/React.createElement(_WizardStepIcon.default, null), ariaCurrent: isActive ? "step" : "false", onClick: handleClick }, status === "disabled" ? /*#__PURE__*/React.createElement(_Text.default, { as: "span", type: "secondary" }, title) : title), isActive && /*#__PURE__*/React.createElement(StyledActiveMarker, null), status !== "disabled" && /*#__PURE__*/React.createElement(StyledBorder, null)); } const step = /*#__PURE__*/React.createElement(_Stack.default, { flex: true, direction: "column", align: "center", spacing: "XSmall" }, /*#__PURE__*/React.createElement(_WizardStepIcon.default, null), /*#__PURE__*/React.createElement(_StyledDiv, { $_css: theme.orbit.paddingBadge }, status === "disabled" ? /*#__PURE__*/React.createElement(_Text.default, { as: "div", type: "secondary", size: "small", align: "center" }, title) : /*#__PURE__*/React.createElement(StyledLabel, { active: isActive }, /*#__PURE__*/React.createElement(_Text.default, { as: "span", size: "small", align: "center" }, title)))); return /*#__PURE__*/React.createElement(StyledContainer, { "data-test": dataTest, isCompact: isCompact, status: status }, /*#__PURE__*/React.createElement(StyledProgressBar, { status: status, nextStepStatus: nextStepStatus }), /*#__PURE__*/React.createElement(StyledContent, null, /*#__PURE__*/React.createElement(_Stack.default, { flex: true, direction: "column", align: "center" }, status === "disabled" ? step : /*#__PURE__*/React.createElement(StyledButtonWrapper, { active: isActive, role: "button", tabIndex: 0, "aria-current": isActive ? "step" : "false", onClick: event => { event.currentTarget.blur(); handleClick(event); } // keep focus for people who are navigating with the keyboard , onKeyDown: event => { if (event.key === "Enter") { handleClick(event); } } }, step)))); }; var _default = WizardStep; exports.default = _default; var _StyledDiv = (0, _styledComponents.default)("div").withConfig({ displayName: "WizardStep___StyledDiv", componentId: "sc-v1tvdj-7" })(["padding:", ";"], p => p.$_css);