blob: 496a11c9d3173213bffeaccfb23b40c2a9f9c17d [file] [log] [blame]
{"version":3,"file":"covalent-core-breadcrumbs.js.map","sources":["ng://@covalent/core/breadcrumbs/breadcrumb/breadcrumb.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.module.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\n\n@Component({\n selector: 'td-breadcrumb, a[td-breadcrumb]',\n styleUrls: ['./breadcrumb.component.scss'],\n templateUrl: './breadcrumb.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'mat-button td-breadcrumb',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n\n private _displayCrumb: boolean = true;\n private _width: number = 0;\n // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n separatorIcon: string = 'chevron_right';\n // Should show the right chevron or not before the label\n _displayIcon: boolean = true;\n\n get displayCrumb(): boolean {\n return this._displayCrumb;\n }\n\n /**\n * Whether to display the crumb or not\n */\n set displayCrumb(shouldDisplay: boolean) {\n this._displayCrumb = shouldDisplay;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Width of the DOM element of the crumb\n */\n get width(): number {\n return this._width;\n }\n\n /**\n * Gets the display style of the crumb\n */\n @HostBinding('style.display')\n get displayBinding(): string {\n // Set the display to none on the component, just in case the end user is hiding\n // and showing them instead of the component doing itself for reasons like responsive\n return this._displayCrumb ? undefined : 'none';\n }\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngAfterViewInit(): void {\n // set the width from the actual rendered DOM element\n setTimeout(() => {\n this._width = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().width;\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Stop click propagation when clicking on icon\n */\n _handleIconClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n}\n","import {\n Component,\n ContentChildren,\n QueryList,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n AfterContentInit,\n DoCheck,\n ChangeDetectorRef,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport {\n Subscription,\n Subject,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n} from 'rxjs/operators';\n\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@Component({\n selector: 'td-breadcrumbs',\n styleUrls: ['./breadcrumbs.component.scss'],\n templateUrl: './breadcrumbs.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'td-breadcrumbs',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbsComponent implements OnInit, DoCheck, AfterContentInit, OnDestroy {\n\n private _resizeSubscription: Subscription = Subscription.EMPTY;\n private _widthSubject: Subject<number> = new Subject<number>();\n private _resizing: boolean = false;\n\n // all the sub components, which are the individual breadcrumbs\n @ContentChildren(TdBreadcrumbComponent) _breadcrumbs: QueryList<TdBreadcrumbComponent>;\n // the list of hidden breadcrumbs not shown right now (responsive)\n hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n\n /**\n * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n */\n @Input('separatorIcon') separatorIcon: string = 'chevron_right';\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this._resizeSubscription = merge(\n fromEvent(window, 'resize').pipe(\n debounceTime(10),\n ),\n this._widthSubject.asObservable().pipe(\n distinctUntilChanged(),\n ),\n ).subscribe(() => {\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._calculateVisibility();\n this._resizing = false;\n this._changeDetectorRef.markForCheck();\n }, 100);\n }\n });\n }\n\n ngDoCheck(): void {\n if (this._elementRef && this._elementRef.nativeElement) {\n this._widthSubject.next(this.nativeElementWidth);\n }\n }\n\n ngAfterContentInit(): void {\n this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy(): void {\n this._resizeSubscription.unsubscribe();\n }\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n let element: HTMLElement = (<HTMLElement>this._elementRef.nativeElement);\n // Need to take into account border, margin and padding that might be around all the crumbs\n let style: CSSStyleDeclaration = window.getComputedStyle(element);\n let borderLeft: number = parseInt(style.borderLeft, 10);\n let borderRight: number = parseInt(style.borderRight, 10);\n let marginLeft: number = parseInt(style.marginLeft, 10);\n let marginRight: number = parseInt(style.marginRight, 10);\n let paddingLeft: number = parseInt(style.paddingLeft, 10);\n let paddingRight: number = parseInt(style.paddingRight, 10);\n\n return element.getBoundingClientRect().width - borderLeft - borderRight - marginLeft - marginRight - paddingLeft - paddingRight;\n }\n\n /**\n * The total count of individual breadcrumbs\n */\n get count(): number {\n return this._breadcrumbs ? this._breadcrumbs.length : 0;\n }\n\n /**\n * Set the crumb icon separators\n */\n private setCrumbIcons(): void {\n let breadcrumbArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n if (breadcrumbArray.length > 0) {\n // don't show the icon on the last breadcrumb\n breadcrumbArray[breadcrumbArray.length - 1]._displayIcon = false;\n }\n breadcrumbArray.forEach((breadcrumb: TdBreadcrumbComponent) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n });\n }\n\n private _calculateVisibility(): void {\n let crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n let crumbWidthSum: number = 0;\n let hiddenCrumbs: TdBreadcrumbComponent[] = [];\n // loop through crumbs in reverse order to calculate which ones should be removed\n for (let i: number = crumbsArray.length - 1; i >= 0; i--) {\n let breadcrumb: TdBreadcrumbComponent = crumbsArray[i];\n // if crumb exceeds width, then we skip it from the sum and add it into the hiddencrumbs array\n // and hide it\n if ((crumbWidthSum + breadcrumb.width) > this.nativeElementWidth) {\n breadcrumb.displayCrumb = false;\n hiddenCrumbs.push(breadcrumb);\n } else {\n // else we show it\n breadcrumb.displayCrumb = true;\n }\n crumbWidthSum += breadcrumb.width;\n }\n this.hiddenBreadcrumbs = hiddenCrumbs;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdBreadcrumbsComponent } from './breadcrumbs.component';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n ],\n declarations: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n exports: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n})\nexport class CovalentBreadcrumbsModule {\n\n}\n"],"names":[],"mappings":"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"}