From 967eb55ec9a467dbb193ab4270e326d115f12193 Mon Sep 17 00:00:00 2001 From: Tamara Steinwender <tamara.steinwender@tugraz.at> Date: Mon, 24 Aug 2020 15:55:14 +0200 Subject: [PATCH] Small UI Fixes --- packages/common/styles.js | 21 ++-- .../src/dbp-nextcloud-file-picker.js | 109 +++++++++++++----- .../src/i18n/de/translation.json | 3 +- .../src/i18n/en/translation.json | 1 + 4 files changed, 92 insertions(+), 42 deletions(-) diff --git a/packages/common/styles.js b/packages/common/styles.js index 72f3ce6f..c49dd4cf 100644 --- a/packages/common/styles.js +++ b/packages/common/styles.js @@ -520,17 +520,18 @@ export function getRadioAndCheckboxCss() { position: absolute; top: 0; left: 0; - height: 21px; - width: 21px; + height: 20px; + width: 20px; background-color: white; border: solid; border-radius: 100%; border-width: var(--dbp-border-width); border-color: var(--dbp-border-color); + box-sizing: content-box; } .button-container input[type="radio"]:checked ~ .radiobutton:after { - border-color: var(--dbp-danger-bg-color); + border-color: white; } .button-container input[type="radio"]:disabled ~ .radiobutton { @@ -554,13 +555,15 @@ export function getRadioAndCheckboxCss() { } .button-container .radiobutton:after { - left: 4px; - top: 4px; - width: 12px; - height: 12px; - border: solid var(--dbp-danger-bg-color); - background-color: var(--dbp-danger-bg-color); + left: 0px; + top: 0px; + width: 100%; + height: 100%; + background-color: var(--dbp-border-color); + border: none; border-radius: 100%; + border: 2px solid white; + box-sizing: border-box; } .button-container input[type="checkbox"]:checked ~ .checkmark:after { diff --git a/packages/file-handling/src/dbp-nextcloud-file-picker.js b/packages/file-handling/src/dbp-nextcloud-file-picker.js index 7ddbf132..f28b5beb 100644 --- a/packages/file-handling/src/dbp-nextcloud-file-picker.js +++ b/packages/file-handling/src/dbp-nextcloud-file-picker.js @@ -131,7 +131,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { }}, {title: i18n.t('nextcloud-file-picker.size'), responsive: 4, widthGrow:1, minWidth: 50, field: "size", formatter: (cell, formatterParams, onRendered) => { return cell.getRow().getData().type === "directory" ? "" : humanFileSize(cell.getValue());}}, - {title: i18n.t('nextcloud-file-picker.mime-type'), responsive: 2, widthGrow:1, field: "mime", formatter: (cell, formatterParams, onRendered) => { + {title: i18n.t('nextcloud-file-picker.mime-type'), responsive: 2, widthGrow:1, minWidth: 20, field: "mime", formatter: (cell, formatterParams, onRendered) => { if (typeof cell.getValue() === 'undefined') { return ""; } @@ -160,6 +160,19 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { {column:"type", dir:"asc"}, ], + rowFormatter: (row) => { + //row - row component + + var data = row.getData(); + if(!checkFileType(data, this.allowedMimeTypes)){ + row.getElement().classList.add("no-select"); + row.getElement().classList.remove("tabulator-selectable"); + } + if (this.directoriesOnly && typeof data.mime !== 'undefined') { + row.getElement().classList.add("no-select"); + row.getElement().classList.remove("tabulator-selectable"); + } + }, rowSelectionChanged: (data, rows) => { if (data.length > 0 && this.directoriesOnly) { this.folderIsSelected = i18n.t('nextcloud-file-picker.load-to-folder'); @@ -171,29 +184,35 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { rowClick: (e, row) => { const data = row.getData(); - if (this.directoriesOnly) { - // comment out if you want to navigate through folders with double click - const data = row.getData(); - this.directoryClicked(e, data); - this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); - } - else + if(!row.getElement().classList.contains("no-select")) { - switch(data.type) { - case "directory": - this.directoryClicked(e, data); - break; - case "file": - break; + if (this.directoriesOnly) { + // comment out if you want to navigate through folders with double click + const data = row.getData(); + this.directoryClicked(e, data); + this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); + } + else + { + switch(data.type) { + case "directory": + this.directoryClicked(e, data); + break; + case "file": + break; + } } } + else{ + row.deselect(); + } }, rowDblClick: (e, row) => { - if (this.directoriesOnly) { + /* if (this.directoriesOnly) { const data = row.getData(); this.directoryClicked(e, data); this.folderIsSelected = i18n.t('nextcloud-file-picker.load-in-folder'); - } + }*/ } }); @@ -219,15 +238,16 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { return !deny; } - if (typeof this.allowedMimeTypes !== 'undefined') { + // comment in to filter all unsupported files + /*if (typeof this.allowedMimeTypes !== 'undefined') { this.tabulatorTable.setFilter(checkFileType, this.allowedMimeTypes); - } + }*/ if (typeof this.directoriesOnly !== 'undefined' && this.directoriesOnly) { - //console.log("filter " + this.directoriesOnly); - this.tabulatorTable.setFilter([ + // comment this in to show only directories + /*this.tabulatorTable.setFilter([ {field:"type", type:"=", value:"directory"}, - ]); + ]);*/ } }); } @@ -337,10 +357,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } else { this.loading = false; - this.statusText = error.message; - //this.isPickerActive = false; + this.statusText = html`<span class="error"> ${i18n.t('nextcloud-file-picker.webdav-error', {error: error.message})} </span>`; + this.isPickerActive = false; this.tabulatorTable.clearData(); - //this.webDavClient = null; + 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>`; @@ -407,7 +427,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { }).catch(error => { console.error(error.message); this.loading = false; - this.statusText = error.message; + this.statusText = html`<span class="error"> ${i18n.t('nextcloud-file-picker.webdav-error', {error: error.message})} </span>`;; }); } @@ -520,6 +540,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.customFilename = this._("#replace-filename").value; } path = directory + "/" + this._("#replace-filename").value; + MicroModal.close(this._("#replace-modal")); this.replaceFilename = this._("#replace-filename").value; } else { path = directory + "/" + this.uploadFileObject.name; @@ -740,7 +761,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { * Disables or enables the input field for the new file name */ setInputFieldVisibility() { - console.log("yesssss", !this._("#replace-new-name").checked); this._("#replace-filename").disabled = !this._("#replace-new-name").checked; } @@ -785,6 +805,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { else { this._('#add-folder-button').setAttribute("name","close"); this._('#add-folder-button').setAttribute("title", i18n.t('nextcloud-file-picker.add-folder-close')); + this._('#new-folder').focus(); } } @@ -797,7 +818,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { let folderPath = this.directoryPath + "/" +this._('#new-folder').value; this.webDavClient.createDirectory(folderPath).then(contents => { this.loadDirectory(this.directoryPath); }).catch(error => { this.loading = false; - this.statusText = i18n.t('nextcloud-file-picker.webdav-error'); + if (error.message.search("405") === -1) { + this.statusText = html`<span class="error"> ${i18n.t('nextcloud-file-picker.add-folder-error')} </span>`; + } else { + this.statusText = html`<span class="error"> ${i18n.t('nextcloud-file-picker.webdav-error', {error: error.message})} </span>`; + } }); this._('#new-folder').value = ''; this.openAddFolderDialogue(); @@ -823,7 +848,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { */ getBreadcrumb() { let htmlpath = []; - htmlpath[0] = html`<span class="breadcrumb"><a @click="${() => { this.loadDirectory(""); }}" title="${i18n.t('nextcloud-file-picker.folder-home')}"><dbp-icon name="home"></dbp-icon> </a></span>`; + htmlpath[0] = html`<span class="breadcrumb"><a class="home-link" @click="${() => { this.loadDirectory(""); }}" title="${i18n.t('nextcloud-file-picker.folder-home')}"><dbp-icon name="home"></dbp-icon> </a></span>`; const directories = this.directoryPath.split('/'); if (directories[1] === "") { @@ -890,6 +915,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { margin-bottom: 10px; } + .error{ + color: var(--dbp-danger-bg-color); + } + .force-no-select{ -webkit-user-select: none; -moz-user-select: none; @@ -961,7 +990,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{ padding-top: 4px; padding-bottom: 4px; - font-weight: normal + font-weight: normal; + font-size: 1rem; } .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow, @@ -976,6 +1006,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { background: unset; color: unset; border: none; + font-size: 1rem; } .tabulator-row, .tabulator-row.tabulator-row-even{ @@ -983,8 +1014,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } .tabulator-row.tabulator-selectable.tabulator-selectable:hover{ - background-color: var(--dbp-secondary-bg-color); - color: var(--dbp-secondary-text-color); + /*background-color: var(--dbp-secondary-bg-color); + color: var(--dbp-secondary-text-color);*/ + + background-color: white; + color: var(--dbp-dark); } .tabulator-row.tabulator-selectable.tabulator-selected:hover, .tabulator-row.tabulator-selected{ @@ -1036,6 +1070,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { display: flex; justify-content: space-between; } + .nextcloud-footer{ background-color: white; @@ -1148,6 +1183,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-top: 10px; } + .no-select, .tabulator-row.tabulator-selected.no-select:hover, .tabulator-row.no-select:hover, .tabulator-row.tabulator-selectable.no-select:hover{ + cursor: unset; + color: #333; + background-color: white; + } + @media only screen @@ -1182,7 +1223,11 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } .nextcloud-nav a{ - font-size: 0.9rem; + font-size: 1rem; + } + + .nextcloud-nav .home-link{ + font-size: 1.2rem; } .nextcloud-logo-sm{ diff --git a/packages/file-handling/src/i18n/de/translation.json b/packages/file-handling/src/i18n/de/translation.json index 04d138d4..6ec2fc40 100644 --- a/packages/file-handling/src/i18n/de/translation.json +++ b/packages/file-handling/src/i18n/de/translation.json @@ -48,7 +48,8 @@ "open-in-nextcloud": "In {{name}} öffnen", "no-data": "In diesem Ordner befinden sich keine Daten vom benötigten Typ.", "select-folder": "In diesem Ordner hochladen", - "webdav-error": "Etwas ist schief gelaufen", + "webdav-error": "Etwas ist schief gelaufen: {{error}}", + "add-folder-error": "Die Ressource, die Sie erstellen wollten, ist bereits vorhanden", "add-folder-open": "Neuer Ordner Dialog öffnen", "add-folder-close": "Neuer Ordner Dialog schließen", "add-folder": "Neuen Ordner erstellen", diff --git a/packages/file-handling/src/i18n/en/translation.json b/packages/file-handling/src/i18n/en/translation.json index f7573b13..2a0044c8 100644 --- a/packages/file-handling/src/i18n/en/translation.json +++ b/packages/file-handling/src/i18n/en/translation.json @@ -49,6 +49,7 @@ "no-data": "No data avaible in this folder.", "select-folder": "Upload in selected folder", "webdav-error": "Something went wrong", + "add-folder-error": "The resource you tried to create already exists", "add-folder": "Add new folder", "add-folder-open": "Open new folder dialogue", "add-folder-close": "Close new folder dialogue", -- GitLab