summaryrefslogtreecommitdiff
path: root/html/assets/js/plugins/scrollShadowVert.js
diff options
context:
space:
mode:
Diffstat (limited to 'html/assets/js/plugins/scrollShadowVert.js')
-rw-r--r--html/assets/js/plugins/scrollShadowVert.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/html/assets/js/plugins/scrollShadowVert.js b/html/assets/js/plugins/scrollShadowVert.js
new file mode 100644
index 0000000..2824c22
--- /dev/null
+++ b/html/assets/js/plugins/scrollShadowVert.js
@@ -0,0 +1,57 @@
+$$plugins.define('scrollShadowVert', function (element, options) {
+ var scrollElm = element.querySelector('.scrollbar'),
+ listInner = element.querySelector('.scrollbar__inner');
+
+ //observer for adding/removing children elements
+ const observer = new MutationObserver(function (mutations) {
+ var childrenMutations = mutations.filter((x) => x.type === "childList");
+ if (childrenMutations.length > 0) {
+ checkScrollPos(scrollElm);
+ }
+ });
+
+ observer.observe(listInner, { subtree: true, childList: true });
+
+ //observer for initialized class
+ if (options.initialize == true) {
+ const targetNode = element;
+
+ const observer2 = new MutationObserver(function (mutations) {
+ var classMutations = mutations.filter((x) => x.type === "attributes");
+ if (classMutations.length > 0 && targetNode.classList.contains('initialized')) {
+ checkScrollPos(scrollElm);
+ observer2.disconnect();
+ }
+ });
+ observer2.observe(targetNode, { attributes: true, attributeFilter: ['class'] });
+ }
+
+ checkScrollPos(scrollElm);
+
+ scrollElm.addEventListener("scroll", function () {
+ checkScrollPos(this);
+ });
+
+ function checkScrollPos(scrollContainer) {
+ if (scrollContainer.scrollTop + element.offsetHeight > listInner.offsetHeight - 8) {
+ element.classList.add('scrollbarShadow--bottom');
+ } else {
+ element.classList.remove('scrollbarShadow--bottom');
+ }
+ if (scrollContainer.scrollTop < 8) {
+ element.classList.add('scrollbarShadow--top');
+ } else {
+ element.classList.remove('scrollbarShadow--top');
+ }
+ }
+
+ //checkScrollInit();
+
+ //function checkScrollInit() {
+ // if (element.offsetHeight >= listInner.offsetHeight) {
+ // element.classList.add('scrollbarShadow--noScroll');
+ // } else {
+ // element.classList.remove('scrollbarShadow--noScroll');
+ // }
+ //}
+});