@canvas-components/list-table 0.3.11 → 0.3.13

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.
package/README.md CHANGED
@@ -80,12 +80,29 @@ table.mount();
80
80
  | `carouselScroll` | `ListTableCarouselScrollOptions` | 自动轮播滚动配置 |
81
81
  | `stretchColumns` | `boolean` | 列总宽不足时是否拉伸补齐 |
82
82
  | `resizable` | `boolean` | 是否开启列宽拖拽 |
83
- | `storageKey` | `string` | 列配置、查询、缩放和密度持久化键 |
83
+ | `storageKey` | `string` | 列配置、查询、缩放和密度持久化键 |
84
84
  | `draggable` | `boolean` | 是否开启列拖拽排序 |
85
85
  | `tableId` | `string` | 表格唯一标识 |
86
86
  | `rowDrag` | `ListTableRowDragOptions` | 行拖拽配置 |
87
87
  | `debug` | `ListTableDebugOptions` | 调试配置 |
88
88
 
89
+ ### 分批加载与服务端汇总
90
+
91
+ 数据仍在异步生成或分批加载时,设置表格顶层属性 `loading: true`。此时汇总行及标题正常显示,统计结果保持空白,也不会计算首批临时数据。完整数据就绪后,将完整 `dataSource` 与 `loading: false` 一起更新,表格自动计算汇总并在完成后统一显示结果。默认值为 `false`,正常的空数据仍可汇总为零。
92
+
93
+ 使用服务端汇总时,通过 `query.summaryValues` 传入以列 `key` 为键的对象或 Map。若数据和汇总分别请求,可保持 `loading: true`,待两者都返回后再设为 `false`;此配置同样支持 React 适配包,外部无需控制汇总计算状态。
94
+
95
+ ```ts
96
+ const options = {
97
+ dataSource: rows,
98
+ loading,
99
+ query: {
100
+ // 服务端汇总可选;不传则使用本地异步汇总。
101
+ summaryValues: serverSummaryValues,
102
+ },
103
+ };
104
+ ```
105
+
89
106
  ### 列配置 `ListTableColumn`
90
107
 
91
108
  | 属性 | 类型 | 说明 |
@@ -151,6 +168,30 @@ table.mount();
151
168
 
152
169
  列配置可通过 `settingTitle`、`initialHide`、`hideInSetting`、`disableHide` 约束列设置中的标题、初始显隐和隐藏权限。
153
170
 
171
+ ### XLSX Worker 导出
172
+
173
+ `exportXlsx()` 默认对 1 万行及以上数据尝试 Worker;现有调用无需修改。表格加载提示会显示已处理行数与文件生成阶段。取值和 `render` 回调仍在主线程执行,工作表构建、文件编码交给 Worker。
174
+
175
+ ```ts
176
+ const controller = new AbortController();
177
+ table.exportXlsx({
178
+ fileName: "表格数据",
179
+ includeSummary: true,
180
+ worker: "auto", // true:始终尝试;false:使用主线程
181
+ maxRowsPerFile: 100_000, // 默认十万行;20 列以内无需降低每份行数
182
+ signal: controller.signal,
183
+ onError: (error) => console.error("导出失败", error), // 可替换为业务提示
184
+ onProgress: ({ phase, completedRows, totalRows }) => {
185
+ console.log(phase, completedRows, totalRows);
186
+ },
187
+ });
188
+ // 需要取消时调用 controller.abort()。
189
+ ```
190
+
191
+ 大数据按行数和单元格预算自动拆成多个独立 XLSX,文件名追加 `_001`、`_002`。每份保留表头,汇总只追加在全部数据末尾。逐份生成、下载并释放,不同时持有全部工作簿。进度包含 `fileIndex`、`fileCount`;可通过 `saveFile(blob, fileName, part)` 接管保存,等待其返回后才生成下一份。
192
+
193
+ 浏览器可能要求允许下载多个文件。取消或失败会停止后续文件,已经下载的文件保留。每份默认最多 10 万行(含汇总尾行、不含表头),20 列以内按此行数分文件;超过 20 列时受 2,000,020 个单元格预算限制,适当减小每份行数。长文本另有 16M UTF-16 码元安全预算,超限时需调低 `maxRowsPerFile`。Worker 不可用时回退;CSV、TXT、JSON 不受影响。千万行多列数据仍建议服务端导出。
194
+
154
195
  ## 内建单元格内容
155
196
 
156
197
  `render` 支持直接返回结构化内容,内建类型包括:
@@ -170,9 +211,9 @@ table.mount();
170
211
  - `checkbox`
171
212
  - `radio`
172
213
  - `switch`
173
- - `link`
174
-
175
- `icon` 当前内置 `star`、`sun`、`moon`、`check`(√)和 `close`(×)。
214
+ - `link`
215
+
216
+ `icon` 当前内置 `star`、`sun`、`moon`、`check`(√)和 `close`(×)。
176
217
 
177
218
  ### 金额单元格示例
178
219