]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/test/specs/layout/container/boxOverflow/Menu.js
bump version to 7.0.0-4
[extjs.git] / extjs / classic / classic / test / specs / layout / container / boxOverflow / Menu.js
CommitLineData
947f0963
TL
1topSuite("Ext.layout.container.boxOverflow.Menu",
2 ['Ext.toolbar.Toolbar', 'Ext.Button', 'Ext.form.field.Text'],
3function() {
4 var toolbar;
5
6 function createToolbar(cfg) {
7 toolbar = new Ext.toolbar.Toolbar(Ext.apply({
8 enableOverflow: true,
9 width: 1,
10 renderTo: Ext.getBody(),
11 items: [{
12 xtype: 'checkboxfield',
13 name: 'check1',
14 itemId: 'check1'
15 }]
16 }, cfg || {}));
17 }
18
19 afterEach(function() {
20 Ext.destroy(toolbar);
21 toolbar = null;
22 });
23
24 it("should be able to show a button menu after being overflowed", function() {
25 createToolbar({
26 items: [{
27 xtype: 'button',
28 text: 'Foo',
29 menu: {
30 items: {
31 text: 'Some Menu'
32 }
33 }
34 }]
35 });
36
37 var menu = toolbar.layout.overflowHandler.menu,
38 button = toolbar.items.first();
39
40 menu.show();
41 menu.hide();
42
43 toolbar.setWidth(300);
44
45 button.showMenu();
46 expect(button.getMenu().isVisible(true)).toBe(true);
47 });
48
49 describe('addComponentToMenu', function() {
50 it('should create an overflowClone bound to each toolbar item', function() {
51 createToolbar();
52
53 toolbar.layout.overflowHandler.menu.show();
54
55 expect(toolbar.items.getAt(0).overflowClone).toBeDefined();
56 });
57
58 it('should create an overflowClone bound to each toolbar item that is a reference to each menu item', function() {
59 var menu, item;
60
61 createToolbar();
62
63 menu = toolbar.layout.overflowHandler.menu;
64 menu.show();
65
66 item = menu.items.getAt(0);
67
68 expect(toolbar.items.getAt(0).overflowClone).toBe(item);
69 expect(item.name).toBe('check1');
70 });
71 });
72
73 describe('createMenuConfig', function() {
74 it('should have same state as its complement toolbar item', function() {
75 var toolbarItems, overflowHandler, menuItems;
76
77 createToolbar({
78 items: [{
79 xtype: 'checkboxfield',
80 name: 'check1',
81 itemId: 'check1'
82 }, {
83 xtype: 'checkboxfield',
84 name: 'check2',
85 itemId: 'check2',
86 checked: true
87 }]
88 });
89
90 toolbarItems = toolbar.items;
91 toolbarItems.getAt(0).setValue(true);
92 toolbarItems.getAt(1).setValue(false);
93
94 overflowHandler = toolbar.layout.overflowHandler;
95 menuItems = overflowHandler.menu.items;
96
97 overflowHandler.menu.show();
98
99 expect(menuItems.getAt(0).checked).toBe(true);
100 expect(menuItems.getAt(1).checked).toBe(false);
101 });
102
103 it('should be able to enable/disable a component', function() {
104 var toolbarItems, overflowHandler, menuItems;
105
106 createToolbar({
107 items: [{
108 xtype: 'checkboxfield',
109 name: 'check1',
110 itemId: 'check1'
111 }, {
112 xtype: 'checkboxfield',
113 name: 'check2',
114 itemId: 'check2',
115 checked: true,
116 disabled: true
117 }]
118 });
119
120 toolbarItems = toolbar.items;
121
122 overflowHandler = toolbar.layout.overflowHandler;
123 menuItems = overflowHandler.menu.items;
124
125 overflowHandler.menu.show();
126
127 toolbarItems.getAt(0).setDisabled(true);
128 toolbarItems.getAt(1).setDisabled(false);
129
130 expect(menuItems.getAt(0).disabled).toBe(true);
131 expect(menuItems.getAt(1).disabled).toBe(false);
132 });
133
134 it('should not overwrite listeners config defined on the original component', function() {
135 // This test demonstrates that the menu item created from the original component's config
136 // will receive any listeners defined in the item's listeners config.
137 var wasClicked = false,
138 menu;
139
140 createToolbar({
141 items: [{
142 // Button by default.
143 xtype: 'button',
144 listeners: {
145 click: function() {
146 wasClicked = true;
147 }
148 }
149 }]
150 });
151
152 menu = toolbar.layout.overflowHandler.menu;
153 menu.show();
154 jasmine.fireMouseEvent(menu.items.getAt(0).el, 'click');
155
156 expect(wasClicked).toBe(true);
157 });
158
159 it('should apply overflowText if defined', function() {
160 var overflowHandler, menuItems;
161
162 createToolbar({
163 items: [{
164 text: 'Item One'
165 }, {
166 text: 'Item Two',
167 overflowText: 'Two'
168 }, {
169 overflowText: 'Three'
170 }]
171 });
172
173 overflowHandler = toolbar.layout.overflowHandler;
174 menuItems = overflowHandler.menu.items;
175
176 overflowHandler.menu.show();
177
178 expect(menuItems.getAt(0).text).toBe('Item One');
179 expect(menuItems.getAt(1).text).toBe('Two');
180 expect(menuItems.getAt(2).text).toBe('Three');
181 });
182 });
183
184 describe('form fields in toolbar', function() {
185 it('should sync the value both ways on change', function() {
186 var overflowHandler, master, clone;
187
188 createToolbar({
189 items: [{
190 xtype: 'textfield',
191 name: 'text1',
192 itemId: 'text1'
193 }]
194 });
195 overflowHandler = toolbar.layout.overflowHandler;
196 master = toolbar.down('#text1');
197
198 overflowHandler.menu.show();
199 clone = overflowHandler.menu.down('[name=text1]');
200
201 // Check syncing both ways
202 master.setValue('foo');
203 expect(clone.getValue()).toBe('foo');
204 clone.setValue('bar');
205 expect(master.getValue()).toBe('bar');
206 });
207 });
208});