| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | import React from 'react';import PropTypes from 'prop-types';import { isFunction } from 'lodash';import classnames from 'classnames';import { stepsClasses as css } from '@douyinfe/semi-foundation/steps/constants';import { IconChevronRight } from '@douyinfe/semi-icons';export interface NavStepProps {    title?: React.ReactNode;    className?: string;    style?: React.CSSProperties;    index?: number;    active?: boolean;    total?: number;    prefixCls?: string;    onChange?: () => void;    onClick?: React.MouseEventHandler<HTMLDivElement>;    onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;    "role"?: React.AriaRole;    "aria-label"?: React.AriaAttributes["aria-label"];}const NavStep = (props: NavStepProps) => {    const { prefixCls, className, title, style, active, index, total, onClick, onKeyDown, onChange } = props;    const classString = classnames(prefixCls, {        [`${prefixCls}-active`]: active    }, className);    const handleClick = (e: React.MouseEvent) => {        if (isFunction(onClick)) {            onClick(e);        }        onChange();    };    const handleKeyDown = (e) => {        if (e.key === 'Enter') {            if (isFunction(onKeyDown)) {                onKeyDown(e);            }            onChange();        }    };    return (        <div role={props["role"]} aria-label={props["aria-label"]} aria-current="step" tabIndex={0} className={classString} style={style} onClick={e => handleClick(e)} onKeyDown={handleKeyDown}>            <div className={`${prefixCls}-container`}>                <div className={`${prefixCls}-content`}>                    <div className={`${prefixCls}-title`}>                        {title}                    </div>                </div>                {index !== total - 1 && (                    <div className={`${prefixCls}-icon`}>                        <IconChevronRight size="small" />                    </div>                )}            </div>        </div>    );};NavStep.propTypes = {    prefixCls: PropTypes.string,    title: PropTypes.node,    className: PropTypes.string,    style: PropTypes.object,    onClick: PropTypes.func,    active: PropTypes.bool,};NavStep.defaultProps = {    prefixCls: css.ITEM,    active: false,    className: '',};export default NavStep;
 |