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