@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.
- package/README.md +320 -1
- package/README_CN.md +392 -0
- package/dist/accordion/Accordion.svelte +1 -1
- package/dist/action-bar/ActionBar.svelte +7 -1
- package/dist/attachment-files/FileRender.svelte +1 -1
- package/dist/attachment-files/FileUploadBar.svelte +7 -6
- package/dist/attachment-files/FileUploadPanel.svelte +2 -2
- package/dist/base-calendar/DateContext.js +5 -4
- package/dist/base-calendar/YearPickupPanel.svelte +4 -4
- package/dist/card/Card.svelte +1 -1
- package/dist/card/Card.svelte.d.ts +1 -1
- package/dist/cascade-options-select/CascadeOptionSelect.svelte +2 -3
- package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +46 -1
- package/dist/cascade-options-select/CascadePanel.svelte +1 -1
- package/dist/checkbox/CheckBox.svelte +1 -1
- package/dist/color-picker/ColorPicker.svelte +9 -9
- package/dist/color-picker/ColorPicker.svelte.d.ts +0 -2
- package/dist/color-picker/ColorPickerPanel.svelte +11 -15
- package/dist/color-picker/ColorPickerPanel.svelte.d.ts +1 -1
- package/dist/common/CommonPicker.svelte +2 -2
- package/dist/common/CommonPicker.svelte.d.ts +1 -1
- package/dist/common/MouseClickHandler.d.ts +1 -1
- package/dist/common/Popover.svelte +28 -6
- package/dist/common/Popover.svelte.d.ts +9 -3
- package/dist/common/uniface-utils.js +6 -4
- package/dist/common-editor/CommonEditor.svelte +1 -1
- package/dist/common-editor/CommonEditor.svelte.d.ts +1 -1
- package/dist/common-editor/NumberInput.svelte +1 -1
- package/dist/common-editor/NumberInput.svelte.d.ts +1 -1
- package/dist/concise-data-table/ConciseListTable.svelte +7 -2
- package/dist/concise-data-table/ConciseListTable.svelte.d.ts +1 -0
- package/dist/concise-data-table/DataRow.svelte +1 -1
- package/dist/concise-data-table/TableOptions.d.ts +1 -1
- package/dist/data-table/DataTable.svelte +1 -1
- package/dist/data-table/parts/ActionsPanel.svelte +4 -3
- package/dist/data-table/parts/ActionsRow.svelte +3 -3
- package/dist/data-table/parts/ContentPanel.svelte +3 -2
- package/dist/data-table/parts/FixedColumnsPanel.svelte +0 -1
- package/dist/data-table/parts/FixedColumnsPanel.svelte.d.ts +1 -2
- package/dist/data-table/parts/FixedHeaderPanel.svelte +2 -2
- package/dist/data-table/parts/FixedRow.svelte +2 -1
- package/dist/data-table/parts/FixedRow.svelte.d.ts +1 -1
- package/dist/data-table/parts/HrefCell.svelte +23 -2
- package/dist/data-table/parts/PopupMenu.svelte +25 -2
- package/dist/data-table/parts/PopupMenu.svelte.d.ts +8 -1
- package/dist/date-picker/DatePicker.svelte +0 -1
- package/dist/date-picker/DateTimePicker.svelte +3 -3
- package/dist/date-picker/ScrollBar.svelte +4 -7
- package/dist/date-range/DateRangeEditor.svelte +1 -1
- package/dist/dialog/CommonDialog.svelte +8 -5
- package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
- package/dist/dialog/Dialog.svelte +37 -12
- package/dist/dialog/Dialog.svelte.d.ts +4 -3
- package/dist/dialog/DialogBoard.svelte +11 -8
- package/dist/dialog/DialogWrapper.svelte +10 -0
- package/dist/{common-editor/DateInput.svelte.d.ts → dialog/DialogWrapper.svelte.d.ts} +6 -13
- package/dist/dialog/Dialogs.js +1 -1
- package/dist/dialog/ModalResult.d.ts +5 -0
- package/dist/dialog/ModalResult.js +5 -0
- package/dist/drawer/Drawer.svelte +1 -1
- package/dist/form-field/FormField.svelte +2 -1
- package/dist/form-field/FormField.svelte.d.ts +1 -0
- package/dist/form-panel/flex-row-form/FormContainer.svelte +1 -1
- package/dist/form-panel/grid-form/EmptyCell.svelte +8 -7
- package/dist/form-panel/grid-form/EmptyCell.svelte.d.ts +2 -2
- package/dist/form-panel/grid-form/GridField.svelte +1 -1
- package/dist/i18nRes/i18nRes.d.ts +2 -0
- package/dist/i18nRes/i18nRes.js +44 -0
- package/dist/i18nRes/index.d.ts +2 -0
- package/dist/i18nRes/index.js +2 -0
- package/dist/image-files/ImageFilesField.svelte +1 -1
- package/dist/indicator/IndicatorBoard.svelte +1 -1
- package/dist/inline-cell-editor/InvalidEditor.svelte +1 -0
- package/dist/input-options-select/InputOptionsSelect.svelte +6 -6
- package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +1 -1
- package/dist/layout/flex/FlexBlock.svelte +1 -1
- package/dist/lookup-editor/LookupEditor.svelte +1 -1
- package/dist/memo-editor/MemoEditor.svelte +2 -2
- package/dist/message-box/IMessageBox.d.ts +2 -4
- package/dist/message-box/IMessageBox.js +4 -6
- package/dist/message-box/MessageBoxBoard.svelte +1 -3
- package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
- package/dist/prompts-text-editor/PromptsTextEditor.svelte +2 -2
- package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +1 -1
- package/dist/property-editor/PropertyEditor.svelte +3 -3
- package/dist/text-editor/PasswordEditor.svelte +1 -1
- package/dist/transfer/Transfer.svelte +17 -12
- package/dist/transfer/Transfer.svelte.d.ts +0 -1
- package/dist/unit-number-editor/UnitNumberEditor.svelte +2 -2
- package/docs/buttons/cn/ActionBar.md +459 -0
- package/docs/buttons/cn/Button.md +228 -0
- package/docs/buttons/cn/IconButton.md +294 -0
- package/docs/buttons/cn/README.md +600 -0
- package/docs/buttons/cn/TextButton.md +163 -0
- package/docs/buttons/en/ActionBar.md +459 -0
- package/docs/buttons/en/Button.md +228 -0
- package/docs/buttons/en/IconButton.md +294 -0
- package/docs/buttons/en/README.md +600 -0
- package/docs/buttons/en/TextButton.md +163 -0
- package/docs/containers/cn/accordion.md +622 -0
- package/docs/containers/cn/box.md +445 -0
- package/docs/containers/cn/card.md +404 -0
- package/docs/containers/cn/page.md +576 -0
- package/docs/containers/cn/tabs.md +686 -0
- package/docs/containers/en/accordion.md +622 -0
- package/docs/containers/en/box.md +445 -0
- package/docs/containers/en/card.md +404 -0
- package/docs/containers/en/page.md +576 -0
- package/docs/containers/en/tabs.md +686 -0
- package/docs/data-display/cn/concise-data-table.md +731 -0
- package/docs/data-display/cn/listbox.md +786 -0
- package/docs/data-display/cn/treeview.md +863 -0
- package/docs/data-display/en/concise-data-table.md +732 -0
- package/docs/data-display/en/listbox.md +786 -0
- package/docs/data-display/en/treeview.md +863 -0
- package/docs/data-table/cn/README.md +596 -0
- package/docs/data-table/en/README.md +596 -0
- package/docs/dialog/cn/README.md +767 -0
- package/docs/dialog/en/README.md +767 -0
- package/docs/form/cn/README.md +847 -0
- package/docs/form/en/README.md +847 -0
- package/docs/form-components/cn/README.md +495 -0
- package/docs/form-components/cn/attachmentfilesfield.md +757 -0
- package/docs/form-components/cn/cascade-options-select.md +374 -0
- package/docs/form-components/cn/checkbox.md +58 -0
- package/docs/form-components/cn/date-picker.md +138 -0
- package/docs/form-components/cn/datetime-picker.md +228 -0
- package/docs/form-components/cn/group-checkbox.md +405 -0
- package/docs/form-components/cn/group-radiobox.md +525 -0
- package/docs/form-components/cn/imagefilesfield.md +651 -0
- package/docs/form-components/cn/input-options-select.md +250 -0
- package/docs/form-components/cn/lookup-editor.md +406 -0
- package/docs/form-components/cn/memoeditor.md +409 -0
- package/docs/form-components/cn/number-editor.md +261 -0
- package/docs/form-components/cn/options-multi-select.md +177 -0
- package/docs/form-components/cn/options-select.md +83 -0
- package/docs/form-components/cn/passwordeditor.md +538 -0
- package/docs/form-components/cn/prompts-text-editor.md +241 -0
- package/docs/form-components/cn/radiobutton.md +84 -0
- package/docs/form-components/cn/switch.md +178 -0
- package/docs/form-components/cn/text-editor.md +142 -0
- package/docs/form-components/cn/time-editor.md +159 -0
- package/docs/form-components/cn/unit-number-editor.md +164 -0
- package/docs/form-components/en/README.md +463 -0
- package/docs/form-components/en/attachmentfilesfield.md +757 -0
- package/docs/form-components/en/cascade-options-select.md +358 -0
- package/docs/form-components/en/checkbox.md +59 -0
- package/docs/form-components/en/date-picker.md +138 -0
- package/docs/form-components/en/datetime-picker.md +228 -0
- package/docs/form-components/en/group-checkbox.md +395 -0
- package/docs/form-components/en/group-radiobox.md +498 -0
- package/docs/form-components/en/imagefilesfield.md +651 -0
- package/docs/form-components/en/input-options-select.md +239 -0
- package/docs/form-components/en/lookup-editor.md +389 -0
- package/docs/form-components/en/memoeditor.md +409 -0
- package/docs/form-components/en/number-editor.md +249 -0
- package/docs/form-components/en/options-multi-select.md +177 -0
- package/docs/form-components/en/options-select.md +83 -0
- package/docs/form-components/en/passwordeditor.md +538 -0
- package/docs/form-components/en/prompts-text-editor.md +241 -0
- package/docs/form-components/en/radiobutton.md +84 -0
- package/docs/form-components/en/switch.md +180 -0
- package/docs/form-components/en/text-editor.md +142 -0
- package/docs/form-components/en/time-editor.md +159 -0
- package/docs/form-components/en/unit-number-editor.md +164 -0
- package/docs/form-layout/cn/criteria-field.md +652 -0
- package/docs/form-layout/cn/flex-form.md +454 -0
- package/docs/form-layout/cn/flex-row-form.md +542 -0
- package/docs/form-layout/cn/form-field.md +923 -0
- package/docs/form-layout/cn/grid-form.md +676 -0
- package/docs/form-layout/en/criteria-field.md +652 -0
- package/docs/form-layout/en/flex-form.md +454 -0
- package/docs/form-layout/en/flex-row-form.md +542 -0
- package/docs/form-layout/en/form-field.md +923 -0
- package/docs/form-layout/en/grid-form.md +676 -0
- package/docs/global/cn/README.md +534 -0
- package/docs/global/en/README.md +534 -0
- package/docs/layout/cn/classiclayout.md +460 -0
- package/docs/layout/cn/headerlayout.md +524 -0
- package/docs/layout/cn/sidebarlayout.md +263 -0
- package/docs/layout/en/classiclayout.md +951 -0
- package/docs/layout/en/headerlayout.md +524 -0
- package/docs/layout/en/sidebarlayout.md +262 -0
- package/docs/misc/cn/README.md +1217 -0
- package/docs/misc/en/README.md +1217 -0
- package/docs/navigation/cn/breadcrumb.md +291 -0
- package/docs/navigation/cn/navigator.md +322 -0
- package/docs/navigation/cn/navigatormenu.md +512 -0
- package/docs/navigation/cn/progressbar.md +199 -0
- package/docs/navigation/cn/progressstepbar.md +299 -0
- package/docs/navigation/en/breadcrumb.md +291 -0
- package/docs/navigation/en/navigator.md +322 -0
- package/docs/navigation/en/navigatormenu.md +512 -0
- package/docs/navigation/en/progressbar.md +199 -0
- package/docs/navigation/en/progressstepbar.md +299 -0
- package/docs/search-filters/cn/daterange.md +1156 -0
- package/docs/search-filters/cn/numberrange.md +688 -0
- package/docs/search-filters/cn/searchbox.md +1582 -0
- package/docs/search-filters/en/daterange.md +1156 -0
- package/docs/search-filters/en/numberrange.md +688 -0
- package/docs/search-filters/en/searchbox.md +1582 -0
- package/package.json +53 -13
- package/dist/common-editor/DateInput.svelte +0 -27
- package/dist/i18n_resources/index.d.ts +0 -3
- package/dist/i18n_resources/index.js +0 -3
- /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.d.ts +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.js +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.d.ts +0 -0
- /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.js +0 -0
|
@@ -0,0 +1,652 @@
|
|
|
1
|
+
# CriteriaField Component
|
|
2
|
+
|
|
3
|
+
Conditional filtering field component providing a labeled filtering field container specifically designed for building criteria filtering forms.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
| Property | Type | Default | Description |
|
|
8
|
+
|----------|------|---------|-------------|
|
|
9
|
+
| `label` | `string` | `'Label'` | Field label text |
|
|
10
|
+
| `style` | `string` | `''` | Custom styles |
|
|
11
|
+
| `label$style` | `string` | `''` | Label styles |
|
|
12
|
+
| `size` | `'' \| 'x15' \| 'x20' \| 'x25' \| 'x30' \| 'x35' \| 'x40'` | `''` | Field size |
|
|
13
|
+
| `labelSuffix` | `string` | `':'` | Label suffix |
|
|
14
|
+
| `class` | `string` | `''` | CSS class name |
|
|
15
|
+
|
|
16
|
+
## Usage Examples
|
|
17
|
+
|
|
18
|
+
### Basic Filtering Fields
|
|
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="Name">
|
|
32
|
+
<TextEditor
|
|
33
|
+
variant="outlined"
|
|
34
|
+
bind:value={searchCriteria.name}
|
|
35
|
+
placeholder="Enter name to search"
|
|
36
|
+
/>
|
|
37
|
+
</CriteriaField>
|
|
38
|
+
|
|
39
|
+
<CriteriaField size="x25" label="Email">
|
|
40
|
+
<TextEditor
|
|
41
|
+
variant="outlined"
|
|
42
|
+
bind:value={searchCriteria.email}
|
|
43
|
+
placeholder="Enter email address"
|
|
44
|
+
/>
|
|
45
|
+
</CriteriaField>
|
|
46
|
+
|
|
47
|
+
<CriteriaField size="x30" label="Department">
|
|
48
|
+
<TextEditor
|
|
49
|
+
variant="outlined"
|
|
50
|
+
bind:value={searchCriteria.department}
|
|
51
|
+
placeholder="Enter department name"
|
|
52
|
+
/>
|
|
53
|
+
</CriteriaField>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Different Sizes of Filtering Fields
|
|
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>Employee Search Criteria</h3>
|
|
85
|
+
|
|
86
|
+
<!-- Small size field -->
|
|
87
|
+
<CriteriaField size="x15" label="ID">
|
|
88
|
+
<TextEditor variant="outlined" bind:value={criteria.name} />
|
|
89
|
+
</CriteriaField>
|
|
90
|
+
|
|
91
|
+
<!-- Standard size field -->
|
|
92
|
+
<CriteriaField size="x20" label="Name">
|
|
93
|
+
<TextEditor
|
|
94
|
+
variant="outlined"
|
|
95
|
+
bind:value={criteria.name}
|
|
96
|
+
placeholder="Enter full name or use * wildcard"
|
|
97
|
+
/>
|
|
98
|
+
</CriteriaField>
|
|
99
|
+
|
|
100
|
+
<!-- Medium size field -->
|
|
101
|
+
<CriteriaField size="x25" label="Age Range">
|
|
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
|
+
<!-- Large size field -->
|
|
112
|
+
<CriteriaField size="x30" label="Birth Date">
|
|
113
|
+
<DateRange
|
|
114
|
+
variant="outlined"
|
|
115
|
+
bind:fromValue={criteria.dobFrom}
|
|
116
|
+
bind:toValue={criteria.dobTo}
|
|
117
|
+
/>
|
|
118
|
+
</CriteriaField>
|
|
119
|
+
|
|
120
|
+
<!-- Extra large size field -->
|
|
121
|
+
<CriteriaField size="x35" label="Department">
|
|
122
|
+
<TextEditor
|
|
123
|
+
variant="outlined"
|
|
124
|
+
bind:value={criteria.department}
|
|
125
|
+
placeholder="Enter department name"
|
|
126
|
+
/>
|
|
127
|
+
</CriteriaField>
|
|
128
|
+
|
|
129
|
+
<!-- Maximum size field -->
|
|
130
|
+
<CriteriaField size="x40" label="Position">
|
|
131
|
+
<TextEditor
|
|
132
|
+
variant="outlined"
|
|
133
|
+
bind:value={criteria.position}
|
|
134
|
+
placeholder="Enter position title"
|
|
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
|
+
### Custom Label Styles
|
|
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: 'All Categories' },
|
|
167
|
+
{ code: 'electronics', text: 'Electronics' },
|
|
168
|
+
{ code: 'clothing', text: 'Clothing' },
|
|
169
|
+
{ code: 'books', text: 'Books' }
|
|
170
|
+
];
|
|
171
|
+
|
|
172
|
+
const statusOptions = [
|
|
173
|
+
{ code: 'active', text: 'Active' },
|
|
174
|
+
{ code: 'inactive', text: 'Inactive' },
|
|
175
|
+
{ code: 'pending', text: 'Pending' }
|
|
176
|
+
];
|
|
177
|
+
</script>
|
|
178
|
+
|
|
179
|
+
<div class="search-form">
|
|
180
|
+
<h3>Product Search</h3>
|
|
181
|
+
|
|
182
|
+
<!-- Important field label -->
|
|
183
|
+
<CriteriaField
|
|
184
|
+
size="x25"
|
|
185
|
+
label="Keyword"
|
|
186
|
+
label$style="color: #dc3545; font-weight: 600;"
|
|
187
|
+
labelSuffix="*:"
|
|
188
|
+
>
|
|
189
|
+
<TextEditor
|
|
190
|
+
variant="outlined"
|
|
191
|
+
bind:value={searchData.keyword}
|
|
192
|
+
placeholder="Enter product keywords"
|
|
193
|
+
/>
|
|
194
|
+
</CriteriaField>
|
|
195
|
+
|
|
196
|
+
<!-- Regular field label -->
|
|
197
|
+
<CriteriaField
|
|
198
|
+
size="x30"
|
|
199
|
+
label="Category"
|
|
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
|
+
<!-- Status field label -->
|
|
212
|
+
<CriteriaField
|
|
213
|
+
size="x25"
|
|
214
|
+
label="Status"
|
|
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
|
+
### Long Label Text Handling
|
|
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>Advanced Search Form</h3>
|
|
261
|
+
|
|
262
|
+
<!-- Long label with automatic ellipsis -->
|
|
263
|
+
<CriteriaField
|
|
264
|
+
size="x25"
|
|
265
|
+
label="Employee ID or Name (supports fuzzy search and wildcards)"
|
|
266
|
+
>
|
|
267
|
+
<TextEditor
|
|
268
|
+
variant="outlined"
|
|
269
|
+
bind:value={advancedCriteria.employeeIdOrName}
|
|
270
|
+
placeholder="Enter employee ID or name"
|
|
271
|
+
/>
|
|
272
|
+
</CriteriaField>
|
|
273
|
+
|
|
274
|
+
<!-- Long label in larger container -->
|
|
275
|
+
<CriteriaField
|
|
276
|
+
size="x35"
|
|
277
|
+
label="Work Date Range (includes hire and termination date filtering)"
|
|
278
|
+
>
|
|
279
|
+
<DateRange
|
|
280
|
+
variant="outlined"
|
|
281
|
+
bind:fromValue={advancedCriteria.workStartDate}
|
|
282
|
+
bind:toValue={advancedCriteria.workEndDate}
|
|
283
|
+
/>
|
|
284
|
+
</CriteriaField>
|
|
285
|
+
|
|
286
|
+
<!-- Custom label style to avoid ellipsis -->
|
|
287
|
+
<CriteriaField
|
|
288
|
+
size="x30"
|
|
289
|
+
label="Project Name or Number"
|
|
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="Enter project information"
|
|
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
|
+
### Combined with Other Components
|
|
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: 'All' },
|
|
344
|
+
{ code: 'electronics', text: 'Electronics' },
|
|
345
|
+
{ code: 'books', text: 'Books' },
|
|
346
|
+
{ code: 'clothing', text: 'Clothing' }
|
|
347
|
+
];
|
|
348
|
+
|
|
349
|
+
const brands = [
|
|
350
|
+
{ code: '', text: 'All Brands' },
|
|
351
|
+
{ code: 'apple', text: 'Apple' },
|
|
352
|
+
{ code: 'samsung', text: 'Samsung' },
|
|
353
|
+
{ code: 'sony', text: 'Sony' }
|
|
354
|
+
];
|
|
355
|
+
|
|
356
|
+
const handleSearch = (): void => {
|
|
357
|
+
console.log('Search criteria:', 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>Product Search</h2>
|
|
375
|
+
|
|
376
|
+
<div class="criteria-grid">
|
|
377
|
+
<CriteriaField size="x30" label="Product Name">
|
|
378
|
+
<TextEditor
|
|
379
|
+
variant="outlined"
|
|
380
|
+
bind:value={productCriteria.name}
|
|
381
|
+
placeholder="Enter product name keywords"
|
|
382
|
+
/>
|
|
383
|
+
</CriteriaField>
|
|
384
|
+
|
|
385
|
+
<CriteriaField size="x25" label="Category">
|
|
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="Price Range">
|
|
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="Brand">
|
|
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="Release Date">
|
|
416
|
+
<DatePicker
|
|
417
|
+
variant="outlined"
|
|
418
|
+
bind:value={productCriteria.releaseDate}
|
|
419
|
+
/>
|
|
420
|
+
</CriteriaField>
|
|
421
|
+
|
|
422
|
+
<CriteriaField size="x20" label="Stock Status">
|
|
423
|
+
<CheckBox
|
|
424
|
+
label="In stock only"
|
|
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
|
+
Reset
|
|
433
|
+
</button>
|
|
434
|
+
<button type="button" class="btn-primary" on:click={handleSearch}>
|
|
435
|
+
Search
|
|
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
|
+
## Size Specifications
|
|
505
|
+
|
|
506
|
+
| Size | Description | Use Case |
|
|
507
|
+
|------|-------------|----------|
|
|
508
|
+
| `''` (default) | Auto-fit width | Flexible layout |
|
|
509
|
+
| `x15` | Minimum width | ID, numbers, short fields |
|
|
510
|
+
| `x20` | Small width | Names, codes, short text |
|
|
511
|
+
| `x25` | Standard width | Common text fields |
|
|
512
|
+
| `x30` | Medium width | Longer text or range selections |
|
|
513
|
+
| `x35` | Large width | Complex input controls |
|
|
514
|
+
| `x40` | Maximum width | Long text or composite controls |
|
|
515
|
+
|
|
516
|
+
## Label Suffix
|
|
517
|
+
|
|
518
|
+
```svelte
|
|
519
|
+
<!-- Default colon suffix -->
|
|
520
|
+
<CriteriaField label="Name">
|
|
521
|
+
<TextEditor />
|
|
522
|
+
</CriteriaField>
|
|
523
|
+
|
|
524
|
+
<!-- Custom suffix -->
|
|
525
|
+
<CriteriaField label="Required Field" labelSuffix="*:">
|
|
526
|
+
<TextEditor />
|
|
527
|
+
</CriteriaField>
|
|
528
|
+
|
|
529
|
+
<!-- No suffix -->
|
|
530
|
+
<CriteriaField label="Option" labelSuffix="">
|
|
531
|
+
<CheckBox label="Enable" />
|
|
532
|
+
</CriteriaField>
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
## Style Customization
|
|
536
|
+
|
|
537
|
+
```css
|
|
538
|
+
/* Custom criteria field container */
|
|
539
|
+
:global(.uniface-filter-field) {
|
|
540
|
+
margin-bottom: 16px;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* Field container styles */
|
|
544
|
+
:global(.uniface-filter-field .field-container) {
|
|
545
|
+
display: flex;
|
|
546
|
+
align-items: center;
|
|
547
|
+
gap: 12px;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* Label styles */
|
|
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
|
+
/* Field content styles */
|
|
561
|
+
:global(.uniface-filter-field .field) {
|
|
562
|
+
flex: 1;
|
|
563
|
+
min-width: 0;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/* Size customization */
|
|
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
|
+
/* Responsive styles */
|
|
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
|
+
## Best Practices
|
|
590
|
+
|
|
591
|
+
### 1. Choose Appropriate Field Sizes
|
|
592
|
+
```svelte
|
|
593
|
+
<!-- Use small sizes for short fields -->
|
|
594
|
+
<CriteriaField size="x15" label="ID">
|
|
595
|
+
<TextEditor />
|
|
596
|
+
</CriteriaField>
|
|
597
|
+
|
|
598
|
+
<!-- Use medium sizes for standard fields -->
|
|
599
|
+
<CriteriaField size="x25" label="Name">
|
|
600
|
+
<TextEditor />
|
|
601
|
+
</CriteriaField>
|
|
602
|
+
|
|
603
|
+
<!-- Use large sizes for complex controls -->
|
|
604
|
+
<CriteriaField size="x35" label="Date Range">
|
|
605
|
+
<DateRange />
|
|
606
|
+
</CriteriaField>
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
### 2. Label Text Handling
|
|
610
|
+
```svelte
|
|
611
|
+
<!-- Concise and clear labels -->
|
|
612
|
+
<CriteriaField label="Name">
|
|
613
|
+
<TextEditor />
|
|
614
|
+
</CriteriaField>
|
|
615
|
+
|
|
616
|
+
<!-- Consider line wrapping for long labels -->
|
|
617
|
+
<CriteriaField
|
|
618
|
+
label="Employee Name or ID"
|
|
619
|
+
label$style="white-space: normal; line-height: 1.2;"
|
|
620
|
+
>
|
|
621
|
+
<TextEditor />
|
|
622
|
+
</CriteriaField>
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### 3. Filter Form Layout
|
|
626
|
+
```svelte
|
|
627
|
+
<div class="criteria-form">
|
|
628
|
+
<div class="criteria-row">
|
|
629
|
+
<CriteriaField size="x25" label="Keyword">
|
|
630
|
+
<TextEditor />
|
|
631
|
+
</CriteriaField>
|
|
632
|
+
|
|
633
|
+
<CriteriaField size="x25" label="Category">
|
|
634
|
+
<OptionsSelect />
|
|
635
|
+
</CriteriaField>
|
|
636
|
+
</div>
|
|
637
|
+
|
|
638
|
+
<div class="criteria-actions">
|
|
639
|
+
<button>Search</button>
|
|
640
|
+
<button>Reset</button>
|
|
641
|
+
</div>
|
|
642
|
+
</div>
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
## Component Advantages
|
|
646
|
+
|
|
647
|
+
1. **Professional Filter Layout** - Specifically designed layout component for criteria filtering forms
|
|
648
|
+
2. **Flexible Size Control** - Multiple preset sizes to accommodate different field requirements
|
|
649
|
+
3. **Customizable Label Styles** - Full customization support for label text and styles
|
|
650
|
+
4. **Responsive Friendly** - Automatic layout adaptation across different screen sizes
|
|
651
|
+
5. **Easy Integration** - Perfect compatibility with various form controls
|
|
652
|
+
6. **Consistent Design** - Unified visual styles for enhanced user experience
|