]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Add visual test to verify that accordions work with <li> and data-accordion-item...
authorGeoff Kimball <geoff@zurb.com>
Thu, 3 Mar 2016 18:34:36 +0000 (10:34 -0800)
committerGeoff Kimball <geoff@zurb.com>
Thu, 3 Mar 2016 18:34:36 +0000 (10:34 -0800)
js/foundation.accordion.js
test/visual/accordion/item-attributes.html [new file with mode: 0644]

index 814a9aca4fd3d8bde9f9848af013848c8948bfc9..4d2396fcb9ce7350cda9549c5d00dcf24a0e8998 100644 (file)
@@ -38,12 +38,9 @@ class Accordion {
    */
   _init() {
     this.$element.attr('role', 'tablist');
-    this.$tabs = this.$element.children('li');
-    if (this.$tabs.length === 0) {
-      this.$tabs = this.$element.children('[data-accordion-item]');
-    }
-    this.$tabs.each(function(idx, el){
+    this.$tabs = this.$element.children('li, [data-accordion-item]');
 
+    this.$tabs.each(function(idx, el) {
       var $el = $(el),
           $content = $el.children('[data-tab-content]'),
           id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'),
@@ -56,6 +53,7 @@ class Accordion {
         'aria-expanded': false,
         'aria-selected': false
       });
+
       $content.attr({'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});
     });
     var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
diff --git a/test/visual/accordion/item-attributes.html b/test/visual/accordion/item-attributes.html
new file mode 100644 (file)
index 0000000..7225997
--- /dev/null
@@ -0,0 +1,80 @@
+<!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">
+    <title>Foundation for Sites Testing</title>
+    <link href="../assets/css/foundation.css" rel="stylesheet" />
+  </head>
+  <body>
+    <div class="row column">
+      <h1>Accordion: Item Attributes</h1>
+
+      <p>Accordion items can be defined as <code>&lt;li&gt;</code>s, or by having the attribute <code>data-accordion-item</code>.</p>
+
+      <hr>
+
+      <p>This accordion uses list items and has no attribute.</p>
+
+      <ul class="accordion" data-accordion>
+        <li class="accordion-item is-active">
+          <a href="#" class="accordion-title">Accordion 1</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </li>
+        <li class="accordion-item">
+          <a href="#" class="accordion-title">Accordion 2</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </li>
+      </ul>
+
+      <hr>
+
+      <p>This accordion uses generic tags with an attribute.</p>
+
+      <div class="accordion" data-accordion>
+        <div class="accordion-item is-active" data-accordion-item>
+          <a href="#" class="accordion-title">Accordion 1</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </div>
+        <div class="accordion-item" data-accordion-item>
+          <a href="#" class="accordion-title">Accordion 2</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </div>
+      </div>
+
+      <hr>
+
+      <p>This accordion mixes both methods.</p>
+
+      <div class="accordion" data-accordion>
+        <li class="accordion-item is-active">
+          <a href="#" class="accordion-title">Accordion 1</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </li>
+        <div class="accordion-item" data-accordion-item>
+          <a href="#" class="accordion-title">Accordion 2</a>
+          <div class="accordion-content" data-tab-content>
+            Item
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <script src="../assets/js/vendor.js"></script>
+    <script src="../assets/js/foundation.js"></script>
+    <script>
+      $(document).foundation();
+    </script>
+  </body>
+</html>