diff --git a/packages/file-handling/src/clipboard.js b/packages/file-handling/src/clipboard.js index 4437c29e72f51a7ed94666cbe85b69e2472436c3..7d1e0c78ae767a82a15cb47b0c38b2b2b43c8740 100644 --- a/packages/file-handling/src/clipboard.js +++ b/packages/file-handling/src/clipboard.js @@ -37,6 +37,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { this.nextcloudWebDavURL = ''; this.nextcloudName = ''; this.nextcloudFileURL = ''; + this.nextcloudAuthInfo = ''; this.nextcloudStoreSession = false; this.authInfo = ''; @@ -103,8 +104,8 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { this._i18n.changeLanguage(this.lang); break; case 'clipboardFiles': - this.generateClipboardTable(); - + if (this.tabulatorTable) + this.generateClipboardTable(); break; } }); @@ -113,6 +114,8 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { toggleCollapse(e) { const table = this.tabulatorTable; + // give a chance to draw the table + // this is for getting more hight in tabulator table, when toggle is called setTimeout(function () { table.redraw(); }, 0); @@ -230,8 +233,8 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { {column: 'type', dir: 'asc'}, ], }); - that.generateClipboardTable(); + this.tabulatorTable.on("tableBuilt", this.tableBuiltFunction.bind(this)); this.tabulatorTable.on("rowClick", this.rowClickFunction.bind(this)); this.tabulatorTable.on("rowSelectionChanged", this.rowSelectionChangedFunction.bind(this)); this.tabulatorTable.on("dataLoaded", this.dataLoadedFunction.bind(this)); @@ -244,6 +247,17 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { } } + tableBuiltFunction() { + this.tabulatorTable.addRow([{}]).then(function (row) { + row.delete(); + }); + + this.generateClipboardTable(); + if (this._('#select_all')) { + this._('#select_all').addEventListener('click', this.boundSelectHandler); + } + } + rowClickFunction(e, row) { this.numberOfSelectedFiles = this.tabulatorTable !== null @@ -280,6 +294,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { dataLoadedFunction() { if (this.tabulatorTable !== null) { + const that = this; setTimeout(function () { if (that._('.tabulator-responsive-collapse-toggle-open')) { @@ -302,9 +317,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ); } }, 0); - if (this._('#select_all')) { - this._('#select_all').addEventListener('click', this.boundSelectHandler); - } + } } @@ -312,7 +325,10 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { //We doesn't want to deregister this event, because we want to use this event over activities //window.removeEventListener('beforeunload', this._onReceiveBeforeUnload); super.disconnectedCallback(); - this.tabulatorTable.off("dataProcessed"); + this.tabulatorTable.off("tableBuilt"); + this.tabulatorTable.off("rowClick"); + this.tabulatorTable.off("rowSelectionChanged"); + this.tabulatorTable.off("dataLoaded"); } /** @@ -412,9 +428,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { this.tabulatorTable.clearData(); this.tabulatorTable.setData(data); - } else { - if (this.tabulatorTable) - this.tabulatorTable.setData([]); } if (this._('#select_all')) { this._('#select_all').checked = false; @@ -651,92 +664,92 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { <div class="flex-container additional-button-container"> <div class="btn-flex-container-mobile"> <button - id="clipboard-add-files-button" - @click="${() => { - this.openFileSource(); - }}" - class="button ${classMap({ - hidden: this.mode === MODE_FILE_SINK || this.mode === MODE_FILE_SOURCE, - })}" - title="${i18n.t('clipboard.add-files')}" - ?disabled="${this.buttonsDisabled}"> + id="clipboard-add-files-button" + @click="${() => { + this.openFileSource(); + }}" + class="button ${classMap({ + hidden: this.mode === MODE_FILE_SINK || this.mode === MODE_FILE_SOURCE, + })}" + title="${i18n.t('clipboard.add-files')}" + ?disabled="${this.buttonsDisabled}"> <dbp-icon class="nav-icon" name="clipboard"></dbp-icon> ${i18n.t('clipboard.add-files-btn')} </button> <button - id="clipboard-remove-files-button" - @click="${() => { - this.clearClipboard(); - }}" - class="button" - title="${this.numberOfSelectedFiles > 0 - ? i18n.t('clipboard.remove-count', {count: this.numberOfSelectedFiles}) - : i18n.t('clipboard.remove-all')}" - ?disabled="${buttonsAreDisabled}"> + id="clipboard-remove-files-button" + @click="${() => { + this.clearClipboard(); + }}" + class="button" + title="${this.numberOfSelectedFiles > 0 + ? i18n.t('clipboard.remove-count', {count: this.numberOfSelectedFiles}) + : i18n.t('clipboard.remove-all')}" + ?disabled="${buttonsAreDisabled}"> ${this.numberOfSelectedFiles > 0 - ? i18n.t('clipboard.remove-count-btn', { - count: this.numberOfSelectedFiles, - }) - : i18n.t('clipboard.remove-all-btn')} + ? i18n.t('clipboard.remove-count-btn', { + count: this.numberOfSelectedFiles, + }) + : i18n.t('clipboard.remove-all-btn')} </button> </div> <div class="btn-flex-container-mobile"> <button - id="clipboard-save-files-button" - @click="${() => { - this.openFileSink(); - }}" - ?disabled="${buttonsAreDisabled}" - class="button" - title="${this.numberOfSelectedFiles > 0 - ? i18n.t('clipboard.save-count', {count: this.numberOfSelectedFiles}) - : i18n.t('clipboard.save-all')}"> + id="clipboard-save-files-button" + @click="${() => { + this.openFileSink(); + }}" + ?disabled="${buttonsAreDisabled}" + class="button" + title="${this.numberOfSelectedFiles > 0 + ? i18n.t('clipboard.save-count', {count: this.numberOfSelectedFiles}) + : i18n.t('clipboard.save-all')}"> ${this.numberOfSelectedFiles > 0 - ? i18n.t('clipboard.save-count-btn', { - count: this.numberOfSelectedFiles, - }) - : i18n.t('clipboard.save-all-btn')} + ? i18n.t('clipboard.save-count-btn', { + count: this.numberOfSelectedFiles, + }) + : i18n.t('clipboard.save-all-btn')} </button> </div> </div> <dbp-file-source - id="file-source-clipboard" - context="${i18n.t('clipboard.add-files')}" - allowed-mime-types="${this.allowedMimeTypes}" - nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}" - nextcloud-web-dav-url="${this.nextcloudWebDavURL}" - nextcloud-name="${this.nextcloudName}" - nextcloud-file-url="${this.nextcloudFileURL}" - nexcloud-auth-info="${this.nextcloudAuthInfo}" - ?nextcloud-store-session="${this.nextcloudStoreSession}" - enabled-targets="${this.allowNesting - ? this.enabledTargets - : this.enabledTargets.replace('clipboard', '')}" - decompress-zip - lang="${this.lang}" - text="${i18n.t('clipboard.upload-area-text')}" - button-label="${i18n.t('clipboard.upload-button-label')}" - @dbp-file-source-file-selected="${this.saveFilesToClipboardEvent}" - @dbp-nextcloud-file-picker-number-files="${this.finishedSaveFilesToClipboard}" - @dbp-file-source-file-upload-finished="${this - .finishedSaveFilesToClipboard}"></dbp-file-source> + id="file-source-clipboard" + context="${i18n.t('clipboard.add-files')}" + allowed-mime-types="${this.allowedMimeTypes}" + nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}" + nextcloud-web-dav-url="${this.nextcloudWebDavURL}" + nextcloud-name="${this.nextcloudName}" + nextcloud-file-url="${this.nextcloudFileURL}" + nexcloud-auth-info="${this.nextcloudAuthInfo}" + ?nextcloud-store-session="${this.nextcloudStoreSession}" + enabled-targets="${this.allowNesting + ? this.enabledTargets + : this.enabledTargets.replace('clipboard', '')}" + decompress-zip + lang="${this.lang}" + text="${i18n.t('clipboard.upload-area-text')}" + button-label="${i18n.t('clipboard.upload-button-label')}" + @dbp-file-source-file-selected="${this.saveFilesToClipboardEvent}" + @dbp-nextcloud-file-picker-number-files="${this.finishedSaveFilesToClipboard}" + @dbp-file-source-file-upload-finished="${this + .finishedSaveFilesToClipboard}"></dbp-file-source> <dbp-file-sink - id="file-sink-clipboard" - context="${this.numberOfSelectedFiles > 0 - ? i18n.t('clipboard.save-count', {count: this.numberOfSelectedFiles}) - : i18n.t('clipboard.save-all')}" - filename="clipboard-documents.zip" - allowed-mime-types="${this.allowedMimeTypes}" - enabled-targets="${this.allowNesting - ? this.enabledTargets - : this.enabledTargets.replace('clipboard', '')}" - nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}" - nextcloud-web-dav-url="${this.nextcloudWebDavURL}" - nextcloud-name="${this.nextcloudName}" - nextcloud-file-url="${this.nextcloudFileURL}" - nexcloud-auth-info="${this.nextcloudAuthInfo}" - ?nextcloud-store-session="${this.nextcloudStoreSession}" - lang="${this.lang}"></dbp-file-sink> + id="file-sink-clipboard" + context="${this.numberOfSelectedFiles > 0 + ? i18n.t('clipboard.save-count', {count: this.numberOfSelectedFiles}) + : i18n.t('clipboard.save-all')}" + filename="clipboard-documents.zip" + allowed-mime-types="${this.allowedMimeTypes}" + enabled-targets="${this.allowNesting + ? this.enabledTargets + : this.enabledTargets.replace('clipboard', '')}" + nextcloud-auth-url="${this.nextcloudWebAppPasswordURL}" + nextcloud-web-dav-url="${this.nextcloudWebDavURL}" + nextcloud-name="${this.nextcloudName}" + nextcloud-file-url="${this.nextcloudFileURL}" + nexcloud-auth-info="${this.nextcloudAuthInfo}" + ?nextcloud-store-session="${this.nextcloudStoreSession}" + lang="${this.lang}"></dbp-file-sink> `; } @@ -761,7 +774,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { </div> <div> ${this.getAdditionalButtons()} - <link rel="stylesheet" href="${tabulatorCss}" /> + <link rel="stylesheet" href="${tabulatorCss}"/> <div class="table-wrapper"> <table id="clipboard-content-table" class="force-no-select"></table> </div> @@ -769,11 +782,11 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { </div> <div class="clipboard-footer"> <button - class="button select-button is-primary" - title="${i18n.t('clipboard.sink-btn', {count: this.filesToSave.length})}" - @click="${() => { - this.saveFilesToClipboard(); - }}"> + class="button select-button is-primary" + title="${i18n.t('clipboard.sink-btn', {count: this.filesToSave.length})}" + @click="${() => { + this.saveFilesToClipboard(); + }}"> <dbp-icon class="nav-icon" name="clipboard"></dbp-icon> ${i18n.t('clipboard.sink-btn', {count: this.filesToSave.length})} </button> @@ -803,7 +816,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { </div> <div> ${this.getAdditionalButtons()} - <link rel="stylesheet" href="${tabulatorCss}" /> + <link rel="stylesheet" href="${tabulatorCss}"/> <div class="table-wrapper"> <table id="clipboard-content-table" class="force-no-select"></table> </div> @@ -811,18 +824,18 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { </div> <div class="clipboard-footer"> <button - class="button select-button is-primary" - ?disabled="${this.clipboardSelectBtnDisabled}" - @click="${() => { - this.sendClipboardFiles(this.tabulatorTable.getSelectedData()); - }}"> + class="button select-button is-primary" + ?disabled="${this.clipboardSelectBtnDisabled}" + @click="${() => { + this.sendClipboardFiles(this.tabulatorTable.getSelectedData()); + }}"> ${this.tabulatorTable && this.tabulatorTable.getSelectedRows().length > 0 - ? i18n.t('clipboard.source-btn', { - count: this.tabulatorTable - ? this.tabulatorTable.getSelectedRows().length - : 0, - }) - : i18n.t('clipboard.source-btn-none')} + ? i18n.t('clipboard.source-btn', { + count: this.tabulatorTable + ? this.tabulatorTable.getSelectedRows().length + : 0, + }) + : i18n.t('clipboard.source-btn-none')} </button> </div> </div> @@ -840,8 +853,6 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { ${commonStyles.getRadioAndCheckboxCss()} ${commonStyles.getTabulatorStyles()} ${fileHandlingStyles.getFileHandlingCss()} - - a { border-bottom: var(--dbp-border); padding: 0; @@ -1029,7 +1040,7 @@ export class Clipboard extends ScopedElementsMixin(AdapterLitElement) { return html` <div> ${this.getAdditionalButtons()} - <link rel="stylesheet" href="${tabulatorCss}" /> + <link rel="stylesheet" href="${tabulatorCss}"/> <div class="table-wrapper"> <table id="clipboard-content-table" class="force-no-select"></table> </div> diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js index f4bf1d9061728b8bca75113f1d6e08e1b98e46cc..3da7c61373c072e21b805c90121405370b27f419 100644 --- a/packages/file-handling/src/nextcloud-file-picker.js +++ b/packages/file-handling/src/nextcloud-file-picker.js @@ -65,7 +65,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.isInRecent = false; this.userName = ''; this.menuHeightBreadcrumb = -1; - this.menuHeightAdditional = -1; this.boundCloseBreadcrumbMenuHandler = this.hideBreadcrumbMenu.bind(this); this.initateOpenBreadcrumbMenu = false; @@ -147,7 +146,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { disconnectedCallback() { window.removeEventListener('message', this._onReceiveWindowMessage); window.removeEventListener('resize', this.boundRefreshOnWindowSizeChange); - this.tabulatorTable.off("dataProcessed"); + + // deregister tabulator table callback events + this.tabulatorTable.off("tableBuilt"); + this.tabulatorTable.off("rowSelectionChanged"); + this.tabulatorTable.off("rowClick"); + this.tabulatorTable.off("rowAdded"); + this.tabulatorTable.off("dataLoaded"); super.disconnectedCallback(); } @@ -162,7 +167,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.updateComplete.then(() => { // see: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage window.addEventListener('message', this._onReceiveWindowMessage); - // see: http://tabulator.info/docs/4.7 + // see: http://tabulator.info/docs/5.1 this.tabulatorTable = new Tabulator(this._('#directory-content-table'), { layout: 'fitColumns', selectable: this.maxSelectedItems, @@ -188,7 +193,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { '<input type="checkbox" id="select_all" name="select_all" value="select_all">' + '<span class="checkmark" id="select_all_checkmark"></span>' + '</label>', - + field: 'type', hozAlign: 'center', width: 50, @@ -299,6 +304,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { }, }); + this.tabulatorTable.on("tableBuilt", this.tableBuiltFunction.bind(this)); this.tabulatorTable.on("rowSelectionChanged", this.rowSelectionChangedFunction.bind(this)); this.tabulatorTable.on("rowClick", this.rowClickFunction.bind(this)); this.tabulatorTable.on("rowAdded", this.rowAddedFunction.bind(this)); @@ -316,7 +322,17 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { }); } - rowSelectionChangedFunction(data, rows){ + tableBuiltFunction() { + 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'); + } + } + + rowSelectionChangedFunction(data, rows) { const i18n = this._i18n; if (!this.disableRowClick) { @@ -393,7 +409,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } } - rowAddedFunction(row){ + rowAddedFunction(row) { if (!this.disableRowClick) { row.getElement().classList.toggle('addRowAnimation'); } @@ -423,13 +439,7 @@ 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'); - } + } } @@ -449,14 +459,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { if (this.isLoggedIn() && !this._loginCalled) { this._loginCalled = true; - this.loginCallback(); + this.checkLocalStorage(); } } - loginCallback() { - this.checkLocalStorage(); - } - /** * Returns if a person is set in or not * @@ -624,6 +630,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { toggleCollapse(e) { const table = this.tabulatorTable; + // give a chance to draw the table + // this is for getting more hight in tabulator table, when toggle is called setTimeout(function () { table.redraw(); }, 0); @@ -768,12 +776,15 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -850,14 +861,17 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t( + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t( 'nextcloud-file-picker.refresh-nextcloud-file-picker' - )}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + )}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -898,12 +912,15 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -1009,14 +1026,17 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t( + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t( 'nextcloud-file-picker.refresh-nextcloud-file-picker' - )}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + )}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -1058,12 +1078,15 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -1172,14 +1195,17 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.tabulatorTable.clearData(); this.webDavClient = null; let reloadButton = html`${i18n.t( - 'nextcloud-file-picker.something-went-wrong' - )} <button class="button" - title="${i18n.t( + 'nextcloud-file-picker.something-went-wrong' + )} + <button class="button" + title="${i18n.t( 'nextcloud-file-picker.refresh-nextcloud-file-picker' - )}" - @click="${async () => { - this.openFilePicker(); - }}"><dbp-icon name="reload"></button>`; + )}" + @click="${async () => { + this.openFilePicker(); + }}"> + <dbp-icon name="reload"> + </button>`; this.loading = false; this.statusText = reloadButton; } @@ -1221,11 +1247,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { let reloadButton = html` ${i18n.t('nextcloud-file-picker.something-went-wrong')} <button - class="button" - title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" - @click="${async () => { - this.openFilePicker(); - }}"> + class="button" + title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" + @click="${async () => { + this.openFilePicker(); + }}"> <dbp-icon name="reload"></dbp-icon> </button> `; @@ -1312,11 +1338,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { let reloadButton = html` ${i18n.t('nextcloud-file-picker.something-went-wrong')} <button - class="button" - title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" - @click="${async () => { - this.openFilePicker(); - }}"> + class="button" + title="${i18n.t('nextcloud-file-picker.refresh-nextcloud-file-picker')}" + @click="${async () => { + this.openFilePicker(); + }}"> <dbp-icon name="reload"></dbp-icon> </button> `; @@ -1880,13 +1906,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.disableRowClick = true; - // that._('#new-folder-row').addEventListener('keydown', (event) => { - // if (event.key === 'Escape') { - // that.deleteNewFolderEntry(); - // event.stopPropagation(); - // } - // }); - // Click handler should ignore first click this.initateOpenNewFolder = true; @@ -1983,8 +2002,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.statusText = html` <span class="error"> ${i18n.t('nextcloud-file-picker.webdav-error', { - error: error.message, - })} + error: error.message, + })} </span> `; } @@ -2105,21 +2124,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } } - /** - * Returns the parent directory path - * - * @returns {string} parent directory path - */ - getParentDirectoryPath() { - if (typeof this.directoryPath === 'undefined') { - this.directoryPath = ''; - } - let path = this.directoryPath.replace(/\/$/, ''); - path = path.replace(path.split('/').pop(), '').replace(/\/$/, ''); - - return path === '' ? '/' : path; - } - /** * Returns the directory path as clickable breadcrumbs * @@ -2134,11 +2138,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { htmlpath[0] = html` <span class="breadcrumb"> <a - class="home-link" - @click="${() => { - this.loadDirectory(''); - }}" - title="${i18n.t('nextcloud-file-picker.folder-home')}"> + class="home-link" + @click="${() => { + this.loadDirectory(''); + }}" + title="${i18n.t('nextcloud-file-picker.folder-home')}"> <dbp-icon name="home"></dbp-icon> </a> </span> @@ -2149,10 +2153,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="first">›</span> <span class="breadcrumb special"> <a - @click="${() => { - this.loadFavorites(); - }}" - title="${i18n.t('nextcloud-file-picker.favorites-title')}"> + @click="${() => { + this.loadFavorites(); + }}" + title="${i18n.t('nextcloud-file-picker.favorites-title')}"> ${i18n.t('nextcloud-file-picker.favorites-title')} </a> </span> @@ -2162,10 +2166,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="first">›</span> <span class="breadcrumb special"> <a - @click="${() => { - this.loadAllRecentFiles(); - }}" - title="${i18n.t('nextcloud-file-picker.recent-files-title')}"> + @click="${() => { + this.loadAllRecentFiles(); + }}" + title="${i18n.t('nextcloud-file-picker.recent-files-title')}"> ${i18n.t('nextcloud-file-picker.recent-files-title')} </a> </span> @@ -2175,10 +2179,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="first">›</span> <span class="breadcrumb special"> <a - @click="${() => { - this.loadMyRecentFiles(); - }}" - title="${i18n.t('nextcloud-file-picker.my-recent-files-title')}"> + @click="${() => { + this.loadMyRecentFiles(); + }}" + title="${i18n.t('nextcloud-file-picker.my-recent-files-title')}"> ${i18n.t('nextcloud-file-picker.my-recent-files-title')} </a> </span> @@ -2201,12 +2205,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="first breadcrumb-arrow">›</span> <span class="breadcrumb"> <a - @click="${() => { - this.loadDirectory(path); - }}" - title="${i18n.t('nextcloud-file-picker.load-path-link', { - path: directories[i], - })}"> + @click="${() => { + this.loadDirectory(path); + }}" + title="${i18n.t('nextcloud-file-picker.load-path-link', { + path: directories[i], + })}"> ${directories[i]} </a> </span> @@ -2216,12 +2220,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="breadcrumb-arrow">›</span> <span class="breadcrumb"> <a - @click="${() => { - this.loadDirectory(path); - }}" - title="${i18n.t('nextcloud-file-picker.load-path-link', { - path: directories[i], - })}"> + @click="${() => { + this.loadDirectory(path); + }}" + title="${i18n.t('nextcloud-file-picker.load-path-link', { + path: directories[i], + })}"> ${directories[i]} </a> </span> @@ -2251,12 +2255,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { path_temp[i] = html` <li class="breadcrumb-${i}" id="breadcrumb-${i}"> <a - @click="${() => { - this.loadDirectory(path); - }}" - title="${i18n.t('nextcloud-file-picker.load-path-link', { - path: directories[i], - })}"> + @click="${() => { + this.loadDirectory(path); + }}" + title="${i18n.t('nextcloud-file-picker.load-path-link', { + path: directories[i], + })}"> <dbp-icon name="folder" class="breadcrumb-folder"></dbp-icon> ${directories[i]} </a> @@ -2271,10 +2275,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <span class="first breadcrumb-arrow">›</span> <span class="breadcrumb"> <a - class="extended-breadcrumb-link" - @click="${() => { - this.toggleBreadcrumbMenu(); - }}"> + class="extended-breadcrumb-link" + @click="${() => { + this.toggleBreadcrumbMenu(); + }}"> . . . </a> <div class="breadcrumb-menu"> @@ -2321,12 +2325,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { menu.setAttribute( 'style', 'position: fixed;top: ' + - topValue + - 'px;height: ' + - actualHeight + - 'px;max-width: ' + - maxWidth + - 'px;overflow-y: auto;' + topValue + + 'px;height: ' + + actualHeight + + 'px;max-width: ' + + maxWidth + + 'px;overflow-y: auto;' ); menu.scrollTop = 0; this._('.nextcloud-content').setAttribute('style', 'overflow:hidden;'); @@ -2401,7 +2405,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } _atChangeInput(event) { - if (this._("#new-folder-confirm-btn") ) + if (this._("#new-folder-confirm-btn")) this._("#new-folder-confirm-btn").disabled = this._('#tf-new-folder-dialog') && this._('#tf-new-folder-dialog').value === ''; } @@ -2415,16 +2419,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ${commonStyles.getRadioAndCheckboxCss()} ${commonStyles.getTabulatorStyles()} ${fileHandlingStyles.getFileHandlingCss()} - - #new-folder-row .button { - background-color: var(--dbp-success); - color: var(--dbp-on-success-surface); - border: 1px solid var(--dbp-on-success-surface); - position: absolute; - right: 10px; - top: 8px; - } - .breadcrumb-folder { padding-right: 5px; color: var(--dbp-muted); @@ -2432,10 +2426,28 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-top: 7px; } - #new-folder-row.highlighted { - background: var(--dbp-success-surface); - color: var(--dbp-on-success-surface); - position: relative; + .breadcrumb.special a { + overflow: visible; + } + + .breadcrumb-menu { + display: inline; + } + + .breadcrumb { + border-bottom: var(--dbp-border); + } + + .breadcrumb:last-child, + .breadcrumb:first-child { + border-bottom: none; + } + + .breadcrumb a { + display: inline-block; + height: 33px; + vertical-align: middle; + line-height: 33px; } span.first { @@ -2452,10 +2464,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding: 7px; } - .breadcrumb.special a { - overflow: visible; - } - .extended-breadcrumb-menu li a { max-width: none; display: inline; @@ -2464,6 +2472,27 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .nextcloud-nav { position: relative; width: 100%; + display: flex; + justify-content: space-between; + } + + .nextcloud-nav p { + align-self: center; + } + + .nextcloud-nav h2 { + padding-top: 10px; + } + + .nextcloud-nav a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 130px; + } + + .nextcloud-nav a.home-link { + font-size: 1.4em; } .nextcloud-header.hidden { @@ -2472,10 +2501,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .nextcloud-header { padding-bottom: 7px; + width: 100%; } - .breadcrumb-menu { - display: inline; + .nextcloud-header div button { + justify-self: start; } .extended-breadcrumb-menu li { @@ -2512,16 +2542,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { position: absolute; background-color: var(--dbp-background); z-index: 1000; - /** display: grid; **/ - } - - .button-container.filter-user { - line-height: 28px; - padding-left: 40px; } input[type='text']#tf-new-folder:focus { - /* font-weight: 300; */ border: none; background: transparent; height: 100%; @@ -2570,10 +2593,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { width: calc(100% - 42px); } - .new-folder-selected::after { - filter: invert(100%); - } - .visible { display: unset; } @@ -2591,7 +2610,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-right: 0px; padding-top: 10px; padding-bottom: 10px; - padding-left: 4px; /** align with */ + padding-left: 4px; } .extended-menu li { @@ -2645,14 +2664,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { cursor: default; } - .nextcloud-header { - width: 100%; - } - - .nextcloud-header div button { - justify-self: start; - } - .nextcloud-intro { text-align: center; } @@ -2669,8 +2680,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { height: 100%; width: 100%; background-image: var( - --dbp-override-image-nextcloud, - url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M69.3 86.1l-46.1 0C11 85.9 1.1 75.9 1.1 63.7c0-11.8 9.1-21.4 20.6-22.4 0.5-15.2 13-27.4 28.3-27.4 3.4 0 6.6 0.5 9.2 1.6 6.2 2.1 11.4 6.4 14.8 12 6.5 1 12.7 4.3 16.9 9.1 5 5.5 7.8 12.6 7.8 19.9C98.8 72.8 85.6 86.1 69.3 86.1zM23.6 80.6h45.7c13.3 0 24-10.8 24-24 0-6-2.3-11.8-6.4-16.2 -3.7-4.2-9.1-6.9-14.9-7.5l-1.4-0.2L70 31.4c-2.8-5.1-7.2-8.9-12.6-10.7l-0.1 0c-2-0.8-4.5-1.2-7.2-1.2 -12.6 0-22.9 10.3-22.9 22.9v4.5h-3.6c-9.3 0-17 7.6-17 17C6.6 73 14.3 80.6 23.6 80.6z'/%3E%3C/svg%3E") + --dbp-override-image-nextcloud, + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M69.3 86.1l-46.1 0C11 85.9 1.1 75.9 1.1 63.7c0-11.8 9.1-21.4 20.6-22.4 0.5-15.2 13-27.4 28.3-27.4 3.4 0 6.6 0.5 9.2 1.6 6.2 2.1 11.4 6.4 14.8 12 6.5 1 12.7 4.3 16.9 9.1 5 5.5 7.8 12.6 7.8 19.9C98.8 72.8 85.6 86.1 69.3 86.1zM23.6 80.6h45.7c13.3 0 24-10.8 24-24 0-6-2.3-11.8-6.4-16.2 -3.7-4.2-9.1-6.9-14.9-7.5l-1.4-0.2L70 31.4c-2.8-5.1-7.2-8.9-12.6-10.7l-0.1 0c-2-0.8-4.5-1.2-7.2-1.2 -12.6 0-22.9 10.3-22.9 22.9v4.5h-3.6c-9.3 0-17 7.6-17 17C6.6 73 14.3 80.6 23.6 80.6z'/%3E%3C/svg%3E") ); background-repeat: no-repeat; background-position: center; @@ -2696,10 +2707,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { position: relative; } - .wrapper-select { - justify-content: inherit; - } - .select-button { justify-self: end; } @@ -2711,11 +2718,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { -webkit-overflow-scrolling: touch; } - .nextcloud-nav { - display: flex; - justify-content: space-between; - } - .nextcloud-footer { background-color: var(--dbp-background); width: 100%; @@ -2736,10 +2738,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { margin-right: -11px; } - .nextcloud-nav p { - align-self: center; - } - #replace-modal-box { display: flex; flex-direction: column; @@ -2803,22 +2801,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-bottom: 15px; } - .breadcrumb { - border-bottom: var(--dbp-border); - } - - .breadcrumb:last-child, - .breadcrumb:first-child { - border-bottom: none; - } - - .breadcrumb a { - display: inline-block; - height: 33px; - vertical-align: middle; - line-height: 33px; - } - input:disabled + label { color: var(--dbp-muted); } @@ -2827,10 +2809,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { display: inline-block; } - .nextcloud-nav h2 { - padding-top: 10px; - } - .inline-block { position: absolute; right: 0px; @@ -2888,12 +2866,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-right: 50px; } - .nextcloud-nav a { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 130px; - } #replace-modal-box .modal-header { padding: 0px; @@ -2908,8 +2880,21 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { text-align: left; } + #replace-modal .checkmark { + height: 20px; + width: 20px; + left: 1px; + top: 0px; + } + + .checkmark { + height: 20px; + width: 20px; + left: 11px; + top: 4px; + } + .table-wrapper { - /*position: relative;*/ max-width: 100%; width: 100%; } @@ -2925,20 +2910,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { height: 30px; } - .checkmark { - height: 20px; - width: 20px; - left: 11px; - top: 4px; - } - - #replace-modal .checkmark { - height: 20px; - width: 20px; - left: 1px; - top: 0px; - } - .remember-container { display: inline-block; line-height: 28px; @@ -2951,15 +2922,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .more-menu { height: 22.4px; - /*top: 4px;*/ width: 19px; margin-top: 4px; } - .nextcloud-nav a.home-link { - font-size: 1.4em; - } - #new-folder-modal-box { display: flex; flex-direction: column; @@ -2977,7 +2943,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { justify-content: space-between; } - #new-folder-modal-box footer.modal-footer .modal-footer-btn { + #new-folder-modal-box footer.modal-footer .modal-footer-btn { padding: 0px; display: flex; justify-content: space-between; @@ -2999,56 +2965,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } @media only screen and (orientation: portrait) and (max-width: 768px) { - .breadcrumb-arrow { - font-size: 1.6em; - vertical-align: middle; - padding-bottom: 3px; - padding-left: 2px; - padding-right: 2px; - /**padding: 0px 2px 2px 3px;*/ - } .nextcloud-header { padding-bottom: 0px; - } - - .extended-breadcrumb-link { - margin-top: -4px; /**TODO -3px; -2px;*/ - font-size: 1.2em !important; /**TODO for demo purpose only */ - font-weight: 400; - } - - .extended-menu { - top: 0px; - } - - .breadcrumb .extended-breadcrumb-menu a { - /* overflow: visible; */ - display: inherit; - } - - .additional-menu button { - float: right; - } - - .additional-menu { - position: inherit; /** absolute */ - right: 0px; - margin-right: -12px; - } - - .inline-block { - width: inherit; - position: absolute; - right: 52px; - z-index: 1; - background-color: var(--dbp-background); - bottom: 0px; - } - - .add-folder-button { - right: 0px; - position: absolute; + grid-area: header-l; + margin-bottom: 0px; } .nextcloud-nav h2 > a { @@ -3076,20 +2997,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { margin: 0 auto; } - .button-wrapper { - justify-self: start; - } - - .wrapper { - display: flex; - justify-content: space-between; - } - - .nextcloud-header { - grid-area: header-l; - margin-bottom: 0px; - } - .nextcloud-content, .nextcloud-intro { grid-area: content; @@ -3109,6 +3016,67 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { left: 0px; } + .nextcloud-footer-grid { + display: flex; + justify-content: center; + flex-direction: column-reverse; + } + + .breadcrumb-arrow { + font-size: 1.6em; + vertical-align: middle; + padding-bottom: 3px; + padding-left: 2px; + padding-right: 2px; + } + + .breadcrumb .extended-breadcrumb-menu a { + display: inherit; + } + + .extended-breadcrumb-link { + margin-top: -4px; + font-size: 1.2em !important; /**TODO for demo purpose only */ + font-weight: 400; + } + + .extended-menu { + top: 0px; + } + + .additional-menu { + position: inherit; + right: 0px; + margin-right: -12px; + } + + .additional-menu button { + float: right; + } + + .inline-block { + width: inherit; + position: absolute; + right: 52px; + z-index: 1; + background-color: var(--dbp-background); + bottom: 0px; + } + + .add-folder-button { + right: 0px; + position: absolute; + } + + .button-wrapper { + justify-self: start; + } + + .wrapper { + display: flex; + justify-content: space-between; + } + .mobile-hidden { display: none; } @@ -3117,12 +3085,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { position: relative; } - .nextcloud-footer-grid { - display: flex; - justify-content: center; - flex-direction: column-reverse; - } - .select-button { margin: 0px; } @@ -3153,15 +3115,15 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { pkgName, 'tabulator-tables/css/tabulator.min.css' ); - + return html` <div class="wrapper"> - <link rel="stylesheet" href="${tabulatorCss}" /> + <link rel="stylesheet" href="${tabulatorCss}"/> <div class="nextcloud-intro ${classMap({hidden: this.isPickerActive})}"> <div - class="nextcloud-logo ${classMap({ - 'nextcloud-logo-sm': this.isPickerActive, - })}"> + class="nextcloud-logo ${classMap({ + 'nextcloud-logo-sm': this.isPickerActive, + })}"> <div class="nextcloud-logo-image"></div> </div> <div class="block text-center ${classMap({hidden: this.isPickerActive})}"> @@ -3170,47 +3132,47 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ${i18n.t('nextcloud-file-picker.init-text-1', { name: this.nextcloudName, })} - <br /> + <br/> ${i18n.t('nextcloud-file-picker.init-text-2')} - <br /> - <br /> + <br/> + <br/> </p> </div> <div class="block ${classMap({hidden: this.isPickerActive})}"> <button - class="button is-primary" - title="${i18n.t('nextcloud-file-picker.open-nextcloud-file-picker', { - name: this.nextcloudName, - })}" - @click="${async () => { - this.openFilePicker(); - }}"> + class="button is-primary" + title="${i18n.t('nextcloud-file-picker.open-nextcloud-file-picker', { + name: this.nextcloudName, + })}" + @click="${async () => { + this.openFilePicker(); + }}"> ${i18n.t('nextcloud-file-picker.connect-nextcloud', { name: this.nextcloudName, })} </button> </div> <div - class="block text-center m-inherit ${classMap({ - hidden: !this.storeSession || !this.isLoggedIn(), - })}"> + class="block text-center m-inherit ${classMap({ + hidden: !this.storeSession || !this.isLoggedIn(), + })}"> <label class="button-container remember-container"> ${i18n.t('nextcloud-file-picker.remember-me', { name: this.nextcloudName, })} - <input type="checkbox" id="remember-checkbox" name="remember" /> + <input type="checkbox" id="remember-checkbox" name="remember"/> <span class="checkmark"></span> </label> </div> <div - class="block text-center m-inherit ${classMap({ - hidden: this.isPickerActive, - })}"> + class="block text-center m-inherit ${classMap({ + hidden: this.isPickerActive, + })}"> <p class="m-inherit"> - <br /> + <br/> ${i18n.t('nextcloud-file-picker.auth-info')} <slot name="auth-info"> - <br /> + <br/> ${this.authInfo} </slot> </p> @@ -3220,23 +3182,23 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="nextcloud-nav"> <p>${this.getBreadcrumb()}</p> - <div class="menu-buttons"> + <div class="menu-buttons"> <div class="add-folder ${classMap({hidden: this.storeSession})}"> - <div class="inline-block"> - <div id="new-folder-wrapper" class="hidden"> - <input type="text" - placeholder="${i18n.t('nextcloud-file-picker.new-folder-placeholder')}" - name="new-folder" class="input" id="new-folder"/> - <button class="button add-folder-button" - title="${i18n.t('nextcloud-file-picker.add-folder')}" - @click="${() => { - this.addFolder(); - }}"> - <dbp-icon name="checkmark-circle" class="nextcloud-add-folder"></dbp-icon> - </button> + <div class="inline-block"> + <div id="new-folder-wrapper" class="hidden"> + <input type="text" + placeholder="${i18n.t('nextcloud-file-picker.new-folder-placeholder')}" + name="new-folder" class="input" id="new-folder"/> + <button class="button add-folder-button" + title="${i18n.t('nextcloud-file-picker.add-folder')}" + @click="${() => { + this.addFolder(); + }}"> + <dbp-icon name="checkmark-circle" class="nextcloud-add-folder"></dbp-icon> + </button> + </div> </div> </div> - </div> <button class="button ${classMap({hidden: this.storeSession})}" title="${i18n.t('nextcloud-file-picker.add-folder-open')}" @click="${() => { @@ -3249,59 +3211,60 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="additional-menu ${classMap({hidden: !this.storeSession})}"> <a - class="extended-menu-link" - @click="${() => { - this.toggleMoreMenu(); - }}" - title="${i18n.t('nextcloud-file-picker.more-menu')}"> + class="extended-menu-link" + @click="${() => { + this.toggleMoreMenu(); + }}" + title="${i18n.t('nextcloud-file-picker.more-menu')}"> <dbp-icon name="menu-dots" class="more-menu"></dbp-icon> </a> <ul class="extended-menu hidden"> <li - class="${classMap({active: this.isInFavorites})}" - id="favorites-item"> + class="${classMap({active: this.isInFavorites})}" + id="favorites-item"> <a class="" @click="${this.loadFavorites}"> ${i18n.t('nextcloud-file-picker.favorites-link-text')} </a> </li> <li - class="${classMap({active: this.isInFilteredRecent})}" - id="my-recent-item"> + class="${classMap({active: this.isInFilteredRecent})}" + id="my-recent-item"> <a class="" @click="${this.loadMyRecentFiles}"> ${i18n.t('nextcloud-file-picker.my-recent-files-link-text')} </a> </li> <li - class="${classMap({active: this.isInRecent})}" - id="all-recent-item"> + class="${classMap({active: this.isInRecent})}" + id="all-recent-item"> <a class="" @click="${this.loadAllRecentFiles}"> ${i18n.t( - 'nextcloud-file-picker.all-recent-files-link-text' + 'nextcloud-file-picker.all-recent-files-link-text' )} </a> </li> - <li class="${classMap({inactive: - this.isInRecent || - this.isInFavorites || - this.isInFilteredRecent || - this.disableRowClick, - })}"> + <li class="${classMap({ + inactive: + this.isInRecent || + this.isInFavorites || + this.isInFilteredRecent || + this.disableRowClick, + })}"> <a class="" - @click="${() => { - this.addOpenFolderTableEntry(); - }}"> + @click="${() => { + this.addOpenFolderTableEntry(); + }}"> ${i18n.t('nextcloud-file-picker.add-folder')} </a> </li> <li - class="${classMap({hidden: !this.storeSession})}" - title="${i18n.t('nextcloud-file-picker.log-out')}"> + class="${classMap({hidden: !this.storeSession})}" + title="${i18n.t('nextcloud-file-picker.log-out')}"> <a - class="" - @click="${() => { - this.logOut(); - this.hideAdditionalMenu(); - }}"> + class="" + @click="${() => { + this.logOut(); + this.hideAdditionalMenu(); + }}"> ${i18n.t('nextcloud-file-picker.log-out')} </a> </li> @@ -3318,60 +3281,60 @@ 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()); - }}" - ?disabled="${this.selectBtnDisabled}"> + 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()); + }}" + ?disabled="${this.selectBtnDisabled}"> <dbp-icon class="nav-icon" name="cloud-upload"></dbp-icon> ${this.folderIsSelected} </button> <button - class="button select-button is-primary ${classMap({ - hidden: this.directoriesOnly, - })}" - @click="${() => { - this.downloadFiles(this.tabulatorTable.getSelectedData()); - }}" - ?disabled="${this.selectBtnDisabled}"> + class="button select-button is-primary ${classMap({ + hidden: this.directoriesOnly, + })}" + @click="${() => { + this.downloadFiles(this.tabulatorTable.getSelectedData()); + }}" + ?disabled="${this.selectBtnDisabled}"> ${this.tabulatorTable && this.tabulatorTable - .getSelectedRows() - .filter( - (row) => - row.getData().type != 'directory' && - this.checkFileType(row.getData(), this.allowedMimeTypes) - ).length === 0 - ? i18n.t('nextcloud-file-picker.select-files') - : i18n.t('nextcloud-file-picker.select-files-btn', { - count: this.tabulatorTable - ? this.tabulatorTable.getSelectedRows().length - : 0, - })} + .getSelectedRows() + .filter( + (row) => + row.getData().type != 'directory' && + this.checkFileType(row.getData(), this.allowedMimeTypes) + ).length === 0 + ? i18n.t('nextcloud-file-picker.select-files') + : i18n.t('nextcloud-file-picker.select-files-btn', { + count: this.tabulatorTable + ? this.tabulatorTable.getSelectedRows().length + : 0, + })} </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; - }}"> + 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> <div class="block info-box ${classMap({hidden: this.statusText === ''})}"> <dbp-mini-spinner - class="spinner ${classMap({ - hidden: this.loading === false, - })}"></dbp-mini-spinner> + class="spinner ${classMap({ + hidden: this.loading === false, + })}"></dbp-mini-spinner> <span>${this.statusText}</span> </div> </div> @@ -3381,23 +3344,23 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="modal micromodal-slide" id="replace-modal" aria-hidden="true"> <div class="modal-overlay" tabindex="-2" data-micromodal-close> <div - class="modal-container" - id="replace-modal-box" - role="dialog" - aria-modal="true" - aria-labelledby="replace-modal-title"> + class="modal-container" + id="replace-modal-box" + role="dialog" + aria-modal="true" + aria-labelledby="replace-modal-title"> <header class="modal-header"> <button - title="${i18n.t('file-sink.modal-close')}" - class="modal-close" - aria-label="Close modal" - @click="${() => { - this.closeDialog(); - }}"> - <dbp-icon title="${i18n.t('file-sink.modal-close')}" - name="close" - class="close-icon"></dbp-icon> + class="modal-close" + aria-label="Close modal" + @click="${() => { + this.closeDialog(); + }}"> + <dbp-icon + title="${i18n.t('file-sink.modal-close')}" + name="close" + class="close-icon"></dbp-icon> </button> <h2 id="replace-modal-title"> ${i18n.t('nextcloud-file-picker.replace-title-1')} @@ -3413,23 +3376,23 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ${i18n.t('nextcloud-file-picker.replace-new_name')}: </span> <input - type="radio" - id="replace-new-name" - class="radio-btn" - name="replacement" - value="new-name" - checked - @click="${() => { - this.setInputFieldVisibility(); - }}" /> + type="radio" + id="replace-new-name" + class="radio-btn" + name="replacement" + value="new-name" + checked + @click="${() => { + this.setInputFieldVisibility(); + }}"/> <span class="radiobutton"></span> <input - type="text" - id="replace-filename" - class="input" - name="replace-filename" - value="" - onClick="this.select();" /> + type="text" + id="replace-filename" + class="input" + name="replace-filename" + value="" + onClick="this.select();"/> </label> </div> @@ -3437,13 +3400,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <label class="button-container"> <span>${i18n.t('nextcloud-file-picker.replace-replace')}</span> <input - type="radio" - id="replace-replace" - name="replacement" - value="replace" - @click="${() => { - this.setInputFieldVisibility(); - }}" /> + type="radio" + id="replace-replace" + name="replacement" + value="replace" + @click="${() => { + this.setInputFieldVisibility(); + }}"/> <span class="radiobutton"></span> </label> </div> @@ -3451,13 +3414,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <label class="button-container"> <span>${i18n.t('nextcloud-file-picker.replace-skip')}</span> <input - type="radio" - class="radio-btn" - name="replacement" - value="ignore" - @click="${() => { - this.setInputFieldVisibility(); - }}" /> + type="radio" + class="radio-btn" + name="replacement" + value="ignore" + @click="${() => { + this.setInputFieldVisibility(); + }}"/> <span class="radiobutton"></span> </label> </div> @@ -3465,19 +3428,19 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <footer class="modal-footer"> <div class="modal-footer-btn"> <button - class="button" - data-micromodal-close - aria-label="Close this dialog window" - @click="${() => { - this.cancelOverwrite(); - }}"> + class="button" + data-micromodal-close + aria-label="Close this dialog window" + @click="${() => { + this.cancelOverwrite(); + }}"> ${this.getCancelText()} </button> <button - class="button select-button is-primary" - @click="${() => { - this.uploadFileAfterConflict(); - }}"> + class="button select-button is-primary" + @click="${() => { + this.uploadFileAfterConflict(); + }}"> OK </button> </div> @@ -3485,13 +3448,13 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <label class="button-container"> ${i18n.t('nextcloud-file-picker.replace-mode-all')} <input - type="checkbox" - id="replace_mode_all" - name="replace_mode_all" - value="replace_mode_all" - @click="${() => { - this.setRepeatForAllConflicts(); - }}" /> + type="checkbox" + id="replace_mode_all" + name="replace_mode_all" + value="replace_mode_all" + @click="${() => { + this.setRepeatForAllConflicts(); + }}"/> <span class="checkmark"></span> </label> </div> @@ -3503,23 +3466,23 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="modal micromodal-slide" id="new-folder-modal" aria-hidden="true"> <div class="modal-overlay" tabindex="-2" data-micromodal-close> <div - class="modal-container" - id="new-folder-modal-box" - role="dialog" - aria-modal="true" - aria-labelledby="new-folder-modal-title"> + class="modal-container" + id="new-folder-modal-box" + role="dialog" + aria-modal="true" + aria-labelledby="new-folder-modal-title"> <header class="modal-header"> <button - title="${i18n.t('file-sink.modal-close')}" - class="modal-close" - aria-label="Close modal" - @click="${() => { - this.deleteNewFolderEntry(); - }}"> - <dbp-icon title="${i18n.t('file-sink.modal-close')}" - name="close" - class="close-icon"></dbp-icon> + class="modal-close" + aria-label="Close modal" + @click="${() => { + this.deleteNewFolderEntry(); + }}"> + <dbp-icon + title="${i18n.t('file-sink.modal-close')}" + name="close" + class="close-icon"></dbp-icon> </button> <h3 id="new-folder-modal-title"> ${i18n.t('nextcloud-file-picker.new-folder-dialog-title')} @@ -3531,32 +3494,34 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { </div> <div> <input - type="text" - class="input" - name="tf-new-folder-dialog" - id="tf-new-folder-dialog" - value="${i18n.t('nextcloud-file-picker.new-folder-dialog-default-name')}" - @input="${() => {this._atChangeInput();}}" + type="text" + class="input" + name="tf-new-folder-dialog" + id="tf-new-folder-dialog" + value="${i18n.t('nextcloud-file-picker.new-folder-dialog-default-name')}" + @input="${() => { + this._atChangeInput(); + }}" /> </div> </main> <footer class="modal-footer"> <div class="modal-footer-btn"> <button - class="button" - data-micromodal-close - aria-label="Close this dialog window" - @click="${() => { - this.deleteNewFolderEntry(); - }}"> + class="button" + data-micromodal-close + aria-label="Close this dialog window" + @click="${() => { + this.deleteNewFolderEntry(); + }}"> ${i18n.t('nextcloud-file-picker.new-folder-dialog-button-cancel')} </button> <button - class="button select-button is-primary" - id="new-folder-confirm-btn" - @click="${() => { - this.addNewFolder(); - }}"> + class="button select-button is-primary" + id="new-folder-confirm-btn" + @click="${() => { + this.addNewFolder(); + }}"> ${i18n.t('nextcloud-file-picker.new-folder-dialog-button-ok')} </button> </div>