From 7aa203150fc1a2ec79c681c13f0d486d531746eb Mon Sep 17 00:00:00 2001 From: George Halkiadakis Date: Sun, 12 Mar 2023 23:57:48 +0200 Subject: error pages; js system to support back/front-end --- html/assets/js/plugins/scrollShadowVert.js | 57 ++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 html/assets/js/plugins/scrollShadowVert.js (limited to 'html/assets/js/plugins/scrollShadowVert.js') 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'); + // } + //} +}); -- cgit v1.2.3