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.

126 lines (125 loc) 5.26 kB
"use strict"; "use client"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; exports.__esModule = true; exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _clsx = _interopRequireDefault(require("clsx")); var _ButtonLink = _interopRequireDefault(require("../ButtonLink")); var _Stack = _interopRequireDefault(require("../Stack")); var _Text = _interopRequireDefault(require("../Text")); var _WizardStepIcon = _interopRequireDefault(require("./WizardStepIcon")); var _WizardContext = require("./WizardContext"); const ProgressBarPart = ({ isColumn, className }) => { return /*#__PURE__*/React.createElement("div", { className: (0, _clsx.default)("absolute", isColumn ? "w-50 h-1000 top-[calc(theme(size.icon-small)+1px)] ltr:left-[calc(theme(size.icon-small)+1px)] rtl:right-[calc(theme(size.icon-small)+1px)]" : "h-50 top-[calc(theme(size.icon-small)/2-1px)] w-1/2", className) }); }; const WizardStep = ({ dataTest, title, onClick, isCompleted }) => { const { index, status, isColumnOnDesktop, nextStepStatus, isCompact, isActive, onChangeStep, onClose, isLastStep } = React.useContext(_WizardContext.WizardStepContext); const handleClick = event => { if (onClick) onClick(event); if (onChangeStep) onChangeStep(index); onClose(); }; if (isCompact) { return /*#__PURE__*/React.createElement("li", { className: (0, _clsx.default)("relative -my-px [&_button]:rounded-none", status === "disabled" && "[&_button]:bg-cloud-light [&_button]:opacity-100"), "data-test": dataTest }, /*#__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("div", { className: "w-50 bg-product-normal rounded-e-100 absolute inset-y-px ltr:left-0 rtl:right-0" }), status !== "disabled" && /*#__PURE__*/React.createElement("div", { className: "border-cloud-normal ms-1000 absolute inset-x-0 bottom-0 border-t border-solid" })); } const step = /*#__PURE__*/React.createElement(_Stack.default, { flex: true, direction: isColumnOnDesktop ? "row" : "column", align: isColumnOnDesktop ? "start" : "center", spacing: "200", spaceAfter: isColumnOnDesktop ? "large" : "none" }, /*#__PURE__*/React.createElement(_WizardStepIcon.default, { isCompleted: isCompleted }), /*#__PURE__*/React.createElement("div", { className: "px-200" }, status === "disabled" ? /*#__PURE__*/React.createElement(_Text.default, { as: "div", type: "secondary", size: "small", align: "center" }, title) : /*#__PURE__*/React.createElement("div", { className: (0, _clsx.default)("block [&_span]:block", !isActive && "group-hover/button:[&_span]:text-primary-foreground group-focus/button:[&_span]:text-primary-foreground group-hover/button:[&_span]:underline group-focus/button:[&_span]:underline") }, /*#__PURE__*/React.createElement(_Text.default, { as: "span", size: "small", align: "center", type: isActive ? "primary" : "secondary", weight: isActive ? "medium" : "normal" }, title)))); return /*#__PURE__*/React.createElement("li", { className: "group/container relative -my-px flex-1", "data-test": dataTest }, /*#__PURE__*/React.createElement("div", { className: "relative" }, /*#__PURE__*/React.createElement(ProgressBarPart, { isColumn: isColumnOnDesktop, className: (0, _clsx.default)(isColumnOnDesktop ? "hidden" : "ltr:left-0 rtl:right-0", status === "disabled" ? "bg-cloud-normal-hover" : "bg-product-normal") }), /*#__PURE__*/React.createElement(ProgressBarPart, { isColumn: isColumnOnDesktop, className: (0, _clsx.default)(!isColumnOnDesktop && "ltr:right-0 rtl:left-0", isColumnOnDesktop && isLastStep && "hidden", status === "disabled" || nextStepStatus === "disabled" ? "bg-cloud-normal-hover" : "bg-product-normal") })), /*#__PURE__*/React.createElement("div", { className: "relative" }, /*#__PURE__*/React.createElement(_Stack.default, { flex: true, direction: "column", align: isColumnOnDesktop ? "start" : "center" }, status === "disabled" ? /*#__PURE__*/React.createElement("span", { className: "px-200" }, step) : /*#__PURE__*/React.createElement("div", { className: "group/button px-200 cursor-pointer", 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 = exports.default = WizardStep;