r2593 - datepicker: added keycode constants. added backwards compatibility so we don't break old ...
Author: pazu2k@gmail.com
Date: Wed May 20 23:28:46 2009
New Revision: 2593
Modified:
branches/dev/datepicker/ui/ui.datepicker.js
Log:
datepicker: added keycode constants. added backwards compatibility so we
don't break old code. and more refactoring.
Modified: branches/dev/datepicker/ui/ui.datepicker.js
==============================================================================
--- branches/dev/datepicker/ui/ui.datepicker.js (original)
+++ branches/dev/datepicker/ui/ui.datepicker.js Wed May 20 23:28:46 2009
@@ -59,14 +59,10 @@
self.dpDiv = $('<div id="' + self._mainDivId + '" class="ui-datepicker
ui-widget ui-widget-content ui-helper-clearfix ui-corner-all
ui-helper-hidden-accessible"></div>');
- // Initialise the date picker.
- if (!self.initialized) {
- $(document).mousedown(function(event){ self._checkExternalClick(event);
})
- .find('body')
- .append(self.dpDiv);
- self.initialized = true;
- }
-
+ $(document).mousedown(function(event){ self._checkExternalClick(event);
})
+ .find('body')
+ .append(self.dpDiv);
+
self._attachDatepicker(self.element[0],o);
},
@@ -79,14 +75,6 @@
console.log.apply('', arguments);
},
- /* Override the default settings for all instances of the date picker.
- @param settings object - the new settings to use as defaults
(anonymous object)
- @return the manager object */
- setDefaults: function(settings) {
- extendRemove(this._defaults, settings || {});
- return this;
- },
-
/* Attach the date picker to a jQuery selection.
@param target element - the target input field or division or span
@param settings object - the new settings to use for this date
picker instance (anonymous) */
@@ -130,7 +118,7 @@
/* Attach the date picker to an input field. */
_connectDatepicker: function(target, inst) {
- var self = this, input = $(target);
+ var self = this, input = $(target);
inst.append = $([]);
inst.trigger = $([]);
if (input.hasClass(this.markerClassName))
@@ -415,14 +403,15 @@
var self = this,
inst = self._getInst(event.target),
handled = true,
- isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
+ isRTL = inst.dpDiv.is('.ui-datepicker-rtl'),
+ KEYS = $.ui.keyCode;
inst._keyEvent = true;
if (self._datepickerShowing)
switch (event.keyCode) {
- case 9: self._hideDatepicker(null, '');
+ case KEYS.TAB: self._hideDatepicker(null, '');
break; // hide on tab out
- case 13: var sel = $('td.' + self._dayOverClass +
+ case KEYS.ENTER: var sel = $('td.' + self._dayOverClass +
', td.' + self._currentClass, inst.dpDiv);
if (sel[0])
self._selectDay(event.target, inst.selectedMonth,
inst.selectedYear, sel[0]);
@@ -430,23 +419,23 @@
self._hideDatepicker(null, self._get(inst, 'duration'));
return false; // don't submit the form
break; // select the value on enter
- case 27: self._hideDatepicker(null, self._get(inst, 'duration'));
+ case KEYS.ESCAPE: self._hideDatepicker(null,
self._get(inst, 'duration'));
break; // hide on escape
- case 33: self._adjustDate(event.target, (event.ctrlKey ?
+ case KEYS.PAGE_UP: self._adjustDate(event.target, (event.ctrlKey ?
-self._get(inst, 'stepBigMonths') :
-self._get(inst, 'stepMonths')), 'M');
break; // previous month/year on page up/+ ctrl
- case 34: self._adjustDate(event.target, (event.ctrlKey ?
+ case KEYS.PAGE_DOWN: self._adjustDate(event.target, (event.ctrlKey ?
+self._get(inst, 'stepBigMonths') :
+self._get(inst, 'stepMonths')), 'M');
break; // next month/year on page down/+ ctrl
- case 35: if (event.ctrlKey || event.metaKey)
self._clearDate(event.target);
+ case KEYS.END: if (event.ctrlKey || event.metaKey)
self._clearDate(event.target);
handled = event.ctrlKey || event.metaKey;
break; // clear on ctrl or command +end
- case 36: if (event.ctrlKey || event.metaKey)
self._gotoToday(event.target);
+ case KEYS.HOME: if (event.ctrlKey || event.metaKey)
self._gotoToday(event.target);
handled = event.ctrlKey || event.metaKey;
break; // current on ctrl or command +home
- case 37: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
+ case KEYS.LEFT: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
handled = event.ctrlKey || event.metaKey;
// -1 day on ctrl or command +left
if (event.originalEvent.altKey) self._adjustDate(event.target,
(event.ctrlKey ?
@@ -454,10 +443,10 @@
-self._get(inst, 'stepMonths')), 'M');
// next month/year on alt +left on Mac
break;
- case 38: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, -7, 'D');
+ case KEYS.UP: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, -7, 'D');
handled = event.ctrlKey || event.metaKey;
break; // -1 week on ctrl or command +up
- case 39: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
+ case KEYS.RIGHT: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
handled = event.ctrlKey || event.metaKey;
// +1 day on ctrl or command +right
if (event.originalEvent.altKey) self._adjustDate(event.target,
(event.ctrlKey ?
@@ -465,12 +454,12 @@
+self._get(inst, 'stepMonths')), 'M');
// next month/year on alt +right
break;
- case 40: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, +7, 'D');
+ case KEYS.DOWN: if (event.ctrlKey || event.metaKey)
self._adjustDate(event.target, +7, 'D');
handled = event.ctrlKey || event.metaKey;
break; // +1 week on ctrl or command +down
default: handled = false;
}
- else if (event.keyCode == 36 && event.ctrlKey) // display the date
picker on ctrl+home
+ else if (event.keyCode == KEYS.HOME && event.ctrlKey) // display the
date picker on ctrl+home
self._showDatepicker(this);
else {
handled = false;
@@ -1177,7 +1166,7 @@
/* Get a setting value, defaulting if necessary. */
_get: function(inst, name) {
return inst.settings[name] !== undefined ?
- inst.settings[name] : this._defaults[name];
+ inst.settings[name] : this.options[name];
},
/* Parse existing date and initialise date picker. */
@@ -1603,7 +1592,20 @@
this._daylightSavingAdjust(new Date(year, month, day))) :
this._daylightSavingAdjust(new Date(inst.currentYear,
inst.currentMonth, inst.currentDay)));
return this.formatDate(this._get(inst, 'dateFormat'), date,
this._getFormatConfig(inst));
- }
+ },
+
+ destroy: function() {
+
+ this.element.removeClass('hasDatepicker');
+
+ $.widget.prototype.destroy.apply(this, arguments);
+ },
+
+ _setData: function(key, value) {
+
+ $.widget.prototype._setData.apply(this, arguments);
+ }
+
});
$.extend($.ui.datepicker, {
@@ -1651,8 +1653,19 @@
altField: '', // Selector for an alternate field to store selected dates
into
altFormat: '', // The date format to use for the alternate field
constrainInput: true, // The input is constrained by the current date
format
- showButtonPanel: false // True to show button panel, false to not show
it
- }
+ showButtonPanel: false, // True to show button panel, false to not show
it
+ },
+
+ /* Override the default settings for all instances of the date picker.
+ @param settings object - the new settings to use as defaults
(anonymous object)
+ @return the manager object */
+ setDefaults: function(settings) {
+ extendRemove(this.defaults, settings || {});
+ return this;
+ },
+
+ uuid: new Date().getTime(),
+ regional: []
});
/* jQuery extend now ignores nulls! */
@@ -1670,7 +1683,7 @@
(a.constructor && a.constructor.toString().match(/\Array\(\)/))));
};
-$.ui.datepicker.initialized = false;
-$.ui.datepicker.uuid = new Date().getTime();
+// For backwards compatibility
+$.datepicker = $.ui.datepicker;
})(jQuery);