@@ -17,6 +17,37 @@ window.onresize = () => {
1717} ;
1818
1919
20+ function waitTransition ( section ) {
21+
22+ return new Promise ( ( resolve , reject ) => {
23+
24+ try {
25+
26+ let loop = setInterval ( ( ) => {
27+
28+ if (
29+ Math . round ( document . body . scrollLeft ) == section . offsetLeft
30+ && Math . round ( document . body . scrollTop ) == section . offsetTop
31+ ) {
32+
33+ clearInterval ( loop ) ;
34+ resolve ( ) ;
35+
36+ }
37+
38+ } , 1 ) ;
39+
40+ } catch ( err ) {
41+
42+ reject ( err ) ;
43+
44+ }
45+
46+ } )
47+
48+ }
49+
50+
2051for ( let checkBox of type . querySelectorAll ( 'form > div > label > input' ) ) {
2152
2253 checkBox . onchange = function ( ) {
@@ -44,7 +75,6 @@ type.querySelector('form').onsubmit = function(e) { e.preventDefault();
4475 if ( this . type . value == 'revert' ) {
4576
4677 summary . querySelector ( 'form > nav > button.finish' ) . style . display = 'none' ;
47- summary . querySelector ( 'form' ) . summary . parentNode . click ( ) ;
4878
4979 body . querySelector ( 'form > nav > button.finish' ) . style . display = 'none' ;
5080
@@ -58,10 +88,10 @@ type.querySelector('form').onsubmit = function(e) { e.preventDefault();
5888 behavior : 'smooth'
5989 } ) ;
6090
91+ waitTransition ( summary ) . then ( ( ) => summary . querySelector ( 'form' ) . summary . focus ( ) ) ;
92+
6193 } else {
6294
63- scope . querySelector ( 'form' ) . scope . parentNode . click ( ) ;
64-
6595 summary . querySelector ( 'form > nav > button.finish' ) . style . display = '' ;
6696
6797 body . querySelector ( 'form > nav > button.finish' ) . style . display = '' ;
@@ -76,6 +106,8 @@ type.querySelector('form').onsubmit = function(e) { e.preventDefault();
76106 behavior : 'smooth'
77107 } ) ;
78108
109+ waitTransition ( scope ) . then ( ( ) => scope . querySelector ( 'form' ) . scope . focus ( ) ) ;
110+
79111 }
80112
81113} ;
@@ -124,13 +156,13 @@ scope.querySelector('form').scope.oninput = function() {
124156} ;
125157scope . querySelector ( 'form' ) . onsubmit = function ( e ) { e . preventDefault ( ) ;
126158
127- summary . querySelector ( 'form' ) . summary . parentNode . click ( ) ;
128-
129159 currentTarget = summary ;
130160 summary . scrollIntoView ( {
131161 behavior : 'smooth'
132162 } ) ;
133163
164+ waitTransition ( summary ) . then ( ( ) => summary . querySelector ( 'form' ) . summary . focus ( ) ) ;
165+
134166} ;
135167scope . querySelector ( 'form' ) . onreset = function ( ) {
136168
@@ -139,6 +171,8 @@ scope.querySelector('form').onreset = function() {
139171 behavior : 'smooth'
140172 } ) ;
141173
174+ waitTransition ( type ) . then ( ( ) => type . querySelector ( 'input[checked]' ) . focus ( ) ) ;
175+
142176} ;
143177
144178
@@ -174,23 +208,24 @@ summary.querySelector('form').onsubmit = function(e) { e.preventDefault();
174208
175209 if ( e . submitter . classList . contains ( 'finish' ) ) {
176210
177- significantChange . querySelector ( 'form' ) . significantChange . parentNode . click ( ) ;
178211 significantChange . querySelector ( 'form' ) . significantChange . checked = false ;
179212
180213 currentTarget = significantChange ;
181214 significantChange . scrollIntoView ( {
182215 behavior : 'smooth'
183216 } ) ;
184217
185- } else {
218+ waitTransition ( significantChange ) . then ( ( ) => significantChange . querySelector ( 'form' ) . significantChange . focus ( ) ) ;
186219
187- body . querySelector ( 'form' ) . body . parentNode . click ( ) ;
220+ } else {
188221
189222 currentTarget = body ;
190223 body . scrollIntoView ( {
191224 behavior : 'smooth'
192225 } ) ;
193226
227+ waitTransition ( body ) . then ( ( ) => body . querySelector ( 'form' ) . body . focus ( ) ) ;
228+
194229 }
195230
196231} ;
@@ -203,15 +238,17 @@ summary.querySelector('form').onreset = function() {
203238 behavior : 'smooth'
204239 } ) ;
205240
206- } else {
241+ waitTransition ( type ) . then ( ( ) => type . querySelector ( 'input[checked]' ) . focus ( ) ) ;
207242
208- scope . querySelector ( 'form' ) . scope . parentNode . click ( ) ;
243+ } else {
209244
210245 currentTarget = scope ;
211246 scope . scrollIntoView ( {
212247 behavior : 'smooth'
213248 } ) ;
214249
250+ waitTransition ( scope ) . then ( ( ) => scope . querySelector ( 'form' ) . scope . focus ( ) ) ;
251+
215252 }
216253
217254} ;
@@ -221,36 +258,44 @@ body.querySelector('form').onsubmit = function(e) { e.preventDefault();
221258
222259 if ( e . submitter . classList . contains ( 'finish' ) ) {
223260
224- significantChange . querySelector ( 'form' ) . significantChange . parentNode . click ( ) ;
225261 significantChange . querySelector ( 'form' ) . significantChange . checked = false ;
226262
227263 currentTarget = significantChange ;
228264 significantChange . scrollIntoView ( {
229265 behavior : 'smooth'
230266 } ) ;
231267
268+ waitTransition ( significantChange ) . then ( ( ) => significantChange . querySelector ( 'form' ) . significantChange . focus ( ) ) ;
269+
232270 } else {
233271
234272 currentTarget = footer ;
235273 footer . scrollIntoView ( {
236274 behavior : 'smooth'
237275 } ) ;
238276
239- if ( type . querySelector ( 'form' ) . type . value == 'revert' )
240- setTimeout ( ( ) => footer . querySelector ( 'form button[type="submit"]' ) . click ( ) , 1000 ) ;
277+ if ( type . querySelector ( 'form' ) . type . value == 'revert' ) {
278+
279+ waitTransition ( footer ) . then ( ( ) => footer . querySelector ( 'form' ) . refs . focus ( ) ) ;
280+
281+ } else {
282+
283+ waitTransition ( footer ) ;
284+
285+ }
241286
242287 }
243288
244289} ;
245290body . querySelector ( 'form' ) . onreset = function ( ) {
246291
247- summary . querySelector ( 'form' ) . summary . parentNode . click ( ) ;
248-
249292 currentTarget = summary ;
250293 summary . scrollIntoView ( {
251294 behavior : 'smooth'
252295 } ) ;
253296
297+ waitTransition ( summary ) . then ( ( ) => summary . querySelector ( 'form' ) . summary . focus ( ) ) ;
298+
254299} ;
255300
256301
@@ -267,7 +312,6 @@ for (let text of footer.querySelectorAll('form > div > label > input[type="text"
267312}
268313footer . querySelector ( 'form' ) . onsubmit = function ( e ) { e . preventDefault ( ) ;
269314
270- significantChange . querySelector ( 'form' ) . significantChange . parentNode . click ( ) ;
271315 significantChange . querySelector ( 'form' ) . significantChange . checked = false ;
272316
273317 if ( this . breakingChange . value . trim ( ) != '' )
@@ -278,16 +322,18 @@ footer.querySelector('form').onsubmit = function(e) { e.preventDefault();
278322 behavior : 'smooth'
279323 } ) ;
280324
325+ waitTransition ( significantChange ) . then ( ( ) => significantChange . querySelector ( 'form' ) . significantChange . focus ( ) ) ;
326+
281327} ;
282328footer . querySelector ( 'form' ) . onreset = function ( ) {
283329
284- body . querySelector ( 'form' ) . body . parentNode . click ( ) ;
285-
286330 currentTarget = body ;
287331 body . scrollIntoView ( {
288332 behavior : 'smooth'
289333 } ) ;
290334
335+ waitTransition ( body ) . then ( ( ) => body . querySelector ( 'form' ) . body . focus ( ) ) ;
336+
291337} ;
292338
293339
@@ -300,7 +346,7 @@ significantChange.querySelector('form').onsubmit = function(e) { e.preventDefaul
300346 behavior : 'smooth'
301347 } ) ;
302348
303- setTimeout ( ( ) => type . querySelector ( 'form button[type="submit"]' ) . click ( ) , 1000 ) ;
349+ waitTransition ( type ) . then ( ( ) => type . querySelector ( 'form button[type="submit"]' ) . click ( ) ) ;
304350
305351 } else if ( summary . querySelector ( 'form' ) . summary . value . trim ( ) == '' ) {
306352
@@ -309,7 +355,7 @@ significantChange.querySelector('form').onsubmit = function(e) { e.preventDefaul
309355 behavior : 'smooth'
310356 } ) ;
311357
312- setTimeout ( ( ) => summary . querySelector ( 'form button[type="submit"]' ) . click ( ) , 1000 ) ;
358+ waitTransition ( summary ) . then ( ( ) => summary . querySelector ( 'form button[type="submit"]' ) . click ( ) ) ;
313359
314360 } if ( type . querySelector ( 'form' ) . type . value == 'revert' && footer . querySelector ( 'form' ) . refs . value . trim ( ) == '' ) {
315361
@@ -318,7 +364,7 @@ significantChange.querySelector('form').onsubmit = function(e) { e.preventDefaul
318364 behavior : 'smooth'
319365 } ) ;
320366
321- setTimeout ( ( ) => footer . querySelector ( 'form button[type="submit"]' ) . click ( ) , 1000 ) ;
367+ waitTransition ( footer ) . then ( ( ) => footer . querySelector ( 'form button[type="submit"]' ) . click ( ) ) ;
322368
323369 } else {
324370
@@ -355,6 +401,8 @@ significantChange.querySelector('form').onsubmit = function(e) { e.preventDefaul
355401 behavior : 'smooth'
356402 } ) ;
357403
404+ waitTransition ( result ) ;
405+
358406 }
359407
360408} ;
@@ -365,6 +413,16 @@ significantChange.querySelector('form').onreset = function() {
365413 behavior : 'smooth'
366414 } ) ;
367415
416+ if ( type . querySelector ( 'form' ) . type . value == 'revert' ) {
417+
418+ waitTransition ( footer ) . then ( ( ) => footer . querySelector ( 'form' ) . refs . focus ( ) ) ;
419+
420+ } else {
421+
422+ waitTransition ( footer ) ;
423+
424+ }
425+
368426} ;
369427
370428
@@ -385,19 +443,22 @@ result.querySelector('form').onsubmit = function(e) { e.preventDefault();
385443 behavior : 'smooth'
386444 } ) ;
387445
446+ waitTransition ( type ) . then ( ( ) => type . querySelector ( 'input[checked]' ) . focus ( ) ) ;
447+
388448 }
389449
390450} ;
391451result . querySelector ( 'form' ) . onreset = function ( ) {
392452
393453 let checked = significantChange . querySelector ( 'form' ) . significantChange . checked ;
394454
395- significantChange . querySelector ( 'form' ) . significantChange . parentNode . click ( ) ;
396455 significantChange . querySelector ( 'form' ) . significantChange . checked = checked ;
397456
398457 currentTarget = significantChange ;
399458 significantChange . scrollIntoView ( {
400459 behavior : 'smooth'
401460 } ) ;
402461
462+ waitTransition ( significantChange ) . then ( ( ) => significantChange . querySelector ( 'form' ) . significantChange . focus ( ) ) ;
463+
403464} ;
0 commit comments