UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

122 lines (121 loc) 3.04 kB
'use strict'; 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; });