]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Add resize and scroll events to Triggers object
authorKevin Ball <kmball11@gmail.com>
Wed, 4 Jan 2017 23:05:12 +0000 (15:05 -0800)
committerKevin Ball <kmball11@gmail.com>
Tue, 18 Apr 2017 16:42:10 +0000 (09:42 -0700)
js/foundation.util.triggers.js

index ed2bc11367875de99e82228fcf999cfeca940cb5..bf6087708ba5d3a6f3a47fb031680a13bb015f36 100644 (file)
@@ -99,6 +99,32 @@ Triggers.Initializers.addToggleFocusListener = ($elem) => {
   $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
 }
 
+
+
+// More Global/complex listeners and triggers
+Triggers.Listeners.Global  = {
+  resizeListener: function($nodes) {
+    if(!MutationObserver){//fallback for IE 9
+      $nodes.each(function(){
+        $(this).triggerHandler('resizeme.zf.trigger');
+      });
+    }
+    //trigger all listening elements and signal a resize event
+    $nodes.attr('data-events', "resize");
+  },
+  scrollListener: function($nodes) {
+    if(!MutationObserver){//fallback for IE 9
+      $nodes.each(function(){
+        $(this).triggerHandler('scrollme.zf.trigger');
+      });
+    }
+    //trigger all listening elements and signal a scroll event
+    $nodes.attr('data-events', "scroll");
+  }
+}
+
+
+
 /**
 * Fires once after all other scripts have loaded
 * @function
@@ -110,8 +136,8 @@ $(window).on('load', () => {
 
 function checkListeners() {
   eventsListener();
-  resizeListener();
-  scrollListener();
+  Triggers.Initializers.addResizeListener();
+  Triggers.Initializers.addScrollListener();
   closemeListener();
 }
 
@@ -148,42 +174,26 @@ function closemeListener(pluginName) {
 }
 
 function debounceGlobalListener(debounce, trigger, listener) {
-  let timer;
+  let timer, args = Array.prototype.slice.call(arguments, 3);
   $(window).off(trigger).on(trigger, function(e) {
     if (timer) { clearTimeout(timer); }
     timer = setTimeout(function(){
-      listener.apply(null, Array.prototype.slice.call(arguments, 2));
+      listener.apply(null, args);
     }, debounce || 10);//default time to emit scroll event
   });
 }
 
-function resizeListener(debounce){
+Triggers.Initializers.addResizeListener = function(debounce){
   let $nodes = $('[data-resize]');
   if($nodes.length){
-    debounceGlobalListener(debounce, 'resize.zf.trigger', function() {
-      if(!MutationObserver){//fallback for IE 9
-        $nodes.each(function(){
-          $(this).triggerHandler('resizeme.zf.trigger');
-        });
-      }
-      //trigger all listening elements and signal a resize event
-      $nodes.attr('data-events', "resize");
-    });
+    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
   }
 }
 
-function scrollListener(debounce){
+Triggers.Initializers.addScrollListener = function(debounce){
   let $nodes = $('[data-scroll]');
   if($nodes.length){
-    debounceGlobalListener(debounce, 'scroll.zf.trigger', function() {
-      if(!MutationObserver){//fallback for IE 9
-        $nodes.each(function(){
-          $(this).triggerHandler('scrollme.zf.trigger');
-        });
-      }
-      //trigger all listening elements and signal a scroll event
-      $nodes.attr('data-events', "scroll");
-    });
+    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
   }
 }