fix(docs-infra): use `.tooltip` in `aio-top-menu` items (#33351)

The top-menu items have both a `title` and a `tooltip` property. The
`title` is used as text content, so there is little point in using it as
"tooltip" (via the HTMLElement's `title` property) too.

This commit switches to using the `tooltip` property to populate the
`title`. Note that in many cases, the `tooltip` property is derived from
`title` anyway (so there is no practical change in behavior in these
cases).

PR Close #33351
This commit is contained in:
George Kalpakas 2019-10-23 14:51:33 +03:00 committed by Miško Hevery
parent dc4ae4b4cf
commit 34b84f61e0
2 changed files with 26 additions and 27 deletions

View File

@ -1,42 +1,41 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { BehaviorSubject } from 'rxjs';
import { TopMenuComponent } from './top-menu.component';
import { NavigationService, NavigationViews } from 'app/navigation/navigation.service';
describe('TopMenuComponent', () => {
let component: TopMenuComponent;
let fixture: ComponentFixture<TopMenuComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ TopMenuComponent ],
providers: [
{ provide: NavigationService, useClass: TestNavigationService }
]
});
});
// Helpers
const getListItems = () => {
const list: HTMLUListElement = fixture.debugElement.nativeElement.querySelector('ul');
return Array.from(list.querySelectorAll('li'));
};
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
TopMenuComponent,
],
});
fixture = TestBed.createComponent(TopMenuComponent);
component = fixture.componentInstance;
component.nodes = [
{url: 'api', title: 'API', tooltip: 'API docs'},
{url: 'features', title: 'Features', tooltip: 'Angular features overview'},
];
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
it('should create an item for each navigation node', () => {
const items = getListItems();
const links = items.map(item => item.querySelector('a'))
.filter((link): link is NonNullable<typeof link> => link !== null);
expect(links.length).toBe(2);
expect(links.map(link => link.pathname)).toEqual(['/api', '/features']);
expect(links.map(link => link.textContent)).toEqual(['API', 'Features']);
expect(links.map(link => link.title)).toEqual(['API docs', 'Angular features overview']);
});
});
//// Test Helpers ////
class TestNavigationService {
navJson = {
TopBar: [
{url: 'api', title: 'API' },
{url: 'features', title: 'Features' }
],
};
navigationViews = new BehaviorSubject<NavigationViews>(this.navJson);
}

View File

@ -6,7 +6,7 @@ import { NavigationNode } from 'app/navigation/navigation.service';
template: `
<ul role="navigation">
<li *ngFor="let node of nodes">
<a class="nav-link" [href]="node.url" [title]="node.title">
<a class="nav-link" [href]="node.url" [title]="node.tooltip">
<span class="nav-link-inner">{{ node.title }}</span>
</a>
</li>