@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.
- package/dist/accordion/README.md +169 -0
- package/dist/accordion/README_CN.md +176 -0
- package/dist/action-bar/README.md +275 -0
- package/dist/action-bar/README_CN.md +285 -0
- package/dist/app-layout/README.md +374 -0
- package/dist/app-layout/README_CN.md +381 -0
- package/dist/app-top-bar/README.md +357 -0
- package/dist/app-top-bar/README_CN.md +365 -0
- package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
- package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
- package/dist/base-calendar/CalendarBase.svelte +0 -3
- package/dist/box/README.md +385 -0
- package/dist/box/README_CN.md +393 -0
- package/dist/breadcrumbs/README.md +442 -0
- package/dist/breadcrumbs/README_CN.md +442 -0
- package/dist/button/Button.svelte +27 -7
- package/dist/button/Button.svelte.d.ts +3 -1
- package/dist/button/IconButton.svelte +26 -6
- package/dist/button/IconButton.svelte.d.ts +3 -1
- package/dist/button/IconButton_README.md +513 -0
- package/dist/button/IconButton_README_CN.md +513 -0
- package/dist/button/README.md +428 -0
- package/dist/button/README_CN.md +428 -0
- package/dist/button/TextButton.svelte +26 -6
- package/dist/button/TextButton.svelte.d.ts +3 -1
- package/dist/button/TextButton_README.md +571 -0
- package/dist/button/TextButton_README_CN.md +571 -0
- package/dist/card/README.md +666 -0
- package/dist/card/README_CN.md +666 -0
- package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
- package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
- package/dist/cascade-options-select/README.md +663 -2
- package/dist/cascade-options-select/README_CN.md +664 -0
- package/dist/checkbox/CheckBox.svelte +20 -6
- package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
- package/dist/checkbox/README.md +562 -0
- package/dist/checkbox/README_CN.md +727 -0
- package/dist/common-editor/NumberInput.svelte +39 -26
- package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
- package/dist/concise-data-table/ConciseListTable.svelte +133 -36
- package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
- package/dist/concise-data-table/DataCell.svelte +5 -6
- package/dist/concise-data-table/DataRow.svelte +22 -2
- package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
- package/dist/concise-data-table/README.md +606 -0
- package/dist/concise-data-table/README_CN.md +611 -0
- package/dist/context-menu/ContextMenu.svelte +138 -21
- package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
- package/dist/context-menu/ContextMenuItem.d.ts +20 -4
- package/dist/context-menu/README.md +551 -0
- package/dist/context-menu/README_CN.md +551 -0
- package/dist/criteria-field/CriteriaField.svelte +3 -5
- package/dist/criteria-field/README.md +532 -0
- package/dist/criteria-field/README_CN.md +532 -0
- package/dist/data-table/README.md +712 -0
- package/dist/data-table/README_CN.md +712 -0
- package/dist/date-picker/DatePicker.svelte +44 -7
- package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
- package/dist/date-picker/DateTimePicker.svelte +32 -8
- package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
- package/dist/date-picker/README.md +326 -0
- package/dist/date-picker/README_CN.md +316 -0
- package/dist/date-picker/ScrollBar.svelte +18 -8
- package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
- package/dist/date-picker/TimePanel.svelte +5 -5
- package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
- package/dist/date-range/README.md +374 -0
- package/dist/date-range/README_CN.md +374 -0
- package/dist/dialog/README.md +596 -0
- package/dist/dialog/README_CN.md +596 -0
- package/dist/drawer/README.md +679 -1
- package/dist/drawer/README_CN.md +679 -0
- package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
- package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
- package/dist/group-box/group-check-box/README.md +749 -0
- package/dist/group-box/group-check-box/README_CN.md +750 -0
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
- package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
- package/dist/group-box/group-radio-box/README.md +920 -0
- package/dist/group-box/group-radio-box/README_CN.md +920 -0
- package/dist/image-files/README.md +1346 -0
- package/dist/image-files/README_CN.md +1346 -0
- package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
- package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
- package/dist/lib/forwardAllEvents.d.ts +3 -0
- package/dist/lib/forwardAllEvents.js +24 -0
- package/dist/list-box/README.md +579 -0
- package/dist/list-box/README_CN.md +682 -0
- package/dist/lookup-editor/LookupEditor.svelte +15 -3
- package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
- package/dist/lookup-editor/README.md +684 -0
- package/dist/lookup-editor/README_CN.md +684 -0
- package/dist/memo-editor/MemoEditor.svelte +77 -27
- package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
- package/dist/memo-editor/README.md +819 -0
- package/dist/memo-editor/README_CN.md +819 -0
- package/dist/message-box/README.md +398 -0
- package/dist/message-box/README_CN.md +398 -0
- package/dist/number-editor/NumberEditor.svelte +2 -2
- package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
- package/dist/number-editor/README.md +353 -22
- package/dist/number-editor/README_CN.md +357 -0
- package/dist/number-range/README.md +443 -0
- package/dist/number-range/README_CN.md +443 -0
- package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
- package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
- package/dist/options-multi-select/README.md +480 -0
- package/dist/options-multi-select/README_CN.md +480 -0
- package/dist/options-select/OptionsSelect.svelte +36 -5
- package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
- package/dist/options-select/README.md +632 -0
- package/dist/options-select/README_CN.md +632 -0
- package/dist/page/README.md +605 -0
- package/dist/page/README_CN.md +605 -0
- package/dist/pagination/README.md +946 -0
- package/dist/pagination/README_CN.md +946 -0
- package/dist/pagination-panel/README.md +1075 -0
- package/dist/pagination-panel/README_CN.md +1075 -0
- package/dist/popup-hint/README.md +841 -0
- package/dist/popup-hint/README_CN.md +840 -0
- package/dist/progress-bar/README.md +242 -0
- package/dist/progress-bar/README_CN.md +242 -0
- package/dist/progress-step-bar/README.md +316 -0
- package/dist/progress-step-bar/README_CN.md +316 -0
- package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
- package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
- package/dist/prompts-text-editor/README.md +329 -0
- package/dist/prompts-text-editor/README_CN.md +329 -0
- package/dist/property-editor/README.md +969 -0
- package/dist/property-editor/README_CN.md +969 -0
- package/dist/radio-button/README.md +372 -0
- package/dist/radio-button/README_CN.md +372 -0
- package/dist/radio-button/RadioButton.svelte +32 -3
- package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
- package/dist/search-box/README.md +425 -0
- package/dist/search-box/README_CN.md +424 -0
- package/dist/search-box/SearchBox.svelte +22 -6
- package/dist/search-box/SearchBox.svelte.d.ts +4 -1
- package/dist/tabs/README.md +919 -0
- package/dist/tabs/README_CN.md +920 -0
- package/dist/tag/README.md +922 -0
- package/dist/tag/README_CN.md +922 -0
- package/dist/text-editor/PasswordEditor.svelte +17 -2
- package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
- package/dist/text-editor/PasswordEditor_README.md +551 -0
- package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
- package/dist/text-editor/README.md +466 -0
- package/dist/text-editor/README_CN.md +466 -0
- package/dist/text-editor/TextEditor.svelte +51 -19
- package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
- package/dist/time-editor/README.md +498 -24
- package/dist/time-editor/README_CN.md +498 -0
- package/dist/time-editor/TimeEditor.svelte +7 -3
- package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
- package/dist/toast/README.md +667 -0
- package/dist/toast/README_CN.md +667 -0
- package/dist/transfer/README.md +795 -0
- package/dist/transfer/Transfer.svelte +6 -4
- package/dist/transfer/Transfer.svelte.d.ts +3 -1
- package/dist/tree-view/README.md +761 -0
- package/dist/tree-view/README_CN.md +761 -0
- package/dist/tree-view/TreeView.svelte +5 -3
- package/dist/tree-view/TreeView.svelte.d.ts +3 -1
- package/dist/unit-number-editor/README.md +546 -20
- package/dist/unit-number-editor/README_CN.md +525 -0
- package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
- package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
- package/docs/form-field/cn/README_CN.md +364 -0
- package/docs/form-field/en/README.md +364 -0
- package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
- package/docs/form-panel/flex-form/en/README.md +586 -0
- package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
- package/docs/form-panel/flex-row-form/en/README.md +787 -0
- package/docs/form-panel/grid-form/en/README.md +744 -0
- package/package.json +1 -1
- 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
|
+
- 无复杂状态管理
|