dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
131 lines (110 loc) • 4.3 kB
JavaScript
define([
"dojo/_base/declare",
"dojo/dom-class",
"dojo/dom-attr",
"./_DatePickerMixin",
"./ValuePicker",
"./ValuePickerSlot"
], function(declare, domClass, domAttr, DatePickerMixin, ValuePicker, ValuePickerSlot){
// module:
// dojox/mobile/ValuePickerDatePicker
return declare("dojox.mobile.ValuePickerDatePicker", [ValuePicker, DatePickerMixin], {
// summary:
// A ValuePicker-based date picker widget.
// description:
// ValuePickerDatePicker is a date picker widget. It is a subclass of
// dojox/mobile/ValuePicker. It has 3 slots: day, month and year.
// readOnly: [const] Boolean
// If true, slot input fields are read-only. Only the plus and
// minus buttons can be used to change the values.
// Note that changing the value of the property after the widget
// creation has no effect.
readOnly: false,
// yearPlusBtnLabel: String
// (Accessibility) Label for year plus button
yearPlusBtnLabel: "",
// yearPlusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the year plus button
yearPlusBtnLabelRef: "",
// yearPlusBtnLabel: String
// (Accessibility) Label for year minus button
yearMinusBtnLabel: "",
// yearPlusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the year minus button
yearMinusBtnLabelRef: "",
// monthPlusBtnLabel: String
// (Accessibility) Label for month plus button
monthPlusBtnLabel: "",
// monthPlusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the month plus button
monthPlusBtnLabelRef: "",
// monthMinusBtnLabel: String
// (Accessibility) Label for month minus button
monthMinusBtnLabel: "",
// monthMinusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the month minus button
monthMinusBtnLabelRef: "",
// dayPlusBtnLabel: String
// (Accessibility) Label for day plus button
dayPlusBtnLabel: "",
// dayPlusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the day plus button
dayPlusBtnLabelRef: "",
// dayMinusBtnLabel: String
// (Accessibility) Label for day minus button
dayMinusBtnLabel: "",
// dayMinusBtnLabelRef: String
// (Accessibility) Reference to a node id containing text label for the day minus button
dayMinusBtnLabelRef: "",
slotClasses: [
ValuePickerSlot,
ValuePickerSlot,
ValuePickerSlot
],
slotProps: [
{labelFrom:1970, labelTo:2038, style:{width:"87px"}},
{style:{width:"72px"}},
{style:{width:"72px"}}
],
buildRendering: function(){
var p = this.slotProps;
p[0].readOnly = p[1].readOnly = p[2].readOnly = this.readOnly;
this._setBtnLabels(p);
this.initSlots();
this.inherited(arguments);
domClass.add(this.domNode, "mblValuePickerDatePicker");
this._conn = [
this.connect(this.slots[0], "_spinToValue", "_onYearSet"),
this.connect(this.slots[1], "_spinToValue", "_onMonthSet"),
this.connect(this.slots[2], "_spinToValue", "_onDaySet")
];
},
disableValues: function(/*Number*/daysInMonth){
// summary:
// Disables the end days of the month to match the specified
// number of days of the month.
var items = this.slots[2].items;
if(this._tail){
this.slots[2].items = items = items.concat(this._tail);
}
this._tail = items.slice(daysInMonth);
items.splice(daysInMonth);
},
_setBtnLabels: function(slotProps){
//summary:
// Set a11y labels on the plus/minus buttons
slotProps[0].plusBtnLabel = this.yearPlusBtnLabel;
slotProps[0].plusBtnLabelRef = this.yearPlusBtnLabelRef;
slotProps[0].minusBtnLabel = this.yearMinusBtnLabel;
slotProps[0].minusBtnLabelRef = this.yearMinusBtnLabelRef;
slotProps[1].plusBtnLabel = this.monthPlusBtnLabel;
slotProps[1].plusBtnLabelRef = this.monthPlusBtnLabelRef;
slotProps[1].minusBtnLabel = this.monthMinusBtnLabel;
slotProps[1].minusBtnLabelRef = this.monthMinusBtnLabelRef;
slotProps[2].plusBtnLabel = this.dayPlusBtnLabel;
slotProps[2].plusBtnLabelRef = this.dayPlusBtnLabelRef;
slotProps[2].minusBtnLabel = this.dayMinusBtnLabel;
slotProps[2].minusBtnLabelRef = this.dayMinusBtnLabelRef;
}
});
});