r3044 committed - Fixed accordion option active getter and setter. Normalized getter to ...

r3044 committed - Fixed accordion option active getter and setter. Normalized getter to ...


Revision: 3044
Author: rdworth
Date: Mon Aug 10 17:45:01 2009
Log: Fixed accordion option active getter and setter. Normalized getter to
number, 0-based index.
http://code.google.com/p/jquery-ui/source/detail?r=3044
Modified:
/trunk/tests/unit/accordion/accordion_options.js
/trunk/ui/ui.accordion.js
=======================================
--- /trunk/tests/unit/accordion/accordion_options.js    Thu Aug 6 11:44:36
2009
+++ /trunk/tests/unit/accordion/accordion_options.js    Mon Aug 10 17:45:01
2009
@@ -38,7 +38,20 @@
});
test("{ active: Number }", function() {
-    ok(false, 'missing test - untested code is broken code');
+    expect(4);
+    $("#list1").accordion({
+        active: 0
+    });
+    equals( $("#list1").accordion('option', 'active'), 0);
+
+    $("#list1").accordion('option', 'active', 1);
+    equals( $("#list1").accordion('option', 'active'), 1);
+
+    $('.ui-accordion-header:eq(2)', '#list1').click();
+    equals( $("#list1").accordion('option', 'active'), 2);
+
+    $("#list1").accordion('activate', 0);
+    equals( $("#list1").accordion('option', 'active'), 0);
});
test("{ animated: false }, default", function() {
=======================================
--- /trunk/ui/ui.accordion.js    Thu Aug 6 11:44:36 2009
+++ /trunk/ui/ui.accordion.js    Mon Aug 10 17:45:01 2009
@@ -153,6 +153,9 @@
        $.widget.prototype._setData.apply(this, arguments);
+        if (key == "active") {
+            this.activate(value);
+        }
        if (key == "icons") {
            this._destroyIcons();
            if (value) {
@@ -230,6 +233,7 @@
    },
    activate: function(index) {
+        this.options.active = index;
        // call clickHandler with custom event
        var active = this._findActive(index)[0];
        this._clickHandler({ target: active }, active);
@@ -273,6 +277,8 @@
        // get the click target
        var clicked = $(event.currentTarget || target);
        var clickedIsActive = clicked[0] == this.active[0];
+
+        o.active = $('.ui-accordion-header', this.element).index(clicked);
        // if animations are still active, or the active header is the target,
ignore click
        if (this.running || (!o.collapsible && clickedIsActive)) {