45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
(function (window) {
|
|
"use strict";
|
|
|
|
window.ls.view.add({
|
|
selector: 'data-general-scroll-direction',
|
|
repeat: false,
|
|
controller: function (element, window) {
|
|
let position = 0;
|
|
|
|
let check = function() {
|
|
let direction = window.document.documentElement.scrollTop;
|
|
|
|
if (direction > position) {
|
|
element.classList.remove('scroll-to-top')
|
|
element.classList.add('scroll-to-bottom')
|
|
}
|
|
else {
|
|
element.classList.remove('scroll-to-bottom')
|
|
element.classList.add('scroll-to-top')
|
|
}
|
|
|
|
position = direction;
|
|
|
|
//let previous = parseInt(element.getAttribute('data-views-current') || 1);
|
|
let current = Math.ceil(direction / window.innerHeight);
|
|
|
|
element.setAttribute('data-views-total', Math.ceil(element.scrollHeight / window.innerHeight));
|
|
element.setAttribute('data-views-current', current);
|
|
|
|
if (element.scrollHeight <= (direction + element.offsetHeight + 300) && direction > 0) {
|
|
element.classList.add('scroll-end')
|
|
}
|
|
else {
|
|
element.classList.remove('scroll-end')
|
|
}
|
|
};
|
|
|
|
window.addEventListener('scroll', check, false);
|
|
window.addEventListener('resize', check, false);
|
|
|
|
check();
|
|
}
|
|
});
|
|
|
|
})(window);
|