Fix #6465 - drag drop for cards
[roojs1] / Roo / bootstrap / MonthField.js
index bcebf51..9348c26 100644 (file)
@@ -39,7 +39,8 @@ Roo.bootstrap.MonthField = function(config){
          * @event select
          * Fires when select a date.
          * @param {Roo.bootstrap.MonthField} this
-         * @param {Mixed} date The date value
+         * @param {String} oldvalue The old value
+         * @param {String} newvalue The new value
          */
         select : true
     });
@@ -47,8 +48,6 @@ Roo.bootstrap.MonthField = function(config){
 
 Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
     
-    format : "F",
-    
     onRender: function(ct, position)
     {
         
@@ -59,16 +58,12 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
         this.language = this.language in Roo.bootstrap.MonthField.dates ? this.language : "en";
         
         this.isRTL = Roo.bootstrap.MonthField.dates[this.language].rtl || false;
-        this.format = this.format || 'F';
         this.isInline = false;
         this.isInput = true;
         this.component = this.el.select('.add-on', true).first() || false;
         this.component = (this.component && this.component.length === 0) ? false : this.component;
         this.hasInput = this.component && this.inputEL().length;
         
-        this.minViewMode = 1;
-        this.viewMode = 1;
-                
         this.pickerEl = Roo.get(document.body).createChild(Roo.bootstrap.MonthField.template);
         
         this.picker().setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
@@ -78,27 +73,31 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
         
         this.picker().addClass('datepicker-dropdown');
         
-        this.startViewMode = this.viewMode;
-
         Roo.each(this.picker().select('tbody > tr > td', true).elements, function(v){
             v.setStyle('width', '189px');
         });
         
         this.fillMonths();
+        
         this.update();
         
         if(this.isInline) {
             this.show();
         }
+        
     },
     
-    setValue: function(v)
+    setValue: function(v, suppressEvent)
     {   
+        var o = this.getValue();
+        
         Roo.bootstrap.MonthField.superclass.setValue.call(this, v);
         
         this.update();
 
-        this.fireEvent('select', this, this.date);
+        if(suppressEvent !== true){
+            this.fireEvent('select', this, o, v);
+        }
         
     },
     
@@ -125,9 +124,11 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
         if(nodeName.toLowerCase() != 'span' || className.indexOf('disabled') > -1 || className.indexOf('month') == -1){
             return;
         }
-        var v = Roo.bootstrap.MonthField.dates[this.language].months[Roo.bootstrap.MonthField.dates[this.language].monthsShort.indexOf(html)];
-                
-        this.setValue(v);
+        
+        this.vIndex = Roo.bootstrap.MonthField.dates[this.language].monthsShort.indexOf(html);
+        
+        this.setValue(Roo.bootstrap.MonthField.dates[this.language].months[this.vIndex]);
+        
         this.hide();
                         
     },
@@ -139,7 +140,7 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
     
     fillMonths: function()
     {    
-        var i = 0
+        var i = 0;
         var months = this.picker().select('>.datepicker-months td', true).first();
         
         months.dom.innerHTML = '';
@@ -149,7 +150,7 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
                 tag: 'span',
                 cls: 'month',
                 html: Roo.bootstrap.MonthField.dates[this.language].monthsShort[i++]
-            }
+            };
             
             months.createChild(month);
         }
@@ -158,12 +159,26 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
     
     update: function()
     {
-        this.fill();
+        var _this = this;
+        
+        if(typeof(this.vIndex) == 'undefined' && this.value.length){
+            this.vIndex = Roo.bootstrap.MonthField.dates[this.language].months.indexOf(this.value);
+        }
+        
+        Roo.each(this.pickerEl.select('> .datepicker-months tbody > tr > td > span', true).elements, function(e, k){
+            e.removeClass('active');
+            
+            if(typeof(_this.vIndex) != 'undefined' && k == _this.vIndex){
+                e.addClass('active');
+            }
+        })
     },
     
     place: function()
     {
-        if(this.isInline) return;
+        if(this.isInline) {
+            return;
+        }
         
         this.picker().removeClass(['bottom', 'top']);
         
@@ -213,7 +228,9 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
     
     hide : function()
     {
-        if(this.isInline) return;
+        if(this.isInline) {
+            return;
+        }
         this.picker().hide();
         this.fireEvent('hide', this, this.date);
         
@@ -234,88 +251,85 @@ Roo.extend(Roo.bootstrap.MonthField, Roo.bootstrap.Input,  {
     fireKey: function(e)
     {
         if (!this.picker().isVisible()){
-            if (e.keyCode == 27) // allow escape to hide and re-show picker
+            if (e.keyCode == 27)   {// allow escape to hide and re-show picker
                 this.show();
+            }
             return;
         }
         
-        var dateChanged = false,
-        dir, day, month,
-        newDate, newViewDate;
-        
-//        switch(e.keyCode){
-//            case 27: // escape
-//                this.hide();
-//                e.preventDefault();
-//                break;
-//            case 37: // left
-//            case 39: // right
-//                if (!this.keyboardNavigation) break;
-//                dir = e.keyCode == 37 ? -1 : 1;
-//                
-//                if (e.ctrlKey){
-//                    newDate = this.moveYear(this.date, dir);
-//                    newViewDate = this.moveYear(this.viewDate, dir);
-//                } else if (e.shiftKey){
-//                    newDate = this.moveMonth(this.date, dir);
-//                    newViewDate = this.moveMonth(this.viewDate, dir);
-//                } else {
-//                    newDate = new Date(this.date);
-//                    newDate.setUTCDate(this.date.getUTCDate() + dir);
-//                    newViewDate = new Date(this.viewDate);
-//                    newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);
-//                }
-//                if (this.dateWithinRange(newDate)){
-//                    this.date = newDate;
-//                    this.viewDate = newViewDate;
-//                    this.setValue(this.formatDate(this.date));
-////                    this.update();
-//                    e.preventDefault();
-//                    dateChanged = true;
-//                }
-//                break;
-//            case 38: // up
-//            case 40: // down
-//                if (!this.keyboardNavigation) break;
-//                dir = e.keyCode == 38 ? -1 : 1;
-//                if (e.ctrlKey){
-//                    newDate = this.moveYear(this.date, dir);
-//                    newViewDate = this.moveYear(this.viewDate, dir);
-//                } else if (e.shiftKey){
-//                    newDate = this.moveMonth(this.date, dir);
-//                    newViewDate = this.moveMonth(this.viewDate, dir);
-//                } else {
-//                    newDate = new Date(this.date);
-//                    newDate.setUTCDate(this.date.getUTCDate() + dir * 7);
-//                    newViewDate = new Date(this.viewDate);
-//                    newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);
-//                }
-//                if (this.dateWithinRange(newDate)){
-//                    this.date = newDate;
-//                    this.viewDate = newViewDate;
-//                    this.setValue(this.formatDate(this.date));
-////                    this.update();
-//                    e.preventDefault();
-//                    dateChanged = true;
-//                }
-//                break;
-//            case 13: // enter
-//                this.setValue(this.formatDate(this.date));
-//                this.hide();
-//                e.preventDefault();
-//                break;
-//            case 9: // tab
-//                this.setValue(this.formatDate(this.date));
-//                this.hide();
-//                break;
-//            case 16: // shift
-//            case 17: // ctrl
-//            case 18: // alt
-//                break;
-//            default :
-//                this.hide();
-//                
-//        }
+        var dir;
+        
+        switch(e.keyCode){
+            case 27: // escape
+                this.hide();
+                e.preventDefault();
+                break;
+            case 37: // left
+            case 39: // right
+                dir = e.keyCode == 37 ? -1 : 1;
+                
+                this.vIndex = this.vIndex + dir;
+                
+                if(this.vIndex < 0){
+                    this.vIndex = 0;
+                }
+                
+                if(this.vIndex > 11){
+                    this.vIndex = 11;
+                }
+                
+                if(isNaN(this.vIndex)){
+                    this.vIndex = 0;
+                }
+                
+                this.setValue(Roo.bootstrap.MonthField.dates[this.language].months[this.vIndex]);
+                
+                break;
+            case 38: // up
+            case 40: // down
+                
+                dir = e.keyCode == 38 ? -1 : 1;
+                
+                this.vIndex = this.vIndex + dir * 4;
+                
+                if(this.vIndex < 0){
+                    this.vIndex = 0;
+                }
+                
+                if(this.vIndex > 11){
+                    this.vIndex = 11;
+                }
+                
+                if(isNaN(this.vIndex)){
+                    this.vIndex = 0;
+                }
+                
+                this.setValue(Roo.bootstrap.MonthField.dates[this.language].months[this.vIndex]);
+                break;
+                
+            case 13: // enter
+                
+                if(typeof(this.vIndex) != 'undefined' && !isNaN(this.vIndex)){
+                    this.setValue(Roo.bootstrap.MonthField.dates[this.language].months[this.vIndex]);
+                }
+                
+                this.hide();
+                e.preventDefault();
+                break;
+            case 9: // tab
+                if(typeof(this.vIndex) != 'undefined' && !isNaN(this.vIndex)){
+                    this.setValue(Roo.bootstrap.MonthField.dates[this.language].months[this.vIndex]);
+                }
+                this.hide();
+                break;
+            case 16: // shift
+            case 17: // ctrl
+            case 18: // alt
+                break;
+            default :
+                this.hide();
+                
+        }
     },
     
     remove: function()