/**
 * @license
 * Copyright (C) 2020 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.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag';

export const htmlTemplate = html`
  <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;
      margin-right: var(--spacing-xs);
    }
    #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=""
      vertical-offset="32"
      horizontal-align="right"
      on-tap-item="_handleOverflowItemTap"
      hidden$="[[_shouldHideActions(_menuActions.*, _loading)]]"
      disabled-ids="[[_disabledMenuActions]]"
      items="[[_menuActions]]"
    >
      <iron-icon icon="gr-icons:more-vert" aria-labelledby="moreMessage">
      </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="[[_computeRebaseOnCurrent(_revisionRebaseAction)]]"
      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"
      commit-message="[[commitMessage]]"
      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>
`;
