Skip to content

Commit

Permalink
Fixed #6915 - Tabs: Scrollable tabs being skipped
Browse files Browse the repository at this point in the history
  • Loading branch information
tugcekucukoglu committed Dec 11, 2024
1 parent b1ece79 commit ca7ccce
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions packages/primevue/src/tablist/TabList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -89,18 +89,24 @@ export default {
},
onPrevButtonClick() {
const content = this.$refs.content;
const width = getWidth(content);
const pos = Math.abs(content.scrollLeft) - width;
const scrollLeft = pos <= 0 ? 0 : pos;
const buttonWidths = this.getVisibleButtonWidths();
const width = getWidth(content) - buttonWidths;
const currentScrollLeft = Math.abs(content.scrollLeft);
const scrollStep = width * 0.8;
const targetScrollLeft = currentScrollLeft - scrollStep;
const scrollLeft = Math.max(targetScrollLeft, 0);
content.scrollLeft = isRTL(content) ? -1 * scrollLeft : scrollLeft;
},
onNextButtonClick() {
const content = this.$refs.content;
const width = getWidth(content) - this.getVisibleButtonWidths();
const pos = width + Math.abs(content.scrollLeft);
const lastPos = content.scrollWidth - width;
const scrollLeft = pos >= lastPos ? lastPos : pos;
const buttonWidths = this.getVisibleButtonWidths();
const width = getWidth(content) - buttonWidths;
const currentScrollLeft = Math.abs(content.scrollLeft);
const scrollStep = width * 0.8;
const targetScrollLeft = currentScrollLeft + scrollStep;
const maxScrollLeft = content.scrollWidth - width;
const scrollLeft = Math.min(targetScrollLeft, maxScrollLeft);
content.scrollLeft = isRTL(content) ? -1 * scrollLeft : scrollLeft;
},
Expand Down Expand Up @@ -139,9 +145,14 @@ export default {
}
},
getVisibleButtonWidths() {
const { prevBtn, nextBtn } = this.$refs;
const { prevButton, nextButton } = this.$refs;
let width = 0;
return [prevBtn, nextBtn].reduce((acc, el) => (el ? acc + getWidth(el) : acc), 0);
if (this.showNavigators) {
width = (prevButton?.offsetWidth || 0) + (nextButton?.offsetWidth || 0);
}
return width;
}
},
computed: {
Expand Down

0 comments on commit ca7ccce

Please sign in to comment.