// Copyright (c) MudBlazor 2021 // MudBlazor licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. class MudScrollManager { //scrolls to year in MudDatePicker scrollToYear(elementId, offset) { let element = document.getElementById(elementId); if (element) { element.parentNode.scrollTop = element.offsetTop - element.parentNode.offsetTop - element.scrollHeight * 3; } } // sets the scroll position of the elements container, // to the position of the element with the given element id scrollToListItem(elementId) { let element = document.getElementById(elementId); if (element) { let parent = element.parentElement; if (parent) { parent.scrollTop = element.offsetTop; } } } //scrolls to the selected element. Default is documentElement (i.e., html element) scrollTo(selector, left, top, behavior) { let element = document.querySelector(selector) || document.documentElement; element.scrollTo({ left, top, behavior }); } //scrolls the provided selector into view scrollIntoView(selector, behavior) { let element = document.querySelector(selector) || document.documentElement; if (element) element.scrollIntoView({ behavior, block: 'center', inline: 'start' }); } scrollToBottom(selector, behavior) { let element = document.querySelector(selector); if (element) element.scrollTop = element.scrollHeight; else window.scrollTo(0, document.body.scrollHeight); } //locks the scroll of the selected element. Default is body lockScroll(selector, lockclass) { let element = document.querySelector(selector) || document.body; //if the body doesn't have a scroll bar, don't add the lock class let hasScrollBar = window.innerWidth > document.body.clientWidth; if (hasScrollBar) { element.classList.add(lockclass); } } //unlocks the scroll. Default is body unlockScroll(selector, lockclass) { let element = document.querySelector(selector) || document.body; element.classList.remove(lockclass); } }; window.mudScrollManager = new MudScrollManager();