mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update library menu
This commit is contained in:
parent
d512595066
commit
727a2e09f2
4 changed files with 78 additions and 4 deletions
72
dashboard-ui/components/scrollthreshold.js
Normal file
72
dashboard-ui/components/scrollthreshold.js
Normal file
|
@ -0,0 +1,72 @@
|
|||
define(['events'], function (events) {
|
||||
|
||||
function thresholdMonitor(elem, horizontal, lowerTolerance, upperTolerance) {
|
||||
|
||||
var defaultTolerance = horizontal ? (screen.availWidth / 2) : (screen.availHeight / 2);
|
||||
lowerTolerance = lowerTolerance || defaultTolerance;
|
||||
upperTolerance = upperTolerance || defaultTolerance;
|
||||
|
||||
var self = this;
|
||||
var upperTriggered = false;
|
||||
var lowerTriggered = false;
|
||||
|
||||
var scrollSize;
|
||||
|
||||
function getScrollSize() {
|
||||
|
||||
if (!scrollSize) {
|
||||
scrollSize = horizontal ? (elem.scrollWidth - elem.clientWidth) : (elem.scrollHeight - elem.clientHeight);
|
||||
}
|
||||
return scrollSize;
|
||||
}
|
||||
|
||||
function onScroll(e) {
|
||||
|
||||
if (lowerTriggered && upperTriggered) {
|
||||
return;
|
||||
}
|
||||
|
||||
var position = horizontal ? elem.scrollLeft : elem.scrollTop;
|
||||
|
||||
// Detect upper threshold
|
||||
if (!upperTriggered && position < upperTolerance) {
|
||||
upperTriggered = true;
|
||||
events.trigger(self, 'upper-threshold');
|
||||
}
|
||||
// Detect lower threshold
|
||||
if (!lowerTriggered && position >= (getScrollSize() - lowerTolerance)) {
|
||||
lowerTriggered = false;
|
||||
events.trigger(self, 'lower-threshold');
|
||||
}
|
||||
}
|
||||
|
||||
self.reset = function () {
|
||||
self.resetSize();
|
||||
upperTriggered = false;
|
||||
lowerTriggered = false;
|
||||
};
|
||||
|
||||
self.resetSize = function () {
|
||||
scrollSize = null;
|
||||
};
|
||||
|
||||
self.enabled = function (enabled) {
|
||||
|
||||
self.reset();
|
||||
|
||||
if (enabled) {
|
||||
elem.addEventListener('scroll', onScroll, true);
|
||||
} else {
|
||||
elem.removeEventListener('scroll', onScroll, true);
|
||||
}
|
||||
};
|
||||
|
||||
self.enabled(true);
|
||||
|
||||
self.destroy = function () {
|
||||
self.enabled(false);
|
||||
};
|
||||
}
|
||||
|
||||
return thresholdMonitor;
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue