/**
 * @license
 * Copyright (C) 2020 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.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag.js';

export const htmlTemplate = html`
    <style include="shared-styles">
      :host {
        color: var(--primary-text-color);
        display: block;
        max-height: 90vh;
        overflow: auto;
      }
      .container {
        display: flex;
        flex-direction: column;
        max-height: 90vh;
        padding: var(--spacing-xl);
      }
      header {
        flex-shrink: 0;
        padding-bottom: var(--spacing-xl);
      }
      main {
        display: flex;
        flex-shrink: 1;
        width: 100%;
        flex: 1;
        /* IMPORTANT: required for firefox */
        min-height: 0px;
      }
      main .overflow-container {
        flex: 1;
        overflow: auto;
      }
      footer {
        display: flex;
        flex-shrink: 0;
        justify-content: flex-end;
        padding-top: var(--spacing-xl);
      }
      gr-button {
        margin-left: var(--spacing-l);
      }
      .hidden {
        display: none;
      }
    </style>
    <div class="container" on-keydown="_handleKeydown">
      <header class="font-h3"><slot name="header"></slot></header>
      <main>
        <div class="overflow-container">
          <slot name="main"></slot>
        </div>
      </main>
      <footer>
        <slot name="footer"></slot>
        <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>
`;
