UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

284 lines (271 loc) 15.4 kB
import * as i0 from '@angular/core'; import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Optional, NgModule } from '@angular/core'; import * as i2 from '@angular/common'; import { CommonModule } from '@angular/common'; import * as i3 from 'ng-zorro-antd/dropdown'; import { NzDropDownModule } from 'ng-zorro-antd/dropdown'; import * as i4 from 'ng-zorro-antd/icon'; import { NzIconModule } from 'ng-zorro-antd/icon'; import * as i5 from 'ng-zorro-antd/core/outlet'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { __decorate } from 'tslib'; import { Router, ActivatedRoute, NavigationEnd, PRIMARY_OUTLET } from '@angular/router'; import { Subject } from 'rxjs'; import { takeUntil, filter, startWith } from 'rxjs/operators'; import { PREFIX } from 'ng-zorro-antd/core/logger'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import * as i1 from '@angular/cdk/bidi'; import { BidiModule } from '@angular/cdk/bidi'; import { OverlayModule } from '@angular/cdk/overlay'; import { NzOverlayModule } from 'ng-zorro-antd/core/overlay'; /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ /** * https://angular.io/errors/NG3003 * An intermediate interface for {@link NzBreadCrumbComponent} & {@link NzBreadCrumbItemComponent} */ class NzBreadcrumb { } /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzBreadCrumbItemComponent { constructor(nzBreadCrumbComponent) { this.nzBreadCrumbComponent = nzBreadCrumbComponent; } } NzBreadCrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbItemComponent, deps: [{ token: NzBreadcrumb }], target: i0.ɵɵFactoryTarget.Component }); NzBreadCrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzBreadCrumbItemComponent, selector: "nz-breadcrumb-item", inputs: { nzOverlay: "nzOverlay" }, exportAs: ["nzBreadcrumbItem"], ngImport: i0, template: ` <ng-container *ngIf="!!nzOverlay; else noMenuTpl"> <span class="ant-breadcrumb-overlay-link" nz-dropdown [nzDropdownMenu]="nzOverlay"> <ng-template [ngTemplateOutlet]="noMenuTpl"></ng-template> <i *ngIf="!!nzOverlay" nz-icon nzType="down"></i> </span> </ng-container> <ng-template #noMenuTpl> <span class="ant-breadcrumb-link"> <ng-content></ng-content> </span> </ng-template> <span class="ant-breadcrumb-separator" *ngIf="nzBreadCrumbComponent.nzSeparator"> <ng-container *nzStringTemplateOutlet="nzBreadCrumbComponent.nzSeparator"> {{ nzBreadCrumbComponent.nzSeparator }} </ng-container> </span> `, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { type: i5.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbItemComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'nz-breadcrumb-item', exportAs: 'nzBreadcrumbItem', preserveWhitespaces: false, template: ` <ng-container *ngIf="!!nzOverlay; else noMenuTpl"> <span class="ant-breadcrumb-overlay-link" nz-dropdown [nzDropdownMenu]="nzOverlay"> <ng-template [ngTemplateOutlet]="noMenuTpl"></ng-template> <i *ngIf="!!nzOverlay" nz-icon nzType="down"></i> </span> </ng-container> <ng-template #noMenuTpl> <span class="ant-breadcrumb-link"> <ng-content></ng-content> </span> </ng-template> <span class="ant-breadcrumb-separator" *ngIf="nzBreadCrumbComponent.nzSeparator"> <ng-container *nzStringTemplateOutlet="nzBreadCrumbComponent.nzSeparator"> {{ nzBreadCrumbComponent.nzSeparator }} </ng-container> </span> ` }] }], ctorParameters: function () { return [{ type: NzBreadcrumb }]; }, propDecorators: { nzOverlay: [{ type: Input }] } }); class NzBreadCrumbComponent { constructor(injector, cdr, elementRef, renderer, directionality) { this.injector = injector; this.cdr = cdr; this.elementRef = elementRef; this.renderer = renderer; this.directionality = directionality; this.nzAutoGenerate = false; this.nzSeparator = '/'; this.nzRouteLabel = 'breadcrumb'; this.nzRouteLabelFn = label => label; this.breadcrumbs = []; this.dir = 'ltr'; this.destroy$ = new Subject(); renderer.addClass(elementRef.nativeElement, 'ant-breadcrumb'); } ngOnInit() { if (this.nzAutoGenerate) { this.registerRouterChange(); } this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { this.dir = direction; this.prepareComponentForRtl(); this.cdr.detectChanges(); }); this.dir = this.directionality.value; this.prepareComponentForRtl(); } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } navigate(url, e) { e.preventDefault(); this.injector.get(Router).navigateByUrl(url); } registerRouterChange() { try { const router = this.injector.get(Router); const activatedRoute = this.injector.get(ActivatedRoute); router.events .pipe(filter(e => e instanceof NavigationEnd), takeUntil(this.destroy$), startWith(true) // trigger initial render ) .subscribe(() => { this.breadcrumbs = this.getBreadcrumbs(activatedRoute.root); this.cdr.markForCheck(); }); } catch (e) { throw new Error(`${PREFIX} You should import RouterModule if you want to use 'NzAutoGenerate'.`); } } getBreadcrumbs(route, url = '', breadcrumbs = []) { const children = route.children; // If there's no sub root, then stop the recurse and returns the generated breadcrumbs. if (children.length === 0) { return breadcrumbs; } for (const child of children) { if (child.outlet === PRIMARY_OUTLET) { // Only parse components in primary router-outlet (in another word, router-outlet without a specific name). // Parse this layer and generate a breadcrumb item. const routeUrl = child.snapshot.url .map(segment => segment.path) .filter(path => path) .join('/'); // Do not change nextUrl if routeUrl is falsy. This happens when it's a route lazy loading other modules. const nextUrl = routeUrl ? `${url}/${routeUrl}` : url; const breadcrumbLabel = this.nzRouteLabelFn(child.snapshot.data[this.nzRouteLabel]); // If have data, go to generate a breadcrumb for it. if (routeUrl && breadcrumbLabel) { const breadcrumb = { label: breadcrumbLabel, params: child.snapshot.params, url: nextUrl }; breadcrumbs.push(breadcrumb); } return this.getBreadcrumbs(child, nextUrl, breadcrumbs); } } return breadcrumbs; } prepareComponentForRtl() { if (this.dir === 'rtl') { this.renderer.addClass(this.elementRef.nativeElement, 'ant-breadcrumb-rtl'); } else { this.renderer.removeClass(this.elementRef.nativeElement, 'ant-breadcrumb-rtl'); } } } NzBreadCrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); NzBreadCrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzBreadCrumbComponent, selector: "nz-breadcrumb", inputs: { nzAutoGenerate: "nzAutoGenerate", nzSeparator: "nzSeparator", nzRouteLabel: "nzRouteLabel", nzRouteLabelFn: "nzRouteLabelFn" }, providers: [{ provide: NzBreadcrumb, useExisting: NzBreadCrumbComponent }], exportAs: ["nzBreadcrumb"], ngImport: i0, template: ` <ng-content></ng-content> <ng-container *ngIf="nzAutoGenerate && breadcrumbs.length"> <nz-breadcrumb-item *ngFor="let breadcrumb of breadcrumbs"> <a [attr.href]="breadcrumb.url" (click)="navigate(breadcrumb.url, $event)">{{ breadcrumb.label }}</a> </nz-breadcrumb-item> </ng-container> `, isInline: true, components: [{ type: NzBreadCrumbItemComponent, selector: "nz-breadcrumb-item", inputs: ["nzOverlay"], exportAs: ["nzBreadcrumbItem"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); __decorate([ InputBoolean() ], NzBreadCrumbComponent.prototype, "nzAutoGenerate", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'nz-breadcrumb', exportAs: 'nzBreadcrumb', preserveWhitespaces: false, providers: [{ provide: NzBreadcrumb, useExisting: NzBreadCrumbComponent }], template: ` <ng-content></ng-content> <ng-container *ngIf="nzAutoGenerate && breadcrumbs.length"> <nz-breadcrumb-item *ngFor="let breadcrumb of breadcrumbs"> <a [attr.href]="breadcrumb.url" (click)="navigate(breadcrumb.url, $event)">{{ breadcrumb.label }}</a> </nz-breadcrumb-item> </ng-container> ` }] }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.Directionality, decorators: [{ type: Optional }] }]; }, propDecorators: { nzAutoGenerate: [{ type: Input }], nzSeparator: [{ type: Input }], nzRouteLabel: [{ type: Input }], nzRouteLabelFn: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzBreadCrumbSeparatorComponent { } NzBreadCrumbSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NzBreadCrumbSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: NzBreadCrumbSeparatorComponent, selector: "nz-breadcrumb-separator", exportAs: ["nzBreadcrumbSeparator"], ngImport: i0, template: ` <span class="ant-breadcrumb-separator"> <ng-content></ng-content> </span> `, isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbSeparatorComponent, decorators: [{ type: Component, args: [{ selector: 'nz-breadcrumb-separator', exportAs: 'nzBreadcrumbSeparator', template: ` <span class="ant-breadcrumb-separator"> <ng-content></ng-content> </span> ` }] }] }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzBreadCrumbModule { } NzBreadCrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); NzBreadCrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbModule, declarations: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent], imports: [CommonModule, NzOutletModule, OverlayModule, NzOverlayModule, NzDropDownModule, NzIconModule], exports: [BidiModule, NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent] }); NzBreadCrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbModule, imports: [[CommonModule, NzOutletModule, OverlayModule, NzOverlayModule, NzDropDownModule, NzIconModule], BidiModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: NzBreadCrumbModule, decorators: [{ type: NgModule, args: [{ imports: [CommonModule, NzOutletModule, OverlayModule, NzOverlayModule, NzDropDownModule, NzIconModule], declarations: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent], exports: [BidiModule, NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent] }] }] }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ /** * Generated bundle index. Do not edit. */ export { NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbModule, NzBreadCrumbSeparatorComponent }; //# sourceMappingURL=ng-zorro-antd-breadcrumb.mjs.map