diff options
author | Felix Nagel <info@felixnagel.com> | 2016-12-12 00:15:46 +0100 |
---|---|---|
committer | Felix Nagel <info@felixnagel.com> | 2017-01-25 18:29:45 +0100 |
commit | 188550faff8baefff96e36b4094ad7fd00c91c45 (patch) | |
tree | 3ebbabc4f8ecf047a1cfa03acf8a1cf2421693b9 | |
parent | 00a470b435608940c4d829e91d00b587294af0eb (diff) | |
download | jquery-ui-188550faff8baefff96e36b4094ad7fd00c91c45.tar.gz jquery-ui-188550faff8baefff96e36b4094ad7fd00c91c45.zip |
Calendar: Make sure option numberOfMonth could be changed after creation
-rw-r--r-- | tests/unit/calendar/options.js | 16 | ||||
-rw-r--r-- | ui/widgets/calendar.js | 14 |
2 files changed, 18 insertions, 12 deletions
diff --git a/tests/unit/calendar/options.js b/tests/unit/calendar/options.js index c77841359..abfbaf016 100644 --- a/tests/unit/calendar/options.js +++ b/tests/unit/calendar/options.js @@ -278,13 +278,10 @@ QUnit.test( "numberOfMonths", function( assert ) { var date = new Date( 2015, 8 - 1, 1 ); - // Number of month option does not work after init - this.element - .calendar( "destroy" ) - .calendar( { - numberOfMonths: 3, - value: date - } ); + this.element.calendar( "option", { + numberOfMonths: 3, + value: date + } ); assert.equal( this.widget.find( ".ui-calendar-group" ).length, 3, "3 calendar grids" ); assert.equal( @@ -304,10 +301,7 @@ QUnit.test( "numberOfMonths", function( assert ) { "After mousedown last month: Last day is Saturday" ); - // Test if using cursor to go to the next / prev month advances three month - // Focus doesn't work here so we use an additional mouse down event - this.widget.find( "tbody:first td[id]:first button" ).trigger( "mousedown" ); - $( document.activeElement ).simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); + this.widget.find( "button.ui-calendar-prev" ).simulate( "click" ); assert.equal( this.widget.find( ".ui-calendar-month:first" ).text(), "May", "After move to previous month: First month is May" ); diff --git a/ui/widgets/calendar.js b/ui/widgets/calendar.js index 256347054..4bac6c326 100644 --- a/ui/widgets/calendar.js +++ b/ui/widgets/calendar.js @@ -703,12 +703,16 @@ return $.widget( "ui.calendar", { _setOptions: function( options ) { var that = this, + create = false, refresh = false, dateAttributes = false; $.each( options, function( key, value ) { that._setOption( key, value ); + if ( key === "numberOfMonths" ) { + create = true; + } if ( key in that.refreshRelatedOptions ) { refresh = true; } @@ -722,8 +726,16 @@ return $.widget( "ui.calendar", { this.date.setAttributes( this._calendarDateOptions ); this.viewDate.setAttributes( this._calendarDateOptions ); } - if ( refresh ) { + if ( create || refresh ) { this.viewDate.setTime( this.date.date().getTime() ); + } + if ( create ) { + this.element.empty(); + this._removeClass( this.element, "ui-calendar-multi" ); + this._createCalendar(); + refresh = false; + } + if ( refresh ) { this.refresh(); } }, |