<!--
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">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-textarea">
  <template>
    <style include="shared-styles">
      :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]]"
        value="{{text}}"
        on-bind-value-changed="_onValueChanged"></iron-autogrow-textarea>
  </template>
  <script src="gr-textarea.js"></script>
</dom-module>
