Commit 45dbc6fdea70835d638921e7583c8fcb7829c33e

Authored by Sergio Crisostomo
1 parent 7fa3f9ef

Correct disabled forward navigation

Showing 2 changed files with 11 additions and 3 deletions   Show diff stats
examples/routers/tabs.vue
... ... @@ -171,6 +171,11 @@
171 171 </div>
172 172 </TabPane>
173 173 </Tabs>
  174 + <Tabs type="card">
  175 + <TabPane label="标签一">标签一的内容</TabPane>
  176 + <TabPane label="标签二" disabled>标签二的内容</TabPane>
  177 + <TabPane label="标签三">标签三的内容</TabPane>
  178 + </Tabs>
174 179 </div>
175 180 </template>
176 181 <script>
... ...
src/components/tabs/tabs.vue
... ... @@ -43,7 +43,7 @@
43 43 const currentIndex = list.findIndex(tab => tab.name === activeKey);
44 44 const nextIndex = (currentIndex + direction + list.length) % list.length;
45 45 const nextTab = list[nextIndex];
46   - if (nextTab.disabled) return getNextTab(list, nextTab, direction, countDisabledAlso);
  46 + if (nextTab.disabled) return getNextTab(list, nextTab.name, direction, countDisabledAlso);
47 47 else return nextTab;
48 48 };
49 49  
... ... @@ -237,8 +237,9 @@
237 237 this.focusedKey = nextTab.name;
238 238 },
239 239 handleTabKeyboardSelect(){
240   - this.activeKey = this.focusedKey;
241   - const nextIndex = this.navList.findIndex(tab => tab.name === this.focusedKey);
  240 + this.activeKey = this.focusedKey || 0;
  241 + const nextIndex = Math.max(this.navList.findIndex(tab => tab.name === this.focusedKey), 0);
  242 +
242 243 [...this.$refs.panes.children].forEach((el, i) => {
243 244 if (nextIndex === i) {
244 245 [...el.children].forEach(child => child.style.display = 'block');
... ... @@ -411,6 +412,8 @@
411 412  
412 413 this.mutationObserver.observe(hiddenParentNode, { attributes: true, childList: true, characterData: true, attributeFilter: ['style'] });
413 414 }
  415 +
  416 + this.handleTabKeyboardSelect();
414 417 },
415 418 beforeDestroy() {
416 419 this.observer.removeListener(this.$refs.navWrap, this.handleResize);
... ...