You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -52,9 +43,9 @@ for (let i = 0; i < tabs.length; i++) {
52
43
A standard tab navigation control that can be used to navigate between views.
53
44
54
45
### Usage
46
+
You can create a navigation tab by wrapping `ef-tab` with `ef-tab-bar`. Each `ef-tab` should be assigned with unique `value`.
55
47
56
-
You can create a navigation tab by wrapping `ef-tab` with `ef-tab-bar`.
57
-
Tab bar will provide left and right navigation buttons if there is not enough space to display all tabs on the screen.
48
+
By default, the first `ef-tab` will be set to active automatically. You can assign `active` attribute to any other `ef-tab` to set the default active tab.
58
49
59
50
@> For full features of `ef-tab` such as `icon`, please see [Tab](./elements/tab).
60
51
@@ -66,36 +57,42 @@ halo('tab');
66
57
```
67
58
```html
68
59
<ef-tab-bar>
69
-
<ef-tablabel="Tab 1"></ef-tab>
70
-
<ef-tablabel="Tab 2"></ef-tab>
71
-
<ef-tablabel="Tab 3"></ef-tab>
60
+
<ef-tablabel="Tab 1"value="tab1"></ef-tab>
61
+
<ef-tablabel="Tab 2"value="tab2"></ef-tab>
62
+
<ef-tablabel="Tab 3"value="tab3"></ef-tab>
72
63
</ef-tab-bar><br>
73
64
<ef-tab-barstyle="max-width:350px">
74
-
<ef-tablabel="Tab 1"></ef-tab>
75
-
<ef-tablabel="Tab 2"></ef-tab>
76
-
<ef-tablabel="Tab 3"></ef-tab>
77
-
<ef-tablabel="Tab 4"></ef-tab>
78
-
<ef-tablabel="Tab 5"></ef-tab>
79
-
<ef-tablabel="Tab 6"></ef-tab>
80
-
<ef-tablabel="Tab 7"></ef-tab>
81
-
<ef-tablabel="Tab 8"></ef-tab>
82
-
<ef-tablabel="Tab 9"></ef-tab>
83
-
<ef-tablabel="Tab 10"></ef-tab>
65
+
<ef-tablabel="Tab 1"value="tab1"></ef-tab>
66
+
<ef-tablabel="Tab 2"value="tab2"></ef-tab>
67
+
<ef-tablabel="Tab 3"value="tab3"></ef-tab>
68
+
<ef-tablabel="Tab 4"value="tab4"></ef-tab>
69
+
<ef-tablabel="Tab 5"value="tab5"></ef-tab>
70
+
<ef-tablabel="Tab 6"value="tab6"></ef-tab>
71
+
<ef-tablabel="Tab 7"value="tab7"></ef-tab>
72
+
<ef-tablabel="Tab 8"value="tab8"></ef-tab>
73
+
<ef-tablabel="Tab 9"value="tab9"></ef-tab>
74
+
<ef-tablabel="Tab 10"value="tab10"></ef-tab>
84
75
</ef-tab-bar>
85
76
```
86
77
::
87
78
79
+
Tab bar will provide left and right navigation buttons if there is not enough space to display all tabs on the screen.
80
+
88
81
```html
89
82
<ef-tab-bar>
90
-
<ef-tablabel="Tab 1"></ef-tab>
91
-
<ef-tablabel="Tab 2"></ef-tab>
92
-
<ef-tablabel="Tab 3"></ef-tab>
83
+
<ef-tablabel="Tab 1"value="tab1"></ef-tab>
84
+
<ef-tablabel="Tab 2"value="tab2"></ef-tab>
85
+
<ef-tablabel="Tab 3"value="tab3"></ef-tab>
93
86
</ef-tab-bar>
94
-
```
95
87
88
+
<ef-tab-bar>
89
+
<ef-tablabel="Tab 1"value="tab1"></ef-tab>
90
+
<ef-tablabel="Tab 2"value="tab2"active></ef-tab>
91
+
<ef-tablabel="Tab 3"value="tab3"></ef-tab>
92
+
</ef-tab-bar>
93
+
```
96
94
97
95
### Level styles
98
-
99
96
A level can be set to `ef-tab-bar` to change the style of the tab bar. Level styling is managed by the theme.
100
97
101
98
::
@@ -106,65 +103,59 @@ halo('tab');
106
103
```
107
104
```html
108
105
<ef-tab-barlevel="1">
109
-
<ef-tablabel="Tab1"></ef-tab>
110
-
<ef-tablabel="Tab2"active></ef-tab>
111
-
<ef-tablabel="Tab3"></ef-tab>
106
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
107
+
<ef-tablabel="Tab2"activevalue="tab2"></ef-tab>
108
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
112
109
</ef-tab-bar>
113
110
<br>
114
111
<ef-tab-barlevel="2">
115
-
<ef-tablabel="Tab1"></ef-tab>
116
-
<ef-tablabel="Tab2"active></ef-tab>
117
-
<ef-tablabel="Tab3"></ef-tab>
112
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
113
+
<ef-tablabel="Tab2"activevalue="tab2"></ef-tab>
114
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
118
115
</ef-tab-bar>
119
116
<br>
120
117
<ef-tab-barlevel="3">
121
-
<ef-tablabel="Tab1"></ef-tab>
122
-
<ef-tablabel="Tab2"active></ef-tab>
123
-
<ef-tablabel="Tab3"></ef-tab>
118
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
119
+
<ef-tablabel="Tab2"activevalue="tab2"></ef-tab>
120
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
124
121
</ef-tab-bar>
125
122
```
126
123
::
127
124
128
125
```html
129
126
<ef-tab-barlevel="1">
130
-
<ef-tablabel="Tab1"></ef-tab>
131
-
<ef-tablabel="Tab2"active></ef-tab>
132
-
<ef-tablabel="Tab3"></ef-tab>
127
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
128
+
<ef-tablabel="Tab2"activevalue="tab2"></ef-tab>
129
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
133
130
</ef-tab-bar>
131
+
<br>
134
132
<ef-tab-barlevel="2">
135
-
<ef-tablabel="Tab1"></ef-tab>
136
-
<ef-tablabel="Tab2"active></ef-tab>
137
-
<ef-tablabel="Tab3"></ef-tab>
133
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
134
+
<ef-tablabel="Tab2"value="tab2"active></ef-tab>
135
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
138
136
</ef-tab-bar>
137
+
<br>
139
138
<ef-tab-barlevel="3">
140
-
<ef-tablabel="Tab1"></ef-tab>
141
-
<ef-tablabel="Tab2"active></ef-tab>
142
-
<ef-tablabel="Tab3"></ef-tab>
139
+
<ef-tablabel="Tab1"value="tab1"></ef-tab>
140
+
<ef-tablabel="Tab2"value="tab2"active></ef-tab>
141
+
<ef-tablabel="Tab3"value="tab3"></ef-tab>
143
142
</ef-tab-bar>
144
143
```
145
144
146
145
### Vertical tab
147
-
148
146
Setting the `vertical` attribute/property to true will change the layout of the Tab Bar from horizontal to vertical.
<ef-tablabel="Home"sub-label="The family or social unit occupying a home"icon="home"></ef-tab>
183
-
<ef-tablabel="Calendar"sub-label="A chart or series of pages showing the days, weeks, and months of a particular year"icon="calendar"active></ef-tab>
184
-
<ef-tablabel="Setting"sub-label="A factor at which a machine or device can be adjusted to operate."icon="settings"></ef-tab>
172
+
<ef-tab-barid="tabs"vertical>
173
+
<ef-tablabel="Home"value="home"sub-label="The family or social unit occupying a home"icon="home"></ef-tab>
174
+
<ef-tablabel="Calendar"value="calendar"sub-label="A chart or series of pages showing the days, weeks, and months of a particular year"icon="calendar"active></ef-tab>
175
+
<ef-tablabel="Settings"value="settings"sub-label="A factor at which a machine or device can be adjusted to operate."icon="settings"></ef-tab>
185
176
</ef-tab-bar>
186
177
<section>
187
178
<h6id="header">Calendar</h6>
@@ -191,84 +182,5 @@ section {
191
182
```
192
183
::
193
184
194
-
```html
195
-
<divclass="container">
196
-
<ef-tab-barvertical>
197
-
<ef-tablabel="Home"sub-label="The family or social unit occupying a home"icon="home"></ef-tab>
198
-
<ef-tablabel="Calendar"sub-label="A chart or series of pages showing the days, weeks, and months of a particular year"icon="calendar"active></ef-tab>
199
-
<ef-tablabel="Setting"sub-label="A factor at which a machine or device can be adjusted to operate."icon="settings"></ef-tab>
200
-
</ef-tab-bar>
201
-
<section>
202
-
<h6>Calendar</h6>
203
-
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste tempore doloribus error? Veniam reiciendis minus itaque eius temporibus quos totam nihil nisi, praesentium perspiciatis laudantium non quidem esse architecto et eos excepturi doloribus quas nulla impedit amet odio! Laborum fuga exercitationem quae autem provident, sint neque ex iure numquam tenetur.
204
-
</section>
205
-
</div>
206
-
```
207
-
208
-
### Switching tab
209
-
210
-
`ef-tab` provides an `active` attribute/property to set the active tab. You can add a `tap` event listener to each `ef-tab` and then add the actions you need to perform -- the `tap` event is similar to the `click` event, but will work for both desktop and touch devices.
event.textContent=`${e.target.label} + is clicked`;
226
-
}
227
-
else {
228
-
event.textContent="Settings is clicked";
229
-
}
230
-
e.target.active=true;
231
-
})
232
-
}
233
-
```
234
-
```html
235
-
<ef-tab-bar>
236
-
<ef-tablabel="Market"active></ef-tab>
237
-
<ef-tablabel="Company"></ef-tab>
238
-
<ef-tablabel="News"></ef-tab>
239
-
<ef-tablabel="Charting"></ef-tab>
240
-
<ef-tablabel="Monitors"></ef-tab>
241
-
<ef-tabicon="settings"></ef-tab>
242
-
</ef-tab-bar>
243
-
<preid="event"></pre>
244
-
```
245
-
::
246
-
247
-
```html
248
-
<ef-tab-bar>
249
-
<ef-tablabel="Market"active></ef-tab>
250
-
<ef-tablabel="Company"></ef-tab>
251
-
<ef-tablabel="News"></ef-tab>
252
-
<ef-tablabel="Charting"></ef-tab>
253
-
<ef-tablabel="Monitors"></ef-tab>
254
-
<ef-tabicon="settings"></ef-tab>
255
-
</ef-tab-bar>
256
-
<preid="event"></pre>
257
-
```
258
-
259
-
```javascript
260
-
consttabs=document.querySelectorAll('ef-tab');
261
-
262
-
/* reset all tabs to inactive */
263
-
constresetActive= () => {
264
-
tabs.forEach((tab) =>tab.active=false);
265
-
}
266
-
267
-
tabs.forEach((tab) => {
268
-
tab.addEventListener('tap', (e) => {
269
-
resetActive();
270
-
document.getElementById('event').textContent=`${e.target.label} + is clicked`;
271
-
e.target.active=true;
272
-
});
273
-
});
274
-
```
185
+
### Handling active tab changed
186
+
When users changed the active tab, Tab Bar will fire `value-changed` event with value of the new active tab in `detail.value`. If there is no assigned `value` to the tab, it will use `label` as a `value`.
0 commit comments