UNPKG

desktop-menu-bar

Version:
66 lines 8.64 kB
import { __decorate } from "tslib"; import { Injectable, ApplicationRef, ComponentFactoryResolver, Injector, ComponentRef } from '@angular/core'; import { DesktopMenuBarComponent } from '../lib/desktop-menu-bar/desktop-menu-bar.component'; import * as i0 from "@angular/core"; let DesktopMenuBarService = class DesktopMenuBarService { constructor(applicationRef, resolver, injector) { this.applicationRef = applicationRef; this.resolver = resolver; this.injector = injector; this.menuComponentRef = null; this.menuItems = null; } setMenuBarItems(items) { this.menuItems = items; this.updateMenuBarItemsInComponent(); } updateMenuBarItemsInComponent() { if (this.isMenuBarVisible()) { this.menuComponentRef.instance.items = this.menuItems; } } showMenuBar() { if (!this.isMenuBarVisible()) { const componentFactory = this.resolver.resolveComponentFactory(DesktopMenuBarComponent); this.menuComponentRef = componentFactory.create(this.injector); this.applicationRef.attachView(this.menuComponentRef.hostView); this.moveToDocumentBody(this.menuComponentRef); this.updateMenuBarItemsInComponent(); } } hideMenuBar() { if (this.isMenuBarVisible()) { this.applicationRef.detachView(this.menuComponentRef.hostView); this.detachFromDocument(this.menuComponentRef); this.menuComponentRef = null; } } isMenuBarVisible() { return !!this.menuComponentRef; } moveToElement(componentRef, element) { element.insertBefore(componentRef.location.nativeElement, element.firstChild); } moveToDocumentBody(componentRef) { this.moveToElement(componentRef, document.querySelector('body')); } detachFromDocument(componentRef) { const element = componentRef.location.nativeElement; if (element.parentNode) { element.parentNode.removeChild(element); } } }; DesktopMenuBarService.ctorParameters = () => [ { type: ApplicationRef }, { type: ComponentFactoryResolver }, { type: Injector } ]; DesktopMenuBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DesktopMenuBarService_Factory() { return new DesktopMenuBarService(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.INJECTOR)); }, token: DesktopMenuBarService, providedIn: "root" }); DesktopMenuBarService = __decorate([ Injectable({ providedIn: 'root' }) ], DesktopMenuBarService); export { DesktopMenuBarService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC1tZW51LWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGVza3RvcC1tZW51LWJhci8iLCJzb3VyY2VzIjpbImxpYi9kZXNrdG9wLW1lbnUtYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQU03RixJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFxQjtJQUk5QixZQUNZLGNBQThCLEVBQzlCLFFBQWtDLEVBQ2xDLFFBQWtCO1FBRmxCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTjlCLHFCQUFnQixHQUEwQyxJQUFJLENBQUM7UUFDL0QsY0FBUyxHQUF5QixJQUFJLENBQUM7SUFNcEMsQ0FBQztJQUVKLGVBQWUsQ0FBQyxLQUEyQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsNkJBQTZCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FDMUQsdUJBQXVCLENBQzFCLENBQUM7WUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDbkMsQ0FBQztJQUVPLGFBQWEsQ0FBSSxZQUE2QixFQUFFLE9BQWdCO1FBQ3BFLE9BQU8sQ0FBQyxZQUFZLENBQ2hCLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUNuQyxPQUFPLENBQUMsVUFBVSxDQUNyQixDQUFDO0lBQ04sQ0FBQztJQUVPLGtCQUFrQixDQUFJLFlBQTZCO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sa0JBQWtCLENBQUksWUFBNkI7UUFDdkQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUF3QixDQUFDO1FBQy9ELElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7Q0FDSixDQUFBOztZQTFEK0IsY0FBYztZQUNwQix3QkFBd0I7WUFDeEIsUUFBUTs7O0FBUHJCLHFCQUFxQjtJQUhqQyxVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0dBQ1cscUJBQXFCLENBK0RqQztTQS9EWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEluamVjdGFibGUsXG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIEluamVjdG9yLFxuICAgIENvbXBvbmVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc2t0b3BNZW51QmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vbGliL2Rlc2t0b3AtbWVudS1iYXIvZGVza3RvcC1tZW51LWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVza3RvcE1lbnVCYXJJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kZXNrdG9wLW1lbnUtYmFyLWl0ZW0uaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXNrdG9wTWVudUJhclNlcnZpY2Uge1xuICAgIG1lbnVDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEZXNrdG9wTWVudUJhckNvbXBvbmVudD4gPSBudWxsO1xuICAgIG1lbnVJdGVtczogRGVza3RvcE1lbnVCYXJJdGVtW10gPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7fVxuXG4gICAgc2V0TWVudUJhckl0ZW1zKGl0ZW1zOiBEZXNrdG9wTWVudUJhckl0ZW1bXSkge1xuICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IGl0ZW1zO1xuICAgICAgICB0aGlzLnVwZGF0ZU1lbnVCYXJJdGVtc0luQ29tcG9uZW50KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWVudUJhckl0ZW1zSW5Db21wb25lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTWVudUJhclZpc2libGUoKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51Q29tcG9uZW50UmVmLmluc3RhbmNlLml0ZW1zID0gdGhpcy5tZW51SXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93TWVudUJhcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTWVudUJhclZpc2libGUoKSkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICAgICAgICAgICAgRGVza3RvcE1lbnVCYXJDb21wb25lbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm1lbnVDb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh0aGlzLm1lbnVDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG9Eb2N1bWVudEJvZHkodGhpcy5tZW51Q29tcG9uZW50UmVmKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVNZW51QmFySXRlbXNJbkNvbXBvbmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZU1lbnVCYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTWVudUJhclZpc2libGUoKSkge1xuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi5kZXRhY2hWaWV3KHRoaXMubWVudUNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICB0aGlzLmRldGFjaEZyb21Eb2N1bWVudCh0aGlzLm1lbnVDb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgdGhpcy5tZW51Q29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzTWVudUJhclZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubWVudUNvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVUb0VsZW1lbnQ8VD4oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4sIGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQuZmlyc3RDaGlsZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZVRvRG9jdW1lbnRCb2R5PFQ+KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+KSB7XG4gICAgICAgIHRoaXMubW92ZVRvRWxlbWVudChjb21wb25lbnRSZWYsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRhY2hGcm9tRG9jdW1lbnQ8VD4oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==