@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,652 @@
1
+ # CriteriaField 组件
2
+
3
+ 条件筛选字段组件,提供带标签的筛选字段容器,专门用于构建条件筛选表单。
4
+
5
+ ## 属性
6
+
7
+ | 属性 | 类型 | 默认值 | 描述 |
8
+ |------|------|--------|------|
9
+ | `label` | `string` | `'Label'` | 字段标签文本 |
10
+ | `style` | `string` | `''` | 自定义样式 |
11
+ | `label$style` | `string` | `''` | 标签样式 |
12
+ | `size` | `'' \| 'x15' \| 'x20' \| 'x25' \| 'x30' \| 'x35' \| 'x40'` | `''` | 字段大小 |
13
+ | `labelSuffix` | `string` | `':'` | 标签后缀 |
14
+ | `class` | `string` | `''` | CSS类名 |
15
+
16
+ ## 使用示例
17
+
18
+ ### 基础筛选字段
19
+
20
+ ```svelte
21
+ <script lang="ts">
22
+ import CriteriaField, TextEditor from '@ticatec/uniface-element/CriteriaField, TextEditor';
23
+
24
+ let searchCriteria = {
25
+ name: '',
26
+ email: '',
27
+ department: ''
28
+ };
29
+ </script>
30
+
31
+ <CriteriaField size="x20" label="姓名">
32
+ <TextEditor
33
+ variant="outlined"
34
+ bind:value={searchCriteria.name}
35
+ placeholder="输入姓名进行搜索"
36
+ />
37
+ </CriteriaField>
38
+
39
+ <CriteriaField size="x25" label="邮箱">
40
+ <TextEditor
41
+ variant="outlined"
42
+ bind:value={searchCriteria.email}
43
+ placeholder="输入邮箱地址"
44
+ />
45
+ </CriteriaField>
46
+
47
+ <CriteriaField size="x30" label="部门">
48
+ <TextEditor
49
+ variant="outlined"
50
+ bind:value={searchCriteria.department}
51
+ placeholder="输入部门名称"
52
+ />
53
+ </CriteriaField>
54
+ ```
55
+
56
+ ### 不同尺寸的筛选字段
57
+
58
+ ```svelte
59
+ <script lang="ts">
60
+ import CriteriaField, TextEditor, NumberRange, DateRange from '@ticatec/uniface-element/CriteriaField, TextEditor, NumberRange, DateRange';
61
+
62
+ interface SearchCriteria {
63
+ name: string;
64
+ ageFrom: number | null;
65
+ ageTo: number | null;
66
+ dobFrom: Date | null;
67
+ dobTo: Date | null;
68
+ department: string;
69
+ position: string;
70
+ }
71
+
72
+ let criteria: SearchCriteria = {
73
+ name: '',
74
+ ageFrom: null,
75
+ ageTo: null,
76
+ dobFrom: null,
77
+ dobTo: null,
78
+ department: '',
79
+ position: ''
80
+ };
81
+ </script>
82
+
83
+ <div class="criteria-container">
84
+ <h3>员工搜索条件</h3>
85
+
86
+ <!-- 小尺寸字段 -->
87
+ <CriteriaField size="x15" label="ID">
88
+ <TextEditor variant="outlined" bind:value={criteria.name} />
89
+ </CriteriaField>
90
+
91
+ <!-- 标准尺寸字段 -->
92
+ <CriteriaField size="x20" label="姓名">
93
+ <TextEditor
94
+ variant="outlined"
95
+ bind:value={criteria.name}
96
+ placeholder="输入完整姓名或使用 * 通配符"
97
+ />
98
+ </CriteriaField>
99
+
100
+ <!-- 中等尺寸字段 -->
101
+ <CriteriaField size="x25" label="年龄范围">
102
+ <NumberRange
103
+ variant="outlined"
104
+ bind:fromValue={criteria.ageFrom}
105
+ bind:toValue={criteria.ageTo}
106
+ min={18}
107
+ max={65}
108
+ />
109
+ </CriteriaField>
110
+
111
+ <!-- 较大尺寸字段 -->
112
+ <CriteriaField size="x30" label="出生日期">
113
+ <DateRange
114
+ variant="outlined"
115
+ bind:fromValue={criteria.dobFrom}
116
+ bind:toValue={criteria.dobTo}
117
+ />
118
+ </CriteriaField>
119
+
120
+ <!-- 大尺寸字段 -->
121
+ <CriteriaField size="x35" label="部门">
122
+ <TextEditor
123
+ variant="outlined"
124
+ bind:value={criteria.department}
125
+ placeholder="输入部门名称"
126
+ />
127
+ </CriteriaField>
128
+
129
+ <!-- 最大尺寸字段 -->
130
+ <CriteriaField size="x40" label="职位">
131
+ <TextEditor
132
+ variant="outlined"
133
+ bind:value={criteria.position}
134
+ placeholder="输入职位名称"
135
+ />
136
+ </CriteriaField>
137
+ </div>
138
+
139
+ <style>
140
+ .criteria-container {
141
+ max-width: 800px;
142
+ margin: 0 auto;
143
+ padding: 20px;
144
+ }
145
+
146
+ .criteria-container h3 {
147
+ margin-bottom: 20px;
148
+ color: #495057;
149
+ }
150
+ </style>
151
+ ```
152
+
153
+ ### 自定义标签样式
154
+
155
+ ```svelte
156
+ <script lang="ts">
157
+ import CriteriaField, TextEditor, OptionsSelect from '@ticatec/uniface-element/CriteriaField, TextEditor, OptionsSelect';
158
+
159
+ let searchData = {
160
+ keyword: '',
161
+ category: '',
162
+ status: ''
163
+ };
164
+
165
+ const categoryOptions = [
166
+ { code: 'all', text: '全部分类' },
167
+ { code: 'electronics', text: '电子产品' },
168
+ { code: 'clothing', text: '服装' },
169
+ { code: 'books', text: '图书' }
170
+ ];
171
+
172
+ const statusOptions = [
173
+ { code: 'active', text: '活跃' },
174
+ { code: 'inactive', text: '非活跃' },
175
+ { code: 'pending', text: '待审核' }
176
+ ];
177
+ </script>
178
+
179
+ <div class="search-form">
180
+ <h3>产品搜索</h3>
181
+
182
+ <!-- 重要字段标签 -->
183
+ <CriteriaField
184
+ size="x25"
185
+ label="关键词"
186
+ label$style="color: #dc3545; font-weight: 600;"
187
+ labelSuffix="*:"
188
+ >
189
+ <TextEditor
190
+ variant="outlined"
191
+ bind:value={searchData.keyword}
192
+ placeholder="输入产品关键词"
193
+ />
194
+ </CriteriaField>
195
+
196
+ <!-- 普通字段标签 -->
197
+ <CriteriaField
198
+ size="x30"
199
+ label="产品分类"
200
+ label$style="color: #28a745; font-weight: 500;"
201
+ >
202
+ <OptionsSelect
203
+ variant="outlined"
204
+ options={categoryOptions}
205
+ keyField="code"
206
+ textField="text"
207
+ bind:value={searchData.category}
208
+ />
209
+ </CriteriaField>
210
+
211
+ <!-- 状态字段标签 -->
212
+ <CriteriaField
213
+ size="x25"
214
+ label="状态"
215
+ label$style="color: #6f42c1; font-style: italic;"
216
+ labelSuffix=":"
217
+ >
218
+ <OptionsSelect
219
+ variant="outlined"
220
+ options={statusOptions}
221
+ keyField="code"
222
+ textField="text"
223
+ bind:value={searchData.status}
224
+ />
225
+ </CriteriaField>
226
+ </div>
227
+
228
+ <style>
229
+ .search-form {
230
+ max-width: 600px;
231
+ margin: 0 auto;
232
+ padding: 20px;
233
+ background: #f8f9fa;
234
+ border-radius: 8px;
235
+ }
236
+
237
+ .search-form h3 {
238
+ margin-bottom: 20px;
239
+ color: #495057;
240
+ text-align: center;
241
+ }
242
+ </style>
243
+ ```
244
+
245
+ ### 长标签文本处理
246
+
247
+ ```svelte
248
+ <script lang="ts">
249
+ import CriteriaField, TextEditor, DateRange from '@ticatec/uniface-element/CriteriaField, TextEditor, DateRange';
250
+
251
+ let advancedCriteria = {
252
+ employeeIdOrName: '',
253
+ workStartDate: null as Date | null,
254
+ workEndDate: null as Date | null,
255
+ projectName: ''
256
+ };
257
+ </script>
258
+
259
+ <div class="advanced-search">
260
+ <h3>高级搜索表单</h3>
261
+
262
+ <!-- 长标签自动省略 -->
263
+ <CriteriaField
264
+ size="x25"
265
+ label="员工ID或姓名(支持模糊搜索和通配符)"
266
+ >
267
+ <TextEditor
268
+ variant="outlined"
269
+ bind:value={advancedCriteria.employeeIdOrName}
270
+ placeholder="输入员工ID或姓名"
271
+ />
272
+ </CriteriaField>
273
+
274
+ <!-- 长标签在较大容器中显示 -->
275
+ <CriteriaField
276
+ size="x35"
277
+ label="工作日期范围(包含入职和离职时间筛选)"
278
+ >
279
+ <DateRange
280
+ variant="outlined"
281
+ bind:fromValue={advancedCriteria.workStartDate}
282
+ bind:toValue={advancedCriteria.workEndDate}
283
+ />
284
+ </CriteriaField>
285
+
286
+ <!-- 自定义标签样式避免省略 -->
287
+ <CriteriaField
288
+ size="x30"
289
+ label="项目名称或编号"
290
+ label$style="font-size: 12px; line-height: 1.2; white-space: normal;"
291
+ >
292
+ <TextEditor
293
+ variant="outlined"
294
+ bind:value={advancedCriteria.projectName}
295
+ placeholder="输入项目相关信息"
296
+ />
297
+ </CriteriaField>
298
+ </div>
299
+
300
+ <style>
301
+ .advanced-search {
302
+ max-width: 700px;
303
+ margin: 0 auto;
304
+ padding: 20px;
305
+ }
306
+
307
+ .advanced-search h3 {
308
+ margin-bottom: 25px;
309
+ color: #495057;
310
+ border-bottom: 2px solid #007bff;
311
+ padding-bottom: 10px;
312
+ }
313
+ </style>
314
+ ```
315
+
316
+ ### 与其他组件组合使用
317
+
318
+ ```svelte
319
+ <script lang="ts">
320
+ import CriteriaField, TextEditor, NumberRange, OptionsSelect, CheckBox, DatePicker from '@ticatec/uniface-element/CriteriaField, TextEditor, NumberRange, OptionsSelect, CheckBox, DatePicker';
321
+
322
+ interface ProductSearchCriteria {
323
+ name: string;
324
+ category: string;
325
+ priceFrom: number | null;
326
+ priceTo: number | null;
327
+ inStock: boolean;
328
+ releaseDate: Date | null;
329
+ brand: string;
330
+ }
331
+
332
+ let productCriteria: ProductSearchCriteria = {
333
+ name: '',
334
+ category: '',
335
+ priceFrom: null,
336
+ priceTo: null,
337
+ inStock: false,
338
+ releaseDate: null,
339
+ brand: ''
340
+ };
341
+
342
+ const categories = [
343
+ { code: '', text: '全部' },
344
+ { code: 'electronics', text: '电子产品' },
345
+ { code: 'books', text: '图书' },
346
+ { code: 'clothing', text: '服装' }
347
+ ];
348
+
349
+ const brands = [
350
+ { code: '', text: '全部品牌' },
351
+ { code: 'apple', text: '苹果' },
352
+ { code: 'samsung', text: '三星' },
353
+ { code: 'sony', text: '索尼' }
354
+ ];
355
+
356
+ const handleSearch = (): void => {
357
+ console.log('搜索条件:', productCriteria);
358
+ };
359
+
360
+ const handleReset = (): void => {
361
+ productCriteria = {
362
+ name: '',
363
+ category: '',
364
+ priceFrom: null,
365
+ priceTo: null,
366
+ inStock: false,
367
+ releaseDate: null,
368
+ brand: ''
369
+ };
370
+ };
371
+ </script>
372
+
373
+ <div class="product-search-form">
374
+ <h2>产品搜索</h2>
375
+
376
+ <div class="criteria-grid">
377
+ <CriteriaField size="x30" label="产品名称">
378
+ <TextEditor
379
+ variant="outlined"
380
+ bind:value={productCriteria.name}
381
+ placeholder="输入产品名称关键词"
382
+ />
383
+ </CriteriaField>
384
+
385
+ <CriteriaField size="x25" label="产品分类">
386
+ <OptionsSelect
387
+ variant="outlined"
388
+ options={categories}
389
+ keyField="code"
390
+ textField="text"
391
+ bind:value={productCriteria.category}
392
+ />
393
+ </CriteriaField>
394
+
395
+ <CriteriaField size="x30" label="价格范围">
396
+ <NumberRange
397
+ variant="outlined"
398
+ bind:fromValue={productCriteria.priceFrom}
399
+ bind:toValue={productCriteria.priceTo}
400
+ min={0}
401
+ precision={2}
402
+ />
403
+ </CriteriaField>
404
+
405
+ <CriteriaField size="x25" label="品牌">
406
+ <OptionsSelect
407
+ variant="outlined"
408
+ options={brands}
409
+ keyField="code"
410
+ textField="text"
411
+ bind:value={productCriteria.brand}
412
+ />
413
+ </CriteriaField>
414
+
415
+ <CriteriaField size="x25" label="发布日期">
416
+ <DatePicker
417
+ variant="outlined"
418
+ bind:value={productCriteria.releaseDate}
419
+ />
420
+ </CriteriaField>
421
+
422
+ <CriteriaField size="x20" label="库存状态">
423
+ <CheckBox
424
+ label="仅显示有库存商品"
425
+ bind:value={productCriteria.inStock}
426
+ />
427
+ </CriteriaField>
428
+ </div>
429
+
430
+ <div class="search-actions">
431
+ <button type="button" class="btn-secondary" on:click={handleReset}>
432
+ 重置
433
+ </button>
434
+ <button type="button" class="btn-primary" on:click={handleSearch}>
435
+ 搜索
436
+ </button>
437
+ </div>
438
+ </div>
439
+
440
+ <style>
441
+ .product-search-form {
442
+ max-width: 900px;
443
+ margin: 0 auto;
444
+ padding: 30px;
445
+ background: white;
446
+ border-radius: 12px;
447
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
448
+ }
449
+
450
+ .product-search-form h2 {
451
+ margin-bottom: 30px;
452
+ color: #333;
453
+ text-align: center;
454
+ font-size: 24px;
455
+ }
456
+
457
+ .criteria-grid {
458
+ display: grid;
459
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
460
+ gap: 20px;
461
+ margin-bottom: 30px;
462
+ }
463
+
464
+ .search-actions {
465
+ display: flex;
466
+ gap: 15px;
467
+ justify-content: center;
468
+ padding-top: 20px;
469
+ border-top: 1px solid #dee2e6;
470
+ }
471
+
472
+ .btn-primary, .btn-secondary {
473
+ padding: 12px 24px;
474
+ border: none;
475
+ border-radius: 6px;
476
+ font-size: 14px;
477
+ font-weight: 500;
478
+ cursor: pointer;
479
+ transition: all 0.2s;
480
+ }
481
+
482
+ .btn-primary {
483
+ background: #007bff;
484
+ color: white;
485
+ }
486
+
487
+ .btn-secondary {
488
+ background: #6c757d;
489
+ color: white;
490
+ }
491
+
492
+ .btn-primary:hover {
493
+ background: #0056b3;
494
+ transform: translateY(-1px);
495
+ }
496
+
497
+ .btn-secondary:hover {
498
+ background: #545b62;
499
+ transform: translateY(-1px);
500
+ }
501
+ </style>
502
+ ```
503
+
504
+ ## 尺寸说明
505
+
506
+ | 尺寸 | 描述 | 适用场景 |
507
+ |------|------|----------|
508
+ | `''` (默认) | 自适应宽度 | 灵活布局 |
509
+ | `x15` | 最小宽度 | ID、编号等短字段 |
510
+ | `x20` | 小宽度 | 姓名、代码等短文本 |
511
+ | `x25` | 标准宽度 | 常用文本字段 |
512
+ | `x30` | 中等宽度 | 较长文本或范围选择 |
513
+ | `x35` | 较大宽度 | 复杂输入控件 |
514
+ | `x40` | 最大宽度 | 长文本或复合控件 |
515
+
516
+ ## 标签后缀
517
+
518
+ ```svelte
519
+ <!-- 默认使用冒号 -->
520
+ <CriteriaField label="姓名">
521
+ <TextEditor />
522
+ </CriteriaField>
523
+
524
+ <!-- 自定义后缀 -->
525
+ <CriteriaField label="必填字段" labelSuffix="*:">
526
+ <TextEditor />
527
+ </CriteriaField>
528
+
529
+ <!-- 无后缀 -->
530
+ <CriteriaField label="选项" labelSuffix="">
531
+ <CheckBox label="启用" />
532
+ </CriteriaField>
533
+ ```
534
+
535
+ ## 样式定制
536
+
537
+ ```css
538
+ /* 自定义筛选字段容器 */
539
+ :global(.uniface-filter-field) {
540
+ margin-bottom: 16px;
541
+ }
542
+
543
+ /* 字段容器样式 */
544
+ :global(.uniface-filter-field .field-container) {
545
+ display: flex;
546
+ align-items: center;
547
+ gap: 12px;
548
+ }
549
+
550
+ /* 标签样式 */
551
+ :global(.uniface-filter-field .field-label) {
552
+ flex-shrink: 0;
553
+ font-weight: 500;
554
+ color: #495057;
555
+ white-space: nowrap;
556
+ overflow: hidden;
557
+ text-overflow: ellipsis;
558
+ }
559
+
560
+ /* 字段内容样式 */
561
+ :global(.uniface-filter-field .field) {
562
+ flex: 1;
563
+ min-width: 0;
564
+ }
565
+
566
+ /* 尺寸定制 */
567
+ :global(.uniface-filter-field.x20 .field-label) {
568
+ width: 120px;
569
+ }
570
+
571
+ :global(.uniface-filter-field.x30 .field-label) {
572
+ width: 150px;
573
+ }
574
+
575
+ /* 响应式样式 */
576
+ @media (max-width: 768px) {
577
+ :global(.uniface-filter-field .field-container) {
578
+ flex-direction: column;
579
+ align-items: stretch;
580
+ gap: 8px;
581
+ }
582
+
583
+ :global(.uniface-filter-field .field-label) {
584
+ width: auto !important;
585
+ }
586
+ }
587
+ ```
588
+
589
+ ## 最佳实践
590
+
591
+ ### 1. 合理选择字段尺寸
592
+ ```svelte
593
+ <!-- 短字段使用小尺寸 -->
594
+ <CriteriaField size="x15" label="ID">
595
+ <TextEditor />
596
+ </CriteriaField>
597
+
598
+ <!-- 标准字段使用中等尺寸 -->
599
+ <CriteriaField size="x25" label="姓名">
600
+ <TextEditor />
601
+ </CriteriaField>
602
+
603
+ <!-- 复杂控件使用大尺寸 -->
604
+ <CriteriaField size="x35" label="日期范围">
605
+ <DateRange />
606
+ </CriteriaField>
607
+ ```
608
+
609
+ ### 2. 标签文本处理
610
+ ```svelte
611
+ <!-- 简洁明确的标签 -->
612
+ <CriteriaField label="姓名">
613
+ <TextEditor />
614
+ </CriteriaField>
615
+
616
+ <!-- 长标签考虑换行显示 -->
617
+ <CriteriaField
618
+ label="员工姓名或工号"
619
+ label$style="white-space: normal; line-height: 1.2;"
620
+ >
621
+ <TextEditor />
622
+ </CriteriaField>
623
+ ```
624
+
625
+ ### 3. 筛选表单布局
626
+ ```svelte
627
+ <div class="criteria-form">
628
+ <div class="criteria-row">
629
+ <CriteriaField size="x25" label="关键词">
630
+ <TextEditor />
631
+ </CriteriaField>
632
+
633
+ <CriteriaField size="x25" label="分类">
634
+ <OptionsSelect />
635
+ </CriteriaField>
636
+ </div>
637
+
638
+ <div class="criteria-actions">
639
+ <button>搜索</button>
640
+ <button>重置</button>
641
+ </div>
642
+ </div>
643
+ ```
644
+
645
+ ## 组件优势
646
+
647
+ 1. **专业筛选布局** - 专为条件筛选表单设计的布局组件
648
+ 2. **灵活尺寸控制** - 多种预设尺寸,适应不同字段需求
649
+ 3. **标签样式定制** - 支持标签文本和样式的完全定制
650
+ 4. **响应式友好** - 在不同屏幕尺寸下自动适应布局
651
+ 5. **易于集成** - 与各种表单控件完美配合使用
652
+ 6. **一致性设计** - 统一的视觉样式,提升用户体验