@covalent/core 10.4.3 → 10.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,28 @@
1
- import { ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
1
+ import { ElementRef, AfterViewInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TdBreadcrumbComponent implements AfterViewInit {
4
- private _elementRef;
5
4
  private _changeDetectorRef;
6
5
  private _displayCrumb;
7
6
  private _width;
8
7
  private _displayIcon;
9
8
  private _separatorIcon;
9
+ private _shouldTruncate;
10
+ private _maxWidth?;
11
+ elementRef: ElementRef<any>;
12
+ fullText: string;
13
+ flexOrder: number;
14
+ isCurrentPage: boolean;
15
+ get ariaCurrent(): string | null;
10
16
  matButtonClass: boolean;
11
17
  tdBreadCrumbClass: boolean;
12
18
  get separatorIcon(): string;
13
19
  set separatorIcon(separatorIcon: string);
14
20
  get displayIcon(): boolean;
15
21
  set displayIcon(displayIcon: boolean);
22
+ get shouldTruncate(): boolean;
23
+ set shouldTruncate(shouldTruncate: boolean);
24
+ get maxWidth(): number | undefined;
25
+ set maxWidth(maxWidth: number | undefined);
16
26
  get displayCrumb(): boolean;
17
27
  /**
18
28
  * Whether to display the crumb or not
@@ -26,7 +36,8 @@ export declare class TdBreadcrumbComponent implements AfterViewInit {
26
36
  * Gets the display style of the crumb
27
37
  */
28
38
  get displayBinding(): string | undefined;
29
- constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef);
39
+ get maxWidthBinding(): number | undefined;
40
+ get orderBinding(): number;
30
41
  ngAfterViewInit(): void;
31
42
  /**
32
43
  * Stop click propagation when clicking on icon
@@ -1,4 +1,5 @@
1
- import { QueryList, OnInit, OnDestroy, AfterContentInit, ChangeDetectorRef, ElementRef, AfterViewInit } from '@angular/core';
1
+ import { QueryList, OnInit, OnDestroy, AfterContentInit, AfterViewInit } from '@angular/core';
2
+ import { MatMenuTrigger } from '@angular/material/menu';
2
3
  import { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class TdBreadcrumbsComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {
@@ -7,15 +8,31 @@ export declare class TdBreadcrumbsComponent implements OnInit, AfterContentInit,
7
8
  private _resizing;
8
9
  private _separatorIcon;
9
10
  private _destroy$;
11
+ /**
12
+ * Maximum width ratio for the last breadcrumb when truncation is needed.
13
+ * Set to 35% of available width to ensure last breadcrumb doesn't dominate the space
14
+ * while still being readable.
15
+ */
16
+ private readonly LAST_BREADCRUMB_MAX_WIDTH_RATIO;
10
17
  tdBreadCrumbsClass: boolean;
18
+ role: string;
19
+ ariaLabel: string;
11
20
  _breadcrumbs: QueryList<TdBreadcrumbComponent>;
12
21
  hiddenBreadcrumbs: TdBreadcrumbComponent[];
22
+ overflowMenuItems: TdBreadcrumbComponent[];
23
+ showOverflowButton: boolean;
24
+ overflowButtonOrder: number;
25
+ overflowMenuTrigger?: MatMenuTrigger;
13
26
  /**
14
27
  * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.
15
28
  */
16
29
  set separatorIcon(separatorIcon: string);
17
30
  get separatorIcon(): string;
18
- constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef);
31
+ size?: 'headline1' | 'headline2' | 'headline3' | 'headline4' | 'headline5' | 'headline6' | 'subtitle1' | 'subtitle2' | 'body1' | 'body2' | 'button' | 'caption';
32
+ get fontFamily(): string | undefined;
33
+ get fontSize(): string | undefined;
34
+ get fontWeight(): string | undefined;
35
+ get lineHeight(): string | undefined;
19
36
  ngOnInit(): void;
20
37
  ngAfterViewInit(): void;
21
38
  ngAfterContentInit(): void;
@@ -25,6 +42,9 @@ export declare class TdBreadcrumbsComponent implements OnInit, AfterContentInit,
25
42
  * The total count of individual breadcrumbs
26
43
  */
27
44
  get count(): number;
45
+ get overflowButtonAriaLabel(): string;
46
+ handleOverflowItemClick(item: TdBreadcrumbComponent): void;
47
+ getItemText(item: TdBreadcrumbComponent): string;
28
48
  /**
29
49
  * Set the crumb icon separators
30
50
  */
@@ -32,5 +52,5 @@ export declare class TdBreadcrumbsComponent implements OnInit, AfterContentInit,
32
52
  private _calculateVisibility;
33
53
  private _waitToCalculateVisibility;
34
54
  static ɵfac: i0.ɵɵFactoryDeclaration<TdBreadcrumbsComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<TdBreadcrumbsComponent, "td-breadcrumbs", never, { "separatorIcon": { "alias": "separatorIcon"; "required": false; }; }, {}, ["_breadcrumbs"], ["*"], true, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<TdBreadcrumbsComponent, "td-breadcrumbs", never, { "separatorIcon": { "alias": "separatorIcon"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, ["_breadcrumbs"], ["*"], true, never>;
36
56
  }
@@ -1,16 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectionStrategy, Component, HostBinding, Input, ContentChildren, NgModule } from '@angular/core';
2
+ import { inject, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';
3
3
  import { Subject, fromEvent } from 'rxjs';
4
4
  import { debounceTime, takeUntil, startWith } from 'rxjs/operators';
5
+ import * as i2$1 from '@angular/material/menu';
6
+ import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
7
+ import * as i3 from '@angular/material/button';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import * as i4 from '@angular/material/icon';
10
+ import { MatIcon, MatIconModule } from '@angular/material/icon';
5
11
  import * as i1 from '@angular/common';
6
12
  import { CommonModule } from '@angular/common';
7
- import { MatIcon } from '@angular/material/icon';
13
+ import * as i2 from '@angular/material/tooltip';
14
+ import { MatTooltipModule } from '@angular/material/tooltip';
8
15
 
9
16
  const _c0$1 = ["*"];
10
- function TdBreadcrumbComponent_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
17
+ function TdBreadcrumbComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
11
18
  const _r1 = i0.ɵɵgetCurrentView();
12
- i0.ɵɵelementStart(0, "mat-icon", 1);
13
- i0.ɵɵlistener("click", function TdBreadcrumbComponent_mat_icon_1_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1._handleIconClick($event)); });
19
+ i0.ɵɵelementStart(0, "mat-icon", 2);
20
+ i0.ɵɵlistener("click", function TdBreadcrumbComponent_mat_icon_2_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1._handleIconClick($event)); });
14
21
  i0.ɵɵtext(1);
15
22
  i0.ɵɵelementEnd();
16
23
  } if (rf & 2) {
@@ -20,12 +27,20 @@ function TdBreadcrumbComponent_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
20
27
  i0.ɵɵtextInterpolate(ctx_r1.separatorIcon);
21
28
  } }
22
29
  class TdBreadcrumbComponent {
23
- _elementRef;
24
- _changeDetectorRef;
30
+ _changeDetectorRef = inject(ChangeDetectorRef);
25
31
  _displayCrumb = true;
26
32
  _width = 0;
27
33
  _displayIcon = true;
28
34
  _separatorIcon = 'chevron_right';
35
+ _shouldTruncate = false;
36
+ _maxWidth;
37
+ elementRef = inject(ElementRef);
38
+ fullText = '';
39
+ flexOrder = 0;
40
+ isCurrentPage = false;
41
+ get ariaCurrent() {
42
+ return this.isCurrentPage ? 'page' : null;
43
+ }
29
44
  matButtonClass = true;
30
45
  tdBreadCrumbClass = true;
31
46
  // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'
@@ -48,6 +63,24 @@ class TdBreadcrumbComponent {
48
63
  this._changeDetectorRef.markForCheck();
49
64
  });
50
65
  }
66
+ get shouldTruncate() {
67
+ return this._shouldTruncate;
68
+ }
69
+ set shouldTruncate(shouldTruncate) {
70
+ this._shouldTruncate = shouldTruncate;
71
+ setTimeout(() => {
72
+ this._changeDetectorRef.markForCheck();
73
+ });
74
+ }
75
+ get maxWidth() {
76
+ return this._maxWidth;
77
+ }
78
+ set maxWidth(maxWidth) {
79
+ this._maxWidth = maxWidth;
80
+ setTimeout(() => {
81
+ this._changeDetectorRef.markForCheck();
82
+ });
83
+ }
51
84
  get displayCrumb() {
52
85
  return this._displayCrumb;
53
86
  }
@@ -74,14 +107,20 @@ class TdBreadcrumbComponent {
74
107
  // and showing them instead of the component doing itself for reasons like responsive
75
108
  return this._displayCrumb ? undefined : 'none';
76
109
  }
77
- constructor(_elementRef, _changeDetectorRef) {
78
- this._elementRef = _elementRef;
79
- this._changeDetectorRef = _changeDetectorRef;
110
+ get maxWidthBinding() {
111
+ return this._shouldTruncate ? this._maxWidth : undefined;
112
+ }
113
+ get orderBinding() {
114
+ return this.flexOrder;
80
115
  }
81
116
  ngAfterViewInit() {
82
117
  // set the width from the actual rendered DOM element
83
118
  setTimeout(() => {
84
- this._width = (this._elementRef.nativeElement).getBoundingClientRect().width;
119
+ this._width = (this.elementRef.nativeElement).getBoundingClientRect().width;
120
+ const textSpan = this.elementRef.nativeElement.querySelector('.td-breadcrumb-text');
121
+ if (textSpan) {
122
+ this.fullText = textSpan.textContent?.trim() || '';
123
+ }
85
124
  this._changeDetectorRef.markForCheck();
86
125
  });
87
126
  }
@@ -92,23 +131,32 @@ class TdBreadcrumbComponent {
92
131
  event.stopPropagation();
93
132
  event.preventDefault();
94
133
  }
95
- static ɵfac = function TdBreadcrumbComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
96
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdBreadcrumbComponent, selectors: [["td-breadcrumb"], ["a", "td-breadcrumb", ""]], hostVars: 6, hostBindings: function TdBreadcrumbComponent_HostBindings(rf, ctx) { if (rf & 2) {
97
- i0.ɵɵstyleProp("display", ctx.displayBinding);
134
+ static ɵfac = function TdBreadcrumbComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbComponent)(); };
135
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdBreadcrumbComponent, selectors: [["td-breadcrumb"], ["a", "td-breadcrumb", ""]], hostVars: 11, hostBindings: function TdBreadcrumbComponent_HostBindings(rf, ctx) { if (rf & 2) {
136
+ i0.ɵɵattribute("aria-current", ctx.ariaCurrent);
137
+ i0.ɵɵstyleProp("display", ctx.displayBinding)("max-width", ctx.maxWidthBinding, "px")("order", ctx.orderBinding);
98
138
  i0.ɵɵclassProp("mdc-button", ctx.matButtonClass)("td-breadcrumb", ctx.tdBreadCrumbClass);
99
- } }, ngContentSelectors: _c0$1, decls: 2, vars: 1, consts: [["class", "td-breadcrumb-separator-icon", 3, "cursor", "click", 4, "ngIf"], [1, "td-breadcrumb-separator-icon", 3, "click"]], template: function TdBreadcrumbComponent_Template(rf, ctx) { if (rf & 1) {
139
+ } }, ngContentSelectors: _c0$1, decls: 3, vars: 6, consts: [[1, "td-breadcrumb-text", 3, "matTooltip", "matTooltipDisabled"], ["class", "td-breadcrumb-separator-icon", 3, "cursor", "click", 4, "ngIf"], [1, "td-breadcrumb-separator-icon", 3, "click"]], template: function TdBreadcrumbComponent_Template(rf, ctx) { if (rf & 1) {
100
140
  i0.ɵɵprojectionDef();
101
- i0.ɵɵprojection(0);
102
- i0.ɵɵtemplate(1, TdBreadcrumbComponent_mat_icon_1_Template, 2, 3, "mat-icon", 0);
141
+ i0.ɵɵelementStart(0, "span", 0);
142
+ i0.ɵɵprojection(1);
143
+ i0.ɵɵelementEnd();
144
+ i0.ɵɵtemplate(2, TdBreadcrumbComponent_mat_icon_2_Template, 2, 3, "mat-icon", 1);
103
145
  } if (rf & 2) {
104
- i0.ɵɵadvance();
146
+ i0.ɵɵclassProp("td-breadcrumb-truncated", ctx.shouldTruncate);
147
+ i0.ɵɵproperty("matTooltip", ctx.shouldTruncate ? ctx.fullText : "")("matTooltipDisabled", !ctx.shouldTruncate);
148
+ i0.ɵɵattribute("aria-label", ctx.shouldTruncate ? ctx.fullText : "");
149
+ i0.ɵɵadvance(2);
105
150
  i0.ɵɵproperty("ngIf", ctx.displayIcon);
106
- } }, dependencies: [CommonModule, i1.NgIf, MatIcon], styles: [".td-breadcrumb[_nghost-%COMP%]{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end}.td-breadcrumb[_nghost-%COMP%] >*{margin:0 10px}[_nghost-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.mdc-button[_nghost-%COMP%]{min-width:0;padding:0}"], changeDetection: 0 });
151
+ } }, dependencies: [CommonModule, i1.NgIf, MatIcon, MatTooltipModule, i2.MatTooltip], styles: [".td-breadcrumb[_nghost-%COMP%]{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end;max-width:100%}.td-breadcrumb[_nghost-%COMP%] >*{margin:0 10px}[_nghost-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.mdc-button[_nghost-%COMP%]{min-width:0;padding:0}.td-breadcrumb-text[_ngcontent-%COMP%]{margin:0;padding:0;flex:1 1 auto;min-width:0}.td-breadcrumb-text.td-breadcrumb-truncated[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}mat-icon.td-breadcrumb-separator-icon[_ngcontent-%COMP%]{flex-shrink:0}"], changeDetection: 0 });
107
152
  }
108
153
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdBreadcrumbComponent, [{
109
154
  type: Component,
110
- args: [{ selector: 'td-breadcrumb, a[td-breadcrumb]', imports: [CommonModule, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\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", styles: [":host.td-breadcrumb{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end}:host.td-breadcrumb ::ng-deep>*{margin:0 10px}:host mat-icon{font-size:16px;width:16px;height:16px}:host.mdc-button{min-width:0;padding:0}\n"] }]
111
- }], () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], { matButtonClass: [{
155
+ args: [{ selector: 'td-breadcrumb, a[td-breadcrumb]', standalone: true, imports: [CommonModule, MatIcon, MatTooltipModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [":host.td-breadcrumb{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end;max-width:100%}:host.td-breadcrumb ::ng-deep>*{margin:0 10px}:host mat-icon{font-size:16px;width:16px;height:16px}:host.mdc-button{min-width:0;padding:0}.td-breadcrumb-text{margin:0;padding:0;flex:1 1 auto;min-width:0}.td-breadcrumb-text.td-breadcrumb-truncated{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}mat-icon.td-breadcrumb-separator-icon{flex-shrink:0}\n"] }]
156
+ }], null, { ariaCurrent: [{
157
+ type: HostBinding,
158
+ args: ['attr.aria-current']
159
+ }], matButtonClass: [{
112
160
  type: HostBinding,
113
161
  args: ['class.mdc-button']
114
162
  }], tdBreadCrumbClass: [{
@@ -117,21 +165,73 @@ class TdBreadcrumbComponent {
117
165
  }], displayBinding: [{
118
166
  type: HostBinding,
119
167
  args: ['style.display']
168
+ }], maxWidthBinding: [{
169
+ type: HostBinding,
170
+ args: ['style.max-width.px']
171
+ }], orderBinding: [{
172
+ type: HostBinding,
173
+ args: ['style.order']
120
174
  }] }); })();
121
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbComponent, { className: "TdBreadcrumbComponent", filePath: "breadcrumb/breadcrumb.component.ts", lineNumber: 19 }); })();
175
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbComponent, { className: "TdBreadcrumbComponent", filePath: "breadcrumb/breadcrumb.component.ts", lineNumber: 22 }); })();
122
176
 
123
177
  const _c0 = ["*"];
178
+ function TdBreadcrumbsComponent_button_1_Template(rf, ctx) { if (rf & 1) {
179
+ i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
180
+ i0.ɵɵtext(2, "more_horiz");
181
+ i0.ɵɵelementEnd()();
182
+ } if (rf & 2) {
183
+ const ctx_r0 = i0.ɵɵnextContext();
184
+ const overflowMenu_r2 = i0.ɵɵreference(4);
185
+ i0.ɵɵstyleProp("order", ctx_r0.overflowButtonOrder);
186
+ i0.ɵɵproperty("matMenuTriggerFor", overflowMenu_r2);
187
+ i0.ɵɵattribute("aria-label", ctx_r0.overflowButtonAriaLabel)("data-test-id", "breadcrumb-overflow-button");
188
+ } }
189
+ function TdBreadcrumbsComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵelementStart(0, "mat-icon", 6);
191
+ i0.ɵɵtext(1);
192
+ i0.ɵɵelementEnd();
193
+ } if (rf & 2) {
194
+ const ctx_r0 = i0.ɵɵnextContext();
195
+ i0.ɵɵstyleProp("order", ctx_r0.overflowButtonOrder);
196
+ i0.ɵɵadvance();
197
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.separatorIcon, "\n");
198
+ } }
199
+ function TdBreadcrumbsComponent_button_5_Template(rf, ctx) { if (rf & 1) {
200
+ const _r3 = i0.ɵɵgetCurrentView();
201
+ i0.ɵɵelementStart(0, "button", 7);
202
+ i0.ɵɵlistener("click", function TdBreadcrumbsComponent_button_5_Template_button_click_0_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleOverflowItemClick(item_r4)); });
203
+ i0.ɵɵtext(1);
204
+ i0.ɵɵelementEnd();
205
+ } if (rf & 2) {
206
+ const item_r4 = ctx.$implicit;
207
+ const ctx_r0 = i0.ɵɵnextContext();
208
+ i0.ɵɵattribute("data-test-id", "breadcrumb-overflow-menu-item-" + ctx_r0.getItemText(item_r4))("aria-label", "Navigate to " + ctx_r0.getItemText(item_r4));
209
+ i0.ɵɵadvance();
210
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.getItemText(item_r4), " ");
211
+ } }
124
212
  class TdBreadcrumbsComponent {
125
- _elementRef;
126
- _changeDetectorRef;
213
+ _elementRef = inject(ElementRef);
214
+ _changeDetectorRef = inject(ChangeDetectorRef);
127
215
  _resizing = false;
128
216
  _separatorIcon = 'chevron_right';
129
217
  _destroy$ = new Subject();
218
+ /**
219
+ * Maximum width ratio for the last breadcrumb when truncation is needed.
220
+ * Set to 35% of available width to ensure last breadcrumb doesn't dominate the space
221
+ * while still being readable.
222
+ */
223
+ LAST_BREADCRUMB_MAX_WIDTH_RATIO = 0.35;
130
224
  tdBreadCrumbsClass = true;
225
+ role = 'navigation';
226
+ ariaLabel = 'Breadcrumb';
131
227
  // all the sub components, which are the individual breadcrumbs
132
228
  _breadcrumbs;
133
229
  // the list of hidden breadcrumbs not shown right now (responsive)
134
230
  hiddenBreadcrumbs = [];
231
+ overflowMenuItems = [];
232
+ showOverflowButton = false;
233
+ overflowButtonOrder = 50;
234
+ overflowMenuTrigger;
135
235
  /**
136
236
  * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.
137
237
  */
@@ -142,9 +242,26 @@ class TdBreadcrumbsComponent {
142
242
  get separatorIcon() {
143
243
  return this._separatorIcon;
144
244
  }
145
- constructor(_elementRef, _changeDetectorRef) {
146
- this._elementRef = _elementRef;
147
- this._changeDetectorRef = _changeDetectorRef;
245
+ size;
246
+ get fontFamily() {
247
+ return this.size
248
+ ? `var(--cv-typography-${this.size}-font-family)`
249
+ : undefined;
250
+ }
251
+ get fontSize() {
252
+ return this.size
253
+ ? `var(--cv-typography-${this.size}-font-size)`
254
+ : undefined;
255
+ }
256
+ get fontWeight() {
257
+ return this.size
258
+ ? `var(--cv-typography-${this.size}-font-weight)`
259
+ : undefined;
260
+ }
261
+ get lineHeight() {
262
+ return this.size
263
+ ? `var(--cv-typography-${this.size}-line-height)`
264
+ : undefined;
148
265
  }
149
266
  ngOnInit() {
150
267
  fromEvent(window, 'resize')
@@ -168,12 +285,15 @@ class TdBreadcrumbsComponent {
168
285
  .pipe(startWith(this._breadcrumbs), takeUntil(this._destroy$))
169
286
  .subscribe(() => {
170
287
  this._waitToCalculateVisibility();
171
- this.setCrumbIcons();
172
- this._changeDetectorRef.markForCheck();
288
+ setTimeout(() => {
289
+ this.setCrumbIcons();
290
+ this._changeDetectorRef.markForCheck();
291
+ });
173
292
  });
174
293
  }
175
294
  ngOnDestroy() {
176
295
  this._destroy$.next();
296
+ this._destroy$.complete();
177
297
  }
178
298
  /*
179
299
  * Current width of the element container
@@ -202,39 +322,135 @@ class TdBreadcrumbsComponent {
202
322
  get count() {
203
323
  return this._breadcrumbs ? this._breadcrumbs.length : 0;
204
324
  }
325
+ get overflowButtonAriaLabel() {
326
+ const count = this.hiddenBreadcrumbs.length;
327
+ return `Show ${count} hidden breadcrumb${count > 1 ? 's' : ''}`;
328
+ }
329
+ handleOverflowItemClick(item) {
330
+ const nativeElement = item.elementRef?.nativeElement;
331
+ if (nativeElement) {
332
+ nativeElement.click();
333
+ }
334
+ }
335
+ getItemText(item) {
336
+ return item.fullText || '';
337
+ }
205
338
  /**
206
339
  * Set the crumb icon separators
207
340
  */
208
341
  setCrumbIcons() {
209
342
  if (this._breadcrumbs) {
210
343
  const breadcrumbArray = this._breadcrumbs.toArray();
211
- breadcrumbArray.forEach((breadcrumb, index) => {
212
- breadcrumb.separatorIcon = this.separatorIcon;
213
- // don't show the icon on the last breadcrumb
214
- breadcrumb.displayIcon = index < breadcrumbArray.length - 1;
344
+ setTimeout(() => {
345
+ breadcrumbArray.forEach((breadcrumb, index) => {
346
+ breadcrumb.separatorIcon = this.separatorIcon;
347
+ breadcrumb.displayIcon = true;
348
+ breadcrumb.isCurrentPage = index === breadcrumbArray.length - 1;
349
+ });
350
+ this._changeDetectorRef.markForCheck();
215
351
  });
216
352
  }
217
353
  }
218
354
  _calculateVisibility() {
219
355
  const crumbsArray = this._breadcrumbs.toArray();
220
- let crumbWidthSum = 0;
221
- const hiddenCrumbs = [];
222
- // loop through crumbs in reverse order to calculate which ones should be removed
223
- for (let i = crumbsArray.length - 1; i >= 0; i--) {
356
+ const totalBreadcrumbs = crumbsArray.length;
357
+ // Reset all orders when there are 2 or fewer breadcrumbs
358
+ if (totalBreadcrumbs <= 2) {
359
+ crumbsArray.forEach((breadcrumb) => {
360
+ breadcrumb.displayCrumb = true;
361
+ breadcrumb.shouldTruncate = false;
362
+ breadcrumb.maxWidth = undefined;
363
+ breadcrumb.flexOrder = 0; // Default order
364
+ });
365
+ this.showOverflowButton = false;
366
+ this.overflowMenuItems = [];
367
+ this.hiddenBreadcrumbs = [];
368
+ this._changeDetectorRef.markForCheck();
369
+ return;
370
+ }
371
+ const firstCrumb = crumbsArray[0];
372
+ const lastCrumb = crumbsArray[totalBreadcrumbs - 1];
373
+ const containerWidth = this.nativeElementWidth;
374
+ const totalRequiredWidth = crumbsArray.reduce((sum, crumb) => sum + crumb.width, 0);
375
+ if (totalRequiredWidth <= containerWidth) {
376
+ crumbsArray.forEach((breadcrumb, index) => {
377
+ breadcrumb.displayCrumb = true;
378
+ breadcrumb.shouldTruncate = false;
379
+ breadcrumb.maxWidth = undefined;
380
+ breadcrumb.flexOrder =
381
+ index === 0
382
+ ? 0
383
+ : index === totalBreadcrumbs - 1
384
+ ? 1000
385
+ : index * 10; // Assign orders based on index for middle crumbs
386
+ });
387
+ this.showOverflowButton = false;
388
+ this.overflowMenuItems = [];
389
+ this.hiddenBreadcrumbs = [];
390
+ this._changeDetectorRef.markForCheck();
391
+ return;
392
+ }
393
+ const overflowButtonWidth = 48;
394
+ const availableWidth = containerWidth - overflowButtonWidth;
395
+ const visibleMiddleCrumbs = [];
396
+ let requiredWidth = firstCrumb.width + lastCrumb.width;
397
+ // Try to fit breadcrumbs from right to left (favoring more recent items)
398
+ for (let i = totalBreadcrumbs - 2; i >= 1; i--) {
224
399
  const breadcrumb = crumbsArray[i];
225
- // if crumb exceeds width, then we skip it from the sum and add it into the hiddencrumbs array
226
- // and hide it
227
- if (crumbWidthSum + breadcrumb.width > this.nativeElementWidth) {
228
- breadcrumb.displayCrumb = false;
229
- hiddenCrumbs.push(breadcrumb);
400
+ if (requiredWidth + breadcrumb.width <= availableWidth) {
401
+ requiredWidth += breadcrumb.width;
402
+ visibleMiddleCrumbs.unshift(i);
230
403
  }
231
- else {
232
- // else we show it
404
+ }
405
+ // Apply visibility and flexbox orders
406
+ const hiddenBreadcrumbs = [];
407
+ let currentOrder = 10; // Start orders at 10 for middle breadcrumbs
408
+ crumbsArray.forEach((breadcrumb, index) => {
409
+ if (index === 0) {
410
+ // First breadcrumb - always visible, always first
411
+ breadcrumb.displayCrumb = true;
412
+ breadcrumb.shouldTruncate = false;
413
+ breadcrumb.maxWidth = undefined;
414
+ breadcrumb.flexOrder = 0;
415
+ }
416
+ else if (index === totalBreadcrumbs - 1) {
417
+ // Last breadcrumb - always visible, always last
418
+ breadcrumb.displayCrumb = true;
419
+ breadcrumb.shouldTruncate = false;
420
+ breadcrumb.flexOrder = 1000;
421
+ }
422
+ else if (visibleMiddleCrumbs.includes(index)) {
423
+ // Visible middle breadcrumbs - assign incremental orders
233
424
  breadcrumb.displayCrumb = true;
425
+ breadcrumb.shouldTruncate = false;
426
+ breadcrumb.maxWidth = undefined;
427
+ breadcrumb.flexOrder = currentOrder;
428
+ currentOrder += 10;
234
429
  }
235
- crumbWidthSum += breadcrumb.width;
430
+ else {
431
+ // Hidden breadcrumbs
432
+ breadcrumb.displayCrumb = false;
433
+ breadcrumb.shouldTruncate = false;
434
+ breadcrumb.maxWidth = undefined;
435
+ breadcrumb.flexOrder = 0; // Doesn't matter, it's hidden
436
+ hiddenBreadcrumbs.push(breadcrumb);
437
+ }
438
+ });
439
+ // Overflow button order comes after visible middle breadcrumbs
440
+ this.overflowButtonOrder = currentOrder;
441
+ // Truncate last breadcrumb if too long
442
+ const lastBreadcrumbMaxWidth = availableWidth * this.LAST_BREADCRUMB_MAX_WIDTH_RATIO;
443
+ if (lastCrumb.width > lastBreadcrumbMaxWidth) {
444
+ lastCrumb.shouldTruncate = true;
445
+ lastCrumb.maxWidth = lastBreadcrumbMaxWidth;
236
446
  }
237
- this.hiddenBreadcrumbs = hiddenCrumbs;
447
+ else {
448
+ // Ensure maxWidth is reset if last breadcrumb doesn't need truncation
449
+ lastCrumb.maxWidth = undefined;
450
+ }
451
+ this.showOverflowButton = hiddenBreadcrumbs.length > 0;
452
+ this.overflowMenuItems = hiddenBreadcrumbs;
453
+ this.hiddenBreadcrumbs = hiddenBreadcrumbs;
238
454
  this._changeDetectorRef.markForCheck();
239
455
  }
240
456
  _waitToCalculateVisibility() {
@@ -242,32 +458,73 @@ class TdBreadcrumbsComponent {
242
458
  this._calculateVisibility();
243
459
  });
244
460
  }
245
- static ɵfac = function TdBreadcrumbsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbsComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
461
+ static ɵfac = function TdBreadcrumbsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbsComponent)(); };
246
462
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdBreadcrumbsComponent, selectors: [["td-breadcrumbs"]], contentQueries: function TdBreadcrumbsComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
247
463
  i0.ɵɵcontentQuery(dirIndex, TdBreadcrumbComponent, 5);
248
464
  } if (rf & 2) {
249
465
  let _t;
250
466
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._breadcrumbs = _t);
251
- } }, hostVars: 2, hostBindings: function TdBreadcrumbsComponent_HostBindings(rf, ctx) { if (rf & 2) {
467
+ } }, viewQuery: function TdBreadcrumbsComponent_Query(rf, ctx) { if (rf & 1) {
468
+ i0.ɵɵviewQuery(MatMenuTrigger, 5);
469
+ } if (rf & 2) {
470
+ let _t;
471
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overflowMenuTrigger = _t.first);
472
+ } }, hostVars: 12, hostBindings: function TdBreadcrumbsComponent_HostBindings(rf, ctx) { if (rf & 2) {
473
+ i0.ɵɵattribute("role", ctx.role)("aria-label", ctx.ariaLabel);
474
+ i0.ɵɵstyleProp("font-family", ctx.fontFamily)("font-size", ctx.fontSize)("font-weight", ctx.fontWeight)("line-height", ctx.lineHeight);
252
475
  i0.ɵɵclassProp("td-breadcrumbs", ctx.tdBreadCrumbsClass);
253
- } }, inputs: { separatorIcon: "separatorIcon" }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function TdBreadcrumbsComponent_Template(rf, ctx) { if (rf & 1) {
476
+ } }, inputs: { separatorIcon: "separatorIcon", size: "size" }, ngContentSelectors: _c0, decls: 6, vars: 3, consts: [["overflowMenu", "matMenu"], ["mat-icon-button", "", "class", "td-breadcrumbs-overflow-button", 3, "matMenuTriggerFor", "order", 4, "ngIf"], ["class", "td-breadcrumb-separator-icon", "color", "primary", "aria-hidden", "true", 3, "order", 4, "ngIf"], [1, "td-breadcrumb-overflow-menu"], ["mat-menu-item", "", 3, "click", 4, "ngFor", "ngForOf"], ["mat-icon-button", "", 1, "td-breadcrumbs-overflow-button", 3, "matMenuTriggerFor"], ["color", "primary", "aria-hidden", "true", 1, "td-breadcrumb-separator-icon"], ["mat-menu-item", "", 3, "click"]], template: function TdBreadcrumbsComponent_Template(rf, ctx) { if (rf & 1) {
254
477
  i0.ɵɵprojectionDef();
255
478
  i0.ɵɵprojection(0);
256
- } }, styles: ["[_nghost-%COMP%]{display:flex;align-items:center}.td-breadcrumbs[_nghost-%COMP%]{white-space:nowrap}"], changeDetection: 0 });
479
+ i0.ɵɵtemplate(1, TdBreadcrumbsComponent_button_1_Template, 3, 5, "button", 1)(2, TdBreadcrumbsComponent_mat_icon_2_Template, 2, 3, "mat-icon", 2);
480
+ i0.ɵɵelementStart(3, "mat-menu", 3, 0);
481
+ i0.ɵɵtemplate(5, TdBreadcrumbsComponent_button_5_Template, 2, 3, "button", 4);
482
+ i0.ɵɵelementEnd();
483
+ } if (rf & 2) {
484
+ i0.ɵɵadvance();
485
+ i0.ɵɵproperty("ngIf", ctx.showOverflowButton);
486
+ i0.ɵɵadvance();
487
+ i0.ɵɵproperty("ngIf", ctx.showOverflowButton);
488
+ i0.ɵɵadvance(3);
489
+ i0.ɵɵproperty("ngForOf", ctx.overflowMenuItems);
490
+ } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, MatMenuModule, i2$1.MatMenu, i2$1.MatMenuItem, i2$1.MatMenuTrigger, MatButtonModule, i3.MatIconButton, MatIconModule, i4.MatIcon], styles: ["[_nghost-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}.td-breadcrumbs[_nghost-%COMP%]{white-space:nowrap}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%]{flex-shrink:0;margin:0 4px}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%] + .td-breadcrumb-separator-icon[_ngcontent-%COMP%]{order:inherit;font-size:16px;width:16px;height:16px;flex-shrink:0;margin:0 10px}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%]{max-width:300px}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{max-width:100%}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mat-mdc-menu-item-text{white-space:normal;line-height:1.4}"], changeDetection: 0 });
257
491
  }
258
492
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdBreadcrumbsComponent, [{
259
493
  type: Component,
260
- args: [{ selector: 'td-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center}:host.td-breadcrumbs{white-space:nowrap}\n"] }]
261
- }], () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], { tdBreadCrumbsClass: [{
494
+ args: [{ selector: 'td-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatMenuModule, MatButtonModule, MatIconModule], template: "<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", styles: [":host{display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}:host.td-breadcrumbs{white-space:nowrap}.td-breadcrumbs-overflow-button{flex-shrink:0;margin:0 4px}.td-breadcrumbs-overflow-button mat-icon{font-size:18px;height:18px;width:18px}.td-breadcrumbs-overflow-button+.td-breadcrumb-separator-icon{order:inherit;font-size:16px;width:16px;height:16px;flex-shrink:0;margin:0 10px}.td-breadcrumb-overflow-menu{max-width:300px}.td-breadcrumb-overflow-menu button{max-width:100%}.td-breadcrumb-overflow-menu button ::ng-deep .mat-mdc-menu-item-text{white-space:normal;line-height:1.4}\n"] }]
495
+ }], null, { tdBreadCrumbsClass: [{
262
496
  type: HostBinding,
263
497
  args: ['class.td-breadcrumbs']
498
+ }], role: [{
499
+ type: HostBinding,
500
+ args: ['attr.role']
501
+ }], ariaLabel: [{
502
+ type: HostBinding,
503
+ args: ['attr.aria-label']
264
504
  }], _breadcrumbs: [{
265
505
  type: ContentChildren,
266
506
  args: [TdBreadcrumbComponent, { descendants: true }]
507
+ }], overflowMenuTrigger: [{
508
+ type: ViewChild,
509
+ args: [MatMenuTrigger]
267
510
  }], separatorIcon: [{
268
511
  type: Input
512
+ }], size: [{
513
+ type: Input
514
+ }], fontFamily: [{
515
+ type: HostBinding,
516
+ args: ['style.font-family']
517
+ }], fontSize: [{
518
+ type: HostBinding,
519
+ args: ['style.font-size']
520
+ }], fontWeight: [{
521
+ type: HostBinding,
522
+ args: ['style.font-weight']
523
+ }], lineHeight: [{
524
+ type: HostBinding,
525
+ args: ['style.line-height']
269
526
  }] }); })();
270
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbsComponent, { className: "TdBreadcrumbsComponent", filePath: "breadcrumbs.component.ts", lineNumber: 27 }); })();
527
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbsComponent, { className: "TdBreadcrumbsComponent", filePath: "breadcrumbs.component.ts", lineNumber: 35 }); })();
271
528
 
272
529
  /**
273
530
  * @deprecated This module is deprecated and will be removed in future versions.
@@ -276,7 +533,7 @@ class TdBreadcrumbsComponent {
276
533
  class CovalentBreadcrumbsModule {
277
534
  static ɵfac = function CovalentBreadcrumbsModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentBreadcrumbsModule)(); };
278
535
  static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentBreadcrumbsModule });
279
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [TdBreadcrumbComponent] });
536
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [TdBreadcrumbsComponent, TdBreadcrumbComponent] });
280
537
  }
281
538
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CovalentBreadcrumbsModule, [{
282
539
  type: NgModule,
@@ -1 +1 @@
1
- {"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.ts","../../../../libs/angular/breadcrumbs/src/breadcrumbs.component.html","../../../../libs/angular/breadcrumbs/src/breadcrumbs.module.ts","../../../../libs/angular/breadcrumbs/src/covalent-core-breadcrumbs.ts"],"sourcesContent":["<ng-content></ng-content>\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} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'td-breadcrumb, a[td-breadcrumb]',\n styleUrls: ['./breadcrumb.component.scss'],\n templateUrl: './breadcrumb.component.html',\n imports: [CommonModule, MatIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n private _displayCrumb = true;\n private _width = 0;\n private _displayIcon = true;\n private _separatorIcon = 'chevron_right';\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 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 constructor(\n 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>(\n this._elementRef.nativeElement\n )).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","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} from '@angular/core';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbsComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n private _resizing = false;\n private _separatorIcon = 'chevron_right';\n private _destroy$ = new Subject<void>();\n\n @HostBinding('class.td-breadcrumbs') tdBreadCrumbsClass = true;\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\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 constructor(\n private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef\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 this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\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 /**\n * Set the crumb icon separators\n */\n private setCrumbIcons(): void {\n if (this._breadcrumbs) {\n const breadcrumbArray: TdBreadcrumbComponent[] =\n this._breadcrumbs.toArray();\n breadcrumbArray.forEach(\n (breadcrumb: TdBreadcrumbComponent, index: number) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n // don't show the icon on the last breadcrumb\n breadcrumb.displayIcon = index < breadcrumbArray.length - 1;\n }\n );\n }\n }\n\n private _calculateVisibility(): void {\n const crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n let crumbWidthSum = 0;\n const 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 const breadcrumb: TdBreadcrumbComponent = crumbsArray[i];\n\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\n this.hiddenBreadcrumbs = hiddenCrumbs;\n this._changeDetectorRef.markForCheck();\n }\n\n private _waitToCalculateVisibility(): void {\n setTimeout(() => {\n this._calculateVisibility();\n });\n }\n}\n","<ng-content></ng-content>\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":[],"mappings":"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"}
1
+ {"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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@covalent/core",
3
- "version": "10.4.3",
3
+ "version": "10.5.1",
4
4
  "exports": {
5
5
  ".": {
6
6
  "sass": "./theming/_all-theme.scss",
@@ -82,7 +82,7 @@
82
82
  "@angular/router": "19.x.x",
83
83
  "@angular/cdk": "19.x.x",
84
84
  "@angular/material": "19.x.x",
85
- "@covalent/core": "10.4.3"
85
+ "@covalent/core": "10.5.1"
86
86
  },
87
87
  "dependencies": {
88
88
  "tslib": "^2.8.1"