Skip to content

Commit 339e7fe

Browse files
authored
feat(calendar): avoid unnecessary redraw
Whenever a calendar popup is shown the calendar gets redrawn several times even if nothing was changed!
1 parent 580d79b commit 339e7fe

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/definitions/modules/calendar.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ $.fn.calendar = function(parameters) {
157157
var onShow = function () {
158158
//reset the focus date onShow
159159
module.set.focusDate(module.get.date());
160-
module.set.mode(settings.startMode);
160+
module.set.mode(module.get.validatedMode(settings.startMode));
161161
return settings.onShow.apply($container, arguments);
162162
};
163163
var on = module.setting('on');
@@ -197,6 +197,7 @@ $.fn.calendar = function(parameters) {
197197
date = parser.date($input.val(), settings);
198198
}
199199
module.set.date(date, settings.formatInput, false);
200+
module.set.mode(module.get.mode(), false);
200201
}
201202
},
202203

@@ -622,6 +623,9 @@ $.fn.calendar = function(parameters) {
622623
mode: function () {
623624
//only returns valid modes for the current settings
624625
var mode = $module.data(metadata.mode) || settings.startMode;
626+
return module.get.validatedMode(mode);
627+
},
628+
validatedMode: function(mode){
625629
var validModes = module.get.validModes();
626630
if ($.inArray(mode, validModes) >= 0) {
627631
return mode;
@@ -739,7 +743,7 @@ $.fn.calendar = function(parameters) {
739743
module.set.monthOffset(monthOffset, false);
740744
}
741745
}
742-
var changed = module.set.dataKeyValue(metadata.focusDate, date, refreshCalendar);
746+
var changed = module.set.dataKeyValue(metadata.focusDate, date, !!date && refreshCalendar);
743747
updateFocus = (updateFocus !== false && changed && refreshCalendar === false) || focusDateUsedForRange != updateRange;
744748
focusDateUsedForRange = updateRange;
745749
if (updateFocus) {

0 commit comments

Comments
 (0)