]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
update to 5.0.0 and re-apply the patch for dropdown callbacks 3912/head
authorArthur Rio <arthur@punchtab.com>
Tue, 17 Dec 2013 19:38:26 +0000 (11:38 -0800)
committerArthur Rio <arthur@punchtab.com>
Tue, 17 Dec 2013 19:38:26 +0000 (11:38 -0800)
1  2 
js/foundation/foundation.dropdown.js

index a0d683ff22a1fcb09fa09b1b3ffee804de8c4f99,dc4dadc0c963d4a2efa83fcd4fcb3dd1e586622a..8c46bec10101f23e47644c624e937ebb3772da79
        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) {