UNPKG

@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
/** * @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