import { Component } from 'react'; import classNames from 'classnames'; import Icon, { IconType } from '../../icon'; export interface IStepProps { title?: React.ReactNode; description?: React.ReactNode; status?: 'wait' | 'finish' | 'error'; isCurrentStep?: boolean; isLastFinishStep?: boolean; stepLast?: boolean; stepNumber?: string; sequence?: boolean; disabled?: boolean; icon?: IconType | React.ReactNode; } export default class Step extends Component { static defaultProps = { description: '', }; renderIconNode = () => { const { stepNumber, sequence, status = 'wait', icon } = this.props; let iconNode; if (icon) { const iconNode = typeof icon === 'string' ? : icon; return <>{iconNode}; } if (status === 'finish') { iconNode = ; } else if (status === 'error') { iconNode = ; } else { iconNode = ( {sequence ? stepNumber : ''} ); } return iconNode; }; render() { const props = this.props; const { isCurrentStep, status = 'wait', isLastFinishStep, stepLast, title, description, } = props; const classString = classNames( 'zent-steps-item', `zent-steps-status-${status}`, { 'zent-steps-item--current': isCurrentStep, 'zent-steps-item--last-finished': isLastFinishStep, } ); return (
{!stepLast && (
)}
{this.renderIconNode()}
{title}
{description && (
{description}
)}
); } }