@ticatec/uniface-element 0.3.18 → 0.3.19

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.
@@ -0,0 +1,568 @@
1
+ # Uniface Element 组件选择提示词系统
2
+
3
+ 本文档提供了一套结构化的提示词,帮助用户或 AI 助手根据具体使用场景快速选择合适的组件。
4
+
5
+ ---
6
+
7
+ ## 🤖 如何使用此系统
8
+
9
+ ### 作为用户:
10
+ 1. 找到符合你需求的场景描述
11
+ 2. 查看推荐的组件
12
+ 3. 参考示例代码
13
+
14
+ ### 作为 AI 助手:
15
+ 当用户描述需求时,使用以下决策逻辑来推荐组件:
16
+ 1. 识别用户需求的类别(布局、表单、数据展示等)
17
+ 2. 匹配对应的场景描述
18
+ 3. 推荐最合适的组件
19
+ 4. 提供示例代码
20
+
21
+ ---
22
+
23
+ ## 📦 按需求场景分类
24
+
25
+ ### 🏗️ 需求:创建应用布局
26
+
27
+ **场景描述:**
28
+ - "我需要创建一个应用的整体布局"
29
+ - "需要一个带侧边栏的页面"
30
+ - "想要一个经典的顶部导航+侧边栏+内容的布局"
31
+ - "需要响应式的多列布局"
32
+
33
+ **关键问题:**
34
+ ```
35
+ 1. 需要侧边栏吗?
36
+ └─ 是 → SidebarLayout
37
+ └─ 否 → 继续问 2
38
+
39
+ 2. 需要顶部导航栏吗?
40
+ └─ 是 → HeaderLayout
41
+ └─ 否 → 继续问 3
42
+
43
+ 3. 需要完整的经典布局(头+侧边+内容+底)吗?
44
+ └─ 是 → ClassicLayout
45
+ └─ 否 → 继续问 4
46
+
47
+ 4. 需要多列还是多行?
48
+ └─ 多列 → ColumnsLayout
49
+ └─ 多行 → RowsLayout
50
+ ```
51
+
52
+ **推荐组件:**
53
+ ```typescript
54
+ // 侧边栏布局
55
+ import SidebarLayout from '@ticatec/uniface-element/app-layout/SidebarLayout';
56
+
57
+ // 顶部栏布局
58
+ import HeaderLayout from '@ticatec/uniface-element/app-layout/HeaderLayout';
59
+
60
+ // 经典布局
61
+ import ClassicLayout from '@ticatec/uniface-element/app-layout/ClassicLayout';
62
+ ```
63
+
64
+ ---
65
+
66
+ ### 📝 需求:创建表单
67
+
68
+ **场景描述:**
69
+ - "我需要创建一个用户注册表单"
70
+ - "需要一个输入框来收集用户信息"
71
+ - "需要数字输入"
72
+ - "需要下拉选择"
73
+ - "需要日期选择"
74
+ - "需要文件上传"
75
+
76
+ **决策树:**
77
+ ```
78
+ 1. 输入什么类型的数据?
79
+
80
+ 文本类型:
81
+ ├── 单行文本 → TextEditor
82
+ ├── 多行文本/备注 → MemoEditor
83
+ ├── 需要提示/自动完成 → PromptsTextEditor
84
+ └── 单元格内编辑 → InlineCellEditor
85
+
86
+ 数字类型:
87
+ ├── 普通数字 → NumberEditor
88
+ ├── 带单位(如 $100)→ UnitNumberEditor
89
+ └── 数字范围(如价格区间)→ NumberRange
90
+
91
+ 选择类型:
92
+ ├── 是/否开关 → Switch
93
+ ├── 勾选 → CheckBox
94
+ ├── 单选(多选一)→ RadioButton
95
+ ├── 下拉单选 → OptionsSelect
96
+ ├── 下拉多选 → OptionsMultiSelect
97
+ ├── 级联选择(省市区)→ CascadeOptionsSelect
98
+ ├── 可输入也可选择 → InputOptionsSelect
99
+ └── 查找选择 → LookupEditor
100
+
101
+ 日期时间:
102
+ ├── 日期选择 → DatePicker
103
+ ├── 日期时间选择 → DateTimePicker
104
+ ├── 日期范围 → DateRange
105
+ └── 时间选择 → TimeEditor
106
+
107
+ 文件:
108
+ ├── 普通文件上传 → AttachmentFiles
109
+ ├── 图片上传 → ImageFiles
110
+ └── 穿梭选择(左右移动)→ Transfer
111
+ ```
112
+
113
+ **最佳实践:**
114
+ ```svelte
115
+ <script>
116
+ import FormField from '@ticatec/uniface-element/FormField';
117
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
118
+ import NumberEditor from '@ticatec/uniface-element/NumberEditor';
119
+ import OptionsSelect from '@ticatec/uniface-element/OptionsSelect';
120
+ import Button from '@ticatec/uniface-element/Button';
121
+ </script>
122
+
123
+ <form>
124
+ <FormField label="用户名" required>
125
+ <TextEditor placeholder="请输入用户名" />
126
+ </FormField>
127
+
128
+ <FormField label="年龄">
129
+ <NumberEditor placeholder="请输入年龄" />
130
+ </FormField>
131
+
132
+ <FormField label="国家">
133
+ <OptionsSelect options={countries} />
134
+ </FormField>
135
+
136
+ <Button type="primary">提交</Button>
137
+ </form>
138
+ ```
139
+
140
+ ---
141
+
142
+ ### 📊 需求:展示数据
143
+
144
+ **场景描述:**
145
+ - "我需要展示一个数据表格"
146
+ - "需要分页展示数据"
147
+ - "需要显示树形结构的数据"
148
+ - "需要显示进度条"
149
+ - "需要显示状态标签"
150
+
151
+ **决策树:**
152
+ ```
153
+ 1. 数据展示形式?
154
+
155
+ 表格数据:
156
+ ├── 复杂表格(需要分页、排序、选择)→ DataTable
157
+ └── 简单表格 → ConciseDataTable
158
+
159
+ 列表数据:
160
+ ├── 平面列表 → ListBox
161
+ └── 树形结构 → TreeView
162
+
163
+ 进度/状态:
164
+ ├── 进度百分比 → ProgressBar
165
+ ├── 步骤进度 → ProgressStepBar
166
+ ├── 向导导航 → Navigator
167
+ └── 状态标签 → Tag
168
+ ```
169
+
170
+ **示例代码:**
171
+ ```svelte
172
+ <script>
173
+ import DataTable from '@ticatec/uniface-element/DataTable';
174
+ import type { DataColumn } from '@ticatec/uniface-element/DataTable';
175
+
176
+ let columns: DataColumn[] = [
177
+ { field: 'name', title: '姓名', width: 150 },
178
+ { field: 'email', title: '邮箱', width: 200 },
179
+ { field: 'status', title: '状态', width: 120 }
180
+ ];
181
+
182
+ let data = [
183
+ { name: '张三', email: 'zhangsan@example.com', status: 'Active' },
184
+ { name: '李四', email: 'lisi@example.com', status: 'Inactive' }
185
+ ];
186
+ </script>
187
+
188
+ <DataTable {columns} list={data} />
189
+ ```
190
+
191
+ ---
192
+
193
+ ### 💬 需求:用户反馈和通知
194
+
195
+ **场景描述:**
196
+ - "需要弹出一个对话框确认操作"
197
+ - "需要显示成功/失败消息"
198
+ - "需要显示一个侧边面板"
199
+ - "需要一个提示框"
200
+
201
+ **决策树:**
202
+ ```
203
+ 1. 反馈类型?
204
+
205
+ 弹窗类型:
206
+ ├── 完整自定义对话框 → Dialog
207
+ ├── 标准确认框(确定/取消)→ CommonDialog
208
+ └── 消息提示框 → MessageBox
209
+
210
+ 侧边类型:
211
+ └── 从侧边滑出 → Drawer
212
+
213
+ 轻量提示:
214
+ ├── 消息提示(自动消失)→ Toast
215
+ └── 悬浮提示 → PopupHint
216
+ ```
217
+
218
+ **使用场景示例:**
219
+ ```svelte
220
+ <!-- 确认删除对话框 -->
221
+ <script>
222
+ import Dialog from '@ticatec/uniface-element/Dialog';
223
+ import Button from '@ticatec/uniface-element/Button';
224
+
225
+ let showDialog = false;
226
+
227
+ function handleDelete() {
228
+ showDialog = true;
229
+ }
230
+
231
+ function confirmDelete() {
232
+ console.log('已删除');
233
+ showDialog = false;
234
+ }
235
+ </script>
236
+
237
+ <Button onclick={handleDelete}>删除</Button>
238
+
239
+ <Dialog bind:visible={showDialog} title="确认删除">
240
+ <p>确定要删除此项吗?</p>
241
+ <svelte:fragment slot="actions">
242
+ <Button onclick={() => showDialog = false}>取消</Button>
243
+ <Button type="primary" onclick={confirmDelete}>确定</Button>
244
+ </svelte:fragment>
245
+ </Dialog>
246
+
247
+ <!-- 成功消息提示 -->
248
+ <script>
249
+ import Toast from '@ticatec/uniface-element/Toast';
250
+
251
+ function showSuccess() {
252
+ Toast.success('操作成功!');
253
+ }
254
+ </script>
255
+ ```
256
+
257
+ ---
258
+
259
+ ### 🧭 需求:页面导航
260
+
261
+ **场景描述:**
262
+ - "需要显示面包屑导航"
263
+ - "需要标签页来分组内容"
264
+ - "需要创建向导流程"
265
+ - "需要导航菜单"
266
+
267
+ **决策树:**
268
+ ```
269
+ 1. 导航类型?
270
+
271
+ 层级导航:
272
+ └── 面包屑 → Breadcrumbs
273
+
274
+ 内容分组:
275
+ └── 标签页 → Tabs
276
+
277
+ 流程导航:
278
+ └── 向导步骤 → Navigator
279
+
280
+ 菜单导航:
281
+ ├── 顶部菜单 → NavigatorMenu
282
+ ├── 工具栏 → ActionBar
283
+ └── 右键菜单 → ContextMenu
284
+ ```
285
+
286
+ ---
287
+
288
+ ### 🎨 需求:按钮和操作
289
+
290
+ **场景描述:**
291
+ - "需要一个提交按钮"
292
+ - "需要一个图标按钮"
293
+ - "需要一个工具栏"
294
+
295
+ **决策树:**
296
+ ```
297
+ 1. 按钮重要性?
298
+
299
+ 主要操作:
300
+ └── type="primary"
301
+
302
+ 次要操作:
303
+ └── type="secondary"
304
+
305
+ 危险操作:
306
+ └── 自定义红色样式
307
+
308
+ 2. 按钮样式?
309
+
310
+ 标准按钮:
311
+ └── Button
312
+
313
+ 图标按钮:
314
+ └── IconButton
315
+
316
+ 文本按钮:
317
+ └── TextButton
318
+ ```
319
+
320
+ ---
321
+
322
+ ### 🔍 需求:搜索和筛选
323
+
324
+ **场景描述:**
325
+ - "需要一个搜索框"
326
+ - "需要多条件筛选"
327
+ - "需要数字范围筛选"
328
+ - "需要日期范围筛选"
329
+
330
+ **推荐组件:**
331
+ ```
332
+ 搜索:
333
+ └── SearchBox - 带搜索图标的输入框
334
+
335
+ 多条件筛选:
336
+ └── CriteriaField - 组合多个筛选条件
337
+
338
+ 范围筛选:
339
+ ├── 数字范围 → NumberRange
340
+ └── 日期范围 → DateRange
341
+ ```
342
+
343
+ **示例:**
344
+ ```svelte
345
+ <script>
346
+ import SearchBox from '@ticatec/uniface-element/SearchBox';
347
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
348
+ import NumberRange from '@ticatec/uniface-element/NumberRange';
349
+ import DateRange from '@ticatec/uniface-element/DateRange';
350
+ </script>
351
+
352
+ <!-- 搜索框 -->
353
+ <SearchBox placeholder="搜索..." />
354
+
355
+ <!-- 多条件筛选 -->
356
+ <CriteriaField>
357
+ <NumberRange label="价格区间" />
358
+ <DateRange label="发布日期" />
359
+ </CriteriaField>
360
+ ```
361
+
362
+ ---
363
+
364
+ ## 🎯 常见场景速查
365
+
366
+ ### 场景 1:用户注册页面
367
+ ```
368
+ 需求:收集用户基本信息
369
+
370
+ 推荐组件:
371
+ ├── Page - 页面容器
372
+ ├── FormField - 表单字段包装(提供标签和错误提示)
373
+ ├── TextEditor - 用户名、邮箱
374
+ ├── PasswordEditor - 密码
375
+ ├── OptionsSelect - 国家/地区选择
376
+ ├── CheckBox - 同意条款
377
+ └── Button - 提交按钮(type="primary")
378
+
379
+ 完整示例代码:
380
+ 见 COMPONENT_GUIDE.md 场景 1
381
+ ```
382
+
383
+ ### 场景 2:数据管理后台
384
+ ```
385
+ 需求:展示和管理数据列表
386
+
387
+ 推荐组件:
388
+ ├── SidebarLayout - 应用布局(侧边栏+主内容)
389
+ ├── DataTable - 数据表格(支持分页、排序、选择)
390
+ ├── SearchBox - 搜索框
391
+ ├── CriteriaField - 筛选区域
392
+ ├── Button - 新增、删除、编辑按钮
393
+ ├── Pagination - 分页组件
394
+ ├── Dialog - 编辑对话框
395
+ └── Toast - 操作反馈
396
+
397
+ 完整示例代码:
398
+ 见 COMPONENT_GUIDE.md 场景 2
399
+ ```
400
+
401
+ ### 场景 3:设置页面
402
+ ```
403
+ 需求:用户配置设置
404
+
405
+ 推荐组件:
406
+ ├── Page - 页面容器
407
+ ├── Tabs - 分组不同设置类别
408
+ ├── FormField - 表单字段包装
409
+ ├── TextEditor - 文本类设置
410
+ ├── NumberEditor - 数字类设置
411
+ ├── Switch - 开关类设置
412
+ ├── OptionsSelect - 选项类设置
413
+ └── Button - 保存按钮
414
+
415
+ 完整示例代码:
416
+ 见 COMPONENT_GUIDE.md 场景 3
417
+ ```
418
+
419
+ ### 场景 4:多步骤向导
420
+ ```
421
+ 需求:引导用户完成多步骤流程
422
+
423
+ 推荐组件:
424
+ ├── Page - 页面容器
425
+ ├── Navigator - 步骤导航器(显示进度)
426
+ ├── FormField - 表单字段
427
+ ├── 各类表单组件 - 根据每步需求
428
+ └── Button - 上一步/下一步按钮
429
+
430
+ 完整示例代码:
431
+ 见 COMPONENT_GUIDE.md 场景 4
432
+ ```
433
+
434
+ ### 场景 5:文件管理系统
435
+ ```
436
+ 需求:上传和管理文件
437
+
438
+ 推荐组件:
439
+ ├── DataTable - 文件列表
440
+ ├── AttachmentFiles - 文件上传(带进度)
441
+ ├── Button - 操作按钮(上传、删除、下载)
442
+ ├── SearchBox - 文件搜索
443
+ ├── CriteriaField - 文件类型筛选
444
+ ├── Dialog - 文件详情/预览
445
+ └── Tag - 文件类型标签
446
+ ```
447
+
448
+ ---
449
+
450
+ ## 💡 AI 助手决策逻辑
451
+
452
+ 当用户描述需求时,按以下逻辑思考:
453
+
454
+ ### 第一步:识别需求类别
455
+ ```
456
+ 需求关键词识别:
457
+
458
+ 布局相关:
459
+ ├─ "布局"、"页面结构"、"侧边栏"、"顶部栏"
460
+ └─ → 转到 [布局组件决策](#需求创建应用布局)
461
+
462
+ 表单相关:
463
+ ├─ "输入"、"表单"、"填写"、"收集信息"
464
+ ├─ "文本"、"数字"、"日期"、"选择"、"上传"
465
+ └─ → 转到 [表单组件决策](#需求创建表单)
466
+
467
+ 数据展示:
468
+ ├─ "表格"、"列表"、"数据"、"展示"
469
+ ├─ "分页"、"进度"、"状态"
470
+ └─ → 转到 [数据展示决策](#需求展示数据)
471
+
472
+ 反馈通知:
473
+ ├─ "对话框"、"弹窗"、"提示"、"消息"
474
+ ├─ "确认"、"通知"
475
+ └─ → 转到 [反馈组件决策](#需求用户反馈和通知)
476
+
477
+ 导航相关:
478
+ ├─ "导航"、"菜单"、"面包屑"、"标签页"
479
+ ├─ "步骤"、"向导"
480
+ └─ → 转到 [导航组件决策](#需求页面导航)
481
+ ```
482
+
483
+ ### 第二步:细化需求
484
+ ```
485
+ 对于表单需求,问自己:
486
+ 1. 输入什么类型的数据?
487
+ - 文本 → TextEditor / MemoEditor
488
+ - 数字 → NumberEditor
489
+ - 日期 → DatePicker
490
+ - 选择 → OptionsSelect / CheckBox / RadioButton
491
+ - 文件 → AttachmentFiles
492
+
493
+ 2. 需要验证吗?
494
+ - 是 → 使用 FormField 的 error 属性
495
+
496
+ 3. 需要标签和提示吗?
497
+ - 是 → 使用 FormField 包装
498
+ ```
499
+
500
+ ### 第三步:推荐并生成代码
501
+ ```
502
+ 1. 列出需要的组件
503
+ 2. 提供完整的导入语句
504
+ 3. 提供基础示例代码
505
+ 4. 说明重要属性
506
+ 5. 提供最佳实践建议
507
+ ```
508
+
509
+ ---
510
+
511
+ ## 🔧 高级场景组合
512
+
513
+ ### 复杂表单 + 数据表格
514
+ ```
515
+ 场景:数据管理系统的编辑页面
516
+
517
+ 组件组合:
518
+ ├── Dialog - 弹窗编辑
519
+ ├── FormField - 表单字段
520
+ ├── TextEditor - 文本输入
521
+ ├── OptionsSelect - 下拉选择
522
+ ├── DataTable - 主数据表格
523
+ ├── Button - 操作按钮
524
+ └── Toast - 操作反馈
525
+
526
+ 代码结构:
527
+ <Split>
528
+ └── 创建 DataTable 展示列表
529
+ └── 点击"编辑"按钮打开 Dialog
530
+ └── Dialog 内包含 FormField + 各种输入组件
531
+ └── 保存后刷新 DataTable
532
+ </Split>
533
+ ```
534
+
535
+ ### 文件上传 + 预览
536
+ ```
537
+ 场景:图片上传和预览
538
+
539
+ 组件组合:
540
+ ├── AttachmentFiles / ImageFiles - 文件上传
541
+ ├── DataTable - 已上传文件列表
542
+ ├── Dialog - 图片预览
543
+ └── Tag - 文件类型标签
544
+
545
+ 代码结构:
546
+ <Split>
547
+ └── 上传区:AttachmentFiles 组件
548
+ └── 文件列表:DataTable 显示已上传文件
549
+ └── 点击文件:Dialog 显示大图预览
550
+ </Split>
551
+ ```
552
+
553
+ ---
554
+
555
+ ## 📚 相关文档
556
+
557
+ - [组件使用指南](./COMPONENT_GUIDE.md)
558
+ - [组件 API 文档](./src/lib)
559
+ - [示例代码](./src/routes/demo)
560
+
561
+ ---
562
+
563
+ ## 🎓 使用技巧
564
+
565
+ 1. **从需求到组件**:使用本文档的决策树快速定位组件
566
+ 2. **查看示例**:每个组件的 README 都有丰富的示例
567
+ 3. **组合使用**:参考"高级场景组合"了解组件搭配
568
+ 4. **最佳实践**:遵循组件使用指南的最佳实践部分