@ticatec/uniface-element 0.2.0 → 0.2.2

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.
Files changed (209) hide show
  1. package/README.md +320 -1
  2. package/README_CN.md +392 -0
  3. package/dist/accordion/Accordion.svelte +1 -1
  4. package/dist/action-bar/ActionBar.svelte +7 -1
  5. package/dist/attachment-files/FileRender.svelte +1 -1
  6. package/dist/attachment-files/FileUploadBar.svelte +7 -6
  7. package/dist/attachment-files/FileUploadPanel.svelte +2 -2
  8. package/dist/base-calendar/DateContext.js +5 -4
  9. package/dist/base-calendar/YearPickupPanel.svelte +4 -4
  10. package/dist/card/Card.svelte +1 -1
  11. package/dist/card/Card.svelte.d.ts +1 -1
  12. package/dist/cascade-options-select/CascadeOptionSelect.svelte +2 -3
  13. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +46 -1
  14. package/dist/cascade-options-select/CascadePanel.svelte +1 -1
  15. package/dist/checkbox/CheckBox.svelte +1 -1
  16. package/dist/color-picker/ColorPicker.svelte +9 -9
  17. package/dist/color-picker/ColorPicker.svelte.d.ts +0 -2
  18. package/dist/color-picker/ColorPickerPanel.svelte +11 -15
  19. package/dist/color-picker/ColorPickerPanel.svelte.d.ts +1 -1
  20. package/dist/common/CommonPicker.svelte +2 -2
  21. package/dist/common/CommonPicker.svelte.d.ts +1 -1
  22. package/dist/common/MouseClickHandler.d.ts +1 -1
  23. package/dist/common/Popover.svelte +28 -6
  24. package/dist/common/Popover.svelte.d.ts +9 -3
  25. package/dist/common/uniface-utils.js +6 -4
  26. package/dist/common-editor/CommonEditor.svelte +1 -1
  27. package/dist/common-editor/CommonEditor.svelte.d.ts +1 -1
  28. package/dist/common-editor/NumberInput.svelte +1 -1
  29. package/dist/common-editor/NumberInput.svelte.d.ts +1 -1
  30. package/dist/concise-data-table/ConciseListTable.svelte +7 -2
  31. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +1 -0
  32. package/dist/concise-data-table/DataRow.svelte +1 -1
  33. package/dist/concise-data-table/TableOptions.d.ts +1 -1
  34. package/dist/data-table/DataTable.svelte +1 -1
  35. package/dist/data-table/parts/ActionsPanel.svelte +4 -3
  36. package/dist/data-table/parts/ActionsRow.svelte +3 -3
  37. package/dist/data-table/parts/ContentPanel.svelte +3 -2
  38. package/dist/data-table/parts/FixedColumnsPanel.svelte +0 -1
  39. package/dist/data-table/parts/FixedColumnsPanel.svelte.d.ts +1 -2
  40. package/dist/data-table/parts/FixedHeaderPanel.svelte +2 -2
  41. package/dist/data-table/parts/FixedRow.svelte +2 -1
  42. package/dist/data-table/parts/FixedRow.svelte.d.ts +1 -1
  43. package/dist/data-table/parts/HrefCell.svelte +23 -2
  44. package/dist/data-table/parts/PopupMenu.svelte +25 -2
  45. package/dist/data-table/parts/PopupMenu.svelte.d.ts +8 -1
  46. package/dist/date-picker/DatePicker.svelte +0 -1
  47. package/dist/date-picker/DateTimePicker.svelte +3 -3
  48. package/dist/date-picker/ScrollBar.svelte +4 -7
  49. package/dist/date-range/DateRangeEditor.svelte +1 -1
  50. package/dist/dialog/CommonDialog.svelte +8 -5
  51. package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
  52. package/dist/dialog/Dialog.svelte +37 -12
  53. package/dist/dialog/Dialog.svelte.d.ts +4 -3
  54. package/dist/dialog/DialogBoard.svelte +11 -8
  55. package/dist/dialog/DialogWrapper.svelte +10 -0
  56. package/dist/{common-editor/DateInput.svelte.d.ts → dialog/DialogWrapper.svelte.d.ts} +6 -13
  57. package/dist/dialog/Dialogs.js +1 -1
  58. package/dist/dialog/ModalResult.d.ts +5 -0
  59. package/dist/dialog/ModalResult.js +5 -0
  60. package/dist/drawer/Drawer.svelte +1 -1
  61. package/dist/form-field/FormField.svelte +2 -1
  62. package/dist/form-field/FormField.svelte.d.ts +1 -0
  63. package/dist/form-panel/flex-row-form/FormContainer.svelte +1 -1
  64. package/dist/form-panel/grid-form/EmptyCell.svelte +8 -7
  65. package/dist/form-panel/grid-form/EmptyCell.svelte.d.ts +2 -2
  66. package/dist/form-panel/grid-form/GridField.svelte +1 -1
  67. package/dist/i18nRes/i18nRes.d.ts +2 -0
  68. package/dist/i18nRes/i18nRes.js +44 -0
  69. package/dist/i18nRes/index.d.ts +2 -0
  70. package/dist/i18nRes/index.js +2 -0
  71. package/dist/image-files/ImageFilesField.svelte +1 -1
  72. package/dist/indicator/IndicatorBoard.svelte +1 -1
  73. package/dist/inline-cell-editor/InvalidEditor.svelte +1 -0
  74. package/dist/input-options-select/InputOptionsSelect.svelte +6 -6
  75. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +1 -1
  76. package/dist/layout/flex/FlexBlock.svelte +1 -1
  77. package/dist/lookup-editor/LookupEditor.svelte +1 -1
  78. package/dist/memo-editor/MemoEditor.svelte +2 -2
  79. package/dist/message-box/IMessageBox.d.ts +2 -4
  80. package/dist/message-box/IMessageBox.js +4 -6
  81. package/dist/message-box/MessageBoxBoard.svelte +1 -3
  82. package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
  83. package/dist/prompts-text-editor/PromptsTextEditor.svelte +2 -2
  84. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +1 -1
  85. package/dist/property-editor/PropertyEditor.svelte +3 -3
  86. package/dist/text-editor/PasswordEditor.svelte +1 -1
  87. package/dist/transfer/Transfer.svelte +17 -12
  88. package/dist/transfer/Transfer.svelte.d.ts +0 -1
  89. package/dist/unit-number-editor/UnitNumberEditor.svelte +2 -2
  90. package/docs/buttons/cn/ActionBar.md +459 -0
  91. package/docs/buttons/cn/Button.md +228 -0
  92. package/docs/buttons/cn/IconButton.md +294 -0
  93. package/docs/buttons/cn/README.md +600 -0
  94. package/docs/buttons/cn/TextButton.md +163 -0
  95. package/docs/buttons/en/ActionBar.md +459 -0
  96. package/docs/buttons/en/Button.md +228 -0
  97. package/docs/buttons/en/IconButton.md +294 -0
  98. package/docs/buttons/en/README.md +600 -0
  99. package/docs/buttons/en/TextButton.md +163 -0
  100. package/docs/containers/cn/accordion.md +622 -0
  101. package/docs/containers/cn/box.md +445 -0
  102. package/docs/containers/cn/card.md +404 -0
  103. package/docs/containers/cn/page.md +576 -0
  104. package/docs/containers/cn/tabs.md +686 -0
  105. package/docs/containers/en/accordion.md +622 -0
  106. package/docs/containers/en/box.md +445 -0
  107. package/docs/containers/en/card.md +404 -0
  108. package/docs/containers/en/page.md +576 -0
  109. package/docs/containers/en/tabs.md +686 -0
  110. package/docs/data-display/cn/concise-data-table.md +731 -0
  111. package/docs/data-display/cn/listbox.md +786 -0
  112. package/docs/data-display/cn/treeview.md +863 -0
  113. package/docs/data-display/en/concise-data-table.md +732 -0
  114. package/docs/data-display/en/listbox.md +786 -0
  115. package/docs/data-display/en/treeview.md +863 -0
  116. package/docs/data-table/cn/README.md +596 -0
  117. package/docs/data-table/en/README.md +596 -0
  118. package/docs/dialog/cn/README.md +767 -0
  119. package/docs/dialog/en/README.md +767 -0
  120. package/docs/form/cn/README.md +847 -0
  121. package/docs/form/en/README.md +847 -0
  122. package/docs/form-components/cn/README.md +495 -0
  123. package/docs/form-components/cn/attachmentfilesfield.md +757 -0
  124. package/docs/form-components/cn/cascade-options-select.md +374 -0
  125. package/docs/form-components/cn/checkbox.md +58 -0
  126. package/docs/form-components/cn/date-picker.md +138 -0
  127. package/docs/form-components/cn/datetime-picker.md +228 -0
  128. package/docs/form-components/cn/group-checkbox.md +405 -0
  129. package/docs/form-components/cn/group-radiobox.md +525 -0
  130. package/docs/form-components/cn/imagefilesfield.md +651 -0
  131. package/docs/form-components/cn/input-options-select.md +250 -0
  132. package/docs/form-components/cn/lookup-editor.md +406 -0
  133. package/docs/form-components/cn/memoeditor.md +409 -0
  134. package/docs/form-components/cn/number-editor.md +261 -0
  135. package/docs/form-components/cn/options-multi-select.md +177 -0
  136. package/docs/form-components/cn/options-select.md +83 -0
  137. package/docs/form-components/cn/passwordeditor.md +538 -0
  138. package/docs/form-components/cn/prompts-text-editor.md +241 -0
  139. package/docs/form-components/cn/radiobutton.md +84 -0
  140. package/docs/form-components/cn/switch.md +178 -0
  141. package/docs/form-components/cn/text-editor.md +142 -0
  142. package/docs/form-components/cn/time-editor.md +159 -0
  143. package/docs/form-components/cn/unit-number-editor.md +164 -0
  144. package/docs/form-components/en/README.md +463 -0
  145. package/docs/form-components/en/attachmentfilesfield.md +757 -0
  146. package/docs/form-components/en/cascade-options-select.md +358 -0
  147. package/docs/form-components/en/checkbox.md +59 -0
  148. package/docs/form-components/en/date-picker.md +138 -0
  149. package/docs/form-components/en/datetime-picker.md +228 -0
  150. package/docs/form-components/en/group-checkbox.md +395 -0
  151. package/docs/form-components/en/group-radiobox.md +498 -0
  152. package/docs/form-components/en/imagefilesfield.md +651 -0
  153. package/docs/form-components/en/input-options-select.md +239 -0
  154. package/docs/form-components/en/lookup-editor.md +389 -0
  155. package/docs/form-components/en/memoeditor.md +409 -0
  156. package/docs/form-components/en/number-editor.md +249 -0
  157. package/docs/form-components/en/options-multi-select.md +177 -0
  158. package/docs/form-components/en/options-select.md +83 -0
  159. package/docs/form-components/en/passwordeditor.md +538 -0
  160. package/docs/form-components/en/prompts-text-editor.md +241 -0
  161. package/docs/form-components/en/radiobutton.md +84 -0
  162. package/docs/form-components/en/switch.md +180 -0
  163. package/docs/form-components/en/text-editor.md +142 -0
  164. package/docs/form-components/en/time-editor.md +159 -0
  165. package/docs/form-components/en/unit-number-editor.md +164 -0
  166. package/docs/form-layout/cn/criteria-field.md +652 -0
  167. package/docs/form-layout/cn/flex-form.md +454 -0
  168. package/docs/form-layout/cn/flex-row-form.md +542 -0
  169. package/docs/form-layout/cn/form-field.md +923 -0
  170. package/docs/form-layout/cn/grid-form.md +676 -0
  171. package/docs/form-layout/en/criteria-field.md +652 -0
  172. package/docs/form-layout/en/flex-form.md +454 -0
  173. package/docs/form-layout/en/flex-row-form.md +542 -0
  174. package/docs/form-layout/en/form-field.md +923 -0
  175. package/docs/form-layout/en/grid-form.md +676 -0
  176. package/docs/global/cn/README.md +534 -0
  177. package/docs/global/en/README.md +534 -0
  178. package/docs/layout/cn/classiclayout.md +460 -0
  179. package/docs/layout/cn/headerlayout.md +524 -0
  180. package/docs/layout/cn/sidebarlayout.md +263 -0
  181. package/docs/layout/en/classiclayout.md +951 -0
  182. package/docs/layout/en/headerlayout.md +524 -0
  183. package/docs/layout/en/sidebarlayout.md +262 -0
  184. package/docs/misc/cn/README.md +1217 -0
  185. package/docs/misc/en/README.md +1217 -0
  186. package/docs/navigation/cn/breadcrumb.md +291 -0
  187. package/docs/navigation/cn/navigator.md +322 -0
  188. package/docs/navigation/cn/navigatormenu.md +512 -0
  189. package/docs/navigation/cn/progressbar.md +199 -0
  190. package/docs/navigation/cn/progressstepbar.md +299 -0
  191. package/docs/navigation/en/breadcrumb.md +291 -0
  192. package/docs/navigation/en/navigator.md +322 -0
  193. package/docs/navigation/en/navigatormenu.md +512 -0
  194. package/docs/navigation/en/progressbar.md +199 -0
  195. package/docs/navigation/en/progressstepbar.md +299 -0
  196. package/docs/search-filters/cn/daterange.md +1156 -0
  197. package/docs/search-filters/cn/numberrange.md +688 -0
  198. package/docs/search-filters/cn/searchbox.md +1582 -0
  199. package/docs/search-filters/en/daterange.md +1156 -0
  200. package/docs/search-filters/en/numberrange.md +688 -0
  201. package/docs/search-filters/en/searchbox.md +1582 -0
  202. package/package.json +53 -13
  203. package/dist/common-editor/DateInput.svelte +0 -27
  204. package/dist/i18n_resources/index.d.ts +0 -3
  205. package/dist/i18n_resources/index.js +0 -3
  206. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.d.ts +0 -0
  207. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.js +0 -0
  208. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.d.ts +0 -0
  209. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.js +0 -0
@@ -0,0 +1,596 @@
1
+ # 数据表格组件
2
+
3
+ 为 Uniface 应用程序构建的功能强大且灵活的数据表格组件,使用 Svelte 和 TypeScript 开发。
4
+
5
+ ## 概述
6
+
7
+ 数据表格组件为显示和管理表格数据提供了全面的解决方案。它支持冻结列、行操作、排序、内联编辑和自定义单元格格式化等功能。
8
+
9
+ ## 安装
10
+
11
+ ```typescript
12
+ import DataTable from '@ticatec/uniface-element/DataTable';
13
+ import type { DataColumn, ActionsColumn, IndicatorColumn } from '@ticatec/uniface-element/DataTable';
14
+ ```
15
+
16
+ ## 基本用法
17
+
18
+ ```svelte
19
+ <script lang="ts">
20
+ import DataTable from '@ticatec/uniface-element/DataTable';
21
+ import type { DataColumn } from '@ticatec/uniface-element/DataTable';
22
+
23
+ let data = [
24
+ { id: 1, name: '张三', age: 30 },
25
+ { id: 2, name: '李四', age: 25 }
26
+ ];
27
+
28
+ let columns: DataColumn[] = [
29
+ { text: 'ID', field: 'id', width: 80 },
30
+ { text: '姓名', field: 'name', width: 200 },
31
+ { text: '年龄', field: 'age', width: 100 }
32
+ ];
33
+ </script>
34
+
35
+ <DataTable {columns} list={data} />
36
+ ```
37
+
38
+ ## 核心组件
39
+
40
+ ### UniDataTable 类
41
+
42
+ 主要的数据表格类 (`src/lib/data-table/UniDataTable.ts:17`),管理表格状态和配置。
43
+
44
+ **构造函数:**
45
+ ```typescript
46
+ new UniDataTable(id: string, indicatorWidth?: number)
47
+ ```
48
+
49
+ **主要方法:**
50
+ - `setColumns(columns: Array<DataColumn>)` - 设置表格列
51
+ - `generateTemplateStyle(): string` - 生成列的 CSS 样式
52
+ - 获取器:`width`、`frozenWidth`、`rows`、`columns`、`frozenColumns`
53
+
54
+ ### DataColumn 接口
55
+
56
+ 定义列配置 (`src/lib/data-table/lib/DataColumn.ts:5`):
57
+
58
+ ```typescript
59
+ interface DataColumn {
60
+ text: string; // 列头文字
61
+ field?: string; // 对应的字段/属性名
62
+ frozen?: boolean; // 是否冻结列
63
+ align?: 'left' | 'center' | 'right'; // 对齐方式
64
+ width: number; // 列宽(像素)
65
+ minWidth?: number; // 最小宽度
66
+ warp?: boolean; // 是否可以换行
67
+ formatter?: FormatCell; // 单元格转换函数
68
+ escapeHTML?: boolean; // 是否忽略HTML的转义符
69
+ href?: HrefBuilder; // 超链接设置
70
+ hint?: CellHint; // 是否生成提示
71
+ render?: any; // 渲染器
72
+ visible?: boolean; // 是否可见
73
+ resizable?: boolean; // 是否可调整大小
74
+ compareFunction?: CompareFunction; // 排序函数
75
+ }
76
+ ```
77
+
78
+ ## 属性
79
+
80
+ ### DataTable 组件属性
81
+
82
+ | 属性 | 类型 | 默认值 | 描述 |
83
+ |------|------|--------|------|
84
+ | `columns` | `Array<DataColumn>` | 必需 | 列定义 |
85
+ | `list` | `Array<any>` | 必需 | 数据数组 |
86
+ | `actionsColumn` | `ActionsColumn \| null` | `null` | 行操作配置 |
87
+ | `indicatorColumn` | `IndicatorColumn \| null` | `null` | 指示器列配置 |
88
+ | `rowHeight` | `number` | `42` | 行高(像素) |
89
+ | `selectedRows` | `Array<any>` | `[]` | 选中的行数组 |
90
+ | `inlineRowHeight` | `number` | `80` | 展开行的高度 |
91
+ | `rowBorder` | `boolean` | `false` | 显示行边框 |
92
+ | `colBorder` | `boolean` | `false` | 显示列边框 |
93
+ | `emptyIndicator` | `string \| undefined` | `undefined` | 空状态消息 |
94
+ | `style` | `string` | `''` | 额外的 CSS 样式 |
95
+
96
+ ## 高级功能
97
+
98
+ ### 冻结列
99
+
100
+ 列可以冻结在表格的左侧:
101
+
102
+ ```typescript
103
+ let columns: DataColumn[] = [
104
+ { text: 'ID', field: 'id', width: 80, frozen: true },
105
+ { text: '姓名', field: 'name', width: 200, frozen: true },
106
+ { text: '描述', field: 'desc', width: 300 }
107
+ ];
108
+ ```
109
+
110
+ ### 操作列
111
+
112
+ 为每行添加操作按钮:
113
+
114
+ ```typescript
115
+ import type { ActionsColumn, RowAction } from '@ticatec/uniface-element/DataTable';
116
+
117
+ let actionsColumn: ActionsColumn = {
118
+ width: 120,
119
+ align: 'center',
120
+ getActions: (item) => [
121
+ {
122
+ label: '编辑',
123
+ type: 'primary',
124
+ icon: 'edit',
125
+ callback: (item) => editItem(item)
126
+ },
127
+ {
128
+ label: '删除',
129
+ type: 'secondary',
130
+ icon: 'delete',
131
+ callback: (item) => deleteItem(item)
132
+ }
133
+ ]
134
+ };
135
+ ```
136
+
137
+ ### 指示器列
138
+
139
+ 添加选择复选框、行号或可展开行:
140
+
141
+ ```typescript
142
+ import type { IndicatorColumn } from '@ticatec/uniface-element/DataTable';
143
+
144
+ let indicatorColumn: IndicatorColumn = {
145
+ width: 60,
146
+ selectable: true,
147
+ displayNo: true,
148
+ buildInlineComponent: async (data) => {
149
+ // 返回展开行内容的组件
150
+ return SomeInlineComponent;
151
+ }
152
+ };
153
+ ```
154
+
155
+ ### 单元格格式化
156
+
157
+ 自定义单元格格式化器和提示:
158
+
159
+ ```typescript
160
+ import type { FormatCell, CellHint } from '@ticatec/uniface-element/DataTable';
161
+
162
+ const dateFormatter: FormatCell = (value) => {
163
+ return new Date(value).toLocaleDateString();
164
+ };
165
+
166
+ const tooltipHint: CellHint = (value) => {
167
+ return `完整值:${value}`;
168
+ };
169
+
170
+ let columns: DataColumn[] = [
171
+ {
172
+ text: '创建日期',
173
+ field: 'createdAt',
174
+ width: 150,
175
+ formatter: dateFormatter,
176
+ hint: tooltipHint
177
+ }
178
+ ];
179
+ ```
180
+
181
+ ### 排序
182
+
183
+ 为列添加排序功能:
184
+
185
+ ```typescript
186
+ import type { CompareFunction } from '@ticatec/uniface-element/DataTable';
187
+
188
+ const nameCompare: CompareFunction = (a, b) => {
189
+ return a.name.localeCompare(b.name);
190
+ };
191
+
192
+ let columns: DataColumn[] = [
193
+ {
194
+ text: '姓名',
195
+ field: 'name',
196
+ width: 200,
197
+ compareFunction: nameCompare
198
+ }
199
+ ];
200
+ ```
201
+
202
+ ### 超链接
203
+
204
+ 使单元格成为可点击的链接:
205
+
206
+ ```typescript
207
+ import type { HrefBuilder } from '@ticatec/uniface-element/DataTable';
208
+
209
+ const profileLink: HrefBuilder = (item) => {
210
+ return `/profile/${item.id}`;
211
+ };
212
+
213
+ let columns: DataColumn[] = [
214
+ {
215
+ text: '姓名',
216
+ field: 'name',
217
+ width: 200,
218
+ href: profileLink
219
+ }
220
+ ];
221
+ ```
222
+
223
+ ## 事件处理
224
+
225
+ 组件支持各种事件处理器:
226
+
227
+ ```typescript
228
+ // 事件处理器类型
229
+ type RowEventHandler = (row: TableRow) => void;
230
+ type RowSelectEventHandler = (row: TableRow, value: boolean) => void;
231
+ type TableEventHandler = () => void;
232
+ type SelectionEventHandler = (value: boolean) => void;
233
+ ```
234
+
235
+ ### 选择模式
236
+
237
+ ```typescript
238
+ enum SelectionMode {
239
+ All = 1, // 全选
240
+ Partial = 0, // 部分选择
241
+ None = -1 // 未选择
242
+ }
243
+ ```
244
+
245
+ ## 样式
246
+
247
+ 组件使用可自定义的 CSS 类:
248
+
249
+ ```css
250
+ .uniface-data-table {
251
+ /* 主表格容器 */
252
+ }
253
+
254
+ .uniface-data-table.row-border {
255
+ /* 有行边框的表格 */
256
+ }
257
+
258
+ .uniface-data-table.cell-border {
259
+ /* 有单元格边框的表格 */
260
+ }
261
+ ```
262
+
263
+ 列特定样式基于列配置动态生成。
264
+
265
+ ## 示例
266
+
267
+ ### 包含所有功能的完整示例
268
+
269
+ ```svelte
270
+ <script lang="ts">
271
+ import DataTable from '@ticatec/uniface-element/DataTable';
272
+ import type { DataColumn, ActionsColumn, IndicatorColumn } from '@ticatec/uniface-element/DataTable';
273
+
274
+ let employees = [
275
+ { id: 1, name: '张三', department: 'IT', salary: 75000, startDate: '2020-01-15' },
276
+ { id: 2, name: '李四', department: 'HR', salary: 68000, startDate: '2019-03-22' }
277
+ ];
278
+
279
+ let selectedRows = [];
280
+
281
+ let columns: DataColumn[] = [
282
+ {
283
+ text: 'ID',
284
+ field: 'id',
285
+ width: 60,
286
+ frozen: true,
287
+ align: 'center'
288
+ },
289
+ {
290
+ text: '员工姓名',
291
+ field: 'name',
292
+ width: 180,
293
+ frozen: true
294
+ },
295
+ {
296
+ text: '部门',
297
+ field: 'department',
298
+ width: 120
299
+ },
300
+ {
301
+ text: '薪资',
302
+ field: 'salary',
303
+ width: 100,
304
+ align: 'right',
305
+ formatter: (value) => `¥${value.toLocaleString()}`
306
+ },
307
+ {
308
+ text: '入职日期',
309
+ field: 'startDate',
310
+ width: 120,
311
+ formatter: (value) => new Date(value).toLocaleDateString()
312
+ }
313
+ ];
314
+
315
+ let actionsColumn: ActionsColumn = {
316
+ width: 100,
317
+ align: 'center',
318
+ getActions: (employee) => [
319
+ {
320
+ label: '编辑',
321
+ type: 'primary',
322
+ callback: (emp) => console.log('编辑', emp)
323
+ },
324
+ {
325
+ label: '删除',
326
+ type: 'secondary',
327
+ callback: (emp) => console.log('删除', emp)
328
+ }
329
+ ]
330
+ };
331
+
332
+ let indicatorColumn: IndicatorColumn = {
333
+ width: 50,
334
+ selectable: true,
335
+ displayNo: true
336
+ };
337
+ </script>
338
+
339
+ <DataTable
340
+ {columns}
341
+ {actionsColumn}
342
+ {indicatorColumn}
343
+ list={employees}
344
+ bind:selectedRows
345
+ rowHeight={45}
346
+ rowBorder={true}
347
+ colBorder={false}
348
+ />
349
+ ```
350
+
351
+ ## API 参考
352
+
353
+ ### 主要导出
354
+
355
+ ```typescript
356
+ import DataTable from "@ticatec/uniface-element/DataTable";
357
+ import type {
358
+ ActionsColumn,
359
+ IndicatorColumn,
360
+ FormatCell,
361
+ CellHint,
362
+ DataColumn,
363
+ RowAction,
364
+ GetRowActions,
365
+ ActionFunction
366
+ } from "@ticatec/uniface-element/DataTable";
367
+ ```
368
+
369
+ ### DataColumn 接口
370
+
371
+ ```typescript
372
+ interface DataColumn {
373
+ /**
374
+ * 列头文字
375
+ */
376
+ text: string;
377
+
378
+ /**
379
+ * 对应的字段/属性名
380
+ */
381
+ field?: string;
382
+
383
+ /**
384
+ * 是否冻结在数据表中左侧
385
+ */
386
+ frozen?: boolean;
387
+
388
+ /**
389
+ * 对齐方式
390
+ */
391
+ align?: 'left' | 'center' | 'right';
392
+
393
+ /**
394
+ * 列宽(像素)
395
+ */
396
+ width: number;
397
+
398
+ /**
399
+ * 最小宽度
400
+ */
401
+ minWidth?: number;
402
+
403
+ /**
404
+ * 是否可以换行,默认为false
405
+ */
406
+ warp?: boolean;
407
+
408
+ /**
409
+ * 单元格转换函数
410
+ */
411
+ formatter?: FormatCell;
412
+
413
+ /**
414
+ * 是否忽略html的转义符
415
+ */
416
+ escapeHTML?: boolean;
417
+
418
+ /**
419
+ * 超链接设置
420
+ */
421
+ href?: HrefBuilder;
422
+
423
+ /**
424
+ * 是否生成提示
425
+ */
426
+ hint?: CellHint;
427
+
428
+ /**
429
+ * 渲染器
430
+ */
431
+ render?: any;
432
+
433
+ /**
434
+ * 是否可见
435
+ */
436
+ visible?: boolean;
437
+
438
+ /**
439
+ * 是否可调整大小
440
+ */
441
+ resizable?: boolean;
442
+
443
+ /**
444
+ * 排序比较函数
445
+ */
446
+ compareFunction?: CompareFunction;
447
+ }
448
+ ```
449
+
450
+ ### ActionsColumn 接口
451
+
452
+ ```typescript
453
+ interface ActionsColumn {
454
+ /**
455
+ * 宽度(像素)
456
+ */
457
+ width: number;
458
+
459
+ /**
460
+ * 获取行操作函数
461
+ */
462
+ getActions: GetRowActions;
463
+
464
+ /**
465
+ * 对齐方式,默认靠左对齐
466
+ */
467
+ align?: 'left' | 'center';
468
+ }
469
+ ```
470
+
471
+ ### IndicatorColumn 接口
472
+
473
+ ```typescript
474
+ interface IndicatorColumn {
475
+ /**
476
+ * 宽度(像素)
477
+ */
478
+ width: number;
479
+
480
+ /**
481
+ * 是否可选择
482
+ */
483
+ selectable?: boolean;
484
+
485
+ /**
486
+ * 构建展开行内容组件的函数
487
+ */
488
+ buildInlineComponent?: (data: any) => Promise<any>;
489
+
490
+ /**
491
+ * 是否显示行号
492
+ */
493
+ displayNo?: boolean;
494
+ }
495
+ ```
496
+
497
+ ### RowAction 接口
498
+
499
+ ```typescript
500
+ interface RowAction {
501
+ /**
502
+ * 操作按钮标签
503
+ */
504
+ label: string;
505
+
506
+ /**
507
+ * 操作按钮类型/样式
508
+ */
509
+ type?: 'primary' | 'secondary' | 'third' | 'forth';
510
+
511
+ /**
512
+ * 操作按钮图标
513
+ */
514
+ icon?: string;
515
+
516
+ /**
517
+ * 操作回调函数
518
+ */
519
+ callback: ActionFunction;
520
+ }
521
+ ```
522
+
523
+ ### 类型定义
524
+
525
+ ```typescript
526
+ /**
527
+ * 单元格值格式化函数
528
+ */
529
+ export type FormatCell = (value: any) => string;
530
+
531
+ /**
532
+ * 单元格提示/工具提示函数
533
+ */
534
+ export type CellHint = (value: any) => string;
535
+
536
+ /**
537
+ * 操作回调函数
538
+ */
539
+ export type ActionFunction = (item: any) => void;
540
+
541
+ /**
542
+ * 获取行操作的函数
543
+ */
544
+ export type GetRowActions = (item: any) => Array<RowAction>;
545
+
546
+ /**
547
+ * 超链接构建函数
548
+ */
549
+ export type HrefBuilder = (item: any) => string;
550
+
551
+ /**
552
+ * 排序比较函数
553
+ */
554
+ export type CompareFunction = (a: any, b: any) => number;
555
+
556
+ /**
557
+ * 行事件处理器
558
+ */
559
+ export type RowEventHandler = (row: TableRow) => void;
560
+
561
+ /**
562
+ * 行选择事件处理器
563
+ */
564
+ export type RowSelectEventHandler = (row: TableRow, value: boolean) => void;
565
+
566
+ /**
567
+ * 表格事件处理器
568
+ */
569
+ export type TableEventHandler = () => void;
570
+
571
+ /**
572
+ * 选择事件处理器
573
+ */
574
+ export type SelectionEventHandler = (value: boolean) => void;
575
+ ```
576
+
577
+ ### 枚举
578
+
579
+ ```typescript
580
+ /**
581
+ * 选择模式
582
+ */
583
+ export enum SelectionMode {
584
+ All = 1, // 全选
585
+ Partial = 0, // 部分选择
586
+ None = -1 // 未选择
587
+ }
588
+
589
+ /**
590
+ * 排序方向
591
+ */
592
+ export enum OrderDirection {
593
+ Ascending = 'asc', // 升序
594
+ Descending = 'desc' // 降序
595
+ }
596
+ ```