<!--
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/polymer/polymer.html">

<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.html">
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../../bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
<link rel="import" href="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">

<dom-module id="gr-textarea">
  <template>
    <style>
      :host {
        display: block;
      }
      :host(.monospace) {
        font-family: var(--monospace-font-family);
      }
      gr-autocomplete {
        display: inline-block
      }
      #textarea {
        background-color: var(--background-color, none);
        width: 100%;
      }
      /*This is needed to not add a scroll bar on the side of gr-textarea
      since there is 2px of padding in iron-autogrow-textarea for the
      native textarea*/
      iron-autogrow-textarea {
        padding: 2px;
      }
      #textarea.noBorder {
        border: none;
      }
      #hiddenText {
        display: block;
        float: left;
        position: absolute;
        visibility: hidden;
        white-space: pre-wrap
      }
    </style>
    <gr-autocomplete-dropdown id="emojiSuggestions"
        suggestions="[[_suggestions]]"
        index="[[_index]]"
        move-to-root
        fixed-position="[[fixedPositionDropdown]]"
        hidden>
    </gr-autocomplete-dropdown>
    <div id="hiddenText"></div>
    <iron-autogrow-textarea
        id="textarea"
        autocomplete="[[autocomplete]]"
        placeholder=[[placeholder]]
        disabled="[[disabled]]"
        rows="[[rows]]"
        max-rows="[[maxRows]]"
        bind-value="{{text}}"
        on-bind-value-changed="_onValueChanged"></iron-autogrow-textarea>
  </template>
  <script src="gr-textarea.js"></script>
</dom-module>
