diff --git a/packages/file-handling/src/nextcloud-file-picker.js b/packages/file-handling/src/nextcloud-file-picker.js index 78a26e7f890b95b20f6d2e398b0964d65e72855d..546ae301f0d9b664fe939753b9da01a63f5cae8a 100644 --- a/packages/file-handling/src/nextcloud-file-picker.js +++ b/packages/file-handling/src/nextcloud-file-picker.js @@ -65,6 +65,8 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { this.isInFilteredRecent = false; this.isInRecent = false; this.userName = ''; + this.menuHeightBreadcrumb = -1; + this.menuHeightAdditional = -1; this.boundCloseBreadcrumbMenuHandler = this.hideBreadcrumbMenu.bind(this); this.initateOpenBreadcrumbMenu = false; @@ -1911,7 +1913,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { shortcrumb[0] = htmlpath[0]; shortcrumb[1] = html`<span> › </span> <span class="breadcrumb"> - <a class="extended-breadcrumb-link" @click="${() => { this.toggleBreadcrumbMenu(); }}" title="TODO"><dbp-icon name="more-filled" class="more-filled"></dbp-icon></a> + <a class="extended-breadcrumb-link" @click="${() => { this.toggleBreadcrumbMenu(); }}" title="TODO">. . .</a> <div class="breadcrumb-menu"><ul class='extended-breadcrumb-menu hidden'>${path_temp}</ul></div> </span>`; @@ -1935,15 +1937,28 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { menu.classList.toggle('hidden'); //sets hidden or removes it // computations for overflow - begin - if (this.menuHeight === -1) { - this.menuHeight = menu.clientHeight; + if (this.menuHeightBreadcrumb === -1) { + this.menuHeightBreadcrumb = menu.clientHeight; + console.log("menuheight: ", this.menuHeightBreadcrumb); } let topValue = menuStart.getBoundingClientRect().bottom; - let isMenuOverflow = this.menuHeight + topValue >= window.innerHeight ? true : false; + let isMenuOverflow = this.menuHeightBreadcrumb + topValue >= this._('.wrapper').offsetHeight ? true : false; //replaced window.innerHeight + + console.log("modal.offsetHeight: ", this._('.wrapper').offsetHeight); + console.log("menuoverflow: ", isMenuOverflow); + console.log("menu height: ", this._('.nextcloud-nav').offsetHeight); + + //set max-width to window with + let maxWidth = this._('.wrapper').offsetWidth; + console.log ("offsetWidth", maxWidth); + + + let actualHeight = this._('.wrapper').offsetHeight - this._('.nextcloud-nav').offsetHeight; + console.log("actual height: ", actualHeight); if (isMenuOverflow && !menu.classList.contains('hidden')) { - menu.setAttribute('style', 'position: fixed;top: ' + topValue + 'px;bottom: 0;border-bottom: 0;overflow-y: auto;'); + menu.setAttribute('style', 'position: fixed;top: ' + topValue + 'px;height: ' + actualHeight + 'px;max-width: ' + maxWidth + 'px;overflow-y: auto;'); //TODO do we want border-bottom = 0 and bottom: 0? menu.scrollTop = 0; document.body.setAttribute('style', 'overflow:hidden;'); } else if (isMenuOverflow && menu.classList.contains('hidden')) { @@ -1993,12 +2008,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { menu.classList.toggle('hidden'); //sets hidden or removes it // computations for overflow - begin - if (this.menuHeight === -1) { - this.menuHeight = menu.clientHeight; + if (this.menuHeightAdditional === -1) { + this.menuHeightAdditional = menu.clientHeight; } let topValue = menuStart.getBoundingClientRect().bottom; - let isMenuOverflow = this.menuHeight + topValue >= window.innerHeight ? true : false; + let isMenuOverflow = this.menuHeightAdditional + topValue >= window.innerHeight ? true : false; if (isMenuOverflow && !menu.classList.contains('hidden')) { menu.setAttribute('style', 'position: fixed;top: ' + topValue + 'px;bottom: 0;border-bottom: 0;overflow-y: auto;'); @@ -2041,9 +2056,19 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { ${commonStyles.getRadioAndCheckboxCss()} ${fileHandlingStyles.getFileHandlingCss()} + .extended-breadcrumb-menu li a { + max-width: none; + display: inline; + } - .breadcrumb.extended-breadcrumb-link a { - display: contents; + .nextcloud-nav { /** sticky header **/ + position: absolute; /** relative **/ + width: 100%; + } + + .nextcloud-header { + padding-bottom: 10px; + height: 33px; /** TODO verify or change **/ } .breadcrumb-menu { @@ -2053,12 +2078,14 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .extended-breadcrumb-menu li { padding: 7px; padding-right: 46px; + overflow: hidden; } .extended-breadcrumb-menu li.active { background-color: var(--dbp-dark); color: var(--dbp-light); } + .extended-breadcrumb-menu li.active a:hover { color: var(--dbp-light); } @@ -2069,18 +2096,16 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { cursor: default; } - .extended-breadcrumb-menu a { - padding: 8px; - } - .extended-breadcrumb-menu { list-style: none; border: black 1px solid; position: absolute; background-color: white; z-index: 1000; + /** display: grid; **/ + /** max-width: 87.5%; TODO does not work everywhere, find a better solution **/ } - + .extended-breadcrumb-menu a:hover { color: #E4154B; } @@ -2200,7 +2225,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { } .nextcloud-header { - margin-bottom: 2rem; + /**margin-bottom: 2rem;**/ display: inline-grid; width: 100%; grid-template-columns: auto auto; @@ -2290,7 +2315,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .additional-menu { white-space: nowrap; height: 33px; - margin-right: 10px; /** 5px */ + /** margin-right: 10px; 5px */ } .nextcloud-nav p { @@ -2394,10 +2419,6 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { background-color: var(--dbp-base-light); } - .nextcloud-nav { - position: relative; - } - .inline-block { position: absolute; right: 0px; @@ -2554,6 +2575,12 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { @media only screen and (orientation: portrait) and (max-width: 768px) { + + .breadcrumb .extended-breadcrumb-menu a { + /** overflow: visible; **/ + display: inherit; + } + .additional-menu button { float: right; } @@ -2561,13 +2588,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .additional-menu { position: absolute; right: 0px; - margin-right: 10px; + /** margin-right: 10px; **/ } - /* .nextcloud-nav { - display: block; TODO verify if this is enough - } */ - .additional-menu { position: inherit; } @@ -2596,6 +2619,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { .nextcloud-nav a { font-size: 1rem; + /** max-width: max-content; **/ } .nextcloud-nav .home-link { @@ -2738,7 +2762,7 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { </div> </div> - <div class="nextcloud-content ${classMap({hidden: !this.isPickerActive})}"> + <div class="nextcloud-header ${classMap({hidden: !this.isPickerActive})}"> <div class="nextcloud-nav"> <p>${this.getBreadcrumb()}</p> @@ -2806,6 +2830,9 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) { </div> </div> + </div> + <div class="nextcloud-content ${classMap({hidden: !this.isPickerActive})}"> + <div class="table-wrapper"> <table id="directory-content-table" class="force-no-select"></table> </div>