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

<script src="../../../scripts/rootElement.js"></script>

<dom-module id="gr-alert">
  <template>
    <style include="shared-styles">
      /**
       * ALERT: DO NOT ADD TRANSITION PROPERTIES WITHOUT PROPERLY UNDERSTANDING
       * HOW THEY ARE USED IN THE CODE.
       */
      :host([toast]) {
        background-color: #333;
        bottom: 1.25rem;
        border-radius: 3px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
        color: #fff;
        left: 1.25rem;
        padding: 1em 1.5em;
        position: fixed;
        transform: translateY(5rem);
        transition: transform var(--gr-alert-transition-duration, 80ms) ease-out;
        z-index: 1000;
      }
      :host([shown]) {
        transform: translateY(0);
      }
      .text {
        display: inline-block;
        max-height: 10rem;
        max-width: 80vw;
        vertical-align: bottom;
        word-break: break-all;
      }
      .action {
        color: #a1c2fa;
        font-family: var(--font-family-bold);
        margin-left: 1em;
        text-decoration: none;
        --gr-button: {
          padding: 0;
        }
      }
    </style>
    <span class="text">[[text]]</span>
    <gr-button
        link
        class="action"
        hidden$="[[_hideActionButton]]"
        on-tap="_handleActionTap">[[actionText]]</gr-button>
  </template>
  <script src="gr-alert.js"></script>
</dom-module>

