Skip to content
Snippets Groups Projects
Commit 99b57101 authored by Steinwender, Tamara's avatar Steinwender, Tamara
Browse files

Add mode attribute in clipboard

parent a339e1f9
No related branches found
No related tags found
No related merge requests found
Pipeline #45309 passed
...@@ -7,13 +7,17 @@ import * as fileHandlingStyles from '@dbp-toolkit/file-handling/src/styles'; ...@@ -7,13 +7,17 @@ import * as fileHandlingStyles from '@dbp-toolkit/file-handling/src/styles';
import {Icon} from '@dbp-toolkit/common'; import {Icon} from '@dbp-toolkit/common';
import Tabulator from "tabulator-tables"; import Tabulator from "tabulator-tables";
import {humanFileSize} from "@dbp-toolkit/common/i18next"; import {humanFileSize} from "@dbp-toolkit/common/i18next";
import {name as pkgName} from "@dbp-toolkit/file-handling/package.json"; import {name as pkgName} from "@dbp-toolkit/file-handling/package.json";
import {send} from "@dbp-toolkit/common/notification"; import {send} from "@dbp-toolkit/common/notification";
import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element"; 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) { export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
constructor() { constructor() {
super(); super();
this.lang = 'de'; this.lang = 'de';
...@@ -24,7 +28,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -24,7 +28,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
this._onReceiveBeforeUnload = this.onReceiveBeforeUnload.bind(this); this._onReceiveBeforeUnload = this.onReceiveBeforeUnload.bind(this);
this.filesToSave = []; this.filesToSave = [];
this.numberOfSelectedFiles = 0; this.numberOfSelectedFiles = 0;
this.showAdditionalButtons = false;
this.enabledTargets = 'local'; this.enabledTargets = 'local';
this.nextcloudWebAppPasswordURL = ""; this.nextcloudWebAppPasswordURL = "";
...@@ -32,15 +35,13 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -32,15 +35,13 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
this.nextcloudName = ""; this.nextcloudName = "";
this.nextcloudFileURL = ""; this.nextcloudFileURL = "";
this.isFileSource = false;
this.isFileSink = false;
this.demo = false; this.demo = false;
// To avoid a cyclic dependency // To avoid a cyclic dependency
import('./file-sink').then(({ FileSink }) => this.defineScopedElement('dbp-file-sink', FileSink)); import('./file-sink').then(({ FileSink }) => this.defineScopedElement('dbp-file-sink', FileSink));
import('./file-source').then(({ FileSource }) => this.defineScopedElement('dbp-file-source', FileSource)); import('./file-source').then(({ FileSource }) => this.defineScopedElement('dbp-file-source', FileSource));
this.mode = MODE_TABLE_ONLY;
} }
static get scopedElements() { static get scopedElements() {
...@@ -58,7 +59,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -58,7 +59,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
clipboardFiles: {type: Object, attribute: 'clipboard-files'}, clipboardFiles: {type: Object, attribute: 'clipboard-files'},
filesToSave: {type: Array, attribute: 'files-to-save'}, filesToSave: {type: Array, attribute: 'files-to-save'},
numberOfSelectedFiles: {type: Number, attribute: false }, numberOfSelectedFiles: {type: Number, attribute: false },
showAdditionalButtons: {type: Boolean, attribute: 'show-additional-buttons' },
enabledTargets: {type: String, attribute: 'enabled-targets'}, enabledTargets: {type: String, attribute: 'enabled-targets'},
nextcloudWebAppPasswordURL: { type: String, attribute: 'nextcloud-auth-url' }, nextcloudWebAppPasswordURL: { type: String, attribute: 'nextcloud-auth-url' },
...@@ -66,8 +66,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -66,8 +66,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
nextcloudName: { type: String, attribute: 'nextcloud-name' }, nextcloudName: { type: String, attribute: 'nextcloud-name' },
nextcloudFileURL: { type: String, attribute: 'nextcloud-file-url' }, nextcloudFileURL: { type: String, attribute: 'nextcloud-file-url' },
isFileSource: {type: Boolean, attribute: 'file-source' }, mode: {type: String, attribute: 'mode'},
isFileSink: {type: Boolean, attribute: 'file-sink' },
demo: {type: Boolean, attribute: 'demo-clipboard' }, demo: {type: Boolean, attribute: 'demo-clipboard' },
}; };
...@@ -478,7 +477,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -478,7 +477,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
<div class="flex-container additional-button-container"> <div class="flex-container additional-button-container">
<div class="btn-flex-container-mobile"> <div class="btn-flex-container-mobile">
<button @click="${() => { this.openFilesource(); }}" <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')} <dbp-icon class="nav-icon" name="clipboard"></dbp-icon> ${i18n.t('clipboard.add-files-btn')}
</button> </button>
<button @click="${() => { this.clearClipboard(); }}" <button @click="${() => { this.clearClipboard(); }}"
...@@ -531,7 +530,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -531,7 +530,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
getClipboardSink() { getClipboardSink() {
const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css');
let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : "";
return html` return html`
<div class="wrapper"> <div class="wrapper">
<div class="content"> <div class="content">
...@@ -541,7 +539,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -541,7 +539,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
<p>${i18n.t('clipboard.warning')}</p> <p>${i18n.t('clipboard.warning')}</p>
</div> </div>
<div> <div>
${additionalButtons} ${this.getAdditionalButtons()}
<link rel="stylesheet" href="${tabulatorCss}"> <link rel="stylesheet" href="${tabulatorCss}">
<div class="table-wrapper"> <div class="table-wrapper">
<label class="button-container select-all-icon"> <label class="button-container select-all-icon">
...@@ -565,7 +563,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -565,7 +563,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
getClipboardSource() { getClipboardSource() {
const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css');
let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : "";
return html` return html`
<div class="wrapper"> <div class="wrapper">
<div class="content"> <div class="content">
...@@ -575,7 +572,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -575,7 +572,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
<p>${i18n.t('clipboard.warning')}</p> <p>${i18n.t('clipboard.warning')}</p>
</div> </div>
<div> <div>
${additionalButtons} ${this.getAdditionalButtons()}
<link rel="stylesheet" href="${tabulatorCss}"> <link rel="stylesheet" href="${tabulatorCss}">
<div class="table-wrapper"> <div class="table-wrapper">
<label class="button-container select-all-icon"> <label class="button-container select-all-icon">
...@@ -757,7 +754,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -757,7 +754,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
height: 15px; height: 15px;
} }
.select-all-icon{ .select-all-icon{
top: 10px; top: 10px;
left: 10px; left: 10px;
...@@ -779,17 +775,19 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ...@@ -779,17 +775,19 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) {
render() { render() {
const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css'); const tabulatorCss = commonUtils.getAssetURL(pkgName, 'tabulator-tables/css/tabulator.min.css');
let additionalButtons = this.showAdditionalButtons ? this.getAdditionalButtons() : ""; if (this.mode === MODE_FILE_SINK)
{
if (this.isFileSink)
return this.getClipboardSink(); return this.getClipboardSink();
if (this.isFileSource) }
if (this.mode === MODE_FILE_SOURCE)
{
return this.getClipboardSource(); return this.getClipboardSource();
}
return html` return html`
<div> <div>
${additionalButtons} ${this.getAdditionalButtons()}
<link rel="stylesheet" href="${tabulatorCss}"> <link rel="stylesheet" href="${tabulatorCss}">
......
...@@ -240,7 +240,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -240,7 +240,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
id="clipboard-file-picker" id="clipboard-file-picker"
subscribe="clipboard-files:clipboard-files" subscribe="clipboard-files:clipboard-files"
show-additional-buttons show-additional-buttons
file-sink mode="file-sink"
lang="${this.lang}" lang="${this.lang}"
auth-url="${this.nextcloudAuthUrl}" auth-url="${this.nextcloudAuthUrl}"
enabled-targets="${this.enabledTargets}" enabled-targets="${this.enabledTargets}"
......
...@@ -427,7 +427,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -427,7 +427,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
return html` return html`
<dbp-clipboard <dbp-clipboard
id="clipboard-file-picker" id="clipboard-file-picker"
file-source mode="file-source"
subscribe="clipboard-files:clipboard-files" subscribe="clipboard-files:clipboard-files"
lang="${this.lang}" lang="${this.lang}"
enabled-targets="${this.enabledTargets}" enabled-targets="${this.enabledTargets}"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment