UNPKG

@ctrl/ngx-rightclick

Version:

GitHub Buttons for Angular. Star, Like, Follow and more

55 lines 6.13 kB
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