<!--
    @license
    Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
    This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
    The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
    The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
    Code distributed by Google as part of the polymer project is also
    subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<!doctype html>
<html>
<head>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">

  <title>paper-dialog</title>
  <script src="../platform/platform.js"></script>
  <link href="../font-roboto/roboto.html" rel="import">
  <link href="../paper-button/paper-button.html" rel="import">
  <link rel="import" href="paper-dialog-transition.html">
  <link href="paper-dialog.html" rel="import">
  <style>
    body {
      -webkit-transform: translateZ(0);
      transform: translateZ(0);
      font-family: RobotoDraft, 'Helvetica Neue', Helvetica, Arial;
      font-size: 16px;
      color: rgba(0, 0, 0, 0.87);
    }

    paper-dialog {
      width: 50%;
      min-width: 430px;
    }

    p {
      margin-bottom: 0;
    }

    paper-dialog paper-button {
      font-weight: bold;
    }

    paper-button[autofocus] {
      color: #4285f4;
    }
  </style>
</head>
<body unresolved>
  <paper-dialog heading="Dialog" transition="paper-dialog-transition-center">
    <p>Lorem ipsum dolor sit amet, doming noster at quo, nostrud lucilius rationibus ea duo. Vim no mucius dolores. No bonorum voluptatum vis, has iudicabit consectetuer ne. Nullam sensibus vim id, et quo graeci perpetua.</p>

    <p>Id qui scripta laboramus dissentiet, verterem partiendo vim at. Stet dissentiet ut mei. Iriure facilis eloquentiam pro eu, nec an esse inciderint. In meliore abhorreant sea. Eros nostro ocurreret at nec. Cu per regione persecuti.</p>

    <p>Lorem ipsum dolor sit amet, doming noster at quo, nostrud lucilius rationibus ea duo. Vim no mucius dolores. No bonorum voluptatum vis, has iudicabit consectetuer ne. Nullam sensibus vim id, et quo graeci perpetua.</p>

    <paper-button label="More Info..." dismissive></paper-button>
    <paper-button label="Decline" affirmative></paper-button>
    <paper-button label="Accept" affirmative autofocus></paper-button>

  </paper-dialog>

  <paper-dialog heading="Dialog" transition="paper-dialog-transition-bottom">
    <p>Lorem ipsum dolor sit amet, doming noster at quo, nostrud lucilius rationibus ea duo. Vim no mucius dolores. No bonorum voluptatum vis, has iudicabit consectetuer ne. Nullam sensibus vim id, et quo graeci perpetua.</p>

    <p>Id qui scripta laboramus dissentiet, verterem partiendo vim at. Stet dissentiet ut mei. Iriure facilis eloquentiam pro eu, nec an esse inciderint. In meliore abhorreant sea. Eros nostro ocurreret at nec. Cu per regione persecuti.</p>

    <p>Lorem ipsum dolor sit amet, doming noster at quo, nostrud lucilius rationibus ea duo. Vim no mucius dolores. No bonorum voluptatum vis, has iudicabit consectetuer ne. Nullam sensibus vim id, et quo graeci perpetua.</p>

    <paper-button label="More Info..." dismissive></paper-button>
    <paper-button label="Decline" affirmative></paper-button>
    <paper-button label="Accept" affirmative autofocus></paper-button>

  </paper-dialog>

  <paper-button label="Transition A" onclick="toggleDialog('paper-dialog-transition-bottom')"></paper-button>
  <paper-button label="Transition B" onclick="toggleDialog('paper-dialog-transition-center')"></paper-button>
  <script>
    function toggleDialog(transition) {
      var dialog = document.querySelector('paper-dialog[transition=' + transition + ']');
      dialog.toggle();
    }
  </script>

</body>
</html>
