From: Arthur Rio Date: Tue, 17 Dec 2013 19:38:26 +0000 (-0800) Subject: update to 5.0.0 and re-apply the patch for dropdown callbacks X-Git-Tag: 5.0.3~52^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F3912%2Fhead;p=thirdparty%2Ffoundation%2Ffoundation-sites.git update to 5.0.0 and re-apply the patch for dropdown callbacks --- fa89000ec2eba15d9da6edeccb3c9db7174d4678 diff --cc js/foundation/foundation.dropdown.js index a0d683ff2,dc4dadc0c..8c46bec10 --- a/js/foundation/foundation.dropdown.js +++ b/js/foundation/foundation.dropdown.js @@@ -23,64 -39,49 +23,68 @@@ var self = this; $(this.scope) + .off('.dropdown') .on('click.fndtn.dropdown', '[data-dropdown]', function (e) { - var settings = $.extend({}, self.settings, self.data_options($(this))); + var settings = $(this).data('dropdown-init') || self.settings; e.preventDefault(); - if (!settings.is_hover) self.toggle($(this)); + if (!settings.is_hover || Modernizr.touch) self.toggle($(this)); + }) + .on('mouseenter.fndtn.dropdown', '[data-dropdown], [data-dropdown-content]', function (e) { + var $this = $(this); + clearTimeout(self.timeout); + + if ($this.data('dropdown')) { + var dropdown = $('#' + $this.data('dropdown')), + target = $this; + } else { + var dropdown = $this; + target = $("[data-dropdown='" + dropdown.attr('id') + "']"); + } + + var settings = target.data('dropdown-init') || self.settings; + if (settings.is_hover) self.open.apply(self, [dropdown, target]); }) - .on('mouseenter', '[data-dropdown]', function (e) { - var settings = $.extend({}, self.settings, self.data_options($(this))); - if (settings.is_hover) self.toggle($(this)); + .on('mouseleave.fndtn.dropdown', '[data-dropdown], [data-dropdown-content]', function (e) { + var $this = $(this); + self.timeout = setTimeout(function () { + if ($this.data('dropdown')) { + var settings = $this.data('dropdown-init') || self.settings; + if (settings.is_hover) self.close.call(self, $('#' + $this.data('dropdown'))); + } else { + var target = $('[data-dropdown="' + $(this).attr('id') + '"]'), + settings = target.data('dropdown-init') || self.settings; + if (settings.is_hover) self.close.call(self, $this); + } + }.bind(this), 150); }) - .on('mouseleave', '[data-dropdown-content]', function (e) { - var target = $('[data-dropdown="' + $(this).attr('id') + '"]'), - settings = $.extend({}, self.settings, self.data_options(target)); - if (settings.is_hover) self.close.call(self, $(this)); + .on('click.fndtn.dropdown', function (e) { + var parent = $(e.target).closest('[data-dropdown-content]'); + + if ($(e.target).data('dropdown') || $(e.target).parent().data('dropdown')) { + return; + } + if (!($(e.target).data('revealId')) && + (parent.length > 0 && ($(e.target).is('[data-dropdown-content]') || + $.contains(parent.first()[0], e.target)))) { + e.stopPropagation(); + return; + } + + self.close.call(self, $('[data-dropdown-content]')); }) - .on('opened.fndtn.dropdown', '[data-dropdown-content]', this.settings.opened) - .on('closed.fndtn.dropdown', '[data-dropdown-content]', this.settings.closed); + .on('opened.fndtn.dropdown', '[data-dropdown-content]', function () { + self.settings.opened.call(this); + }) + .on('closed.fndtn.dropdown', '[data-dropdown-content]', function () { + self.settings.closed.call(this); + }); - $(document).on('click.fndtn.dropdown', function (e) { - var parent = $(e.target).closest('[data-dropdown-content]'); - - if ($(e.target).data('dropdown') || $(e.target).parent().data('dropdown')) { - return; - } - if (!($(e.target).data('revealId')) && - (parent.length > 0 && ($(e.target).is('[data-dropdown-content]') || - $.contains(parent.first()[0], e.target)))) { - e.stopPropagation(); - return; - } - - self.close.call(self, $('[data-dropdown-content]')); - }); - - $(window).on('resize.fndtn.dropdown', self.throttle(function () { - self.resize.call(self); - }, 50)).trigger('resize'); - - this.settings.init = true; + $(window) + .off('.dropdown') + .on('resize.fndtn.dropdown', self.throttle(function () { + self.resize.call(self); + }, 50)).trigger('resize'); }, close: function (dropdown) {