mirror of https://github.com/Squidex/squidex.git
16 changed files with 66 additions and 26 deletions
@ -0,0 +1,36 @@ |
|||||
|
/* |
||||
|
* Squidex Headless CMS |
||||
|
* |
||||
|
* @license |
||||
|
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
||||
|
*/ |
||||
|
|
||||
|
import { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core'; |
||||
|
|
||||
|
@Directive({ |
||||
|
selector: '[sqxExternalLink]' |
||||
|
}) |
||||
|
export class ExternalLinkDirective implements AfterViewInit { |
||||
|
@Input('sqxExternalLink') |
||||
|
public type?: string; |
||||
|
|
||||
|
constructor( |
||||
|
private readonly element: ElementRef<Element>, |
||||
|
private readonly renderer: Renderer2 |
||||
|
) { |
||||
|
} |
||||
|
|
||||
|
public ngAfterViewInit() { |
||||
|
this.renderer.setAttribute(this.element.nativeElement, 'target', '_blank'); |
||||
|
this.renderer.setAttribute(this.element.nativeElement, 'rel', 'noopener'); |
||||
|
|
||||
|
if (this.type !== 'noicon') { |
||||
|
const icon = this.renderer.createElement('i'); |
||||
|
|
||||
|
this.renderer.addClass(icon, 'icon-external-link'); |
||||
|
this.renderer.addClass(icon, 'ml-1'); |
||||
|
|
||||
|
this.renderer.appendChild(this.element.nativeElement, icon); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue