mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-20 09:50:36 +03:00
fix timeout raf bug
This commit is contained in:
@@ -30,5 +30,6 @@ export const classNameScrollbarTrack = 'os-scrollbar-track';
|
|||||||
export const classNameScrollbarHandle = 'os-scrollbar-handle';
|
export const classNameScrollbarHandle = 'os-scrollbar-handle';
|
||||||
export const classNamesScrollbarVisible = `${classNameScrollbar}-visible`;
|
export const classNamesScrollbarVisible = `${classNameScrollbar}-visible`;
|
||||||
export const classNamesScrollbarCornerless = `${classNameScrollbar}-cornerless`;
|
export const classNamesScrollbarCornerless = `${classNameScrollbar}-cornerless`;
|
||||||
|
export const classNamesScrollbarTransitionless = `${classNameScrollbar}-transitionless`;
|
||||||
export const classNamesScrollbarInteraction = `${classNameScrollbar}-interaction`;
|
export const classNamesScrollbarInteraction = `${classNameScrollbar}-interaction`;
|
||||||
export const classNamesScrollbarAutoHidden = `${classNameScrollbar}-auto-hidden`;
|
export const classNamesScrollbarAutoHidden = `${classNameScrollbar}-auto-hidden`;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import {
|
|||||||
appendChildren,
|
appendChildren,
|
||||||
createDiv,
|
createDiv,
|
||||||
each,
|
each,
|
||||||
|
isEmptyArray,
|
||||||
on,
|
on,
|
||||||
push,
|
push,
|
||||||
removeClass,
|
removeClass,
|
||||||
@@ -16,6 +17,7 @@ import {
|
|||||||
classNameScrollbarTrack,
|
classNameScrollbarTrack,
|
||||||
classNameScrollbarHandle,
|
classNameScrollbarHandle,
|
||||||
classNamesScrollbarInteraction,
|
classNamesScrollbarInteraction,
|
||||||
|
classNamesScrollbarTransitionless,
|
||||||
} from 'classnames';
|
} from 'classnames';
|
||||||
import { getEnvironment } from 'environment';
|
import { getEnvironment } from 'environment';
|
||||||
import { dynamicInitializationElement as generalDynamicInitializationElement } from 'initialization';
|
import { dynamicInitializationElement as generalDynamicInitializationElement } from 'initialization';
|
||||||
@@ -96,7 +98,10 @@ export const createScrollbarsSetupElements = (
|
|||||||
? classNameScrollbarHorizontal
|
? classNameScrollbarHorizontal
|
||||||
: classNameScrollbarVertical;
|
: classNameScrollbarVertical;
|
||||||
const arrToPush = horizontal ? horizontalScrollbars : verticalScrollbars;
|
const arrToPush = horizontal ? horizontalScrollbars : verticalScrollbars;
|
||||||
const scrollbar = createDiv(`${classNameScrollbar} ${scrollbarClassName} os-theme-dark`);
|
const transitionlessClass = isEmptyArray(arrToPush) ? classNamesScrollbarTransitionless : '';
|
||||||
|
const scrollbar = createDiv(
|
||||||
|
`${classNameScrollbar} ${scrollbarClassName} ${transitionlessClass} os-theme-dark`
|
||||||
|
);
|
||||||
const track = createDiv(classNameScrollbarTrack);
|
const track = createDiv(classNameScrollbarTrack);
|
||||||
const handle = createDiv(classNameScrollbarHandle);
|
const handle = createDiv(classNameScrollbarHandle);
|
||||||
const result = {
|
const result = {
|
||||||
@@ -134,6 +139,11 @@ export const createScrollbarsSetupElements = (
|
|||||||
const appendElements = () => {
|
const appendElements = () => {
|
||||||
appendChildren(evaluatedScrollbarSlot, horizontalScrollbars[0]._scrollbar);
|
appendChildren(evaluatedScrollbarSlot, horizontalScrollbars[0]._scrollbar);
|
||||||
appendChildren(evaluatedScrollbarSlot, verticalScrollbars[0]._scrollbar);
|
appendChildren(evaluatedScrollbarSlot, verticalScrollbars[0]._scrollbar);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
addRemoveClassHorizontal(classNamesScrollbarTransitionless);
|
||||||
|
addRemoveClassVertical(classNamesScrollbarTransitionless);
|
||||||
|
}, 300);
|
||||||
};
|
};
|
||||||
|
|
||||||
generateHorizontalScrollbarStructure();
|
generateHorizontalScrollbarStructure();
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ export interface ScrollbarsSetupStaticState {
|
|||||||
|
|
||||||
const createSelfCancelTimeout = (timeout?: number | (() => number)) => {
|
const createSelfCancelTimeout = (timeout?: number | (() => number)) => {
|
||||||
let id: number;
|
let id: number;
|
||||||
const setT = timeout ? (window.setTimeout as (...args: any[]) => number) : rAF!;
|
const setT = timeout ? (setTimeout as (...args: any[]) => number) : rAF!;
|
||||||
const clearT = timeout ? window.clearTimeout : cAF!;
|
const clearT = timeout ? clearTimeout : cAF!;
|
||||||
return [
|
return [
|
||||||
(callback: () => any) => {
|
(callback: () => any) => {
|
||||||
clearT(id);
|
clearT(id);
|
||||||
|
|||||||
@@ -6,6 +6,9 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
.os-scrollbar-transitionless {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
.os-scrollbar-track {
|
.os-scrollbar-track {
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
Reference in New Issue
Block a user