You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Connected.Components/TScripts/mudScrollManager.js

65 lines
2.3 KiB

2 years ago
// 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();