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.
@@ -629,16 +629,27 @@ function teleport(what, where, how) {
629
629
 
630
630
  var openTransition = function openTransition(el, settings) {
631
631
  return new Promise(function (resolve) {
632
+ // Check if transitions are enabled.
632
633
  if (settings.transition) {
634
+ // Toggle classes for opening transition.
633
635
  el.classList.remove(settings.stateClosed);
634
636
  el.classList.add(settings.stateOpening);
635
- el.addEventListener('transitionend', function _f() {
637
+
638
+ // Add event listener for when the transition is finished.
639
+ el.addEventListener('transitionend', function _f(event) {
640
+ // Prevent child transition bubbling from firing this event.
641
+ if (event.target != el) return;
642
+
643
+ // Toggle final opened state classes.
636
644
  el.classList.add(settings.stateOpened);
637
645
  el.classList.remove(settings.stateOpening);
646
+
647
+ // Resolve the promise and remove the event listener.
638
648
  resolve(el);
639
649
  this.removeEventListener('transitionend', _f);
640
650
  });
641
651
  } else {
652
+ // Toggle final opened state classes and resolve the promise.
642
653
  el.classList.add(settings.stateOpened);
643
654
  el.classList.remove(settings.stateClosed);
644
655
  resolve(el);
@@ -647,16 +658,27 @@ var openTransition = function openTransition(el, settings) {
647
658
  };
648
659
  var closeTransition = function closeTransition(el, settings) {
649
660
  return new Promise(function (resolve) {
661
+ // Check if transitions are enabled.
650
662
  if (settings.transition) {
663
+ // Toggle classes for closing transition.
651
664
  el.classList.add(settings.stateClosing);
652
665
  el.classList.remove(settings.stateOpened);
653
- el.addEventListener('transitionend', function _f() {
666
+
667
+ // Add event listener for when the transition is finished.
668
+ el.addEventListener('transitionend', function _f(event) {
669
+ // Prevent child transition bubbling from firing this event.
670
+ if (event.target != el) return;
671
+
672
+ // Toggle final closed state classes.
654
673
  el.classList.remove(settings.stateClosing);
655
674
  el.classList.add(settings.stateClosed);
675
+
676
+ // Resolve the promise and remove the event listener.
656
677
  resolve(el);
657
678
  this.removeEventListener('transitionend', _f);
658
679
  });
659
680
  } else {
681
+ // Toggle final closed state classes and resolve the promise.
660
682
  el.classList.add(settings.stateClosed);
661
683
  el.classList.remove(settings.stateOpened);
662
684
  resolve(el);