From fb7ef0eeb333f24ff8cdb94165618f30027b941d Mon Sep 17 00:00:00 2001
From: Tamara Steinwender <tamara.steinwender@tugraz.at>
Date: Tue, 27 Jul 2021 11:28:53 +0200
Subject: [PATCH] Add multi and single file-select support in file-handling
 file-source

---
 packages/file-handling/src/file-source.js | 26 +++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/packages/file-handling/src/file-source.js b/packages/file-handling/src/file-source.js
index 65850f49..fe06d43e 100644
--- a/packages/file-handling/src/file-source.js
+++ b/packages/file-handling/src/file-source.js
@@ -57,6 +57,7 @@ export class FileSource extends ScopedElementsMixin(DbpFileHandlingLitElement) {
         this.firstOpen = true;
         this.nextcloudAuthInfo = '';
         this.maxFileSize = '';
+        this.multipleFiles = true;
 
         this.initialFileHandlingState = {target: '', path: ''};
     }
@@ -91,6 +92,7 @@ export class FileSource extends ScopedElementsMixin(DbpFileHandlingLitElement) {
             activeTarget: { type: String, attribute: 'active-target' },
             isDialogOpen: { type: Boolean, attribute: 'dialog-open' },
             maxFileSize: { type: Number, attribute: 'max-file-size'},
+            multipleFiles: { type: Number, attribute: 'number-of-files'},
 
             initialFileHandlingState: {type: Object, attribute: 'initial-file-handling-state'},
         };
@@ -520,6 +522,7 @@ export class FileSource extends ScopedElementsMixin(DbpFileHandlingLitElement) {
                    nextcloud-file-url="${this.nextcloudFileURL}"
                    auth-info="${this.nextcloudAuthInfo}"
                    allowed-mime-types="${this.allowedMimeTypes}"
+                   max-selected-items="${this.multipleFiles}"
                    @dbp-nextcloud-file-picker-file-downloaded="${(event) => {
                     this.sendFileEvent(event.detail.file, event.detail.maxUpload);}}">
                 </dbp-nextcloud-file-picker>`;
@@ -636,6 +639,22 @@ export class FileSource extends ScopedElementsMixin(DbpFileHandlingLitElement) {
             allowedMimeTypes += ",application/zip,application/x-zip-compressed";
         }
 
+        let inputFile = html``;
+        if (this.multipleFiles > 1 || this.multipleFiles === true ) {
+            inputFile = html `<input ?disabled="${this.disabled}"
+                                     type="file"
+                                     id="fileElem"
+                                     multiple
+                                     accept="${mimeTypesToAccept(allowedMimeTypes)}"
+                                     name='file'>`;
+        } else {
+            inputFile = html `<input ?disabled="${this.disabled}"
+                                     type="file"
+                                     id="fileElem"
+                                     accept="${mimeTypesToAccept(allowedMimeTypes)}"
+                                     name='file'>`;
+        }
+
         return html`
 <!--
             <button class="button"
@@ -687,12 +706,7 @@ export class FileSource extends ScopedElementsMixin(DbpFileHandlingLitElement) {
                                     </div>
                                         
                                        
-                                    <input ?disabled="${this.disabled}"
-                                           type="file"
-                                           id="fileElem"
-                                           multiple
-                                           accept="${mimeTypesToAccept(allowedMimeTypes)}"
-                                           name='file'>
+                                    ${inputFile}
                                     <label class="button is-primary" for="fileElem" ?disabled="${this.disabled}">
                                         ${this.buttonLabel || i18n.t('upload-label')}
                                     </label>
-- 
GitLab