ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
84 lines • 10.8 kB
JavaScript
import { ElementRef, HostListener, Injector, Directive } from '@angular/core';
import { OTranslateService } from '../../services/translate/o-translate.service';
import { PermissionsUtils } from '../../util/permissions';
import { Util } from '../../util/util';
import { OBarMenuBase } from './o-bar-menu-base.class';
import * as i0 from "@angular/core";
import * as i1 from "./o-bar-menu-base.class";
export const DEFAULT_INPUTS_O_BASE_MENU_ITEM = [
'title',
'tooltip',
'icon',
'attr'
];
export class OBaseMenuItemClass {
constructor(menu, elRef, injector) {
this.menu = menu;
this.elRef = elRef;
this.injector = injector;
this._isHovered = false;
this.onMouseover = () => this.isHovered = true;
this.onMouseout = () => this.isHovered = false;
this.translateService = this.injector.get(OTranslateService);
}
ngOnInit() {
if (!this.tooltip) {
this.tooltip = this.title;
}
if (this.translateService) {
this.onLanguageChangeSubscription = this.translateService.onLanguageChanged.subscribe(() => {
this.setDOMTitle();
});
this.setDOMTitle();
}
this.parsePermissions();
}
ngOnDestroy() {
if (this.onLanguageChangeSubscription) {
this.onLanguageChangeSubscription.unsubscribe();
}
if (this.mutationObserver) {
this.mutationObserver.disconnect();
}
}
setDOMTitle() {
const tooltip = this.translateService.get(this.tooltip);
this.elRef.nativeElement.setAttribute('title', tooltip);
}
parsePermissions() {
this.permissions = this.menu.getPermissionsService().getMenuPermissions(this.attr);
if (!Util.isDefined(this.permissions)) {
return;
}
this.restricted = this.permissions.visible === false;
this.disabled = this.permissions.enabled === false;
if (this.disabled) {
this.mutationObserver = PermissionsUtils.registerDisabledChangesInDom(this.elRef.nativeElement, {
checkStringValue: true
});
}
}
get isHovered() {
return this._isHovered;
}
set isHovered(val) {
if (!this.disabled) {
this._isHovered = val;
}
}
}
OBaseMenuItemClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OBaseMenuItemClass, deps: [{ token: i1.OBarMenuBase }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
OBaseMenuItemClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OBaseMenuItemClass, inputs: { title: "title", tooltip: "tooltip", icon: "icon", attr: "attr" }, host: { listeners: { "mouseover": "onMouseover()", "mouseout": "onMouseout()" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OBaseMenuItemClass, decorators: [{
type: Directive,
args: [{
inputs: DEFAULT_INPUTS_O_BASE_MENU_ITEM
}]
}], ctorParameters: function () { return [{ type: i1.OBarMenuBase }, { type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { onMouseover: [{
type: HostListener,
args: ['mouseover']
}], onMouseout: [{
type: HostListener,
args: ['mouseout']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLW1lbnUtaXRlbS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2Jhci1tZW51L28tYmFzZS1tZW51LWl0ZW0uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRXZELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHO0lBRTdDLE9BQU87SUFHUCxTQUFTO0lBR1QsTUFBTTtJQUVOLE1BQU07Q0FDUCxDQUFDO0FBS0YsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFDWSxJQUFrQixFQUNsQixLQUFpQixFQUNqQixRQUFrQjtRQUZsQixTQUFJLEdBQUosSUFBSSxDQUFjO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVRwQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBR1gsZ0JBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMzQyxlQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFPbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDckMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFUyxnQkFBZ0I7UUFFeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUM5RixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztTQUN2QjtJQUNILENBQUM7O2dIQTlFVSxrQkFBa0I7b0dBQWxCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULE1BQU0sRUFBRSwrQkFBK0I7aUJBQ3hDO21KQWlCNEIsV0FBVztzQkFBckMsWUFBWTt1QkFBQyxXQUFXO2dCQUNDLFVBQVU7c0JBQW5DLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1V0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9CYXJNZW51QmFzZSB9IGZyb20gJy4vby1iYXItbWVudS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fQkFTRV9NRU5VX0lURU0gPSBbXG4gIC8vIHRpdGxlIFtzdHJpbmddOiBtZW51IGl0ZW0gdGl0bGUuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAndGl0bGUnLFxuXG4gIC8vIHRvb2x0aXAgW3N0cmluZ106IG1lbnUgZ3JvdXAgdG9vbHRpcC4gRGVmYXVsdDogJ3RpdGxlJyB2YWx1ZS5cbiAgJ3Rvb2x0aXAnLFxuXG4gIC8vIGljb24gW3N0cmluZ106IG1hdGVyaWFsIGljb24uIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnaWNvbicsXG5cbiAgJ2F0dHInXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0JBU0VfTUVOVV9JVEVNXG59KVxuZXhwb3J0IGNsYXNzIE9CYXNlTWVudUl0ZW1DbGFzcyBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvbkxhbmd1YWdlQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zOiBPUGVybWlzc2lvbnM7XG4gIHByb3RlY3RlZCBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRvb2x0aXA6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICByZXN0cmljdGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9pc0hvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXR0cjogc3RyaW5nO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpIG9uTW91c2VvdmVyID0gKCkgPT4gdGhpcy5pc0hvdmVyZWQgPSB0cnVlO1xuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpIG9uTW91c2VvdXQgPSAoKSA9PiB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtZW51OiBPQmFyTWVudUJhc2UsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcblxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy50b29sdGlwKSB7XG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnRpdGxlO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm9uTGFuZ3VhZ2VDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5ndWFnZUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRET01UaXRsZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldERPTVRpdGxlKCk7XG4gICAgfVxuICAgIHRoaXMucGFyc2VQZXJtaXNzaW9ucygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25MYW5ndWFnZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vbkxhbmd1YWdlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm11dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RE9NVGl0bGUoKSB7XG4gICAgY29uc3QgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy50b29sdGlwKTtcbiAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRvb2x0aXApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlUGVybWlzc2lvbnMoKSB7XG4gICAgLy8gaWYgb2F0dHIgaW4gZm9ybSwgaXQgY2FuIGhhdmUgcGVybWlzc2lvbnNcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5tZW51LmdldFBlcm1pc3Npb25zU2VydmljZSgpLmdldE1lbnVQZXJtaXNzaW9ucyh0aGlzLmF0dHIpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXN0cmljdGVkID0gdGhpcy5wZXJtaXNzaW9ucy52aXNpYmxlID09PSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5wZXJtaXNzaW9ucy5lbmFibGVkID09PSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBQZXJtaXNzaW9uc1V0aWxzLnJlZ2lzdGVyRGlzYWJsZWRDaGFuZ2VzSW5Eb20odGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGNoZWNrU3RyaW5nVmFsdWU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc0hvdmVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzSG92ZXJlZDtcbiAgfVxuXG4gIHNldCBpc0hvdmVyZWQodmFsOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSB2YWw7XG4gICAgfVxuICB9XG59XG4iXX0=