@covalent/core
Version:
Core Teradata UI Platform for layouts, icons, custom components and themes. This should be added as a dependency for any project that wants to use layouts, icons and themes for Angular Material.
1 lines • 32.4 kB
Source Map (JSON)
{"version":3,"file":"covalent-core-breadcrumbs.mjs","sources":["../../../../libs/angular/breadcrumbs/src/breadcrumb/breadcrumb.component.html","../../../../libs/angular/breadcrumbs/src/breadcrumb/breadcrumb.component.ts","../../../../libs/angular/breadcrumbs/src/breadcrumbs.component.html","../../../../libs/angular/breadcrumbs/src/breadcrumbs.component.ts","../../../../libs/angular/breadcrumbs/src/breadcrumbs.module.ts","../../../../libs/angular/breadcrumbs/src/covalent-core-breadcrumbs.ts"],"sourcesContent":["<span\n class=\"td-breadcrumb-text\"\n [class.td-breadcrumb-truncated]=\"shouldTruncate\"\n [matTooltip]=\"shouldTruncate ? fullText : ''\"\n [matTooltipDisabled]=\"!shouldTruncate\"\n [attr.aria-label]=\"shouldTruncate ? fullText : ''\"\n>\n <ng-content></ng-content>\n</span>\n<mat-icon\n *ngIf=\"displayIcon\"\n class=\"td-breadcrumb-separator-icon\"\n [style.cursor]=\"'default'\"\n (click)=\"_handleIconClick($event)\"\n >{{ separatorIcon }}</mat-icon\n>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'td-breadcrumb, a[td-breadcrumb]',\n styleUrls: ['./breadcrumb.component.scss'],\n templateUrl: './breadcrumb.component.html',\n standalone: true,\n imports: [CommonModule, MatIcon, MatTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _displayCrumb = true;\n private _width = 0;\n private _displayIcon = true;\n private _separatorIcon = 'chevron_right';\n private _shouldTruncate = false;\n private _maxWidth?: number;\n\n public elementRef = inject(ElementRef);\n public fullText = '';\n public flexOrder = 0;\n public isCurrentPage = false;\n\n @HostBinding('attr.aria-current')\n get ariaCurrent(): string | null {\n return this.isCurrentPage ? 'page' : null;\n }\n\n @HostBinding('class.mdc-button') matButtonClass = true;\n @HostBinding('class.td-breadcrumb') tdBreadCrumbClass = true;\n\n // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n public get separatorIcon(): string {\n return this._separatorIcon;\n }\n public set separatorIcon(separatorIcon: string) {\n this._separatorIcon = separatorIcon;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n // Should show the right chevron or not before the label\n public get displayIcon(): boolean {\n return this._displayIcon;\n }\n public set displayIcon(displayIcon: boolean) {\n this._displayIcon = displayIcon;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n get shouldTruncate(): boolean {\n return this._shouldTruncate;\n }\n\n set shouldTruncate(shouldTruncate: boolean) {\n this._shouldTruncate = shouldTruncate;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n get maxWidth(): number | undefined {\n return this._maxWidth;\n }\n\n set maxWidth(maxWidth: number | undefined) {\n this._maxWidth = maxWidth;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\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 setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\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 | undefined {\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 @HostBinding('style.max-width.px')\n get maxWidthBinding(): number | undefined {\n return this._shouldTruncate ? this._maxWidth : undefined;\n }\n\n @HostBinding('style.order')\n get orderBinding(): number {\n return this.flexOrder;\n }\n\n ngAfterViewInit(): void {\n // set the width from the actual rendered DOM element\n setTimeout(() => {\n this._width = (<HTMLElement>(\n this.elementRef.nativeElement\n )).getBoundingClientRect().width;\n const textSpan = this.elementRef.nativeElement.querySelector(\n '.td-breadcrumb-text',\n );\n if (textSpan) {\n this.fullText = textSpan.textContent?.trim() || '';\n }\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","<ng-content></ng-content>\n\n<button\n *ngIf=\"showOverflowButton\"\n mat-icon-button\n [matMenuTriggerFor]=\"overflowMenu\"\n [attr.aria-label]=\"overflowButtonAriaLabel\"\n [style.order]=\"overflowButtonOrder\"\n class=\"td-breadcrumbs-overflow-button\"\n [attr.data-test-id]=\"'breadcrumb-overflow-button'\"\n>\n <mat-icon>more_horiz</mat-icon>\n</button>\n<mat-icon\n *ngIf=\"showOverflowButton\"\n class=\"td-breadcrumb-separator-icon\"\n [style.order]=\"overflowButtonOrder\"\n color=\"primary\"\n aria-hidden=\"true\"\n>\n {{ separatorIcon }}\n</mat-icon>\n\n<mat-menu #overflowMenu=\"matMenu\" class=\"td-breadcrumb-overflow-menu\">\n <button\n *ngFor=\"let item of overflowMenuItems\"\n mat-menu-item\n (click)=\"handleOverflowItemClick(item)\"\n [attr.data-test-id]=\"'breadcrumb-overflow-menu-item-' + getItemText(item)\"\n [attr.aria-label]=\"'Navigate to ' + getItemText(item)\"\n >\n {{ getItemText(item) }}\n </button>\n</mat-menu>\n","import {\n Component,\n ContentChildren,\n QueryList,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n AfterContentInit,\n ChangeDetectorRef,\n ElementRef,\n Input,\n HostBinding,\n AfterViewInit,\n ViewChild,\n inject,\n} from '@angular/core';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, MatMenuModule, MatButtonModule, MatIconModule],\n})\nexport class TdBreadcrumbsComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n private _elementRef = inject(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _resizing = false;\n private _separatorIcon = 'chevron_right';\n private _destroy$ = new Subject<void>();\n\n /**\n * Maximum width ratio for the last breadcrumb when truncation is needed.\n * Set to 35% of available width to ensure last breadcrumb doesn't dominate the space\n * while still being readable.\n */\n private readonly LAST_BREADCRUMB_MAX_WIDTH_RATIO = 0.35;\n\n @HostBinding('class.td-breadcrumbs') tdBreadCrumbsClass = true;\n @HostBinding('attr.role') role = 'navigation';\n @HostBinding('attr.aria-label') ariaLabel = 'Breadcrumb';\n\n // all the sub components, which are the individual breadcrumbs\n @ContentChildren(TdBreadcrumbComponent, { descendants: true })\n _breadcrumbs!: QueryList<TdBreadcrumbComponent>;\n // the list of hidden breadcrumbs not shown right now (responsive)\n hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n overflowMenuItems: TdBreadcrumbComponent[] = [];\n showOverflowButton = false;\n overflowButtonOrder = 50;\n\n @ViewChild(MatMenuTrigger) overflowMenuTrigger?: MatMenuTrigger;\n\n /**\n * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n */\n @Input() public set separatorIcon(separatorIcon: string) {\n this._separatorIcon = separatorIcon;\n this.setCrumbIcons();\n }\n public get separatorIcon(): string {\n return this._separatorIcon;\n }\n\n @Input() size?:\n | 'headline1'\n | 'headline2'\n | 'headline3'\n | 'headline4'\n | 'headline5'\n | 'headline6'\n | 'subtitle1'\n | 'subtitle2'\n | 'body1'\n | 'body2'\n | 'button'\n | 'caption';\n\n @HostBinding('style.font-family')\n get fontFamily(): string | undefined {\n return this.size\n ? `var(--cv-typography-${this.size}-font-family)`\n : undefined;\n }\n\n @HostBinding('style.font-size')\n get fontSize(): string | undefined {\n return this.size\n ? `var(--cv-typography-${this.size}-font-size)`\n : undefined;\n }\n\n @HostBinding('style.font-weight')\n get fontWeight(): string | undefined {\n return this.size\n ? `var(--cv-typography-${this.size}-font-weight)`\n : undefined;\n }\n\n @HostBinding('style.line-height')\n get lineHeight(): string | undefined {\n return this.size\n ? `var(--cv-typography-${this.size}-line-height)`\n : undefined;\n }\n\n ngOnInit(): void {\n fromEvent(window, 'resize')\n .pipe(debounceTime(10), takeUntil(this._destroy$))\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 ngAfterViewInit(): void {\n this._waitToCalculateVisibility();\n }\n\n ngAfterContentInit(): void {\n this._breadcrumbs.changes\n .pipe(startWith(this._breadcrumbs), takeUntil(this._destroy$))\n .subscribe(() => {\n this._waitToCalculateVisibility();\n setTimeout(() => {\n this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n });\n });\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n const element: HTMLElement = <HTMLElement>this._elementRef.nativeElement;\n // Need to take into account border, margin and padding that might be around all the crumbs\n const style: CSSStyleDeclaration = window.getComputedStyle(element);\n const borderLeft: number = parseInt(style.borderLeft, 10);\n const borderRight: number = parseInt(style.borderRight, 10);\n const marginLeft: number = parseInt(style.marginLeft, 10);\n const marginRight: number = parseInt(style.marginRight, 10);\n const paddingLeft: number = parseInt(style.paddingLeft, 10);\n const paddingRight: number = parseInt(style.paddingRight, 10);\n\n return (\n element.getBoundingClientRect().width -\n borderLeft -\n borderRight -\n marginLeft -\n marginRight -\n paddingLeft -\n paddingRight\n );\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 get overflowButtonAriaLabel(): string {\n const count = this.hiddenBreadcrumbs.length;\n return `Show ${count} hidden breadcrumb${count > 1 ? 's' : ''}`;\n }\n\n handleOverflowItemClick(item: TdBreadcrumbComponent): void {\n const nativeElement = item.elementRef?.nativeElement;\n if (nativeElement) {\n nativeElement.click();\n }\n }\n\n getItemText(item: TdBreadcrumbComponent): string {\n return item.fullText || '';\n }\n\n /**\n * Set the crumb icon separators\n */\n private setCrumbIcons(): void {\n if (this._breadcrumbs) {\n const breadcrumbArray: TdBreadcrumbComponent[] =\n this._breadcrumbs.toArray();\n\n setTimeout(() => {\n breadcrumbArray.forEach(\n (breadcrumb: TdBreadcrumbComponent, index: number) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n breadcrumb.displayIcon = true;\n breadcrumb.isCurrentPage = index === breadcrumbArray.length - 1;\n },\n );\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _calculateVisibility(): void {\n const crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n const totalBreadcrumbs = crumbsArray.length;\n\n // Reset all orders when there are 2 or fewer breadcrumbs\n if (totalBreadcrumbs <= 2) {\n crumbsArray.forEach((breadcrumb: TdBreadcrumbComponent) => {\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0; // Default order\n });\n this.showOverflowButton = false;\n this.overflowMenuItems = [];\n this.hiddenBreadcrumbs = [];\n this._changeDetectorRef.markForCheck();\n return;\n }\n\n const firstCrumb = crumbsArray[0];\n const lastCrumb = crumbsArray[totalBreadcrumbs - 1];\n const containerWidth = this.nativeElementWidth;\n const totalRequiredWidth = crumbsArray.reduce(\n (sum, crumb) => sum + crumb.width,\n 0,\n );\n\n if (totalRequiredWidth <= containerWidth) {\n crumbsArray.forEach(\n (breadcrumb: TdBreadcrumbComponent, index: number) => {\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder =\n index === 0\n ? 0\n : index === totalBreadcrumbs - 1\n ? 1000\n : index * 10; // Assign orders based on index for middle crumbs\n },\n );\n\n this.showOverflowButton = false;\n this.overflowMenuItems = [];\n this.hiddenBreadcrumbs = [];\n this._changeDetectorRef.markForCheck();\n return;\n }\n\n const overflowButtonWidth = 48;\n const availableWidth = containerWidth - overflowButtonWidth;\n const visibleMiddleCrumbs: number[] = [];\n let requiredWidth = firstCrumb.width + lastCrumb.width;\n\n // Try to fit breadcrumbs from right to left (favoring more recent items)\n for (let i = totalBreadcrumbs - 2; i >= 1; i--) {\n const breadcrumb = crumbsArray[i];\n if (requiredWidth + breadcrumb.width <= availableWidth) {\n requiredWidth += breadcrumb.width;\n visibleMiddleCrumbs.unshift(i);\n }\n }\n\n // Apply visibility and flexbox orders\n const hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n let currentOrder = 10; // Start orders at 10 for middle breadcrumbs\n\n crumbsArray.forEach((breadcrumb: TdBreadcrumbComponent, index: number) => {\n if (index === 0) {\n // First breadcrumb - always visible, always first\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0;\n } else if (index === totalBreadcrumbs - 1) {\n // Last breadcrumb - always visible, always last\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.flexOrder = 1000;\n } else if (visibleMiddleCrumbs.includes(index)) {\n // Visible middle breadcrumbs - assign incremental orders\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = currentOrder;\n currentOrder += 10;\n } else {\n // Hidden breadcrumbs\n breadcrumb.displayCrumb = false;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0; // Doesn't matter, it's hidden\n hiddenBreadcrumbs.push(breadcrumb);\n }\n });\n\n // Overflow button order comes after visible middle breadcrumbs\n this.overflowButtonOrder = currentOrder;\n\n // Truncate last breadcrumb if too long\n const lastBreadcrumbMaxWidth =\n availableWidth * this.LAST_BREADCRUMB_MAX_WIDTH_RATIO;\n if (lastCrumb.width > lastBreadcrumbMaxWidth) {\n lastCrumb.shouldTruncate = true;\n lastCrumb.maxWidth = lastBreadcrumbMaxWidth;\n } else {\n // Ensure maxWidth is reset if last breadcrumb doesn't need truncation\n lastCrumb.maxWidth = undefined;\n }\n\n this.showOverflowButton = hiddenBreadcrumbs.length > 0;\n this.overflowMenuItems = hiddenBreadcrumbs;\n this.hiddenBreadcrumbs = hiddenBreadcrumbs;\n this._changeDetectorRef.markForCheck();\n }\n\n private _waitToCalculateVisibility(): void {\n setTimeout(() => {\n this._calculateVisibility();\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TdBreadcrumbsComponent } from './breadcrumbs.component';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\n@NgModule({\n imports: [TdBreadcrumbsComponent, TdBreadcrumbComponent],\n exports: [TdBreadcrumbsComponent, TdBreadcrumbComponent],\n})\nexport class CovalentBreadcrumbsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2"],"mappings":"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"}