]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
refactor: simplify AccordionMenu "up" and "down" methods 11579/head
authorNicolas Coden <nicolas@ncoden.fr>
Sat, 10 Nov 2018 21:32:33 +0000 (22:32 +0100)
committerNicolas Coden <nicolas@ncoden.fr>
Sat, 10 Nov 2018 21:32:33 +0000 (22:32 +0100)
js/foundation.accordionMenu.js

index cd37705208b63dcb4c5937340d212c6af8a1d167..2af7e817a3135d488ddf61d9723e6c9d3fbb91b2 100644 (file)
@@ -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]);
+    });
   }
 
   /**