Calendar: Do not rebuild whole calendar when selecting date

This commit is contained in:
Felix Nagel 2015-12-03 18:16:40 +01:00
parent 7ac903b076
commit 3cf5308917

View File

@ -99,7 +99,7 @@ return $.widget( "ui.calendar", {
},
"mousedown .ui-calendar-calendar button": function( event ) {
this._setOption( "value", new Date( $( event.currentTarget ).data( "timestamp" ) ) );
this.refresh();
this._updateDayElement( "ui-state-active" );
// Allow datepicker to handle focus
if ( this._trigger( "select", event ) !== false ) {
@ -180,25 +180,29 @@ return $.widget( "ui.calendar", {
// Check if the needed day is already present in our grid due
// to eachDay option changes (eg. other-months demo)
return !this.grid.find(
"#" + $.ui.escapeSelector( this._getDayId( this.date ) )
).length;
return !this._getDateElement( this._getDayId( this.date ) ).length;
}
return false;
},
_setActiveDescendant: function() {
this.activeDescendant = this._updateDayElement( "ui-state-focus" );
},
_updateDayElement: function( state ) {
var id = this._getDayId( this.date );
this.grid
.attr( "aria-activedescendant", id )
.find( ".ui-state-focus" )
.removeClass( "ui-state-focus" );
.find( "button." + state )
.removeClass( state );
this.activeDescendant = this.grid.find(
"#" + $.ui.escapeSelector( id ) + " > button"
).addClass( "ui-state-focus" );
return this._getDateElement( id ).children( "button" ).addClass( state );
},
_getDateElement: function( id ) {
return this.grid.find( "#" + $.ui.escapeSelector( id ) );
},
_setLocale: function( locale, dateFormat ) {
@ -518,7 +522,7 @@ return $.widget( "ui.calendar", {
refresh: function() {
this.labels = this.options.labels;
// Determine which day gridcell to focus after refresh
// Determine which day grid cell to focus after refresh
// TODO: Prevent disabled cells from being focused
if ( this.options.numberOfMonths === 1 ) {
this.element.find( ".ui-calendar-title" ).html( this._buildTitle() );