Home | History | Annotate | Download | only in paper-dialog
      1 <!--
      2 @license
      3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
      4 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
      5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
      6 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
      7 Code distributed by Google as part of the polymer project is also
      8 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
      9 -->
     10 
     11 <link rel="import" href="../polymer/polymer.html">
     12 <link rel="import" href="../neon-animation/neon-animation-runner-behavior.html">
     13 <link rel="import" href="../paper-dialog-behavior/paper-dialog-behavior.html">
     14 <link rel="import" href="../paper-dialog-behavior/paper-dialog-shared-styles.html">
     15 <!--
     16 Material design: [Dialogs](https://www.google.com/design/spec/components/dialogs.html)
     17 
     18 `<paper-dialog>` is a dialog with Material Design styling and optional animations when it is
     19 opened or closed. It provides styles for a header, content area, and an action area for buttons.
     20 You can use the `<paper-dialog-scrollable>` element (in its own repository) if you need a scrolling
     21 content area. See `Polymer.PaperDialogBehavior` for specifics.
     22 
     23 For example, the following code implements a dialog with a header, scrolling content area and
     24 buttons.
     25 
     26     <paper-dialog>
     27       <h2>Header</h2>
     28       <paper-dialog-scrollable>
     29         Lorem ipsum...
     30       </paper-dialog-scrollable>
     31       <div class="buttons">
     32         <paper-button dialog-dismiss>Cancel</paper-button>
     33         <paper-button dialog-confirm>Accept</paper-button>
     34       </div>
     35     </paper-dialog>
     36 
     37 ### Styling
     38 
     39 See the docs for `Polymer.PaperDialogBehavior` for the custom properties available for styling
     40 this element.
     41 
     42 ### Animations
     43 
     44 Set the `entry-animation` and/or `exit-animation` attributes to add an animation when the dialog
     45 is opened or closed. See the documentation in
     46 [PolymerElements/neon-animation](https://github.com/PolymerElements/neon-animation) for more info.
     47 
     48 For example:
     49 
     50     <link rel="import" href="components/neon-animation/animations/scale-up-animation.html">
     51     <link rel="import" href="components/neon-animation/animations/fade-out-animation.html">
     52 
     53     <paper-dialog entry-animation="scale-up-animation"
     54                   exit-animation="fade-out-animation">
     55       <h2>Header</h2>
     56       <div>Dialog body</div>
     57     </paper-dialog>
     58 
     59 ### Accessibility
     60 
     61 See the docs for `Polymer.PaperDialogBehavior` for accessibility features implemented by this
     62 element.
     63 
     64 @group Paper Elements
     65 @element paper-dialog
     66 @hero hero.svg
     67 @demo demo/index.html
     68 -->
     69 
     70 <dom-module id="paper-dialog">
     71   <template>
     72     <style include="paper-dialog-shared-styles"></style>
     73     <content></content>
     74   </template>
     75 </dom-module>
     76 
     77 <script>
     78 
     79 (function() {
     80 
     81   Polymer({
     82 
     83     is: 'paper-dialog',
     84 
     85     behaviors: [
     86       Polymer.PaperDialogBehavior,
     87       Polymer.NeonAnimationRunnerBehavior
     88     ],
     89 
     90     listeners: {
     91       'neon-animation-finish': '_onNeonAnimationFinish'
     92     },
     93 
     94     _renderOpened: function() {
     95       this.cancelAnimation();
     96       if (this.withBackdrop) {
     97         this.backdropElement.open();
     98       }
     99       this.playAnimation('entry');
    100     },
    101 
    102     _renderClosed: function() {
    103       this.cancelAnimation();
    104       if (this.withBackdrop) {
    105         this.backdropElement.close();
    106       }
    107       this.playAnimation('exit');
    108     },
    109 
    110     _onNeonAnimationFinish: function() {
    111       if (this.opened) {
    112         this._finishRenderOpened();
    113       } else {
    114         this._finishRenderClosed();
    115       }
    116     }
    117 
    118   });
    119 
    120 })();
    121 
    122 </script>
    123