]> git.proxmox.com Git - extjs.git/blame - extjs/packages/ux/classic/src/form/SearchField.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / ux / classic / src / form / SearchField.js
CommitLineData
6527f429
DM
1Ext.define('Ext.ux.form.SearchField', {\r
2 extend: 'Ext.form.field.Text',\r
3\r
4 alias: 'widget.searchfield',\r
5\r
6 triggers: {\r
7 clear: {\r
8 weight: 0,\r
9 cls: Ext.baseCSSPrefix + 'form-clear-trigger',\r
10 hidden: true,\r
11 handler: 'onClearClick',\r
12 scope: 'this'\r
13 },\r
14 search: {\r
15 weight: 1,\r
16 cls: Ext.baseCSSPrefix + 'form-search-trigger',\r
17 handler: 'onSearchClick',\r
18 scope: 'this'\r
19 }\r
20 },\r
21\r
22 hasSearch : false,\r
23 paramName : 'query',\r
24\r
25 initComponent: function() {\r
26 var me = this,\r
27 store = me.store,\r
28 proxy;\r
29\r
30 me.callParent(arguments);\r
31 me.on('specialkey', function(f, e){\r
32 if (e.getKey() == e.ENTER) {\r
33 me.onSearchClick();\r
34 }\r
35 });\r
36 \r
37 if (!store || !store.isStore) {\r
38 store = me.store = Ext.data.StoreManager.lookup(store);\r
39 }\r
40\r
41 // We're going to use filtering\r
42 store.setRemoteFilter(true);\r
43\r
44 // Set up the proxy to encode the filter in the simplest way as a name/value pair\r
45 proxy = me.store.getProxy();\r
46 proxy.setFilterParam(me.paramName);\r
47 proxy.encodeFilters = function(filters) {\r
48 return filters[0].getValue();\r
49 }\r
50 },\r
51\r
52 onClearClick : function(){\r
53 var me = this,\r
54 activeFilter = me.activeFilter;\r
55\r
56 if (activeFilter) {\r
57 me.setValue('');\r
58 me.store.getFilters().remove(activeFilter);\r
59 me.activeFilter = null;\r
60 me.getTrigger('clear').hide();\r
61 me.updateLayout();\r
62 }\r
63 },\r
64\r
65 onSearchClick : function(){\r
66 var me = this,\r
67 value = me.getValue();\r
68\r
69 if (value.length > 0) {\r
70 // Param name is ignored here since we use custom encoding in the proxy.\r
71 // id is used by the Store to replace any previous filter\r
72 me.activeFilter = new Ext.util.Filter({\r
73 property: me.paramName,\r
74 value: value\r
75 });\r
76 me.store.getFilters().add(me.activeFilter);\r
77 me.getTrigger('clear').show();\r
78 me.updateLayout();\r
79 }\r
80 }\r
81});