diff --git a/packages/file-handling/src/clipboard.js b/packages/file-handling/src/clipboard.js index 5f213218bf367d15226060e44266cebb3d83956d..5e41272b8cc04533aae30c5f6f822675043171ac 100644 --- a/packages/file-handling/src/clipboard.js +++ b/packages/file-handling/src/clipboard.js @@ -7,13 +7,17 @@ import * as fileHandlingStyles from '@dbp-toolkit/file-handling/src/styles'; import {Icon} from '@dbp-toolkit/common'; import Tabulator from "tabulator-tables"; import {humanFileSize} from "@dbp-toolkit/common/i18next"; - import {name as pkgName} from "@dbp-toolkit/file-handling/package.json"; import {send} from "@dbp-toolkit/common/notification"; import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element"; +import {classMap} from 'lit-html/directives/class-map.js'; +const MODE_TABLE_ONLY = "table-only"; +const MODE_FILE_SINK = "file-sink"; +const MODE_FILE_SOURCE = "file-source"; export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { + constructor() { super(); this.lang = 'de'; @@ -24,7 +28,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { this._onReceiveBeforeUnload = this.onReceiveBeforeUnload.bind(this); this.filesToSave = []; this.numberOfSelectedFiles = 0; - this.showAdditionalButtons = false; this.enabledTargets = 'local'; this.nextcloudWebAppPasswordURL = ""; @@ -32,15 +35,13 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { this.nextcloudName = ""; this.nextcloudFileURL = ""; - this.isFileSource = false; - this.isFileSink = false; - this.demo = false; // To avoid a cyclic dependency import('./file-sink').then(({ FileSink }) => this.defineScopedElement('dbp-file-sink', FileSink)); import('./file-source').then(({ FileSource }) => this.defineScopedElement('dbp-file-source', FileSource)); + this.mode = MODE_TABLE_ONLY; } static get scopedElements() { @@ -58,7 +59,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { clipboardFiles: {type: Object, attribute: 'clipboard-files'}, filesToSave: {type: Array, attribute: 'files-to-save'}, numberOfSelectedFiles: {type: Number, attribute: false }, - showAdditionalButtons: {type: Boolean, attribute: 'show-additional-buttons' }, enabledTargets: {type: String, attribute: 'enabled-targets'}, nextcloudWebAppPasswordURL: { type: String, attribute: 'nextcloud-auth-url' }, @@ -66,8 +66,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { nextcloudName: { type: String, attribute: 'nextcloud-name' }, nextcloudFileURL: { type: String, attribute: 'nextcloud-file-url' }, - isFileSource: {type: Boolean, attribute: 'file-source' }, - isFileSink: {type: Boolean, attribute: 'file-sink' }, + mode: {type: String, attribute: 'mode'}, demo: {type: Boolean, attribute: 'demo-clipboard' }, }; @@ -478,7 +477,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { <div class="flex-container additional-button-container"> <div class="btn-flex-container-mobile"> <button @click="${() => { this.openFilesource(); }}" - class="button" title="${i18n.t('clipboard.add-files')}"> + class="button ${classMap({hidden: this.mode === MODE_FILE_SINK || this.mode === MODE_FILE_SOURCE})}" title="${i18n.t('clipboard.add-files')}"> <dbp-icon class="nav-icon" name="clipboard"></dbp-icon> ${i18n.t('clipboard.add-files-btn')} </button> <button @click="${() => { this.clearClipboard(); }}" @@ -531,7 +530,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { getClipboardSink() { const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); - let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : ""; return html` <div class="wrapper"> <div class="content"> @@ -541,7 +539,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { <p>${i18n.t('clipboard.warning')}</p> </div> <div> - ${additionalButtons} + ${this.getAdditionalButtons()} <link rel="stylesheet" href="${tabulatorCss}"> <div class="table-wrapper"> <label class="button-container select-all-icon"> @@ -565,7 +563,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { getClipboardSource() { const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); - let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : ""; return html` <div class="wrapper"> <div class="content"> @@ -575,7 +572,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { <p>${i18n.t('clipboard.warning')}</p> </div> <div> - ${additionalButtons} + ${this.getAdditionalButtons()} <link rel="stylesheet" href="${tabulatorCss}"> <div class="table-wrapper"> <label class="button-container select-all-icon"> @@ -756,7 +753,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { width: 8px; height: 15px; } - .select-all-icon{ top: 10px; @@ -779,17 +775,19 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { render() { const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); - let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : ""; - - if (this.isFileSink) + if (this.mode === MODE_FILE_SINK) + { return this.getClipboardSink(); - if (this.isFileSource) + } + if (this.mode === MODE_FILE_SOURCE) + { return this.getClipboardSource(); + } return html` <div> - ${additionalButtons} + ${this.getAdditionalButtons()} <link rel="stylesheet" href="${tabulatorCss}"> diff --git a/packages/file-handling/src/file-sink.js b/packages/file-handling/src/file-sink.js index 63cd9f2786729a2177045ad5642a617bb178d969..79b17dc05b78646a5c2e194abb3afa2c9cac90f5 100644 --- a/packages/file-handling/src/file-sink.js +++ b/packages/file-handling/src/file-sink.js @@ -240,7 +240,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { id="clipboard-file-picker" subscribe="clipboard-files:clipboard-files" show-additional-buttons - file-sink + mode="file-sink" lang="${this.lang}" auth-url="${this.nextcloudAuthUrl}" enabled-targets="${this.enabledTargets}" diff --git a/packages/file-handling/src/file-source.js b/packages/file-handling/src/file-source.js index 9c642ac19bedf8878114a4274e923335d07b6b7d..d3210484e8ff8e1a2a2dfd08a1cf1f383de9d554 100644 --- a/packages/file-handling/src/file-source.js +++ b/packages/file-handling/src/file-source.js @@ -427,7 +427,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { return html` <dbp-clipboard id="clipboard-file-picker" - file-source + mode="file-source" subscribe="clipboard-files:clipboard-files" lang="${this.lang}" enabled-targets="${this.enabledTargets}"