desktop-menu-bar
Version:
An angular component for a desktop like menu bar
67 lines • 9.17 kB
JavaScript
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";
var DesktopMenuBarService = /** @class */ (function () {
function DesktopMenuBarService(applicationRef, resolver, injector) {
this.applicationRef = applicationRef;
this.resolver = resolver;
this.injector = injector;
this.menuComponentRef = null;
this.menuItems = null;
}
DesktopMenuBarService.prototype.setMenuBarItems = function (items) {
this.menuItems = items;
this.updateMenuBarItemsInComponent();
};
DesktopMenuBarService.prototype.updateMenuBarItemsInComponent = function () {
if (this.isMenuBarVisible()) {
this.menuComponentRef.instance.items = this.menuItems;
}
};
DesktopMenuBarService.prototype.showMenuBar = function () {
if (!this.isMenuBarVisible()) {
var componentFactory = this.resolver.resolveComponentFactory(DesktopMenuBarComponent);
this.menuComponentRef = componentFactory.create(this.injector);
this.applicationRef.attachView(this.menuComponentRef.hostView);
this.moveToDocumentBody(this.menuComponentRef);
this.updateMenuBarItemsInComponent();
}
};
DesktopMenuBarService.prototype.hideMenuBar = function () {
if (this.isMenuBarVisible()) {
this.applicationRef.detachView(this.menuComponentRef.hostView);
this.detachFromDocument(this.menuComponentRef);
this.menuComponentRef = null;
}
};
DesktopMenuBarService.prototype.isMenuBarVisible = function () {
return !!this.menuComponentRef;
};
DesktopMenuBarService.prototype.moveToElement = function (componentRef, element) {
element.insertBefore(componentRef.location.nativeElement, element.firstChild);
};
DesktopMenuBarService.prototype.moveToDocumentBody = function (componentRef) {
this.moveToElement(componentRef, document.querySelector('body'));
};
DesktopMenuBarService.prototype.detachFromDocument = function (componentRef) {
var element = componentRef.location.nativeElement;
if (element.parentNode) {
element.parentNode.removeChild(element);
}
};
DesktopMenuBarService.ctorParameters = function () { return [
{ 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);
return DesktopMenuBarService;
}());
export { DesktopMenuBarService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVza3RvcC1tZW51LWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGVza3RvcC1tZW51LWJhci8iLCJzb3VyY2VzIjpbImxpYi9kZXNrdG9wLW1lbnUtYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQU03RjtJQUlJLCtCQUNZLGNBQThCLEVBQzlCLFFBQWtDLEVBQ2xDLFFBQWtCO1FBRmxCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTjlCLHFCQUFnQixHQUEwQyxJQUFJLENBQUM7UUFDL0QsY0FBUyxHQUF5QixJQUFJLENBQUM7SUFNcEMsQ0FBQztJQUVKLCtDQUFlLEdBQWYsVUFBZ0IsS0FBMkI7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELDZEQUE2QixHQUE3QjtRQUNJLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRCwyQ0FBVyxHQUFYO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQzFCLElBQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FDMUQsdUJBQXVCLENBQzFCLENBQUM7WUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVELDJDQUFXLEdBQVg7UUFDSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxnREFBZ0IsR0FBaEI7UUFDSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDbkMsQ0FBQztJQUVPLDZDQUFhLEdBQXJCLFVBQXlCLFlBQTZCLEVBQUUsT0FBZ0I7UUFDcEUsT0FBTyxDQUFDLFlBQVksQ0FDaEIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQ25DLE9BQU8sQ0FBQyxVQUFVLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRU8sa0RBQWtCLEdBQTFCLFVBQThCLFlBQTZCO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sa0RBQWtCLEdBQTFCLFVBQThCLFlBQTZCO1FBQ3ZELElBQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBd0IsQ0FBQztRQUMvRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDOztnQkF6RDJCLGNBQWM7Z0JBQ3BCLHdCQUF3QjtnQkFDeEIsUUFBUTs7O0lBUHJCLHFCQUFxQjtRQUhqQyxVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1cscUJBQXFCLENBK0RqQztnQ0E1RUQ7Q0E0RUMsQUEvREQsSUErREM7U0EvRFkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJbmplY3RhYmxlLFxuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBJbmplY3RvcixcbiAgICBDb21wb25lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXNrdG9wTWVudUJhckNvbXBvbmVudCB9IGZyb20gJy4uL2xpYi9kZXNrdG9wLW1lbnUtYmFyL2Rlc2t0b3AtbWVudS1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IERlc2t0b3BNZW51QmFySXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGVza3RvcC1tZW51LWJhci1pdGVtLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGVza3RvcE1lbnVCYXJTZXJ2aWNlIHtcbiAgICBtZW51Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RGVza3RvcE1lbnVCYXJDb21wb25lbnQ+ID0gbnVsbDtcbiAgICBtZW51SXRlbXM6IERlc2t0b3BNZW51QmFySXRlbVtdID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge31cblxuICAgIHNldE1lbnVCYXJJdGVtcyhpdGVtczogRGVza3RvcE1lbnVCYXJJdGVtW10pIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBpdGVtcztcbiAgICAgICAgdGhpcy51cGRhdGVNZW51QmFySXRlbXNJbkNvbXBvbmVudCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1lbnVCYXJJdGVtc0luQ29tcG9uZW50KCkge1xuICAgICAgICBpZiAodGhpcy5pc01lbnVCYXJWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUNvbXBvbmVudFJlZi5pbnN0YW5jZS5pdGVtcyA9IHRoaXMubWVudUl0ZW1zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd01lbnVCYXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc01lbnVCYXJWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgICAgICAgICAgIERlc2t0b3BNZW51QmFyQ29tcG9uZW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5tZW51Q29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodGhpcy5tZW51Q29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIHRoaXMubW92ZVRvRG9jdW1lbnRCb2R5KHRoaXMubWVudUNvbXBvbmVudFJlZik7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWVudUJhckl0ZW1zSW5Db21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVNZW51QmFyKCkge1xuICAgICAgICBpZiAodGhpcy5pc01lbnVCYXJWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh0aGlzLm1lbnVDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5kZXRhY2hGcm9tRG9jdW1lbnQodGhpcy5tZW51Q29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIHRoaXMubWVudUNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc01lbnVCYXJWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm1lbnVDb21wb25lbnRSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlVG9FbGVtZW50PFQ+KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+LCBlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50LmZpcnN0Q2hpbGRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVUb0RvY3VtZW50Qm9keTxUPihjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPikge1xuICAgICAgICB0aGlzLm1vdmVUb0VsZW1lbnQoY29tcG9uZW50UmVmLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGV0YWNoRnJvbURvY3VtZW50PFQ+KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50O1xuICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=