<!--
@license
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="/bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html">
<link rel="import" href="../../../behaviors/fire-behavior/fire-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../gr-storage/gr-storage.html">
<link rel="import" href="../gr-button/gr-button.html">

<dom-module id="gr-editable-content">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
      }
      :host([disabled]) iron-autogrow-textarea {
        opacity: .5;
      }
      .viewer {
        background-color: var(--view-background-color);
        border: 1px solid var(--border-color);
        border-radius: var(--border-radius);
        padding: var(--spacing-m);
      }
      .editor iron-autogrow-textarea {
        background-color: var(--view-background-color);
        width: 100%;

        --iron-autogrow-textarea: {
          padding: var(--spacing-m);
          box-sizing: border-box;
          overflow-y: hidden;
          white-space: pre;
        };
      }
      .editButtons {
        display: flex;
        justify-content: space-between;
      }
    </style>
    <div class="viewer" hidden$="[[editing]]">
      <slot></slot>
    </div>
    <div class="editor" hidden$="[[!editing]]">
      <iron-autogrow-textarea
          autocomplete="on"
          bind-value="{{_newContent}}"
          disabled="[[disabled]]"></iron-autogrow-textarea>
      <div class="editButtons">
        <gr-button primary
            on-click="_handleSave"
            disabled="[[_saveDisabled]]">Save</gr-button>
        <gr-button
            on-click="_handleCancel"
            disabled="[[disabled]]">Cancel</gr-button>
      </div>
    </div>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-editable-content.js"></script>
</dom-module>
