Skip to content
Permalink
Browse files

accordion: added test for headers with descendants; replaced while-lo…

…op to find header-parent with call to parents
  • Loading branch information
jzaefferer committed Jun 21, 2008
1 parent 9196c20 commit 2e3b8eac77fe95b583a945a022bced62c478408f
Showing with 199 additions and 259 deletions.
  1. +90 −127 tests/accordion.html
  2. +18 −1 tests/accordion.js
  3. +90 −128 tests/all.html
  4. +1 −3 ui/ui.accordion.js
@@ -33,145 +33,108 @@ <h2 id="userAgent"></h2>

<div id="main" style="position:absolute;top:-2000000px;">

<fieldset>
<legend>Standard, container is a div, header is h3 and content p</legend>
<div id="list1">
<a>There is one obvious advantage:</a>
<div>
<p>
You've seen it coming!<br/>
Buy now and get nothing for free!<br/>
Well, at least no free beer. Perhaps a bear, if you can afford it.
</p>
</div>
<a>Now that you've got...</a>
<div>
<p>
your bear, you have to admit it!<br/>
No, we aren't selling bears.
</p>
<p>
We could talk about renting one.
</p>
</div>
<a>Rent one bear, ...</a>
<div>
<p>
get two for three beer.
</p>
<p>
And now, for something completely different.
</p>
</div>
</div>

<div id="list1">
<a>There is one obvious advantage:</a>
<div>
<p>
You've seen it coming!<br/>
Buy now and get nothing for free!<br/>
Well, at least no free beer. Perhaps a bear, if you can afford it.
</p>
</div>
<a>Now that you've got...</a>
<div>
<p>
your bear, you have to admit it!<br/>
No, we aren't selling bears.
</p>
<p>
We could talk about renting one.
</p>
</div>
<a>Rent one bear, ...</a>
<ul id="navigation">
<li>
<a class="head" href="?p=1.1.1">Guitar</a>
<ul>
<li><a href="?p=1.1.1.1">Electric</a></li>
<li><a href="?p=1.1.1.2">Acoustic</a></li>
<li><a href="?p=1.1.1.3">Amps</a></li>
<li><a href="?p=1.1.1.4">Effects</a></li>
<li><a href="?p=1.1.1.5">Accessories</a></li>
</ul>
</li>
<li>
<a class="head" href="?p=1.1.2"><span>Bass</span></a>
<ul>
<li><a href="?p=1.1.2.1">Electric</a></li>
<li><a href="?p=1.1.2.2">Acoustic</a></li>
<li><a href="?p=1.1.2.3">Amps</a></li>
<li><a href="?p=1.1.2.4">Effects</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
</ul>
</li>
<li>
<a class="head" href="?p=1.1.3">Drums</a>
<ul>
<li><a href="?p=1.1.3.2">Acoustic Drums</a></li>
<li><a href="?p=1.1.3.3">Electronic Drums</a></li>
<li><a href="?p=1.1.3.6">Accessories</a></li>
</ul>
</li>
</ul>
<dl id="list2">
<dt class="red">Red</dt>
<dd>
Fancy stuff about red thingies.
</dd>
<dt class="green selected">Green</dt>
<dd>
Green! Green! Green!
</dd>
<dt class="blue">Blue</dt>
<dd>
Cool kids are blue.
</dd>
</dl>

<div id="list3">
<div>
<div class="title">Tennis</div>
<div>
<p>
get two for three beer.
</p>
<p>
And now, for something completely different.
</p>
One ball, two players. Lots of fun.
</div>
</div>

</fieldset>

<fieldset>
<legend>Navigation - Unordered List with anchors and nested lists.</legend>
<p>The first item is cloned to allow the user to select it. The
active element is choosen based on location.hash: Open Drums and click
the first item ('Drums'), then reload the page.</p>

<ul id="navigation">
<li>
<a class="head" href="?p=1.1.1">Guitar</a>
<ul>
<li><a href="?p=1.1.1.1">Electric</a></li>
<li><a href="?p=1.1.1.2">Acoustic</a></li>
<li><a href="?p=1.1.1.3">Amps</a></li>
<li><a href="?p=1.1.1.4">Effects</a></li>
<li><a href="?p=1.1.1.5">Accessories</a></li>
</ul>
</li>
<li>
<a class="head" href="?p=1.1.2">Bass</a>
<ul>
<li><a href="?p=1.1.2.1">Electric</a></li>
<li><a href="?p=1.1.2.2">Acoustic</a></li>
<li><a href="?p=1.1.2.3">Amps</a></li>
<li><a href="?p=1.1.2.4">Effects</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
<li><a href="?p=1.1.2.5">Accessories</a></li>
</ul>
</li>
<li>
<a class="head" href="?p=1.1.3">Drums</a>
<ul>
<li><a href="?p=1.1.3.2">Acoustic Drums</a></li>
<li><a href="?p=1.1.3.3">Electronic Drums</a></li>
<li><a href="?p=1.1.3.6">Accessories</a></li>
</ul>
</li>
</ul>

</fieldset>

<fieldset>
<legend>With options, container is a definition list, header dt, content dd</legend>

<dl id="list2">
<dt class="red">Red</dt>
<dd>
Fancy stuff about red thingies.
</dd>
<dt class="green selected">Green</dt>
<dd>
Green! Green! Green!
</dd>
<dt class="blue">Blue</dt>
<dd>
Cool kids are blue.
</dd>
</dl>

</fieldset>

<fieldset>
<legend>Divitus structure, div container, div header (class title), div
content, no active on startup and can be completely closed</legend>

<div id="list3">
<div>
<div class="title">Soccer</div>
<div>
<div class="title">Tennis</div>
<div>
One ball, two players. Lots of fun.
</div>
One ball, 22 players. Lots of fun.
</div>
</div>
<div>
<div class="title">Baseball</div>
<div>
<div class="title">Soccer</div>
<div>
One ball, 22 players. Lots of fun.
</div>
Well, one ball, some guys running around, some guys hitting others with a stick.<br/>
Sounds like fun, doesn't it?
</div>
<div>
<div class="title">Baseball</div>
<div>
Well, one ball, some guys running around, some guys hitting others with a stick.<br/>
Sounds like fun, doesn't it?
</div>
<div>
Well, apart from the running part.
</div>
Well, apart from the running part.
</div>
</div>

</fieldset>

<div id="switch">
<select>
<option>Switch to...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button id="close">Close all</button>
Activate via selector, eg. ':first' or 'a:first': <input id="switch2" />
</div>

<div id="log"><div><strong>Log of the 2nd accordion</strong></div></div>

</div>

</body>
@@ -10,10 +10,14 @@ jQuery.ui.accordion.defaults.animated = false;
function state(accordion) {
var args = $.makeArray(arguments).slice(1);
$.each(args, function(i, n) {
equals(n, accordion.find("div").eq(i).is(":visible"));
equals(accordion.find("div").eq(i).is(":visible"), n);
});
}

$.fn.triggerEvent = function(type, target) {
return this.triggerHandler(type, [jQuery.event.fix({ type: type, target: target })]);
}

test("basics", function() {
state($('#list1').accordion(), 1, 0, 0);
});
@@ -82,4 +86,17 @@ test("activate, jQuery or DOM element", function() {
state(ac, 0, 1, 0);
});

function state2(accordion) {
var args = $.makeArray(arguments).slice(1);
$.each(args, function(i, n) {
equals(accordion.find("ul").eq(i).is(":visible"), n);
});
}

test("handle click on header-descendant", function() {
var ac = $('#navigation').accordion({ header: '.head', autoHeight: false })
ac.triggerEvent("click", $('#navigation span:contains(Bass)')[0]);
state2(ac, 0, 1, 0);
});

})(jQuery);

0 comments on commit 2e3b8ea

Please sign in to comment.
You can’t perform that action at this time.