blob: 3c2867417c6267c62e2214920089e21220ba55c4 [file] [log] [blame]
<!--
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;
position: relative;
}
:host(.monospace) {
font-family: var(--monospace-font-family);
}
#emojiSuggestions {
font-family: var(--font-family);
}
gr-autocomplete {
display: inline-block
}
#textarea {
background-color: var(--background-color, none);
width: 100%;
}
#hiddenText #emojiSuggestions {
visibility: visible;
white-space: normal;
}
/*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;
position: relative;
}
#textarea.noBorder {
border: none;
}
#hiddenText {
display: block;
float: left;
position: absolute;
visibility: hidden;
width: 100%;
white-space: pre-wrap;
}
</style>
<div id="hiddenText"></div>
<!-- When the autocomplete is open, the span is moved at the end of
hiddenText in order to correctly position the dropdown. After being moved,
it is set as the positionTarget for the emojiSuggestions dropdown. -->
<span id="caratSpan"></span>
<gr-autocomplete-dropdown
vertical-align="top"
horizontal-align="left"
dynamic-align
id="emojiSuggestions"
suggestions="[[_suggestions]]"
index="[[_index]]"
vertical-offset="[[_verticalOffset]]"
on-dropdown-closed="_resetEmojiDropdown"
on-item-selected="_handleEmojiSelect">
</gr-autocomplete-dropdown>
<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>