Adds confirmation dialog for abandoning changes
Introduces gr-confirm-abandon-dialog, which is similar in implementation
and use to gr-confirm-revert-dialog as it appears in gr-change-actions.
When the user clicks the [Abandon] button on a change the new dialog
appears and presents a textarea for the user to enter their reasoning
for the abandon. The user may confirm the abandon or cancel.
Bug: Issue 4147
Change-Id: I03e9d4911fb5423dace34aba379e06f615182584
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.html b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.html
index fc2e929..0cf6372 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.html
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.html
@@ -23,6 +23,7 @@
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
+<link rel="import" href="../gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html">
<link rel="import" href="../gr-confirm-cherrypick-dialog/gr-confirm-cherrypick-dialog.html">
<link rel="import" href="../gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.html">
<link rel="import" href="../gr-confirm-revert-dialog/gr-confirm-revert-dialog.html">
@@ -103,6 +104,11 @@
on-confirm="_handleRevertDialogConfirm"
on-cancel="_handleConfirmDialogCancel"
hidden></gr-confirm-revert-dialog>
+ <gr-confirm-abandon-dialog id="confirmAbandonDialog"
+ class="confirmDialog"
+ on-confirm="_handleAbandonDialogConfirm"
+ on-cancel="_handleConfirmDialogCancel"
+ hidden></gr-confirm-abandon-dialog>
</gr-overlay>
<gr-js-api-interface id="jsAPI"></gr-js-api-interface>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
index 544ad4c..cdce129 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
@@ -152,6 +152,8 @@
this._handleRevisionAction(key);
} else if (key === ChangeActions.REVERT) {
this._showActionDialog(this.$.confirmRevertDialog);
+ } else if (key === ChangeActions.ABANDON) {
+ this._showActionDialog(this.$.confirmAbandonDialog);
} else {
this._fireAction(this._prependSlash(key), this.actions[key], false);
}
@@ -236,14 +238,16 @@
var el = this.$.confirmRevertDialog;
this.$.overlay.close();
el.hidden = false;
- this._fireAction(
- '/revert',
- this.actions.revert,
- false,
- {
- message: el.message,
- }
- );
+ this._fireAction('/revert', this.actions.revert, false,
+ {message: el.message});
+ },
+
+ _handleAbandonDialogConfirm: function() {
+ var el = this.$.confirmAbandonDialog;
+ this.$.overlay.close();
+ el.hidden = false;
+ this._fireAction('/abandon', this.actions.abandon, false,
+ {message: el.message});
},
_setLoadingOnButtonWithKey: function(key) {
diff --git a/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html b/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html
new file mode 100644
index 0000000..bb897d1
--- /dev/null
+++ b/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html
@@ -0,0 +1,62 @@
+<!--
+Copyright (C) 2016 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<link rel="import" href="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
+<link rel="import" href="../../../bower_components/polymer/polymer.html">
+<link rel="import" href="../../shared/gr-confirm-dialog/gr-confirm-dialog.html">
+
+<dom-module id="gr-confirm-abandon-dialog">
+ <template>
+ <style>
+ :host {
+ display: block;
+ }
+ :host([disabled]) {
+ opacity: .5;
+ pointer-events: none;
+ }
+ label {
+ cursor: pointer;
+ display: block;
+ width: 100%;
+ }
+ iron-autogrow-textarea {
+ font-family: var(--monospace-font-family);
+ padding: 0;
+ width: 73ch; /* Add a char to account for the border. */
+
+ --iron-autogrow-textarea {
+ border: 1px solid #ddd;
+ font-family: var(--monospace-font-family);
+ }
+ }
+ </style>
+ <gr-confirm-dialog
+ confirm-label="Abandon"
+ on-confirm="_handleConfirmTap"
+ on-cancel="_handleCancelTap">
+ <div class="header">Abandon Change</div>
+ <div class="main">
+ <label for="messageInput">Abandon Message</label>
+ <iron-autogrow-textarea
+ id="messageInput"
+ class="message"
+ bind-value="{{message}}"></iron-autogrow-textarea>
+ </div>
+ </gr-confirm-dialog>
+ </template>
+ <script src="gr-confirm-abandon-dialog.js"></script>
+</dom-module>
diff --git a/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.js b/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.js
new file mode 100644
index 0000000..b733dbf
--- /dev/null
+++ b/polygerrit-ui/app/elements/change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.js
@@ -0,0 +1,49 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+(function() {
+ 'use strict';
+
+ Polymer({
+ is: 'gr-confirm-abandon-dialog',
+
+ /**
+ * Fired when the confirm button is pressed.
+ *
+ * @event confirm
+ */
+
+ /**
+ * Fired when the cancel button is pressed.
+ *
+ * @event cancel
+ */
+
+ properties: {
+ message: {
+ type: String,
+ value: '<INSERT REASONING HERE>',
+ },
+ },
+
+ _handleConfirmTap: function(e) {
+ e.preventDefault();
+ this.fire('confirm', {reason: this.message}, {bubbles: false});
+ },
+
+ _handleCancelTap: function(e) {
+ e.preventDefault();
+ this.fire('cancel', null, {bubbles: false});
+ },
+ });
+})();