jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
78 lines (77 loc) • 1.86 kB
TypeScript
import type { ReactNode } from 'react';
import type { WithRemoteItem } from 'jamis-core';
import type { BaseSchema, SchemaApi, SchemaClassName, SchemaCollection, SchemaTokenizeableString } from '../types';
export interface TimelineSchema extends BaseSchema {
/**
* 指定为 Timeline 时间轴组件
*/
type: 'timeline';
/**
* 节点数据
*/
items?: Array<TimelineItemSchema>;
/** 每项的公共样式类 */
itemClassName?: SchemaClassName;
/**
* API 或 数据映射
*/
source?: SchemaApi | SchemaTokenizeableString;
/**
* 文字相对于时间轴展示方向
*/
mode?: 'left' | 'right' | 'alternate';
/**
* 展示方向
*/
direction?: 'horizontal' | 'vertical';
/**
* 节点倒序
*/
reverse?: boolean;
}
export interface TimelineItemSchema extends Omit<BaseSchema, 'type'>, WithRemoteItem {
/**
* 时间点
*/
time: string;
timeClassName?: SchemaClassName;
/**
* 时间节点标题
*/
title?: SchemaCollection;
titleClassName?: SchemaClassName;
/**
* 详细内容
*/
detail?: string;
detailClassName?: SchemaClassName;
/**
* detail折叠时文案
*/
detailCollapsedText?: string;
/**
* detail展开时文案
*/
detailExpandedText?: string;
/**
* 时间点圆圈颜色
*/
color?: string | 'info' | 'success' | 'warning' | 'danger';
/**
* 图标
*/
icon?: SchemaCollection;
iconClassName?: SchemaClassName;
roundClassName?: SchemaClassName;
lineClassName?: SchemaClassName;
}
export interface TimelineItemProps extends Omit<TimelineItemSchema, 'title' | 'icon'> {
/**
* 事件名称
*/
title?: string | ReactNode;
/**
* 图标
*/
icon?: string | ReactNode;
}