<!--
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="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-copy-clipboard">
  <template>
    <style include="shared-styles">
      .text {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
        margin-bottom: .5em;
        width: 60em;
      }
      .text label {
        flex: 0 0 100%;
      }
      .copyText {
        flex-grow: 1;
        margin-right: .3em;
      }
      .hideInput {
        display: none;
      }
      input {
        font-family: var(--monospace-font-family);
        font-size: inherit;
      }
    </style>
    <div class="text">
        <label>[[title]]</label>
        <input id="input" is="iron-input"
            class$="copyText [[_computeInputClass(hideInput)]]"
            type="text"
            bind-value="[[text]]"
            on-tap="_handleInputTap"
            readonly>
        <gr-button id="button"
            link
            class="copyToClipboard"
            on-tap="_copyToClipboard">
          copy
        </gr-button>
      </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-copy-clipboard.js"></script>
</dom-module>
