UNPKG

@aplus-frontend/ui

Version:

158 lines (157 loc) 4.33 kB
import { BadgeProps, StatisticProps } from '@aplus-frontend/antdv'; import { CSSProperties, VNode, VNodeChild } from 'vue'; export type ApProCardBreakpoint = 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs'; export type ApProCardGutter = number | Partial<Record<ApProCardBreakpoint, number>>; export type ApProCardColSpanType = number | string; export interface ApProCardProps { /** 标题样式 */ headStyle?: CSSProperties; /** 内容样式 */ bodyStyle?: CSSProperties; /** 操作区样式 */ actionsStyle?: CSSProperties; /** 页头是否有分割线 */ headerBordered?: boolean; /** 卡片标题 */ title?: VNodeChild; /** 标题说明 */ tooltip?: VNodeChild; /** 右上角自定义区域 */ extra?: VNodeChild; /** 布局,center 代表垂直居中 */ layout?: 'default' | 'center'; /** 卡片类型 */ type?: 'default' | 'inner'; /** 指定 Flex 方向,仅在嵌套子卡片时有效 */ direction?: 'column' | 'row'; /** 是否自动换行,仅在嵌套子卡片时有效 */ wrap?: boolean; /** 加载中 */ loading?: boolean | VNodeChild; /** 栅格布局宽度,24 栅格,支持指定宽度或百分,需要支持响应式 colSpan={{ xs: 12, sm: 6 }} */ colSpan?: ApProCardColSpanType | Partial<Record<ApProCardBreakpoint, ApProCardColSpanType>>; colStyle?: CSSProperties; /** 栅格间距 */ gutter?: ApProCardGutter | ApProCardGutter[]; /** 操作区 */ actions?: VNodeChild; /** 拆分卡片方式 */ split?: 'vertical' | 'horizontal'; /** 是否有边框 */ bordered?: boolean; /** * 鼠标移过时可浮起 * * @default false */ hoverable?: boolean; /** 幽灵模式,即是否取消卡片内容区域的 padding 和 背景颜色。 */ ghost?: boolean; /** 是否可折叠 */ collapsible?: boolean; /** 配置默认是否折叠 */ defaultCollapsed?: boolean; /** 受控 collapsed 属性 */ collapsed?: boolean; /** 折叠按钮自定义节点 */ collapsibleIconRender?: ({ collapsed }: { collapsed: boolean; }) => VNodeChild; /** card的阴影 */ boxShadow?: boolean; } export type ApProCardSolts = { /** 内容区 */ default?: () => VNode[]; /** 标题 */ title?: () => VNodeChild; /** 右上角自定义区域 */ extra?: () => VNodeChild; /** 卡片操作组,位置在卡片底部 */ actions?: () => VNodeChild; }; export type ApProCardStatisticProps = StatisticProps & { /** 描述性标签 */ description?: VNodeChild; /** 标题提示 */ tip?: VNodeChild; status?: BadgeProps['status']; /** Icon 图标 */ icon?: VNodeChild; /** Layout 布局 */ layout?: 'horizontal' | 'vertical' | 'vertical-center' | 'inline'; /** 趋势 */ trend?: 'up' | 'down'; /** 尺寸 */ size?: 'default' | 'small'; }; export type ApProCardStatisticSolts = { /** * 数值的标题 */ title?: () => VNode[]; /** * 设置数值的前缀 */ prefix?: () => VNode[]; /** * 设置数值的后缀 */ suffix?: () => VNode[]; /** * 图标 */ icon?: () => VNode[]; /** * 标题提示 */ tip?: () => VNode[]; /** * 描述性标签 */ description?: () => VNode[]; }; export type ApStatisticCardProps = ApProCardProps & { /** 图表配置 */ chart?: VNodeChild; /** 数值统计配置 */ statistic?: ApProCardStatisticProps; /** Chart 相对于 statistic 的位置 */ chartPlacement?: 'right' | 'bottom' | 'left'; /** 底部额外展示区域 */ footer?: VNodeChild; }; export type ApStatisticCardSolts = ApProCardSolts & { /** * 图表配置 */ chart?: () => VNodeChild; /** * 额外指标展示 */ footer?: () => VNodeChild; /** * 数值的标题 */ statisticTitle?: () => VNode[]; /** * 设置数值的前缀 */ prefix?: () => VNode[]; /** * 设置数值的后缀 */ suffix?: () => VNode[]; /** * 图标 */ icon?: () => VNode[]; /** * 标题提示 */ tip?: () => VNode[]; /** * 描述性标签 */ description?: () => VNodeChild; };