@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,299 @@
|
|
|
1
|
+
# ProgressStepBar Component
|
|
2
|
+
|
|
3
|
+
The ProgressStepBar component provides a visual representation of multi-step processes, showing the current status and progress through each step.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Multi-Step Visualization**: Display progress through multiple sequential steps
|
|
8
|
+
- **Status Indicators**: Pending, processing, and completed states for each step
|
|
9
|
+
- **Flexible Layout**: Both horizontal and vertical orientations
|
|
10
|
+
- **Customizable Styling**: Configurable background colors and styles
|
|
11
|
+
- **Step Information**: Support for titles and optional comments
|
|
12
|
+
|
|
13
|
+
## Import
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { ProgressStepBar, ProgressStep, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Basic Usage
|
|
20
|
+
|
|
21
|
+
### Horizontal Step Bar
|
|
22
|
+
|
|
23
|
+
```svelte
|
|
24
|
+
<script>
|
|
25
|
+
import { ProgressStepBar, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
26
|
+
|
|
27
|
+
const steps = [
|
|
28
|
+
{
|
|
29
|
+
topic: "Account Setup",
|
|
30
|
+
comment: "Create your profile",
|
|
31
|
+
status: ProgressStepStatus.Completed
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
topic: "Verification",
|
|
35
|
+
comment: "Verify your email",
|
|
36
|
+
status: ProgressStepStatus.Processing
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
topic: "Complete Profile",
|
|
40
|
+
comment: "Add personal details",
|
|
41
|
+
status: ProgressStepStatus.Pending
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<ProgressStepBar
|
|
47
|
+
{steps}
|
|
48
|
+
direction="horizontal"
|
|
49
|
+
/>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Vertical Step Bar
|
|
53
|
+
|
|
54
|
+
```svelte
|
|
55
|
+
<script>
|
|
56
|
+
import { ProgressStepBar, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
57
|
+
|
|
58
|
+
const workflowSteps = [
|
|
59
|
+
{
|
|
60
|
+
topic: "Review Document",
|
|
61
|
+
status: ProgressStepStatus.Completed
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
topic: "Manager Approval",
|
|
65
|
+
status: ProgressStepStatus.Processing
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
topic: "Final Processing",
|
|
69
|
+
status: ProgressStepStatus.Pending
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<ProgressStepBar
|
|
75
|
+
steps={workflowSteps}
|
|
76
|
+
direction="vertical"
|
|
77
|
+
backgroundColor="#f8f9fa"
|
|
78
|
+
/>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## API Reference
|
|
82
|
+
|
|
83
|
+
### Props
|
|
84
|
+
|
|
85
|
+
| Property | Type | Default | Description |
|
|
86
|
+
|----------|------|---------|-------------|
|
|
87
|
+
| `steps` | `Array<ProgressStep>` | required | Array of step objects |
|
|
88
|
+
| `direction` | `'vertical' \| 'horizontal'` | `'horizontal'` | Layout direction |
|
|
89
|
+
| `backgroundColor` | `string` | `'var(--uniface-progress-step-bar-bg, #ffffff)'` | Background color |
|
|
90
|
+
| `style` | `string` | `''` | Additional CSS styles |
|
|
91
|
+
|
|
92
|
+
### ProgressStep Interface
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
interface ProgressStep {
|
|
96
|
+
topic: string; // Step title
|
|
97
|
+
comment?: string; // Optional step description
|
|
98
|
+
status: ProgressStepStatus; // Current status
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### ProgressStepStatus Enum
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
enum ProgressStepStatus {
|
|
106
|
+
Pending = 'pending', // Not started
|
|
107
|
+
Processing = 'processing', // Currently active
|
|
108
|
+
Completed = 'completed' // Finished
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Detailed Examples
|
|
113
|
+
|
|
114
|
+
### E-commerce Checkout Process
|
|
115
|
+
|
|
116
|
+
```svelte
|
|
117
|
+
<script>
|
|
118
|
+
import { ProgressStepBar, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
119
|
+
|
|
120
|
+
let checkoutSteps = [
|
|
121
|
+
{
|
|
122
|
+
topic: "Shopping Cart",
|
|
123
|
+
comment: "Review your items",
|
|
124
|
+
status: ProgressStepStatus.Completed
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
topic: "Shipping Info",
|
|
128
|
+
comment: "Enter delivery details",
|
|
129
|
+
status: ProgressStepStatus.Completed
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
topic: "Payment",
|
|
133
|
+
comment: "Choose payment method",
|
|
134
|
+
status: ProgressStepStatus.Processing
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
topic: "Confirmation",
|
|
138
|
+
comment: "Review and complete",
|
|
139
|
+
status: ProgressStepStatus.Pending
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
|
|
143
|
+
const nextStep = () => {
|
|
144
|
+
const currentIndex = checkoutSteps.findIndex(step =>
|
|
145
|
+
step.status === ProgressStepStatus.Processing
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
if (currentIndex >= 0 && currentIndex < checkoutSteps.length - 1) {
|
|
149
|
+
checkoutSteps[currentIndex].status = ProgressStepStatus.Completed;
|
|
150
|
+
checkoutSteps[currentIndex + 1].status = ProgressStepStatus.Processing;
|
|
151
|
+
checkoutSteps = [...checkoutSteps]; // Trigger reactivity
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<div class="checkout-container">
|
|
157
|
+
<ProgressStepBar steps={checkoutSteps} />
|
|
158
|
+
<button on:click={nextStep}>Next Step</button>
|
|
159
|
+
</div>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Form Wizard with Validation
|
|
163
|
+
|
|
164
|
+
```svelte
|
|
165
|
+
<script>
|
|
166
|
+
import { ProgressStepBar, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
167
|
+
|
|
168
|
+
let formSteps = [
|
|
169
|
+
{
|
|
170
|
+
topic: "Personal Information",
|
|
171
|
+
comment: "Name, email, phone",
|
|
172
|
+
status: ProgressStepStatus.Processing
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
topic: "Address Details",
|
|
176
|
+
comment: "Shipping and billing",
|
|
177
|
+
status: ProgressStepStatus.Pending
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
topic: "Preferences",
|
|
181
|
+
comment: "Communication settings",
|
|
182
|
+
status: ProgressStepStatus.Pending
|
|
183
|
+
}
|
|
184
|
+
];
|
|
185
|
+
|
|
186
|
+
let currentStepIndex = 0;
|
|
187
|
+
|
|
188
|
+
const completeCurrentStep = () => {
|
|
189
|
+
if (currentStepIndex < formSteps.length) {
|
|
190
|
+
formSteps[currentStepIndex].status = ProgressStepStatus.Completed;
|
|
191
|
+
|
|
192
|
+
if (currentStepIndex < formSteps.length - 1) {
|
|
193
|
+
currentStepIndex++;
|
|
194
|
+
formSteps[currentStepIndex].status = ProgressStepStatus.Processing;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
formSteps = [...formSteps];
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
</script>
|
|
201
|
+
|
|
202
|
+
<div class="form-wizard">
|
|
203
|
+
<ProgressStepBar
|
|
204
|
+
steps={formSteps}
|
|
205
|
+
direction="horizontal"
|
|
206
|
+
style="margin-bottom: 20px;"
|
|
207
|
+
/>
|
|
208
|
+
|
|
209
|
+
<div class="step-content">
|
|
210
|
+
<h3>{formSteps[currentStepIndex]?.topic}</h3>
|
|
211
|
+
<p>{formSteps[currentStepIndex]?.comment}</p>
|
|
212
|
+
|
|
213
|
+
{#if currentStepIndex < formSteps.length}
|
|
214
|
+
<button on:click={completeCurrentStep}>
|
|
215
|
+
Complete Step
|
|
216
|
+
</button>
|
|
217
|
+
{/if}
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### File Upload Process
|
|
223
|
+
|
|
224
|
+
```svelte
|
|
225
|
+
<script>
|
|
226
|
+
import { ProgressStepBar, ProgressStepStatus } from '@ticatec/uniface-element/ProgressStepBar';
|
|
227
|
+
|
|
228
|
+
let uploadSteps = [
|
|
229
|
+
{
|
|
230
|
+
topic: "Select Files",
|
|
231
|
+
status: ProgressStepStatus.Completed
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
topic: "Upload",
|
|
235
|
+
comment: "Transferring files...",
|
|
236
|
+
status: ProgressStepStatus.Processing
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
topic: "Processing",
|
|
240
|
+
comment: "Analyzing content",
|
|
241
|
+
status: ProgressStepStatus.Pending
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
topic: "Complete",
|
|
245
|
+
comment: "Files ready",
|
|
246
|
+
status: ProgressStepStatus.Pending
|
|
247
|
+
}
|
|
248
|
+
];
|
|
249
|
+
|
|
250
|
+
const simulateUpload = async () => {
|
|
251
|
+
// Simulate upload process
|
|
252
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
253
|
+
uploadSteps[1].status = ProgressStepStatus.Completed;
|
|
254
|
+
uploadSteps[2].status = ProgressStepStatus.Processing;
|
|
255
|
+
uploadSteps = [...uploadSteps];
|
|
256
|
+
|
|
257
|
+
// Simulate processing
|
|
258
|
+
await new Promise(resolve => setTimeout(resolve, 1500));
|
|
259
|
+
uploadSteps[2].status = ProgressStepStatus.Completed;
|
|
260
|
+
uploadSteps[3].status = ProgressStepStatus.Processing;
|
|
261
|
+
uploadSteps = [...uploadSteps];
|
|
262
|
+
|
|
263
|
+
// Complete
|
|
264
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
265
|
+
uploadSteps[3].status = ProgressStepStatus.Completed;
|
|
266
|
+
uploadSteps = [...uploadSteps];
|
|
267
|
+
};
|
|
268
|
+
</script>
|
|
269
|
+
|
|
270
|
+
<ProgressStepBar
|
|
271
|
+
steps={uploadSteps}
|
|
272
|
+
direction="vertical"
|
|
273
|
+
/>
|
|
274
|
+
<button on:click={simulateUpload}>Start Upload</button>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Best Practices
|
|
278
|
+
|
|
279
|
+
1. **Clear Step Names**: Use descriptive, action-oriented step titles
|
|
280
|
+
2. **Helpful Comments**: Provide context for what happens in each step
|
|
281
|
+
3. **Logical Progression**: Ensure steps follow a natural sequence
|
|
282
|
+
4. **Status Management**: Keep status updates synchronized with actual progress
|
|
283
|
+
5. **User Guidance**: Show users what's expected in each step
|
|
284
|
+
6. **Error Handling**: Consider how to handle step failures or validation errors
|
|
285
|
+
7. **Responsive Design**: Test both orientations on different screen sizes
|
|
286
|
+
|
|
287
|
+
## Styling Tips
|
|
288
|
+
|
|
289
|
+
- Use consistent spacing and typography across steps
|
|
290
|
+
- Consider using custom CSS variables for theme integration
|
|
291
|
+
- Test visibility and contrast for status indicators
|
|
292
|
+
- Ensure adequate touch targets for mobile interfaces
|
|
293
|
+
|
|
294
|
+
## Accessibility Notes
|
|
295
|
+
|
|
296
|
+
- Step progression provides clear visual feedback
|
|
297
|
+
- Status changes are indicated through styling and positioning
|
|
298
|
+
- Consider adding ARIA labels for screen readers when implementing custom interactions
|
|
299
|
+
- Ensure sufficient color contrast for status indicators
|