@ant-design/x
Version:
Craft AI-driven interfaces effortlessly
61 lines (60 loc) • 1.56 kB
TypeScript
import type React from 'react';
import type { AnyObject } from '../_util/type';
import type { GroupTitleProps } from './GroupTitle';
type GroupType = string;
/**
* @desc 会话数据
* @descEN Conversation data
*/
export interface Conversation extends AnyObject, Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> {
/**
* @desc 唯一标识
* @descEN Unique identifier
*/
key: string;
/**
* @desc 会话名称
* @descEN Conversation name
*/
label?: React.ReactNode;
/**
* @desc 会话时间戳
* @descEN Conversation timestamp
*/
timestamp?: number;
/**
* @desc 会话分组类型,与 {@link ConversationsProps.groupable} 联动
* @descEN Conversation type
*/
group?: GroupType;
/**
* @desc 会话图标
* @descEN conversation icon
*/
icon?: React.ReactNode;
/**
* @desc 是否禁用
* @descEN Whether to disable
*/
disabled?: boolean;
}
export type GroupSorter = Parameters<GroupType[]['sort']>[0];
export type GroupTitleRenderComponents = {
components: {
GroupTitle: React.ComponentType<GroupTitleProps>;
};
};
export type GroupTitleRender = ((group: GroupType, info: GroupTitleRenderComponents) => React.ReactNode) | undefined;
export interface Groupable {
/**
* @desc 分组排序函数
* @descEN Group sorter
*/
sort?: GroupSorter;
/**
* @desc 自定义分组标签渲染
* @descEN Semantic custom rendering
*/
title?: GroupTitleRender;
}
export {};