improve body init

This commit is contained in:
Rene Haas
2022-07-24 23:43:10 +02:00
parent 2945f08fa0
commit 78cef932fd
2 changed files with 18 additions and 11 deletions
@@ -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,