@logo-software/tree
Version:
A tree view represents a hierarchical view of information, where each item can have a number of subitems.
65 lines • 6.1 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYWN0aXZlLXJvdXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvZ28tc29mdHdhcmUvdHJlZS9zcmMvbGliL2lzLWFjdGl2ZS1yb3V0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUcxRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIeEIseUJBQW9CLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBSXBHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZELElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sTUFBTTtRQUNaLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDckQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDcEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTlCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjthQUM1Qjs7O1lBdEJ1QixNQUFNOzs7NEJBd0IzQixLQUFLO21DQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTE9HTyBZQVpJTElNIFNBTkFZxLAgVkUgVMSwQ0FSRVQgQS7Fni4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBTYXZlIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdywgeW91IG1heSBub3QgdXNlLCBjb3B5LCBtb2RpZnksXG4gKiBkaXN0cmlidXRlIG9yIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoaXMgbWF0ZXJpYWwgb3IgYW55IHBhcnRcbiAqIG9mIGl0IHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBMT0dPIFlBWklMSU0gU0FOQVnEsCBWRSBUxLBDQVJFVCBBLsWeLiBMaW1pdGVkLlxuICogQW55IHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIG11c3QgY29udGFpbiB0aGlzIG5vdGljZS5cbiAqL1xuXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRW1pdHMgdGhlIGRlZmluZWQgbWV0aG9kIHdoZW4gcm91dGUgaXMgYWN0aXZlIGFuZCBzZXQgYSBjbGFzcyBuYW1lIHdoZW4gcm91dGUgaXMgYWN0aXZlLlxuICpcbiAqIF9fVXNhZ2UgRXhhbXBsZTpfX1xuICpcbiAqIGBgYGh0bWxcbiAqIDxhXG4gKiAgICBbcm91dGVyTGlua109XCJbJ2hvbWUnXVwiXG4gKiAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWRkLWFjdGl2ZS1jc3MtY2xhc3NcIlxuICogICAgI3JlZmVyZW5jZT1cInJvdXRlckxpbmtBY3RpdmVcIlxuICogICAgW2lzQWN0aXZlUm91dGVdPVwicmVmZXJlbmNlXCJcbiAqICAgIChpc0FjdGl2ZVJvdXRlRW1pdHRlcik9XCJpc0FjdGl2ZVJvdXRlKCRldmVudClcIlxuICogID5cbiAqICBMaW5rIHRvIEhvbWVcbiAqICA8L2E+IC0gdGhpcyBsaW5rIGlzIHt7cm91dGUgJiYgcm91dGUuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICdub3QgYWN0aXZlJ319XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lzQWN0aXZlUm91dGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgSXNBY3RpdmVSb3V0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlzQWN0aXZlUm91dGU6IFJvdXRlckxpbmtBY3RpdmU7XG4gIEBPdXRwdXQoKSBpc0FjdGl2ZVJvdXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFJvdXRlckxpbmtBY3RpdmU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSb3V0ZXJMaW5rQWN0aXZlPigpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKTogdm9pZCB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0FjdGl2ZVJvdXRlICYmIHRoaXMuaXNBY3RpdmVSb3V0ZS5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLmlzQWN0aXZlUm91dGVFbWl0dGVyLmVtaXQodGhpcy5pc0FjdGl2ZVJvdXRlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19