196 lines
5.3 KiB
JavaScript
196 lines
5.3 KiB
JavaScript
|
//>>built
|
||
|
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;
|
||
|
});
|