blob: 560c93a291a2aa2dc1c7eb0d0ad8437364e24f67 [file] [log] [blame]
{"version":3,"file":"covalent-core-breadcrumbs.umd.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":["Component","ChangeDetectionStrategy","ElementRef","ChangeDetectorRef","HostBinding","Subscription","Subject","merge","fromEvent","debounceTime","distinctUntilChanged","ContentChildren","Input","NgModule","CommonModule","MatIconModule"],"mappings":"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"}