@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
JavaScript
"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;