| <!-- |
| @license |
| 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/polymer/polymer.html"> |
| |
| <link rel="import" href="../../../behaviors/fire-behavior/fire-behavior.html"> |
| <link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html"> |
| <link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html"> |
| <link rel="import" href="../../admin/gr-create-change-dialog/gr-create-change-dialog.html"> |
| <link rel="import" href="../../core/gr-navigation/gr-navigation.html"> |
| <link rel="import" href="../../core/gr-reporting/gr-reporting.html"> |
| <link rel="import" href="../../shared/gr-button/gr-button.html"> |
| <link rel="import" href="../../shared/gr-dialog/gr-dialog.html"> |
| <link rel="import" href="../../shared/gr-dropdown/gr-dropdown.html"> |
| <link rel="import" href="../../shared/gr-icons/gr-icons.html"> |
| <link rel="import" href="../../shared/gr-js-api-interface/gr-js-api-interface.html"> |
| <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-cherrypick-conflict-dialog/gr-confirm-cherrypick-conflict-dialog.html"> |
| <link rel="import" href="../gr-confirm-move-dialog/gr-confirm-move-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"> |
| <link rel="import" href="../gr-confirm-revert-submission-dialog/gr-confirm-revert-submission-dialog.html"> |
| <link rel="import" href="../gr-confirm-submit-dialog/gr-confirm-submit-dialog.html"> |
| <link rel="import" href="../../../styles/shared-styles.html"> |
| |
| <dom-module id="gr-change-actions"> |
| <template> |
| <style include="shared-styles"> |
| :host { |
| display: flex; |
| font-family: var(--font-family); |
| } |
| #actionLoadingMessage, |
| #mainContent, |
| section { |
| display: flex; |
| } |
| #actionLoadingMessage, |
| gr-button, |
| gr-dropdown { |
| /* px because don't have the same font size */ |
| margin-left: 8px; |
| } |
| #actionLoadingMessage { |
| align-items: center; |
| color: var(--deemphasized-text-color); |
| } |
| #confirmSubmitDialog .changeSubject { |
| margin: var(--spacing-l); |
| text-align: center; |
| } |
| iron-icon { |
| color: inherit; |
| height: 1.2rem; |
| margin-right: var(--spacing-xs); |
| width: 1.2rem; |
| } |
| gr-button { |
| min-height: 2.25em; |
| } |
| gr-dropdown { |
| --gr-button: { |
| min-height: 2.25em; |
| } |
| } |
| #moreActions iron-icon { |
| margin: 0; |
| } |
| #moreMessage, |
| .hidden { |
| display: none; |
| } |
| @media screen and (max-width: 50em) { |
| #mainContent { |
| flex-wrap: wrap; |
| } |
| gr-button { |
| --gr-button: { |
| padding: var(--spacing-m); |
| white-space: nowrap; |
| } |
| } |
| gr-button, |
| gr-dropdown { |
| margin: 0; |
| } |
| #actionLoadingMessage { |
| margin: var(--spacing-m); |
| text-align: center; |
| } |
| #moreMessage { |
| display: inline; |
| } |
| } |
| </style> |
| <div id="mainContent"> |
| <span |
| id="actionLoadingMessage" |
| hidden$="[[!_actionLoadingMessage]]"> |
| [[_actionLoadingMessage]]</span> |
| <section id="primaryActions" |
| hidden$="[[_shouldHideActions(_topLevelActions.*, _loading)]]"> |
| <template |
| is="dom-repeat" |
| items="[[_topLevelPrimaryActions]]" |
| as="action"> |
| <gr-button |
| link |
| title$="[[action.title]]" |
| has-tooltip="[[_computeHasTooltip(action.title)]]" |
| position-below="true" |
| data-action-key$="[[action.__key]]" |
| data-action-type$="[[action.__type]]" |
| data-label$="[[action.label]]" |
| disabled$="[[_calculateDisabled(action, _hasKnownChainState)]]" |
| on-click="_handleActionTap"> |
| <iron-icon class$="[[_computeHasIcon(action)]]" icon$="gr-icons:[[action.icon]]"></iron-icon> |
| [[action.label]] |
| </gr-button> |
| </template> |
| </section> |
| <section id="secondaryActions" |
| hidden$="[[_shouldHideActions(_topLevelActions.*, _loading)]]"> |
| <template |
| is="dom-repeat" |
| items="[[_topLevelSecondaryActions]]" |
| as="action"> |
| <gr-button |
| link |
| title$="[[action.title]]" |
| has-tooltip="[[_computeHasTooltip(action.title)]]" |
| position-below="true" |
| data-action-key$="[[action.__key]]" |
| data-action-type$="[[action.__type]]" |
| data-label$="[[action.label]]" |
| disabled$="[[_calculateDisabled(action, _hasKnownChainState)]]" |
| on-click="_handleActionTap"> |
| <iron-icon class$="[[_computeHasIcon(action)]]" icon$="gr-icons:[[action.icon]]"></iron-icon> |
| [[action.label]] |
| </gr-button> |
| </template> |
| </section> |
| <gr-button hidden$="[[!_loading]]" disabled>Loading actions...</gr-button> |
| <gr-dropdown |
| id="moreActions" |
| link |
| tabindex="0" |
| vertical-offset="32" |
| horizontal-align="right" |
| on-tap-item="_handleOveflowItemTap" |
| hidden$="[[_shouldHideActions(_menuActions.*, _loading)]]" |
| disabled-ids="[[_disabledMenuActions]]" |
| items="[[_menuActions]]"> |
| <iron-icon icon="gr-icons:more-vert"></iron-icon> |
| <span id="moreMessage">More</span> |
| </gr-dropdown> |
| </div> |
| <gr-overlay id="overlay" with-backdrop> |
| <gr-confirm-rebase-dialog id="confirmRebase" |
| class="confirmDialog" |
| change-number="[[change._number]]" |
| on-confirm="_handleRebaseConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| branch="[[change.branch]]" |
| has-parent="[[hasParent]]" |
| rebase-on-current="[[_revisionRebaseAction.rebaseOnCurrent]]" |
| hidden></gr-confirm-rebase-dialog> |
| <gr-confirm-cherrypick-dialog id="confirmCherrypick" |
| class="confirmDialog" |
| change-status="[[changeStatus]]" |
| commit-message="[[commitMessage]]" |
| commit-num="[[commitNum]]" |
| on-confirm="_handleCherrypickConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| project="[[change.project]]" |
| hidden></gr-confirm-cherrypick-dialog> |
| <gr-confirm-cherrypick-conflict-dialog id="confirmCherrypickConflict" |
| class="confirmDialog" |
| on-confirm="_handleCherrypickConflictConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| hidden></gr-confirm-cherrypick-conflict-dialog> |
| <gr-confirm-move-dialog id="confirmMove" |
| class="confirmDialog" |
| on-confirm="_handleMoveConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| project="[[change.project]]" |
| hidden></gr-confirm-move-dialog> |
| <gr-confirm-revert-dialog id="confirmRevertDialog" |
| class="confirmDialog" |
| on-confirm="_handleRevertDialogConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| hidden></gr-confirm-revert-dialog> |
| <gr-confirm-revert-submission-dialog id="confirmRevertSubmissionDialog" |
| class="confirmDialog" |
| on-confirm="_handleRevertSubmissionDialogConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| hidden></gr-confirm-revert-submission-dialog> |
| <gr-confirm-abandon-dialog id="confirmAbandonDialog" |
| class="confirmDialog" |
| on-confirm="_handleAbandonDialogConfirm" |
| on-cancel="_handleConfirmDialogCancel" |
| hidden></gr-confirm-abandon-dialog> |
| <gr-confirm-submit-dialog |
| id="confirmSubmitDialog" |
| class="confirmDialog" |
| change="[[change]]" |
| action="[[_revisionSubmitAction]]" |
| on-cancel="_handleConfirmDialogCancel" |
| on-confirm="_handleSubmitConfirm" hidden></gr-confirm-submit-dialog> |
| <gr-dialog id="createFollowUpDialog" |
| class="confirmDialog" |
| confirm-label="Create" |
| on-confirm="_handleCreateFollowUpChange" |
| on-cancel="_handleCloseCreateFollowUpChange"> |
| <div class="header" slot="header"> |
| Create Follow-Up Change |
| </div> |
| <div class="main" slot="main"> |
| <gr-create-change-dialog |
| id="createFollowUpChange" |
| branch="[[change.branch]]" |
| base-change="[[change.id]]" |
| repo-name="[[change.project]]" |
| private-by-default="[[privateByDefault]]"></gr-create-change-dialog> |
| </div> |
| </gr-dialog> |
| <gr-dialog |
| id="confirmDeleteDialog" |
| class="confirmDialog" |
| confirm-label="Delete" |
| confirm-on-enter |
| on-cancel="_handleConfirmDialogCancel" |
| on-confirm="_handleDeleteConfirm"> |
| <div class="header" slot="header"> |
| Delete Change |
| </div> |
| <div class="main" slot="main"> |
| Do you really want to delete the change? |
| </div> |
| </gr-dialog> |
| <gr-dialog |
| id="confirmDeleteEditDialog" |
| class="confirmDialog" |
| confirm-label="Delete" |
| confirm-on-enter |
| on-cancel="_handleConfirmDialogCancel" |
| on-confirm="_handleDeleteEditConfirm"> |
| <div class="header" slot="header"> |
| Delete Change Edit |
| </div> |
| <div class="main" slot="main"> |
| Do you really want to delete the edit? |
| </div> |
| </gr-dialog> |
| </gr-overlay> |
| <gr-js-api-interface id="jsAPI"></gr-js-api-interface> |
| <gr-rest-api-interface id="restAPI"></gr-rest-api-interface> |
| <gr-reporting id="reporting" category="change-actions"></gr-reporting> |
| </template> |
| <script src="gr-change-actions.js"></script> |
| </dom-module> |