From 34facd36cbc48fe0d7c94de0f0841d8e4f28b3d1 Mon Sep 17 00:00:00 2001 From: Kevin Ball Date: Wed, 4 Jan 2017 15:05:12 -0800 Subject: [PATCH] Add resize and scroll events to Triggers object --- js/foundation.util.triggers.js | 58 ++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/js/foundation.util.triggers.js b/js/foundation.util.triggers.js index ed2bc1136..bf6087708 100644 --- a/js/foundation.util.triggers.js +++ b/js/foundation.util.triggers.js @@ -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); } } -- 2.47.3