r2593 - datepicker: added keycode constants. added backwards compatibility so we don't break old ...

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);