1 <html><head><title>/home/edward/gitlive/roojs1/Roo/form/Select.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">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
14 * @class Roo.form.ComboBox
15 * @extends Roo.form.TriggerField
16 * A combobox control with support for autocomplete, remote-loading, paging and many other features.
18 * Create a new ComboBox.
19 * @param {Object} config Configuration options
21 </span><span class="jsdoc-var">Roo.form.Select </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">){
22 </span><span class="jsdoc-var">Roo.form.Select.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">);
26 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.form.Select </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.form.ComboBox</span><span class="jsdoc-syntax">, {
27 </span><span class="jsdoc-comment">/**
28 * @cfg {String/HTMLElement/Element} transform The id, DOM node or element of an existing select to convert to a ComboBox
31 * @cfg {Boolean} lazyRender True to prevent the ComboBox from rendering until requested (should always be used when
32 * rendering into an Roo.Editor, defaults to false)
35 * @cfg {Boolean/Object} autoCreate A DomHelper element spec, or true for a default element spec (defaults to:
36 * {tag: "input", type: "text", size: "24", autocomplete: "off"})
39 * @cfg {Roo.data.Store} store The data store to which this combo is bound (defaults to undefined)
42 * @cfg {String} title If supplied, a header element is created containing this text and added into the top of
43 * the dropdown list (defaults to undefined, with no header element)
47 * @cfg {String/Roo.Template} tpl The template to use to render the output
51 </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">"select" </span><span class="jsdoc-syntax">},
52 </span><span class="jsdoc-comment">/**
53 * @cfg {Number} listWidth The width in pixels of the dropdown list (defaults to the width of the ComboBox field)
55 </span><span class="jsdoc-var">listWidth</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">,
56 </span><span class="jsdoc-comment">/**
57 * @cfg {String} displayField The underlying data field name to bind to this CombBox (defaults to undefined if
58 * mode = 'remote' or 'text' if mode = 'local')
60 </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">,
61 </span><span class="jsdoc-comment">/**
62 * @cfg {String} valueField The underlying data value name to bind to this CombBox (defaults to undefined if
63 * mode = 'remote' or 'value' if mode = 'local').
64 * Note: use of a valueField requires the user make a selection
65 * in order for a value to be mapped.
67 </span><span class="jsdoc-var">valueField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">,
70 </span><span class="jsdoc-comment">/**
71 * @cfg {String} hiddenName If specified, a hidden form field with this name is dynamically generated to store the
72 * field's data value (defaults to the underlying DOM element's name)
74 </span><span class="jsdoc-var">hiddenName</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">,
75 </span><span class="jsdoc-comment">/**
76 * @cfg {String} listClass CSS class to apply to the dropdown list element (defaults to '')
78 </span><span class="jsdoc-var">listClass</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
79 </span><span class="jsdoc-comment">/**
80 * @cfg {String} selectedClass CSS class to apply to the selected item in the dropdown list (defaults to 'x-combo-selected')
82 </span><span class="jsdoc-var">selectedClass</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'x-combo-selected'</span><span class="jsdoc-syntax">,
83 </span><span class="jsdoc-comment">/**
84 * @cfg {String} triggerClass An additional CSS class used to style the trigger button. The trigger will always get the
85 * class 'x-form-trigger' and triggerClass will be <b>appended</b> if specified (defaults to 'x-form-arrow-trigger'
86 * which displays a downward arrow icon).
88 </span><span class="jsdoc-var">triggerClass </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'x-form-arrow-trigger'</span><span class="jsdoc-syntax">,
89 </span><span class="jsdoc-comment">/**
90 * @cfg {Boolean/String} shadow True or "sides" for the default effect, "frame" for 4-way shadow, and "drop" for bottom-right
92 </span><span class="jsdoc-var">shadow</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'sides'</span><span class="jsdoc-syntax">,
93 </span><span class="jsdoc-comment">/**
94 * @cfg {String} listAlign A valid anchor position value. See {@link Roo.Element#alignTo} for details on supported
95 * anchor positions (defaults to 'tl-bl')
97 </span><span class="jsdoc-var">listAlign</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'tl-bl?'</span><span class="jsdoc-syntax">,
98 </span><span class="jsdoc-comment">/**
99 * @cfg {Number} maxHeight The maximum height in pixels of the dropdown list before scrollbars are shown (defaults to 300)
101 </span><span class="jsdoc-var">maxHeight</span><span class="jsdoc-syntax">: 300,
102 </span><span class="jsdoc-comment">/**
103 * @cfg {String} triggerAction The action to execute when the trigger field is activated. Use 'all' to run the
104 * query specified by the allQuery config option (defaults to 'query')
106 </span><span class="jsdoc-var">triggerAction</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'query'</span><span class="jsdoc-syntax">,
107 </span><span class="jsdoc-comment">/**
108 * @cfg {Number} minChars The minimum number of characters the user must type before autocomplete and typeahead activate
109 * (defaults to 4, does not apply if editable = false)
111 </span><span class="jsdoc-var">minChars </span><span class="jsdoc-syntax">: 4,
112 </span><span class="jsdoc-comment">/**
113 * @cfg {Boolean} typeAhead True to populate and autoselect the remainder of the text being typed after a configurable
114 * delay (typeAheadDelay) if it matches a known value (defaults to false)
116 </span><span class="jsdoc-var">typeAhead</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
117 </span><span class="jsdoc-comment">/**
118 * @cfg {Number} queryDelay The length of time in milliseconds to delay between the start of typing and sending the
119 * query to filter the dropdown list (defaults to 500 if mode = 'remote' or 10 if mode = 'local')
121 </span><span class="jsdoc-var">queryDelay</span><span class="jsdoc-syntax">: 500,
122 </span><span class="jsdoc-comment">/**
123 * @cfg {Number} pageSize If greater than 0, a paging toolbar is displayed in the footer of the dropdown list and the
124 * filter queries will execute with page start and limit parameters. Only applies when mode = 'remote' (defaults to 0)
126 </span><span class="jsdoc-var">pageSize</span><span class="jsdoc-syntax">: 0,
127 </span><span class="jsdoc-comment">/**
128 * @cfg {Boolean} selectOnFocus True to select any existing text in the field immediately on focus. Only applies
129 * when editable = true (defaults to false)
131 </span><span class="jsdoc-var">selectOnFocus</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
132 </span><span class="jsdoc-comment">/**
133 * @cfg {String} queryParam Name of the query as it will be passed on the querystring (defaults to 'query')
135 </span><span class="jsdoc-var">queryParam</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'query'</span><span class="jsdoc-syntax">,
136 </span><span class="jsdoc-comment">/**
137 * @cfg {String} loadingText The text to display in the dropdown list while data is loading. Only applies
138 * when mode = 'remote' (defaults to 'Loading...')
140 </span><span class="jsdoc-var">loadingText</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Loading...'</span><span class="jsdoc-syntax">,
141 </span><span class="jsdoc-comment">/**
142 * @cfg {Boolean} resizable True to add a resize handle to the bottom of the dropdown list (defaults to false)
144 </span><span class="jsdoc-var">resizable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
145 </span><span class="jsdoc-comment">/**
146 * @cfg {Number} handleHeight The height in pixels of the dropdown list resize handle if resizable = true (defaults to 8)
148 </span><span class="jsdoc-var">handleHeight </span><span class="jsdoc-syntax">: 8,
149 </span><span class="jsdoc-comment">/**
150 * @cfg {Boolean} editable False to prevent the user from typing text directly into the field, just like a
151 * traditional select (defaults to true)
153 </span><span class="jsdoc-var">editable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
154 </span><span class="jsdoc-comment">/**
155 * @cfg {String} allQuery The text query to send to the server to return all records for the list with no filtering (defaults to '')
157 </span><span class="jsdoc-var">allQuery</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
158 </span><span class="jsdoc-comment">/**
159 * @cfg {String} mode Set to 'local' if the ComboBox loads local data (defaults to 'remote' which loads from the server)
161 </span><span class="jsdoc-var">mode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'remote'</span><span class="jsdoc-syntax">,
162 </span><span class="jsdoc-comment">/**
163 * @cfg {Number} minListWidth The minimum width of the dropdown list in pixels (defaults to 70, will be ignored if
164 * listWidth has a higher value)
166 </span><span class="jsdoc-var">minListWidth </span><span class="jsdoc-syntax">: 70,
167 </span><span class="jsdoc-comment">/**
168 * @cfg {Boolean} forceSelection True to restrict the selected value to one of the values in the list, false to
169 * allow the user to set arbitrary text into the field (defaults to false)
171 </span><span class="jsdoc-var">forceSelection</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
172 </span><span class="jsdoc-comment">/**
173 * @cfg {Number} typeAheadDelay The length of time in milliseconds to wait until the typeahead text is displayed
174 * if typeAhead = true (defaults to 250)
176 </span><span class="jsdoc-var">typeAheadDelay </span><span class="jsdoc-syntax">: 250,
177 </span><span class="jsdoc-comment">/**
178 * @cfg {String} valueNotFoundText When using a name/value combo, if the value passed to setValue is not found in
179 * the store, valueNotFoundText will be displayed as the field text if defined (defaults to undefined)
181 </span><span class="jsdoc-var">valueNotFoundText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">,
183 </span><span class="jsdoc-comment">/**
184 * @cfg {String} defaultValue The value displayed after loading the store.
186 </span><span class="jsdoc-var">defaultValue</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
188 </span><span class="jsdoc-comment">/**
189 * @cfg {Boolean} blockFocus Prevents all focus calls, so it can work with things like HTML edtor bar
191 </span><span class="jsdoc-var">blockFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
193 </span><span class="jsdoc-comment">/**
194 * @cfg {Boolean} disableClear Disable showing of clear button.
196 </span><span class="jsdoc-var">disableClear </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
197 </span><span class="jsdoc-comment">/**
198 * @cfg {Boolean} alwaysQuery Disable caching of results, and always send query
200 </span><span class="jsdoc-var">alwaysQuery </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
202 </span><span class="jsdoc-comment">//private
203 </span><span class="jsdoc-var">addicon </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
204 </span><span class="jsdoc-var">editicon</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
206 </span><span class="jsdoc-comment">// element that contains real text value.. (when hidden is used..)
209 </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">){
210 </span><span class="jsdoc-var">Roo.form.Field.prototype.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">);
212 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store</span><span class="jsdoc-syntax">){
213 </span><span class="jsdoc-var">this.store.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeload'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onBeforeLoad</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
214 </span><span class="jsdoc-var">this.store.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onLoad</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
215 </span><span class="jsdoc-var">this.store.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'loadexception'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onLoadException</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
216 </span><span class="jsdoc-var">this.store.load</span><span class="jsdoc-syntax">({});
223 </span><span class="jsdoc-comment">// private
224 </span><span class="jsdoc-var">initEvents </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
225 </span><span class="jsdoc-comment">//Roo.form.ComboBox.superclass.initEvents.call(this);
227 </span><span class="jsdoc-syntax">},
229 </span><span class="jsdoc-var">onDestroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
231 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store</span><span class="jsdoc-syntax">){
232 </span><span class="jsdoc-var">this.store.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeload'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onBeforeLoad</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
233 </span><span class="jsdoc-var">this.store.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onLoad</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
234 </span><span class="jsdoc-var">this.store.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'loadexception'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onLoadException</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
236 </span><span class="jsdoc-comment">//Roo.form.ComboBox.superclass.onDestroy.call(this);
237 </span><span class="jsdoc-syntax">},
239 </span><span class="jsdoc-comment">// private
240 </span><span class="jsdoc-var">fireKey </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">){
241 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.isNavKeyPress</span><span class="jsdoc-syntax">() && !</span><span class="jsdoc-var">this.list.isVisible</span><span class="jsdoc-syntax">()){
242 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"specialkey"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
246 </span><span class="jsdoc-comment">// private
247 </span><span class="jsdoc-var">onResize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">w</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h</span><span class="jsdoc-syntax">){
249 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
254 </span><span class="jsdoc-comment">/**
255 * Allow or prevent the user from directly editing the field text. If false is passed,
256 * the user will only be able to select from the items defined in the dropdown list. This method
257 * is the runtime equivalent of setting the 'editable' config option at config time.
258 * @param {Boolean} value True to allow the user to directly edit the field text
260 </span><span class="jsdoc-var">setEditable </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">){
264 </span><span class="jsdoc-comment">// private
265 </span><span class="jsdoc-var">onBeforeLoad </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
267 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Select before load"</span><span class="jsdoc-syntax">);
268 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
270 </span><span class="jsdoc-var">this.innerList.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.loadingText </span><span class="jsdoc-syntax">?
271 </span><span class="jsdoc-string">'<div class="loading-indicator">'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">this.loadingText</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'</div>' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
272 </span><span class="jsdoc-comment">//this.restrictHeight();
273 </span><span class="jsdoc-var">this.selectedIndex </span><span class="jsdoc-syntax">= -1;
276 </span><span class="jsdoc-comment">// private
277 </span><span class="jsdoc-var">onLoad </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
280 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dom </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">;
281 </span><span class="jsdoc-var">dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
282 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">od </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dom.ownerDocument</span><span class="jsdoc-syntax">;
284 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.emptyText</span><span class="jsdoc-syntax">) {
285 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">op </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">od.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'option'</span><span class="jsdoc-syntax">);
286 </span><span class="jsdoc-var">op.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'value'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
287 </span><span class="jsdoc-var">op.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'{0}'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.emptyText</span><span class="jsdoc-syntax">);
288 </span><span class="jsdoc-var">dom.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">op</span><span class="jsdoc-syntax">);
290 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.getCount</span><span class="jsdoc-syntax">() > 0){
292 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">vf </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.valueField</span><span class="jsdoc-syntax">;
293 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">df </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.displayField</span><span class="jsdoc-syntax">;
294 </span><span class="jsdoc-var">this.store.data.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">) {
295 </span><span class="jsdoc-comment">// which colmsn to use... testing - cdoe / title..
296 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">op </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">od.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'option'</span><span class="jsdoc-syntax">);
297 </span><span class="jsdoc-var">op.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'value'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r.data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">vf</span><span class="jsdoc-syntax">]);
298 </span><span class="jsdoc-var">op.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'{0}'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r.data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">df</span><span class="jsdoc-syntax">]);
299 </span><span class="jsdoc-var">dom.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">op</span><span class="jsdoc-syntax">);
301 </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.defaultValue </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">)) {
302 </span><span class="jsdoc-var">this.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.defaultValue</span><span class="jsdoc-syntax">);
306 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
307 </span><span class="jsdoc-comment">//this.onEmptyResults();
308 </span><span class="jsdoc-syntax">}
309 </span><span class="jsdoc-comment">//this.el.focus();
310 </span><span class="jsdoc-syntax">},
311 </span><span class="jsdoc-comment">// private
312 </span><span class="jsdoc-var">onLoadException </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
314 </span><span class="jsdoc-var">dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
316 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Select on load exception"</span><span class="jsdoc-syntax">);
317 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
319 </span><span class="jsdoc-var">this.collapse</span><span class="jsdoc-syntax">();
320 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.reader.jsonData</span><span class="jsdoc-syntax">);
321 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.reader.jsonData.errorMsg</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
322 </span><span class="jsdoc-var">Roo.MessageBox.alert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Error loading"</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.store.reader.jsonData.errorMsg</span><span class="jsdoc-syntax">);
327 </span><span class="jsdoc-comment">// private
328 </span><span class="jsdoc-var">onTypeAhead </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
332 </span><span class="jsdoc-comment">// private
333 </span><span class="jsdoc-var">onSelect </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">){
334 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'on select?'</span><span class="jsdoc-syntax">);
335 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
336 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeselect'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
337 </span><span class="jsdoc-var">this.setFromData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">> -1 ? </span><span class="jsdoc-var">record.data </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
338 </span><span class="jsdoc-var">this.collapse</span><span class="jsdoc-syntax">();
339 </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">record</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">);
343 </span><span class="jsdoc-comment">/**
344 * Returns the currently selected field value or empty string if no value is set.
345 * @return {String} value The selected value
347 </span><span class="jsdoc-var">getValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
348 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dom </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">;
349 </span><span class="jsdoc-var">this.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dom.options</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">dom.selectedIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">;
350 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.value</span><span class="jsdoc-syntax">;
354 </span><span class="jsdoc-comment">/**
355 * Clears any text/value currently set in the field
357 </span><span class="jsdoc-var">clearValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
358 </span><span class="jsdoc-var">this.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
359 </span><span class="jsdoc-var">this.el.dom.selectedIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.emptyText </span><span class="jsdoc-syntax">? 0 : -1;
363 </span><span class="jsdoc-comment">/**
364 * Sets the specified value into the field. If the value finds a match, the corresponding record text
365 * will be displayed in the field. If the value does not match the data value of an existing item,
366 * and the valueNotFoundText config option is defined, it will be displayed as the default field text.
367 * Otherwise the field will be blank (although the value will still be set).
368 * @param {String} value The value to match
370 </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">v</span><span class="jsdoc-syntax">){
371 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">;
372 </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">< </span><span class="jsdoc-var">d.options.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
373 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">d.options</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">) {
374 </span><span class="jsdoc-var">d.selectedIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
375 </span><span class="jsdoc-var">this.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
376 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
379 </span><span class="jsdoc-var">this.clearValue</span><span class="jsdoc-syntax">();
381 </span><span class="jsdoc-comment">/**
382 * @property {Object} the last set data for the element
385 </span><span class="jsdoc-var">lastData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
386 </span><span class="jsdoc-comment">/**
387 * Sets the value of the field based on a object which is related to the record format for the store.
388 * @param {Object} value the value to set as. or false on reset?
390 </span><span class="jsdoc-var">setFromData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
391 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'setfrom data?'</span><span class="jsdoc-syntax">);
396 </span><span class="jsdoc-comment">// private
397 </span><span class="jsdoc-var">reset </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
398 </span><span class="jsdoc-var">this.clearValue</span><span class="jsdoc-syntax">();
400 </span><span class="jsdoc-comment">// private
401 </span><span class="jsdoc-var">findRecord </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">prop</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
403 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
405 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">;
406 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.getCount</span><span class="jsdoc-syntax">() > 0){
407 </span><span class="jsdoc-var">this.store.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">){
408 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r.data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">prop</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
409 </span><span class="jsdoc-var">record </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
410 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
412 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
415 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">record</span><span class="jsdoc-syntax">;
418 </span><span class="jsdoc-var">getName</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
420 </span><span class="jsdoc-comment">// returns hidden if it's set..
421 </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">};
422 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">this.hiddenName </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.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">);
429 </span><span class="jsdoc-comment">// private
430 </span><span class="jsdoc-var">onEmptyResults </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
431 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'empty results'</span><span class="jsdoc-syntax">);
432 </span><span class="jsdoc-comment">//this.collapse();
433 </span><span class="jsdoc-syntax">},
435 </span><span class="jsdoc-comment">/**
436 * Returns true if the dropdown list is expanded, else false.
438 </span><span class="jsdoc-var">isExpanded </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
439 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
442 </span><span class="jsdoc-comment">/**
443 * Select an item in the dropdown list by its data value. This function does NOT cause the select event to fire.
444 * The store must be loaded and the list expanded for this function to work, otherwise use setValue.
445 * @param {String} value The data value of the item to select
446 * @param {Boolean} scrollIntoView False to prevent the dropdown list from autoscrolling to display the
447 * selected item if it is not currently in view (defaults to true)
448 * @return {Boolean} True if the value matched an item in the list, else false
450 </span><span class="jsdoc-var">selectByValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scrollIntoView</span><span class="jsdoc-syntax">){
451 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'select By Value'</span><span class="jsdoc-syntax">);
452 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
454 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
455 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findRecord</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.valueField </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.displayField</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
456 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">){
457 </span><span class="jsdoc-var">this.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">scrollIntoView</span><span class="jsdoc-syntax">);
458 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
461 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
464 </span><span class="jsdoc-comment">/**
465 * Select an item in the dropdown list by its numeric index in the list. This function does NOT cause the select event to fire.
466 * The store must be loaded and the list expanded for this function to work, otherwise use setValue.
467 * @param {Number} index The zero-based index of the list item to select
468 * @param {Boolean} scrollIntoView False to prevent the dropdown list from autoscrolling to display the
469 * selected item if it is not currently in view (defaults to true)
471 </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">index</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scrollIntoView</span><span class="jsdoc-syntax">){
472 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'select '</span><span class="jsdoc-syntax">);
473 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">;
475 </span><span class="jsdoc-var">this.selectedIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">;
476 </span><span class="jsdoc-var">this.view.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">);
477 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scrollIntoView </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
478 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.view.getNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">);
479 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
480 </span><span class="jsdoc-var">this.innerList.scrollChildIntoView</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
487 </span><span class="jsdoc-comment">// private
488 </span><span class="jsdoc-var">validateBlur </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
490 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
494 </span><span class="jsdoc-comment">// private
495 </span><span class="jsdoc-var">initQuery </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
496 </span><span class="jsdoc-var">this.doQuery</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getRawValue</span><span class="jsdoc-syntax">());
499 </span><span class="jsdoc-comment">// private
500 </span><span class="jsdoc-var">doForce </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
501 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el.dom.value.length </span><span class="jsdoc-syntax">> 0){
502 </span><span class="jsdoc-var">this.el.dom.value </span><span class="jsdoc-syntax">=
503 </span><span class="jsdoc-var">this.lastSelectionText </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.lastSelectionText</span><span class="jsdoc-syntax">;
508 </span><span class="jsdoc-comment">/**
509 * Execute a query to filter the dropdown list. Fires the beforequery event prior to performing the
510 * query allowing the query action to be canceled if needed.
511 * @param {String} query The SQL query to execute
512 * @param {Boolean} forceAll True to force the query to execute even if there are currently fewer characters
513 * in the field than the minimum specified by the minChars config option. It also clears any filter previously
514 * saved in the current store (defaults to false)
516 </span><span class="jsdoc-var">doQuery </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">forceAll</span><span class="jsdoc-syntax">){
518 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'doQuery?'</span><span class="jsdoc-syntax">);
519 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">undefined </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
520 </span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
522 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">qe </span><span class="jsdoc-syntax">= {
523 </span><span class="jsdoc-var">query</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">,
524 </span><span class="jsdoc-var">forceAll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">forceAll</span><span class="jsdoc-syntax">,
525 </span><span class="jsdoc-var">combo</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,
526 </span><span class="jsdoc-var">cancel</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false
527 </span><span class="jsdoc-syntax">};
528 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforequery'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">qe</span><span class="jsdoc-syntax">)===</span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">qe.cancel</span><span class="jsdoc-syntax">){
529 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
531 </span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">qe.query</span><span class="jsdoc-syntax">;
532 </span><span class="jsdoc-var">forceAll </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">qe.forceAll</span><span class="jsdoc-syntax">;
533 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">forceAll </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">q.length </span><span class="jsdoc-syntax">>= </span><span class="jsdoc-var">this.minChars</span><span class="jsdoc-syntax">)){
534 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastQuery </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.alwaysQuery</span><span class="jsdoc-syntax">){
535 </span><span class="jsdoc-var">this.lastQuery </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">;
536 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.mode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'local'</span><span class="jsdoc-syntax">){
537 </span><span class="jsdoc-var">this.selectedIndex </span><span class="jsdoc-syntax">= -1;
538 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">forceAll</span><span class="jsdoc-syntax">){
539 </span><span class="jsdoc-var">this.store.clearFilter</span><span class="jsdoc-syntax">();
540 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
541 </span><span class="jsdoc-var">this.store.filter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.displayField</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">);
543 </span><span class="jsdoc-var">this.onLoad</span><span class="jsdoc-syntax">();
544 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
545 </span><span class="jsdoc-var">this.store.baseParams</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">this.queryParam</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">;
546 </span><span class="jsdoc-var">this.store.load</span><span class="jsdoc-syntax">({
547 </span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.getParams</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">)
549 </span><span class="jsdoc-var">this.expand</span><span class="jsdoc-syntax">();
551 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
552 </span><span class="jsdoc-var">this.selectedIndex </span><span class="jsdoc-syntax">= -1;
553 </span><span class="jsdoc-var">this.onLoad</span><span class="jsdoc-syntax">();
558 </span><span class="jsdoc-comment">// private
559 </span><span class="jsdoc-var">getParams </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">){
560 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= {};
561 </span><span class="jsdoc-comment">//p[this.queryParam] = q;
562 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pageSize</span><span class="jsdoc-syntax">){
563 </span><span class="jsdoc-var">p.start </span><span class="jsdoc-syntax">= 0;
564 </span><span class="jsdoc-var">p.limit </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.pageSize</span><span class="jsdoc-syntax">;
566 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">;
569 </span><span class="jsdoc-comment">/**
570 * Hides the dropdown list if it is currently expanded. Fires the 'collapse' event on completion.
572 </span><span class="jsdoc-var">collapse </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
576 </span><span class="jsdoc-comment">// private
577 </span><span class="jsdoc-var">collapseIf </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">){
581 </span><span class="jsdoc-comment">/**
582 * Expands the dropdown list if it is currently hidden. Fires the 'expand' event on completion.
584 </span><span class="jsdoc-var">expand </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
588 </span><span class="jsdoc-comment">// private
592 * @cfg {Boolean} grow
596 * @cfg {Number} growMin
600 * @cfg {Number} growMax
608 </span><span class="jsdoc-var">setWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
612 </span><span class="jsdoc-var">getResizeEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
613 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
615 });</span></code></body></html>