Merge "Submit Requirements - show overide labels name only when voted on"
diff --git a/polygerrit-ui/app/elements/topic/gr-topic-tree-project.ts b/polygerrit-ui/app/elements/topic/gr-topic-tree-repo.ts
similarity index 76%
rename from polygerrit-ui/app/elements/topic/gr-topic-tree-project.ts
rename to polygerrit-ui/app/elements/topic/gr-topic-tree-repo.ts
index c3fed91..d5bf096 100644
--- a/polygerrit-ui/app/elements/topic/gr-topic-tree-project.ts
+++ b/polygerrit-ui/app/elements/topic/gr-topic-tree-repo.ts
@@ -19,26 +19,26 @@
import {customElement, property} from 'lit/decorators';
import {LitElement, html} from 'lit-element/lit-element';
import '../shared/gr-button/gr-button';
-import {ChangeInfo} from '../../api/rest-api';
+import {ChangeInfo, RepoName} from '../../api/rest-api';
/**
- * A view of changes that all belong to the same project.
+ * A view of changes that all belong to the same repository.
*/
-@customElement('gr-topic-tree-project')
-export class GrTopicTreeProject extends LitElement {
+@customElement('gr-topic-tree-repo')
+export class GrTopicTreeRepo extends LitElement {
@property({type: String})
- projectName?: string;
+ repoName?: RepoName;
@property({type: Array})
changes?: ChangeInfo[];
override render() {
- if (this.projectName === undefined || this.changes === undefined) {
+ if (this.repoName === undefined || this.changes === undefined) {
return;
}
- // TODO: Groups of related changes should be separated within the project.
+ // TODO: Groups of related changes should be separated within the repository.
return html`
- <h2>Project ${this.projectName}</h2>
+ <h2>Repo ${this.repoName}</h2>
${this.changes.map(change => this.renderTreeRow(change))}
`;
}
@@ -50,6 +50,6 @@
declare global {
interface HTMLElementTagNameMap {
- 'gr-topic-tree-project': GrTopicTreeProject;
+ 'gr-topic-tree-repo': GrTopicTreeRepo;
}
}
diff --git a/polygerrit-ui/app/elements/topic/gr-topic-tree-project_test.ts b/polygerrit-ui/app/elements/topic/gr-topic-tree-repo_test.ts
similarity index 69%
rename from polygerrit-ui/app/elements/topic/gr-topic-tree-project_test.ts
rename to polygerrit-ui/app/elements/topic/gr-topic-tree-repo_test.ts
index 39398bd..2e903b5 100644
--- a/polygerrit-ui/app/elements/topic/gr-topic-tree-project_test.ts
+++ b/polygerrit-ui/app/elements/topic/gr-topic-tree-repo_test.ts
@@ -15,27 +15,28 @@
* limitations under the License.
*/
+import {RepoName} from '../../api/rest-api';
import '../../test/common-test-setup-karma';
import {createChange} from '../../test/test-data-generators';
import {queryAndAssert} from '../../test/test-utils';
-import './gr-topic-tree-project';
-import {GrTopicTreeProject} from './gr-topic-tree-project';
+import './gr-topic-tree-repo';
+import {GrTopicTreeRepo} from './gr-topic-tree-repo';
-const basicFixture = fixtureFromElement('gr-topic-tree-project');
-const projectName = 'myProject';
+const basicFixture = fixtureFromElement('gr-topic-tree-repo');
+const repoName = 'myRepo' as RepoName;
-suite('gr-topic-tree-project tests', () => {
- let element: GrTopicTreeProject;
+suite('gr-topic-tree-repo tests', () => {
+ let element: GrTopicTreeRepo;
setup(async () => {
element = basicFixture.instantiate();
- element.projectName = projectName;
+ element.repoName = repoName;
element.changes = [createChange()];
await element.updateComplete;
});
- test('shows project name', () => {
+ test('shows repository name', () => {
const heading = queryAndAssert<HTMLHeadingElement>(element, 'h2');
- assert.equal(heading.textContent, `Project ${projectName}`);
+ assert.equal(heading.textContent, `Repo ${repoName}`);
});
});
diff --git a/polygerrit-ui/app/elements/topic/gr-topic-tree.ts b/polygerrit-ui/app/elements/topic/gr-topic-tree.ts
index da67e26..f5140f6 100644
--- a/polygerrit-ui/app/elements/topic/gr-topic-tree.ts
+++ b/polygerrit-ui/app/elements/topic/gr-topic-tree.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import './gr-topic-tree-project';
+import './gr-topic-tree-repo';
import {customElement, property, state} from 'lit/decorators';
import {LitElement, html, PropertyValues} from 'lit-element/lit-element';
import {getAppContext} from '../../services/app-context';
@@ -24,7 +24,7 @@
/**
* A tree-like dashboard showing changes related to a topic, organized by
- * project.
+ * repository.
*/
@customElement('gr-topic-tree')
export class GrTopicTree extends LitElement {
@@ -32,7 +32,7 @@
topicName?: string;
@state()
- private changesByProject = new Map<RepoName, ChangeInfo[]>();
+ private changesByRepo = new Map<RepoName, ChangeInfo[]>();
private restApiService = getAppContext().restApiService;
@@ -45,17 +45,17 @@
override render() {
// TODO: organize into <table> for column alignment.
- return Array.from(this.changesByProject).map(([projectName, changes]) =>
- this.renderProjectSection(projectName, changes)
+ return Array.from(this.changesByRepo).map(([repoName, changes]) =>
+ this.renderRepoSection(repoName, changes)
);
}
- private renderProjectSection(projectName: RepoName, changes: ChangeInfo[]) {
+ private renderRepoSection(repoName: RepoName, changes: ChangeInfo[]) {
return html`
- <gr-topic-tree-project
- .projectName=${projectName}
+ <gr-topic-tree-repo
+ .repoName=${repoName}
.changes=${changes}
- ></gr-topic-tree-project>
+ ></gr-topic-tree-repo>
`;
}
@@ -67,12 +67,12 @@
if (!changes) {
return;
}
- this.changesByProject.clear();
+ this.changesByRepo.clear();
for (const change of changes) {
- if (this.changesByProject.has(change.project)) {
- this.changesByProject.get(change.project)!.push(change);
+ if (this.changesByRepo.has(change.project)) {
+ this.changesByRepo.get(change.project)!.push(change);
} else {
- this.changesByProject.set(change.project, [change]);
+ this.changesByRepo.set(change.project, [change]);
}
}
this.requestUpdate();
diff --git a/polygerrit-ui/app/elements/topic/gr-topic-tree_test.ts b/polygerrit-ui/app/elements/topic/gr-topic-tree_test.ts
index f214520..a2873d9 100644
--- a/polygerrit-ui/app/elements/topic/gr-topic-tree_test.ts
+++ b/polygerrit-ui/app/elements/topic/gr-topic-tree_test.ts
@@ -21,49 +21,53 @@
import {queryAll, stubRestApi} from '../../test/test-utils';
import './gr-topic-tree';
import {GrTopicTree} from './gr-topic-tree';
-import {GrTopicTreeProject} from './gr-topic-tree-project';
+import {GrTopicTreeRepo} from './gr-topic-tree-repo';
const basicFixture = fixtureFromElement('gr-topic-tree');
-function createChangeForProject(projectName: string): ChangeInfo {
- return {...createChange(), project: projectName as RepoName};
+const repo1Name = 'repo1' as RepoName;
+const repo2Name = 'repo2' as RepoName;
+const repo3Name = 'repo3' as RepoName;
+
+function createChangeForRepo(repoName: string): ChangeInfo {
+ return {...createChange(), project: repoName as RepoName};
}
suite('gr-topic-tree tests', () => {
let element: GrTopicTree;
- const project1Changes = [
- createChangeForProject('project1'),
- createChangeForProject('project1'),
+ const repo1Changes = [
+ createChangeForRepo(repo1Name),
+ createChangeForRepo(repo1Name),
];
- const project2Changes = [
- createChangeForProject('project2'),
- createChangeForProject('project2'),
+ const repo2Changes = [
+ createChangeForRepo(repo2Name),
+ createChangeForRepo(repo2Name),
];
- const project3Changes = [
- createChangeForProject('project3'),
- createChangeForProject('project3'),
+ const repo3Changes = [
+ createChangeForRepo(repo3Name),
+ createChangeForRepo(repo3Name),
];
setup(async () => {
stubRestApi('getChanges')
.withArgs(undefined, 'topic:myTopic')
- .resolves([...project1Changes, ...project2Changes, ...project3Changes]);
+ .resolves([...repo1Changes, ...repo2Changes, ...repo3Changes]);
element = basicFixture.instantiate();
element.topicName = 'myTopic';
await element.updateComplete;
});
- test('groups changes by project', () => {
- const projectSections = queryAll<GrTopicTreeProject>(
+ test('groups changes by repo', () => {
+ const repoSections = queryAll<GrTopicTreeRepo>(
element,
- 'gr-topic-tree-project'
+ 'gr-topic-tree-repo'
);
- assert.lengthOf(projectSections, 3);
- assert.equal(projectSections[0].projectName, 'project1');
- assert.sameMembers(projectSections[0].changes!, project1Changes);
- assert.equal(projectSections[1].projectName, 'project2');
- assert.sameMembers(projectSections[1].changes!, project2Changes);
- assert.equal(projectSections[2].projectName, 'project3');
- assert.sameMembers(projectSections[2].changes!, project3Changes);
+ assert.lengthOf(repoSections, 3);
+ assert.equal(repoSections[0].repoName, repo1Name);
+ assert.sameMembers(repoSections[0].changes!, repo1Changes);
+ assert.equal(repoSections[1].repoName, repo2Name);
+ assert.sameMembers(repoSections[1].changes!, repo2Changes);
+ assert.equal(repoSections[2].repoName, repo3Name);
+ assert.sameMembers(repoSections[2].changes!, repo3Changes);
});
});
diff --git a/polygerrit-ui/app/utils/dom-util.ts b/polygerrit-ui/app/utils/dom-util.ts
index bd0f742..2c38276 100644
--- a/polygerrit-ui/app/utils/dom-util.ts
+++ b/polygerrit-ui/app/utils/dom-util.ts
@@ -454,7 +454,10 @@
// Suppress shortcuts if the key is 'enter'
// and target is an anchor or button or paper-tab.
(e.keyCode === 13 &&
- (tagName === 'A' || tagName === 'BUTTON' || tagName === 'PAPER-TAB'))
+ (tagName === 'A' ||
+ tagName === 'BUTTON' ||
+ tagName === 'GR-BUTTON' ||
+ tagName === 'PAPER-TAB'))
) {
return true;
}
diff --git a/polygerrit-ui/app/utils/dom-util_test.ts b/polygerrit-ui/app/utils/dom-util_test.ts
index e139805..28157d9 100644
--- a/polygerrit-ui/app/utils/dom-util_test.ts
+++ b/polygerrit-ui/app/utils/dom-util_test.ts
@@ -326,6 +326,15 @@
});
});
+ test('suppress "enter" shortcut event from <gr-button>', async () => {
+ await keyEventOn(
+ document.createElement('gr-button'),
+ e => assert.isTrue(shouldSuppress(e)),
+ 13,
+ 'enter'
+ );
+ });
+
test('suppress "enter" shortcut event from <a>', async () => {
await keyEventOn(document.createElement('a'), e => {
assert.isFalse(shouldSuppress(e));