diff --git a/packages/file-handling/src/dbp-file-handling-clipboard.js b/packages/file-handling/src/dbp-file-handling-clipboard.js index 86875687a23311822231b2f66146445dfcef3866..0e53ad0f73871fb60cb22d6c25f0c01ec549fb12 100644 --- a/packages/file-handling/src/dbp-file-handling-clipboard.js +++ b/packages/file-handling/src/dbp-file-handling-clipboard.js @@ -207,8 +207,10 @@ export class FileHandlingClipboard extends ScopedElementsMixin(DBPLitElement) { } }); if (!this.clipboardSource) { - window.removeEventListener('beforeunload', this._onReceiveBeforeUnload); - window.addEventListener('beforeunload', this._onReceiveBeforeUnload); + if(!window.clipboardWarning) { + window.addEventListener('beforeunload', this._onReceiveBeforeUnload, false); + window.clipboardWarning = true; + } } } diff --git a/packages/file-handling/src/dbp-nextcloud-file-picker.js b/packages/file-handling/src/dbp-nextcloud-file-picker.js index 79099ff36ced20d1d5a42d0ac8c55fa4c28a9bba..5ddb0ed6440b9d2d97492dbdfd4b21374f3e5830 100644 --- a/packages/file-handling/src/dbp-nextcloud-file-picker.js +++ b/packages/file-handling/src/dbp-nextcloud-file-picker.js @@ -52,6 +52,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.selectAllButton = true; this.abortUploadButton = false; this.abortUpload = false; + this.isSelected = false; } static get scopedElements() { @@ -87,6 +88,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { activeDirectoryACL: { type: String, attribute: false }, selectAllButton: { type: Boolean, attribute: false }, abortUploadButton: { type: Boolean, attribute: false }, + isSelected: { type: Boolean, attribute: false }, }; } @@ -205,10 +207,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.directoryClicked(e, data); break; case "file": + this.isSelected = this.tabulatorTable.getSelectedRows().length > 0; if (this.tabulatorTable.getSelectedRows().length === this.tabulatorTable.getRows().filter(row => row.getData().type != 'directory' && this.checkFileType(row.getData(), this.allowedMimeTypes)).length) { this.selectAllButton = false; - } - else { + } else { this.selectAllButton = true; } break; @@ -1501,9 +1503,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="nextcloud-footer ${classMap({hidden: !this.isPickerActive})}"> <div class="nextcloud-footer-grid"> <button id="download-button" class="button select-button is-primary ${classMap({hidden: ((!this.directoriesOnly) || (this.directoriesOnly && this.abortUploadButton && this.forAll))})}" - @click="${() => { this.sendDirectory(this.tabulatorTable.getSelectedData()); }}">${this.folderIsSelected}</button> + @click="${() => { this.sendDirectory(this.tabulatorTable.getSelectedData()); }}" + ?disabled="${!this.isSelected}"> + ${this.folderIsSelected}</button> <button class="button select-button is-primary ${classMap({hidden: this.directoriesOnly})}" - @click="${() => { this.downloadFiles(this.tabulatorTable.getSelectedData()); }}">${i18n.t('nextcloud-file-picker.select-files')}</button> + @click="${() => { this.downloadFiles(this.tabulatorTable.getSelectedData()); }}" + ?disabled="${!this.isSelected}"> + ${i18n.t('nextcloud-file-picker.select-files')}</button> <button id="abortButton" class="button select-button hidden ${classMap({"visible": (this.directoriesOnly && this.forAll && this.abortUploadButton)})}" title="${i18n.t('nextcloud-file-picker.abort')}" @click="${() => { this.abortUpload = true; }}">${i18n.t('nextcloud-file-picker.abort')}</button>