Roo/UndoManager.js
[roojs1] / docs / src / Roo_form_DateField.js.html
1 <html><head><title>Roo/form/DateField.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12 /**
13  * @class Roo.form.DateField
14  * @extends Roo.form.TriggerField
15  * Provides a date input field with a {@link Roo.DatePicker} dropdown and automatic date validation.
16 * @constructor
17 * Create a new DateField
18 * @param {Object} config
19  */
20 </span><span class="jsdoc-var">Roo.form.DateField </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">)
21 {
22     </span><span class="jsdoc-var">Roo.form.DateField.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
23
24       </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
25
26         </span><span class="jsdoc-comment">/**
27          * @event select
28          * Fires when a date is selected
29              * @param {Roo.form.DateField} combo This combo box
30              * @param {Date} date The date selected
31              */
32         </span><span class="jsdoc-string">'select' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
33
34     </span><span class="jsdoc-syntax">});
35
36
37     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">this.minValue </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">) {
38         </span><span class="jsdoc-var">this.minValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minValue</span><span class="jsdoc-syntax">);
39     }
40     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">this.maxValue </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">) {
41         </span><span class="jsdoc-var">this.maxValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxValue</span><span class="jsdoc-syntax">);
42     }
43     </span><span class="jsdoc-var">this.ddMatch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
44     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabledDates</span><span class="jsdoc-syntax">){
45         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disabledDates</span><span class="jsdoc-syntax">;
46         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;(?:&quot;</span><span class="jsdoc-syntax">;
47         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">dd.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
48             </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
49             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">dd.length</span><span class="jsdoc-syntax">-1) {
50                 </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot;|&quot;</span><span class="jsdoc-syntax">;
51             }
52         }
53         </span><span class="jsdoc-var">this.ddMatch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;)&quot;</span><span class="jsdoc-syntax">);
54     }
55 };
56
57 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.form.DateField</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.form.TriggerField</span><span class="jsdoc-syntax">,  {
58     </span><span class="jsdoc-comment">/**
59      * @cfg {String} format
60      * The default date format string which can be overriden for localization support.  The format must be
61      * valid according to {@link Date#parseDate} (defaults to 'm/d/y').
62      */
63     </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;m/d/y&quot;</span><span class="jsdoc-syntax">,
64     </span><span class="jsdoc-comment">/**
65      * @cfg {String} altFormats
66      * Multiple date formats separated by &quot;|&quot; to try when parsing a user input value and it doesn't match the defined
67      * format (defaults to 'm/d/Y|m-d-y|m-d-Y|m/d|m-d|d').
68      */
69     </span><span class="jsdoc-var">altFormats </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d&quot;</span><span class="jsdoc-syntax">,
70     </span><span class="jsdoc-comment">/**
71      * @cfg {Array} disabledDays
72      * An array of days to disable, 0 based. For example, [0, 6] disables Sunday and Saturday (defaults to null).
73      */
74     </span><span class="jsdoc-var">disabledDays </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
75     </span><span class="jsdoc-comment">/**
76      * @cfg {String} disabledDaysText
77      * The tooltip to display when the date falls on a disabled day (defaults to 'Disabled')
78      */
79     </span><span class="jsdoc-var">disabledDaysText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Disabled&quot;</span><span class="jsdoc-syntax">,
80     </span><span class="jsdoc-comment">/**
81      * @cfg {Array} disabledDates
82      * An array of &quot;dates&quot; to disable, as strings. These strings will be used to build a dynamic regular
83      * expression so they are very powerful. Some examples:
84      * &lt;ul&gt;
85      * &lt;li&gt;[&quot;03/08/2003&quot;, &quot;09/16/2003&quot;] would disable those exact dates&lt;/li&gt;
86      * &lt;li&gt;[&quot;03/08&quot;, &quot;09/16&quot;] would disable those days for every year&lt;/li&gt;
87      * &lt;li&gt;[&quot;^03/08&quot;] would only match the beginning (useful if you are using short years)&lt;/li&gt;
88      * &lt;li&gt;[&quot;03/../2006&quot;] would disable every day in March 2006&lt;/li&gt;
89      * &lt;li&gt;[&quot;^03&quot;] would disable every day in every March&lt;/li&gt;
90      * &lt;/ul&gt;
91      * In order to support regular expressions, if you are using a date format that has &quot;.&quot; in it, you will have to
92      * escape the dot when restricting dates. For example: [&quot;03\\.08\\.03&quot;].
93      */
94     </span><span class="jsdoc-var">disabledDates </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
95     </span><span class="jsdoc-comment">/**
96      * @cfg {String} disabledDatesText
97      * The tooltip text to display when the date falls on a disabled date (defaults to 'Disabled')
98      */
99     </span><span class="jsdoc-var">disabledDatesText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Disabled&quot;</span><span class="jsdoc-syntax">,
100
101
102         </span><span class="jsdoc-comment">/**
103      * @cfg {Date/String} zeroValue
104      * if the date is less that this number, then the field is rendered as empty
105      * default is 1800
106      */
107         </span><span class="jsdoc-var">zeroValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'1800-01-01'</span><span class="jsdoc-syntax">,
108
109
110     </span><span class="jsdoc-comment">/**
111      * @cfg {Date/String} minValue
112      * The minimum allowed date. Can be either a Javascript date object or a string date in a
113      * valid format (defaults to null).
114      */
115     </span><span class="jsdoc-var">minValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
116     </span><span class="jsdoc-comment">/**
117      * @cfg {Date/String} maxValue
118      * The maximum allowed date. Can be either a Javascript date object or a string date in a
119      * valid format (defaults to null).
120      */
121     </span><span class="jsdoc-var">maxValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
122     </span><span class="jsdoc-comment">/**
123      * @cfg {String} minText
124      * The error text to display when the date in the cell is before minValue (defaults to
125      * 'The date in this field must be after {minValue}').
126      */
127     </span><span class="jsdoc-var">minText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;The date in this field must be equal to or after {0}&quot;</span><span class="jsdoc-syntax">,
128     </span><span class="jsdoc-comment">/**
129      * @cfg {String} maxText
130      * The error text to display when the date in the cell is after maxValue (defaults to
131      * 'The date in this field must be before {maxValue}').
132      */
133     </span><span class="jsdoc-var">maxText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;The date in this field must be equal to or before {0}&quot;</span><span class="jsdoc-syntax">,
134     </span><span class="jsdoc-comment">/**
135      * @cfg {String} invalidText
136      * The error text to display when the date in the field is invalid (defaults to
137      * '{value} is not a valid date - it must be in the format {format}').
138      */
139     </span><span class="jsdoc-var">invalidText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;{0} is not a valid date - it must be in the format {1}&quot;</span><span class="jsdoc-syntax">,
140     </span><span class="jsdoc-comment">/**
141      * @cfg {String} triggerClass
142      * An additional CSS class used to style the trigger button.  The trigger will always get the
143      * class 'x-form-trigger' and triggerClass will be &lt;b&gt;appended&lt;/b&gt; if specified (defaults to 'x-form-date-trigger'
144      * which displays a calendar icon).
145      */
146     </span><span class="jsdoc-var">triggerClass </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'x-form-date-trigger'</span><span class="jsdoc-syntax">,
147
148
149     </span><span class="jsdoc-comment">/**
150      * @cfg {Boolean} useIso
151      * if enabled, then the date field will use a hidden field to store the 
152      * real value as iso formated date. default (false)
153      */
154     </span><span class="jsdoc-var">useIso </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
155     </span><span class="jsdoc-comment">/**
156      * @cfg {String/Object} autoCreate
157      * A DomHelper element spec, or true for a default element spec (defaults to
158      * {tag: &quot;input&quot;, type: &quot;text&quot;, size: &quot;10&quot;, autocomplete: &quot;off&quot;})
159      */
160     // private
161     </span><span class="jsdoc-var">defaultAutoCreate </span><span class="jsdoc-syntax">: {</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;input&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;text&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;10&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">autocomplete</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;off&quot;</span><span class="jsdoc-syntax">},
162
163     </span><span class="jsdoc-comment">// private
164     </span><span class="jsdoc-var">hiddenField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
165
166     </span><span class="jsdoc-var">onRender </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">)
167     {
168         </span><span class="jsdoc-var">Roo.form.DateField.superclass.onRender.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">);
169         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.useIso</span><span class="jsdoc-syntax">) {
170             </span><span class="jsdoc-comment">//this.el.dom.removeAttribute('name'); 
171             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Changing name?&quot;</span><span class="jsdoc-syntax">);
172             </span><span class="jsdoc-var">this.el.dom.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'____hidden___' </span><span class="jsdoc-syntax">);
173             </span><span class="jsdoc-var">this.hiddenField </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.insertSibling</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'input'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'hidden'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.name </span><span class="jsdoc-syntax">},
174                     </span><span class="jsdoc-string">'before'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
175             </span><span class="jsdoc-var">this.hiddenField.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.value </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
176             </span><span class="jsdoc-comment">// prevent input submission
177             </span><span class="jsdoc-var">this.hiddenName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.name</span><span class="jsdoc-syntax">;
178         }
179
180
181     },
182
183     </span><span class="jsdoc-comment">// private
184     </span><span class="jsdoc-var">validateValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)
185     {
186         </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
187         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.form.DateField.superclass.validateValue.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)){
188             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'super failed'</span><span class="jsdoc-syntax">);
189             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
190         }
191         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">&lt; 1){ </span><span class="jsdoc-comment">// if it's blank and textfield didn't flag it then it's valid
192              </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
193         }
194         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">svalue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
195         </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
196         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
197             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'parse date failed' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">svalue</span><span class="jsdoc-syntax">);
198             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.invalidText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">svalue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.format</span><span class="jsdoc-syntax">));
199             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
200         }
201         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">time </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">value.getTime</span><span class="jsdoc-syntax">();
202         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minValue </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">time </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minValue.getTime</span><span class="jsdoc-syntax">()){
203             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minValue</span><span class="jsdoc-syntax">)));
204             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
205         }
206         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxValue </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">time </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.maxValue.getTime</span><span class="jsdoc-syntax">()){
207             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxValue</span><span class="jsdoc-syntax">)));
208             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
209         }
210         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabledDays</span><span class="jsdoc-syntax">){
211             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">day </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">value.getDay</span><span class="jsdoc-syntax">();
212             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.disabledDays.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
213                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">day </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">this.disabledDays</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]){
214                     </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabledDaysText</span><span class="jsdoc-syntax">);
215                     </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
216                 }
217             }
218         }
219         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fvalue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
220         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ddMatch </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.ddMatch.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fvalue</span><span class="jsdoc-syntax">)){
221             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabledDatesText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fvalue</span><span class="jsdoc-syntax">));
222             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
223         }
224         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
225     },
226
227     </span><span class="jsdoc-comment">// private
228     // Provides logic to override the default TriggerField.validateBlur which just returns true
229     </span><span class="jsdoc-var">validateBlur </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
230         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">this.menu </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.menu.isVisible</span><span class="jsdoc-syntax">();
231     },
232
233     </span><span class="jsdoc-var">getName</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
234     {
235         </span><span class="jsdoc-comment">// returns hidden if it's set..
236         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.rendered</span><span class="jsdoc-syntax">) {</span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">};
237         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">this.hiddenName </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.el.dom.name  </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.el.dom.name </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.hiddenName </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
238
239     },
240
241     </span><span class="jsdoc-comment">/**
242      * Returns the current date value of the date field.
243      * @return {Date} The date value
244      */
245     </span><span class="jsdoc-var">getValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
246
247         </span><span class="jsdoc-keyword">return  </span><span class="jsdoc-var">this.hiddenField </span><span class="jsdoc-syntax">?
248                 </span><span class="jsdoc-var">this.hiddenField.value </span><span class="jsdoc-syntax">:
249                 </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.form.DateField.superclass.getValue.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">)) || </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
250     },
251
252     </span><span class="jsdoc-comment">/**
253      * Sets the value of the date field.  You can pass a date object or any string that can be parsed into a valid
254      * date, using DateField.format as the date format, according to the same rules as {@link Date#parseDate}
255      * (the default format used is &quot;m/d/y&quot;).
256      * &lt;br /&gt;Usage:
257      * &lt;pre&gt;&lt;code&gt;
258 //All of these calls set the same date value (May 4, 2006)
259
260 //Pass a date object:
261 var dt = new Date('5/4/06');
262 dateField.setValue(dt);
263
264 //Pass a date string (default format):
265 dateField.setValue('5/4/06');
266
267 //Pass a date string (custom format):
268 dateField.format = 'Y-m-d';
269 dateField.setValue('2006-5-4');
270 &lt;/code&gt;&lt;/pre&gt;
271      * @param {String/Date} date The date or valid date string
272      */
273     </span><span class="jsdoc-var">setValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">){
274         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.hiddenField</span><span class="jsdoc-syntax">) {
275             </span><span class="jsdoc-var">this.hiddenField.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">), </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">);
276         }
277         </span><span class="jsdoc-var">Roo.form.DateField.superclass.setValue.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">)));
278         </span><span class="jsdoc-comment">// make sure the value field is always stored as a date..
279         </span><span class="jsdoc-var">this.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">);
280
281
282     },
283
284     </span><span class="jsdoc-comment">// private
285     </span><span class="jsdoc-var">parseDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
286
287                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">) {
288                         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.zeroValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">) ) {
289                                 </span><span class="jsdoc-keyword">return  </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
290                         }
291                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
292                 }
293
294
295         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">value </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">){
296             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
297         }
298         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.format</span><span class="jsdoc-syntax">);
299          </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.useIso</span><span class="jsdoc-syntax">) {
300             </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">);
301         }
302         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.altFormats</span><span class="jsdoc-syntax">){
303             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.altFormatsArray</span><span class="jsdoc-syntax">){
304                 </span><span class="jsdoc-var">this.altFormatsArray </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.altFormats.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;|&quot;</span><span class="jsdoc-syntax">);
305             }
306             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.altFormatsArray.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
307                 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.altFormatsArray</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
308             }
309         }
310                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.zeroValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">) ) {
311                         </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
312                 }
313         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
314     },
315
316     </span><span class="jsdoc-comment">// private
317     </span><span class="jsdoc-var">formatDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">date</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fmt</span><span class="jsdoc-syntax">){
318         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">date </span><span class="jsdoc-syntax">|| !(</span><span class="jsdoc-var">date </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">)) ?
319                </span><span class="jsdoc-var">date </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">date.dateFormat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fmt </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.format</span><span class="jsdoc-syntax">);
320     },
321
322     </span><span class="jsdoc-comment">// private
323     </span><span class="jsdoc-var">menuListeners </span><span class="jsdoc-syntax">: {
324         </span><span class="jsdoc-var">select</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">){
325
326             </span><span class="jsdoc-var">this.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">);
327             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'select'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">);
328         },
329         </span><span class="jsdoc-var">show </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-comment">// retain focus styling
330             </span><span class="jsdoc-var">this.onFocus</span><span class="jsdoc-syntax">();
331         },
332         </span><span class="jsdoc-var">hide </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
333             </span><span class="jsdoc-var">this.focus.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
334             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ml </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.menuListeners</span><span class="jsdoc-syntax">;
335             </span><span class="jsdoc-var">this.menu.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;select&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ml.select</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
336             </span><span class="jsdoc-var">this.menu.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;show&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ml.show</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
337             </span><span class="jsdoc-var">this.menu.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;hide&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ml.hide</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
338         }
339     },
340
341     </span><span class="jsdoc-comment">// private
342     // Implements the default empty TriggerField.onTriggerClick function to display the DatePicker
343     </span><span class="jsdoc-var">onTriggerClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
344         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabled</span><span class="jsdoc-syntax">){
345             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
346         }
347         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.menu </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
348             </span><span class="jsdoc-var">this.menu </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.menu.DateMenu</span><span class="jsdoc-syntax">();
349         }
350         </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.menu.picker</span><span class="jsdoc-syntax">,  {
351             </span><span class="jsdoc-var">showClear</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.allowBlank</span><span class="jsdoc-syntax">,
352             </span><span class="jsdoc-var">minDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minValue</span><span class="jsdoc-syntax">,
353             </span><span class="jsdoc-var">maxDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.maxValue</span><span class="jsdoc-syntax">,
354             </span><span class="jsdoc-var">disabledDatesRE </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ddMatch</span><span class="jsdoc-syntax">,
355             </span><span class="jsdoc-var">disabledDatesText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.disabledDatesText</span><span class="jsdoc-syntax">,
356             </span><span class="jsdoc-var">disabledDays </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.disabledDays</span><span class="jsdoc-syntax">,
357             </span><span class="jsdoc-var">disabledDaysText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.disabledDaysText</span><span class="jsdoc-syntax">,
358             </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.useIso </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'Y-m-d' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.format</span><span class="jsdoc-syntax">,
359             </span><span class="jsdoc-var">minText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minValue</span><span class="jsdoc-syntax">)),
360             </span><span class="jsdoc-var">maxText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.formatDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.maxValue</span><span class="jsdoc-syntax">))
361         });
362         </span><span class="jsdoc-var">this.menu.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">({}, </span><span class="jsdoc-var">this.menuListeners</span><span class="jsdoc-syntax">, {
363             </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">this
364         </span><span class="jsdoc-syntax">}));
365         </span><span class="jsdoc-var">this.menu.picker.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getValue</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">());
366         </span><span class="jsdoc-var">this.menu.show</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;tl-bl?&quot;</span><span class="jsdoc-syntax">);
367     },
368
369     </span><span class="jsdoc-var">beforeBlur </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
370         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getRawValue</span><span class="jsdoc-syntax">());
371         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
372             </span><span class="jsdoc-var">this.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
373         }
374     },
375
376     </span><span class="jsdoc-comment">/*@
377      * overide
378      * 
379      */
380     </span><span class="jsdoc-var">isDirty </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
381         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.disabled</span><span class="jsdoc-syntax">) {
382             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
383         }
384
385         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
386             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
387         }
388
389         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getValue</span><span class="jsdoc-syntax">()) !== </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startValue</span><span class="jsdoc-syntax">);
390
391     },
392     </span><span class="jsdoc-comment">// @overide
393     </span><span class="jsdoc-var">cleanLeadingSpace </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
394     {
395        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
396     }
397
398 });</span></code></body></html>