From a48d30caabf3f94dc45fbde1046a045a12ed2054 Mon Sep 17 00:00:00 2001 From: Kevin Ball Date: Fri, 21 Oct 2016 14:54:32 -0700 Subject: [PATCH] Fix cleanup issues found by unit tests --- js/foundation.orbit.js | 5 +++-- js/foundation.reveal.js | 19 +++++++++++-------- js/foundation.tooltip.js | 2 +- js/foundation.util.keyboard.js | 1 + 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/js/foundation.orbit.js b/js/foundation.orbit.js index 8a41d4dff..3da0b04c5 100644 --- a/js/foundation.orbit.js +++ b/js/foundation.orbit.js @@ -216,7 +216,7 @@ class Orbit { _this.changeSlide(ltr, $slide, idx); }); } - + if (this.options.accessible) { this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) { // handle keyboard event with keyboard util @@ -247,6 +247,7 @@ class Orbit { * @fires Orbit#slidechange */ changeSlide(isLTR, chosenSlide, idx) { + if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup var $curSlide = this.$slides.filter('.is-active').eq(0); if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function @@ -273,7 +274,7 @@ class Orbit { * @event Orbit#beforeslidechange */ this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]); - + if (this.options.bullets) { idx = idx || this.$slides.index($newSlide); //grab index to update bullets this._updateBullets(idx); diff --git a/js/foundation.reveal.js b/js/foundation.reveal.js index 211f1667c..05f949c20 100644 --- a/js/foundation.reveal.js +++ b/js/foundation.reveal.js @@ -157,10 +157,10 @@ class Reveal { if (this.options.closeOnClick && this.options.overlay) { this.$overlay.off('.zf.reveal').on('click.zf.reveal', function(e) { - if (e.target === _this.$element[0] || - $.contains(_this.$element[0], e.target) || - !$.contains(document, e.target)) { - return; + if (e.target === _this.$element[0] || + $.contains(_this.$element[0], e.target) || + !$.contains(document, e.target)) { + return; } _this.close(); }); @@ -247,8 +247,10 @@ class Reveal { Foundation.Motion.animateIn(this.$overlay, 'fade-in'); } Foundation.Motion.animateIn(this.$element, this.options.animationIn, () => { - this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); - afterAnimationFocus(); + if(this.$element) { // protect against object having been removed + this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); + afterAnimationFocus(); + } }); } // jQuery method of reveal @@ -292,12 +294,13 @@ class Reveal { */ _extraHandlers() { var _this = this; + if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { $('body').on('click.zf.reveal', function(e) { - if (e.target === _this.$element[0] || - $.contains(_this.$element[0], e.target) || + if (e.target === _this.$element[0] || + $.contains(_this.$element[0], e.target) || !$.contains(document, e.target)) { return; } _this.close(); }); diff --git a/js/foundation.tooltip.js b/js/foundation.tooltip.js index dd85fadda..1936d1b95 100644 --- a/js/foundation.tooltip.js +++ b/js/foundation.tooltip.js @@ -455,4 +455,4 @@ Tooltip.defaults = { // Window exports Foundation.plugin(Tooltip, 'Tooltip'); -}(jQuery); \ No newline at end of file +}(jQuery); diff --git a/js/foundation.util.keyboard.js b/js/foundation.util.keyboard.js index 290e74382..d4a5344ac 100644 --- a/js/foundation.util.keyboard.js +++ b/js/foundation.util.keyboard.js @@ -83,6 +83,7 @@ var Keyboard = { * @return {jQuery} $focusable - all focusable elements within `$element` */ findFocusable($element) { + if(!$element) {return false; } return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() { if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0 return true; -- 2.47.2