Skip to content

Commit

Permalink
Fix autocomplete dropdown overflowing the viewport
Browse files Browse the repository at this point in the history
  • Loading branch information
pitaj committed Feb 10, 2018
1 parent 7f744c9 commit 9fbcb8b
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions static/lib/composer/autocomplete.js
Expand Up @@ -8,22 +8,31 @@ define('composer/autocomplete', ['composer/preview'], function(preview) {

autocomplete.init = function(postContainer) {
var element = postContainer.find('.write');
var dropdownClass = 'composer-autocomplete-dropdown-' + utils.generateUUID();
var timer;

var data = {
element: element,
strategies: [],
options: {
zIndex: 20000,
listPosition: function(position) {
// Adjust calculated position based on window scrollTop value
position.top -= $(window).scrollTop();

this.$el.css(this._applyPlacement(position));
this.$el.css('position', 'fixed');
return this;
}
dropdownClassName: dropdownClass + ' dropdown-menu textcomplete-dropdown',
}
};

element.on('keyup', function () {
clearTimeout(timer);
timer = setTimeout(function () {
var dropdown = document.querySelector('.' + dropdownClass);
var pos = dropdown.getBoundingClientRect();

var margin = parseFloat(dropdown.style.marginTop, 10) || 0;

var offset = window.innerHeight + margin - 10 - pos.bottom;
dropdown.style.marginTop = Math.min(offset, 0) + 'px';
}, 0);
});

$(window).trigger('composer:autocomplete:init', data);
data.element.textcomplete(data.strategies, data.options);
$('.textcomplete-wrapper').css('height', '100%').find('textarea').css('height', '100%');
Expand Down

0 comments on commit 9fbcb8b

Please sign in to comment.