react-admin-kit
Version:
A react based UI components for admin system
71 lines (70 loc) • 2.36 kB
TypeScript
/**
* 表单项信息接口
*/
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;