From 2809847afbd434b9d9246ade4a96595f4004e4d8 Mon Sep 17 00:00:00 2001
From: Christina Toegl <toegl@tugraz.at>
Date: Tue, 29 Mar 2022 16:50:11 +0200
Subject: [PATCH] Fix select all issues

---
 packages/file-handling/src/clipboard.js       | 16 ++++---------
 .../src/nextcloud-file-picker.js              | 24 ++++++++-----------
 2 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/packages/file-handling/src/clipboard.js b/packages/file-handling/src/clipboard.js
index 44df2aa7..4437c29e 100644
--- a/packages/file-handling/src/clipboard.js
+++ b/packages/file-handling/src/clipboard.js
@@ -26,6 +26,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
         this.clipboardSelectBtnDisabled = true;
         this.tabulatorTable = null;
         this._onReceiveBeforeUnload = this.onReceiveBeforeUnload.bind(this);
+        this.boundSelectHandler = this.selectAllFiles.bind(this);
         this.filesToSave = [];
         this.numberOfSelectedFiles = 0;
         this.enabledTargets = 'local';
@@ -110,15 +111,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
         super.update(changedProperties);
     }
 
-    async firstUpdated() {
-        // Give the browser a chance to paint
-        await new Promise((r) => setTimeout(r, 0));
-        if (this._('#select_all')) {
-            let boundSelectHandler = this.selectAllFiles.bind(this);
-            this._('#select_all').addEventListener('click', boundSelectHandler);
-        }
-    }
-
     toggleCollapse(e) {
         const table = this.tabulatorTable;
         setTimeout(function () {
@@ -245,8 +237,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
             this.tabulatorTable.on("dataLoaded", this.dataLoadedFunction.bind(this));
         });
 
-
-
         //Register only one beforeunload Event for the clipboard warning
         if (!window.clipboardWarning) {
             window.addEventListener('beforeunload', this._onReceiveBeforeUnload, false);
@@ -312,6 +302,9 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
                     );
                 }
             }, 0);
+            if (this._('#select_all')) {
+                this._('#select_all').addEventListener('click', this.boundSelectHandler);
+            }
         }
     }
 
@@ -320,7 +313,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
         //window.removeEventListener('beforeunload', this._onReceiveBeforeUnload);
         super.disconnectedCallback();
         this.tabulatorTable.off("dataProcessed");
-
     }
 
     /**
diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js
index 4ac50b80..f4bf1d90 100644
--- a/packages/file-handling/src/nextcloud-file-picker.js
+++ b/packages/file-handling/src/nextcloud-file-picker.js
@@ -76,6 +76,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
         this.disableRowClick = false;
         this.boundRefreshOnWindowSizeChange = this.refreshOnWindowSizeChange.bind(this);
         this.boundCancelNewFolderHandler = this.cancelNewFolder.bind(this);
+        this.boundSelectHandler = this.selectAllFiles.bind(this);
     }
 
     static get scopedElements() {
@@ -150,19 +151,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
         super.disconnectedCallback();
     }
 
-    async firstUpdated() {
-        // Give the browser a chance to paint
-        await new Promise((r) => setTimeout(r, 0));
-        if (this._('#select_all')) {
-            let boundSelectHandler = this.selectAllFiles.bind(this);
-            this._('#select_all').addEventListener('click', boundSelectHandler);
-        }
-        if (this.directoriesOnly && this._('#select_all_wrapper')) {
-            this._('#select_all_wrapper').classList.remove('button-container');
-            this._('#select_all_wrapper').classList.add('hidden');
-        }
-    }
-
     connectedCallback() {
         super.connectedCallback();
         const that = this;
@@ -316,7 +304,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             this.tabulatorTable.on("rowAdded", this.rowAddedFunction.bind(this));
             this.tabulatorTable.on("dataLoaded", this.dataLoadedFunction.bind(this));
 
-
             if (
                 typeof this.allowedMimeTypes !== 'undefined' &&
                 this.allowedMimeTypes !== '' &&
@@ -436,6 +423,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
                     );
                 }
             }, 0);
+            if (this._('#select_all')) {
+                this._('#select_all').addEventListener('click', this.boundSelectHandler);
+            }
+            if (this.directoriesOnly && this._('#select_all_wrapper')) {
+                this._('#select_all_wrapper').classList.remove('button-container');
+                this._('#select_all_wrapper').classList.add('hidden');
+            }
         }
     }
 
@@ -2068,6 +2062,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
      */
     selectAllFiles() {
         let allSelected = this.checkAllSelected();
+
         if (allSelected) {
             this.tabulatorTable.getSelectedRows().forEach((row) => row.deselect());
         } else {
@@ -3158,6 +3153,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
             pkgName,
             'tabulator-tables/css/tabulator.min.css'
         );
+        
         return html`
             <div class="wrapper">
                 <link rel="stylesheet" href="${tabulatorCss}" />
-- 
GitLab