<!--
Copyright (C) 2017 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-delete-comment-dialog">
  <template>
    <style>
      :host {
        display: block;
      }
      :host([disabled]) {
        opacity: .5;
        pointer-events: none;
      }
      .main {
        display: flex;
        flex-direction: column;
        width: 100%;
      }
      label {
        cursor: pointer;
        display: block;
        width: 100%;
      }
      iron-autogrow-textarea {
        font-family: var(--monospace-font-family);
        padding: 0;
        width: 73ch; /* Add a char to account for the border. */

        --iron-autogrow-textarea {
          border: 1px solid #ddd;
          font-family: var(--monospace-font-family);
        }
      }
    </style>
    <gr-confirm-dialog
        confirm-label="Delete"
        on-confirm="_handleConfirmTap"
        on-cancel="_handleCancelTap">
      <div class="header">Delete Comment</div>
      <div class="main">
        <label for="messageInput">Enter comment delete reason</label>
        <iron-autogrow-textarea
            id="messageInput"
            class="message"
            autocomplete="on"
            placeholder="<Insert reasoning here>"
            bind-value="{{message}}"></iron-autogrow-textarea>
      </div>
    </gr-confirm-dialog>
  </template>
  <script src="gr-confirm-delete-comment-dialog.js"></script>
</dom-module>
