@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,322 @@
|
|
|
1
|
+
# Navigator Component
|
|
2
|
+
|
|
3
|
+
The Navigator component provides a flexible navigation interface for displaying interactive item lists with status indicators, highlights, and click handling.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Interactive Navigation**: Clickable items with custom handlers
|
|
8
|
+
- **Status Indicators**: Visual status representation for each item
|
|
9
|
+
- **Highlighting**: Support for highlighting specific items
|
|
10
|
+
- **Active State Management**: Track and display active/selected items
|
|
11
|
+
- **Flexible Item Structure**: Support for any item data structure
|
|
12
|
+
- **Customizable Styling**: Custom styles and CSS integration
|
|
13
|
+
|
|
14
|
+
## Import
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Basic Usage
|
|
21
|
+
|
|
22
|
+
### Simple Navigation List
|
|
23
|
+
|
|
24
|
+
```svelte
|
|
25
|
+
<script>
|
|
26
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
27
|
+
|
|
28
|
+
const navItems = [
|
|
29
|
+
{ id: 1, text: "Dashboard", completed: true },
|
|
30
|
+
{ id: 2, text: "Projects", completed: true },
|
|
31
|
+
{ id: 3, text: "Settings", completed: false },
|
|
32
|
+
{ id: 4, text: "Profile", completed: false }
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
let activeItem = navItems[0];
|
|
36
|
+
|
|
37
|
+
const handleItemClick = (item) => {
|
|
38
|
+
console.log('Clicked:', item.text);
|
|
39
|
+
activeItem = item;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const getItemStatus = (item) => {
|
|
43
|
+
return item.completed ? NavItemStatus.Completed : NavItemStatus.NotStart;
|
|
44
|
+
};
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<Navigator
|
|
48
|
+
items={navItems}
|
|
49
|
+
{activeItem}
|
|
50
|
+
itemClickHandler={handleItemClick}
|
|
51
|
+
retrieveStatus={getItemStatus}
|
|
52
|
+
/>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Navigation with Highlights
|
|
56
|
+
|
|
57
|
+
```svelte
|
|
58
|
+
<script>
|
|
59
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
60
|
+
|
|
61
|
+
const menuItems = [
|
|
62
|
+
{ id: 1, text: "Home", status: "completed" },
|
|
63
|
+
{ id: 2, text: "About", status: "warning" },
|
|
64
|
+
{ id: 3, text: "Services", status: "not-start" },
|
|
65
|
+
{ id: 4, text: "Contact", status: "completed" }
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
let activeItem = menuItems[0];
|
|
69
|
+
let highlightedItems = [menuItems[1], menuItems[3]]; // Highlight About and Contact
|
|
70
|
+
|
|
71
|
+
const handleClick = (item) => {
|
|
72
|
+
activeItem = item;
|
|
73
|
+
// Handle navigation logic here
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const getStatus = (item) => {
|
|
77
|
+
switch (item.status) {
|
|
78
|
+
case 'completed': return NavItemStatus.Completed;
|
|
79
|
+
case 'warning': return NavItemStatus.Warning;
|
|
80
|
+
default: return NavItemStatus.NotStart;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<Navigator
|
|
86
|
+
items={menuItems}
|
|
87
|
+
{activeItem}
|
|
88
|
+
highlights={highlightedItems}
|
|
89
|
+
itemClickHandler={handleClick}
|
|
90
|
+
retrieveStatus={getStatus}
|
|
91
|
+
style="width: 250px; border: 1px solid #e0e0e0;"
|
|
92
|
+
/>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## API Reference
|
|
96
|
+
|
|
97
|
+
### Props
|
|
98
|
+
|
|
99
|
+
| Property | Type | Default | Description |
|
|
100
|
+
|----------|------|---------|-------------|
|
|
101
|
+
| `items` | `Array<any>` | required | Array of navigation items |
|
|
102
|
+
| `activeItem` | `any` | `null` | Currently active/selected item |
|
|
103
|
+
| `style` | `string` | `""` | Additional CSS styles |
|
|
104
|
+
| `highlights` | `Array<any>` | `[]` | Items to highlight |
|
|
105
|
+
| `itemClickHandler` | `ItemClickHandler` | required | Click event handler |
|
|
106
|
+
| `retrieveStatus` | `RetrieveItemStatus` | required | Function to get item status |
|
|
107
|
+
|
|
108
|
+
### Types
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
type ItemClickHandler = (item: any) => void;
|
|
112
|
+
type RetrieveItemStatus = (item: any) => NavItemStatus;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### NavItemStatus Enum
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
enum NavItemStatus {
|
|
119
|
+
Completed = "nav-completed",
|
|
120
|
+
Warning = "nav-warning",
|
|
121
|
+
NotStart = "nav-not-start"
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Advanced Examples
|
|
126
|
+
|
|
127
|
+
### Task Management Navigator
|
|
128
|
+
|
|
129
|
+
```svelte
|
|
130
|
+
<script>
|
|
131
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
132
|
+
|
|
133
|
+
let tasks = [
|
|
134
|
+
{
|
|
135
|
+
id: 1,
|
|
136
|
+
text: "Setup Project",
|
|
137
|
+
completed: true,
|
|
138
|
+
hasIssues: false
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 2,
|
|
142
|
+
text: "Design Database",
|
|
143
|
+
completed: true,
|
|
144
|
+
hasIssues: true
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: 3,
|
|
148
|
+
text: "Implement API",
|
|
149
|
+
completed: false,
|
|
150
|
+
hasIssues: false
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: 4,
|
|
154
|
+
text: "Frontend Development",
|
|
155
|
+
completed: false,
|
|
156
|
+
hasIssues: false
|
|
157
|
+
}
|
|
158
|
+
];
|
|
159
|
+
|
|
160
|
+
let activeTask = tasks[2]; // Currently working on API
|
|
161
|
+
let importantTasks = tasks.filter(task => task.hasIssues);
|
|
162
|
+
|
|
163
|
+
const handleTaskClick = (task) => {
|
|
164
|
+
activeTask = task;
|
|
165
|
+
console.log(`Switched to task: ${task.text}`);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const getTaskStatus = (task) => {
|
|
169
|
+
if (task.hasIssues) return NavItemStatus.Warning;
|
|
170
|
+
if (task.completed) return NavItemStatus.Completed;
|
|
171
|
+
return NavItemStatus.NotStart;
|
|
172
|
+
};
|
|
173
|
+
</script>
|
|
174
|
+
|
|
175
|
+
<div class="task-navigator">
|
|
176
|
+
<h3>Project Tasks</h3>
|
|
177
|
+
<Navigator
|
|
178
|
+
items={tasks}
|
|
179
|
+
activeItem={activeTask}
|
|
180
|
+
highlights={importantTasks}
|
|
181
|
+
itemClickHandler={handleTaskClick}
|
|
182
|
+
retrieveStatus={getTaskStatus}
|
|
183
|
+
style="border: 1px solid #ddd; border-radius: 4px; padding: 8px;"
|
|
184
|
+
/>
|
|
185
|
+
</div>
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Multi-Step Form Navigator
|
|
189
|
+
|
|
190
|
+
```svelte
|
|
191
|
+
<script>
|
|
192
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
193
|
+
|
|
194
|
+
let formSteps = [
|
|
195
|
+
{ id: 'personal', text: "Personal Info", completed: true },
|
|
196
|
+
{ id: 'address', text: "Address", completed: true },
|
|
197
|
+
{ id: 'payment', text: "Payment", completed: false, current: true },
|
|
198
|
+
{ id: 'review', text: "Review", completed: false }
|
|
199
|
+
];
|
|
200
|
+
|
|
201
|
+
let currentStep = formSteps.find(step => step.current);
|
|
202
|
+
|
|
203
|
+
const handleStepClick = (step) => {
|
|
204
|
+
// Only allow clicking on completed steps or current step
|
|
205
|
+
if (step.completed || step.current) {
|
|
206
|
+
currentStep = step;
|
|
207
|
+
|
|
208
|
+
// Update current step flags
|
|
209
|
+
formSteps = formSteps.map(s => ({
|
|
210
|
+
...s,
|
|
211
|
+
current: s.id === step.id
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const getStepStatus = (step) => {
|
|
217
|
+
if (step.completed) return NavItemStatus.Completed;
|
|
218
|
+
if (step.current) return NavItemStatus.Warning; // Current step
|
|
219
|
+
return NavItemStatus.NotStart;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
const completeCurrentStep = () => {
|
|
223
|
+
const stepIndex = formSteps.findIndex(s => s.current);
|
|
224
|
+
if (stepIndex >= 0) {
|
|
225
|
+
formSteps[stepIndex].completed = true;
|
|
226
|
+
formSteps[stepIndex].current = false;
|
|
227
|
+
|
|
228
|
+
if (stepIndex < formSteps.length - 1) {
|
|
229
|
+
formSteps[stepIndex + 1].current = true;
|
|
230
|
+
currentStep = formSteps[stepIndex + 1];
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
formSteps = [...formSteps]; // Trigger reactivity
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
</script>
|
|
237
|
+
|
|
238
|
+
<div class="form-navigation">
|
|
239
|
+
<Navigator
|
|
240
|
+
items={formSteps}
|
|
241
|
+
activeItem={currentStep}
|
|
242
|
+
itemClickHandler={handleStepClick}
|
|
243
|
+
retrieveStatus={getStepStatus}
|
|
244
|
+
style="margin-bottom: 20px;"
|
|
245
|
+
/>
|
|
246
|
+
|
|
247
|
+
<div class="form-content">
|
|
248
|
+
<h4>Step: {currentStep?.text}</h4>
|
|
249
|
+
<button on:click={completeCurrentStep}>
|
|
250
|
+
Complete Step
|
|
251
|
+
</button>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### File Browser Navigator
|
|
257
|
+
|
|
258
|
+
```svelte
|
|
259
|
+
<script>
|
|
260
|
+
import { Navigator, NavItemStatus } from '@ticatec/uniface-element/Navigator';
|
|
261
|
+
|
|
262
|
+
let files = [
|
|
263
|
+
{ name: "documents", type: "folder", accessible: true },
|
|
264
|
+
{ name: "images", type: "folder", accessible: true },
|
|
265
|
+
{ name: "config.json", type: "file", accessible: true },
|
|
266
|
+
{ name: "backup.zip", type: "file", accessible: false },
|
|
267
|
+
{ name: "temp", type: "folder", accessible: false }
|
|
268
|
+
];
|
|
269
|
+
|
|
270
|
+
let selectedFile = files[0];
|
|
271
|
+
let recentFiles = [files[2]]; // Recently accessed files
|
|
272
|
+
|
|
273
|
+
const handleFileClick = (file) => {
|
|
274
|
+
if (file.accessible) {
|
|
275
|
+
selectedFile = file;
|
|
276
|
+
console.log(`Opened: ${file.name}`);
|
|
277
|
+
} else {
|
|
278
|
+
console.log(`Cannot access: ${file.name}`);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const getFileStatus = (file) => {
|
|
283
|
+
if (!file.accessible) return NavItemStatus.Warning;
|
|
284
|
+
return file.type === 'folder' ? NavItemStatus.Completed : NavItemStatus.NotStart;
|
|
285
|
+
};
|
|
286
|
+
</script>
|
|
287
|
+
|
|
288
|
+
<div class="file-browser">
|
|
289
|
+
<Navigator
|
|
290
|
+
items={files}
|
|
291
|
+
activeItem={selectedFile}
|
|
292
|
+
highlights={recentFiles}
|
|
293
|
+
itemClickHandler={handleFileClick}
|
|
294
|
+
retrieveStatus={getFileStatus}
|
|
295
|
+
style="font-family: monospace; background: #f5f5f5;"
|
|
296
|
+
/>
|
|
297
|
+
</div>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Best Practices
|
|
301
|
+
|
|
302
|
+
1. **Clear Item Text**: Use descriptive, concise text for navigation items
|
|
303
|
+
2. **Consistent Status Logic**: Ensure status determination is predictable
|
|
304
|
+
3. **Appropriate Highlighting**: Use highlights sparingly for important items
|
|
305
|
+
4. **Accessibility**: Ensure sufficient color contrast for status indicators
|
|
306
|
+
5. **Click Handling**: Provide meaningful feedback for user interactions
|
|
307
|
+
6. **State Management**: Keep active item synchronized with application state
|
|
308
|
+
7. **Performance**: Consider virtualization for very large item lists
|
|
309
|
+
|
|
310
|
+
## Styling Notes
|
|
311
|
+
|
|
312
|
+
- Status classes (`nav-completed`, `nav-warning`, `nav-not-start`) provide visual differentiation
|
|
313
|
+
- Active items receive special styling to show selection
|
|
314
|
+
- Highlighted items have additional visual emphasis
|
|
315
|
+
- Custom CSS can be applied via the `style` prop
|
|
316
|
+
|
|
317
|
+
## Integration Tips
|
|
318
|
+
|
|
319
|
+
- Use with routing libraries for single-page application navigation
|
|
320
|
+
- Combine with state management for complex application flows
|
|
321
|
+
- Consider keyboard navigation support for accessibility
|
|
322
|
+
- Test with various item data structures to ensure flexibility
|