import { TabPaneName } from 'element-plus'; import { Component } from 'vue'; import { TextBlockProps } from '../TextBlock'; export interface SectionTabs { name: any; label: string; disabled?: boolean; closable?: boolean; /** 条件数据 */ data?: Record; /** 内容组件,支持keepAlive */ component?: Component; } export interface SectionProps { title?: string; description?: string | Component; customClass?: string; contentClass?: string; icon?: TextBlockProps['icon']; size?: TextBlockProps['size']; loading?: boolean; /** 嵌套使用, 移除装饰样式 */ nested?: boolean; /** 列数 */ span?: number; /** tab切换 */ tabs?: SectionTabs[]; /** * tabs位置 * @default 'top' */ tabsPosition?: 'left' | 'top'; bgMode?: 'light' | 'gray' | 'dark'; gutter?: boolean; shadow?: boolean; /** * 是否等高 */ equalHeight?: boolean; /** * 提示信息 */ tooltip?: string; /** * 是否显示返回按钮 */ showBackButton?: boolean; } interface defaultSlotParams { tabName?: TabPaneName; } export type SectionSlots = { 'default': (props: defaultSlotParams) => void; 'title-before': () => void; 'title-after': () => void; 'tabs-after': () => void; 'tabs-suffix': () => void; 'before': () => void; 'after': () => void; 'title-append': () => void; }; export {};