From e6e51042a1606a05c5875c5943829e7ff3cec513 Mon Sep 17 00:00:00 2001 From: leon Date: Tue, 16 Apr 2024 11:40:24 +0800 Subject: [PATCH] add editable option to bootstrap DateField --- Roo/bootstrap/form/DateField.js | 9 +++++++++ roojs-bootstrap-debug.js | 9 +++++++++ roojs-bootstrap.js | 10 +++++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Roo/bootstrap/form/DateField.js b/Roo/bootstrap/form/DateField.js index 0304545619..41bcff4ca1 100644 --- a/Roo/bootstrap/form/DateField.js +++ b/Roo/bootstrap/form/DateField.js @@ -98,6 +98,11 @@ Roo.extend(Roo.bootstrap.form.DateField, Roo.bootstrap.form.Input, { singleMode : false, hiddenField : false, + + /** + * @cfg {Boolean} editable False to prevent the user from typing text directly into the field (defaults to true) + */ + editable: true, UTCDate: function() { @@ -285,6 +290,10 @@ Roo.extend(Roo.bootstrap.form.DateField, Roo.bootstrap.form.Input, { ); this.inputEl().dom.setAttribute('name', this.name + '____hidden___'); + if(!this.editable) { + this.inputEl().dom.setAttribute('readOnly', true); + } + }, picker : function() diff --git a/roojs-bootstrap-debug.js b/roojs-bootstrap-debug.js index 324da9ac57..09230325ee 100644 --- a/roojs-bootstrap-debug.js +++ b/roojs-bootstrap-debug.js @@ -23187,6 +23187,11 @@ Roo.extend(Roo.bootstrap.form.DateField, Roo.bootstrap.form.Input, { singleMode : false, hiddenField : false, + + /** + * @cfg {Boolean} editable False to prevent the user from typing text directly into the field (defaults to true) + */ + editable: true, UTCDate: function() { @@ -23374,6 +23379,10 @@ Roo.extend(Roo.bootstrap.form.DateField, Roo.bootstrap.form.Input, { ); this.inputEl().dom.setAttribute('name', this.name + '____hidden___'); + if(!this.editable) { + this.inputEl().dom.setAttribute('readOnly', true); + } + }, picker : function() diff --git a/roojs-bootstrap.js b/roojs-bootstrap.js index aba83bed0a..6b8586fa6a 100644 --- a/roojs-bootstrap.js +++ b/roojs-bootstrap.js @@ -975,7 +975,7 @@ if(this.active&&tg.bullets>0&&ithis.startX){A.showPanelPrev();return;}if(this.startX>this.endX){A.showPanelNext();return;}}}); // Roo/bootstrap/form/DateField.js -Roo.bootstrap.form.DateField=function(A){Roo.bootstrap.form.DateField.superclass.constructor.call(this,A);this.addEvents({show:true,hide:true,select:true,beforeselect:true});};Roo.extend(Roo.bootstrap.form.DateField,Roo.bootstrap.form.Input,{format:"m/d/y",weekStart:0,viewMode:'',minViewMode:'',todayHighlight:false,todayBtn:false,language:'en',keyboardNavigation:true,calendarWeeks:false,startDate:-Infinity,endDate:Infinity,daysOfWeekDisabled:[],_events:[],singleMode:false,hiddenField:false,UTCDate:function(){return new Date(Date.UTC.apply(Date,arguments)); +Roo.bootstrap.form.DateField=function(A){Roo.bootstrap.form.DateField.superclass.constructor.call(this,A);this.addEvents({show:true,hide:true,select:true,beforeselect:true});};Roo.extend(Roo.bootstrap.form.DateField,Roo.bootstrap.form.Input,{format:"m/d/y",weekStart:0,viewMode:'',minViewMode:'',todayHighlight:false,todayBtn:false,language:'en',keyboardNavigation:true,calendarWeeks:false,startDate:-Infinity,endDate:Infinity,daysOfWeekDisabled:[],_events:[],singleMode:false,hiddenField:false,editable:true,UTCDate:function(){return new Date(Date.UTC.apply(Date,arguments)); },UTCToday:function(){var A=new Date();return this.UTCDate(A.getUTCFullYear(),A.getUTCMonth(),A.getUTCDate());},getDate:function(){var d=this.getUTCDate();return new Date(d.getTime()+(d.getTimezoneOffset()*60000));},getUTCDate:function(){return this.date; },setDate:function(d){this.setUTCDate(new Date(d.getTime()-(d.getTimezoneOffset()*60000)));},setUTCDate:function(d){this.date=d;this.setValue(this.date);},translateDates:function(A){var B=Roo.bootstrap.form.DateField.dates[A]={days:[],daysShort:[],daysMin:[],months:[],monthsShort:[]} ;var C=A.replace('_','-');var D=['zh-hk','zh-cn','jp','ko'].indexOf(C.toLowerCase())<0;for(var i=0;i<7;i++){var E=new Date(2020,0,5+i);var F=new Intl.DateTimeFormat(C,{weekday:'long'}).format(E);var G=new Intl.DateTimeFormat(C,{weekday:'short'}).format(E); @@ -987,10 +987,10 @@ break;case 'years':this.viewMode=2;break;default:this.viewMode=0;break;}}this.pi this.picker().on('click',this.onClick,this);this.picker().addClass('datepicker-dropdown');this.startViewMode=this.viewMode;if(this.singleMode){Roo.each(this.picker().select('thead > tr > th',true).elements,function(v){v.setVisibilityMode(Roo.Element.DISPLAY); v.hide();});Roo.each(this.picker().select('tbody > tr > td',true).elements,function(v){v.setStyle('width','189px');});}Roo.each(this.picker().select('tfoot th.today',true).elements,function(v){v.dom.innerHTML=Roo.bootstrap.form.DateField.todayText;});this.weekEnd=this.weekStart===0?6:this.weekStart-1; this.setStartDate(this.startDate);this.setEndDate(this.endDate);this.setDaysOfWeekDisabled(this.daysOfWeekDisabled);this.fillDow();this.fillMonths();this.update();this.showMode();if(this.isInline){this.showPopup();}this.hiddenField=this.inputEl().insertSibling({tag:'input',type:'hidden',name:this.name} -,'before',true);this.inputEl().dom.setAttribute('name',this.name+'____hidden___');},picker:function(){return this.pickerEl;},fillDow:function(){var A=this.weekStart;var B={tag:'tr',cn:[]};while(A.datepicker-days thead',true).first().createChild(B);},fillMonths:function(){var i=0;var A=this.picker().select('>.datepicker-months td',true).first();A.dom.innerHTML='';while(i<12){var B={tag:'span',cls:'month',html:Roo.bootstrap.form.DateField.dates[this.language].monthsShort[i++]} -;A.createChild(B);}},update:function(){this.date=(typeof(this.date)==='undefined'||((typeof(this.date)==='string')&&!this.date.length))?this.UTCToday():(typeof(this.date)==='string')?this.parseDate(this.date):this.date;if(this.datethis.endDate){this.viewDate=new Date(this.endDate);}else{this.viewDate=new Date(this.date);}this.fill();},fill:function(){var d=new Date(this.viewDate),A=d.getUTCFullYear(),B=d.getUTCMonth(),C=this.startDate!==-Infinity?this.startDate.getUTCFullYear():-Infinity,D=this.startDate!==-Infinity?this.startDate.getUTCMonth():-Infinity,E=this.endDate!==Infinity?this.endDate.getUTCFullYear():Infinity,F=this.endDate!==Infinity?this.endDate.getUTCMonth():Infinity,G=this.date&&this.date.valueOf(),H=this.UTCToday(); +,'before',true);this.inputEl().dom.setAttribute('name',this.name+'____hidden___');if(!this.editable){this.inputEl().dom.setAttribute('readOnly',true);}},picker:function(){return this.pickerEl;},fillDow:function(){var A=this.weekStart;var B={tag:'tr',cn:[]} +;while(A.datepicker-days thead',true).first().createChild(B);},fillMonths:function(){var i=0;var A=this.picker().select('>.datepicker-months td',true).first(); +A.dom.innerHTML='';while(i<12){var B={tag:'span',cls:'month',html:Roo.bootstrap.form.DateField.dates[this.language].monthsShort[i++]};A.createChild(B);}},update:function(){this.date=(typeof(this.date)==='undefined'||((typeof(this.date)==='string')&&!this.date.length))?this.UTCToday():(typeof(this.date)==='string')?this.parseDate(this.date):this.date; +if(this.datethis.endDate){this.viewDate=new Date(this.endDate);}else{this.viewDate=new Date(this.date);}this.fill();},fill:function(){var d=new Date(this.viewDate),A=d.getUTCFullYear(),B=d.getUTCMonth(),C=this.startDate!==-Infinity?this.startDate.getUTCFullYear():-Infinity,D=this.startDate!==-Infinity?this.startDate.getUTCMonth():-Infinity,E=this.endDate!==Infinity?this.endDate.getUTCFullYear():Infinity,F=this.endDate!==Infinity?this.endDate.getUTCMonth():Infinity,G=this.date&&this.date.valueOf(),H=this.UTCToday(); this.picker().select('>.datepicker-days thead th.switch',true).first().dom.innerHTML=Roo.bootstrap.form.DateField.dates[this.language].months[B]+' '+A;this.updateNavArrows();this.fillMonths();var I=this.UTCDate(A,B-1,28,0,0,0,0),J=I.getDaysInMonth(I.getUTCFullYear(),I.getUTCMonth()); I.setUTCDate(J);I.setUTCDate(J-(I.getUTCDay()-this.weekStart+7)%7);var K=new Date(I);K.setUTCDate(K.getUTCDate()+42);K=K.valueOf();var L=false;this.picker().select('>.datepicker-days tbody',true).first().dom.innerHTML='';while(I.valueOf()<=K){var M='';if(I.getUTCDay()===this.weekStart){if(L){this.picker().select('>.datepicker-days tbody',true).first().createChild(L); }L={tag:'tr',cn:[]};}if(I.getUTCFullYear()A||(I.getUTCFullYear()==A&&I.getUTCMonth()>B)){M+=' new';}if(this.todayHighlight&&I.getUTCFullYear()==H.getFullYear()&&I.getUTCMonth()==H.getMonth()&&I.getUTCDate()==H.getDate()){M+=' today'; -- 2.39.2