diff options
author | Stefan Parviainen <saparvia@caterva.eu> | 2015-01-21 12:28:45 +0100 |
---|---|---|
committer | Stefan Parviainen <saparvia@caterva.eu> | 2015-01-21 12:28:45 +0100 |
commit | 6ea5b577157606ee649b7948197dc7b23e61ce40 (patch) | |
tree | 609f3d95540b22d263f67ac2e50f66a2d25e64a2 | |
parent | 2757da433e99fda4368ce07f4f44a0e59a5dd45e (diff) | |
download | volse-hubzilla-6ea5b577157606ee649b7948197dc7b23e61ce40.tar.gz volse-hubzilla-6ea5b577157606ee649b7948197dc7b23e61ce40.tar.bz2 volse-hubzilla-6ea5b577157606ee649b7948197dc7b23e61ce40.zip |
Update to latest version of jquery-textcomplete.
-rw-r--r-- | library/jquery-textcomplete/jquery.textcomplete.js | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js index c8303eaa0..3df84f3b4 100644 --- a/library/jquery-textcomplete/jquery.textcomplete.js +++ b/library/jquery-textcomplete/jquery.textcomplete.js @@ -124,9 +124,8 @@ if (typeof jQuery === 'undefined') { this.views = []; this.option = $.extend({}, Completer._getDefaults(), option); - if (!this.$el.is('input[type=text]') && !this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') { - throw new Error('textcomplete must be called on a input[type=text], Textarea or a ContentEditable.'); + throw new Error('textcomplete must be called on a Textarea or a ContentEditable.'); } if (element === document.activeElement) { @@ -414,6 +413,22 @@ if (typeof jQuery === 'undefined') { setPosition: function (position) { this.$el.css(this._applyPlacement(position)); + + // Make the dropdown fixed if the input is also fixed + // This can't be done during init, as textcomplete may be used on multiple elements on the same page + // Because the same dropdown is reused behind the scenes, we need to recheck every time the dropdown is showed + var position = 'absolute'; + // Check if input or one of its parents has positioning we need to care about + this.$inputEl.add(this.$inputEl.parents()).each(function() { + if($(this).css('position') === 'absolute') // The element has absolute positioning, so it's all OK + return false; + if($(this).css('position') === 'fixed') { + position = 'fixed'; + return false; + } + }); + this.$el.css({ position: position }); // Update positioning + return this; }, |