vrembem 3.0.13 → 3.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -366,16 +366,27 @@ function teleport(what, where, how) {
366
366
 
367
367
  const openTransition = (el, settings) => {
368
368
  return new Promise(resolve => {
369
+ // Check if transitions are enabled.
369
370
  if (settings.transition) {
371
+ // Toggle classes for opening transition.
370
372
  el.classList.remove(settings.stateClosed);
371
373
  el.classList.add(settings.stateOpening);
372
- el.addEventListener('transitionend', function _f() {
374
+
375
+ // Add event listener for when the transition is finished.
376
+ el.addEventListener('transitionend', function _f(event) {
377
+ // Prevent child transition bubbling from firing this event.
378
+ if (event.target != el) return;
379
+
380
+ // Toggle final opened state classes.
373
381
  el.classList.add(settings.stateOpened);
374
382
  el.classList.remove(settings.stateOpening);
383
+
384
+ // Resolve the promise and remove the event listener.
375
385
  resolve(el);
376
386
  this.removeEventListener('transitionend', _f);
377
387
  });
378
388
  } else {
389
+ // Toggle final opened state classes and resolve the promise.
379
390
  el.classList.add(settings.stateOpened);
380
391
  el.classList.remove(settings.stateClosed);
381
392
  resolve(el);
@@ -384,16 +395,27 @@ const openTransition = (el, settings) => {
384
395
  };
385
396
  const closeTransition = (el, settings) => {
386
397
  return new Promise(resolve => {
398
+ // Check if transitions are enabled.
387
399
  if (settings.transition) {
400
+ // Toggle classes for closing transition.
388
401
  el.classList.add(settings.stateClosing);
389
402
  el.classList.remove(settings.stateOpened);
390
- el.addEventListener('transitionend', function _f() {
403
+
404
+ // Add event listener for when the transition is finished.
405
+ el.addEventListener('transitionend', function _f(event) {
406
+ // Prevent child transition bubbling from firing this event.
407
+ if (event.target != el) return;
408
+
409
+ // Toggle final closed state classes.
391
410
  el.classList.remove(settings.stateClosing);
392
411
  el.classList.add(settings.stateClosed);
412
+
413
+ // Resolve the promise and remove the event listener.
393
414
  resolve(el);
394
415
  this.removeEventListener('transitionend', _f);
395
416
  });
396
417
  } else {
418
+ // Toggle final closed state classes and resolve the promise.
397
419
  el.classList.add(settings.stateClosed);
398
420
  el.classList.remove(settings.stateOpened);
399
421
  resolve(el);