From f2e6f9ff71356b973f0e4271e0a2b7b09ad81ef9 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Fri, 8 Jul 2022 12:21:35 -0400 Subject: [PATCH] Fixed scroller tv --- src/libraries/scroller.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/libraries/scroller.js b/src/libraries/scroller.js index 433652a4d..4fa5e6de7 100644 --- a/src/libraries/scroller.js +++ b/src/libraries/scroller.js @@ -54,7 +54,9 @@ function disableOneEvent(event) { * @return {Number} */ function within(number, num1, num2) { - if (num2 === undefined) { + if (num2 === undefined && globalize.getIsRTL()) { + return number > num1 ? num1 : number; + } else if (num2 === undefined) { return number < num1 ? num1 : number; } const min = Math.min(num1, num2); @@ -268,12 +270,11 @@ const scrollerFactory = function (frame, options) { * @return {Void} */ self.slideTo = function (newPos, immediate, fullItemPos) { - console.trace(); ensureSizeInfo(); const pos = self._pos; if (layoutManager.tv) { - newPos = within(newPos, pos.start); + newPos = within(-newPos, pos.start); } else { newPos = within(newPos, pos.start, pos.end); } @@ -368,7 +369,7 @@ const scrollerFactory = function (frame, options) { let horizontalOffset = itemOffset.left - slideeOffset.left; if (globalize.getIsRTL()) { - horizontalOffset = itemOffset.right - slideeOffset.right; + horizontalOffset = slideeOffset.right - itemOffset.right; } let offset = o.horizontal ? horizontalOffset : itemOffset.top - slideeOffset.top; @@ -392,22 +393,21 @@ const scrollerFactory = function (frame, options) { ensureSizeInfo(); const currentStart = self._pos.cur; - const currentEnd = currentStart + frameSize; + let currentEnd = currentStart + frameSize; + if (globalize.getIsRTL()) { + currentEnd = currentStart - frameSize; + } console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); const isVisible = offset >= Math.min(currentStart, currentEnd) - && (offset + size) <= Math.max(currentStart, currentEnd); - - let end = offset - frameSize + size; - if (globalize.getIsRTL()) - end *= -1; + && (globalize.getIsRTL() ? (offset - size) : (offset + size)) <= Math.max(currentStart, currentEnd); return { start: offset, center: offset + centerOffset - (frameSize / 2) + (size / 2), - end, - size: size, - isVisible: isVisible + end: offset - frameSize + size, + size, + isVisible }; }; @@ -869,7 +869,6 @@ scrollerFactory.prototype.to = function (location, item, immediate) { this.slideTo(this._pos[location], immediate); } else { const itemPos = this.getPos(item); - console.log(itemPos); if (itemPos) { this.slideTo(itemPos[location], immediate, itemPos);