@@ -14,22 +14,15 @@ describe('nested popover', () => {
1414 } ) ;
1515
1616 beforeEach ( async ( ) => {
17- popover = fixtureSync ( '<vaadin-popover></vaadin-popover>' ) ;
17+ popover = fixtureSync ( `
18+ <vaadin-popover>
19+ <button id="nested-target">Nested target</button>
20+ <vaadin-popover for="nested-target">Nested</vaadin-popover>
21+ </vaadin-popover>
22+ ` ) ;
1823 target = fixtureSync ( '<button>Target</button>' ) ;
1924 popover . target = target ;
20- popover . renderer = ( root ) => {
21- if ( root . firstChild ) {
22- return ;
23- }
24- root . innerHTML = `
25- <button id="nested-target">Nested target</button>
26- <vaadin-popover for="nested-target"></vaadin-popover>
27- ` ;
28- [ nestedTarget , nestedPopover ] = root . children ;
29- nestedPopover . renderer = ( root2 ) => {
30- root2 . textContent = 'Nested' ;
31- } ;
32- } ;
25+ [ nestedTarget , nestedPopover ] = popover . children ;
3326 await nextRender ( ) ;
3427 } ) ;
3528
@@ -170,100 +163,110 @@ describe('nested popover', () => {
170163} ) ;
171164
172165describe ( 'not nested popover' , ( ) => {
173- let popover , popoverContent , target , secondPopover , secondPopoverContent , secondTarget ;
166+ let popover1 , content1 , target1 , popover2 , content2 , target2 ;
174167
175168 beforeEach ( async ( ) => {
176- popover = fixtureSync ( '<vaadin-popover></vaadin-popover>' ) ;
177- target = fixtureSync ( '<button>Target</button>' ) ;
178- popover . target = target ;
179- popover . renderer = ( root ) => {
180- root . innerHTML = '<button>Popover content</button>' ;
181- popoverContent = root . firstElementChild ;
182- } ;
183-
184- secondPopover = fixtureSync ( '<vaadin-popover></vaadin-popover>' ) ;
185- secondTarget = fixtureSync ( '<button>Second Target</button>' ) ;
186- secondPopover . target = secondTarget ;
187- secondPopover . trigger = [ ] ;
188- secondPopover . renderer = ( root ) => {
189- root . innerHTML = '<button>Second Popover content</button>' ;
190- secondPopoverContent = root . firstElementChild ;
191- } ;
169+ [ popover1 , popover2 ] = fixtureSync ( `
170+ <div>
171+ <vaadin-popover>
172+ <button>Content 1</button>
173+ </vaadin-popover>
174+ <vaadin-popover>
175+ <button>Content 2</button>
176+ </vaadin-popover>
177+ </div>
178+ ` ) . children ;
179+
180+ [ target1 , target2 ] = fixtureSync ( `
181+ <div>
182+ <button>Target 1</button>
183+ <button>Target 2</button>
184+ </div>
185+ ` ) . children ;
186+
187+ popover1 . target = target1 ;
188+ popover2 . target = target2 ;
189+
190+ content1 = popover1 . firstElementChild ;
191+ content2 = popover2 . firstElementChild ;
192+
193+ popover2 . trigger = [ ] ;
194+
192195 await nextRender ( ) ;
193196 } ) ;
194197
195198 describe ( 'focus' , ( ) => {
196199 beforeEach ( ( ) => {
197- popover . trigger = [ 'focus' ] ;
200+ popover1 . trigger = [ 'focus' ] ;
198201 } ) ;
199202
200203 it ( 'should close the popover when focus moves from target to non-nested popover' , async ( ) => {
201- target . focus ( ) ;
204+ target1 . focus ( ) ;
202205 await nextRender ( ) ;
203206
204207 // open second popover
205- secondPopover . opened = true ;
208+ popover2 . opened = true ;
206209 await nextRender ( ) ;
207210
208- secondPopoverContent . focus ( ) ;
211+ content2 . focus ( ) ;
209212
210- expect ( popover . opened ) . to . be . false ;
213+ expect ( popover1 . opened ) . to . be . false ;
211214 } ) ;
212215
213216 it ( 'should close when focus moves from the overlay to non-nested popover' , async ( ) => {
214- target . focus ( ) ;
217+ target1 . focus ( ) ;
215218 await nextRender ( ) ;
216219
217- popoverContent . focus ( ) ;
220+ content1 . focus ( ) ;
218221 await nextRender ( ) ;
219- expect ( popover . opened ) . to . be . true ;
222+ expect ( popover1 . opened ) . to . be . true ;
220223
221224 // open second popover
222- secondPopover . opened = true ;
225+ popover2 . opened = true ;
223226 await nextRender ( ) ;
224227
225- secondPopoverContent . focus ( ) ;
228+ content2 . focus ( ) ;
226229 await nextRender ( ) ;
227230
228- expect ( popover . opened ) . to . be . false ;
231+ expect ( popover1 . opened ) . to . be . false ;
229232 } ) ;
230233 } ) ;
231234
232235 describe ( 'hover' , ( ) => {
233236 beforeEach ( ( ) => {
234- popover . trigger = [ 'hover' ] ;
237+ popover1 . trigger = [ 'hover' ] ;
235238 } ) ;
236239
237240 it ( 'should close the popover when mouse leaves target to non-nested popover' , async ( ) => {
238- mouseenter ( target ) ;
241+ mouseenter ( target1 ) ;
239242 await nextRender ( ) ;
240243
241244 // open second popover
242- secondPopover . opened = true ;
245+ popover2 . opened = true ;
243246 await nextRender ( ) ;
244247
245- mouseleave ( target , secondPopoverContent ) ;
246- await nextUpdate ( popover ) ;
248+ mouseleave ( target1 , content2 ) ;
249+ await nextUpdate ( popover1 ) ;
247250
248- expect ( popover . opened ) . to . be . false ;
251+ expect ( popover1 . opened ) . to . be . false ;
249252 } ) ;
250253
251254 it ( 'should close when mouse leaves the overlay to non-nested popover' , async ( ) => {
252- mouseenter ( target ) ;
255+ mouseenter ( target1 ) ;
253256 await nextRender ( ) ;
254257
255- mouseenter ( popoverContent ) ;
258+ mouseenter ( content1 ) ;
256259 await nextRender ( ) ;
257- expect ( popover . opened ) . to . be . true ;
260+ expect ( popover1 . opened ) . to . be . true ;
258261
259262 // open second popover
260- secondPopover . opened = true ;
263+ popover2 . opened = true ;
261264 await nextRender ( ) ;
262265
263- mouseleave ( popoverContent , secondPopoverContent ) ;
264- await nextUpdate ( popover ) ;
266+ mouseleave ( content1 , content2 ) ;
267+ await nextUpdate ( popover1 ) ;
265268
266- expect ( popover . opened ) . to . be . false ;
269+ expect ( popover1 . opened ) . to . be . false ;
267270 } ) ;
268271 } ) ;
269272} ) ;
0 commit comments