<!--
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="../../shared/gr-confirm-dialog/gr-confirm-dialog.html">

<dom-module id="gr-confirm-rebase-dialog">
  <template>
    <style>
      :host {
        display: block;
        width: 30em;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      label {
        cursor: pointer;
      }
      .parentRevisionContainer label,
      .parentRevisionContainer input[type="text"] {
        display: block;
        font: inherit;
        width: 100%;
      }
      .parentRevisionContainer label {
        margin-bottom: .2em;
      }
      .clearParentContainer {
        margin: .5em 0;
      }
    </style>
    <gr-confirm-dialog
        confirm-label="Rebase"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap">
      <div class="header">Confirm rebase</div>
      <div class="main">
        <div class="parentRevisionContainer">
          <label for="parentInput">
            Parent revision (optional)
          </label>
          <input is="iron-input"
              type="text"
              id="parentInput"
              bind-value="{{base}}"
              placeholder="Change number">
        </div>
        <div class="clearParentContainer">
          <input id="clearParent"
              type="checkbox"
              on-tap="_handleClearParentTap">
          <label for="clearParent">
            Rebase on top of current branch (clear parent revision).
          </label>
        </div>
      </div>
    </gr-confirm-dialog>
  </template>
  <script src="gr-confirm-rebase-dialog.js"></script>
</dom-module>
