diff --git a/packages/primeng/src/breadcrumb/breadcrumb.spec.ts b/packages/primeng/src/breadcrumb/breadcrumb.spec.ts index a7fac655d57..ddea6fa3302 100644 --- a/packages/primeng/src/breadcrumb/breadcrumb.spec.ts +++ b/packages/primeng/src/breadcrumb/breadcrumb.spec.ts @@ -872,6 +872,37 @@ describe('Breadcrumb', () => { expect(breadcrumbInstance.home?.tooltipOptions?.tooltipLabel).toBe('Home tooltip'); expect(breadcrumbInstance.model?.[0]?.tooltipOptions?.tooltipLabel).toBe('Item tooltip'); }); + + it('should set aria-current on the last non-router item', async () => { + component.model = [ + { label: 'Products', url: '/products' }, + { label: 'Category', url: '/products/category' } + ]; + fixture.changeDetectorRef.markForCheck(); + + await fixture.whenStable(); + + fixture.detectChanges(); + + const itemLinks = fixture.debugElement.queryAll(By.css('[data-pc-section="item"] a')); + + expect(itemLinks[0].nativeElement.getAttribute('aria-current')).toBeNull(); + expect(itemLinks[1].nativeElement.getAttribute('aria-current')).toBe('page'); + }); + + it('should set aria-current on the active last router item', async () => { + const routerFixture = TestBed.createComponent(TestRouterBreadcrumbComponent); + + await router.navigateByUrl('/products/category'); + routerFixture.detectChanges(); + await routerFixture.whenStable(); + routerFixture.detectChanges(); + + const itemLinks = routerFixture.debugElement.queryAll(By.css('[data-pc-section="item"] a')); + + expect(itemLinks[0].nativeElement.getAttribute('aria-current')).toBeNull(); + expect(itemLinks[1].nativeElement.getAttribute('aria-current')).toBe('page'); + }); }); describe('Edge Cases', () => { diff --git a/packages/primeng/src/breadcrumb/breadcrumb.ts b/packages/primeng/src/breadcrumb/breadcrumb.ts index f47e4dbed47..ad0c2a6f745 100755 --- a/packages/primeng/src/breadcrumb/breadcrumb.ts +++ b/packages/primeng/src/breadcrumb/breadcrumb.ts @@ -108,6 +108,7 @@ const BREADCRUMB_INSTANCE = new InjectionToken('BREADCRUMB_INSTANCE' [attr.title]="menuitem?.title" [attr.tabindex]="menuitem?.disabled ? null : menuitem?.tabindex || '0'" [attr.data-automationid]="menuitem?.automationId" + [attr.aria-current]="end ? 'page' : undefined" [pBind]="getPTOptions(menuitem, i, 'itemLink')" > @@ -129,6 +130,7 @@ const BREADCRUMB_INSTANCE = new InjectionToken('BREADCRUMB_INSTANCE' routerLinkActive="p-menuitem-link-active" [queryParams]="menuitem?.queryParams" [routerLinkActiveOptions]="menuitem?.routerLinkActiveOptions || { exact: false }" + [ariaCurrentWhenActive]="end ? 'page' : undefined" [class]="cn(cx('itemLink'), menuitem?.linkClass)" [ngStyle]="menuitem?.linkStyle" (click)="onClick($event, menuitem)"