UNPKG

@logo-software/accordion

Version:

An accordion allows to toggle the display of sections of content.

65 lines 6.11 kB
/** * @license * Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved. * * Save to the extent permitted by law, you may not use, copy, modify, * distribute or create derivative works of this material or any part * of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited. * Any reproduction of this material must contain this notice. */ import { Directive, EventEmitter, Input, Output } from '@angular/core'; import { NavigationEnd, Router } from '@angular/router'; /** * Emits the defined method when route is active and set a class name when route is active. * * __Usage Example:__ * * ```html * <a * [routerLink]="['home']" * routerLinkActive="add-active-css-class" * #reference="routerLinkActive" * [isActiveRoute]="reference" * (isActiveRouteEmitter)="isActiveRoute($event)" * > * Link to Home * </a> - this link is {{route && route.isActive ? 'active' : 'not active'}} * ``` */ export class IsActiveRouteDirective { constructor(router) { this.router = router; this.isActiveRouteEmitter = new EventEmitter(); this.subscription = this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { this.update(); } }); } ngAfterContentInit() { this.update(); } ngOnDestroy() { this.subscription.unsubscribe(); } update() { Promise.resolve().then(() => { if (this.isActiveRoute && this.isActiveRoute.isActive) { this.isActiveRouteEmitter.emit(this.isActiveRoute); } }); } } IsActiveRouteDirective.decorators = [ { type: Directive, args: [{ selector: '[isActiveRoute]', },] } ]; IsActiveRouteDirective.ctorParameters = () => [ { type: Router } ]; IsActiveRouteDirective.propDecorators = { isActiveRoute: [{ type: Input }], isActiveRouteEmitter: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYWN0aXZlLXJvdXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvZ28tc29mdHdhcmUvYWNjb3JkaW9uL3NyYy9saWIvaXMtYWN0aXZlLXJvdXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBRzFFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUh4Qix5QkFBb0IsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFJcEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxNQUFNO1FBQ1osT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNwRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBOUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOzs7WUF0QnVCLE1BQU07Ozs0QkF3QjNCLEtBQUs7bUNBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBMT0dPIFlBWklMSU0gU0FOQVnEsCBWRSBUxLBDQVJFVCBBLsWeLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFNhdmUgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LCB5b3UgbWF5IG5vdCB1c2UsIGNvcHksIG1vZGlmeSxcbiAqIGRpc3RyaWJ1dGUgb3IgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhpcyBtYXRlcmlhbCBvciBhbnkgcGFydFxuICogb2YgaXQgd2l0aG91dCB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIExPR08gWUFaSUxJTSBTQU5BWcSwIFZFIFTEsENBUkVUIEEuxZ4uIExpbWl0ZWQuXG4gKiBBbnkgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgbXVzdCBjb250YWluIHRoaXMgbm90aWNlLlxuICovXG5cbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBFbWl0cyB0aGUgZGVmaW5lZCBtZXRob2Qgd2hlbiByb3V0ZSBpcyBhY3RpdmUgYW5kIHNldCBhIGNsYXNzIG5hbWUgd2hlbiByb3V0ZSBpcyBhY3RpdmUuXG4gKlxuICogX19Vc2FnZSBFeGFtcGxlOl9fXG4gKlxuICogYGBgaHRtbFxuICogPGFcbiAqICAgIFtyb3V0ZXJMaW5rXT1cIlsnaG9tZSddXCJcbiAqICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhZGQtYWN0aXZlLWNzcy1jbGFzc1wiXG4gKiAgICAjcmVmZXJlbmNlPVwicm91dGVyTGlua0FjdGl2ZVwiXG4gKiAgICBbaXNBY3RpdmVSb3V0ZV09XCJyZWZlcmVuY2VcIlxuICogICAgKGlzQWN0aXZlUm91dGVFbWl0dGVyKT1cImlzQWN0aXZlUm91dGUoJGV2ZW50KVwiXG4gKiAgPlxuICogIExpbmsgdG8gSG9tZVxuICogIDwvYT4gLSB0aGlzIGxpbmsgaXMge3tyb3V0ZSAmJiByb3V0ZS5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJ25vdCBhY3RpdmUnfX1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaXNBY3RpdmVSb3V0ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBJc0FjdGl2ZVJvdXRlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaXNBY3RpdmVSb3V0ZTogUm91dGVyTGlua0FjdGl2ZTtcbiAgQE91dHB1dCgpIGlzQWN0aXZlUm91dGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Um91dGVyTGlua0FjdGl2ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvdXRlckxpbmtBY3RpdmU+KCk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSgpOiB2b2lkIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlUm91dGUgJiYgdGhpcy5pc0FjdGl2ZVJvdXRlLmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuaXNBY3RpdmVSb3V0ZUVtaXR0ZXIuZW1pdCh0aGlzLmlzQWN0aXZlUm91dGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=