47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';
|
|
import { HelpModeService, ScrollableParentView } from './help-mode.service';
|
|
import { Router } from '@angular/router';
|
|
|
|
@Directive({
|
|
selector: '[iqserHelpMode]',
|
|
exportAs: 'iqserHelpMode',
|
|
})
|
|
export class HelpModeDirective implements OnInit {
|
|
@Input('iqserHelpMode') elementName!: string;
|
|
@Input() scrollableParentView!: ScrollableParentView;
|
|
@Input() dialogElement = false;
|
|
private _path: string;
|
|
|
|
constructor(
|
|
private readonly _elementRef: ElementRef,
|
|
private readonly _renderer: Renderer2,
|
|
private readonly _helpModeService: HelpModeService,
|
|
private readonly _router: Router,
|
|
) {
|
|
this._path = this._router.url.split('/').pop() as string;
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
if (this.elementName) {
|
|
this._createHelperElement();
|
|
}
|
|
}
|
|
|
|
private _createHelperElement() {
|
|
|
|
const element = this._elementRef.nativeElement as HTMLElement;
|
|
const helperElementName = `${this.elementName}-${this._generateId()}`;
|
|
|
|
const helperElement = this._renderer.createElement('a') as HTMLElement;
|
|
this._renderer.setAttribute(helperElement, 'href', this._helpModeService.getDocsLink(this.elementName));
|
|
this._renderer.setAttribute(helperElement, 'target', '_blank');
|
|
this._renderer.addClass(helperElement, 'help-mode');
|
|
|
|
this._helpModeService.addElement(helperElementName, element, helperElement, this.scrollableParentView, this.dialogElement);
|
|
}
|
|
|
|
private _generateId(): string {
|
|
return Math.random().toString(36).substring(2, 9);
|
|
}
|
|
}
|