From 3e8b34be2fdeccf16c8b46f1ee518f970853768d Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Tue, 24 Oct 2017 16:59:48 -0400 Subject: Adding in materialize source and templates --- app/dispatch/static/materialize/js/scrollFire.js | 51 ++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app/dispatch/static/materialize/js/scrollFire.js (limited to 'app/dispatch/static/materialize/js/scrollFire.js') diff --git a/app/dispatch/static/materialize/js/scrollFire.js b/app/dispatch/static/materialize/js/scrollFire.js new file mode 100644 index 0000000..37750cb --- /dev/null +++ b/app/dispatch/static/materialize/js/scrollFire.js @@ -0,0 +1,51 @@ +(function($) { + + var scrollFireEventsHandled = false; + + // Input: Array of JSON objects {selector, offset, callback} + Materialize.scrollFire = function(options) { + var onScroll = function() { + var windowScroll = window.pageYOffset + window.innerHeight; + + for (var i = 0 ; i < options.length; i++) { + // Get options from each line + var value = options[i]; + var selector = value.selector, + offset = value.offset, + callback = value.callback; + + var currentElement = document.querySelector(selector); + if ( currentElement !== null) { + var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; + + if (windowScroll > (elementOffset + offset)) { + if (value.done !== true) { + if (typeof(callback) === 'function') { + callback.call(this, currentElement); + } else if (typeof(callback) === 'string') { + var callbackFunc = new Function(callback); + callbackFunc(currentElement); + } + value.done = true; + } + } + } + } + }; + + + var throttledScroll = Materialize.throttle(function() { + onScroll(); + }, options.throttle || 100); + + if (!scrollFireEventsHandled) { + window.addEventListener("scroll", throttledScroll); + window.addEventListener("resize", throttledScroll); + scrollFireEventsHandled = true; + } + + // perform a scan once, after current execution context, and after dom is ready + setTimeout(throttledScroll, 0); + }; + +})(jQuery); -- cgit v1.2.3