123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- define("dojox/form/DateTextBox", [
- "dojo/_base/kernel",
- "dojo/_base/lang",
- "dojo/dom-style",
- "dojox/widget/Calendar",
- "dojox/widget/CalendarViews",
- "dijit/form/_DateTimeTextBox",
- "dijit/form/TextBox",
- "dojo/_base/declare"
- ], function(kernel, lang, domStyle, Calendar, CalendarViews, _DateTimeTextBox, TextBox, declare){
- kernel.experimental("dojox.form.DateTextBox");
- /*=====
- _DateTimeTextBox = dijit.form._DateTimeTextBox;
- =====*/
- var DateTextBox = declare( "dojox.form.DateTextBox", _DateTimeTextBox,
- {
- // summary:
- // A validating, serializable, range-bound date text box with a popup calendar
- // popupClass: String
- // The popup widget to use. In this case, a calendar with Day, Month and Year views.
- popupClass: "dojox.widget.Calendar",
- _selector: "date",
- openDropDown: function(){
- this.inherited(arguments);
- domStyle.set(this.dropDown.domNode.parentNode, "position", "absolute");
- }
- }
- );
- declare( "dojox.form.DayTextBox", DateTextBox,
- {
- // summary:
- // A validating, serializable, range-bound date text box with a popup calendar that contains just months.
- // popupClass: String
- // The popup widget to use. In this case, a calendar with just a Month view.
- popupClass: "dojox.widget.DailyCalendar",
- parse: function(displayVal){
- return displayVal;
- },
- format: function(value){
- return value.getDate ? value.getDate() : value;
- },
- validator: function(value){
- var num = Number(value);
- var isInt = /(^-?\d\d*$)/.test(String(value));
- return value == "" || value == null || (isInt && num >= 1 && num <= 31);
- },
- _setValueAttr: function(value, priorityChange, formattedValue){
- if(value){
- if(value.getDate){
- value = value.getDate();
- }
- }
- TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
- },
- openDropDown: function(){
- this.inherited(arguments);
- this.dropDown.onValueSelected = lang.hitch(this, function(value){
- this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
- setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take
- TextBox.prototype._setValueAttr.call(this, String(value.getDate()), true, String(value.getDate()));
- });
- }
- }
- );
- declare( "dojox.form.MonthTextBox", DateTextBox,
- {
- // summary:
- // A validating, serializable, range-bound date text box with a popup calendar that contains only years
- // popupClass: String
- // The popup widget to use. In this case, a calendar with just a Year view.
- popupClass: "dojox.widget.MonthlyCalendar",
- selector: "date",
- postMixInProperties: function(){
- this.inherited(arguments);
- this.constraints.datePattern = "MM";
- },
- format: function(value){
- if(!value && value !== 0){
- return 1;
- }
- if(value.getMonth){
- return value.getMonth() + 1;
- }
- return Number(value) + 1;
- },
- parse: function(value, constraints){
- return Number(value) - 1;
- },
- serialize: function(value, constraints){
- return String(value);
- },
- validator: function(value){
- var num = Number(value);
- var isInt = /(^-?\d\d*$)/.test(String(value));
- return value == "" || value == null || (isInt && num >= 1 && num <= 12);
- },
- _setValueAttr: function(value, priorityChange, formattedValue){
- if(value){
- if(value.getMonth){
- value = value.getMonth();
- }
- }
- TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
- },
- openDropDown: function(){
- this.inherited(arguments);
- this.dropDown.onValueSelected = lang.hitch(this, function(value){
- this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
- setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take
- TextBox.prototype._setValueAttr.call(this, value, true, value);
- });
- }
- }
- );
- declare( "dojox.form.YearTextBox", DateTextBox,
- {
- // summary:
- // A validating, serializable, range-bound date text box with a popup calendar that contains only years
- popupClass: "dojox.widget.YearlyCalendar",
- format: function(value){
- //console.log('Year format ' + value);
- if(typeof value == "string"){
- return value;
- }
- else if(value.getFullYear){
- return value.getFullYear();
- }
- return value;
- },
- validator: function(value){
- return value == "" || value == null || /(^-?\d\d*$)/.test(String(value));
- },
- _setValueAttr: function(value, priorityChange, formattedValue){
- if(value){
- if(value.getFullYear){
- value = value.getFullYear();
- }
- }
- TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
- },
- openDropDown: function(){
- this.inherited(arguments);
- //console.log('yearly openDropDown and value = ' + this.get('value'));
- this.dropDown.onValueSelected = lang.hitch(this, function(value){
- this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
- setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take
- TextBox.prototype._setValueAttr.call(this,value, true, value);
- });
- },
- parse: function(/*String*/value, /*dojo.date.locale.__FormatOptions*/constraints){
- return value || (this._isEmpty(value) ? null : undefined); // Date
- },
- filter: function(val){
- if(val && val.getFullYear){
- return val.getFullYear().toString();
- }
- return this.inherited(arguments);
- }
- }
- );
- return DateTextBox;
- });
|