diff --git a/tests/unit/calendar/common.js b/tests/unit/calendar/common.js index ea637a9b8d0..1f3a0fe215b 100644 --- a/tests/unit/calendar/common.js +++ b/tests/unit/calendar/common.js @@ -37,6 +37,7 @@ common.testWidget( "calendar", { // callbacks change: null, create: null, + refresh: null, select: null } } ); diff --git a/tests/unit/calendar/events.js b/tests/unit/calendar/events.js index 59508cb8a00..7148ff343a9 100644 --- a/tests/unit/calendar/events.js +++ b/tests/unit/calendar/events.js @@ -12,12 +12,12 @@ QUnit.module( "calendar: events", { } ); QUnit.test( "change", function( assert ) { - assert.expect( 6 ); + assert.expect( 8 ); var shouldFire, eventType; this.element.calendar( { - change: function( event ) { + change: function( event, ui ) { assert.ok( shouldFire, "change event fired" ); assert.equal( event.type, @@ -29,6 +29,7 @@ QUnit.test( "change", function( assert ) { eventType, "change originalEvent on calendar button " + eventType ); + assert.equal( $.type( ui.value ), "date", "value is a date object" ); } } ); @@ -48,14 +49,14 @@ QUnit.test( "change", function( assert ) { } ); QUnit.test( "select", function( assert ) { - assert.expect( 6 ); + assert.expect( 8 ); var ready = assert.async(), that = this, message, eventType; this.element.calendar( { - select: function( event ) { + select: function( event, ui ) { assert.ok( true, "select event fired " + message ); assert.equal( event.type, @@ -67,6 +68,7 @@ QUnit.test( "select", function( assert ) { eventType, "select originalEvent " + message ); + assert.equal( $.type( ui.value ), "date", "value is a date object" ); } } ); @@ -96,4 +98,26 @@ QUnit.test( "select", function( assert ) { step1(); } ); +QUnit.test( "refresh", function( assert ) { + assert.expect( 2 ); + + var shouldFire; + + this.element.calendar( { + refresh: function() { + assert.ok( shouldFire, "refresh event fired" ); + } + } ); + + shouldFire = true; + this.element.find( "button.ui-calendar-next" ).simulate( "click" ); + + shouldFire = false; + this.element.find( "table button:eq(1)" ).simulate( "click" ); + + testHelper.focusGrid( this.element ).simulate( "keydown", { keyCode: $.ui.keyCode.END } ); + shouldFire = true; + testHelper.focusGrid( this.element ).simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); +} ); + } ); diff --git a/tests/unit/datepicker/common.js b/tests/unit/datepicker/common.js index 527ddcbf341..6b0b0487dca 100644 --- a/tests/unit/datepicker/common.js +++ b/tests/unit/datepicker/common.js @@ -46,6 +46,7 @@ common.testWidget( "datepicker", { close: null, create: null, open: null, + refresh: null, select: null } } ); diff --git a/tests/unit/datepicker/events.js b/tests/unit/datepicker/events.js index 05ae7ed4d98..5a923d252fe 100644 --- a/tests/unit/datepicker/events.js +++ b/tests/unit/datepicker/events.js @@ -44,18 +44,19 @@ QUnit.test( "beforeOpen", function( assert ) { } ); QUnit.test( "change", function( assert ) { - assert.expect( 4 ); + assert.expect( 6 ); var shouldFire; this.element.datepicker( { - change: function( event ) { + change: function( event, ui ) { assert.ok( shouldFire, "change event fired" ); assert.equal( event.type, "datepickerchange", "change event" ); + assert.equal( $.type( ui.value ), "date", "value is a date object" ); } } ); @@ -121,19 +122,20 @@ QUnit.test( "open", function( assert ) { QUnit.test( "select", function( assert ) { var ready = assert.async(); - assert.expect( 4 ); + assert.expect( 6 ); var message = "", that = this; this.element.datepicker( { - select: function( event ) { + select: function( event, ui ) { assert.ok( true, "select event fired " + message ); assert.equal( event.originalEvent.type, "calendarselect", "select originalEvent " + message ); + assert.equal( $.type( ui.value ), "date", "value is a date object" ); } } ); @@ -178,4 +180,22 @@ QUnit.test( "select", function( assert ) { step1(); } ); +QUnit.test( "refresh", function( assert ) { + assert.expect( 1 ); + + var shouldFire; + + this.element.calendar( { + refresh: function() { + assert.ok( shouldFire, "refresh event fired" ); + } + } ); + + shouldFire = true; + this.element.find( "button.ui-calendar-next" ).simulate( "click" ); + + shouldFire = false; + this.element.find( "table button:eq(1)" ).simulate( "click" ); +} ); + } ); diff --git a/ui/widgets/calendar.js b/ui/widgets/calendar.js index 538230bb681..31a650d0ec2 100644 --- a/ui/widgets/calendar.js +++ b/ui/widgets/calendar.js @@ -73,6 +73,7 @@ return $.widget( "ui.calendar", { // callbacks change: null, + refresh: null, select: null }, @@ -134,13 +135,13 @@ return $.widget( "ui.calendar", { this._updateDayElement( "ui-state-active" ); // Allow datepicker to handle focus - if ( this._trigger( "select", event ) !== false ) { + if ( this._trigger( "select", event, { value: this.options.value } ) !== false ) { this.activeDescendant.closest( this.grid ).focus(); event.preventDefault(); } if ( oldValue !== this.options.value.getTime() ) { - this._trigger( "change", event ); + this._trigger( "change", event, { value: this.options.value } ); } }, @@ -595,6 +596,8 @@ return $.widget( "ui.calendar", { this._setActiveDescendant(); this._refreshHeaderButtons(); this._createButtons(); + + this._trigger( "refresh" ); }, _refreshHeaderButtons: function() { diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js index b489fe9b7ef..48926ff72b4 100644 --- a/ui/widgets/datepicker.js +++ b/ui/widgets/datepicker.js @@ -55,11 +55,12 @@ var widget = $.widget( "ui.datepicker", { change: null, close: null, open: null, + refresh: null, select: null }, calendarOptions: [ "buttons", "classes", "disabled", "dateFormat", "eachDay", - "icons", "labels", "locale", "max", "min", "numberOfMonths", "showWeek" ], + "icons", "labels", "locale", "max", "min", "numberOfMonths", "showWeek", "refresh" ], _create: function() { this.suppressExpandOnFocus = false; @@ -111,14 +112,18 @@ var widget = $.widget( "ui.datepicker", { .calendar( $.extend( {}, this.options, { value: this._parse( this.element.val() ), change: function( event ) { - that._trigger( "change", event ); + that._trigger( "change", event, { + value: that.calendarInstance.valueAsDate() + } ); }, select: function( event ) { that.element.val( that.calendarInstance.value() ); that.close(); event.preventDefault(); that._focusTrigger(); - that._trigger( "select", event ); + that._trigger( "select", event, { + value: that.calendarInstance.valueAsDate() + } ); return false; } @@ -183,7 +188,9 @@ var widget = $.widget( "ui.datepicker", { this.suppressExpandOnFocus = false; }, change: function( event ) { - this._trigger( "change", event ); + this._trigger( "change", event, { + value: this.calendarInstance.valueAsDate() + } ); } },