]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Add parent link functionality to accordion menu
authorKevin Ball <kmball11@gmail.com>
Tue, 5 Sep 2017 16:05:45 +0000 (09:05 -0700)
committerKevin Ball <kmball11@gmail.com>
Tue, 5 Sep 2017 16:05:45 +0000 (09:05 -0700)
js/foundation.accordionMenu.js
test/visual/accordion-menu/parent-link.html [new file with mode: 0644]

index 53d11ffd18830d44a8f5834e73f6ad49342788f1..1a3ed55bc77cc13f6264278dbf5d741f1fd7ff40 100644 (file)
@@ -66,6 +66,10 @@ class AccordionMenu extends Plugin {
           subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),
           isActive = $sub.hasClass('is-active');
 
+      if(_this.options.parentLink) {
+        let $anchor = $elem.children('a');
+        $anchor.clone().prependTo($sub).wrap('<li class="is-submenu-parent-item is-submenu-item is-accordian-submenu-item"></li>');
+      }
 
       if(_this.options.submenuToggle) {
         $elem.addClass('has-submenu-toggle');
@@ -297,6 +301,13 @@ class AccordionMenu extends Plugin {
 }
 
 AccordionMenu.defaults = {
+  /**
+   * Adds the parent link to the submenu.
+   * @option
+   * @type {boolean}
+   * @default false
+   */
+  parentLink: false,
   /**
    * Amount of time to animate the opening of a submenu in ms.
    * @option
diff --git a/test/visual/accordion-menu/parent-link.html b/test/visual/accordion-menu/parent-link.html
new file mode 100644 (file)
index 0000000..a489d09
--- /dev/null
@@ -0,0 +1,73 @@
+<!doctype html>
+<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]-->
+<html class="no-js" lang="en" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
+    <title>Accordion Menu Parent Link</title>
+    <link href="../motion-ui/dist/motion-ui.css" rel="stylesheet" />
+    <link href="../assets/css/foundation.css" rel="stylesheet" />
+    <link href="https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css" rel="stylesheet">
+
+    <style>
+      h1 {
+        border-bottom: 1px solid #ddd;
+        margin-bottom: 2rem;
+        width: 100%;
+      }
+
+      h3 {
+        width: 100%;
+      }
+
+      .example {
+        padding: 2rem;
+        border: 1px solid #ddd;
+        width: 100%;
+      }
+
+      .example + h1 {
+        margin-top: 5rem;
+      }
+
+      .example + h3 {
+        margin-top: 3rem;
+      }
+    </style>
+  </head>
+
+  <body>
+    <div class="grid-container">
+      <div class="grid-x grid-padding-x">
+        <div class="cell">
+          <h1>Accordion Menu</h1>
+          <p>With parent link, parent should be reproduced in child, so expanding 'Two (Parent)' should
+             show Two (Parent) inside</p>
+          <div class="example" style="max-width: 250px">
+            <ul class="vertical menu accordion-menu" data-accordion-menu data-parent-link="true">
+              <li><a href="#">One</a></li>
+              <li>
+                <a href="#">Two (Parent)</a>
+                <ul class="menu vertical nested">
+                  <li><a href="#">Two A</a></li>
+                  <li><a href="#">Two B</a></li>
+                  <li><a href="#">Two C</a></li>
+                  <li><a href="#">Two D</a></li>
+                </ul>
+              </li>
+              <li><a href="#">Three</a></li>
+              <li><a href="#">Four</a></li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <script src="../assets/js/vendor.js"></script>
+    <script src="../assets/js/foundation.js"></script>
+    <script>
+      $(document).foundation();
+    </script>
+  </body>
+</html>