]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/src/form/trigger/Spinner.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / form / trigger / Spinner.js
CommitLineData
6527f429
DM
1/**\r
2 * A Trigger that contains 2 clickable elements inside in the form of a "up" and a "down"\r
3 * trigger.\r
4 */\r
5Ext.define('Ext.form.trigger.Spinner', {\r
6 extend: 'Ext.form.trigger.Trigger',\r
7 alias: 'trigger.spinner',\r
8\r
9 cls: Ext.baseCSSPrefix + 'form-trigger-spinner',\r
10 spinnerCls: Ext.baseCSSPrefix + 'form-spinner',\r
11 spinnerUpCls: Ext.baseCSSPrefix + 'form-spinner-up',\r
12 spinnerDownCls: Ext.baseCSSPrefix + 'form-spinner-down',\r
13 focusCls: Ext.baseCSSPrefix + 'form-spinner-focus',\r
14 overCls: Ext.baseCSSPrefix + 'form-spinner-over',\r
15 clickCls: Ext.baseCSSPrefix + 'form-spinner-click',\r
16\r
17 // restore focus to the input element on spin end.\r
18 focusFieldOnClick: true,\r
19\r
20 /**\r
21 * @cfg {Function/String} [upHandler=undefined]\r
22 * The handler for the 'up' button\r
23 * @declarativeHandler\r
24 */\r
25\r
26 /**\r
27 * @cfg {Function/String} [downHandler=undefined]\r
28 * The handler for the 'down' button\r
29 * @declarativeHandler\r
30 */\r
31\r
32 /**\r
33 * @cfg\r
34 * True to layout the spinner in a vertical format.\r
35 *\r
36 * **Note:** This is not intended to be configured on an instance level, but is\r
37 * meant to be overridden by mobile-friendly themes that provide styling for\r
38 * vertically oriented triggers.\r
39 */\r
40 vertical: true,\r
41\r
42 bodyTpl:\r
43 '<tpl if="vertical">' +\r
44 '<div class="{spinnerCls} {spinnerCls}-{ui} {spinnerUpCls} {spinnerUpCls}-{ui}' +\r
45 ' {childElCls} {upDisabledCls}"></div>' +\r
46 '</tpl>' +\r
47 '<div class="{spinnerCls} {spinnerCls}-{ui} {spinnerDownCls} {spinnerDownCls}-{ui}' +\r
48 ' {childElCls} {downDisabledCls}"></div>' +\r
49 '<tpl if="!vertical">' +\r
50 '<div class="{spinnerCls} {spinnerCls}-{ui} {spinnerUpCls} {spinnerUpCls}-{ui}' +\r
51 ' {childElCls} {upDisabledCls}"></div>' +\r
52 '</tpl>',\r
53\r
54 destroy: function() {\r
55 var me = this;\r
56\r
57 if (me.spinnerEl) {\r
58 me.spinnerEl.destroy();\r
59 me.spinnerEl = me.upEl = me.downEl = null;\r
60 }\r
61\r
62 me.callParent();\r
63 },\r
64\r
65 getBodyRenderData: function() {\r
66 var me = this;\r
67\r
68 return {\r
69 vertical: me.vertical,\r
70 upDisabledCls: me.upEnabled ? '' : (me.spinnerUpCls + '-disabled'),\r
71 downDisabledCls: me.downEnabled ? '' : (me.spinnerDownCls + '-disabled'),\r
72 spinnerCls: me.spinnerCls,\r
73 spinnerUpCls: me.spinnerUpCls,\r
74 spinnerDownCls: me.spinnerDownCls\r
75 };\r
76 },\r
77\r
78 getStateEl: function() {\r
79 return this.spinnerEl;\r
80 },\r
81\r
82 onClick: function () {\r
83 var me = this,\r
84 args = arguments,\r
85 e = me.clickRepeater ? args[1] : args[0],\r
86 field = me.field;\r
87\r
88 if (!field.readOnly && !field.disabled) {\r
89 if (me.upEl.contains(e.target)) {\r
90 Ext.callback(me.upHandler, me.scope, [field, me, e], 0, field);\r
91 } else if (me.downEl.contains(e.target)) {\r
92 Ext.callback(me.downHandler, me.scope, [field, me, e], 0, field);\r
93 }\r
94 }\r
95\r
96 field.inputEl.focus();\r
97 },\r
98\r
99 onFieldRender: function() {\r
100 var me = this,\r
101 vertical = me.vertical,\r
102 spinnerEl, elements;\r
103\r
104 me.callParent();\r
105\r
106 /**\r
107 * @property {Ext.dom.CompositeElement} spinnerEl\r
108 * @private\r
109 * The "up" spinner element\r
110 */\r
111 spinnerEl = me.spinnerEl = me.el.select('.' + me.spinnerCls, true);\r
112 elements = spinnerEl.elements;\r
113\r
114 me.upEl = vertical ? elements[0] : elements[1];\r
115 me.downEl = vertical ? elements[1] : elements[0];\r
116 },\r
117\r
118 /**\r
119 * @private\r
120 */\r
121 setUpEnabled: function(enabled) {\r
122 this.upEl[enabled ? 'removeCls' : 'addCls'](this.spinnerUpCls + '-disabled');\r
123 },\r
124\r
125 /**\r
126 * @private\r
127 */\r
128 setDownEnabled: function(enabled) {\r
129 this.downEl[enabled ? 'removeCls' : 'addCls'](this.spinnerDownCls + '-disabled');\r
130 }\r
131\r
132});\r