@ctrl/ngx-rightclick
Version:
GitHub Buttons for Angular. Star, Like, Follow and more
55 lines • 6.13 kB
JavaScript
import { Component, HostListener } from '@angular/core';
import { ContextMenuService } from './context-menu.service';
import { MenuPackage } from './context-menu-injector';
import { Subject } from 'rxjs';
export class MenuComponent {
constructor(menuPackage, contextMenuService) {
this.menuPackage = menuPackage;
this.contextMenuService = contextMenuService;
/** State of the dialog animation. */
this._state = 'enter';
this._animationDone = new Subject();
/** set lazy to False if you do not have animations */
this.lazy = true;
}
handleMouseover() {
if (!this.menuPackage.menu.submenu) {
return;
}
this.menuPackage.menu.isMenuHovered.next(true);
clearTimeout(this.closetimer);
}
handleMouseleave() {
if (!this.menuPackage.menu.submenu) {
return;
}
this.menuPackage.menu.isMenuHovered.next(false);
this.closetimer = setTimeout(() => {
this.contextMenuService.closeSubMenu(this.menuPackage.menu.id);
}, 500);
}
handleWindowClick($event) {
this.contextMenuService.checkOutsideClick($event);
}
/** Callback that is invoked when the menu animation completes. */
_onAnimationDone(event) {
this._animationDone.next(event);
}
}
MenuComponent.decorators = [
{ type: Component, args: [{
selector: 'app-menu',
template: ``
},] }
];
MenuComponent.ctorParameters = () => [
{ type: MenuPackage },
{ type: ContextMenuService }
];
MenuComponent.propDecorators = {
handleMouseover: [{ type: HostListener, args: ['mouseover',] }],
handleMouseleave: [{ type: HostListener, args: ['mouseleave',] }],
handleWindowClick: [{ type: HostListener, args: ['document:click', ['$event'],] }],
_onAnimationDone: [{ type: HostListener, args: ['@menu.done', ['$event'],] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL21lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBR3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTS9CLE1BQU0sT0FBTyxhQUFhO0lBUXhCLFlBQ1MsV0FBd0IsRUFDeEIsa0JBQXNDO1FBRHRDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFUL0MscUNBQXFDO1FBQ3JDLFdBQU0sR0FBOEIsT0FBTyxDQUFDO1FBQzVDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFDL0Msc0RBQXNEO1FBQ3RELFNBQUksR0FBRyxJQUFJLENBQUM7SUFNVCxDQUFDO0lBR0osZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUdELGlCQUFpQixDQUFDLE1BQWtCO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0VBQWtFO0lBRWxFLGdCQUFnQixDQUFDLEtBQXFCO1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OztZQTlDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRSxFQUFFO2FBQ2I7OztZQU5RLFdBQVc7WUFEWCxrQkFBa0I7Ozs4QkFxQnhCLFlBQVksU0FBQyxXQUFXOytCQVN4QixZQUFZLFNBQUMsWUFBWTtnQ0FXekIsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDOytCQU16QyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVQYWNrYWdlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUtaW5qZWN0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWVudScsXG4gIHRlbXBsYXRlOiBgYCxcbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCB7XG4gIC8qKiBTdGF0ZSBvZiB0aGUgZGlhbG9nIGFuaW1hdGlvbi4gKi9cbiAgX3N0YXRlOiAndm9pZCcgfCAnZW50ZXInIHwgJ2V4aXQnID0gJ2VudGVyJztcbiAgX2FuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDxBbmltYXRpb25FdmVudD4oKTtcbiAgLyoqIHNldCBsYXp5IHRvIEZhbHNlIGlmIHlvdSBkbyBub3QgaGF2ZSBhbmltYXRpb25zICovXG4gIGxhenkgPSB0cnVlO1xuICBjbG9zZXRpbWVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1lbnVQYWNrYWdlOiBNZW51UGFja2FnZSxcbiAgICBwdWJsaWMgY29udGV4dE1lbnVTZXJ2aWNlOiBDb250ZXh0TWVudVNlcnZpY2UsXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKVxuICBoYW5kbGVNb3VzZW92ZXIoKSB7XG4gICAgaWYgKCF0aGlzLm1lbnVQYWNrYWdlLm1lbnUuc3VibWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1lbnVQYWNrYWdlLm1lbnUuaXNNZW51SG92ZXJlZC5uZXh0KHRydWUpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmNsb3NldGltZXIpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIGhhbmRsZU1vdXNlbGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLm1lbnVQYWNrYWdlLm1lbnUuc3VibWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1lbnVQYWNrYWdlLm1lbnUuaXNNZW51SG92ZXJlZC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmNsb3NldGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNsb3NlU3ViTWVudSh0aGlzLm1lbnVQYWNrYWdlLm1lbnUuaWQpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGhhbmRsZVdpbmRvd0NsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNoZWNrT3V0c2lkZUNsaWNrKCRldmVudCk7XG4gIH1cblxuICAvKiogQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIG1lbnUgYW5pbWF0aW9uIGNvbXBsZXRlcy4gKi9cbiAgQEhvc3RMaXN0ZW5lcignQG1lbnUuZG9uZScsIFsnJGV2ZW50J10pXG4gIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIl19