diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js index d2342befc739b2c3dbce3393af5e1fc0bd0f4676..ef2c884d2de63f5e212204e074dce3e7c595a853 100644 --- a/packages/file-handling/src/nextcloud-file-picker.js +++ b/packages/file-handling/src/nextcloud-file-picker.js @@ -817,6 +817,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.loading = false; this.statusText = ''; this.tabulatorTable.setData(dataObject); + this.tabulatorTable.setSort([ + {column: "basename", dir: "asc"}, + {column: "type", dir: "asc"}, + ]); if ( this._('#directory-content-table').querySelector( @@ -1262,6 +1266,10 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.loading = false; this.statusText = ''; this.tabulatorTable.setData(contents.data); + this.tabulatorTable.setSort([ + {column: "basename", dir: "asc"}, + {column: "type", dir: "asc"}, + ]); this.isPickerActive = true; this.isInFavorites = false; this.isInRecent = false; @@ -1940,12 +1948,21 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { i18n.t('nextcloud-file-picker.new-folder-placeholder') + '" />'; + const icon_tag = that.getScopedTagName("dbp-icon"); + let html = `<${icon_tag} name="checkmark-circle" class="new-folder-checkmark-icon"></${icon_tag}>`; + that._('#new-folder-row').innerHTML += '<button class="button" title="" id="new-folder-row-btn">' + html + '</button>'; + that._('#tf-new-folder').addEventListener('keydown', ({key}) => { if (key === 'Enter') { that.addNewFolder(); } }); + that._('#new-folder-row-btn').addEventListener("click", event => { + that.addNewFolder(); + event.stopPropagation(); + }) + that._('#new-folder-row').addEventListener('keydown', (event) => { if (event.key === 'Escape') { that.deleteNewFolderEntry(); @@ -1956,7 +1973,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { document.addEventListener('keydown', this.boundCancelNewFolderHandler); that._('#new-folder-row').addEventListener('click', (event) => { - that._('#tf-new-folder').select(); event.stopPropagation(); }); @@ -1978,7 +1994,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { cancelNewFolder(event) { if (event.key === 'Escape') { this.deleteNewFolderEntry(); - event.stopPropagation(); //TODO verify + event.stopPropagation(); } } @@ -2469,6 +2485,15 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ${commonStyles.getRadioAndCheckboxCss()} ${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); @@ -2493,6 +2518,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { #new-folder-row.highlighted { background: var(--dbp-success-surface); color: var(--dbp-on-success-surface); + position: relative; } span.first { @@ -2541,17 +2567,24 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { overflow: hidden; } + .extended-breadcrumb-menu li:hover { + background-color: var(--dbp-hover-background-color); + } + .extended-breadcrumb-menu li.active { - background-color: var(--dbp-dark); - color: var(--dbp-light); + background-color: var(--dbp-base-inverted); + } + + .extended-breadcrumb-menu li:hover > a { + color: var(--dbp-hover-color, var(--dbp-content)); } - .extended-breadcrumb-menu li.active a:hover { - color: var(--dbp-light); + .extended-breadcrumb-menu li.active > a { + color: var(--dbp-text-inverted); } .extended-breadcrumb-menu a.inactive { - color: var(--dbp-muted-text); + color: var(--dbp-text-muted); pointer-events: none; cursor: default; } @@ -2565,10 +2598,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { /** display: grid; **/ } - .extended-breadcrumb-menu a:hover { - color: #e4154b; - } - .button-container.filter-user { line-height: 28px; padding-left: 40px; @@ -2583,7 +2612,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { /* font-weight: 300; */ border: none; background: transparent; - width: 100%; + /** width: 100%; */ + width: calc(100% - 42px); height: 100%; } @@ -2620,7 +2650,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { input[type='text']#tf-new-folder { border: 0px; background: transparent; - width: 100%; + /**width: 100%;*/ + width: calc(100% - 42px); height: 100%; margin-left: -8px; color: white; @@ -2655,16 +2686,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { padding-right: 46px; } - .extended-menu li.active { - background-color: var(--dbp-dark); - color: var(--dbp-light); - } - .extended-menu li.active a:hover { - color: var(--dbp-light); - } - .extended-menu a.inactive { - color: var(--dbp-muted-text); + color: var(--dbp-text-muted); pointer-events: none; cursor: default; } @@ -2683,16 +2706,34 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { border-radius: var(--dbp-border-radius); } - .extended-menu a:hover { - color: var(--dbp-hover-color, var(--dbp-content)); + .extended-menu li:hover { background-color: var(--dbp-hover-background-color); } + .extended-menu li.active { + background-color: var(--dbp-base-inverted); + } + + .extended-menu li:hover > a { + color: var(--dbp-hover-color, var(--dbp-content)); + } + + .extended-menu li.active > a { + color: var(--dbp-text-inverted); + } + + .extended-menu li.inactive:hover { + background-color: var(--dbp-base); + } + + .extended-menu li.inactive > a { + color: var(--dbp-text-muted); + pointer-events: none; + cursor: default; + } + .nextcloud-header { - /**margin-bottom: 2rem;**/ - /**display: inline-grid; **/ width: 100%; - /**grid-template-columns: auto auto;**/ } .nextcloud-header div button { @@ -2779,7 +2820,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .additional-menu { white-space: nowrap; height: 33px; - margin-right: -12px; /*-15px; -8px*/ + margin-right: -11px; } .nextcloud-nav p { @@ -3047,13 +3088,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } .additional-menu { - position: absolute; + position: inherit; /** absolute */ right: 0px; - /** margin-right: 10px; **/ - } - - .additional-menu { - position: inherit; + margin-right: -12px; } .inline-block { @@ -3252,6 +3289,33 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { <div class="nextcloud-nav"> <p>${this.getBreadcrumb()}</p> + <div class="menu-buttons"> + <div class="add-folder ${classMap({hidden: !this.directoriesOnly})}"> + <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> + <button class="button ${classMap({hidden: this.storeSession})}" + title="${i18n.t('nextcloud-file-picker.add-folder-open')}" + @click="${() => { + this.openAddFolderDialogue(); + }}"> + <dbp-icon name="plus" class="nextcloud-add-folder" id="add-folder-button"></dbp-icon> + </button> + </div> + + <div class="additional-menu ${classMap({hidden: !this.storeSession})}"> <a class="extended-menu-link" @@ -3285,22 +3349,20 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { )} </a> </li> - <li class="${classMap({hidden: !this.directoriesOnly})}"> - <a - class="${classMap({ + <li class="${classMap({hidden: !this.directoriesOnly, inactive: this.isInRecent || this.isInFavorites || this.isInFilteredRecent || this.disableRowClick, - })}" + })}"> + <a class="" @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')}">