]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | describe('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 | }); |