@logo-software/accordion
Version:
An accordion allows to toggle the display of sections of content.
65 lines • 6.11 kB
JavaScript
/**
* @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=