Skip to content

Commit daafb7a

Browse files
committed
Merge branch 'master' into grid
2 parents fe95250 + 678ff63 commit daafb7a

16 files changed

+395
-135
lines changed

tests/unit/accordion/accordion_options.js

+29-20
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,16 @@ test( "{ active: false }", function() {
1717
equals( ac.find( ".ui-accordion-header.ui-state-active" ).size(), 0, "no headers selected" );
1818
equals( ac.accordion( "option", "active" ), false );
1919

20-
// TODO: fix active: false when not collapsible
21-
// ac.accordion( "option", "collapsible", false );
22-
// state( ac, 1, 0, 0 );
23-
// equals( ac.accordion( "option", "active" ), 0 );
24-
//
25-
// ac.accordion( "destroy" );
26-
// ac.accordion({
27-
// active: false
28-
// });
29-
// state( ac, 1, 0, 0 );
30-
// strictEqual( ac.accordion( "option", "active" ), 0 );
20+
ac.accordion( "option", "collapsible", false );
21+
state( ac, 1, 0, 0 );
22+
equals( ac.accordion( "option", "active" ), 0 );
23+
24+
ac.accordion( "destroy" );
25+
ac.accordion({
26+
active: false
27+
});
28+
state( ac, 1, 0, 0 );
29+
strictEqual( ac.accordion( "option", "active" ), 0 );
3130
});
3231

3332
test( "{ active: Number }", function() {
@@ -52,12 +51,11 @@ test( "{ active: Number }", function() {
5251

5352
if ( $.uiBackCompat === false ) {
5453
test( "{ active: -Number }", function() {
55-
// TODO: fix initializing with negative value
5654
var ac = $( "#list1" ).accordion({
57-
// active: -1
55+
active: -1
5856
});
59-
// equals( ac.accordion( "option", "active" ), 2 );
60-
// state( ac, 0, 0, 1 );
57+
equals( ac.accordion( "option", "active" ), 2 );
58+
state( ac, 0, 0, 1 );
6159

6260
ac.accordion( "option", "active", -2 );
6361
equals( ac.accordion( "option", "active" ), 1 );
@@ -94,10 +92,9 @@ test( "{ collapsible: true }", function() {
9492
collapsible: true
9593
});
9694

97-
// TODO: fix setting active to false
98-
// ac.accordion( "option", "active", false );
99-
// equal( ac.accordion( "option", "active" ), false );
100-
// state( ac, 0, 0, 0 );
95+
ac.accordion( "option", "active", false );
96+
equal( ac.accordion( "option", "active" ), false );
97+
state( ac, 0, 0, 0 );
10198

10299
ac.accordion( "option", "active", 1 );
103100
equal( ac.accordion( "option", "active" ), 1 );
@@ -110,7 +107,6 @@ test( "{ collapsible: true }", function() {
110107

111108
// TODO: add event tests
112109

113-
// TODO: add more header tests
114110
test( "{ header: default }", function() {
115111
// default: > li > :first-child,> :not(li):even
116112
// > :not(li):even
@@ -119,6 +115,19 @@ test( "{ header: default }", function() {
119115
state( $( "#navigation" ).accordion(), 1, 0, 0);
120116
});
121117

118+
test( "{ header: custom }", function() {
119+
var ac = $( "#navigationWrapper" ).accordion({
120+
header: "h2"
121+
});
122+
ac.find( "h2" ).each(function() {
123+
ok( $( this ).hasClass( "ui-accordion-header" ) );
124+
});
125+
equal( ac.find( ".ui-accordion-header" ).length, 3 );
126+
state( ac, 1, 0, 0 );
127+
ac.accordion( "option", "active", 2 );
128+
state( ac, 0, 0, 1 );
129+
});
130+
122131
test( "{ heightStyle: 'auto' }", function() {
123132
var ac = $( "#navigation" ).accordion({ heightStyle: "auto" });
124133
equalHeights( ac, 95, 130 );

tests/unit/testsuite.js

+3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ window.commonWidgetTests = function( widget, settings ) {
6464
testWidgetDefaults( widget, settings.defaults );
6565
testWidgetOverrides( widget );
6666
testBasicUsage( widget );
67+
test( "version", function() {
68+
ok( "version" in $.ui[ widget ], "version property exists" );
69+
});
6770
};
6871

6972
}());

tests/unit/widget/widget_core.js

+161-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ test( "widget creation", function() {
2424
});
2525

2626
test( "element normalization", function() {
27-
expect( 12 );
27+
expect( 11 );
2828
var elem;
2929
$.widget( "ui.testWidget", {} );
3030

@@ -67,7 +67,6 @@ test( "element normalization", function() {
6767
$.ui.testWidget.prototype._create = function() {
6868
// using strictEqual throws an error (Maximum call stack size exceeded)
6969
ok( this.element[ 0 ] === this, "instance as element" );
70-
ok( this.element.data( "testWidget" ) === this, "instance stored in .data()" );
7170
};
7271
$.ui.testWidget();
7372
});
@@ -219,7 +218,7 @@ test( "merge multiple option arguments", function() {
219218
});
220219
});
221220

222-
test( "_getCreateOptions()", function() {
221+
test( "._getCreateOptions()", function() {
223222
expect( 1 );
224223
$.widget( "ui.testWidget", {
225224
options: {
@@ -450,6 +449,165 @@ test( ".widget() - overriden", function() {
450449
same( wrapper[0], $( "<div>" ).testWidget().testWidget( "widget" )[0] );
451450
});
452451

452+
test( "._bind() to element (default)", function() {
453+
expect( 12 );
454+
var self;
455+
$.widget( "ui.testWidget", {
456+
_create: function() {
457+
self = this;
458+
this._bind({
459+
keyup: this.keyup,
460+
keydown: "keydown"
461+
});
462+
},
463+
keyup: function( event ) {
464+
equals( self, this );
465+
equals( self.element[0], event.currentTarget );
466+
equals( "keyup", event.type );
467+
},
468+
keydown: function( event ) {
469+
equals( self, this );
470+
equals( self.element[0], event.currentTarget );
471+
equals( "keydown", event.type );
472+
}
473+
});
474+
var widget = $( "<div></div>" )
475+
.testWidget()
476+
.trigger( "keyup" )
477+
.trigger( "keydown" );
478+
widget
479+
.testWidget( "disable" )
480+
.trigger( "keyup" )
481+
.trigger( "keydown" );
482+
widget
483+
.testWidget( "enable" )
484+
.trigger( "keyup" )
485+
.trigger( "keydown" );
486+
widget
487+
.testWidget( "destroy" )
488+
.trigger( "keyup" )
489+
.trigger( "keydown" );
490+
});
491+
492+
test( "._bind() to descendent", function() {
493+
expect( 12 );
494+
var self;
495+
$.widget( "ui.testWidget", {
496+
_create: function() {
497+
self = this;
498+
this._bind( this.element.find( "strong" ), {
499+
keyup: this.keyup,
500+
keydown: "keydown"
501+
});
502+
},
503+
keyup: function( event ) {
504+
equals( self, this );
505+
equals( self.element.find( "strong" )[0], event.currentTarget );
506+
equals( "keyup", event.type );
507+
},
508+
keydown: function(event) {
509+
equals( self, this );
510+
equals( self.element.find( "strong" )[0], event.currentTarget );
511+
equals( "keydown", event.type );
512+
}
513+
});
514+
// trigger events on both widget and descendent to ensure that only descendent receives them
515+
var widget = $( "<div><p><strong>hello</strong> world</p></div>" )
516+
.testWidget()
517+
.trigger( "keyup" )
518+
.trigger( "keydown" );
519+
var descendent = widget.find( "strong" )
520+
.trigger( "keyup" )
521+
.trigger( "keydown" );
522+
widget
523+
.testWidget( "disable" )
524+
.trigger( "keyup" )
525+
.trigger( "keydown" );
526+
descendent
527+
.trigger( "keyup" )
528+
.trigger( "keydown" );
529+
widget
530+
.testWidget( "enable" )
531+
.trigger( "keyup" )
532+
.trigger( "keydown" );
533+
descendent
534+
.trigger( "keyup" )
535+
.trigger( "keydown" );
536+
descendent
537+
.addClass( "ui-state-disabled" )
538+
.trigger( "keyup" )
539+
.trigger( "keydown" );
540+
widget
541+
.testWidget( "destroy" )
542+
.trigger( "keyup" )
543+
.trigger( "keydown" );
544+
descendent
545+
.trigger( "keyup" )
546+
.trigger( "keydown" );
547+
});
548+
549+
test( "._hoverable()", function() {
550+
$.widget( "ui.testWidget", {
551+
_create: function() {
552+
this._hoverable( this.element.children() );
553+
}
554+
});
555+
556+
var div = $( "#widget" ).testWidget().children();
557+
ok( !div.hasClass( "ui-state-hover" ), "not hovered on init" );
558+
div.trigger( "mouseenter" );
559+
ok( div.hasClass( "ui-state-hover" ), "hovered after mouseenter" );
560+
div.trigger( "mouseleave" );
561+
ok( !div.hasClass( "ui-state-hover" ), "not hovered after mouseleave" );
562+
563+
div.trigger( "mouseenter" );
564+
ok( div.hasClass( "ui-state-hover" ), "hovered after mouseenter" );
565+
$( "#widget" ).testWidget( "disable" );
566+
ok( !div.hasClass( "ui-state-hover" ), "not hovered while disabled" );
567+
div.trigger( "mouseenter" );
568+
ok( !div.hasClass( "ui-state-hover" ), "can't hover while disabled" );
569+
$( "#widget" ).testWidget( "enable" );
570+
ok( !div.hasClass( "ui-state-hover" ), "enabling doesn't reset hover" );
571+
572+
div.trigger( "mouseenter" );
573+
ok( div.hasClass( "ui-state-hover" ), "hovered after mouseenter" );
574+
$( "#widget" ).testWidget( "destroy" );
575+
ok( !div.hasClass( "ui-state-hover" ), "not hovered after destroy" );
576+
div.trigger( "mouseenter" );
577+
ok( !div.hasClass( "ui-state-hover" ), "event handler removed on destroy" );
578+
});
579+
580+
test( "._focusable()", function() {
581+
$.widget( "ui.testWidget", {
582+
_create: function() {
583+
this._focusable( this.element.children() );
584+
}
585+
});
586+
587+
var div = $( "#widget" ).testWidget().children();
588+
ok( !div.hasClass( "ui-state-focus" ), "not focused on init" );
589+
div.trigger( "focusin" );
590+
ok( div.hasClass( "ui-state-focus" ), "focused after explicit focus" );
591+
div.trigger( "focusout" );
592+
ok( !div.hasClass( "ui-state-focus" ), "not focused after blur" );
593+
594+
div.trigger( "focusin" );
595+
ok( div.hasClass( "ui-state-focus" ), "focused after explicit focus" );
596+
$( "#widget" ).testWidget( "disable" );
597+
ok( !div.hasClass( "ui-state-focus" ), "not focused while disabled" );
598+
div.trigger( "focusin" );
599+
ok( !div.hasClass( "ui-state-focus" ), "can't focus while disabled" );
600+
$( "#widget" ).testWidget( "enable" );
601+
ok( !div.hasClass( "ui-state-focus" ), "enabling doesn't reset focus" );
602+
603+
div.trigger( "focusin" );
604+
ok( div.hasClass( "ui-state-focus" ), "focused after explicit focus" );
605+
$( "#widget" ).testWidget( "destroy" );
606+
ok( !div.hasClass( "ui-state-focus" ), "not focused after destroy" );
607+
div.trigger( "focusin" );
608+
ok( !div.hasClass( "ui-state-focus" ), "event handler removed on destroy" );
609+
});
610+
453611
test( "._trigger() - no event, no ui", function() {
454612
expect( 7 );
455613
var handlers = [];

tests/unit/widget/widget_tickets.js

+48
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,52 @@ test( "#5830 - Widget: Using inheritance overwrites the base classes options", f
4040
delete $.ui.testWidgetExtension;
4141
});
4242

43+
test( "#6795 - Widget: handle array arguments to _trigger consistently", function() {
44+
expect( 4 );
45+
46+
$.widget( "ui.testWidget", {
47+
_create: function() {},
48+
testEvent: function() {
49+
var ui = {
50+
foo: "bar",
51+
baz: {
52+
qux: 5,
53+
quux: 20
54+
}
55+
};
56+
var extra = {
57+
bar: 5
58+
};
59+
this._trigger( "foo", null, [ ui, extra ] );
60+
}
61+
});
62+
$( "#widget" ).bind( "testwidgetfoo", function( event, ui, extra ) {
63+
same( ui, {
64+
foo: "bar",
65+
baz: {
66+
qux: 5,
67+
quux: 20
68+
}
69+
}, "event: ui hash passed" );
70+
same( extra, {
71+
bar: 5
72+
}, "event: extra argument passed" );
73+
});
74+
$( "#widget" ).testWidget({
75+
foo: function( event, ui, extra ) {
76+
same( ui, {
77+
foo: "bar",
78+
baz: {
79+
qux: 5,
80+
quux: 20
81+
}
82+
}, "callback: ui hash passed" );
83+
same( extra, {
84+
bar: 5
85+
}, "callback: extra argument passed" );
86+
}
87+
})
88+
.testWidget( "testEvent" );
89+
});
90+
4391
}( jQuery ) );

themes/base/jquery.ui.accordion.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
1414
.ui-accordion .ui-accordion-heading { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
1515
.ui-accordion-icons .ui-accordion-heading { padding-left: 2.2em; }
16-
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
16+
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
1717
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
1818
.ui-accordion .ui-accordion-content-active { display: block; }

0 commit comments

Comments
 (0)