]>
Commit | Line | Data |
---|---|---|
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 | |
5 | Ext.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 |