From: Nicolas Coden Date: Sat, 10 Nov 2018 21:32:33 +0000 (+0100) Subject: refactor: simplify AccordionMenu "up" and "down" methods X-Git-Tag: v6.6.0~3^2~66^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a221e8ae4495d982d8868c4a314fc08ab010eddb;p=thirdparty%2Ffoundation%2Ffoundation-sites.git refactor: simplify AccordionMenu "up" and "down" methods --- diff --git a/js/foundation.accordionMenu.js b/js/foundation.accordionMenu.js index cd3770520..2af7e817a 100644 --- a/js/foundation.accordionMenu.js +++ b/js/foundation.accordionMenu.js @@ -233,13 +233,13 @@ class AccordionMenu extends Plugin { * @fires AccordionMenu#down */ down($target) { - var _this = this; - if(!this.options.multiOpen) { this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target))); } - $target.addClass('is-active').attr({'aria-hidden': false}); + $target + .addClass('is-active') + .attr({ 'aria-hidden': false }); if(this.options.submenuToggle) { $target.prev('.submenu-toggle').attr({'aria-expanded': true}); @@ -248,12 +248,12 @@ class AccordionMenu extends Plugin { $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true}); } - $target.slideDown(_this.options.slideSpeed, function () { + $target.slideDown(this.options.slideSpeed, () => { /** * Fires when the menu is done opening. * @event AccordionMenu#down */ - _this.$element.trigger('down.zf.accordionMenu', [$target]); + this.$element.trigger('down.zf.accordionMenu', [$target]); }); } @@ -263,23 +263,28 @@ class AccordionMenu extends Plugin { * @fires AccordionMenu#up */ up($target) { - var _this = this; - $target.slideUp(_this.options.slideSpeed, function () { - /** - * Fires when the menu is done collapsing up. - * @event AccordionMenu#up - */ - _this.$element.trigger('up.zf.accordionMenu', [$target]); - }); + const $submenus = $target.find('[data-submenu]'); + const $allmenus = $target.add($submenus); - var $menus = $target.find('[data-submenu]').slideUp(0).addBack().removeClass('is-active').attr('aria-hidden', true); + $submenus.slideUp(0); + $allmenus + .removeClass('is-active') + .attr('aria-hidden', true); if(this.options.submenuToggle) { - $menus.prev('.submenu-toggle').attr('aria-expanded', false); + $allmenus.prev('.submenu-toggle').attr('aria-expanded', false); } else { - $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); + $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); } + + $target.slideUp(this.options.slideSpeed, () => { + /** + * Fires when the menu is done collapsing up. + * @event AccordionMenu#up + */ + this.$element.trigger('up.zf.accordionMenu', [$target]); + }); } /**