<!--
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-cherrypick-dialog">
  <template>
    <style>
      :host {
        display: block;
        width: 30em;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      label {
        cursor: pointer;
      }
      iron-autogrow-textarea {
        padding: 0;
      }
      .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%;
      }
    </style>
    <gr-confirm-dialog
        confirm-label="Cherry Pick"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap">
      <div class="header">Cherry Pick Change to Another Branch</div>
      <div class="main">
        <label for="branchInput">
          Cherry Pick to branch
        </label>
        <input is="iron-input"
            type="text"
            id="branchInput"
            bind-value="{{branch}}"
            placeholder="Destination branch">
        <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-confirm-dialog>
  </template>
  <script src="gr-confirm-cherrypick-dialog.js"></script>
</dom-module>
