diff options
Diffstat (limited to 'ext/mixed/js/popup-menu.js')
| -rw-r--r-- | ext/mixed/js/popup-menu.js | 20 | 
1 files changed, 12 insertions, 8 deletions
| diff --git a/ext/mixed/js/popup-menu.js b/ext/mixed/js/popup-menu.js index 2e3f395d..124c1984 100644 --- a/ext/mixed/js/popup-menu.js +++ b/ext/mixed/js/popup-menu.js @@ -21,6 +21,7 @@ class PopupMenu extends EventDispatcher {          this._sourceElement = sourceElement;          this._containerNode = containerNode;          this._node = containerNode.querySelector('.popup-menu'); +        this._bodyNode = containerNode.querySelector('.popup-menu-body');          this._isClosed = false;          this._eventListeners = new EventListenerCollection();      } @@ -37,13 +38,17 @@ class PopupMenu extends EventDispatcher {          return this._node;      } +    get bodyNode() { +        return this._bodyNode; +    } +      get isClosed() {          return this._isClosed;      }      prepare() { -        const items = this._node.querySelectorAll('.popup-menu-item'); -        this._setPosition(items); +        const items = this._bodyNode.querySelectorAll('.popup-menu-item'); +        this._setPosition();          this._containerNode.focus();          this._eventListeners.addEventListener(window, 'resize', this._onWindowResize.bind(this), false); @@ -84,7 +89,7 @@ class PopupMenu extends EventDispatcher {          this._close(null, 'resize', true);      } -    _setPosition(items) { +    _setPosition() {          // Get flags          let horizontal = 1;          let vertical = 1; @@ -138,11 +143,10 @@ class PopupMenu extends EventDispatcher {          const menuRect = menu.getBoundingClientRect();          let top = menuRect.top;          let bottom = menuRect.bottom; -        if (verticalCover === 1 && items.length > 0) { -            const rect1 = items[0].getBoundingClientRect(); -            const rect2 = items[items.length - 1].getBoundingClientRect(); -            top = rect1.top; -            bottom = rect2.bottom; +        if (verticalCover === 1) { +            const bodyRect = this._bodyNode.getBoundingClientRect(); +            top = bodyRect.top; +            bottom = bodyRect.bottom;          }          let x = ( |