@itwin/itwinui-react
Version:
A react component library for iTwinUI
122 lines (121 loc) • 3.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'StepperStep', {
enumerable: true,
get: function () {
return StepperStep;
},
});
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _classnames = /*#__PURE__*/ _interop_require_default._(
require('classnames'),
);
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _Tooltip = require('../Tooltip/Tooltip.js');
const _index = require('../../utils/index.js');
const StepperStep = _react.forwardRef((props, forwardedRef) => {
let {
title,
index,
currentStepNumber,
totalSteps,
type,
onClick,
description,
className,
style,
stepProps,
trackContentProps,
circleProps,
nameProps,
stepContent,
...rest
} = props;
let isPast = currentStepNumber > index;
let isActive = currentStepNumber === index;
let isClickable = isPast && !!onClick;
let onCompletedClick = () => {
if (isClickable) onClick?.(index);
};
let onKeyDown = (e) => {
if (e.altKey) return;
if (!isClickable) return;
if ('Enter' === e.key || 'Space' === e.key || ' ' === e.key)
onCompletedClick();
};
let stepShape = _react.createElement(
_index.Box,
{
as: 'li',
...stepProps,
className: (0, _classnames.default)(
'iui-stepper-step',
{
'iui-current': isActive,
'iui-clickable': isClickable,
},
className,
stepProps?.className,
),
style: {
inlineSize: 'default' === type ? `${100 / totalSteps}%` : void 0,
...style,
...stepProps?.style,
},
onClick: onCompletedClick,
onKeyDown: onKeyDown,
'aria-current': isActive ? 'step' : void 0,
tabIndex: isClickable ? 0 : void 0,
ref: forwardedRef,
...rest,
},
_react.createElement(
_index.Box,
{
as: 'div',
...trackContentProps,
className: (0, _classnames.default)(
'iui-stepper-track-content',
trackContentProps?.className,
),
},
_react.createElement(
_index.Box,
{
as: 'span',
...circleProps,
className: (0, _classnames.default)(
'iui-stepper-circle',
circleProps?.className,
),
},
stepContent ? stepContent() : index + 1,
),
),
'default' === type &&
_react.createElement(
_index.Box,
{
as: 'span',
...nameProps,
className: (0, _classnames.default)(
'iui-stepper-step-name',
nameProps?.className,
),
},
title,
),
);
return description
? _react.createElement(
_Tooltip.Tooltip,
{
content: description,
},
stepShape,
)
: stepShape;
});