<!--
Copyright (C) 2016 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/gr-tooltip-behavior/gr-tooltip-behavior.html">
<link rel="import" href="../gr-button/gr-button.html">
<link rel="import" href="../gr-limited-text/gr-limited-text.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-linked-chip">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
        overflow: hidden;
      }
      .container {
        align-items: center;
        background: #eee;
        border-radius: .75em;
        display: inline-flex;
        padding: 0 .5em;
      }
      gr-button.remove:hover,
      gr-button.remove:focus {
        --gr-button: {
          color: #333;
        }
      }
      gr-button.remove {
        --gr-button: {
          border: 0;
          color: #666;
          font-size: 1.7em;
          font-weight: normal;
          height: .6em;
          line-height: .6em;
          margin-left: .15em;
          margin-top: -.05em;
          padding: 0;
          text-decoration: none;
        }
        --gr-button-hover-color: {
          color: #333;
        }
        --gr-button-hover-background-color: {
          color: #333;
        }
      }
      .transparentBackground,
      gr-button.transparentBackground {
        background-color: transparent;
      }
      :host([disabled]) {
        opacity: .6;
        pointer-events: none;
      }
    </style>
    <div class$="container [[_getBackgroundClass(transparentBackground)]]">
      <a href$="[[href]]">
        <gr-limited-text limit="[[limit]]" text="[[text]]"></gr-limited-text>
      </a>
      <gr-button
          id="remove"
          link
          hidden$="[[!removable]]"
          hidden
          class$="remove [[_getBackgroundClass(transparentBackground)]]"
          on-tap="_handleRemoveTap">×</gr-button>
    </div>
  </template>
  <script src="gr-linked-chip.js"></script>
</dom-module>
