1 | define([ |
---|
2 | "dojo/_base/declare", |
---|
3 | "dojo/dom-class", |
---|
4 | "dojo/dom-attr", |
---|
5 | "./_DatePickerMixin", |
---|
6 | "./ValuePicker", |
---|
7 | "./ValuePickerSlot" |
---|
8 | ], function(declare, domClass, domAttr, DatePickerMixin, ValuePicker, ValuePickerSlot){ |
---|
9 | |
---|
10 | // module: |
---|
11 | // dojox/mobile/ValuePickerDatePicker |
---|
12 | |
---|
13 | return declare("dojox.mobile.ValuePickerDatePicker", [ValuePicker, DatePickerMixin], { |
---|
14 | // summary: |
---|
15 | // A ValuePicker-based date picker widget. |
---|
16 | // description: |
---|
17 | // ValuePickerDatePicker is a date picker widget. It is a subclass of |
---|
18 | // dojox/mobile/ValuePicker. It has 3 slots: day, month and year. |
---|
19 | |
---|
20 | // readOnly: [const] Boolean |
---|
21 | // If true, slot input fields are read-only. Only the plus and |
---|
22 | // minus buttons can be used to change the values. |
---|
23 | // Note that changing the value of the property after the widget |
---|
24 | // creation has no effect. |
---|
25 | readOnly: false, |
---|
26 | |
---|
27 | // yearPlusBtnLabel: String |
---|
28 | // (Accessibility) Label for year plus button |
---|
29 | yearPlusBtnLabel: "", |
---|
30 | |
---|
31 | // yearPlusBtnLabelRef: String |
---|
32 | // (Accessibility) Reference to a node id containing text label for the year plus button |
---|
33 | yearPlusBtnLabelRef: "", |
---|
34 | |
---|
35 | // yearPlusBtnLabel: String |
---|
36 | // (Accessibility) Label for year minus button |
---|
37 | yearMinusBtnLabel: "", |
---|
38 | |
---|
39 | // yearPlusBtnLabelRef: String |
---|
40 | // (Accessibility) Reference to a node id containing text label for the year minus button |
---|
41 | yearMinusBtnLabelRef: "", |
---|
42 | |
---|
43 | // monthPlusBtnLabel: String |
---|
44 | // (Accessibility) Label for month plus button |
---|
45 | monthPlusBtnLabel: "", |
---|
46 | |
---|
47 | // monthPlusBtnLabelRef: String |
---|
48 | // (Accessibility) Reference to a node id containing text label for the month plus button |
---|
49 | monthPlusBtnLabelRef: "", |
---|
50 | |
---|
51 | // monthMinusBtnLabel: String |
---|
52 | // (Accessibility) Label for month minus button |
---|
53 | monthMinusBtnLabel: "", |
---|
54 | |
---|
55 | // monthMinusBtnLabelRef: String |
---|
56 | // (Accessibility) Reference to a node id containing text label for the month minus button |
---|
57 | monthMinusBtnLabelRef: "", |
---|
58 | |
---|
59 | // dayPlusBtnLabel: String |
---|
60 | // (Accessibility) Label for day plus button |
---|
61 | dayPlusBtnLabel: "", |
---|
62 | |
---|
63 | // dayPlusBtnLabelRef: String |
---|
64 | // (Accessibility) Reference to a node id containing text label for the day plus button |
---|
65 | dayPlusBtnLabelRef: "", |
---|
66 | |
---|
67 | // dayMinusBtnLabel: String |
---|
68 | // (Accessibility) Label for day minus button |
---|
69 | dayMinusBtnLabel: "", |
---|
70 | |
---|
71 | // dayMinusBtnLabelRef: String |
---|
72 | // (Accessibility) Reference to a node id containing text label for the day minus button |
---|
73 | dayMinusBtnLabelRef: "", |
---|
74 | |
---|
75 | slotClasses: [ |
---|
76 | ValuePickerSlot, |
---|
77 | ValuePickerSlot, |
---|
78 | ValuePickerSlot |
---|
79 | ], |
---|
80 | |
---|
81 | slotProps: [ |
---|
82 | {labelFrom:1970, labelTo:2038, style:{width:"87px"}}, |
---|
83 | {style:{width:"72px"}}, |
---|
84 | {style:{width:"72px"}} |
---|
85 | ], |
---|
86 | |
---|
87 | buildRendering: function(){ |
---|
88 | var p = this.slotProps; |
---|
89 | p[0].readOnly = p[1].readOnly = p[2].readOnly = this.readOnly; |
---|
90 | this._setBtnLabels(p); |
---|
91 | this.initSlots(); |
---|
92 | this.inherited(arguments); |
---|
93 | domClass.add(this.domNode, "mblValuePickerDatePicker"); |
---|
94 | this._conn = [ |
---|
95 | this.connect(this.slots[0], "_spinToValue", "_onYearSet"), |
---|
96 | this.connect(this.slots[1], "_spinToValue", "_onMonthSet"), |
---|
97 | this.connect(this.slots[2], "_spinToValue", "_onDaySet") |
---|
98 | ]; |
---|
99 | }, |
---|
100 | |
---|
101 | disableValues: function(/*Number*/daysInMonth){ |
---|
102 | // summary: |
---|
103 | // Disables the end days of the month to match the specified |
---|
104 | // number of days of the month. |
---|
105 | var items = this.slots[2].items; |
---|
106 | if(this._tail){ |
---|
107 | this.slots[2].items = items = items.concat(this._tail); |
---|
108 | } |
---|
109 | this._tail = items.slice(daysInMonth); |
---|
110 | items.splice(daysInMonth); |
---|
111 | }, |
---|
112 | |
---|
113 | _setBtnLabels: function(slotProps){ |
---|
114 | //summary: |
---|
115 | // Set a11y labels on the plus/minus buttons |
---|
116 | slotProps[0].plusBtnLabel = this.yearPlusBtnLabel; |
---|
117 | slotProps[0].plusBtnLabelRef = this.yearPlusBtnLabelRef; |
---|
118 | slotProps[0].minusBtnLabel = this.yearMinusBtnLabel; |
---|
119 | slotProps[0].minusBtnLabelRef = this.yearMinusBtnLabelRef; |
---|
120 | slotProps[1].plusBtnLabel = this.monthPlusBtnLabel; |
---|
121 | slotProps[1].plusBtnLabelRef = this.monthPlusBtnLabelRef; |
---|
122 | slotProps[1].minusBtnLabel = this.monthMinusBtnLabel; |
---|
123 | slotProps[1].minusBtnLabelRef = this.monthMinusBtnLabelRef; |
---|
124 | slotProps[2].plusBtnLabel = this.dayPlusBtnLabel; |
---|
125 | slotProps[2].plusBtnLabelRef = this.dayPlusBtnLabelRef; |
---|
126 | slotProps[2].minusBtnLabel = this.dayMinusBtnLabel; |
---|
127 | slotProps[2].minusBtnLabelRef = this.dayMinusBtnLabelRef; |
---|
128 | } |
---|
129 | }); |
---|
130 | }); |
---|