fix submenu

This commit is contained in:
Eugenio Romano
2019-03-19 01:21:14 +00:00
parent 2f4da55e67
commit cee34922ca
3 changed files with 9 additions and 27 deletions

View File

@@ -35,7 +35,7 @@
<ng-container *ngFor="let link of links"> <ng-container *ngFor="let link of links">
<a appNestedMenuPosition mat-list-item #appMenuTrigger *ngIf="link.children" [attr.data-automation-id]="link.title | translate" <a appNestedMenuPosition mat-list-item #appMenuTrigger *ngIf="link.children" [attr.data-automation-id]="link.title | translate"
class="adf-sidenav-link" [matMenuTriggerFor]="nestedMenu" menuMinimized="{{ isMenuMinimized() }}" class="adf-sidenav-link" [matMenuTriggerFor]="nestedMenu"
[matMenuTriggerData]="{links: link.children}"> [matMenuTriggerData]="{links: link.children}">
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon> <mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>

View File

@@ -15,43 +15,24 @@
* limitations under the License. * limitations under the License.
*/ */
import { Directive, HostListener, Input } from '@angular/core'; import { Directive, HostListener } from '@angular/core';
@Directive({ @Directive({
selector: '[appNestedMenuPosition]' selector: '[appNestedMenuPosition]'
}) })
export class NestedMenuPositionDirective { export class NestedMenuPositionDirective {
@Input()
menuMinimized: string;
nestedMenuLeftPadding: string = '220px'; nestedMenuLeftPadding: string = '220px';
@HostListener('click', ['$event']) @HostListener('click', ['$event'])
onClick(event: any) { onClick() {
const bodyRect = document.body.getBoundingClientRect();
let overlayContainer = (document.querySelector('.cdk-overlay-connected-position-bounding-box') as HTMLElement); let overlayContainer = (document.querySelector('.cdk-overlay-connected-position-bounding-box') as HTMLElement);
(document.querySelector('.cdk-overlay-pane') as HTMLElement).style.width = '100%'; (document.querySelector('.cdk-overlay-pane') as HTMLElement).style.width = '100%';
if (this.menuMinimized === 'false') {
setTimeout(() => { setTimeout(() => {
const elementPosition = this.getElementOffset(event);
overlayContainer.style.top = elementPosition.top - bodyRect.top + 'px';
overlayContainer.style.left = this.nestedMenuLeftPadding; overlayContainer.style.left = this.nestedMenuLeftPadding;
}); });
} }
}
isMenuClicked(item: string) {
return item.includes('adf-sidenav-menu-label');
}
getElementOffset(event) {
if (this.isMenuClicked(event.target.className)) {
return event.target.offsetParent.getBoundingClientRect();
} else {
return event.target.getBoundingClientRect();
}
}
} }

View File

@@ -56,6 +56,7 @@ export class NavigationBarPage {
navigateToDatatable() { navigateToDatatable() {
Util.waitUntilElementIsVisible(this.dataTableButton); Util.waitUntilElementIsVisible(this.dataTableButton);
this.dataTableButton.click(); this.dataTableButton.click();
Util.waitUntilElementIsVisible(this.dataTableNestedButton);
this.dataTableNestedButton.click(); this.dataTableNestedButton.click();
} }