From 1d68f1339975e5c3f725c8860870d402cbcfec27 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 18:54:38 +0100 Subject: Accordion: Use _bind for keydown handler --- ui/jquery.ui.accordion.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index 5a49d7813..f4747d168 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -42,6 +42,9 @@ $.widget( "ui.accordion", { .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); this._hoverable( this.headers ); this._focusable( this.headers ); + this._bind( this.headers, { + keydown: "_keydown" + }); this.headers.next() .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ); @@ -68,8 +71,6 @@ $.widget( "ui.accordion", { this.headers .attr( "role", "tab" ) - // TODO: use _bind() - .bind( "keydown.accordion", $.proxy( this, "_keydown" ) ) .next() .attr( "role", "tabpanel" ); -- cgit v1.2.3 From 050958277317cf127b98f8ac26f70f57cf147b26 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 19:17:09 +0100 Subject: Accordion: Fix unbinding of accordion event option when dealing with multiple events. Make sure to unbind only those namespaced to .accordion --- tests/unit/accordion/accordion_options.js | 1 + ui/jquery.ui.accordion.js | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/accordion/accordion_options.js b/tests/unit/accordion/accordion_options.js index 8206b1d62..74a9a3177 100644 --- a/tests/unit/accordion/accordion_options.js +++ b/tests/unit/accordion/accordion_options.js @@ -152,6 +152,7 @@ test( "{ event: custom }", function() { // ensure old event handlers are unbound element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" ); + element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom2" ); equal( element.accordion( "option", "active" ), 2 ); accordion_state( element, 0, 0, 1 ); diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index f4747d168..bf8434c6d 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -162,8 +162,7 @@ $.widget( "ui.accordion", { if ( key === "event" ) { if ( this.options.event ) { - // TODO: this is incorrect for multiple events (see _setupEvents) - this.headers.unbind( this.options.event + ".accordion", this._eventHandler ); + this.headers.unbind( this.options.event.split( " " ).join( ".accordion " ) + ".accordion", this._eventHandler ); } this._setupEvents( value ); } -- cgit v1.2.3 From 397176da3ecdbcb15adc9a259cbbb59f029a711f Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 19:28:42 +0100 Subject: Accordion: Remove disabled check in _keydown, covered by _bind --- ui/jquery.ui.accordion.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index bf8434c6d..e3e09c9f4 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -192,8 +192,7 @@ $.widget( "ui.accordion", { }, _keydown: function( event ) { - // TODO: remove disabled check when using _bind() - if ( this.options.disabled || event.altKey || event.ctrlKey ) { + if ( event.altKey || event.ctrlKey ) { return; } -- cgit v1.2.3 From 724772e591e9e721b33c7e2739649b9c5d7a4246 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 19:45:20 +0100 Subject: Accordion: Update test helper to use QUnit.push instead of deepEqual to get useful stacktrace --- tests/unit/accordion/accordion_test_helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/accordion/accordion_test_helpers.js b/tests/unit/accordion/accordion_test_helpers.js index 7b316e983..542809ea0 100644 --- a/tests/unit/accordion/accordion_test_helpers.js +++ b/tests/unit/accordion/accordion_test_helpers.js @@ -3,7 +3,7 @@ function accordion_state( accordion ) { var actual = accordion.find( ".ui-accordion-content" ).map(function() { return $( this ).css( "display" ) === "none" ? 0 : 1; }).get(); - deepEqual( actual, expected ); + QUnit.push( QUnit.equiv(actual, expected), actual, expected ); } function accordion_equalHeights( accordion, min, max ) { -- cgit v1.2.3 From c7cf13f5ed42823fc52eae6f6376438af8467a00 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 19:54:06 +0100 Subject: Accordion: Update method tests - active option still works when accordion is disabled --- tests/unit/accordion/accordion_methods.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/unit/accordion/accordion_methods.js b/tests/unit/accordion/accordion_methods.js index 9f61647c4..2f4722070 100644 --- a/tests/unit/accordion/accordion_methods.js +++ b/tests/unit/accordion/accordion_methods.js @@ -10,15 +10,19 @@ test( "destroy", function() { }); test( "enable/disable", function() { - expect( 3 ); + expect( 4 ); var element = $( "#list1" ).accordion(); accordion_state( element, 1, 0, 0 ); element.accordion( "disable" ); - element.accordion( "option", "active", 1 ); + // event does nothing + element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" ); accordion_state( element, 1, 0, 0 ); - element.accordion( "enable" ); + // option still works element.accordion( "option", "active", 1 ); accordion_state( element, 0, 1, 0 ); + element.accordion( "enable" ); + element.accordion( "option", "active", 2 ); + accordion_state( element, 0, 0, 1 ); }); test( "refresh", function() { -- cgit v1.2.3 From 17db755a4f04dfc7b0be8d9a5c290cc5bc48e08e Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 7 Mar 2012 20:00:02 +0100 Subject: Accordion: Use _bind for event option. Refactor other _bind call to go into _setupEvents as well, simplifying unbinding a lot. Also add missing semicolon --- ui/jquery.ui.accordion.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index e3e09c9f4..1920063c4 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -42,9 +42,6 @@ $.widget( "ui.accordion", { .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); this._hoverable( this.headers ); this._focusable( this.headers ); - this._bind( this.headers, { - keydown: "_keydown" - }); this.headers.next() .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ); @@ -59,7 +56,7 @@ $.widget( "ui.accordion", { } this.active = this._findActive( options.active ) .addClass( "ui-accordion-header-active ui-state-active" ) - .toggleClass( "ui-corner-all ui-corner-top" ) + .toggleClass( "ui-corner-all ui-corner-top" ); this.active.next().addClass( "ui-accordion-content-active" ); this._createIcons(); @@ -162,7 +159,7 @@ $.widget( "ui.accordion", { if ( key === "event" ) { if ( this.options.event ) { - this.headers.unbind( this.options.event.split( " " ).join( ".accordion " ) + ".accordion", this._eventHandler ); + this.headers.unbind( ".accordion" ); } this._setupEvents( value ); } @@ -301,11 +298,15 @@ $.widget( "ui.accordion", { }, _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; if ( event ) { - // TODO: use _bind() - this.headers.bind( event.split( " " ).join( ".accordion " ) + ".accordion", - $.proxy( this, "_eventHandler" ) ); + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); } + this._bind( this.headers, events ); }, _eventHandler: function( event ) { @@ -325,7 +326,7 @@ $.widget( "ui.accordion", { event.preventDefault(); - if ( options.disabled || + if ( // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation -- cgit v1.2.3 From 5c53dd1bbc0cb0897d4851bad77c3fe22fda27dc Mon Sep 17 00:00:00 2001 From: Harri Kilpiö Date: Thu, 8 Mar 2012 22:52:22 +0200 Subject: Datepicker: Corrected values of dayNamesShort in Finnish translation. Fixes #8194 - Datepicker: Incorrect day name for Finnish localization. --- ui/i18n/jquery.ui.datepicker-fi.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/i18n/jquery.ui.datepicker-fi.js b/ui/i18n/jquery.ui.datepicker-fi.js index 1eae6c23b..4c5adda35 100644 --- a/ui/i18n/jquery.ui.datepicker-fi.js +++ b/ui/i18n/jquery.ui.datepicker-fi.js @@ -1,5 +1,5 @@ /* Finnish initialisation for the jQuery UI date picker plugin. */ -/* Written by Harri Kilpi� (harrikilpio@gmail.com). */ +/* Written by Harri Kilpiö (harrikilpio@gmail.com). */ jQuery(function($){ $.datepicker.regional['fi'] = { closeText: 'Sulje', @@ -10,7 +10,7 @@ jQuery(function($){ 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', 'Heinä','Elo','Syys','Loka','Marras','Joulu'], - dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], + dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','La'], dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], weekHeader: 'Vk', -- cgit v1.2.3 From 11b026d59b5d1f6f5cd55570c7148b2a33322c53 Mon Sep 17 00:00:00 2001 From: kborchers Date: Sun, 18 Mar 2012 21:18:00 -0500 Subject: Menu: Better disabled item handling using preventDefault() for the click event on anchors inside of disabled menu items and change the pointer to default --- themes/base/jquery.ui.menu.css | 1 + ui/jquery.ui.menu.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/themes/base/jquery.ui.menu.css b/themes/base/jquery.ui.menu.css index 84d7d85b1..1e559e661 100644 --- a/themes/base/jquery.ui.menu.css +++ b/themes/base/jquery.ui.menu.css @@ -15,6 +15,7 @@ .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; } .ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } +.ui-menu .ui-state-disabled a { cursor: default; } /* icon support */ .ui-menu-icons { position: relative; } diff --git a/ui/jquery.ui.menu.js b/ui/jquery.ui.menu.js index 18f4eb9f8..17177a906 100644 --- a/ui/jquery.ui.menu.js +++ b/ui/jquery.ui.menu.js @@ -59,6 +59,9 @@ $.widget( "ui.menu", { "mousedown .ui-menu-item > a": function( event ) { event.preventDefault(); }, + "click .ui-state-disabled > a": function( event ) { + event.preventDefault(); + }, "click .ui-menu-item:has(a)": function( event ) { event.stopImmediatePropagation(); //Don't select disabled menu items -- cgit v1.2.3 From 99fd8511ed4098a4cbf6c66999ef4df0bd8280be Mon Sep 17 00:00:00 2001 From: Scott González Date: Mon, 19 Mar 2012 09:05:40 -0400 Subject: Revert "Button: Apply overflow: hidden in all browsers except IE 6,7 to avoid expanding the size of the button from negative text indent. Fixes #7911 - Button: icon only button in dialog causes horizontal scrollbar in Opera." This reverts commit a3a5c65d4dd9eb6be0e8a71d82c3ca86b38ed009. --- themes/base/jquery.ui.button.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/base/jquery.ui.button.css b/themes/base/jquery.ui.button.css index ccee26aab..be2e71796 100644 --- a/themes/base/jquery.ui.button.css +++ b/themes/base/jquery.ui.button.css @@ -7,7 +7,7 @@ * * http://docs.jquery.com/UI/Button#theming */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } -- cgit v1.2.3 From 94c6f9ec84acc4c01f2dc16c009e2cf7a0fdbc5d Mon Sep 17 00:00:00 2001 From: Scott González Date: Mon, 19 Mar 2012 09:47:38 -0400 Subject: Mouse: Unbind events bound to document on destroy. Fixes #8199 - _mouseDestroy keeps mousemove and mouseup events bound. --- ui/jquery.ui.mouse.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/jquery.ui.mouse.js b/ui/jquery.ui.mouse.js index 64a081961..5e7744418 100644 --- a/ui/jquery.ui.mouse.js +++ b/ui/jquery.ui.mouse.js @@ -46,6 +46,9 @@ $.widget("ui.mouse", { // other instances of mouse _mouseDestroy: function() { this.element.unbind('.'+this.widgetName); + $(document) + .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); }, _mouseDown: function(event) { -- cgit v1.2.3 From 392c003e636abd5ab169f0bd7e57dc3439bc3ad8 Mon Sep 17 00:00:00 2001 From: Scott González Date: Wed, 21 Mar 2012 13:24:31 -0400 Subject: Update QUnit. --- external/qunit.css | 2 +- external/qunit.js | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/external/qunit.css b/external/qunit.css index 4be7e3643..e3e10f9f9 100644 --- a/external/qunit.css +++ b/external/qunit.css @@ -1,5 +1,5 @@ /** - * QUnit v1.4.0 - A JavaScript Unit Testing Framework + * QUnit v1.5.0pre - A JavaScript Unit Testing Framework * * http://docs.jquery.com/QUnit * diff --git a/external/qunit.js b/external/qunit.js index f50407ae5..71aac0efa 100644 --- a/external/qunit.js +++ b/external/qunit.js @@ -1,5 +1,5 @@ /** - * QUnit v1.4.0 - A JavaScript Unit Testing Framework + * QUnit v1.5.0pre - A JavaScript Unit Testing Framework * * http://docs.jquery.com/QUnit * @@ -370,7 +370,7 @@ var QUnit = { } try { - block(); + block.call(config.current.testEnvironment); } catch (e) { actual = e; } @@ -873,9 +873,11 @@ function done() { // clear own sessionStorage items if all tests passed if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { - for (var key in sessionStorage) { - if (sessionStorage.hasOwnProperty(key) && key.indexOf("qunit-test-") === 0 ) { - sessionStorage.removeItem(key); + var key; + for ( var i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf("qunit-test-") === 0 ) { + sessionStorage.removeItem( key ); } } } @@ -912,8 +914,9 @@ function validTest( name ) { return run; } -// so far supports only Firefox, Chrome and Opera (buggy) -// could be extended in the future to use something like https://github.com/csnover/TraceKit +// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) +// Later Safari and IE10 are supposed to support error.stack as well +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack function extractStacktrace( e, offset ) { offset = offset || 3; if (e.stacktrace) { -- cgit v1.2.3 From 89ff5c523241a45c54cca0d4e1610381e092fef6 Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 22 Mar 2012 09:45:22 -0400 Subject: Upgrade jQuery to 1.7.2. --- demos/accordion/collapsible.html | 2 +- demos/accordion/custom-icons.html | 2 +- demos/accordion/default.html | 2 +- demos/accordion/fillspace.html | 2 +- demos/accordion/hoverintent.html | 2 +- demos/accordion/no-auto-height.html | 2 +- demos/accordion/sortable.html | 2 +- demos/addClass/default.html | 2 +- demos/animate/default.html | 2 +- demos/autocomplete/categories.html | 2 +- demos/autocomplete/combobox.html | 2 +- demos/autocomplete/custom-data.html | 2 +- demos/autocomplete/default.html | 2 +- demos/autocomplete/folding.html | 2 +- demos/autocomplete/maxheight.html | 2 +- demos/autocomplete/multiple-remote.html | 2 +- demos/autocomplete/multiple.html | 2 +- demos/autocomplete/remote-jsonp.html | 2 +- demos/autocomplete/remote-with-cache.html | 2 +- demos/autocomplete/remote.html | 2 +- demos/autocomplete/xml.html | 2 +- demos/button/checkbox.html | 2 +- demos/button/default.html | 2 +- demos/button/icons.html | 2 +- demos/button/radio.html | 2 +- demos/button/splitbutton.html | 2 +- demos/button/toolbar.html | 2 +- demos/datepicker/alt-field.html | 2 +- demos/datepicker/animation.html | 2 +- demos/datepicker/buttonbar.html | 2 +- demos/datepicker/date-formats.html | 2 +- demos/datepicker/date-range.html | 2 +- demos/datepicker/default.html | 2 +- demos/datepicker/dropdown-month-year.html | 2 +- demos/datepicker/icon-trigger.html | 2 +- demos/datepicker/inline.html | 2 +- demos/datepicker/localization.html | 2 +- demos/datepicker/min-max.html | 2 +- demos/datepicker/multiple-calendars.html | 2 +- demos/datepicker/other-months.html | 2 +- demos/datepicker/show-week.html | 2 +- demos/dialog/animated.html | 2 +- demos/dialog/default.html | 2 +- demos/dialog/modal-confirmation.html | 2 +- demos/dialog/modal-form.html | 2 +- demos/dialog/modal-message.html | 2 +- demos/dialog/modal.html | 2 +- demos/draggable/constrain-movement.html | 2 +- demos/draggable/cursor-style.html | 2 +- demos/draggable/default.html | 2 +- demos/draggable/delay-start.html | 2 +- demos/draggable/events.html | 2 +- demos/draggable/handle.html | 2 +- demos/draggable/revert.html | 2 +- demos/draggable/scroll.html | 2 +- demos/draggable/snap-to.html | 2 +- demos/draggable/sortable.html | 2 +- demos/draggable/visual-feedback.html | 2 +- demos/droppable/accepted-elements.html | 2 +- demos/droppable/default.html | 2 +- demos/droppable/photo-manager.html | 2 +- demos/droppable/propagation.html | 2 +- demos/droppable/revert.html | 2 +- demos/droppable/shopping-cart.html | 2 +- demos/droppable/visual-feedback.html | 2 +- demos/effect/default.html | 2 +- demos/effect/easing.html | 2 +- demos/hide/default.html | 2 +- demos/index.html | 2 +- demos/menu/default.html | 2 +- demos/menu/navigationmenu.html | 2 +- demos/menu/topalignmenu.html | 2 +- demos/position/cycler.html | 2 +- demos/position/default.html | 2 +- demos/progressbar/animated.html | 2 +- demos/progressbar/default.html | 2 +- demos/progressbar/resize.html | 2 +- demos/removeClass/default.html | 2 +- demos/resizable/animate.html | 2 +- demos/resizable/aspect-ratio.html | 2 +- demos/resizable/constrain-area.html | 2 +- demos/resizable/default.html | 2 +- demos/resizable/delay-start.html | 2 +- demos/resizable/helper.html | 2 +- demos/resizable/max-min.html | 2 +- demos/resizable/snap-to-grid.html | 2 +- demos/resizable/synchronous-resize.html | 2 +- demos/resizable/textarea.html | 2 +- demos/resizable/visual-feedback.html | 2 +- demos/selectable/default.html | 2 +- demos/selectable/display-grid.html | 2 +- demos/selectable/serialize.html | 2 +- demos/show/default.html | 2 +- demos/slider/colorpicker.html | 2 +- demos/slider/default.html | 2 +- demos/slider/hotelrooms.html | 2 +- demos/slider/multiple-vertical.html | 2 +- demos/slider/range-vertical.html | 2 +- demos/slider/range.html | 2 +- demos/slider/rangemax.html | 2 +- demos/slider/rangemin.html | 2 +- demos/slider/side-scroll.html | 2 +- demos/slider/slider-vertical.html | 2 +- demos/slider/steps.html | 2 +- demos/slider/tabs.html | 2 +- demos/sortable/connect-lists-through-tabs.html | 2 +- demos/sortable/connect-lists.html | 2 +- demos/sortable/default.html | 2 +- demos/sortable/delay-start.html | 2 +- demos/sortable/display-grid.html | 2 +- demos/sortable/empty-lists.html | 2 +- demos/sortable/items.html | 2 +- demos/sortable/placeholder.html | 2 +- demos/sortable/portlets.html | 2 +- demos/spinner/currency.html | 2 +- demos/spinner/decimal.html | 2 +- demos/spinner/default.html | 2 +- demos/spinner/latlong.html | 2 +- demos/spinner/overflow.html | 2 +- demos/spinner/time.html | 2 +- demos/switchClass/default.html | 2 +- demos/tabs/ajax.html | 2 +- demos/tabs/bottom.html | 2 +- demos/tabs/collapsible.html | 2 +- demos/tabs/cookie.html | 2 +- demos/tabs/default.html | 2 +- demos/tabs/manipulation.html | 2 +- demos/tabs/mouseover.html | 2 +- demos/tabs/sortable.html | 2 +- demos/tabs/vertical.html | 2 +- demos/toggle/default.html | 2 +- demos/toggleClass/default.html | 2 +- demos/tooltip/custom-animation.html | 2 +- demos/tooltip/custom-content.html | 2 +- demos/tooltip/custom-style.html | 2 +- demos/tooltip/default.html | 2 +- demos/tooltip/forms.html | 2 +- demos/tooltip/tracking.html | 2 +- demos/tooltip/video-player.html | 2 +- demos/widget/default.html | 2 +- jquery-1.7.1.js | 9266 ------------------- jquery-1.7.2.js | 9404 ++++++++++++++++++++ tests/index.html | 2 +- tests/jquery-1.7.2.js | 9404 ++++++++++++++++++++ tests/jquery.js | 2 +- tests/static/button/default.html | 2 +- tests/static/datepicker/datepicker.html | 2 +- tests/static/datepicker/default.html | 2 +- tests/static/icons.html | 2 +- tests/unit/accordion/all.html | 2 +- tests/unit/all-active.html | 2 +- tests/unit/all.html | 2 +- tests/unit/autocomplete/all.html | 2 +- tests/unit/button/all.html | 2 +- tests/unit/core/all.html | 2 +- tests/unit/datepicker/all.html | 2 +- tests/unit/dialog/all.html | 2 +- tests/unit/draggable/all.html | 2 +- tests/unit/droppable/all.html | 2 +- tests/unit/effects/all.html | 2 +- tests/unit/menu/all.html | 2 +- tests/unit/position/all.html | 2 +- tests/unit/progressbar/all.html | 2 +- tests/unit/resizable/all.html | 2 +- tests/unit/selectable/all.html | 2 +- tests/unit/slider/all.html | 2 +- tests/unit/sortable/all.html | 2 +- tests/unit/spinner/all.html | 2 +- tests/unit/subsuite.js | 2 +- tests/unit/tabs/all.html | 2 +- tests/unit/tooltip/all.html | 2 +- tests/unit/widget/all.html | 2 +- tests/visual/accordion/accordion.html | 2 +- tests/visual/addClass/addClass_queue.html | 2 +- tests/visual/button/button.html | 2 +- tests/visual/button/button_disabled_true.html | 2 +- tests/visual/button/button_performance.html | 2 +- tests/visual/button/button_ticket_5254.html | 2 +- tests/visual/button/button_ticket_5261.html | 2 +- tests/visual/button/button_ticket_5278.html | 2 +- tests/visual/compound/accordion_dialog.html | 2 +- tests/visual/compound/accordion_tabs.html | 2 +- tests/visual/compound/datepicker_dialog.html | 2 +- tests/visual/compound/draggable_accordion.html | 2 +- ...aggable_accordion_accordion_tabs_draggable.html | 2 +- .../compound/sortable_accordion_sortable_tabs.html | 2 +- tests/visual/compound/tabs_tabs.html | 2 +- tests/visual/compound/tabs_tooltips.html | 2 +- tests/visual/compound/widgets_in_dialog.html | 2 +- .../dialog/dialog_on_page_with_large_dom.html | 2 +- tests/visual/effects/effects.all.html | 2 +- tests/visual/effects/effects.scale.html | 2 +- tests/visual/menu/drilldown.html | 2 +- tests/visual/menu/menu.html | 2 +- tests/visual/menu/tablemenu.html | 2 +- tests/visual/position/position.html | 2 +- tests/visual/position/position_fit.html | 2 +- tests/visual/position/position_flip.html | 2 +- tests/visual/position/position_flipfit.html | 2 +- tests/visual/position/position_margin.html | 2 +- tests/visual/position/position_within.html | 2 +- tests/visual/theme.html | 2 +- tests/visual/tooltip/animations.html | 2 +- tests/visual/tooltip/callout.html | 2 +- tests/visual/tooltip/tooltip.html | 2 +- 205 files changed, 19010 insertions(+), 9468 deletions(-) delete mode 100644 jquery-1.7.1.js create mode 100644 jquery-1.7.2.js create mode 100644 tests/jquery-1.7.2.js diff --git a/demos/accordion/collapsible.html b/demos/accordion/collapsible.html index 922df00cb..e2e2d52a0 100644 --- a/demos/accordion/collapsible.html +++ b/demos/accordion/collapsible.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Collapse content - + diff --git a/demos/accordion/custom-icons.html b/demos/accordion/custom-icons.html index c41af1120..54716d9a0 100644 --- a/demos/accordion/custom-icons.html +++ b/demos/accordion/custom-icons.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Customize icons - + diff --git a/demos/accordion/default.html b/demos/accordion/default.html index 67197aa20..681fbdcaf 100644 --- a/demos/accordion/default.html +++ b/demos/accordion/default.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Default functionality - + diff --git a/demos/accordion/fillspace.html b/demos/accordion/fillspace.html index 6095fa33f..ca2c5a0eb 100644 --- a/demos/accordion/fillspace.html +++ b/demos/accordion/fillspace.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Fill space - + diff --git a/demos/accordion/hoverintent.html b/demos/accordion/hoverintent.html index d08c64be6..a70987fff 100644 --- a/demos/accordion/hoverintent.html +++ b/demos/accordion/hoverintent.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Open on hoverintent - + diff --git a/demos/accordion/no-auto-height.html b/demos/accordion/no-auto-height.html index de07d625b..ab789f65d 100644 --- a/demos/accordion/no-auto-height.html +++ b/demos/accordion/no-auto-height.html @@ -4,7 +4,7 @@ jQuery UI Accordion - No auto height - + diff --git a/demos/accordion/sortable.html b/demos/accordion/sortable.html index cf9e8c86b..fda6ae7ca 100644 --- a/demos/accordion/sortable.html +++ b/demos/accordion/sortable.html @@ -4,7 +4,7 @@ jQuery UI Accordion - Sortable - + diff --git a/demos/addClass/default.html b/demos/addClass/default.html index 406466263..98f7c8c50 100644 --- a/demos/addClass/default.html +++ b/demos/addClass/default.html @@ -4,7 +4,7 @@ jQuery UI Effects - addClass demo - + - + diff --git a/tests/visual/button/button_disabled_true.html b/tests/visual/button/button_disabled_true.html index ac21a5683..25388a484 100644 --- a/tests/visual/button/button_disabled_true.html +++ b/tests/visual/button/button_disabled_true.html @@ -5,7 +5,7 @@ Button Visual Test : Button disabled true - + diff --git a/tests/visual/button/button_performance.html b/tests/visual/button/button_performance.html index 439e2c1ae..8ff6d0320 100644 --- a/tests/visual/button/button_performance.html +++ b/tests/visual/button/button_performance.html @@ -9,7 +9,7 @@ #toolbar { margin-top: 2em; padding:0.2em; } #ops1, #ops2, #format, #mode { margin-right: 1em } - + diff --git a/tests/visual/button/button_ticket_5254.html b/tests/visual/button/button_ticket_5254.html index 14d27698a..c46e094ab 100644 --- a/tests/visual/button/button_ticket_5254.html +++ b/tests/visual/button/button_ticket_5254.html @@ -5,7 +5,7 @@ Button Visual Test : Button ticket #5254 - + diff --git a/tests/visual/button/button_ticket_5261.html b/tests/visual/button/button_ticket_5261.html index 0024393ee..7eddc33ae 100644 --- a/tests/visual/button/button_ticket_5261.html +++ b/tests/visual/button/button_ticket_5261.html @@ -5,7 +5,7 @@ Button Visual Test : Button ticket #5261 - + diff --git a/tests/visual/button/button_ticket_5278.html b/tests/visual/button/button_ticket_5278.html index 477a0b398..eed6ebdb0 100644 --- a/tests/visual/button/button_ticket_5278.html +++ b/tests/visual/button/button_ticket_5278.html @@ -5,7 +5,7 @@ Button Visual Test : Button ticket #5278 - + diff --git a/tests/visual/compound/accordion_dialog.html b/tests/visual/compound/accordion_dialog.html index 7b3b227ed..df179ff6a 100644 --- a/tests/visual/compound/accordion_dialog.html +++ b/tests/visual/compound/accordion_dialog.html @@ -5,7 +5,7 @@ Compound Visual Test : Accordion in Dialog - + diff --git a/tests/visual/compound/accordion_tabs.html b/tests/visual/compound/accordion_tabs.html index e98edaf7c..ada8e84a7 100644 --- a/tests/visual/compound/accordion_tabs.html +++ b/tests/visual/compound/accordion_tabs.html @@ -5,7 +5,7 @@ Compound Visual Test : Accordion in Tabs - + diff --git a/tests/visual/compound/datepicker_dialog.html b/tests/visual/compound/datepicker_dialog.html index 0ef3f9bbc..885edb4a6 100644 --- a/tests/visual/compound/datepicker_dialog.html +++ b/tests/visual/compound/datepicker_dialog.html @@ -5,7 +5,7 @@ Compound Visual Test : Datepicker in Dialog - + diff --git a/tests/visual/compound/draggable_accordion.html b/tests/visual/compound/draggable_accordion.html index 396d0e29c..a78221142 100644 --- a/tests/visual/compound/draggable_accordion.html +++ b/tests/visual/compound/draggable_accordion.html @@ -5,7 +5,7 @@ Compound Visual Test : Draggable in Accordion - + diff --git a/tests/visual/compound/draggable_accordion_accordion_tabs_draggable.html b/tests/visual/compound/draggable_accordion_accordion_tabs_draggable.html index a1199c826..cced484ef 100644 --- a/tests/visual/compound/draggable_accordion_accordion_tabs_draggable.html +++ b/tests/visual/compound/draggable_accordion_accordion_tabs_draggable.html @@ -5,7 +5,7 @@ Compound Visual Test : Draggable in Accordion - + diff --git a/tests/visual/compound/sortable_accordion_sortable_tabs.html b/tests/visual/compound/sortable_accordion_sortable_tabs.html index 02a6c0dec..ac90f1a09 100644 --- a/tests/visual/compound/sortable_accordion_sortable_tabs.html +++ b/tests/visual/compound/sortable_accordion_sortable_tabs.html @@ -5,7 +5,7 @@ Compound Visual Test : Accordion in Tabs - + diff --git a/tests/visual/compound/tabs_tabs.html b/tests/visual/compound/tabs_tabs.html index 12515a4c5..a18ef62ce 100644 --- a/tests/visual/compound/tabs_tabs.html +++ b/tests/visual/compound/tabs_tabs.html @@ -5,7 +5,7 @@ Compound Visual Test : Tabs in Tabs - + diff --git a/tests/visual/compound/tabs_tooltips.html b/tests/visual/compound/tabs_tooltips.html index 38b85e58b..ad3822be9 100644 --- a/tests/visual/compound/tabs_tooltips.html +++ b/tests/visual/compound/tabs_tooltips.html @@ -5,7 +5,7 @@ Compound Visual Test : Tabs in Tabs - + diff --git a/tests/visual/compound/widgets_in_dialog.html b/tests/visual/compound/widgets_in_dialog.html index b711efa9c..89ea875d1 100644 --- a/tests/visual/compound/widgets_in_dialog.html +++ b/tests/visual/compound/widgets_in_dialog.html @@ -5,7 +5,7 @@ Compound Visual Test : All Widgets in Dialog - + diff --git a/tests/visual/dialog/dialog_on_page_with_large_dom.html b/tests/visual/dialog/dialog_on_page_with_large_dom.html index bc87aec09..d807b3e3f 100644 --- a/tests/visual/dialog/dialog_on_page_with_large_dom.html +++ b/tests/visual/dialog/dialog_on_page_with_large_dom.html @@ -5,7 +5,7 @@ Dialog Visual Test - Modal Dialog in Large DOM - + diff --git a/tests/visual/effects/effects.all.html b/tests/visual/effects/effects.all.html index ddc665437..acb8dc41a 100644 --- a/tests/visual/effects/effects.all.html +++ b/tests/visual/effects/effects.all.html @@ -4,7 +4,7 @@ jQuery UI Effects Test Suite - + diff --git a/tests/visual/effects/effects.scale.html b/tests/visual/effects/effects.scale.html index 845625e2e..f86c36b6e 100644 --- a/tests/visual/effects/effects.scale.html +++ b/tests/visual/effects/effects.scale.html @@ -4,7 +4,7 @@ jQuery UI Effects Test Suite - + diff --git a/tests/visual/menu/drilldown.html b/tests/visual/menu/drilldown.html index 781f5d88a..8bc30a793 100644 --- a/tests/visual/menu/drilldown.html +++ b/tests/visual/menu/drilldown.html @@ -4,7 +4,7 @@ Menu Visual Test: Default - + diff --git a/tests/visual/menu/menu.html b/tests/visual/menu/menu.html index 16ba6ae45..f88d1d542 100644 --- a/tests/visual/menu/menu.html +++ b/tests/visual/menu/menu.html @@ -4,7 +4,7 @@ Menu Visual Test: Default - + diff --git a/tests/visual/menu/tablemenu.html b/tests/visual/menu/tablemenu.html index bce64bfb5..19691c614 100644 --- a/tests/visual/menu/tablemenu.html +++ b/tests/visual/menu/tablemenu.html @@ -4,7 +4,7 @@ Menu Visual Test: Default - + diff --git a/tests/visual/position/position.html b/tests/visual/position/position.html index 9d29abe28..9a9fb831e 100644 --- a/tests/visual/position/position.html +++ b/tests/visual/position/position.html @@ -5,7 +5,7 @@ Position Visual Test: Default - + diff --git a/tests/visual/position/position_fit.html b/tests/visual/position/position_fit.html index 78751d3ef..9c60b78f6 100644 --- a/tests/visual/position/position_fit.html +++ b/tests/visual/position/position_fit.html @@ -5,7 +5,7 @@ Position Visual Test: Fit - + diff --git a/tests/visual/position/position_flip.html b/tests/visual/position/position_flip.html index 7b26f6a9a..bae3c649b 100644 --- a/tests/visual/position/position_flip.html +++ b/tests/visual/position/position_flip.html @@ -5,7 +5,7 @@ Position Visual Test: Flip - + diff --git a/tests/visual/position/position_flipfit.html b/tests/visual/position/position_flipfit.html index b5cf82946..fcfb75b6b 100644 --- a/tests/visual/position/position_flipfit.html +++ b/tests/visual/position/position_flipfit.html @@ -5,7 +5,7 @@ Position Visual Test: FlipFit - + diff --git a/tests/visual/position/position_margin.html b/tests/visual/position/position_margin.html index 52b800837..71d8f0a3c 100644 --- a/tests/visual/position/position_margin.html +++ b/tests/visual/position/position_margin.html @@ -5,7 +5,7 @@ Position Visual Test: Default - + diff --git a/tests/visual/position/position_within.html b/tests/visual/position/position_within.html index 156c82e5d..7d8813582 100644 --- a/tests/visual/position/position_within.html +++ b/tests/visual/position/position_within.html @@ -7,7 +7,7 @@ - + diff --git a/tests/visual/theme.html b/tests/visual/theme.html index 131cc41d7..fe9146169 100644 --- a/tests/visual/theme.html +++ b/tests/visual/theme.html @@ -4,7 +4,7 @@ jQuery UI Example Page - + diff --git a/tests/visual/tooltip/animations.html b/tests/visual/tooltip/animations.html index 993fbbd85..10235b2f9 100644 --- a/tests/visual/tooltip/animations.html +++ b/tests/visual/tooltip/animations.html @@ -4,7 +4,7 @@ Tooltip Visual Test: Default - + diff --git a/tests/visual/tooltip/callout.html b/tests/visual/tooltip/callout.html index 79d8d32bf..af89157a2 100644 --- a/tests/visual/tooltip/callout.html +++ b/tests/visual/tooltip/callout.html @@ -4,7 +4,7 @@ Tooltip Visual Test: Default - + diff --git a/tests/visual/tooltip/tooltip.html b/tests/visual/tooltip/tooltip.html index eb51d56c6..63c756ce0 100644 --- a/tests/visual/tooltip/tooltip.html +++ b/tests/visual/tooltip/tooltip.html @@ -4,7 +4,7 @@ Tooltip Visual Test: Default - + -- cgit v1.2.3 From c12a47074e83b2495b8ff7113d939722f9cdb7c7 Mon Sep 17 00:00:00 2001 From: Lado Lomidze Date: Thu, 22 Mar 2012 11:10:36 -0400 Subject: Datepicker: Added Georgian localization. Fixes #8205 - Datepicker: Add Georgian localization. --- demos/datepicker/localization.html | 2 ++ demos/index.html | 1 + ui/i18n/jquery.ui.datepicker-ge.js | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 ui/i18n/jquery.ui.datepicker-ge.js diff --git a/demos/datepicker/localization.html b/demos/datepicker/localization.html index dfb8e71f9..ba5efdfc3 100644 --- a/demos/datepicker/localization.html +++ b/demos/datepicker/localization.html @@ -32,6 +32,7 @@ + @@ -122,6 +123,7 @@ + diff --git a/demos/index.html b/demos/index.html index bf37ca734..f96753d37 100644 --- a/demos/index.html +++ b/demos/index.html @@ -66,6 +66,7 @@ + diff --git a/ui/i18n/jquery.ui.datepicker-ge.js b/ui/i18n/jquery.ui.datepicker-ge.js new file mode 100644 index 000000000..10d4e5851 --- /dev/null +++ b/ui/i18n/jquery.ui.datepicker-ge.js @@ -0,0 +1,21 @@ +/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Lado Lomidze (lado.lomidze@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ge'] = { + closeText: 'დახურვა', + prevText: '< წინა', + nextText: 'შემდეგი >', + currentText: 'დღეს', + monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'], + monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'], + dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'], + dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], + dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'], + weekHeader: 'კვირა', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ge']); +}); -- cgit v1.2.3 From 9bb9141f299ce1b7ddcffc39063a9e6581e19ba6 Mon Sep 17 00:00:00 2001 From: stojce Date: Thu, 22 Mar 2012 15:26:47 +0100 Subject: Datepicker: Fixed month name for Macedonian localization. Fixes #8206 - Datepicker: Incorrect month name for Macedonian localization. --- ui/i18n/jquery.ui.datepicker-mk.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/i18n/jquery.ui.datepicker-mk.js b/ui/i18n/jquery.ui.datepicker-mk.js index 1e602427a..028532551 100644 --- a/ui/i18n/jquery.ui.datepicker-mk.js +++ b/ui/i18n/jquery.ui.datepicker-mk.js @@ -6,9 +6,9 @@ jQuery(function($){ prevText: '<', nextText: '>', currentText: 'Денес', - monthNames: ['Јануари','Фебруари','Март','Април','Мај','Јуни', + monthNames: ['Јануари','Февруари','Март','Април','Мај','Јуни', 'Јули','Август','Септември','Октомври','Ноември','Декември'], - monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', + monthNamesShort: ['Јан','Фев','Мар','Апр','Мај','Јун', 'Јул','Авг','Сеп','Окт','Ное','Дек'], dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'], dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'], -- cgit v1.2.3 From adbc2733bbd4d4c117dd2e0f31d5156e2913bfd1 Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 22 Mar 2012 13:17:17 -0400 Subject: Tabs: Wrap attribute value in quotes when querying. Fixes #8207 - Tabs: Error with href selector. --- ui/jquery.ui.tabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js index ba48c3770..c9300e69b 100644 --- a/ui/jquery.ui.tabs.js +++ b/ui/jquery.ui.tabs.js @@ -434,7 +434,7 @@ $.widget( "ui.tabs", { // meta-function to give users option to provide a href string instead of a numerical index. // also sanitizes numerical indexes to valid values. if ( typeof index == "string" ) { - index = this.anchors.index( this.anchors.filter( "[href$=" + index + "]" ) ); + index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); } return index; -- cgit v1.2.3 From 0370170b2f97146b32f19b3c693c011d4efe99e3 Mon Sep 17 00:00:00 2001 From: Hans Hillen Date: Tue, 27 Mar 2012 10:19:35 -0400 Subject: Accordion: Fixed ARIA support and added proper keyboard support. --- tests/unit/accordion/accordion_core.js | 56 ++++++++++++++------ ui/jquery.ui.accordion.js | 96 +++++++++++++++++++++++++++------- 2 files changed, 119 insertions(+), 33 deletions(-) diff --git a/tests/unit/accordion/accordion_core.js b/tests/unit/accordion/accordion_core.js index de1b66046..0d756c97c 100644 --- a/tests/unit/accordion/accordion_core.js +++ b/tests/unit/accordion/accordion_core.js @@ -25,24 +25,50 @@ test( "handle click on header-descendant", function() { }); test( "accessibility", function () { - expect( 13 ); - var element = $( "#list1" ).accordion().accordion( "option", "active", 1 ); + expect( 37 ); + var element = $( "#list1" ).accordion({ + active: 1 + }); var headers = element.find( ".ui-accordion-header" ); - equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header should have tabindex=0" ); - equal( headers.eq( 0 ).attr( "tabindex" ), -1, "inactive header should have tabindex=-1" ); - equal( element.attr( "role" ), "tablist", "main role" ); - equal( headers.attr( "role" ), "tab", "tab roles" ); - equal( headers.next().attr( "role" ), "tabpanel", "tabpanel roles" ); - equal( headers.eq( 1 ).attr( "aria-expanded" ), "true", "active tab has aria-expanded" ); - equal( headers.eq( 0 ).attr( "aria-expanded" ), "false", "inactive tab has aria-expanded" ); - equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab has aria-selected" ); - equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "inactive tab has aria-selected" ); + equal( element.attr( "role" ), "tablist", "element role" ); + headers.each(function( i ) { + var header = headers.eq( i ), + panel = header.next(); + equal( header.attr( "role" ), "tab", "header " + i + " role" ); + equal( header.attr( "aria-controls" ), panel.attr( "id" ), "header " + i + " aria-controls" ); + equal( panel.attr( "role" ), "tabpanel", "panel " + i + " role" ); + equal( panel.attr( "aria-labelledby" ), header.attr( "id" ), "panel " + i + " aria-labelledby" ); + }); + + equal( headers.eq( 1 ).attr( "tabindex" ), 0, "active header has tabindex=0" ); + equal( headers.eq( 1 ).attr( "aria-selected" ), "true", "active tab has aria-selected=true" ); + equal( headers.eq( 1 ).next().attr( "aria-expanded" ), "true", "active tabpanel has aria-expanded=true" ); + equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "false", "active tabpanel has aria-hidden=false" ); + equal( headers.eq( 0 ).attr( "tabindex" ), -1, "active header has tabindex=-1" ); + equal( headers.eq( 0 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" ); + equal( headers.eq( 0 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" ); + equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" ); + equal( headers.eq( 2 ).attr( "tabindex" ), -1, "active header has tabindex=-1" ); + equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" ); + equal( headers.eq( 2 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" ); + equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" ); + element.accordion( "option", "active", 0 ); - equal( headers.eq( 0 ).attr( "aria-expanded" ), "true", "newly active tab has aria-expanded" ); - equal( headers.eq( 1 ).attr( "aria-expanded" ), "false", "newly inactive tab has aria-expanded" ); - equal( headers.eq( 0 ).attr( "aria-selected" ), "true", "active tab has aria-selected" ); - equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "inactive tab has aria-selected" ); + equal( headers.eq( 0 ).attr( "tabindex" ), 0, "active header has tabindex=0" ); + equal( headers.eq( 0 ).attr( "aria-selected" ), "true", "active tab has aria-selected=true" ); + equal( headers.eq( 0 ).next().attr( "aria-expanded" ), "true", "active tabpanel has aria-expanded=true" ); + equal( headers.eq( 0 ).next().attr( "aria-hidden" ), "false", "active tabpanel has aria-hidden=false" ); + equal( headers.eq( 1 ).attr( "tabindex" ), -1, "active header has tabindex=-1" ); + equal( headers.eq( 1 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" ); + equal( headers.eq( 1 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" ); + equal( headers.eq( 1 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" ); + equal( headers.eq( 2 ).attr( "tabindex" ), -1, "active header has tabindex=-1" ); + equal( headers.eq( 2 ).attr( "aria-selected" ), "false", "active tab has aria-selected=false" ); + equal( headers.eq( 2 ).next().attr( "aria-expanded" ), "false", "active tabpanel has aria-expanded=false" ); + equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" ); }); +// TODO: keyboard support + }( jQuery ) ); diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index 2200732ac..2e68889ef 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -12,6 +12,7 @@ * jquery.ui.widget.js */ (function( $, undefined ) { + var uid = 0; $.widget( "ui.accordion", { version: "@VERSION", @@ -33,7 +34,9 @@ $.widget( "ui.accordion", { }, _create: function() { - var options = this.options; + var accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid), + options = this.options; this.prevShow = this.prevHide = $(); this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ); @@ -68,18 +71,36 @@ $.widget( "ui.accordion", { this.headers .attr( "role", "tab" ) + .each(function( i ) { + var header = $( this ), + headerId = header.attr( "id" ), + panel = header.next(), + panelId = panel.attr( "id" ); + if ( !headerId ) { + headerId = accordionId + "-header-" + i; + header.attr( "id", headerId ); + } + if ( !panelId ) { + panelId = accordionId + "-panel-" + i; + panel.attr( "id", panelId ); + } + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + }) .next() .attr( "role", "tabpanel" ); this.headers .not( this.active ) .attr({ - // TODO: document support for each of these - "aria-expanded": "false", "aria-selected": "false", tabIndex: -1 }) .next() + .attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }) .hide(); // make sure at least one header is in the tab order @@ -87,10 +108,14 @@ $.widget( "ui.accordion", { this.headers.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active.attr({ - "aria-expanded": "true", "aria-selected": "true", tabIndex: 0 - }); + }) + .next() + .attr({ + "aria-expanded": "true", + "aria-hidden": "false" + }); } this._setupEvents( options.event ); @@ -124,6 +149,8 @@ $.widget( "ui.accordion", { }, _destroy: function() { + var accordionId = this.accordionId; + // clean up main element this.element .removeClass( "ui-accordion ui-widget ui-helper-reset" ) @@ -131,19 +158,31 @@ $.widget( "ui.accordion", { // clean up headers this.headers - .unbind( ".accordion" ) .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) .removeAttr( "role" ) - .removeAttr( "aria-expanded" ) .removeAttr( "aria-selected" ) - .removeAttr( "tabIndex" ); + .removeAttr( "aria-controls" ) + .removeAttr( "tabIndex" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); this._destroyIcons(); // clean up content panels var contents = this.headers.next() .css( "display", "" ) .removeAttr( "role" ) - .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ); + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-labelledby" ) + .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); if ( this.options.heightStyle !== "content" ) { this.element.css( "height", this.originalHeight ); contents.css( "height", "" ); @@ -208,6 +247,13 @@ $.widget( "ui.accordion", { case keyCode.SPACE: case keyCode.ENTER: this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; } if ( toFocus ) { @@ -218,6 +264,12 @@ $.widget( "ui.accordion", { } }, + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + refresh: function() { var heightStyle = this.options.heightStyle, parent = this.element.parent(), @@ -305,6 +357,9 @@ $.widget( "ui.accordion", { }); } this._bind( this.headers, events ); + this._bind( this.headers.next(), { + keydown: "_panelKeyDown" + }); }, _eventHandler: function( event ) { @@ -382,21 +437,26 @@ $.widget( "ui.accordion", { this._toggleComplete( data ); } - // TODO assert that the blur and focus triggers are really necessary, remove otherwise - toHide.prev() + toHide .attr({ "aria-expanded": "false", - "aria-selected": "false", - tabIndex: -1 + "aria-hidden": "true" }) - .blur(); - toShow.prev() + .prev() + .attr({ + "aria-selected": "false", + tabIndex: -1 + }); + toShow .attr({ "aria-expanded": "true", - "aria-selected": "true", - tabIndex: 0 + "aria-hidden": "false" }) - .focus(); + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0 + }); }, _animate: function( toShow, toHide, data ) { -- cgit v1.2.3 From a709943a8b6ce83ae258e1532c2dfc6a39d27fc2 Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 27 Mar 2012 14:46:13 -0400 Subject: Datepicker tests: Use $.ui.keyCode instead of $.simulate.VK_*. --- tests/unit/datepicker/datepicker_core.js | 96 ++++++++++++++--------------- tests/unit/datepicker/datepicker_events.js | 36 +++++------ tests/unit/datepicker/datepicker_options.js | 94 ++++++++++++++-------------- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/tests/unit/datepicker/datepicker_core.js b/tests/unit/datepicker/datepicker_core.js index b674c708a..bbc447ffe 100644 --- a/tests/unit/datepicker/datepicker_core.js +++ b/tests/unit/datepicker/datepicker_core.js @@ -235,132 +235,132 @@ test('keystrokes', function() { var inp = init('#inp'); var date = new Date(); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Keystroke enter'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 4), 'Keystroke enter - preset'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.HOME}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Keystroke ctrl+home'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END}); ok(inp.datepicker('getDate') == null, 'Keystroke ctrl+end'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); ok(inp.datepicker('getDate') == null, 'Keystroke esc'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 4), 'Keystroke esc - preset'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 4), 'Keystroke esc - abandoned'); // Moving by day or week inp.val('').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_LEFT}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.LEFT}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 1); equalsDate(inp.datepicker('getDate'), date, 'Keystroke ctrl+left'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_LEFT}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.LEFT}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 1); equalsDate(inp.datepicker('getDate'), date, 'Keystroke left'); inp.val('').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_RIGHT}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.RIGHT}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 1); equalsDate(inp.datepicker('getDate'), date, 'Keystroke ctrl+right'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_RIGHT}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.RIGHT}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 1); equalsDate(inp.datepicker('getDate'), date, 'Keystroke right'); inp.val('').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_UP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 7); equalsDate(inp.datepicker('getDate'), date, 'Keystroke ctrl+up'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_UP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 7); equalsDate(inp.datepicker('getDate'), date, 'Keystroke up'); inp.val('').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 7); equalsDate(inp.datepicker('getDate'), date, 'Keystroke ctrl+down'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_DOWN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 7); equalsDate(inp.datepicker('getDate'), date, 'Keystroke down'); // Moving by month or year inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 1 - 1, 4), 'Keystroke pgup'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 3 - 1, 4), 'Keystroke pgdn'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2007, 2 - 1, 4), 'Keystroke ctrl+pgup'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2009, 2 - 1, 4), 'Keystroke ctrl+pgdn'); // Check for moving to short months inp.val('03/31/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 29), 'Keystroke pgup - Feb'); inp.val('01/30/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 29), 'Keystroke pgdn - Feb'); inp.val('02/29/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2007, 2 - 1, 28), 'Keystroke ctrl+pgup - Feb'); inp.val('02/29/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2009, 2 - 1, 28), 'Keystroke ctrl+pgdn - Feb'); // Goto current inp.datepicker('option', {gotoCurrent: true}). datepicker('hide').val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.HOME}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 2 - 1, 4), 'Keystroke ctrl+home'); // Change steps inp.datepicker('option', {stepMonths: 2, gotoCurrent: false}). datepicker('hide').val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2007, 12 - 1, 4), 'Keystroke pgup step 2'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), new Date(2008, 4 - 1, 4), 'Keystroke pgdn step 2'); }); diff --git a/tests/unit/datepicker/datepicker_events.js b/tests/unit/datepicker/datepicker_events.js index fc312216f..9876b7e60 100644 --- a/tests/unit/datepicker/datepicker_events.js +++ b/tests/unit/datepicker/datepicker_events.js @@ -26,24 +26,24 @@ test('events', function() { var date = new Date(); // onSelect inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(selectedThis, inp[0], 'Callback selected this'); equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback selected inst'); equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date), 'Callback selected date'); inp.val('').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_DOWN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 7); equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date), 'Callback selected date - ctrl+down'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date), 'Callback selected date - esc'); var dateStr = '02/04/2008'; inp.val(dateStr).datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(dateStr, selectedDate, 'onSelect is called after enter keydown'); // onChangeMonthYear @@ -54,25 +54,25 @@ test('events', function() { }; date = new Date(); date.setDate(1); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGUP}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP}); date.setMonth(date.getMonth() - 1); equal(selectedThis, inp[0], 'Callback change month/year this'); equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback change month/year inst'); equal(selectedDate, newMonthYear(date), 'Callback change month/year date - pgup'); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}); date.setMonth(date.getMonth() + 1); equal(selectedDate, newMonthYear(date), 'Callback change month/year date - pgdn'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}); date.setFullYear(date.getFullYear() - 1); equal(selectedDate, newMonthYear(date), 'Callback change month/year date - ctrl+pgup'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_HOME}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.HOME}); date.setFullYear(date.getFullYear() + 1); equal(selectedDate, newMonthYear(date), 'Callback change month/year date - ctrl+home'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}); date.setFullYear(date.getFullYear() + 1); equal(selectedDate, newMonthYear(date), 'Callback change month/year date - ctrl+pgdn'); @@ -84,38 +84,38 @@ test('events', function() { // onChangeMonthYear step by 2 inp.datepicker('option', {stepMonths: 2}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_PGUP}); + simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP}); date.setMonth(date.getMonth() - 14); equal(selectedDate, newMonthYear(date), 'Callback change month/year by 2 date - pgup'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}); date.setMonth(date.getMonth() - 12); equal(selectedDate, newMonthYear(date), 'Callback change month/year by 2 date - ctrl+pgup'); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}); date.setMonth(date.getMonth() + 2); equal(selectedDate, newMonthYear(date), 'Callback change month/year by 2 date - pgdn'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}); date.setMonth(date.getMonth() + 12); equal(selectedDate, newMonthYear(date), 'Callback change month/year by 2 date - ctrl+pgdn'); // onClose inp.datepicker('option', {onClose: callback, onChangeMonthYear: null, stepMonths: 1}). val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equal(selectedThis, inp[0], 'Callback close this'); equal(selectedInst, $.data(inp[0], PROP_NAME), 'Callback close inst'); equal(selectedDate, '', 'Callback close date - esc'); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', new Date()), 'Callback close date - enter'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equal(selectedDate, '02/04/2008', 'Callback close date - preset'); inp.val('02/04/2008').datepicker('show'). - simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END}); + simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END}); equal(selectedDate, '', 'Callback close date - ctrl+end'); var inp2 = init('#inp2'); diff --git a/tests/unit/datepicker/datepicker_options.js b/tests/unit/datepicker/datepicker_options.js index bab6ed45a..f538c6d03 100644 --- a/tests/unit/datepicker/datepicker_options.js +++ b/tests/unit/datepicker/datepicker_options.js @@ -77,7 +77,7 @@ test('invocation', function() { ok(image.length == 0, 'Focus - image absent'); inp.focus(); ok(dp.is(':visible'), 'Focus - rendered on focus'); - inp.simulate('keydown', {keyCode: $.simulate.VK_ESC}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); ok(!dp.is(':visible'), 'Focus - hidden on exit'); inp.focus(); ok(dp.is(':visible'), 'Focus - rendered on focus'); @@ -161,93 +161,93 @@ test('defaultDate', function() { var inp = init('#inp'); var date = new Date(); inp.val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Default date null'); // Numeric values inp.datepicker('option', {defaultDate: -2}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 2); equalsDate(inp.datepicker('getDate'), date, 'Default date -2'); inp.datepicker('option', {defaultDate: 3}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 5); equalsDate(inp.datepicker('getDate'), date, 'Default date 3'); inp.datepicker('option', {defaultDate: 1 / 0}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 3); equalsDate(inp.datepicker('getDate'), date, 'Default date Infinity'); inp.datepicker('option', {defaultDate: 1 / 'a'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Default date NaN'); // String offset values inp.datepicker('option', {defaultDate: '-1d'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() - 1); equalsDate(inp.datepicker('getDate'), date, 'Default date -1d'); inp.datepicker('option', {defaultDate: '+3D'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 4); equalsDate(inp.datepicker('getDate'), date, 'Default date +3D'); inp.datepicker('option', {defaultDate: ' -2 w '}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = new Date(); date.setDate(date.getDate() - 14); equalsDate(inp.datepicker('getDate'), date, 'Default date -2 w'); inp.datepicker('option', {defaultDate: '+1 W'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setDate(date.getDate() + 21); equalsDate(inp.datepicker('getDate'), date, 'Default date +1 W'); inp.datepicker('option', {defaultDate: ' -1 m '}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = addMonths(new Date(), -1); equalsDate(inp.datepicker('getDate'), date, 'Default date -1 m'); inp.datepicker('option', {defaultDate: '+2M'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = addMonths(new Date(), 2); equalsDate(inp.datepicker('getDate'), date, 'Default date +2M'); inp.datepicker('option', {defaultDate: '-2y'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = new Date(); date.setFullYear(date.getFullYear() - 2); equalsDate(inp.datepicker('getDate'), date, 'Default date -2y'); inp.datepicker('option', {defaultDate: '+1 Y '}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date.setFullYear(date.getFullYear() + 3); equalsDate(inp.datepicker('getDate'), date, 'Default date +1 Y'); inp.datepicker('option', {defaultDate: '+1M +10d'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = addMonths(new Date(), 1); date.setDate(date.getDate() + 10); equalsDate(inp.datepicker('getDate'), date, 'Default date +1M +10d'); // String date values inp.datepicker('option', {defaultDate: '07/04/2007'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = new Date(2007, 7 - 1, 4); equalsDate(inp.datepicker('getDate'), date, 'Default date 07/04/2007'); inp.datepicker('option', {dateFormat: 'yy-mm-dd', defaultDate: '2007-04-02'}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); date = new Date(2007, 4 - 1, 2); equalsDate(inp.datepicker('getDate'), date, 'Default date 2007-04-02'); // Date value date = new Date(2007, 1 - 1, 26); inp.datepicker('option', {dateFormat: 'mm/dd/yy', defaultDate: date}). datepicker('hide').val('').datepicker('show'). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Default date 01/26/2007'); }); @@ -293,7 +293,7 @@ test('miscellaneous', function() { longNames[date.getMonth()], 'Navigation current - as date format'); equal(dp.find('.ui-datepicker-next').text(), shortNames[2] + ' >', 'Navigation next - as date format'); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}); equal(dp.find('.ui-datepicker-prev').text(), '< ' + shortNames[1], 'Navigation prev - as date format + pgdn'); equal(dp.find('.ui-datepicker-current').text(), @@ -317,46 +317,46 @@ test('minMax', function() { var minDate = new Date(2008, 2 - 1, 29); var maxDate = new Date(2008, 12 - 1, 7); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), lastYear, 'Min/max - null, null - ctrl+pgup'); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), nextYear, 'Min/max - null, null - ctrl+pgdn'); inp.datepicker('option', {minDate: minDate}). datepicker('hide').val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), minDate, 'Min/max - 02/29/2008, null - ctrl+pgup'); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), nextYear, 'Min/max - 02/29/2008, null - ctrl+pgdn'); inp.datepicker('option', {maxDate: maxDate}). datepicker('hide').val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), minDate, 'Min/max - 02/29/2008, 12/07/2008 - ctrl+pgup'); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), maxDate, 'Min/max - 02/29/2008, 12/07/2008 - ctrl+pgdn'); inp.datepicker('option', {minDate: null}). datepicker('hide').val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), lastYear, 'Min/max - null, 12/07/2008 - ctrl+pgup'); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), maxDate, 'Min/max - null, 12/07/2008 - ctrl+pgdn'); // Relative dates @@ -364,15 +364,15 @@ test('minMax', function() { date.setDate(date.getDate() - 7); inp.datepicker('option', {minDate: '-1w', maxDate: '+1 M +10 D '}). datepicker('hide').val('').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGUP}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Min/max - -1w, +1 M +10 D - ctrl+pgup'); date = addMonths(new Date(), 1); date.setDate(date.getDate() + 10); inp.val('').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equalsDate(inp.datepicker('getDate'), date, 'Min/max - -1w, +1 M +10 D - ctrl+pgdn'); // With existing date @@ -477,34 +477,34 @@ test('altField', function() { // No alternate field set alt.val(''); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(inp.val(), '06/04/2008', 'Alt field - dp - enter'); equal(alt.val(), '', 'Alt field - alt not set'); // Alternate field set alt.val(''); inp.datepicker('option', {altField: '#alt', altFormat: 'yy-mm-dd'}). val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(inp.val(), '06/04/2008', 'Alt field - dp - enter'); equal(alt.val(), '2008-06-04', 'Alt field - alt - enter'); // Move from initial date alt.val(''); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); equal(inp.val(), '07/04/2008', 'Alt field - dp - pgdn'); equal(alt.val(), '2008-07-04', 'Alt field - alt - pgdn'); // Alternate field set - closed alt.val(''); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {keyCode: $.simulate.VK_PGDN}). - simulate('keydown', {keyCode: $.simulate.VK_ESC}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN}). + simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE}); equal(inp.val(), '06/04/2008', 'Alt field - dp - pgdn/esc'); equal(alt.val(), '', 'Alt field - alt - pgdn/esc'); // Clear date and alternate alt.val(''); inp.val('06/04/2008').datepicker('show'); - inp.simulate('keydown', {ctrlKey: true, keyCode: $.simulate.VK_END}); + inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END}); equal(inp.val(), '', 'Alt field - dp - ctrl+end'); equal(alt.val(), '', 'Alt field - alt - ctrl+end'); @@ -725,7 +725,7 @@ test('localisation', function() { 'Localisation - day ' + day); day = (day + 1) % 7; }); - inp.simulate('keydown', {keyCode: $.simulate.VK_ENTER}); + inp.simulate('keydown', {keyCode: $.ui.keyCode.ENTER}); var date = new Date(); equal(inp.val(), $.datepicker.regional['fr'].dayNames[date.getDay()] + ', ' + date.getDate() + ' ' + $.datepicker.regional['fr'].monthNames[date.getMonth()] + -- cgit v1.2.3 From 6634e4005368ded31dce50de7095ed0f8835637c Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 27 Mar 2012 16:49:05 -0400 Subject: Accordion: Fixed post-init changes to event option and added tests for keyboard support. --- tests/unit/accordion/accordion.html | 2 +- tests/unit/accordion/accordion_core.js | 42 +++++++++++++++++++++++++- tests/unit/accordion/accordion_deprecated.html | 2 +- ui/jquery.ui.accordion.js | 21 ++++++------- 4 files changed, 53 insertions(+), 14 deletions(-) diff --git a/tests/unit/accordion/accordion.html b/tests/unit/accordion/accordion.html index 109b3094e..5c9169ea3 100644 --- a/tests/unit/accordion/accordion.html +++ b/tests/unit/accordion/accordion.html @@ -66,7 +66,7 @@

your bear, you have to admit it!
- No, we aren't selling bears. + No, we aren't selling bears.

We could talk about renting one. diff --git a/tests/unit/accordion/accordion_core.js b/tests/unit/accordion/accordion_core.js index 0d756c97c..92d79c121 100644 --- a/tests/unit/accordion/accordion_core.js +++ b/tests/unit/accordion/accordion_core.js @@ -69,6 +69,46 @@ test( "accessibility", function () { equal( headers.eq( 2 ).next().attr( "aria-hidden" ), "true", "active tabpanel has aria-hidden=true" ); }); -// TODO: keyboard support +asyncTest( "keybaord support", function() { + expect( 13 ); + var element = $( "#list1" ).accordion(), + headers = element.find( ".ui-accordion-header" ), + anchor = headers.eq( 1 ).next().find( "a" ).eq( 0 ), + keyCode = $.ui.keyCode; + equal( headers.filter( ".ui-state-focus" ).length, 0, "no headers focused on init" ); + headers.eq( 0 ).simulate( "focus" ); + setTimeout(function() { + ok( headers.eq( 0 ).is( ".ui-state-focus" ), "first header has focus" ); + headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.DOWN } ); + ok( headers.eq( 1 ).is( ".ui-state-focus" ), "DOWN moves focus to next header" ); + headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.RIGHT } ); + ok( headers.eq( 2 ).is( ".ui-state-focus" ), "RIGHT moves focus to next header" ); + headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.DOWN } ); + ok( headers.eq( 0 ).is( ".ui-state-focus" ), "DOWN wraps focus to first header" ); + + headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.UP } ); + ok( headers.eq( 2 ).is( ".ui-state-focus" ), "UP wraps focus to last header" ); + headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.LEFT } ); + ok( headers.eq( 1 ).is( ".ui-state-focus" ), "LEFT moves focus to previous header" ); + + headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.HOME } ); + ok( headers.eq( 0 ).is( ".ui-state-focus" ), "HOME moves focus to first header" ); + headers.eq( 0 ).simulate( "keydown", { keyCode: keyCode.END } ); + ok( headers.eq( 2 ).is( ".ui-state-focus" ), "END moves focus to last header" ); + + headers.eq( 2 ).simulate( "keydown", { keyCode: keyCode.ENTER } ); + equal( element.accordion( "option", "active" ) , 2, "ENTER activates panel" ); + headers.eq( 1 ).simulate( "keydown", { keyCode: keyCode.SPACE } ); + equal( element.accordion( "option", "active" ), 1, "SPACE activates panel" ); + + anchor.simulate( "focus" ); + setTimeout(function() { + ok( !headers.eq( 1 ).is( ".ui-state-focus" ), "header loses focus when focusing inside the panel" ); + anchor.simulate( "keydown", { keyCode: keyCode.UP, ctrlKey: true } ); + ok( headers.eq( 1 ).is( ".ui-state-focus" ), "CTRL+UP moves focus to header" ); + start(); + }, 1 ); + }, 1 ); +}); }( jQuery ) ); diff --git a/tests/unit/accordion/accordion_deprecated.html b/tests/unit/accordion/accordion_deprecated.html index 583c1adcd..116eb43b5 100644 --- a/tests/unit/accordion/accordion_deprecated.html +++ b/tests/unit/accordion/accordion_deprecated.html @@ -64,7 +64,7 @@

your bear, you have to admit it!
- No, we aren't selling bears. + No, we aren't selling bears.

We could talk about renting one. diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index 2e68889ef..ba8fa5e44 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -118,6 +118,8 @@ $.widget( "ui.accordion", { }); } + this._bind( this.headers, { keydown: "_keydown" }); + this._bind( this.headers.next(), { keydown: "_panelKeyDown" }); this._setupEvents( options.event ); }, @@ -198,7 +200,8 @@ $.widget( "ui.accordion", { if ( key === "event" ) { if ( this.options.event ) { - this.headers.unbind( ".accordion" ); + this.headers.unbind( + this.options.event.split( " " ).join( ".accordion " ) + ".accordion" ); } this._setupEvents( value ); } @@ -348,18 +351,14 @@ $.widget( "ui.accordion", { }, _setupEvents: function( event ) { - var events = { - keydown: "_keydown" - }; - if ( event ) { - $.each( event.split(" "), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - }); + var events = {}; + if ( !event ) { + return; } - this._bind( this.headers, events ); - this._bind( this.headers.next(), { - keydown: "_panelKeyDown" + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; }); + this._bind( this.headers, events ); }, _eventHandler: function( event ) { -- cgit v1.2.3 From 4a6692a57aa156dcaa916af66b36f767a25e37c3 Mon Sep 17 00:00:00 2001 From: Scott González Date: Tue, 27 Mar 2012 18:05:51 -0400 Subject: Accordion: Added animation tests. --- tests/unit/accordion/accordion_options.js | 170 +++++++++++++++++++++++++++++- 1 file changed, 169 insertions(+), 1 deletion(-) diff --git a/tests/unit/accordion/accordion_options.js b/tests/unit/accordion/accordion_options.js index 74a9a3177..2b7176394 100644 --- a/tests/unit/accordion/accordion_options.js +++ b/tests/unit/accordion/accordion_options.js @@ -75,7 +75,175 @@ if ( $.uiBackCompat === false ) { }); } -// TODO: add animation tests +test( "{ animate: false }", function() { + expect( 3 ); + var element = $( "#list1" ).accordion({ + animate: false + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + $.fn.animate = function() { + ok( false, ".animate() called" ); + }; + + ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 1 ); + ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; +}); + +asyncTest( "{ animate: Number }", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + animate: 100 + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, 100, "correct duration" ); + equal( easing, undefined, "default easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 1 ); + panels.promise().done(function() { + ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); + +asyncTest( "{ animate: String }", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + animate: "linear" + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, undefined, "default duration" ); + equal( easing, "linear", "correct easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 1 ); + panels.promise().done(function() { + ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); + +asyncTest( "{ animate: {} }", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + animate: {} + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, undefined, "default duration" ); + equal( easing, undefined, "default easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 1 ); + panels.promise().done(function() { + ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); + +asyncTest( "{ animate: { duration, easing } }", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + animate: { duration: 100, easing: "linear" } + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, 100, "correct duration" ); + equal( easing, "linear", "correct easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 1 ); + panels.promise().done(function() { + ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); + +asyncTest( "{ animate: { duration, easing } }, animate down", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + active: 1, + animate: { duration: 100, easing: "linear" } + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, 100, "correct duration" ); + equal( easing, "linear", "correct easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 0 ); + panels.promise().done(function() { + ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); + +asyncTest( "{ animate: { duration, easing, down } }, animate down", function() { + expect( 7 ); + var element = $( "#list1" ).accordion({ + active: 1, + animate: { + duration: 100, + easing: "linear", + down: { + easing: "swing" + } + } + }), + panels = element.find( ".ui-accordion-content" ); + animate = $.fn.animate; + // called twice (both panels) + $.fn.animate = function( props, duration, easing ) { + equal( duration, 100, "correct duration" ); + equal( easing, "swing", "correct easing" ); + animate.apply( this, arguments ); + }; + + ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" ); + element.accordion( "option", "active", 0 ); + panels.promise().done(function() { + ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" ); + ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" ); + $.fn.animate = animate; + start(); + }); +}); test( "{ collapsible: false }", function() { expect( 4 ); -- cgit v1.2.3 From a1f88869ab6127249271b661d61c8eb93b0f1417 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 28 Mar 2012 18:50:22 +0200 Subject: Tagging 1.9m7 --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 13c1a7371..7601988c1 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.9pre +1.9m7 -- cgit v1.2.3 From 68135431295d27f421eedacbb08296db441950a5 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Wed, 28 Mar 2012 18:50:57 +0200 Subject: Bump version --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 7601988c1..13c1a7371 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.9m7 +1.9pre -- cgit v1.2.3 From a51451dc1b19bf6c2e10b1648b57d006bf38c303 Mon Sep 17 00:00:00 2001 From: "Amir E. Aharoni" Date: Thu, 29 Mar 2012 09:51:43 -0400 Subject: Datepicker: Fixed nextText, prevText, and Sunday and split words onto multiple lines for readability. Fixes #8225 - Datepicker: Incorrect values in Persian localization. --- ui/i18n/jquery.ui.datepicker-fa.js | 50 ++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/ui/i18n/jquery.ui.datepicker-fa.js b/ui/i18n/jquery.ui.datepicker-fa.js index 1d7fbd23c..be8acd2a5 100644 --- a/ui/i18n/jquery.ui.datepicker-fa.js +++ b/ui/i18n/jquery.ui.datepicker-fa.js @@ -4,15 +4,51 @@ jQuery(function($) { $.datepicker.regional['fa'] = { closeText: 'بستن', - prevText: '<قبلي', - nextText: 'بعدي>', + prevText: '<قبلی', + nextText: 'بعدی>', currentText: 'امروز', - monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور', - 'مهر','آبان','آذر','دي','بهمن','اسفند'], + monthNames: [ + 'فروردين', + 'ارديبهشت', + 'خرداد', + 'تير', + 'مرداد', + 'شهريور', + 'مهر', + 'آبان', + 'آذر', + 'دی', + 'بهمن', + 'اسفند' + ], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], - dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], - dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'], - dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'], + dayNames: [ + 'يکشنبه', + 'دوشنبه', + 'سه‌شنبه', + 'چهارشنبه', + 'پنجشنبه', + 'جمعه', + 'شنبه' + ], + dayNamesShort: [ + 'ی', + 'د', + 'س', + 'چ', + 'پ', + 'ج', + 'ش' + ], + dayNamesMin: [ + 'ی', + 'د', + 'س', + 'چ', + 'پ', + 'ج', + 'ش' + ], weekHeader: 'هف', dateFormat: 'yy/mm/dd', firstDay: 6, -- cgit v1.2.3 From 56de22eeadb5882ad1d78a207b9fb69247e233ee Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 29 Mar 2012 18:36:38 -0400 Subject: Tooltip: Avoid infinite recursion when disabling a tooltip on close. --- ui/jquery.ui.tooltip.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js index eddd9a0c9..dd0a746d3 100644 --- a/ui/jquery.ui.tooltip.js +++ b/ui/jquery.ui.tooltip.js @@ -173,6 +173,12 @@ $.widget( "ui.tooltip", { target = $( event ? event.currentTarget : this.element ), tooltip = this._find( target ); + // disabling closes the tooltip, so we need to track when we're closing + // to avoid an infinite loop in case the tooltip becomes disabled on close + if ( this.closing ) { + return; + } + // don't close if the element has focus // this prevents the tooltip from closing if you hover while focused if ( !force && this.document[0].activeElement === target[0] ) { @@ -195,7 +201,9 @@ $.widget( "ui.tooltip", { target.removeData( "tooltip-open" ); target.unbind( "mouseleave.tooltip focusout.tooltip keyup.tooltip" ); + this.closing = true; this._trigger( "close", event, { tooltip: tooltip } ); + this.closing = false; }, _tooltip: function( element ) { -- cgit v1.2.3 From 45a5a24dfe6322cfeb047a2aed566c824f401307 Mon Sep 17 00:00:00 2001 From: Scott González Date: Fri, 30 Mar 2012 09:06:06 -0400 Subject: Tooltip: Store the title in ui-tooltip-title data only if the element has a title. --- ui/jquery.ui.tooltip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js index dd0a746d3..23b3a9b71 100644 --- a/ui/jquery.ui.tooltip.js +++ b/ui/jquery.ui.tooltip.js @@ -99,7 +99,7 @@ $.widget( "ui.tooltip", { return; } - if ( !target.data( "ui-tooltip-title" ) ) { + if ( target.attr( "title" ) ) { target.data( "ui-tooltip-title", target.attr( "title" ) ); } -- cgit v1.2.3 From 48e5c853f995a825dd9d14cd2d8f592037f8505c Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 2 Apr 2012 10:44:51 +0300 Subject: Datepicker: Changed German translation for weekHeader to "KW". Fixes #8231 - Provide a better German translation for the week header. --- ui/i18n/jquery.ui.datepicker-de.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/i18n/jquery.ui.datepicker-de.js b/ui/i18n/jquery.ui.datepicker-de.js index 52d6c82ce..cfe91759b 100644 --- a/ui/i18n/jquery.ui.datepicker-de.js +++ b/ui/i18n/jquery.ui.datepicker-de.js @@ -13,7 +13,7 @@ jQuery(function($){ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], - weekHeader: 'Wo', + weekHeader: 'KW', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, -- cgit v1.2.3