@blox/material
Version:
Material Components for Angular
68 lines • 8.79 kB
JavaScript
import { ContentChildren, forwardRef, Directive, ElementRef, Optional, Renderer2, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Router, RouterLink, RouterLinkWithHref } from '@angular/router';
import { AbstractMdcTabDirective } from './mdc.tab.directive';
import { RouterActiveDetector } from '../utility/router.active.detector';
import { MdcEventRegistry } from '../../utils/mdc.event.registry';
/**
* Directive for a tab that triggers a route change. This directive must be used as a child of
* `mdcTabBar`. For a tab that doesn't use the angular routing module, drop the `routerLink`
* attribute.
*
* Selector `mdcTabRouter` is provided for backward compatibility and will be deprecated in the future.
* Use the selector `mdcTab` in combination with a `routerLink` attribute instead.
*/
export class MdcTabRouterDirective extends AbstractMdcTabDirective {
constructor(rndr, root, registry, router, doc, link, linkWithHref) {
super(rndr, root, registry, doc);
this.router = router;
this.link = link;
this.linkWithHref = linkWithHref;
this.routerActive = null;
}
ngOnDestroy() {
var _a;
(_a = this.routerActive) === null || _a === void 0 ? void 0 : _a.destroy();
this.routerActive = null;
super.ngOnDestroy();
}
ngAfterContentInit() {
super.ngAfterContentInit();
this.routerActive = new RouterActiveDetector(this, this._links, this._linksWithHrefs, this.router, this.link, this.linkWithHref);
this.routerActive.init();
}
ngOnChanges() {
var _a;
(_a = this.routerActive) === null || _a === void 0 ? void 0 : _a.update();
}
/** @internal */
isRouterActive() {
return this.isActive();
}
/** @internal */
setRouterActive(activate) {
this.triggerActivation(activate);
}
}
MdcTabRouterDirective.decorators = [
{ type: Directive, args: [{
selector: '[mdcTab][routerLink],[mdcTabRouter]',
exportAs: 'mdcTab',
providers: [{ provide: AbstractMdcTabDirective, useExisting: forwardRef(() => MdcTabRouterDirective) }]
},] }
];
MdcTabRouterDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: ElementRef },
{ type: MdcEventRegistry },
{ type: Router },
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: RouterLink, decorators: [{ type: Optional }] },
{ type: RouterLinkWithHref, decorators: [{ type: Optional }] }
];
MdcTabRouterDirective.propDecorators = {
_links: [{ type: ContentChildren, args: [RouterLink, { descendants: true },] }],
_linksWithHrefs: [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] }]
};
export const TAB_ROUTER_DIRECTIVES = [MdcTabRouterDirective];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRjLnRhYi5yb3V0ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGFiL21kYy50YWIucm91dGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBYSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFOzs7Ozs7O0dBT0c7QUFNSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBTzlELFlBQVksSUFBZSxFQUFFLElBQWdCLEVBQUUsUUFBMEIsRUFBVSxNQUFjLEVBQzNFLEdBQVEsRUFDTixJQUFpQixFQUFzQixZQUFpQztRQUM1RixLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBZSxDQUFDLENBQUM7UUFIa0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUV6RSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQXNCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUp4RixpQkFBWSxHQUFnQyxJQUFJLENBQUM7SUFNekQsQ0FBQztJQUVELFdBQVc7O1FBQ1AsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxPQUFPLEdBQUc7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFDL0YsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVzs7UUFDUCxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE1BQU0sR0FBRztJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGVBQWUsQ0FBQyxRQUFpQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7O1lBM0NKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUNBQXFDO2dCQUMvQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7YUFDekc7OztZQW5CaUYsU0FBUztZQUEvQixVQUFVO1lBSzdELGdCQUFnQjtZQUhoQixNQUFNOzRDQTBCTixNQUFNLFNBQUMsUUFBUTtZQTFCUCxVQUFVLHVCQTJCbEIsUUFBUTtZQTNCWSxrQkFBa0IsdUJBMkJDLFFBQVE7OztxQkFQbkQsZUFBZSxTQUFDLFVBQVUsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7OEJBRS9DLGVBQWUsU0FBQyxrQkFBa0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7O0FBcUM1RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50Q2hpbGRyZW4sIGZvcndhcmRSZWYsIFF1ZXJ5TGlzdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPcHRpb25hbCwgUmVuZGVyZXIyLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluaywgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFic3RyYWN0TWRjVGFiRGlyZWN0aXZlIH0gZnJvbSAnLi9tZGMudGFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb3V0ZXJBY3RpdmVEZXRlY3RvciB9IGZyb20gJy4uL3V0aWxpdHkvcm91dGVyLmFjdGl2ZS5kZXRlY3Rvcic7XG5pbXBvcnQgeyBNZGNFdmVudFJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvbWRjLmV2ZW50LnJlZ2lzdHJ5JztcblxuLyoqXG4gKiBEaXJlY3RpdmUgZm9yIGEgdGFiIHRoYXQgdHJpZ2dlcnMgYSByb3V0ZSBjaGFuZ2UuIFRoaXMgZGlyZWN0aXZlIG11c3QgYmUgdXNlZCBhcyBhIGNoaWxkIG9mXG4gKiBgbWRjVGFiQmFyYC4gRm9yIGEgdGFiIHRoYXQgZG9lc24ndCB1c2UgdGhlIGFuZ3VsYXIgcm91dGluZyBtb2R1bGUsIGRyb3AgdGhlIGByb3V0ZXJMaW5rYFxuICogYXR0cmlidXRlLlxuICogXG4gKiBTZWxlY3RvciBgbWRjVGFiUm91dGVyYCBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhbmQgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gKiBVc2UgdGhlIHNlbGVjdG9yIGBtZGNUYWJgIGluIGNvbWJpbmF0aW9uIHdpdGggYSBgcm91dGVyTGlua2AgYXR0cmlidXRlIGluc3RlYWQuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21kY1RhYl1bcm91dGVyTGlua10sW21kY1RhYlJvdXRlcl0nLFxuICAgIGV4cG9ydEFzOiAnbWRjVGFiJyxcbiAgICBwcm92aWRlcnM6IFt7cHJvdmlkZTogQWJzdHJhY3RNZGNUYWJEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1kY1RhYlJvdXRlckRpcmVjdGl2ZSkgfV1cbn0pXG5leHBvcnQgY2xhc3MgTWRjVGFiUm91dGVyRGlyZWN0aXZlIGV4dGVuZHMgQWJzdHJhY3RNZGNUYWJEaXJlY3RpdmUge1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFJvdXRlckxpbmssIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9saW5rcz86IFF1ZXJ5TGlzdDxSb3V0ZXJMaW5rPjtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihSb3V0ZXJMaW5rV2l0aEhyZWYsIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9saW5rc1dpdGhIcmVmcz86IFF1ZXJ5TGlzdDxSb3V0ZXJMaW5rV2l0aEhyZWY+O1xuICAgIHByaXZhdGUgcm91dGVyQWN0aXZlOiBSb3V0ZXJBY3RpdmVEZXRlY3RvciB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3Iocm5kcjogUmVuZGVyZXIyLCByb290OiBFbGVtZW50UmVmLCByZWdpc3RyeTogTWRjRXZlbnRSZWdpc3RyeSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnksXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbGluaz86IFJvdXRlckxpbmssIEBPcHRpb25hbCgpIHByaXZhdGUgbGlua1dpdGhIcmVmPzogUm91dGVyTGlua1dpdGhIcmVmKSB7XG4gICAgICAgIHN1cGVyKHJuZHIsIHJvb3QsIHJlZ2lzdHJ5LCBkb2MgYXMgRG9jdW1lbnQpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZT8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZSA9IG51bGw7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUgPSBuZXcgUm91dGVyQWN0aXZlRGV0ZWN0b3IodGhpcywgdGhpcy5fbGlua3MhLCB0aGlzLl9saW5rc1dpdGhIcmVmcyEsIHRoaXMucm91dGVyLFxuICAgICAgICAgICAgdGhpcy5saW5rLCB0aGlzLmxpbmtXaXRoSHJlZik7XG4gICAgICAgIHRoaXMucm91dGVyQWN0aXZlLmluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmU/LnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBpc1JvdXRlckFjdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgc2V0Um91dGVyQWN0aXZlKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckFjdGl2YXRpb24oYWN0aXZhdGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IFRBQl9ST1VURVJfRElSRUNUSVZFUyA9IFtNZGNUYWJSb3V0ZXJEaXJlY3RpdmVdO1xuIl19