From 2dfd719653086298aad9dba6699f8e3e175c2071 Mon Sep 17 00:00:00 2001 From: SassNinja <kai.falkowski@gmail.com> Date: Tue, 8 Aug 2017 01:01:33 +0200 Subject: [PATCH] Restore original position & alignment if no more overlap and set appropriate CSS classes --- js/foundation.dropdown.js | 2 ++ js/foundation.positionable.js | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/js/foundation.dropdown.js b/js/foundation.dropdown.js index 47e52ac0b0..ed054feece 100644 --- a/js/foundation.dropdown.js +++ b/js/foundation.dropdown.js @@ -105,7 +105,9 @@ class Dropdown extends Positionable { * @private */ _setPosition() { + this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`); super._setPosition(this.$currentAnchor, this.$element, this.$parent); + this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`); } /** diff --git a/js/foundation.positionable.js b/js/foundation.positionable.js index 04f7ee3671..e410e5c146 100644 --- a/js/foundation.positionable.js +++ b/js/foundation.positionable.js @@ -40,6 +40,8 @@ class Positionable extends Plugin { this.triedPositions = {}; this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position; this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment; + this.originalPosition = this.position; + this.originalAlignment = this.alignment; } _getDefaultPosition () { @@ -122,6 +124,12 @@ class Positionable extends Plugin { $anchorDims = Box.GetDimensions($anchor); + if (!this.options.allowOverlap) { + // restore original position & alignment before checking overlap + this.position = this.originalPosition; + this.alignment = this.originalAlignment; + } + $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); if(!this.options.allowOverlap) {