11/* eslint-disable no-undef */
22
33describe ( 'Modal:' , ( ) => {
4- let trigger1 , modal1 ;
4+ const fixture = `<a class="btn tonal trigger waves-effect waves-light" href="#" onclick="modal1.showModal(); return false;">Modal</a>
5+ <button class="btn btn-floating fixed-action-btn" onclick="modal1.showModal()"><i class="material-icons">menu</i></button>
56
6- const fixture = `<!-- Modal Trigger -->
7- <a class="waves-effect waves-light btn modal-trigger" href="#modal1">Modal</a>
8- <button class="btn btn-floating fixed-action-btn modal-trigger" data-target="modal1"><i class="material-icons">menu</i></button>
9-
10- <!-- Modal Structure -->
11- <div id="modal1" class="modal">
12- <div class="modal-content">
7+ <dialog id="modal1" class="modal">
8+ <div class="modal-header">
139 <h4>Modal Header</h4>
14- <p>A bunch of text</p>
1510 </div>
16- <div class="modal-footer">
17- <a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
18- </div>
19- </div>
20-
21-
22- <!-- Modal Trigger -->
23- <a class="waves-effect waves-light btn modal-trigger" href="#modal2">Modal</a>
24-
25- <!-- Modal Structure -->
26- <div id="modal2" class="modal modal-fixed-footer">
2711 <div class="modal-content">
28- <h4>Modal Header</h4>
2912 <p>A bunch of text</p>
3013 </div>
3114 <div class="modal-footer">
32- <a href="#!" class="modal- close waves-effect waves-green btn-flat ">Agree</a>
15+ <a href="#" onclick="modal1. close(); return false;" class=" waves-effect waves-green btn-flat">Agree</a>
3316 </div>
34- </div>
35-
36- <!-- Modal Trigger -->
37- <a class="waves-effect waves-light btn modal-trigger" href="#modal3">Modal</a>
38-
39- <!-- Modal Structure -->
40- <div id="modal3" class="modal bottom-sheet">
41- <div class="modal-content">
42- <h4>Modal Header</h4>
43- <p>A bunch of text</p>
44- </div>
45- <div class="modal-footer">
46- <a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
47- </div>
48- </div>
17+ </dialog>
4918` ;
19+
5020 beforeEach ( ( ) => {
5121 XloadHtml ( fixture ) ;
52- trigger1 = document . querySelector ( '.btn[href="#modal1"]' ) ;
53- triggerIcon1 = document . querySelector ( '.btn[data-target="modal1"] i' ) ;
54- trigger2 = document . querySelector ( '.btn[href="#modal2"]' ) ;
55- trigger3 = document . querySelector ( '.btn[href="#modal3"]' ) ;
56- modal1 = document . querySelector ( '#modal1' ) ;
57- modal2 = document . querySelector ( '#modal2' ) ;
58- modal3 = document . querySelector ( '#modal3' ) ;
5922 } ) ;
6023 afterEach ( ( ) => XunloadFixtures ( ) ) ;
6124
6225 describe ( 'Modals' , ( ) => {
6326 it ( 'Should open and close correctly' , ( done ) => {
64- M . Modal . init ( modal1 , { inDuration : 0 , outDuration : 0 } ) ;
27+ const modal1 = document . querySelector ( '.modal' ) ;
28+ const trigger = document . querySelector ( '.trigger' ) ;
6529 expect ( modal1 ) . toBeHidden ( 'Modal should be hidden' ) ;
66- click ( trigger1 ) ;
30+ click ( trigger ) ;
6731 setTimeout ( ( ) => {
6832 expect ( modal1 ) . toBeVisible ( 'Modal should be shown' ) ;
69- expect ( modal1 ) . toHaveClass ( 'open' , 'Modal should have class open' ) ;
70- // Check overlay is attached
71- let overlay = M . Modal . getInstance ( modal1 ) . _overlay ;
72- let overlayInDOM = document . contains ( overlay ) ;
73- expect ( overlayInDOM ) . toEqual ( true , 'Overlay should be attached on open' ) ;
74- click ( overlay ) ;
75- setTimeout ( ( ) => {
76- expect ( modal1 ) . toNotHaveClass ( 'open' , 'Modal should have class open removed' ) ;
77- let overlayInDOM = document . contains ( overlay ) ;
78- expect ( overlayInDOM ) . toEqual ( false , 'Overlay should be removed on close' ) ;
79- done ( ) ;
80- } , 10 ) ;
33+ done ( ) ;
8134 } , 10 ) ;
8235 } ) ;
8336
8437 it ( 'Should open and close correctly with children elements in trigger' , ( done ) => {
85- M . Modal . init ( modal1 , { inDuration : 0 , outDuration : 0 } ) ;
38+ const modal1 = document . querySelector ( '.modal' ) ;
39+ const triggerIcon1 = document . querySelector ( 'button i' ) ;
8640 expect ( modal1 ) . toBeHidden ( 'Modal should be hidden' ) ;
8741 click ( triggerIcon1 ) ;
8842 setTimeout ( ( ) => {
8943 expect ( modal1 ) . toBeVisible ( 'Modal should be shown' ) ;
90- expect ( modal1 ) . toHaveClass ( 'open' , 'Modal should have class open' ) ;
91- // Check overlay is attached
92- let overlay = M . Modal . getInstance ( modal1 ) . _overlay ;
93- let overlayInDOM = document . contains ( overlay ) ;
94- expect ( overlayInDOM ) . toEqual ( true , 'Overlay should be attached on open' ) ;
95- click ( overlay ) ;
96- setTimeout ( ( ) => {
97- expect ( modal1 ) . toNotHaveClass ( 'open' , 'Modal should have class open removed' ) ;
98- let overlayInDOM = document . contains ( overlay ) ;
99- expect ( overlayInDOM ) . toEqual ( false , 'Overlay should be removed on close' ) ;
100- done ( ) ;
101- } , 10 ) ;
44+ done ( ) ;
10245 } , 10 ) ;
10346 } ) ;
10447
48+ // Modals should not be dismissible, use a Popover then
49+
50+ /*
10551 it('Should have a dismissible option', (done) => {
106- M . Modal . init ( modal1 , {
107- dismissible : false ,
108- inDuration : 0 ,
109- outDuration : 0
110- } ) ;
52+ // M.Modal.init(modal1, {
53+ // dismissible: false,
54+ // inDuration: 0,
55+ // outDuration: 0
56+ // });
11157 click(trigger1);
11258 setTimeout(() => {
11359 expect(modal1).toBeVisible('Modal should be shown');
@@ -123,33 +69,20 @@ describe('Modal:', () => {
12369 }, 10);
12470 }, 10);
12571 });
72+ */
12673
12774 it ( 'Should have callbacks' , ( done ) => {
128- let readyTest = false ;
129- let completeTest = false ;
130- M . Modal . init ( modal1 , {
131- inDuration : 0 ,
132- outDuration : 0 ,
133- onOpenStart : ( ) => {
134- readyTest = true ;
135- } ,
136- onCloseStart : ( ) => {
137- completeTest = true ;
138- }
75+ let hasBeenClosed = false ;
76+ document . querySelector ( '.modal' ) . addEventListener ( 'close' , ( ) => {
77+ hasBeenClosed = true ;
13978 } ) ;
140- expect ( readyTest ) . toEqual ( false , 'callback not yet fired' ) ;
141- expect ( completeTest ) . toEqual ( false , 'callback not yet fired' ) ;
79+ const trigger1 = document . querySelector ( '.trigger' ) ;
14280 click ( trigger1 ) ;
81+ expect ( hasBeenClosed ) . toEqual ( false , 'callback not yet fired' ) ;
82+ click ( document . querySelector ( '.modal-footer a' ) ) ;
14383 setTimeout ( ( ) => {
144- expect ( readyTest ) . toEqual ( true , 'callback fired' ) ;
145- expect ( completeTest ) . toEqual ( false , 'callback not yet fired' ) ;
146- let overlay = M . Modal . getInstance ( modal1 ) . _overlay ;
147- click ( overlay ) ;
148- setTimeout ( ( ) => {
149- expect ( readyTest ) . toEqual ( true , 'callback fired' ) ;
150- expect ( completeTest ) . toEqual ( true , 'callback fired' ) ;
151- done ( ) ;
152- } , 10 ) ;
84+ expect ( hasBeenClosed ) . toEqual ( true , 'callback fired' ) ;
85+ done ( ) ;
15386 } , 10 ) ;
15487 } ) ;
15588 } ) ;
0 commit comments