<!--
@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="/bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
<link rel="import" href="/bower_components/iron-input/iron-input.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../shared/gr-autocomplete/gr-autocomplete.html">
<link rel="import" href="../../shared/gr-dialog/gr-dialog.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">

<dom-module id="gr-confirm-cherrypick-dialog">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      label {
        cursor: pointer;
      }
      .main {
        display: flex;
        flex-direction: column;
        width: 100%;
      }
      .main label,
      .main input[type="text"] {
        display: block;
        font: inherit;
        width: 100%;
      }
      .main .message {
        border: groove;
        width: 100%;
      }
      iron-autogrow-textarea {
        padding: 0;

        --iron-autogrow-textarea: {
          font-family: var(--monospace-font-family);
          width: 72ch;
        };
      }
    </style>
    <gr-dialog
        confirm-label="Cherry Pick"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap">
      <div class="header" slot="header">Cherry Pick Change to Another Branch</div>
      <div class="main" slot="main">
        <label for="branchInput">
          Cherry Pick to branch
        </label>
        <gr-autocomplete
            id="branchInput"
            text="{{branch}}"
            query="[[_query]]"
            placeholder="Destination branch">
        </gr-autocomplete>
        <label for="baseInput">
          Provide base commit sha1 for cherry-pick
        </label>
        <iron-input
            maxlength="40"
            placeholder="(optional)"
            bind-value="{{baseCommit}}">
          <input
              is="iron-input"
              id="baseCommitInput"
              maxlength="40"
              placeholder="(optional)"
              bind-value="{{baseCommit}}">
        </iron-input>
        <label for="messageInput">
          Cherry Pick Commit Message
        </label>
        <iron-autogrow-textarea
            id="messageInput"
            class="message"
            autocomplete="on"
            rows="4"
            max-rows="15"
            bind-value="{{message}}"></iron-autogrow-textarea>
      </div>
    </gr-dialog>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-confirm-cherrypick-dialog.js"></script>
</dom-module>
