summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/shared/gr-textarea/gr-textarea.html
blob: 10c91112ac360fc73f9ac7311041a03b3317ead3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!--
@license
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(--view-background-color);
        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>