@ticatec/uniface-element 0.2.0 → 0.2.1

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 (126) hide show
  1. package/README.md +273 -1
  2. package/README_CN.md +341 -0
  3. package/dist/common/MouseClickHandler.d.ts +1 -1
  4. package/dist/dialog/CommonDialog.svelte +6 -3
  5. package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
  6. package/dist/dialog/Dialog.svelte +36 -10
  7. package/dist/dialog/Dialog.svelte.d.ts +4 -3
  8. package/dist/dialog/DialogBoard.svelte +11 -8
  9. package/dist/dialog/DialogWrapper.svelte +10 -0
  10. package/dist/dialog/DialogWrapper.svelte.d.ts +22 -0
  11. package/dist/dialog/Dialogs.js +1 -1
  12. package/dist/dialog/ModalResult.d.ts +5 -0
  13. package/dist/dialog/ModalResult.js +5 -0
  14. package/docs/buttons/cn/ActionBar.md +459 -0
  15. package/docs/buttons/cn/Button.md +228 -0
  16. package/docs/buttons/cn/IconButton.md +294 -0
  17. package/docs/buttons/cn/README.md +600 -0
  18. package/docs/buttons/cn/TextButton.md +163 -0
  19. package/docs/buttons/en/ActionBar.md +459 -0
  20. package/docs/buttons/en/Button.md +228 -0
  21. package/docs/buttons/en/IconButton.md +294 -0
  22. package/docs/buttons/en/README.md +600 -0
  23. package/docs/buttons/en/TextButton.md +163 -0
  24. package/docs/containers/cn/accordion.md +622 -0
  25. package/docs/containers/cn/box.md +445 -0
  26. package/docs/containers/cn/card.md +404 -0
  27. package/docs/containers/cn/page.md +576 -0
  28. package/docs/containers/cn/tabs.md +686 -0
  29. package/docs/containers/en/accordion.md +622 -0
  30. package/docs/containers/en/box.md +445 -0
  31. package/docs/containers/en/card.md +404 -0
  32. package/docs/containers/en/page.md +576 -0
  33. package/docs/containers/en/tabs.md +686 -0
  34. package/docs/data-display/cn/concise-data-table.md +731 -0
  35. package/docs/data-display/cn/listbox.md +786 -0
  36. package/docs/data-display/cn/treeview.md +863 -0
  37. package/docs/data-display/en/concise-data-table.md +732 -0
  38. package/docs/data-display/en/listbox.md +786 -0
  39. package/docs/data-display/en/treeview.md +863 -0
  40. package/docs/data-table/cn/README.md +596 -0
  41. package/docs/data-table/en/README.md +596 -0
  42. package/docs/dialog/cn/README.md +767 -0
  43. package/docs/dialog/en/README.md +767 -0
  44. package/docs/form/cn/README.md +847 -0
  45. package/docs/form/en/README.md +847 -0
  46. package/docs/form-components/cn/README.md +495 -0
  47. package/docs/form-components/cn/attachmentfilesfield.md +757 -0
  48. package/docs/form-components/cn/cascade-options-select.md +374 -0
  49. package/docs/form-components/cn/checkbox.md +58 -0
  50. package/docs/form-components/cn/date-picker.md +138 -0
  51. package/docs/form-components/cn/datetime-picker.md +228 -0
  52. package/docs/form-components/cn/group-checkbox.md +405 -0
  53. package/docs/form-components/cn/group-radiobox.md +525 -0
  54. package/docs/form-components/cn/imagefilesfield.md +651 -0
  55. package/docs/form-components/cn/input-options-select.md +250 -0
  56. package/docs/form-components/cn/lookup-editor.md +406 -0
  57. package/docs/form-components/cn/memoeditor.md +409 -0
  58. package/docs/form-components/cn/number-editor.md +261 -0
  59. package/docs/form-components/cn/options-multi-select.md +177 -0
  60. package/docs/form-components/cn/options-select.md +83 -0
  61. package/docs/form-components/cn/passwordeditor.md +538 -0
  62. package/docs/form-components/cn/prompts-text-editor.md +241 -0
  63. package/docs/form-components/cn/radiobutton.md +84 -0
  64. package/docs/form-components/cn/switch.md +178 -0
  65. package/docs/form-components/cn/text-editor.md +142 -0
  66. package/docs/form-components/cn/time-editor.md +159 -0
  67. package/docs/form-components/cn/unit-number-editor.md +164 -0
  68. package/docs/form-components/en/README.md +463 -0
  69. package/docs/form-components/en/attachmentfilesfield.md +757 -0
  70. package/docs/form-components/en/cascade-options-select.md +358 -0
  71. package/docs/form-components/en/checkbox.md +59 -0
  72. package/docs/form-components/en/date-picker.md +138 -0
  73. package/docs/form-components/en/datetime-picker.md +228 -0
  74. package/docs/form-components/en/group-checkbox.md +395 -0
  75. package/docs/form-components/en/group-radiobox.md +498 -0
  76. package/docs/form-components/en/imagefilesfield.md +651 -0
  77. package/docs/form-components/en/input-options-select.md +239 -0
  78. package/docs/form-components/en/lookup-editor.md +389 -0
  79. package/docs/form-components/en/memoeditor.md +409 -0
  80. package/docs/form-components/en/number-editor.md +249 -0
  81. package/docs/form-components/en/options-multi-select.md +177 -0
  82. package/docs/form-components/en/options-select.md +83 -0
  83. package/docs/form-components/en/passwordeditor.md +538 -0
  84. package/docs/form-components/en/prompts-text-editor.md +241 -0
  85. package/docs/form-components/en/radiobutton.md +84 -0
  86. package/docs/form-components/en/switch.md +180 -0
  87. package/docs/form-components/en/text-editor.md +142 -0
  88. package/docs/form-components/en/time-editor.md +159 -0
  89. package/docs/form-components/en/unit-number-editor.md +164 -0
  90. package/docs/form-layout/cn/criteria-field.md +652 -0
  91. package/docs/form-layout/cn/flex-form.md +454 -0
  92. package/docs/form-layout/cn/flex-row-form.md +542 -0
  93. package/docs/form-layout/cn/form-field.md +923 -0
  94. package/docs/form-layout/cn/grid-form.md +676 -0
  95. package/docs/form-layout/en/criteria-field.md +652 -0
  96. package/docs/form-layout/en/flex-form.md +454 -0
  97. package/docs/form-layout/en/flex-row-form.md +542 -0
  98. package/docs/form-layout/en/form-field.md +923 -0
  99. package/docs/form-layout/en/grid-form.md +676 -0
  100. package/docs/global/cn/README.md +534 -0
  101. package/docs/global/en/README.md +534 -0
  102. package/docs/layout/cn/classiclayout.md +460 -0
  103. package/docs/layout/cn/headerlayout.md +524 -0
  104. package/docs/layout/cn/sidebarlayout.md +263 -0
  105. package/docs/layout/en/classiclayout.md +951 -0
  106. package/docs/layout/en/headerlayout.md +524 -0
  107. package/docs/layout/en/sidebarlayout.md +262 -0
  108. package/docs/misc/cn/README.md +1217 -0
  109. package/docs/misc/en/README.md +1217 -0
  110. package/docs/navigation/cn/breadcrumb.md +291 -0
  111. package/docs/navigation/cn/navigator.md +322 -0
  112. package/docs/navigation/cn/navigatormenu.md +512 -0
  113. package/docs/navigation/cn/progressbar.md +199 -0
  114. package/docs/navigation/cn/progressstepbar.md +299 -0
  115. package/docs/navigation/en/breadcrumb.md +291 -0
  116. package/docs/navigation/en/navigator.md +322 -0
  117. package/docs/navigation/en/navigatormenu.md +512 -0
  118. package/docs/navigation/en/progressbar.md +199 -0
  119. package/docs/navigation/en/progressstepbar.md +299 -0
  120. package/docs/search-filters/cn/daterange.md +1156 -0
  121. package/docs/search-filters/cn/numberrange.md +688 -0
  122. package/docs/search-filters/cn/searchbox.md +1582 -0
  123. package/docs/search-filters/en/daterange.md +1156 -0
  124. package/docs/search-filters/en/numberrange.md +688 -0
  125. package/docs/search-filters/en/searchbox.md +1582 -0
  126. package/package.json +38 -5
@@ -0,0 +1,404 @@
1
+ # Card 卡片组件
2
+
3
+ 一个灵活且多用途的卡片容器组件,用于显示带有可选标题、操作按钮和样式变体的内容。
4
+
5
+ ## 概述
6
+
7
+ Card 组件提供了一种结构化的方式来在容器中显示内容,可以包含标题、头部栏、操作按钮和各种视觉样式。它非常适合创建内容卡片、信息面板和交互式容器。
8
+
9
+ ## 安装
10
+
11
+ ```typescript
12
+ import Card from '@ticatec/uniface-element/Card';
13
+ import type { CardAction } from '@ticatec/uniface-element/Card';
14
+ ```
15
+
16
+ ## 基本用法
17
+
18
+ ```svelte
19
+ <script lang="ts">
20
+ import Card from '@ticatec/uniface-element/Card';
21
+
22
+ let title = "基础卡片";
23
+ </script>
24
+
25
+ <Card {title}>
26
+ <p>这是卡片内容区域,您可以在这里放置任何内容。</p>
27
+ </Card>
28
+ ```
29
+
30
+ ## 属性
31
+
32
+ | 属性 | 类型 | 默认值 | 描述 |
33
+ |------|------|--------|------|
34
+ | `style` | `string` | `""` | 卡片的自定义 CSS 样式 |
35
+ | `title` | `string` | `null` | 卡片标题(创建简单头部) |
36
+ | `actions` | `Array<CardAction>` | `[]` | 卡片的操作按钮 |
37
+ | `variant` | `'plain' \| '3d'` | `'plain'` | 视觉样式变体 |
38
+ | `iconColor` | `string \| null` | `null` | 操作图标的颜色 |
39
+ | `data` | `any` | - | 传递给操作回调的数据 |
40
+
41
+ ## 插槽
42
+
43
+ | 插槽 | 描述 |
44
+ |------|------|
45
+ | `default` | 卡片的主要内容区域 |
46
+ | `header-bar` | 自定义头部内容(覆盖标题) |
47
+ | `action-bar` | 自定义操作栏(未提供操作数组时使用) |
48
+
49
+ ## CardAction 接口
50
+
51
+ ```typescript
52
+ interface CardAction {
53
+ /**
54
+ * 使用icon字体
55
+ */
56
+ icon?: string;
57
+
58
+ /**
59
+ * 直接嵌入图标
60
+ */
61
+ img?: string;
62
+
63
+ /**
64
+ * 鼠标停留的提示
65
+ */
66
+ hint?: string;
67
+
68
+ /**
69
+ * 是否禁用
70
+ */
71
+ disabled?: boolean;
72
+
73
+ /**
74
+ * 操作回调函数
75
+ */
76
+ callback: ActionCallback;
77
+ }
78
+
79
+ type ActionCallback = (data: any) => void;
80
+ ```
81
+
82
+ ## 使用示例
83
+
84
+ ### 带标题的基础卡片
85
+
86
+ ```svelte
87
+ <script lang="ts">
88
+ import Card from '@ticatec/uniface-element/Card';
89
+ </script>
90
+
91
+ <Card title="用户信息">
92
+ <div class="user-info">
93
+ <p><strong>姓名:</strong> 张三</p>
94
+ <p><strong>邮箱:</strong> zhang@example.com</p>
95
+ <p><strong>角色:</strong> 开发者</p>
96
+ </div>
97
+ </Card>
98
+ ```
99
+
100
+ ### 带操作按钮的卡片
101
+
102
+ ```svelte
103
+ <script lang="ts">
104
+ import Card from '@ticatec/uniface-element/Card';
105
+ import type { CardAction } from '@ticatec/uniface-element/Card';
106
+
107
+ let userData = { id: 1, name: '张三' };
108
+
109
+ let actions: CardAction[] = [
110
+ {
111
+ icon: 'edit',
112
+ hint: '编辑用户',
113
+ callback: (data) => console.log('编辑', data)
114
+ },
115
+ {
116
+ icon: 'delete',
117
+ hint: '删除用户',
118
+ callback: (data) => console.log('删除', data)
119
+ },
120
+ {
121
+ icon: 'share',
122
+ hint: '分享用户资料',
123
+ disabled: false,
124
+ callback: (data) => console.log('分享', data)
125
+ }
126
+ ];
127
+ </script>
128
+
129
+ <Card title="用户卡片" {actions} data={userData}>
130
+ <div class="user-profile">
131
+ <p>用户资料内容在这里...</p>
132
+ </div>
133
+ </Card>
134
+ ```
135
+
136
+ ### 3D 样式卡片
137
+
138
+ ```svelte
139
+ <script lang="ts">
140
+ import Card from '@ticatec/uniface-element/Card';
141
+ </script>
142
+
143
+ <Card title="3D 卡片" variant="3d">
144
+ <p>这张卡片具有3D阴影效果,增强视觉吸引力。</p>
145
+ </Card>
146
+ ```
147
+
148
+ ### 带自定义头部的卡片
149
+
150
+ ```svelte
151
+ <script lang="ts">
152
+ import Card from '@ticatec/uniface-element/Card';
153
+ </script>
154
+
155
+ <Card>
156
+ <div slot="header-bar" class="custom-header">
157
+ <h3>自定义头部</h3>
158
+ <span class="status-badge">激活</span>
159
+ </div>
160
+
161
+ <div class="card-body">
162
+ <p>带有自定义头部样式的内容。</p>
163
+ </div>
164
+ </Card>
165
+ ```
166
+
167
+ ### 带自定义操作栏的卡片
168
+
169
+ ```svelte
170
+ <script lang="ts">
171
+ import Card from '@ticatec/uniface-element/Card';
172
+ </script>
173
+
174
+ <Card title="自定义操作">
175
+ <p>卡片内容在这里。</p>
176
+
177
+ <div slot="action-bar" class="custom-actions">
178
+ <button class="btn-primary">保存</button>
179
+ <button class="btn-secondary">取消</button>
180
+ </div>
181
+ </Card>
182
+ ```
183
+
184
+ ### 包含所有功能的高级卡片
185
+
186
+ ```svelte
187
+ <script lang="ts">
188
+ import Card from '@ticatec/uniface-element/Card';
189
+ import type { CardAction } from '@ticatec/uniface-element/Card';
190
+
191
+ let projectData = {
192
+ id: 'proj-123',
193
+ name: '网站重新设计',
194
+ status: '进行中'
195
+ };
196
+
197
+ let projectActions: CardAction[] = [
198
+ {
199
+ icon: 'visibility',
200
+ hint: '查看项目详情',
201
+ callback: (data) => viewProject(data)
202
+ },
203
+ {
204
+ icon: 'edit',
205
+ hint: '编辑项目',
206
+ callback: (data) => editProject(data)
207
+ },
208
+ {
209
+ icon: 'share',
210
+ hint: '分享项目',
211
+ callback: (data) => shareProject(data)
212
+ },
213
+ {
214
+ icon: 'archive',
215
+ hint: '归档项目',
216
+ disabled: projectData.status === '已归档',
217
+ callback: (data) => archiveProject(data)
218
+ }
219
+ ];
220
+
221
+ function viewProject(data: any) {
222
+ console.log('查看项目:', data);
223
+ }
224
+
225
+ function editProject(data: any) {
226
+ console.log('编辑项目:', data);
227
+ }
228
+
229
+ function shareProject(data: any) {
230
+ console.log('分享项目:', data);
231
+ }
232
+
233
+ function archiveProject(data: any) {
234
+ console.log('归档项目:', data);
235
+ }
236
+ </script>
237
+
238
+ <Card
239
+ title="项目: {projectData.name}"
240
+ variant="3d"
241
+ actions={projectActions}
242
+ data={projectData}
243
+ iconColor="#007bff"
244
+ style="max-width: 400px; margin: 20px;"
245
+ >
246
+ <div class="project-details">
247
+ <div class="status-row">
248
+ <span class="label">状态:</span>
249
+ <span class="status status-{projectData.status.toLowerCase().replace(' ', '-')}">
250
+ {projectData.status}
251
+ </span>
252
+ </div>
253
+ <div class="description">
254
+ <p>采用现代 UI/UX 原则对公司网站进行完整重新设计。</p>
255
+ </div>
256
+ <div class="progress">
257
+ <div class="progress-bar">
258
+ <div class="progress-fill" style="width: 65%"></div>
259
+ </div>
260
+ <span class="progress-text">65% 完成</span>
261
+ </div>
262
+ </div>
263
+ </Card>
264
+
265
+ <style>
266
+ .project-details {
267
+ padding: 16px 0;
268
+ }
269
+
270
+ .status-row {
271
+ display: flex;
272
+ align-items: center;
273
+ margin-bottom: 12px;
274
+ }
275
+
276
+ .label {
277
+ font-weight: 600;
278
+ margin-right: 8px;
279
+ }
280
+
281
+ .status {
282
+ padding: 4px 8px;
283
+ border-radius: 4px;
284
+ font-size: 0.875rem;
285
+ font-weight: 500;
286
+ }
287
+
288
+ .status-进行中 {
289
+ background-color: #fff3cd;
290
+ color: #856404;
291
+ }
292
+
293
+ .description {
294
+ margin-bottom: 16px;
295
+ }
296
+
297
+ .progress {
298
+ display: flex;
299
+ align-items: center;
300
+ gap: 12px;
301
+ }
302
+
303
+ .progress-bar {
304
+ flex: 1;
305
+ height: 8px;
306
+ background-color: #e9ecef;
307
+ border-radius: 4px;
308
+ overflow: hidden;
309
+ }
310
+
311
+ .progress-fill {
312
+ height: 100%;
313
+ background-color: #007bff;
314
+ transition: width 0.3s ease;
315
+ }
316
+
317
+ .progress-text {
318
+ font-size: 0.875rem;
319
+ color: #6c757d;
320
+ white-space: nowrap;
321
+ }
322
+ </style>
323
+ ```
324
+
325
+ ## 样式
326
+
327
+ Card 组件使用以下 CSS 类:
328
+
329
+ ```css
330
+ .uniface-card {
331
+ /* 基础卡片容器 */
332
+ }
333
+
334
+ .uniface-card.shadowBox {
335
+ /* 带阴影的3D变体 */
336
+ }
337
+
338
+ .card-header {
339
+ /* 头部容器 */
340
+ }
341
+
342
+ .card-header.simple {
343
+ /* 简单标题头部 */
344
+ }
345
+
346
+ .card-content {
347
+ /* 主要内容区域 */
348
+ }
349
+
350
+ .card-action-bar {
351
+ /* 操作栏容器 */
352
+ }
353
+ ```
354
+
355
+ ## API 参考
356
+
357
+ ### CardAction 接口
358
+
359
+ ```typescript
360
+ interface CardAction {
361
+ /**
362
+ * 使用icon字体(如 'edit'、'delete')
363
+ */
364
+ icon?: string;
365
+
366
+ /**
367
+ * 直接嵌入图标的URL
368
+ */
369
+ img?: string;
370
+
371
+ /**
372
+ * 鼠标停留时显示的提示文字
373
+ */
374
+ hint?: string;
375
+
376
+ /**
377
+ * 操作按钮是否被禁用
378
+ */
379
+ disabled?: boolean;
380
+
381
+ /**
382
+ * 点击操作时执行的回调函数
383
+ */
384
+ callback: ActionCallback;
385
+ }
386
+ ```
387
+
388
+ ### 类型定义
389
+
390
+ ```typescript
391
+ /**
392
+ * 操作回调函数
393
+ */
394
+ export type ActionCallback = (data: any) => void;
395
+ ```
396
+
397
+ ## 最佳实践
398
+
399
+ 1. **使用描述性标题** - 保持卡片标题简洁但信息丰富
400
+ 2. **限制操作数量** - 不要用太多操作按钮让用户感到困惑
401
+ 3. **提供提示** - 始终为操作包含有用的工具提示文本
402
+ 4. **处理禁用状态** - 当操作不适用时禁用它们
403
+ 5. **一致的样式** - 在类似的卡片中使用相同的变体
404
+ 6. **响应式设计** - 考虑卡片在不同屏幕尺寸上的显示效果