@ticatec/uniface-element 0.2.4 → 0.3.0

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 (176) hide show
  1. package/dist/accordion/README.md +169 -0
  2. package/dist/accordion/README_CN.md +176 -0
  3. package/dist/action-bar/README.md +275 -0
  4. package/dist/action-bar/README_CN.md +285 -0
  5. package/dist/app-layout/README.md +374 -0
  6. package/dist/app-layout/README_CN.md +381 -0
  7. package/dist/app-top-bar/README.md +357 -0
  8. package/dist/app-top-bar/README_CN.md +365 -0
  9. package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
  10. package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
  11. package/dist/base-calendar/CalendarBase.svelte +0 -3
  12. package/dist/box/README.md +385 -0
  13. package/dist/box/README_CN.md +393 -0
  14. package/dist/breadcrumbs/README.md +442 -0
  15. package/dist/breadcrumbs/README_CN.md +442 -0
  16. package/dist/button/Button.svelte +27 -7
  17. package/dist/button/Button.svelte.d.ts +3 -1
  18. package/dist/button/IconButton.svelte +26 -6
  19. package/dist/button/IconButton.svelte.d.ts +3 -1
  20. package/dist/button/IconButton_README.md +513 -0
  21. package/dist/button/IconButton_README_CN.md +513 -0
  22. package/dist/button/README.md +428 -0
  23. package/dist/button/README_CN.md +428 -0
  24. package/dist/button/TextButton.svelte +26 -6
  25. package/dist/button/TextButton.svelte.d.ts +3 -1
  26. package/dist/button/TextButton_README.md +571 -0
  27. package/dist/button/TextButton_README_CN.md +571 -0
  28. package/dist/card/README.md +666 -0
  29. package/dist/card/README_CN.md +666 -0
  30. package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
  31. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
  32. package/dist/cascade-options-select/README.md +663 -2
  33. package/dist/cascade-options-select/README_CN.md +664 -0
  34. package/dist/checkbox/CheckBox.svelte +20 -6
  35. package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
  36. package/dist/checkbox/README.md +562 -0
  37. package/dist/checkbox/README_CN.md +727 -0
  38. package/dist/common-editor/NumberInput.svelte +39 -26
  39. package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
  40. package/dist/concise-data-table/ConciseListTable.svelte +133 -36
  41. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
  42. package/dist/concise-data-table/DataCell.svelte +5 -6
  43. package/dist/concise-data-table/DataRow.svelte +22 -2
  44. package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
  45. package/dist/concise-data-table/README.md +606 -0
  46. package/dist/concise-data-table/README_CN.md +611 -0
  47. package/dist/context-menu/ContextMenu.svelte +138 -21
  48. package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
  49. package/dist/context-menu/ContextMenuItem.d.ts +20 -4
  50. package/dist/context-menu/README.md +551 -0
  51. package/dist/context-menu/README_CN.md +551 -0
  52. package/dist/criteria-field/CriteriaField.svelte +3 -5
  53. package/dist/criteria-field/README.md +532 -0
  54. package/dist/criteria-field/README_CN.md +532 -0
  55. package/dist/data-table/README.md +712 -0
  56. package/dist/data-table/README_CN.md +712 -0
  57. package/dist/date-picker/DatePicker.svelte +44 -7
  58. package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
  59. package/dist/date-picker/DateTimePicker.svelte +32 -8
  60. package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
  61. package/dist/date-picker/README.md +326 -0
  62. package/dist/date-picker/README_CN.md +316 -0
  63. package/dist/date-picker/ScrollBar.svelte +18 -8
  64. package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
  65. package/dist/date-picker/TimePanel.svelte +5 -5
  66. package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
  67. package/dist/date-range/README.md +374 -0
  68. package/dist/date-range/README_CN.md +374 -0
  69. package/dist/dialog/README.md +596 -0
  70. package/dist/dialog/README_CN.md +596 -0
  71. package/dist/drawer/README.md +679 -1
  72. package/dist/drawer/README_CN.md +679 -0
  73. package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
  74. package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
  75. package/dist/group-box/group-check-box/README.md +749 -0
  76. package/dist/group-box/group-check-box/README_CN.md +750 -0
  77. package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
  78. package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
  79. package/dist/group-box/group-radio-box/README.md +920 -0
  80. package/dist/group-box/group-radio-box/README_CN.md +920 -0
  81. package/dist/image-files/README.md +1346 -0
  82. package/dist/image-files/README_CN.md +1346 -0
  83. package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
  84. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
  85. package/dist/lib/forwardAllEvents.d.ts +3 -0
  86. package/dist/lib/forwardAllEvents.js +24 -0
  87. package/dist/list-box/README.md +579 -0
  88. package/dist/list-box/README_CN.md +682 -0
  89. package/dist/lookup-editor/LookupEditor.svelte +15 -3
  90. package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
  91. package/dist/lookup-editor/README.md +684 -0
  92. package/dist/lookup-editor/README_CN.md +684 -0
  93. package/dist/memo-editor/MemoEditor.svelte +77 -27
  94. package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
  95. package/dist/memo-editor/README.md +819 -0
  96. package/dist/memo-editor/README_CN.md +819 -0
  97. package/dist/message-box/README.md +398 -0
  98. package/dist/message-box/README_CN.md +398 -0
  99. package/dist/number-editor/NumberEditor.svelte +2 -2
  100. package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
  101. package/dist/number-editor/README.md +353 -22
  102. package/dist/number-editor/README_CN.md +357 -0
  103. package/dist/number-range/README.md +443 -0
  104. package/dist/number-range/README_CN.md +443 -0
  105. package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
  106. package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
  107. package/dist/options-multi-select/README.md +480 -0
  108. package/dist/options-multi-select/README_CN.md +480 -0
  109. package/dist/options-select/OptionsSelect.svelte +36 -5
  110. package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
  111. package/dist/options-select/README.md +632 -0
  112. package/dist/options-select/README_CN.md +632 -0
  113. package/dist/page/README.md +605 -0
  114. package/dist/page/README_CN.md +605 -0
  115. package/dist/pagination/README.md +946 -0
  116. package/dist/pagination/README_CN.md +946 -0
  117. package/dist/pagination-panel/README.md +1075 -0
  118. package/dist/pagination-panel/README_CN.md +1075 -0
  119. package/dist/popup-hint/README.md +841 -0
  120. package/dist/popup-hint/README_CN.md +840 -0
  121. package/dist/progress-bar/README.md +242 -0
  122. package/dist/progress-bar/README_CN.md +242 -0
  123. package/dist/progress-step-bar/README.md +316 -0
  124. package/dist/progress-step-bar/README_CN.md +316 -0
  125. package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
  126. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
  127. package/dist/prompts-text-editor/README.md +329 -0
  128. package/dist/prompts-text-editor/README_CN.md +329 -0
  129. package/dist/property-editor/README.md +969 -0
  130. package/dist/property-editor/README_CN.md +969 -0
  131. package/dist/radio-button/README.md +372 -0
  132. package/dist/radio-button/README_CN.md +372 -0
  133. package/dist/radio-button/RadioButton.svelte +32 -3
  134. package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
  135. package/dist/search-box/README.md +425 -0
  136. package/dist/search-box/README_CN.md +424 -0
  137. package/dist/search-box/SearchBox.svelte +22 -6
  138. package/dist/search-box/SearchBox.svelte.d.ts +4 -1
  139. package/dist/tabs/README.md +919 -0
  140. package/dist/tabs/README_CN.md +920 -0
  141. package/dist/tag/README.md +922 -0
  142. package/dist/tag/README_CN.md +922 -0
  143. package/dist/text-editor/PasswordEditor.svelte +17 -2
  144. package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
  145. package/dist/text-editor/PasswordEditor_README.md +551 -0
  146. package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
  147. package/dist/text-editor/README.md +466 -0
  148. package/dist/text-editor/README_CN.md +466 -0
  149. package/dist/text-editor/TextEditor.svelte +51 -19
  150. package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
  151. package/dist/time-editor/README.md +498 -24
  152. package/dist/time-editor/README_CN.md +498 -0
  153. package/dist/time-editor/TimeEditor.svelte +7 -3
  154. package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
  155. package/dist/toast/README.md +667 -0
  156. package/dist/toast/README_CN.md +667 -0
  157. package/dist/transfer/README.md +795 -0
  158. package/dist/transfer/Transfer.svelte +6 -4
  159. package/dist/transfer/Transfer.svelte.d.ts +3 -1
  160. package/dist/tree-view/README.md +761 -0
  161. package/dist/tree-view/README_CN.md +761 -0
  162. package/dist/tree-view/TreeView.svelte +5 -3
  163. package/dist/tree-view/TreeView.svelte.d.ts +3 -1
  164. package/dist/unit-number-editor/README.md +546 -20
  165. package/dist/unit-number-editor/README_CN.md +525 -0
  166. package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
  167. package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
  168. package/docs/form-field/cn/README_CN.md +364 -0
  169. package/docs/form-field/en/README.md +364 -0
  170. package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
  171. package/docs/form-panel/flex-form/en/README.md +586 -0
  172. package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
  173. package/docs/form-panel/flex-row-form/en/README.md +787 -0
  174. package/docs/form-panel/grid-form/en/README.md +744 -0
  175. package/package.json +1 -1
  176. package/dist/drawer/README-CN.md +0 -1
@@ -0,0 +1,532 @@
1
+ # CriteriaField 条件字段组件
2
+
3
+ 一个简单的布局组件,用于创建一致的条件和过滤表单字段,具有适当的标签和尺寸设置。非常适合搜索表单、过滤面板和基于条件的界面。
4
+
5
+ ## 功能特性
6
+
7
+ - **一致的布局**:标准化的标签和字段排列
8
+ - **灵活的尺寸**:多种预定义尺寸选项
9
+ - **自定义样式**:灵活的标签和容器样式设置
10
+ - **简洁结构**:简单轻量的组件设计
11
+
12
+ ## 基本用法
13
+
14
+ ```svelte
15
+ <script>
16
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
17
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
18
+
19
+ let searchName = '';
20
+ </script>
21
+
22
+ <CriteriaField label="姓名" size="x25">
23
+ <TextEditor
24
+ variant="outlined"
25
+ bind:value={searchName}
26
+ placeholder="输入要搜索的姓名"
27
+ />
28
+ </CriteriaField>
29
+ ```
30
+
31
+ ## 属性
32
+
33
+ | 属性 | 类型 | 默认值 | 描述 |
34
+ |------|------|---------|-------------|
35
+ | `label` | `string` | `"Label"` | 字段的标签文本 |
36
+ | `style` | `string` | `''` | 容器的自定义 CSS 样式 |
37
+ | `label$style` | `string` | `''` | 标签的自定义 CSS 样式 |
38
+ | `size` | `'' \| 'x15' \| 'x20' \| 'x25' \| 'x30' \| 'x35' \| 'x40'` | `''` | 字段的预定义尺寸 |
39
+ | `labelSuffix` | `string` | `':'` | 标签后的后缀文本 |
40
+ | `class` | `string` | `''` | 附加的 CSS 类名 |
41
+
42
+ ## 尺寸选项
43
+
44
+ `size` 属性为不同布局需求提供一致的宽度:
45
+
46
+ - `x15`:超小宽度
47
+ - `x20`:小宽度
48
+ - `x25`:中小宽度
49
+ - `x30`:中等宽度
50
+ - `x35`:中大宽度
51
+ - `x40`:大宽度
52
+
53
+ ## 基础示例
54
+
55
+ ### 简单文本搜索字段
56
+
57
+ ```svelte
58
+ <script>
59
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
60
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
61
+
62
+ let searchText = '';
63
+ </script>
64
+
65
+ <CriteriaField label="搜索" size="x30">
66
+ <TextEditor
67
+ variant="outlined"
68
+ bind:value={searchText}
69
+ placeholder="* 是通配符"
70
+ />
71
+ </CriteriaField>
72
+ ```
73
+
74
+ ### 日期范围过滤器
75
+
76
+ ```svelte
77
+ <script>
78
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
79
+ import DateRange from '@ticatec/uniface-element/DateRange';
80
+
81
+ let dateFrom = '';
82
+ let dateTo = '';
83
+ </script>
84
+
85
+ <CriteriaField label="日期范围" size="x35">
86
+ <DateRange
87
+ variant="outlined"
88
+ bind:fromValue={dateFrom}
89
+ bind:toValue={dateTo}
90
+ />
91
+ </CriteriaField>
92
+ ```
93
+
94
+ ### 数值范围过滤器
95
+
96
+ ```svelte
97
+ <script>
98
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
99
+ import NumberRange from '@ticatec/uniface-element/NumberRange';
100
+
101
+ let priceFrom = null;
102
+ let priceTo = null;
103
+ </script>
104
+
105
+ <CriteriaField label="价格范围" size="x30">
106
+ <NumberRange
107
+ variant="outlined"
108
+ bind:fromValue={priceFrom}
109
+ bind:toValue={priceTo}
110
+ placeholder="0.00"
111
+ />
112
+ </CriteriaField>
113
+ ```
114
+
115
+ ### 自定义样式标签
116
+
117
+ ```svelte
118
+ <script>
119
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
120
+ import SearchBox from '@ticatec/uniface-element/SearchBox';
121
+
122
+ let query = '';
123
+ </script>
124
+
125
+ <CriteriaField
126
+ label="高级搜索"
127
+ size="x40"
128
+ label$style="color: #2563eb; font-weight: 600; font-size: 14px;"
129
+ labelSuffix=""
130
+ >
131
+ <SearchBox
132
+ bind:value={query}
133
+ placeholder="输入搜索关键词..."
134
+ />
135
+ </CriteriaField>
136
+ ```
137
+
138
+ ## 高级示例
139
+
140
+ ### 多条件搜索表单
141
+
142
+ ```svelte
143
+ <script>
144
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
145
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
146
+ import DateRange from '@ticatec/uniface-element/DateRange';
147
+ import OptionsSelect from '@ticatec/uniface-element/OptionsSelect';
148
+ import CheckBox from '@ticatec/uniface-element/CheckBox';
149
+
150
+ let criteria = {
151
+ name: '',
152
+ email: '',
153
+ dateFrom: '',
154
+ dateTo: '',
155
+ status: '',
156
+ includeInactive: false
157
+ };
158
+
159
+ const statusOptions = [
160
+ { code: 'active', text: '激活' },
161
+ { code: 'inactive', text: '未激活' },
162
+ { code: 'pending', text: '待处理' }
163
+ ];
164
+
165
+ const handleSearch = () => {
166
+ console.log('搜索条件:', criteria);
167
+ };
168
+
169
+ const clearCriteria = () => {
170
+ criteria = {
171
+ name: '',
172
+ email: '',
173
+ dateFrom: '',
174
+ dateTo: '',
175
+ status: '',
176
+ includeInactive: false
177
+ };
178
+ };
179
+ </script>
180
+
181
+ <div class="search-form">
182
+ <h3>客户搜索</h3>
183
+
184
+ <div class="criteria-row">
185
+ <CriteriaField label="姓名" size="x25">
186
+ <TextEditor
187
+ variant="outlined"
188
+ bind:value={criteria.name}
189
+ placeholder="客户姓名 (* 表示通配符)"
190
+ />
191
+ </CriteriaField>
192
+
193
+ <CriteriaField label="邮箱" size="x30">
194
+ <TextEditor
195
+ variant="outlined"
196
+ bind:value={criteria.email}
197
+ placeholder="email@domain.com"
198
+ />
199
+ </CriteriaField>
200
+
201
+ <CriteriaField label="状态" size="x20">
202
+ <OptionsSelect
203
+ variant="outlined"
204
+ bind:value={criteria.status}
205
+ options={statusOptions}
206
+ placeholder="所有状态"
207
+ />
208
+ </CriteriaField>
209
+ </div>
210
+
211
+ <div class="criteria-row">
212
+ <CriteriaField label="注册日期" size="x35">
213
+ <DateRange
214
+ variant="outlined"
215
+ bind:fromValue={criteria.dateFrom}
216
+ bind:toValue={criteria.dateTo}
217
+ />
218
+ </CriteriaField>
219
+
220
+ <CriteriaField label="选项" size="x25" labelSuffix="">
221
+ <CheckBox
222
+ label="包含未激活客户"
223
+ bind:value={criteria.includeInactive}
224
+ />
225
+ </CriteriaField>
226
+ </div>
227
+
228
+ <div class="form-actions">
229
+ <button class="btn-primary" on:click={handleSearch}>搜索</button>
230
+ <button class="btn-secondary" on:click={clearCriteria}>清除</button>
231
+ </div>
232
+ </div>
233
+
234
+ <style>
235
+ .search-form {
236
+ padding: 24px;
237
+ border: 1px solid #e5e7eb;
238
+ border-radius: 8px;
239
+ background: #f9fafb;
240
+ }
241
+
242
+ .criteria-row {
243
+ display: flex;
244
+ gap: 16px;
245
+ margin: 16px 0;
246
+ flex-wrap: wrap;
247
+ }
248
+
249
+ .form-actions {
250
+ margin-top: 24px;
251
+ display: flex;
252
+ gap: 12px;
253
+ }
254
+
255
+ .btn-primary, .btn-secondary {
256
+ padding: 8px 16px;
257
+ border-radius: 4px;
258
+ border: 1px solid;
259
+ cursor: pointer;
260
+ font-weight: 500;
261
+ }
262
+
263
+ .btn-primary {
264
+ background: #2563eb;
265
+ color: white;
266
+ border-color: #2563eb;
267
+ }
268
+
269
+ .btn-secondary {
270
+ background: white;
271
+ color: #374151;
272
+ border-color: #d1d5db;
273
+ }
274
+ </style>
275
+ ```
276
+
277
+ ### 过滤面板布局
278
+
279
+ ```svelte
280
+ <script>
281
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
282
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
283
+ import NumberRange from '@ticatec/uniface-element/NumberRange';
284
+ import OptionsSelect from '@ticatec/uniface-element/OptionsSelect';
285
+ import OptionsMultiSelect from '@ticatec/uniface-element/OptionsMultiSelect';
286
+
287
+ let filters = {
288
+ productName: '',
289
+ priceFrom: null,
290
+ priceTo: null,
291
+ category: '',
292
+ tags: '',
293
+ availability: ''
294
+ };
295
+
296
+ const categories = [
297
+ { code: 'electronics', text: '电子产品' },
298
+ { code: 'clothing', text: '服装' },
299
+ { code: 'books', text: '图书' },
300
+ { code: 'home', text: '家居园艺' }
301
+ ];
302
+
303
+ const availabilityOptions = [
304
+ { code: 'in-stock', text: '有库存' },
305
+ { code: 'out-of-stock', text: '缺货' },
306
+ { code: 'pre-order', text: '预订' }
307
+ ];
308
+
309
+ const applyFilters = () => {
310
+ console.log('应用过滤器:', filters);
311
+ };
312
+ </script>
313
+
314
+ <div class="filter-panel">
315
+ <h3>产品过滤器</h3>
316
+
317
+ <div class="filter-group">
318
+ <h4>基本</h4>
319
+ <CriteriaField label="产品名称" size="x35">
320
+ <TextEditor
321
+ variant="outlined"
322
+ bind:value={filters.productName}
323
+ placeholder="按产品名称搜索"
324
+ />
325
+ </CriteriaField>
326
+
327
+ <CriteriaField label="分类" size="x25">
328
+ <OptionsSelect
329
+ variant="outlined"
330
+ bind:value={filters.category}
331
+ options={categories}
332
+ placeholder="选择分类"
333
+ />
334
+ </CriteriaField>
335
+ </div>
336
+
337
+ <div class="filter-group">
338
+ <h4>价格</h4>
339
+ <CriteriaField label="价格范围" size="x30">
340
+ <NumberRange
341
+ variant="outlined"
342
+ bind:fromValue={filters.priceFrom}
343
+ bind:toValue={filters.priceTo}
344
+ placeholder="0.00"
345
+ />
346
+ </CriteriaField>
347
+ </div>
348
+
349
+ <div class="filter-group">
350
+ <h4>高级</h4>
351
+ <CriteriaField label="标签" size="x35">
352
+ <OptionsMultiSelect
353
+ variant="outlined"
354
+ bind:value={filters.tags}
355
+ options={[
356
+ { code: 'new', text: '新品' },
357
+ { code: 'sale', text: '促销' },
358
+ { code: 'featured', text: '精选' },
359
+ { code: 'bestseller', text: '畅销' }
360
+ ]}
361
+ placeholder="选择标签"
362
+ />
363
+ </CriteriaField>
364
+
365
+ <CriteriaField label="库存状态" size="x25">
366
+ <OptionsSelect
367
+ variant="outlined"
368
+ bind:value={filters.availability}
369
+ options={availabilityOptions}
370
+ placeholder="任意状态"
371
+ />
372
+ </CriteriaField>
373
+ </div>
374
+
375
+ <div class="filter-actions">
376
+ <button class="apply-btn" on:click={applyFilters}>应用过滤器</button>
377
+ </div>
378
+ </div>
379
+
380
+ <style>
381
+ .filter-panel {
382
+ width: 300px;
383
+ border: 1px solid #e5e7eb;
384
+ border-radius: 8px;
385
+ background: white;
386
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
387
+ padding: 16px;
388
+ }
389
+
390
+ .filter-panel h3 {
391
+ margin: 0 0 16px 0;
392
+ padding-bottom: 8px;
393
+ border-bottom: 1px solid #e5e7eb;
394
+ }
395
+
396
+ .filter-group {
397
+ margin: 16px 0;
398
+ }
399
+
400
+ .filter-group h4 {
401
+ margin: 0 0 12px 0;
402
+ font-size: 14px;
403
+ color: #6b7280;
404
+ text-transform: uppercase;
405
+ font-weight: 600;
406
+ }
407
+
408
+ .filter-actions {
409
+ margin-top: 24px;
410
+ padding-top: 16px;
411
+ border-top: 1px solid #e5e7eb;
412
+ }
413
+
414
+ .apply-btn {
415
+ width: 100%;
416
+ padding: 8px 16px;
417
+ background: #2563eb;
418
+ color: white;
419
+ border: none;
420
+ border-radius: 4px;
421
+ cursor: pointer;
422
+ font-weight: 500;
423
+ }
424
+
425
+ .apply-btn:hover {
426
+ background: #1d4ed8;
427
+ }
428
+ </style>
429
+ ```
430
+
431
+ ### 不同尺寸对比
432
+
433
+ ```svelte
434
+ <script>
435
+ import CriteriaField from '@ticatec/uniface-element/CriteriaField';
436
+ import TextEditor from '@ticatec/uniface-element/TextEditor';
437
+
438
+ let values = {};
439
+ </script>
440
+
441
+ <div class="size-comparison">
442
+ <h3>尺寸对比</h3>
443
+
444
+ <CriteriaField label="超小 (x15)" size="x15">
445
+ <TextEditor variant="outlined" bind:value={values.x15} />
446
+ </CriteriaField>
447
+
448
+ <CriteriaField label="小 (x20)" size="x20">
449
+ <TextEditor variant="outlined" bind:value={values.x20} />
450
+ </CriteriaField>
451
+
452
+ <CriteriaField label="中小 (x25)" size="x25">
453
+ <TextEditor variant="outlined" bind:value={values.x25} />
454
+ </CriteriaField>
455
+
456
+ <CriteriaField label="中等 (x30)" size="x30">
457
+ <TextEditor variant="outlined" bind:value={values.x30} />
458
+ </CriteriaField>
459
+
460
+ <CriteriaField label="中大 (x35)" size="x35">
461
+ <TextEditor variant="outlined" bind:value={values.x35} />
462
+ </CriteriaField>
463
+
464
+ <CriteriaField label="大 (x40)" size="x40">
465
+ <TextEditor variant="outlined" bind:value={values.x40} />
466
+ </CriteriaField>
467
+ </div>
468
+
469
+ <style>
470
+ .size-comparison {
471
+ display: flex;
472
+ flex-direction: column;
473
+ gap: 16px;
474
+ padding: 20px;
475
+ max-width: 600px;
476
+ }
477
+ </style>
478
+ ```
479
+
480
+ ## 最佳实践
481
+
482
+ ```svelte
483
+ <!-- 好的:清晰、描述性的标签 -->
484
+ <CriteriaField label="客户邮箱地址">
485
+ <TextEditor variant="outlined" type="email" />
486
+ </CriteriaField>
487
+
488
+ <!-- 好的:相关字段使用一致的尺寸 -->
489
+ <div class="criteria-group">
490
+ <CriteriaField label="姓" size="x25">
491
+ <TextEditor variant="outlined" />
492
+ </CriteriaField>
493
+ <CriteriaField label="名" size="x25">
494
+ <TextEditor variant="outlined" />
495
+ </CriteriaField>
496
+ </div>
497
+
498
+ <!-- 好的:为内容选择合适的字段类型 -->
499
+ <CriteriaField label="出生日期" size="x20">
500
+ <DatePicker variant="outlined" />
501
+ </CriteriaField>
502
+
503
+ <!-- 好的:强调重要字段的自定义标签样式 -->
504
+ <CriteriaField
505
+ label="重要字段"
506
+ label$style="color: red; font-weight: bold;"
507
+ >
508
+ <TextEditor variant="outlined" />
509
+ </CriteriaField>
510
+ ```
511
+
512
+ ## CSS 类名
513
+
514
+ 组件应用以下 CSS 类名:
515
+
516
+ - `.uniface-filter-field` - 基础类
517
+ - `.x15`, `.x20`, `.x25`, `.x30`, `.x35`, `.x40` - 尺寸类
518
+
519
+ ## 浏览器支持
520
+
521
+ 支持所有现代浏览器:
522
+ - ES6+ JavaScript
523
+ - 现代 DOM API
524
+ - CSS 自定义属性
525
+ - Flexbox 布局
526
+
527
+ ## 性能考虑
528
+
529
+ - 轻量的组件结构
530
+ - 最少的 DOM 元素
531
+ - 高效的基于 slot 的内容投影
532
+ - 无复杂状态管理