From 9b01e404fa10169cc17790c6a5307c6af56acc67 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christina=20T=C3=B6gl?= <toegl@tugraz.at>
Date: Wed, 10 Nov 2021 11:07:41 +0100
Subject: [PATCH] Add event listener to additional menu

---
 .../src/nextcloud-file-picker.js              | 31 +++++++++----------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js
index e9a41633..a6e6c6d6 100644
--- a/packages/file-handling/src/nextcloud-file-picker.js
+++ b/packages/file-handling/src/nextcloud-file-picker.js
@@ -59,7 +59,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
         this.authInfo = '';
         this.selectBtnDisabled = true;
         this.storeSession = false;
-        this.boundCloseAdditionalMenuHandler = this.closeAdditionalMenu.bind(this);
+        this.boundCloseAdditionalMenuHandler = this.hideMoreMenu.bind(this);//this.closeAdditionalMenu.bind(this);
         this.initateOpenAdditionalMenu = false;
         this.showAdditionalMenu = false;
         this.isInFavorites = false;
@@ -1595,17 +1595,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
         return this.nextcloudFileURL + this.directoryPath;
     }
 
-    closeAdditionalMenu() { //TODO integrate this
-        if (this.initateOpenAdditionalMenu && this.showAdditionalMenu) {
-            this.initateOpenAdditionalMenu = false;
-            return;
-        }
-        if (this.showAdditionalMenu){
-            document.removeEventListener('click', this.boundCloseAdditionalMenuHandler);
-            this.showAdditionalMenu = false;
-        }
-    }
-
     toggleMoreMenu() {
         const menu = this.shadowRoot.querySelector("ul.extended-menu");
         const menuStart = this.shadowRoot.querySelector("a.extended-menu-link");
@@ -1614,8 +1603,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             return;
         }
 
-        menu.classList.toggle('hidden');
+        menu.classList.toggle('hidden'); //sets hidden or removes it
 
+        // computations for overflow - begin
         if (this.menuHeight === -1) {
             this.menuHeight = menu.clientHeight;
         }
@@ -1631,15 +1621,24 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             document.body.removeAttribute('style', 'overflow:hidden;');
             menu.removeAttribute('style');
         }
+        // computations for overflow - end
 
-        if (!this.showAdditionalMenu) {
-            this.initateOpenAdditionalMenu = true;
-            this.showAdditionalMenu = true;
+        if (!menu.classList.contains('hidden')) { // add event listener for clicking outside of menu
             document.addEventListener('click', this.boundCloseAdditionalMenuHandler);
+            console.log('add event listener');
+            this.initateOpenAdditionalMenu = true;
+        }
+        else {
+            document.removeEventListener('click', this.boundCloseAdditionalMenuHandler);
+            console.log('delete event listener');
         }
     }
 
     hideMoreMenu() {
+        if (this.initateOpenAdditionalMenu) {
+            this.initateOpenAdditionalMenu = false;
+            return;
+        }
         const menu = this.shadowRoot.querySelector("ul.extended-menu");
         if (menu && !menu.classList.contains('hidden'))
             this.toggleMoreMenu();
-- 
GitLab