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

<dom-module id="gr-account-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;
      }
      :host([show-avatar]) .container {
        padding-left: 0;
      }
      gr-button.remove,
      gr-button.remove:hover,
      gr-button.remove:focus {
        border-color: transparent;
        color: #333;
      }
      gr-button.remove {
        background: #eee;
        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;
      }
      :host:focus {
        border-color: transparent;
        box-shadow: none;
        outline: none;
      }
      :host:focus .container,
      :host:focus gr-button {
        background: #ccc;
      }
      .transparentBackground,
      gr-button.transparentBackground {
        background-color: transparent;
      }
    </style>
    <div class$="container [[_getBackgroundClass(transparentBackground)]]">
      <gr-account-link account="[[account]]"></gr-account-link>
      <gr-button
          id="remove"
          hidden$="[[!removable]]"
          hidden
          tabindex="-1"
          aria-label="Remove"
          class$="remove [[_getBackgroundClass(transparentBackground)]]"
          on-tap="_handleRemoveTap">×</gr-button>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-account-chip.js"></script>
</dom-module>
