UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

63 lines 7.49 kB
import { afterNextRender, Directive, ElementRef, HostListener, inject, input, Renderer2 } from '@angular/core'; import * as i0 from "@angular/core"; export class NavbarTogglerDirective { #renderer; #hostElement; constructor() { this.#renderer = inject(Renderer2); this.#hostElement = inject(ElementRef); /** * Reference to navbar collapse element (via # template variable) . [docs] * @type string * @default 'button' */ this.collapseRef = input(undefined, { alias: 'cNavbarToggler' }); /** * Default type for navbar-toggler. [docs] * @type string * @default 'button' */ this.type = input('button'); /** * Default aria-label attr for navbar-toggler. [docs] * @type string * @default 'Toggle navigation' */ this.ariaLabel = input('Toggle navigation'); afterNextRender({ read: () => { const hasContent = this.#hostElement.nativeElement.childNodes.length; if (!hasContent) { this.addDefaultIcon(); } } }); } handleClick() { const collapseRef = this.collapseRef(); collapseRef?.toggle(!collapseRef?.visible()); } addDefaultIcon() { const span = this.#renderer.createElement('span'); this.#renderer.addClass(span, 'navbar-toggler-icon'); this.#renderer.appendChild(this.#hostElement.nativeElement, span); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NavbarTogglerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.12", type: NavbarTogglerDirective, isStandalone: true, selector: "[cNavbarToggler]", inputs: { collapseRef: { classPropertyName: "collapseRef", publicName: "cNavbarToggler", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick($event)" }, properties: { "attr.aria-label": "ariaLabel()", "attr.type": "type()" }, classAttribute: "navbar-toggler" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NavbarTogglerDirective, decorators: [{ type: Directive, args: [{ selector: '[cNavbarToggler]', standalone: true, host: { '[attr.aria-label]': 'ariaLabel()', '[attr.type]': 'type()', class: 'navbar-toggler' } }] }], ctorParameters: () => [], propDecorators: { handleClick: [{ type: HostListener, args: ['click', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLXRvZ2dsZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9uYXZiYXIvbmF2YmFyLXRvZ2dsZXIvbmF2YmFyLXRvZ2dsZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWS9HLE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsU0FBUyxDQUFxQjtJQUM5QixZQUFZLENBQXNCO0lBRTNDO1FBSFMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQWEzQzs7OztXQUlHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQWdDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFcEc7Ozs7V0FJRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQTdCOUMsZUFBZSxDQUFDO1lBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBaUIsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXdCRCxXQUFXO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7K0dBOUNVLHNCQUFzQjttR0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQVRsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsYUFBYTt3QkFDbEMsYUFBYSxFQUFFLFFBQVE7d0JBQ3ZCLEtBQUssRUFBRSxnQkFBZ0I7cUJBQ3hCO2lCQUNGO3dEQXNDQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBpbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xsYXBzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2NvbGxhcHNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NOYXZiYXJUb2dnbGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsKCknLFxuICAgICdbYXR0ci50eXBlXSc6ICd0eXBlKCknLFxuICAgIGNsYXNzOiAnbmF2YmFyLXRvZ2dsZXInXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTmF2YmFyVG9nZ2xlckRpcmVjdGl2ZSB7XG4gIHJlYWRvbmx5ICNyZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICByZWFkb25seSAjaG9zdEVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKHtcbiAgICAgIHJlYWQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgaGFzQ29udGVudCA9IHRoaXMuI2hvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggYXMgYm9vbGVhbjtcbiAgICAgICAgaWYgKCFoYXNDb250ZW50KSB7XG4gICAgICAgICAgdGhpcy5hZGREZWZhdWx0SWNvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIG5hdmJhciBjb2xsYXBzZSBlbGVtZW50ICh2aWEgIyB0ZW1wbGF0ZSB2YXJpYWJsZSkgLiBbZG9jc11cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0ICdidXR0b24nXG4gICAqL1xuICByZWFkb25seSBjb2xsYXBzZVJlZiA9IGlucHV0PENvbGxhcHNlRGlyZWN0aXZlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICdjTmF2YmFyVG9nZ2xlcicgfSk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdHlwZSBmb3IgbmF2YmFyLXRvZ2dsZXIuIFtkb2NzXVxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ2J1dHRvbidcbiAgICovXG4gIHJlYWRvbmx5IHR5cGUgPSBpbnB1dCgnYnV0dG9uJyk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXJpYS1sYWJlbCBhdHRyIGZvciBuYXZiYXItdG9nZ2xlci4gW2RvY3NdXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCAnVG9nZ2xlIG5hdmlnYXRpb24nXG4gICAqL1xuICByZWFkb25seSBhcmlhTGFiZWwgPSBpbnB1dCgnVG9nZ2xlIG5hdmlnYXRpb24nKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUNsaWNrKCkge1xuICAgIGNvbnN0IGNvbGxhcHNlUmVmID0gdGhpcy5jb2xsYXBzZVJlZigpO1xuICAgIGNvbGxhcHNlUmVmPy50b2dnbGUoIWNvbGxhcHNlUmVmPy52aXNpYmxlKCkpO1xuICB9XG5cbiAgYWRkRGVmYXVsdEljb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc3BhbiA9IHRoaXMuI3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhzcGFuLCAnbmF2YmFyLXRvZ2dsZXItaWNvbicpO1xuICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuI2hvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHNwYW4pO1xuICB9XG59XG4iXX0=