@ticatec/uniface-element 0.2.3 → 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/DialogBoard.svelte +1 -1
- 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/ticatec-uniface-web.css +1 -0
- 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,357 @@
|
|
|
1
|
+
# AppTopBar Component
|
|
2
|
+
|
|
3
|
+
A flexible application top bar component for displaying titles, navigation, and action elements.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Flexible Layout**: Three distinct areas - home/logo, main content, and right actions
|
|
8
|
+
- **Customizable Content**: Support for both props and slot-based content
|
|
9
|
+
- **Responsive Design**: Adapts to different screen sizes
|
|
10
|
+
- **Simple Integration**: Easy to integrate into any application layout
|
|
11
|
+
- **Custom Styling**: Supports custom CSS styles
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```svelte
|
|
16
|
+
<script>
|
|
17
|
+
import AppTopBar from '@ticatec/uniface-element/AppTopBar';
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<AppTopBar title="My Application" />
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
|------|------|---------|-------------|
|
|
27
|
+
| `title` | `string` | - | The title text to display in the main content area |
|
|
28
|
+
| `style` | `string` | `''` | Custom CSS styles for the top bar |
|
|
29
|
+
|
|
30
|
+
## Slots
|
|
31
|
+
|
|
32
|
+
| Slot | Description |
|
|
33
|
+
|------|-------------|
|
|
34
|
+
| `home` | Content for the left side (typically logo or home button) |
|
|
35
|
+
| `default` | Main content area (overrides title prop when used) |
|
|
36
|
+
| `right` | Content for the right side (typically user menu, actions) |
|
|
37
|
+
|
|
38
|
+
## Examples
|
|
39
|
+
|
|
40
|
+
### Basic Title Bar
|
|
41
|
+
|
|
42
|
+
```svelte
|
|
43
|
+
<AppTopBar title="Dashboard" />
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### With Logo and User Menu
|
|
47
|
+
|
|
48
|
+
```svelte
|
|
49
|
+
<AppTopBar title="My App">
|
|
50
|
+
<div slot="home">
|
|
51
|
+
<img src="/logo.png" alt="Logo" class="logo" />
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div slot="right">
|
|
55
|
+
<button class="user-menu">
|
|
56
|
+
<i class="icon_google_account_circle"></i>
|
|
57
|
+
John Doe
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
</AppTopBar>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Custom Main Content
|
|
64
|
+
|
|
65
|
+
```svelte
|
|
66
|
+
<AppTopBar>
|
|
67
|
+
<div slot="home">
|
|
68
|
+
<button class="menu-toggle">
|
|
69
|
+
<i class="icon_google_menu"></i>
|
|
70
|
+
</button>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<!-- Custom main content instead of title -->
|
|
74
|
+
<div class="breadcrumbs">
|
|
75
|
+
<span>Home</span>
|
|
76
|
+
<i class="icon_google_chevron_right"></i>
|
|
77
|
+
<span>Dashboard</span>
|
|
78
|
+
<i class="icon_google_chevron_right"></i>
|
|
79
|
+
<span>Reports</span>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div slot="right">
|
|
83
|
+
<button class="notifications">
|
|
84
|
+
<i class="icon_google_notifications"></i>
|
|
85
|
+
<span class="badge">3</span>
|
|
86
|
+
</button>
|
|
87
|
+
<button class="settings">
|
|
88
|
+
<i class="icon_google_settings"></i>
|
|
89
|
+
</button>
|
|
90
|
+
</div>
|
|
91
|
+
</AppTopBar>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Search Bar Integration
|
|
95
|
+
|
|
96
|
+
```svelte
|
|
97
|
+
<AppTopBar>
|
|
98
|
+
<div slot="home">
|
|
99
|
+
<h1 class="app-title">MyApp</h1>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<div class="search-container">
|
|
103
|
+
<input
|
|
104
|
+
type="search"
|
|
105
|
+
placeholder="Search..."
|
|
106
|
+
class="search-input"
|
|
107
|
+
/>
|
|
108
|
+
<i class="icon_google_search search-icon"></i>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<div slot="right">
|
|
112
|
+
<div class="user-profile">
|
|
113
|
+
<img src="/avatar.jpg" alt="User" class="avatar" />
|
|
114
|
+
<span>Welcome, User</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</AppTopBar>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Navigation Tabs
|
|
121
|
+
|
|
122
|
+
```svelte
|
|
123
|
+
<AppTopBar>
|
|
124
|
+
<div slot="home">
|
|
125
|
+
<img src="/logo.svg" alt="Company" class="company-logo" />
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<nav class="main-navigation">
|
|
129
|
+
<a href="/dashboard" class="nav-link active">Dashboard</a>
|
|
130
|
+
<a href="/projects" class="nav-link">Projects</a>
|
|
131
|
+
<a href="/team" class="nav-link">Team</a>
|
|
132
|
+
<a href="/reports" class="nav-link">Reports</a>
|
|
133
|
+
</nav>
|
|
134
|
+
|
|
135
|
+
<div slot="right">
|
|
136
|
+
<button class="help-button">
|
|
137
|
+
<i class="icon_google_help"></i>
|
|
138
|
+
</button>
|
|
139
|
+
<div class="user-dropdown">
|
|
140
|
+
<button class="dropdown-trigger">
|
|
141
|
+
<i class="icon_google_account_circle"></i>
|
|
142
|
+
<i class="icon_google_arrow_drop_down"></i>
|
|
143
|
+
</button>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</AppTopBar>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### With Custom Styling
|
|
150
|
+
|
|
151
|
+
```svelte
|
|
152
|
+
<AppTopBar
|
|
153
|
+
title="Styled App"
|
|
154
|
+
style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; box-shadow: 0 2px 10px rgba(0,0,0,0.1);"
|
|
155
|
+
>
|
|
156
|
+
<div slot="home">
|
|
157
|
+
<i class="icon_google_apps" style="font-size: 24px;"></i>
|
|
158
|
+
</div>
|
|
159
|
+
|
|
160
|
+
<div slot="right">
|
|
161
|
+
<button style="background: rgba(255,255,255,0.2); border: none; color: white; padding: 8px 16px; border-radius: 4px;">
|
|
162
|
+
Sign Out
|
|
163
|
+
</button>
|
|
164
|
+
</div>
|
|
165
|
+
</AppTopBar>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Layout Structure
|
|
169
|
+
|
|
170
|
+
The AppTopBar uses a three-column layout:
|
|
171
|
+
|
|
172
|
+
1. **Home Section** (left): Optional logo, menu button, or home link
|
|
173
|
+
2. **Main Content** (center): Title or custom content with flex-grow
|
|
174
|
+
3. **Right Section** (right): Actions, user menu, or other controls
|
|
175
|
+
|
|
176
|
+
## Styling
|
|
177
|
+
|
|
178
|
+
The component uses the following CSS classes:
|
|
179
|
+
|
|
180
|
+
- `.uniface-top-bar` - Main container
|
|
181
|
+
- `.bar-home` - Home/logo section container
|
|
182
|
+
- `.main-content` - Main content area
|
|
183
|
+
|
|
184
|
+
### Example CSS
|
|
185
|
+
|
|
186
|
+
```css
|
|
187
|
+
.uniface-top-bar {
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
padding: 0 16px;
|
|
191
|
+
height: 48px;
|
|
192
|
+
background: #ffffff;
|
|
193
|
+
border-bottom: 1px solid #e0e0e0;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.bar-home {
|
|
197
|
+
flex: 0 0 auto;
|
|
198
|
+
margin-right: 16px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.main-content {
|
|
202
|
+
flex: 1 1 auto;
|
|
203
|
+
font-weight: 500;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Custom styles for slots */
|
|
207
|
+
.logo {
|
|
208
|
+
height: 32px;
|
|
209
|
+
width: auto;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.user-menu {
|
|
213
|
+
display: flex;
|
|
214
|
+
align-items: center;
|
|
215
|
+
gap: 8px;
|
|
216
|
+
background: none;
|
|
217
|
+
border: none;
|
|
218
|
+
cursor: pointer;
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Common Patterns
|
|
223
|
+
|
|
224
|
+
### Application Header
|
|
225
|
+
|
|
226
|
+
```svelte
|
|
227
|
+
<AppTopBar title="Project Management">
|
|
228
|
+
<div slot="home">
|
|
229
|
+
<button class="sidebar-toggle" on:click={toggleSidebar}>
|
|
230
|
+
<i class="icon_google_menu"></i>
|
|
231
|
+
</button>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
<div slot="right">
|
|
235
|
+
<button class="new-project">
|
|
236
|
+
<i class="icon_google_add"></i>
|
|
237
|
+
New Project
|
|
238
|
+
</button>
|
|
239
|
+
<div class="user-profile">
|
|
240
|
+
<img src={user.avatar} alt={user.name} />
|
|
241
|
+
{user.name}
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</AppTopBar>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### E-commerce Header
|
|
248
|
+
|
|
249
|
+
```svelte
|
|
250
|
+
<AppTopBar>
|
|
251
|
+
<div slot="home">
|
|
252
|
+
<img src="/store-logo.png" alt="Store" class="store-logo" />
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<div class="search-bar">
|
|
256
|
+
<input type="search" placeholder="Search products..." />
|
|
257
|
+
<button type="submit">
|
|
258
|
+
<i class="icon_google_search"></i>
|
|
259
|
+
</button>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div slot="right">
|
|
263
|
+
<button class="cart">
|
|
264
|
+
<i class="icon_google_shopping_cart"></i>
|
|
265
|
+
<span class="cart-count">{cartItems}</span>
|
|
266
|
+
</button>
|
|
267
|
+
<button class="account">
|
|
268
|
+
<i class="icon_google_person"></i>
|
|
269
|
+
Account
|
|
270
|
+
</button>
|
|
271
|
+
</div>
|
|
272
|
+
</AppTopBar>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Admin Dashboard
|
|
276
|
+
|
|
277
|
+
```svelte
|
|
278
|
+
<AppTopBar>
|
|
279
|
+
<div slot="home">
|
|
280
|
+
<h1>Admin Panel</h1>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<div class="admin-nav">
|
|
284
|
+
<a href="/admin/users">Users</a>
|
|
285
|
+
<a href="/admin/settings">Settings</a>
|
|
286
|
+
<a href="/admin/reports">Reports</a>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<div slot="right">
|
|
290
|
+
<div class="admin-actions">
|
|
291
|
+
<button class="system-status">
|
|
292
|
+
<i class="icon_google_check_circle" style="color: green;"></i>
|
|
293
|
+
System OK
|
|
294
|
+
</button>
|
|
295
|
+
<button class="admin-logout">
|
|
296
|
+
<i class="icon_google_exit_to_app"></i>
|
|
297
|
+
Logout
|
|
298
|
+
</button>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</AppTopBar>
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Responsive Considerations
|
|
305
|
+
|
|
306
|
+
For mobile responsiveness, consider:
|
|
307
|
+
|
|
308
|
+
```css
|
|
309
|
+
@media (max-width: 768px) {
|
|
310
|
+
.uniface-top-bar {
|
|
311
|
+
padding: 0 8px;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.main-content {
|
|
315
|
+
font-size: 14px;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* Hide less important items on mobile */
|
|
319
|
+
.hide-mobile {
|
|
320
|
+
display: none;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Accessibility
|
|
326
|
+
|
|
327
|
+
- Use semantic HTML elements within slots
|
|
328
|
+
- Ensure buttons have proper labels or aria-labels
|
|
329
|
+
- Maintain adequate color contrast
|
|
330
|
+
- Support keyboard navigation for interactive elements
|
|
331
|
+
|
|
332
|
+
## Best Practices
|
|
333
|
+
|
|
334
|
+
1. **Keep It Simple**: Don't overcrowd the top bar with too many elements
|
|
335
|
+
2. **Consistent Branding**: Use consistent logo placement and styling
|
|
336
|
+
3. **User Actions**: Place the most important user actions on the right side
|
|
337
|
+
4. **Mobile First**: Design with mobile devices in mind
|
|
338
|
+
5. **Visual Hierarchy**: Use appropriate font weights and sizes to establish hierarchy
|
|
339
|
+
6. **Icon Usage**: Use consistent icon styles and sizes throughout
|
|
340
|
+
|
|
341
|
+
## Integration with Layouts
|
|
342
|
+
|
|
343
|
+
The AppTopBar works well with layout components:
|
|
344
|
+
|
|
345
|
+
```svelte
|
|
346
|
+
<SidebarLayout headerHeight="56px">
|
|
347
|
+
<AppTopBar slot="header" title="My Application">
|
|
348
|
+
<!-- topbar content -->
|
|
349
|
+
</AppTopBar>
|
|
350
|
+
|
|
351
|
+
<div slot="sidebar">
|
|
352
|
+
<!-- sidebar content -->
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<!-- main content -->
|
|
356
|
+
</SidebarLayout>
|
|
357
|
+
```
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
# AppTopBar 组件
|
|
2
|
+
|
|
3
|
+
一个灵活的应用程序顶部栏组件,用于显示标题、导航和操作元素。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- **灵活布局**: 三个不同区域 - 主页/标志、主内容和右侧操作
|
|
8
|
+
- **可定制内容**: 支持属性和基于插槽的内容
|
|
9
|
+
- **响应式设计**: 适应不同屏幕尺寸
|
|
10
|
+
- **简单集成**: 易于集成到任何应用程序布局中
|
|
11
|
+
- **自定义样式**: 支持自定义CSS样式
|
|
12
|
+
|
|
13
|
+
## 基本用法
|
|
14
|
+
|
|
15
|
+
```svelte
|
|
16
|
+
<script>
|
|
17
|
+
import AppTopBar from '@ticatec/uniface-element/AppTopBar';
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<AppTopBar title="我的应用程序" />
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 属性参数
|
|
24
|
+
|
|
25
|
+
| 属性 | 类型 | 默认值 | 描述 |
|
|
26
|
+
|------|------|---------|-------------|
|
|
27
|
+
| `title` | `string` | - | 在主内容区域显示的标题文本 |
|
|
28
|
+
| `style` | `string` | `''` | 顶部栏的自定义CSS样式 |
|
|
29
|
+
|
|
30
|
+
## 插槽
|
|
31
|
+
|
|
32
|
+
| 插槽 | 描述 |
|
|
33
|
+
|------|-------------|
|
|
34
|
+
| `home` | 左侧内容(通常是标志或主页按钮) |
|
|
35
|
+
| `default` | 主内容区域(使用时覆盖title属性) |
|
|
36
|
+
| `right` | 右侧内容(通常是用户菜单、操作) |
|
|
37
|
+
|
|
38
|
+
## 使用示例
|
|
39
|
+
|
|
40
|
+
### 基础标题栏
|
|
41
|
+
|
|
42
|
+
```svelte
|
|
43
|
+
<AppTopBar title="仪表板" />
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 带标志和用户菜单
|
|
47
|
+
|
|
48
|
+
```svelte
|
|
49
|
+
<AppTopBar title="我的应用">
|
|
50
|
+
<div slot="home">
|
|
51
|
+
<img src="/logo.png" alt="标志" class="logo" />
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div slot="right">
|
|
55
|
+
<button class="user-menu">
|
|
56
|
+
<i class="icon_google_account_circle"></i>
|
|
57
|
+
张三
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
</AppTopBar>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 自定义主内容
|
|
64
|
+
|
|
65
|
+
```svelte
|
|
66
|
+
<AppTopBar>
|
|
67
|
+
<div slot="home">
|
|
68
|
+
<button class="menu-toggle">
|
|
69
|
+
<i class="icon_google_menu"></i>
|
|
70
|
+
</button>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<!-- 自定义主内容而不是标题 -->
|
|
74
|
+
<div class="breadcrumbs">
|
|
75
|
+
<span>首页</span>
|
|
76
|
+
<i class="icon_google_chevron_right"></i>
|
|
77
|
+
<span>仪表板</span>
|
|
78
|
+
<i class="icon_google_chevron_right"></i>
|
|
79
|
+
<span>报告</span>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div slot="right">
|
|
83
|
+
<button class="notifications">
|
|
84
|
+
<i class="icon_google_notifications"></i>
|
|
85
|
+
<span class="badge">3</span>
|
|
86
|
+
</button>
|
|
87
|
+
<button class="settings">
|
|
88
|
+
<i class="icon_google_settings"></i>
|
|
89
|
+
</button>
|
|
90
|
+
</div>
|
|
91
|
+
</AppTopBar>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 搜索栏集成
|
|
95
|
+
|
|
96
|
+
```svelte
|
|
97
|
+
<AppTopBar>
|
|
98
|
+
<div slot="home">
|
|
99
|
+
<h1 class="app-title">我的应用</h1>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<div class="search-container">
|
|
103
|
+
<input
|
|
104
|
+
type="search"
|
|
105
|
+
placeholder="搜索..."
|
|
106
|
+
class="search-input"
|
|
107
|
+
/>
|
|
108
|
+
<i class="icon_google_search search-icon"></i>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<div slot="right">
|
|
112
|
+
<div class="user-profile">
|
|
113
|
+
<img src="/avatar.jpg" alt="用户" class="avatar" />
|
|
114
|
+
<span>欢迎,用户</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</AppTopBar>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 导航标签
|
|
121
|
+
|
|
122
|
+
```svelte
|
|
123
|
+
<AppTopBar>
|
|
124
|
+
<div slot="home">
|
|
125
|
+
<img src="/logo.svg" alt="公司" class="company-logo" />
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<nav class="main-navigation">
|
|
129
|
+
<a href="/dashboard" class="nav-link active">仪表板</a>
|
|
130
|
+
<a href="/projects" class="nav-link">项目</a>
|
|
131
|
+
<a href="/team" class="nav-link">团队</a>
|
|
132
|
+
<a href="/reports" class="nav-link">报告</a>
|
|
133
|
+
</nav>
|
|
134
|
+
|
|
135
|
+
<div slot="right">
|
|
136
|
+
<button class="help-button">
|
|
137
|
+
<i class="icon_google_help"></i>
|
|
138
|
+
</button>
|
|
139
|
+
<div class="user-dropdown">
|
|
140
|
+
<button class="dropdown-trigger">
|
|
141
|
+
<i class="icon_google_account_circle"></i>
|
|
142
|
+
<i class="icon_google_arrow_drop_down"></i>
|
|
143
|
+
</button>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</AppTopBar>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 自定义样式
|
|
150
|
+
|
|
151
|
+
```svelte
|
|
152
|
+
<AppTopBar
|
|
153
|
+
title="样式化应用"
|
|
154
|
+
style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; box-shadow: 0 2px 10px rgba(0,0,0,0.1);"
|
|
155
|
+
>
|
|
156
|
+
<div slot="home">
|
|
157
|
+
<i class="icon_google_apps" style="font-size: 24px;"></i>
|
|
158
|
+
</div>
|
|
159
|
+
|
|
160
|
+
<div slot="right">
|
|
161
|
+
<button style="background: rgba(255,255,255,0.2); border: none; color: white; padding: 8px 16px; border-radius: 4px;">
|
|
162
|
+
退出登录
|
|
163
|
+
</button>
|
|
164
|
+
</div>
|
|
165
|
+
</AppTopBar>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 布局结构
|
|
169
|
+
|
|
170
|
+
AppTopBar使用三列布局:
|
|
171
|
+
|
|
172
|
+
1. **主页区域**(左): 可选的标志、菜单按钮或主页链接
|
|
173
|
+
2. **主内容**(中): 标题或自定义内容,具有flex-grow
|
|
174
|
+
3. **右侧区域**(右): 操作、用户菜单或其他控件
|
|
175
|
+
|
|
176
|
+
## 样式定制
|
|
177
|
+
|
|
178
|
+
组件使用以下CSS类:
|
|
179
|
+
|
|
180
|
+
- `.uniface-top-bar` - 主容器
|
|
181
|
+
- `.bar-home` - 主页/标志区域容器
|
|
182
|
+
- `.main-content` - 主内容区域
|
|
183
|
+
|
|
184
|
+
### CSS示例
|
|
185
|
+
|
|
186
|
+
```css
|
|
187
|
+
.uniface-top-bar {
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: center;
|
|
190
|
+
padding: 0 16px;
|
|
191
|
+
height: 48px;
|
|
192
|
+
background: #ffffff;
|
|
193
|
+
border-bottom: 1px solid #e0e0e0;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.bar-home {
|
|
197
|
+
flex: 0 0 auto;
|
|
198
|
+
margin-right: 16px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.main-content {
|
|
202
|
+
flex: 1 1 auto;
|
|
203
|
+
font-weight: 500;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* 插槽的自定义样式 */
|
|
207
|
+
.logo {
|
|
208
|
+
height: 32px;
|
|
209
|
+
width: auto;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.user-menu {
|
|
213
|
+
display: flex;
|
|
214
|
+
align-items: center;
|
|
215
|
+
gap: 8px;
|
|
216
|
+
background: none;
|
|
217
|
+
border: none;
|
|
218
|
+
cursor: pointer;
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## 常见模式
|
|
223
|
+
|
|
224
|
+
### 应用程序标题栏
|
|
225
|
+
|
|
226
|
+
```svelte
|
|
227
|
+
<AppTopBar title="项目管理">
|
|
228
|
+
<div slot="home">
|
|
229
|
+
<button class="sidebar-toggle" on:click={toggleSidebar}>
|
|
230
|
+
<i class="icon_google_menu"></i>
|
|
231
|
+
</button>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
<div slot="right">
|
|
235
|
+
<button class="new-project">
|
|
236
|
+
<i class="icon_google_add"></i>
|
|
237
|
+
新建项目
|
|
238
|
+
</button>
|
|
239
|
+
<div class="user-profile">
|
|
240
|
+
<img src={user.avatar} alt={user.name} />
|
|
241
|
+
{user.name}
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</AppTopBar>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### 电商标题栏
|
|
248
|
+
|
|
249
|
+
```svelte
|
|
250
|
+
<AppTopBar>
|
|
251
|
+
<div slot="home">
|
|
252
|
+
<img src="/store-logo.png" alt="商店" class="store-logo" />
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<div class="search-bar">
|
|
256
|
+
<input type="search" placeholder="搜索商品..." />
|
|
257
|
+
<button type="submit">
|
|
258
|
+
<i class="icon_google_search"></i>
|
|
259
|
+
</button>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div slot="right">
|
|
263
|
+
<button class="cart">
|
|
264
|
+
<i class="icon_google_shopping_cart"></i>
|
|
265
|
+
<span class="cart-count">{cartItems}</span>
|
|
266
|
+
</button>
|
|
267
|
+
<button class="account">
|
|
268
|
+
<i class="icon_google_person"></i>
|
|
269
|
+
账户
|
|
270
|
+
</button>
|
|
271
|
+
</div>
|
|
272
|
+
</AppTopBar>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 管理后台
|
|
276
|
+
|
|
277
|
+
```svelte
|
|
278
|
+
<AppTopBar>
|
|
279
|
+
<div slot="home">
|
|
280
|
+
<h1>管理面板</h1>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<div class="admin-nav">
|
|
284
|
+
<a href="/admin/users">用户</a>
|
|
285
|
+
<a href="/admin/settings">设置</a>
|
|
286
|
+
<a href="/admin/reports">报告</a>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<div slot="right">
|
|
290
|
+
<div class="admin-actions">
|
|
291
|
+
<button class="system-status">
|
|
292
|
+
<i class="icon_google_check_circle" style="color: green;"></i>
|
|
293
|
+
系统正常
|
|
294
|
+
</button>
|
|
295
|
+
<button class="admin-logout">
|
|
296
|
+
<i class="icon_google_exit_to_app"></i>
|
|
297
|
+
退出登录
|
|
298
|
+
</button>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</AppTopBar>
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## 响应式考虑
|
|
305
|
+
|
|
306
|
+
对于移动端响应式,考虑:
|
|
307
|
+
|
|
308
|
+
```css
|
|
309
|
+
@media (max-width: 768px) {
|
|
310
|
+
.uniface-top-bar {
|
|
311
|
+
padding: 0 8px;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.main-content {
|
|
315
|
+
font-size: 14px;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* 在移动设备上隐藏不重要的项目 */
|
|
319
|
+
.hide-mobile {
|
|
320
|
+
display: none;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## 无障碍访问
|
|
326
|
+
|
|
327
|
+
- 在插槽中使用语义化HTML元素
|
|
328
|
+
- 确保按钮有适当的标签或aria-labels
|
|
329
|
+
- 保持足够的颜色对比度
|
|
330
|
+
- 支持交互元素的键盘导航
|
|
331
|
+
|
|
332
|
+
## 最佳实践
|
|
333
|
+
|
|
334
|
+
1. **保持简洁**: 不要在顶部栏中放置过多元素
|
|
335
|
+
2. **一致的品牌**: 使用一致的标志放置和样式
|
|
336
|
+
3. **用户操作**: 将最重要的用户操作放在右侧
|
|
337
|
+
4. **移动优先**: 以移动设备为设计出发点
|
|
338
|
+
5. **视觉层次**: 使用适当的字体粗细和大小建立层次
|
|
339
|
+
6. **图标使用**: 在整个界面中使用一致的图标样式和大小
|
|
340
|
+
|
|
341
|
+
## 与布局组件集成
|
|
342
|
+
|
|
343
|
+
AppTopBar与布局组件配合良好:
|
|
344
|
+
|
|
345
|
+
```svelte
|
|
346
|
+
<SidebarLayout headerHeight="56px">
|
|
347
|
+
<AppTopBar slot="header" title="我的应用程序">
|
|
348
|
+
<!-- 顶部栏内容 -->
|
|
349
|
+
</AppTopBar>
|
|
350
|
+
|
|
351
|
+
<div slot="sidebar">
|
|
352
|
+
<!-- 侧边栏内容 -->
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<!-- 主内容 -->
|
|
356
|
+
</SidebarLayout>
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## 注意事项
|
|
360
|
+
|
|
361
|
+
- 确保在不同屏幕尺寸下测试布局
|
|
362
|
+
- 考虑长标题的文本截断处理
|
|
363
|
+
- 在设计时考虑不同语言的文本长度变化
|
|
364
|
+
- 为移动设备优化触摸交互区域
|
|
365
|
+
- 保持与整体应用程序设计风格的一致性
|