fat-design 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,150 @@
1
1
  import React from "react";
2
2
  import { TableProProps, ICellRenderFunc, IUseTableProFunc, IGetTableColumnsBySettingFunc, OperationsProps, TableToolbarProps, IRenderTableToolbar, IRenderOperationCell, IRenderMultiFieldCell } from "./types";
3
3
  declare class TablePro extends React.Component<TableProProps, any> {
4
+ /**
5
+ * 表格操作按钮组件
6
+ * 用于渲染表格工具栏中的操作按钮组,支持普通按钮、下拉菜单按钮、带图标按钮等
7
+ * @example <TablePro.TableOperations buttons={[{text: '新增', onClick: handleAdd}]} />
8
+ */
4
9
  static TableOperations: React.FC<OperationsProps>;
10
+ /**
11
+ * 表格工具栏组件
12
+ * 包含标题、数据总数、筛选器和操作按钮区域,用于表格顶部的综合工具栏
13
+ * @example <TablePro.TableToolbar title="用户列表" totalCount={100} operationProps={...} />
14
+ */
5
15
  static TableToolbar: React.FC<TableToolbarProps>;
16
+ /**
17
+ * 表格状态管理 Hook
18
+ * 用于管理表格的查询、分页、筛选、行选择等状态,返回 formProps、tableProps、paginationProps 等配置对象
19
+ * @param params 配置参数,包括 onQuery 查询函数、autoFirstQuery 是否自动首次查询等
20
+ * @returns {formProps, tableProps, paginationProps, filterProps, operationProps, actions}
21
+ * @example const { tableProps, actions } = TablePro.useTablePro({ onQuery: fetchData });
22
+ */
6
23
  static useTablePro: IUseTableProFunc;
24
+ /**
25
+ * 根据用户设置的列配置获取表格列
26
+ * 从本地存储读取用户对列的显示/隐藏、排序、锁定等设置,返回处理后的列配置
27
+ * @param tableProProps TablePro 组件的 props
28
+ * @returns 处理后的列配置数组
29
+ * @example const columns = await TablePro.getTableColumnsBySetting(props);
30
+ */
7
31
  static getTableColumnsBySetting: IGetTableColumnsBySettingFunc;
32
+ /**
33
+ * 渲染表格工具栏
34
+ * 函数式渲染表格工具栏组件,等同于 <TablePro.TableToolbar />
35
+ * @param props 工具栏配置属性
36
+ * @returns React 元素
37
+ */
8
38
  static renderTableToolbar: IRenderTableToolbar;
39
+ /**
40
+ * 渲染操作列单元格
41
+ * 用于表格操作列,支持权限过滤、超出数量自动收起到"更多"下拉菜单
42
+ * @param operationItems 操作按钮配置数组
43
+ * @param others 其他配置,如 max 最大显示数量、operationPerms 权限列表
44
+ * @returns React 元素
45
+ * @example TablePro.renderOperationCell([{title: '编辑', onClick: handleEdit}, {title: '删除', onClick: handleDelete}])
46
+ */
9
47
  static renderOperationCell: IRenderOperationCell;
48
+ /**
49
+ * 渲染多字段单元格
50
+ * 在一个单元格中显示多个字段内容,支持标题和内容的组合显示
51
+ * @param itemList 字段项数组,每项可包含 title、content、display 属性
52
+ * @returns React 元素
53
+ * @example TablePro.renderMultiFieldCell([{title: '姓名', content: '张三'}, {title: '年龄', content: 25}])
54
+ */
10
55
  static renderMultiFieldCell: IRenderMultiFieldCell;
56
+ /**
57
+ * 渲染 JSON 格式数据
58
+ * 将对象或 JSON 字符串格式化为缩进的 JSON 显示,用于展示复杂数据结构
59
+ * @param value 要渲染的值,支持对象或 JSON 字符串
60
+ * @returns 格式化的 <pre> 元素
61
+ */
11
62
  static renderJSON: ICellRenderFunc;
63
+ /**
64
+ * 渲染字符串
65
+ * 将各种类型的值转换为字符串显示,支持数字、字符串、数组、对象等类型
66
+ * @param value 要渲染的值
67
+ * @returns 字符串或占位符
68
+ */
12
69
  static renderString: ICellRenderFunc;
70
+ /**
71
+ * 渲染日期(YYYY-MM-DD)
72
+ * 将时间戳或日期字符串格式化为日期显示,支持单个值、数组、JSON 字符串
73
+ * @param value 时间戳、日期字符串或日期数组
74
+ * @returns 格式化的日期字符串
75
+ */
13
76
  static renderDay: ICellRenderFunc;
77
+ /**
78
+ * 渲染日期(YYYY-MM-DD),自动识别秒级时间戳
79
+ * 与 renderDay 类似,但会自动判断时间戳是秒级还是毫秒级
80
+ * @param value 时间戳、日期字符串或日期数组
81
+ * @returns 格式化的日期字符串
82
+ */
14
83
  static renderDayAuto: ICellRenderFunc;
84
+ /**
85
+ * 渲染日期时间(YYYY-MM-DD HH:mm:ss)
86
+ * 将时间戳或日期字符串格式化为完整日期时间显示
87
+ * @param value 时间戳、日期字符串或日期数组
88
+ * @returns 格式化的日期时间字符串
89
+ */
15
90
  static renderTime: ICellRenderFunc;
91
+ /**
92
+ * 渲染日期时间(YYYY-MM-DD HH:mm:ss),自动识别秒级时间戳
93
+ * 与 renderTime 类似,但会自动判断时间戳是秒级还是毫秒级
94
+ * @param value 时间戳、日期字符串或日期数组
95
+ * @returns 格式化的日期时间字符串
96
+ */
16
97
  static renderTimeAuto: ICellRenderFunc;
98
+ /**
99
+ * 渲染千分位数字
100
+ * 将数字格式化为带千分位分隔符的字符串,默认保留2位小数
101
+ * @param value 数字或数字字符串
102
+ * @returns 格式化的千分位字符串,如 "1,234.00"
103
+ */
17
104
  static renderThousands: ICellRenderFunc;
105
+ /**
106
+ * 渲染 HTML 内容
107
+ * 将字符串作为 HTML 直接渲染,用于显示富文本内容
108
+ * @param value HTML 字符串
109
+ * @returns 包含 HTML 内容的元素
110
+ * @warning 注意 XSS 安全风险,确保内容来源可信
111
+ */
18
112
  static renderHTML: ICellRenderFunc;
113
+ /**
114
+ * 渲染布尔值
115
+ * 将布尔值或相关值转换为"是/否"显示
116
+ * @param value 布尔值、Y/N、YES/NO、1/0 等
117
+ * @returns "是" 或 "否"
118
+ */
19
119
  static renderBoolean: ICellRenderFunc;
120
+ /**
121
+ * 渲染相对时间
122
+ * 将日期时间转换为相对时间描述,如"3天前"、"2小时前"
123
+ * @param value 时间戳或日期字符串
124
+ * @returns 相对时间字符串
125
+ */
20
126
  static renderRelativeTime: ICellRenderFunc;
127
+ /**
128
+ * 渲染文件下载链接
129
+ * 将文件 URL 渲染为可点击的下载链接
130
+ * @param value 文件 URL 或文件信息对象
131
+ * @returns 下载链接元素
132
+ */
21
133
  static renderFileDownload: ICellRenderFunc;
134
+ /**
135
+ * 渲染文件图片预览
136
+ * 将图片 URL 渲染为可预览的缩略图
137
+ * @param value 图片 URL 或图片信息对象
138
+ * @returns 图片预览元素
139
+ */
22
140
  static renderFileImage: ICellRenderFunc;
141
+ /**
142
+ * 渲染枚举标签
143
+ * 将枚举值渲染为带颜色的标签(Tag),用于状态、类型等枚举字段展示
144
+ * @param value 枚举对象(包含 label 和 style)或枚举数组
145
+ * @returns Tag 组件或标签数组
146
+ * @example TablePro.renderEnumTag({label: '启用', style: 'green'})
147
+ */
23
148
  static renderEnumTag: ICellRenderFunc;
24
149
  render(): React.JSX.Element;
25
150
  }
@@ -43,6 +43,7 @@ export interface OperationBtnItem {
43
43
  tooltip?: any;
44
44
  onClick?: any | string;
45
45
  children?: OperationBtnItem[];
46
+ disabled?: boolean;
46
47
  }
47
48
  export interface OperationsProps {
48
49
  prefix: string;
@@ -1,5 +1,108 @@
1
+ /**
2
+ * 列设置模块
3
+ *
4
+ * 提供表格列的自定义配置功能,包括:
5
+ * - 列的显示/隐藏
6
+ * - 列的排序(拖拽调整顺序)
7
+ * - 列的锁定(左锁列/右锁列)
8
+ *
9
+ * ## 如何开启列设置功能
10
+ *
11
+ * ### 方式一:使用 useTablePro Hook(推荐)
12
+ * ```tsx
13
+ * function MyTable() {
14
+ * const { tableProps, actions } = TablePro.useTablePro({
15
+ * onQuery: fetchData,
16
+ * });
17
+ *
18
+ * // 在工具栏添加"列设置"按钮
19
+ * const operationProps = {
20
+ * buttons: [
21
+ * {
22
+ * text: '列设置',
23
+ * icon: 'set',
24
+ * onClick: () => showColumnSettingDialog({ actions }),
25
+ * },
26
+ * ],
27
+ * };
28
+ *
29
+ * return (
30
+ * <TablePro
31
+ * settingName="my-table-column-setting-unique-id" // 必填,长度需 > 10,用于本地存储标识
32
+ * tableProps={tableProps}
33
+ * operationProps={operationProps}
34
+ * // ... 其他 props
35
+ * />
36
+ * );
37
+ * }
38
+ * ```
39
+ *
40
+ * ### 方式二:手动应用列设置
41
+ * ```tsx
42
+ * async function MyTable() {
43
+ * const columns = await TablePro.getTableColumnsBySetting({
44
+ * settingName: 'my-table-column-setting-unique-id',
45
+ * tableProps: { columns: originalColumns },
46
+ * actions: tableActions,
47
+ * });
48
+ *
49
+ * // 使用处理后的 columns 渲染表格
50
+ * }
51
+ * ```
52
+ *
53
+ * ## 注意事项
54
+ * - settingName 必须是长度 > 10 的唯一字符串,用于区分不同表格的列设置
55
+ * - 用户设置会保存在浏览器本地存储(localForage)中
56
+ * - 可通过 column.display = false 设置某列默认不显示
57
+ *
58
+ * @module column-setting
59
+ */
1
60
  import { TableProProps } from "../types";
61
+ /**
62
+ * 验证 settingName 是否有效
63
+ * settingName 必须是长度 > 10 的字符串,用于确保本地存储的唯一性
64
+ * @param settingName 设置名称
65
+ * @returns 是否有效
66
+ */
2
67
  declare function isSettingNameValid(settingName: any): boolean;
68
+ /**
69
+ * 显示列设置对话框
70
+ * 打开一个右侧抽屉,让用户可以配置列的显示、隐藏、排序和锁定
71
+ *
72
+ * @param params 参数对象
73
+ * @param params.actions useTablePro 返回的 actions 对象,包含 getSettingName、getTableProps、updateColumns 等方法
74
+ *
75
+ * @example
76
+ * // 在操作按钮中调用
77
+ * const operationProps = {
78
+ * buttons: [
79
+ * {
80
+ * text: '列设置',
81
+ * icon: 'set',
82
+ * onClick: () => showColumnSettingDialog({ actions }),
83
+ * },
84
+ * ],
85
+ * };
86
+ */
3
87
  declare function showColumnSettingDialog({ actions }: any): Promise<void>;
88
+ /**
89
+ * 根据用户设置获取表格列配置
90
+ * 从本地存储读取用户的列设置,过滤隐藏列,应用锁定配置
91
+ *
92
+ * 此函数通常在表格初始化时调用,用于应用用户之前保存的列设置
93
+ *
94
+ * @param tableProProps TablePro 组件的 props
95
+ * @param tableProProps.actions useTablePro 返回的 actions 对象
96
+ * @param tableProProps.tableProps 包含 columns 的表格属性
97
+ * @returns 处理后的列配置数组(已过滤隐藏列,已应用锁定设置)
98
+ *
99
+ * @example
100
+ * // 在组件中使用
101
+ * const columns = await TablePro.getTableColumnsBySetting({
102
+ * settingName: 'my-table-columns',
103
+ * tableProps: { columns: originalColumns },
104
+ * actions: tableActions,
105
+ * });
106
+ */
4
107
  declare function getTableColumnsBySetting(tableProProps: TableProProps): Promise<any[]>;
5
108
  export { isSettingNameValid, showColumnSettingDialog, getTableColumnsBySetting };
@@ -73,6 +73,11 @@ export interface ButtonProps extends HTMLAttributesWeak, CommonProps {
73
73
  */
74
74
  disabled?: boolean;
75
75
 
76
+ /**
77
+ * 禁用(disabled为true)时点击可触发气泡提示,用于解释按钮为何禁用
78
+ */
79
+ tooltip?: React.ReactNode;
80
+
76
81
  /**
77
82
  * 点击按钮的回调
78
83
  */