UNPKG

coreui-angular-ex

Version:

CoreUI Components Library for Angular

45 lines (38 loc) 1.21 kB
import { AfterContentInit, Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core'; @Directive({ selector: '[cHeaderToggler]', standalone: true }) export class HeaderTogglerDirective implements AfterContentInit { @HostBinding('class.header-toggler') headerToggler = true; /** * Default role for header-toggler. [docs] * @type string * @default 'button' */ @HostBinding('attr.type') @Input() type = 'button'; /** * Default aria-label attr for header-toggler. [docs] * @type string * @default 'Toggle navigation' */ @HostBinding('attr.aria-label') @Input() ariaLabel = 'Toggle navigation'; private hasContent!: boolean; constructor( private renderer: Renderer2, private hostElement: ElementRef ) { } addDefaultIcon(): void { const span = this.renderer.createElement('span'); this.renderer.addClass(span, 'header-toggler-icon'); this.renderer.appendChild(this.hostElement.nativeElement, span); } ngAfterContentInit(): void { this.hasContent = this.hostElement.nativeElement.childNodes.length > 0; if (!this.hasContent) { this.addDefaultIcon(); } } }