import { ReactNode, CSSProperties } from 'react'; import type { LazyLoadProps } from './components/LazyLoad'; /** * 步骤项基础类型定义 * @interface ItemType */ export interface ItemType { /** 步骤名称 */ name: string; /** 步骤唯一标识码 */ code: string; /** 步骤排序值,越小越靠前 */ order?: number; } /** * 已加载地图项属性类型 * @interface LoadedMapPropsType */ export interface LoadedMapPropsType { /** 唯一标识符 */ id: string; /** 排序值 */ order: number; /** 标题文本 */ title: string; /** 是否已加载 */ loaded: boolean; } /** * @type LoadedMapType */ export type LoadedMapType = LoadedMapPropsType; /** * ProStep 组件属性类型 * @interface ProStepPropsType */ export interface ProStepPropsType { /** 步骤条配置项 */ dataSource?: ItemType[]; /** 距离顶部的偏移量(单位:像素) */ fixedTop: number; /** 当前激活的步骤标识 */ activeKey?: string; /** 子组件内容 */ children?: ReactNode; /** 组件自定义样式 */ style?: CSSProperties; /** 滚动偏移量(单位:像素) */ targetOffset?: number; /** 是否使用折叠标题 */ collapse?: boolean; /** 是否自动滚动到第一个报错的步骤 */ scrollToError?: boolean; /** * 模块可视区域懒加载 * @description 为true时使用默认配置,或传入自定义懒加载配置 */ lazyLoad?: boolean | LazyLoadProps; } /** * ProStep 子项组件属性类型 * @interface ProStepItemPropsType */ export interface ProStepItemPropsType { /** 唯一标识符 */ id: string; /** 步骤标题 */ title?: string; /** 是否使用折叠模式 */ collapse?: boolean; /** 排序值,越小越靠前 */ order?: number; /** * 模块可视区域懒加载 * @description 为true时使用默认配置,或传入自定义懒加载配置 */ lazyLoad?: boolean | LazyLoadProps; /** 允许其他任意属性 */ [key: string]: any; } /** * ProStep 子项组件基础类型 * @type ProStepItemType */ export type ProStepItemType = ProStepItemPropsType; /** * ProStep组件上下文类型 * @interface ProStepContextType */ export interface ProStepContextType { /** 注册映射引用 */ registerMap: React.MutableRefObject>; /** 是否折叠 */ collapse?: boolean; /** 注册函数 */ register: (params: RegisterParams) => void; /** 通知函数 */ notify: (params?: NotifyParams) => Promise; /** 触发特定项的函数 */ triggerTo: (keys: string[]) => Promise; /** 处理滚动的函数 */ handleScroll: (id: string, options?: ScrollOptions) => void; /** 懒加载配置 */ lazyLoad?: boolean | any; /** 滚动偏移量 */ targetOffset?: number; /** 取消注册函数 */ unNotify: (keys: string | string[]) => void; /** 来源 */ source?: string; } /** * 注册参数类型 * @interface RegisterParams */ export interface RegisterParams { /** 唯一标识符 */ id: string; /** 表单实例 */ form?: any; /** 标题 */ title: string; /** 自定义验证器 */ validator?: () => Promise; /** 排序值 */ order: number; /** 是否禁用 */ disabled?: boolean; /** 懒加载配置 */ lazyLoad?: boolean | any; /** 允许其他任意属性 */ [key: string]: any; } /** * 注册映射项类型 * @interface RegisterMapItem */ export interface RegisterMapItem { /** 唯一标识符 */ id: string; /** 标题 */ title: string; /** 排序值 */ order: number; /** 提交事件 */ subEvent?: () => Promise; /** 允许其他任意属性 */ [key: string]: any; } /** * 通知参数类型 * @interface NotifyParams */ export interface NotifyParams { /** 排除项 */ excludes?: string[]; } /** * 滚动选项类型 * @interface ScrollOptions */ export interface ScrollOptions { /** 目标偏移量 */ targetOffset?: number; /** 是否滚动到错误位置 */ scrollToError?: boolean; } /** * ProStep监听器属性类型 * @interface ListenerProps */ export interface ListenerProps { /** 子元素 */ children: React.ReactElement; /** 延迟时间 */ delayTime?: number; /** 排除项 */ excludes?: string[]; /** 允许其他任意属性 */ [key: string]: any; } /** * 锚点SVG属性类型 * @interface AnchorSvgProps */ export interface AnchorSvgProps { /** 颜色 */ color?: string; } /** * 菜单项属性类型 * @interface MenuItemProps */ export interface MenuItemProps { /** 名称 */ name: string; /** 编码 */ code: string; /** 是否开启 */ onOff: boolean; /** 是否是开始项 */ isStart?: boolean; /** 是否是结束项 */ isEnd?: boolean; /** 是否禁用 */ isDisabled?: boolean; /** 是否是当前步骤 */ isCurrentStep?: boolean; /** 是否已检查 */ isChecked?: boolean; /** 错误数量 */ errorNum?: number; /** 当前数量 */ currentNum?: number; /** 目标偏移量 */ targetOffset?: number; /** 是否滚动到错误位置 */ scrollToError?: boolean; } /** * ProStep 组件基础类型 * @type ProStepType */ export type ProStepType = ProStepPropsType;