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

<dom-module id="gr-dialog">
  <template>
    <style include="shared-styles">
      :host {
        color: var(--primary-text-color);
        display: block;
        max-height: 90vh;
      }
      .container {
        display: flex;
        flex-direction: column;
        max-height: 90vh;
      }
      header {
        border-bottom: 1px solid var(--border-color);
        flex-shrink: 0;
        font-weight: var(--font-weight-bold);
      }
      main {
        display: flex;
        flex-shrink: 1;
        width: 100%;
      }
      header,
      main,
      footer {
        padding: .5em 1.5em;
      }
      gr-button {
        margin-left: 1em;
      }
      footer {
        display: flex;
        flex-shrink: 0;
        justify-content: flex-end;
      }
      .hidden {
        display: none;
      }
    </style>
    <div class="container" on-keydown="_handleKeydown">
      <header><slot name="header"></slot></header>
      <main><slot name="main"></slot></main>
      <footer>
        <gr-button id="cancel" class$="[[_computeCancelClass(cancelLabel)]]" link on-click="_handleCancelTap">
          [[cancelLabel]]
        </gr-button>
        <gr-button id="confirm" link primary on-click="_handleConfirm" disabled="[[disabled]]">
          [[confirmLabel]]
        </gr-button>
      </footer>
    </div>
  </template>
  <script src="gr-dialog.js"></script>
</dom-module>
