UNPKG

react-admin-kit

Version:

A react based UI components for admin system

71 lines (70 loc) 2.36 kB
/** * 表单项信息接口 */ export interface FormItemInfo { /** 表单项标签文本 */ label: string; /** 表单项内容(HTML 字符串或文本) */ content: string; /** 布局 span 值(从 CSS 类名解析) */ span: number | ResponsiveSpan; /** 原始 DOM 元素引用 */ element: HTMLElement; /** 可选:数据索引(用于数据绑定) */ dataIndex?: string; /** 可选:是否为空项(用于占位) */ isEmpty?: boolean; } /** * 响应式断点配置 */ export interface ResponsiveSpan { xs?: number; sm?: number; md?: number; lg?: number; xl?: number; xxl?: number; } /** * 从 CSS 类名中提取 span 值 * @param className CSS 类名字符串,如 'ant-col ant-col-8 ant-form-item' 或 'ant-col-xs-24 ant-col-md-8' * @returns 如果是传统 span 返回数字,如果是响应式断点返回 ResponsiveSpan 对象 */ export declare const extractSpanFromClassName: (className: string) => number | ResponsiveSpan; /** * 扫描表单容器中的表单项 * @returns 表单项信息数组 */ export declare const scanFormItems: (container: HTMLElement, grid?: boolean, embed?: boolean) => FormItemInfo[]; export declare const mergeEmptyItems: (items: any, column: any) => any[]; /** * 规范化 Descriptions items 中的 span 值 * * 对于 Ant Design Descriptions 组件: * - 每行的 span 总和应该等于 column 值 * - 'filled' 会自动填充剩余空间 * - 当某个 item 的 span 会导致当前行总和超过 column 时,前一项应被设为 'filled' 来填满当前行 * * @param items - Descriptions 的 items 数组(span 只会是数字) * @param column - Descriptions 的 column 值(默认为 3) * @returns 规范化后的 items 数组 * * @example * ```ts * // 示例 1: 需要将某项设为 'filled' * normalizeSpan([{ span: 1 }, { span: 1 }, { span: 3 }], 3) * // => [{ span: 1 }, { span: 'filled' }, { span: 3 }] * * // 示例 2: 简单溢出 * normalizeSpan([{ span: 2 }, { span: 2 }], 3) * // => [{ span: 'filled' }, { span: 2 }] * ``` */ export declare const normalizeSpan: <T extends { span: number; }>(items: T[], column?: number) => T[]; /** * 安全执行函数,提供错误处理 */ export declare const safeExecute: <T>(fn: () => T, fallback: T, errorMessage: string) => T;