From: SassNinja Date: Mon, 7 Aug 2017 23:01:33 +0000 (+0200) Subject: Restore original position & alignment if no more overlap and set appropriate CSS... X-Git-Tag: v6.4.4-rc1~33^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2dfd719653086298aad9dba6699f8e3e175c2071;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Restore original position & alignment if no more overlap and set appropriate CSS classes --- diff --git a/js/foundation.dropdown.js b/js/foundation.dropdown.js index 47e52ac0b..ed054feec 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 04f7ee367..e410e5c14 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) {