| <!-- |
| 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> |