UNPKG

@blox/material

Version:

Material Components for Angular

68 lines 8.79 kB
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