Skip to content

Commit 415188b

Browse files
committed
refactor(breadcrumb): cleanups, add routeSnapshot.title as fallback value, use control flow, use @input() transform
1 parent 7d1e53d commit 415188b

File tree

3 files changed

+7
-13
lines changed

3 files changed

+7
-13
lines changed

projects/coreui-angular/src/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, HostBinding, Input } from '@angular/core';
1+
import { booleanAttribute, Component, HostBinding, Input } from '@angular/core';
22
import { NgTemplateOutlet } from '@angular/common';
33
import { RouterModule } from '@angular/router';
44

@@ -18,7 +18,7 @@ export class BreadcrumbItemComponent {
1818
* Toggle the active state for the component. [docs]
1919
* @type boolean
2020
*/
21-
@Input() active?: boolean;
21+
@Input({ transform: booleanAttribute }) active?: boolean;
2222
/**
2323
* The `url` prop for the inner `[routerLink]` directive. [docs]
2424
* @type string

projects/coreui-angular/src/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<c-breadcrumb class="m-0">
22
@for (breadcrumb of breadcrumbs | async; track breadcrumb; let last = $last) {
3-
@if (breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {
3+
@if(breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {
44
<c-breadcrumb-item
55
[active]="last"
66
[url]="breadcrumb?.url"

projects/coreui-angular/src/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,10 @@ import { IBreadcrumbItem } from '../breadcrumb-item/breadcrumb-item';
1111
export class BreadcrumbRouterService {
1212
public outlet = 'primary';
1313

14-
breadcrumbs$: Observable<IBreadcrumbItem[]>;
15-
private breadcrumbsBehaviorSubject: BehaviorSubject<IBreadcrumbItem[]>;
14+
readonly #breadcrumbsBehaviorSubject = new BehaviorSubject<IBreadcrumbItem[]>(new Array<IBreadcrumbItem>());
15+
breadcrumbs$ = this.#breadcrumbsBehaviorSubject.asObservable();
1616

1717
constructor(private router: Router, private route: ActivatedRoute) {
18-
this.breadcrumbsBehaviorSubject = new BehaviorSubject<any[]>(
19-
new Array<IBreadcrumbItem>()
20-
);
21-
22-
this.breadcrumbs$ = this.breadcrumbsBehaviorSubject.asObservable();
2318

2419
this.router.events
2520
.pipe(
@@ -39,7 +34,7 @@ export class BreadcrumbRouterService {
3934
const routeSnapshot = childRoute.snapshot;
4035
url += '/' + routeSnapshot.url.map((segment) => segment.path).join('/');
4136
breadcrumbs.push({
42-
label: childRoute.snapshot.data['title'] || '',
37+
label: routeSnapshot.data['title'] ?? routeSnapshot.title ?? '',
4338
url,
4439
queryParams: routeSnapshot.queryParams
4540
});
@@ -48,9 +43,8 @@ export class BreadcrumbRouterService {
4843
});
4944
} while (currentRoute);
5045

51-
this.breadcrumbsBehaviorSubject.next(Object.assign([], breadcrumbs));
46+
this.#breadcrumbsBehaviorSubject.next(Object.assign([], breadcrumbs));
5247

53-
// console.log('breadcrumbs', breadcrumbs);
5448
return breadcrumbs;
5549
});
5650
}

0 commit comments

Comments
 (0)