mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-18 18:20:36 +03:00
improve body init
This commit is contained in:
@@ -85,15 +85,15 @@ export const createScrollbarsSetupElements = (
|
|||||||
structureSetupElements: StructureSetupElementsObj
|
structureSetupElements: StructureSetupElementsObj
|
||||||
): ScrollbarsSetupElements => {
|
): ScrollbarsSetupElements => {
|
||||||
const { _getDefaultInitialization } = getEnvironment();
|
const { _getDefaultInitialization } = getEnvironment();
|
||||||
const { scrollbarsSlot: defaultScrollbarSlot } = _getDefaultInitialization();
|
const { scrollbarsSlot: defaultScrollbarsSlot } = _getDefaultInitialization();
|
||||||
const { _documentElm, _target, _host, _viewport, _targetIsElm } = structureSetupElements;
|
const { _documentElm, _target, _host, _viewport, _targetIsElm } = structureSetupElements;
|
||||||
const scrollbarSlot = _targetIsElm ? null : (target as ScrollbarsInitialization).scrollbarsSlot;
|
const { scrollbarsSlot } = (_targetIsElm ? {} : target) as ScrollbarsInitialization;
|
||||||
const evaluatedScrollbarSlot =
|
const evaluatedScrollbarSlot =
|
||||||
generalDynamicInitializationElement<ScrollbarsDynamicInitializationElement>(
|
generalDynamicInitializationElement<ScrollbarsDynamicInitializationElement>(
|
||||||
[_target, _host, _viewport],
|
[_target, _host, _viewport],
|
||||||
() => _host,
|
() => _host,
|
||||||
defaultScrollbarSlot,
|
defaultScrollbarsSlot,
|
||||||
scrollbarSlot
|
scrollbarsSlot
|
||||||
);
|
);
|
||||||
const scrollbarsAddRemoveClass = (
|
const scrollbarsAddRemoveClass = (
|
||||||
scrollbarStructures: ScrollbarStructure[],
|
scrollbarStructures: ScrollbarStructure[],
|
||||||
|
|||||||
@@ -133,13 +133,15 @@ export const createScrollbarsSetup = (
|
|||||||
target,
|
target,
|
||||||
structureSetupState._elements
|
structureSetupState._elements
|
||||||
);
|
);
|
||||||
const { _host, _viewport, _viewportIsTarget, _isBody } = structureSetupState._elements;
|
const { _host, _viewport, _viewportIsTarget, _isBody, _documentElm } =
|
||||||
|
structureSetupState._elements;
|
||||||
|
const scrollOffsetElement = _isBody ? _documentElm.documentElement : _viewport;
|
||||||
const { _horizontal, _vertical } = elements;
|
const { _horizontal, _vertical } = elements;
|
||||||
const { _addRemoveClass: addRemoveClassHorizontal, _handleStyle: styleHorizontal } = _horizontal;
|
const { _addRemoveClass: addRemoveClassHorizontal, _handleStyle: styleHorizontal } = _horizontal;
|
||||||
const { _addRemoveClass: addRemoveClassVertical, _handleStyle: styleVertical } = _vertical;
|
const { _addRemoveClass: addRemoveClassVertical, _handleStyle: styleVertical } = _vertical;
|
||||||
const styleScrollbarPosition = (structure: ScrollbarStructure) => {
|
const styleScrollbarPosition = (structure: ScrollbarStructure) => {
|
||||||
const { _scrollbar } = structure;
|
const { _scrollbar } = structure;
|
||||||
const elm = _viewportIsTarget && _isBody && parent(_scrollbar) === _viewport && _scrollbar;
|
const elm = _viewportIsTarget && !_isBody && parent(_scrollbar) === _viewport && _scrollbar;
|
||||||
return [
|
return [
|
||||||
elm,
|
elm,
|
||||||
{
|
{
|
||||||
@@ -193,11 +195,11 @@ export const createScrollbarsSetup = (
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
on(_viewport, 'scroll', () => {
|
on(_isBody ? _documentElm : _viewport, 'scroll', () => {
|
||||||
requestScrollAnimationFrame(() => {
|
requestScrollAnimationFrame(() => {
|
||||||
const structureState = structureSetupState();
|
const structureState = structureSetupState();
|
||||||
refreshScrollbarHandleOffset(styleHorizontal, structureState, _viewport, true);
|
refreshScrollbarHandleOffset(styleHorizontal, structureState, scrollOffsetElement, true);
|
||||||
refreshScrollbarHandleOffset(styleVertical, structureState, _viewport);
|
refreshScrollbarHandleOffset(styleVertical, structureState, scrollOffsetElement);
|
||||||
|
|
||||||
autoHideNotNever && manageScrollbarsAutoHide(true);
|
autoHideNotNever && manageScrollbarsAutoHide(true);
|
||||||
scrollTimeout(() => {
|
scrollTimeout(() => {
|
||||||
@@ -275,8 +277,13 @@ export const createScrollbarsSetup = (
|
|||||||
refreshScrollbarHandleLength(styleHorizontal, currStructureSetupState, true);
|
refreshScrollbarHandleLength(styleHorizontal, currStructureSetupState, true);
|
||||||
refreshScrollbarHandleLength(styleVertical, currStructureSetupState);
|
refreshScrollbarHandleLength(styleVertical, currStructureSetupState);
|
||||||
|
|
||||||
refreshScrollbarHandleOffset(styleHorizontal, currStructureSetupState, _viewport, true);
|
refreshScrollbarHandleOffset(
|
||||||
refreshScrollbarHandleOffset(styleVertical, currStructureSetupState, _viewport);
|
styleHorizontal,
|
||||||
|
currStructureSetupState,
|
||||||
|
scrollOffsetElement,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
refreshScrollbarHandleOffset(styleVertical, currStructureSetupState, scrollOffsetElement);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
scrollbarsSetupState,
|
scrollbarsSetupState,
|
||||||
|
|||||||
Reference in New Issue
Block a user