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

<link rel="import" href="../../../styles/gr-settings-styles.html">

<dom-module id="gr-account-info">
  <template>
    <style include="gr-settings-styles"></style>
    <div class="gr-settings-styles">
      <section>
        <span class="title">ID</span>
        <span class="value">[[_account._account_id]]</span>
      </section>
      <section>
        <span class="title">Email</span>
        <span class="value">[[_account.email]]</span>
      </section>
      <section>
        <span class="title">Registered</span>
        <span class="value">
          <gr-date-formatter
              date-str="[[_account.registered_on]]"></gr-date-formatter>
        </span>
      </section>
      <section>
        <span class="title">Username</span>
        <span class="value">[[_account.username]]</span>
      </section>
      <section id="nameSection">
        <span class="title">Full Name</span>
        <span
            hidden$="[[mutable]]"
            class="value">[[_account.name]]</span>
        <span
            hidden$="[[!mutable]]"
            class="value">
          <input
              is="iron-input"
              disabled="[[_saving]]"
              on-keydown="_handleNameKeydown"
              bind-value="{{_account.name}}">
        </span>
      </section>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-account-info.js"></script>
</dom-module>
