From a221e8ae4495d982d8868c4a314fc08ab010eddb Mon Sep 17 00:00:00 2001 From: Nicolas Coden Date: Sat, 10 Nov 2018 22:32:33 +0100 Subject: [PATCH] refactor: simplify AccordionMenu "up" and "down" methods --- js/foundation.accordionMenu.js | 37 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) 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]); + }); } /** -- 2.47.2