]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/test/specs/layout/container/boxOverflow/Menu.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / test / specs / layout / container / boxOverflow / Menu.js
CommitLineData
6527f429
DM
1describe('Ext.layout.container.boxOverflow.Menu', function () {\r
2 var toolbar;\r
3\r
4 function createToolbar(cfg) {\r
5 toolbar = new Ext.toolbar.Toolbar(Ext.apply({\r
6 enableOverflow: true,\r
7 width: 1,\r
8 renderTo: Ext.getBody(),\r
9 items: [{\r
10 xtype: 'checkboxfield',\r
11 name: 'check1',\r
12 itemId: 'check1'\r
13 }]\r
14 }, cfg || {}));\r
15 }\r
16\r
17 afterEach(function () {\r
18 Ext.destroy(toolbar);\r
19 toolbar = null;\r
20 });\r
21\r
22 it("should be able to show a button menu after being overflowed", function() {\r
23 createToolbar({\r
24 items: [{\r
25 xtype: 'button',\r
26 text: 'Foo',\r
27 menu: {\r
28 items: {\r
29 text: 'Some Menu'\r
30 }\r
31 }\r
32 }]\r
33 });\r
34\r
35 var menu = toolbar.layout.overflowHandler.menu,\r
36 button = toolbar.items.first();\r
37\r
38 menu.show();\r
39 menu.hide();\r
40\r
41 toolbar.setWidth(300);\r
42\r
43 button.showMenu();\r
44 expect(button.getMenu().isVisible(true)).toBe(true);\r
45 });\r
46\r
47 describe('addComponentToMenu', function () {\r
48 it('should create an overflowClone bound to each toolbar item', function () {\r
49 createToolbar();\r
50\r
51 toolbar.layout.overflowHandler.menu.show();\r
52\r
53 expect(toolbar.items.getAt(0).overflowClone).toBeDefined();\r
54 });\r
55\r
56 it('should create an overflowClone bound to each toolbar item that is a reference to each menu item', function () {\r
57 var menu, item;\r
58\r
59 createToolbar();\r
60\r
61 menu = toolbar.layout.overflowHandler.menu;\r
62 menu.show();\r
63\r
64 item = menu.items.getAt(0);\r
65\r
66 expect(toolbar.items.getAt(0).overflowClone).toBe(item);\r
67 expect(item.name).toBe('check1');\r
68 });\r
69 });\r
70\r
71 describe('createMenuConfig', function () {\r
72 it('should have same state as its complement toolbar item', function () {\r
73 var toolbarItems, overflowHandler, menuItems;\r
74\r
75 createToolbar({\r
76 items: [{\r
77 xtype: 'checkboxfield',\r
78 name: 'check1',\r
79 itemId: 'check1'\r
80 }, {\r
81 xtype: 'checkboxfield',\r
82 name: 'check2',\r
83 itemId: 'check2',\r
84 checked: true\r
85 }]\r
86 });\r
87\r
88 toolbarItems = toolbar.items;\r
89 toolbarItems.getAt(0).setValue(true);\r
90 toolbarItems.getAt(1).setValue(false);\r
91\r
92 overflowHandler = toolbar.layout.overflowHandler;\r
93 menuItems = overflowHandler.menu.items;\r
94\r
95 overflowHandler.menu.show();\r
96\r
97 expect(menuItems.getAt(0).checked).toBe(true);\r
98 expect(menuItems.getAt(1).checked).toBe(false);\r
99 });\r
100\r
101 it('should not overwrite listeners config defined on the original component', function () {\r
102 // This test demonstrates that the menu item created from the original component's config\r
103 // will receive any listeners defined in the item's listeners config.\r
104 var wasClicked = false,\r
105 menu;\r
106\r
107 createToolbar({\r
108 items: [{\r
109 // Button by default.\r
110 xtype: 'button',\r
111 listeners: {\r
112 click: function () {\r
113 wasClicked = true;\r
114 }\r
115 }\r
116 }]\r
117 });\r
118\r
119 menu = toolbar.layout.overflowHandler.menu;\r
120 menu.show();\r
121 jasmine.fireMouseEvent(menu.items.getAt(0).el, 'click');\r
122\r
123 expect(wasClicked).toBe(true);\r
124 });\r
125 });\r
126\r
127 describe('form fields in toolbar', function() {\r
128 it('should sync the value both ways on change', function() {\r
129 var overflowHandler, master, clone;\r
130\r
131 createToolbar({\r
132 items: [{\r
133 xtype: 'textfield',\r
134 name: 'text1',\r
135 itemId: 'text1'\r
136 }]\r
137 });\r
138 overflowHandler = toolbar.layout.overflowHandler;\r
139 master = toolbar.down('#text1');\r
140 \r
141 overflowHandler.menu.show();\r
142 clone = overflowHandler.menu.down('[name=text1]');\r
143\r
144 // Check syncing both ways\r
145 master.setValue('foo');\r
146 expect(clone.getValue()).toBe('foo'); \r
147 clone.setValue('bar');\r
148 expect(master.getValue()).toBe('bar')\r
149 });\r
150 });\r
151});