Merge "Replace `gr-repo-command` with inline template"
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js
index 03a2bd3..25f656d 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js
+++ b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js
@@ -60,6 +60,10 @@
/** @type {?} */
_repoConfig: Object,
_canCreate: Boolean,
+ // states
+ _creatingChange: Boolean,
+ _editingConfig: Boolean,
+ _runningGC: Boolean,
};
}
@@ -102,13 +106,17 @@
}
_handleRunningGC() {
+ this._runningGC = true;
return this.$.restAPI.runRepoGC(this.repo).then(response => {
if (response.status === 200) {
this.dispatchEvent(new CustomEvent(
'show-alert',
{detail: {message: GC_MESSAGE}, bubbles: true, composed: true}));
}
- });
+ })
+ .finally(() => {
+ this._runningGC = false;
+ });
}
_createNewChange() {
@@ -116,7 +124,11 @@
}
_handleCreateChange() {
- this.$.createNewChangeModal.handleCreateChange();
+ this._creatingChange = true;
+ this.$.createNewChangeModal.handleCreateChange()
+ .finally(() => {
+ this._creatingChange = false;
+ });
this._handleCloseCreateChange();
}
@@ -125,6 +137,7 @@
}
_handleEditRepoConfig() {
+ this._editingConfig = true;
return this.$.restAPI.createChange(this.repo, CONFIG_BRANCH,
EDIT_CONFIG_SUBJECT, undefined, false, true).then(change => {
const message = change ?
@@ -136,7 +149,10 @@
GerritNav.navigateToRelativeUrl(GerritNav.getEditUrlForDiff(
change, CONFIG_PATH, INITIAL_PATCHSET));
- });
+ })
+ .finally(() => {
+ this._editingConfig = false;
+ });
}
}
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_html.js b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_html.js
index 66ec740..3ae5b29 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_html.js
+++ b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_html.js
@@ -24,7 +24,9 @@
/* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
</style>
<style include="gr-form-styles">
- /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
+ #form gr-button {
+ margin-bottom: var(--spacing-xxl);
+ }
</style>
<main class="gr-form-styles read-only">
<h1 id="Title" class="heading-1">Repository Commands</h1>
@@ -34,24 +36,29 @@
<div id="loadedContent" class$="[[_computeLoadingClass(_loading)]]">
<h2 id="options" class="heading-2">Command</h2>
<div id="form">
- <gr-repo-command
- title="Create change"
- on-command-tap="_createNewChange"
- >
- </gr-repo-command>
- <gr-repo-command
+ <h3>Create change</h3>
+ <gr-button loading="[[_creatingChange]]" on-click="_createNewChange">
+ Create change
+ </gr-button>
+ <h3>Edit repo config</h3>
+ <gr-button
id="editRepoConfig"
- title="Edit repo config"
- on-command-tap="_handleEditRepoConfig"
+ loading="[[_editingConfig]]"
+ on-click="_handleEditRepoConfig"
>
- </gr-repo-command>
- <gr-repo-command
- title="[[_repoConfig.actions.gc.label]]"
- tooltip="[[_repoConfig.actions.gc.title]]"
- hidden$="[[!_repoConfig.actions.gc.enabled]]"
- on-command-tap="_handleRunningGC"
+ Edit repo config
+ </gr-button>
+ <h3 hidden="[[!_repoConfig.actions.gc.enabled]]">
+ [[_repoConfig.actions.gc.label]]
+ </h3>
+ <gr-button
+ hidden="[[!_repoConfig.actions.gc.enabled]]"
+ title="[[_repoConfig.actions.gc.title]]"
+ loading="[[_runningGC]]"
+ on-click="_handleRunningGC"
>
- </gr-repo-command>
+ [[_repoConfig.actions.gc.label]]
+ </gr-button>
<gr-endpoint-decorator name="repo-command">
<gr-endpoint-param name="config" value="[[_repoConfig]]">
</gr-endpoint-param>
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_test.html b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_test.html
index db2bfcf..a52ab92 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands_test.html
@@ -99,8 +99,8 @@
test('successful creation of change', () => {
const change = {_number: '1'};
createChangeStub.returns(Promise.resolve(change));
- MockInteractions.tap(element.$.editRepoConfig.shadowRoot
- .querySelector('gr-button'));
+ MockInteractions.tap(element.$.editRepoConfig);
+ assert.isTrue(element.$.editRepoConfig.loading);
return handleSpy.lastCall.returnValue.then(() => {
flushAsynchronousOperations();
@@ -110,13 +110,14 @@
assert.isTrue(urlStub.called);
assert.deepEqual(urlStub.lastCall.args,
[change, 'project.config', 1]);
+ assert.isFalse(element.$.editRepoConfig.loading);
});
});
test('unsuccessful creation of change', () => {
createChangeStub.returns(Promise.resolve(null));
- MockInteractions.tap(element.$.editRepoConfig.shadowRoot
- .querySelector('gr-button'));
+ MockInteractions.tap(element.$.editRepoConfig);
+ assert.isTrue(element.$.editRepoConfig.loading);
return handleSpy.lastCall.returnValue.then(() => {
flushAsynchronousOperations();
@@ -124,6 +125,7 @@
assert.equal(alertStub.lastCall.args[0].detail.message,
'Failed to create change.');
assert.isFalse(urlStub.called);
+ assert.isFalse(element.$.editRepoConfig.loading);
});
});
});
diff --git a/polygerrit-ui/app/samples/repo-command.js b/polygerrit-ui/app/samples/repo-command.js
index 6b6ed98..5aaea30 100644
--- a/polygerrit-ui/app/samples/repo-command.js
+++ b/polygerrit-ui/app/samples/repo-command.js
@@ -33,11 +33,19 @@
static get template() {
return html`
- <gr-repo-command
- title="Low-level bork"
- on-command-tap="_handleCommandTap">
- </gr-repo-command>
- `;
+ <style include="shared-styles">
+ :host {
+ display: block;
+ margin-bottom: var(--spacing-xxl);
+ }
+ </style>
+ <h3>Low-level bork</h3>
+ <gr-button
+ on-click="_handleCommandTap"
+ >
+ Low-level bork
+ </gr-button>
+ `;
}
connectedCallback() {