Skip to content

Commit

Permalink
fix: add roundingAwayFromZero
Browse files Browse the repository at this point in the history
  • Loading branch information
SevereCloud committed Sep 27, 2023
1 parent 2d20d37 commit f8a6f63
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions packages/vkui/src/components/HorizontalScroll/HorizontalScroll.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,27 @@ function now() {
return performance && performance.now ? performance.now() : Date.now();
}

/**
* Округление к большему по модулю
*
* ## Пример
*
* ```ts
* import { strict as assert } from 'node:assert';
*
* assert.equal(roundingAwayFromZero(5.1), 6)
* assert.equal(roundingAwayFromZero(-5.1), -6)
* ```
*/
function roundingAwayFromZero(value: number): number {
return value > 0 ? Math.ceil(value) : Math.floor(value);
}

/**
* Округляем el.scrollLeft
* https://github.com/VKCOM/VKUI/pull/2445
*/
const roundUpElementScrollLeft = (el: HTMLElement) => Math.ceil(el.scrollLeft);
const roundUpElementScrollLeft = (el: HTMLElement) => roundingAwayFromZero(el.scrollLeft);

/**
* Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll
Expand Down Expand Up @@ -118,7 +134,7 @@ function doScroll({
const value = easeInOutSine(elapsed);

const currentScrollLeft = startScrollLeft + (endScrollLeft - startScrollLeft) * value;
scrollElement.scrollLeft = Math.ceil(currentScrollLeft);
scrollElement.scrollLeft = roundingAwayFromZero(currentScrollLeft);

const scrollEnd =
textDirection === 'ltr' ? Math.max(0, endScrollLeft) : Math.min(0, endScrollLeft);
Expand Down Expand Up @@ -205,7 +221,7 @@ export const HorizontalScroll = ({
if (showArrows && hasPointer && scrollerRef.current && !isCustomScrollingRef.current) {
const scrollElement = scrollerRef.current;

setCanScrollStart(Math.abs(scrollElement.scrollLeft) > 0);
setCanScrollStart(scrollElement.scrollLeft !== 0);
setCanScrollEnd(
Math.abs(roundUpElementScrollLeft(scrollElement)) + scrollElement.offsetWidth <
scrollElement.scrollWidth,
Expand Down

0 comments on commit f8a6f63

Please sign in to comment.