import type { ExtractPropTypes, VNode } from 'vue'; import type { AvatarProps } from '../../avatar/src/avatar'; import type RankingList from './ranking-list.vue'; /** * 排行榜单条数据 */ export interface RankingListItem { /** 名称 */ label?: string; /** 统计数值 */ value?: number; /** 描述(副标题) */ description?: string; /** 头像,传入 ll-avatar 的 props 对象 */ avatar?: Partial; [key: string]: any; } /** * 字段映射:当数据字段名与默认 label/value/description/avatar 不一致时使用 */ export interface RankingListFieldNames { label?: string; value?: string; description?: string; avatar?: string; } /** * 经过排序、截断、计算占比后的渲染数据 */ export interface RankingListRenderItem { /** 排名(从 1 开始) */ rank: number; /** 名称 */ label: string; /** 原始数值 */ value: number; /** 格式化后的数值文本 */ valueText: string; /** 描述 */ description: string; /** 头像 props */ avatar?: Partial; /** 相对最大值的占比(0 ~ 100) */ percent: number; /** 原始数据 */ raw: RankingListItem; } /** 排序规则:desc 正序(从大到小,默认),asc 倒序(从小到大) */ export type RankingListOrder = 'desc' | 'asc'; /** 展示样式:podium 奖台(默认),list 列表 */ export type RankingListType = 'podium' | 'list'; export interface RankingListSlots { /** 自定义整行内容 */ item?: (props: RankingListRenderItem) => VNode[]; /** 自定义头像 */ avatar?: (props: RankingListRenderItem) => VNode[]; /** 自定义名称 */ label?: (props: RankingListRenderItem) => VNode[]; /** 自定义数值 */ value?: (props: RankingListRenderItem) => VNode[]; /** 空数据 */ empty?: () => VNode[]; } /** 排行榜最大可展示条数 */ export declare const RANKING_LIST_MAX_LIMIT = 500; export declare const rankingListProps: { readonly data: import("ll-plus/es/utils").EpPropFinalized, unknown, unknown, () => any[], boolean>; readonly fieldNames: import("ll-plus/es/utils").EpPropFinalized, unknown, unknown, () => {}, boolean>; readonly order: import("ll-plus/es/utils").EpPropFinalized, "asc" | "desc", unknown, "desc", boolean>; readonly limit: import("ll-plus/es/utils").EpPropFinalized; readonly background: import("ll-plus/es/utils").EpPropFinalized; readonly color: import("ll-plus/es/utils").EpPropFinalized; readonly barColor: import("ll-plus/es/utils").EpPropFinalized; readonly valueFormatter: { readonly type: import("vue").PropType<(value: number, item: RankingListItem) => string>; readonly required: false; readonly validator: (val: unknown) => boolean; __epPropKey: true; }; readonly thousandSeparator: import("ll-plus/es/utils").EpPropFinalized; readonly showBar: import("ll-plus/es/utils").EpPropFinalized; readonly type: import("ll-plus/es/utils").EpPropFinalized, "list" | "podium", unknown, "podium", boolean>; readonly showAvatar: import("ll-plus/es/utils").EpPropFinalized; }; export declare const RankingListEmits: { 'item-click': (e: MouseEvent, item: RankingListRenderItem) => boolean; }; export type RankingListProps = ExtractPropTypes; export type RankingListInstance = InstanceType;