Home | History | Annotate | Download | only in paper-dialog
      1 <!--
      2 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
      3 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
      4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
      5 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
      6 Code distributed by Google as part of the polymer project is also
      7 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
      8 -->
      9 
     10 <!--
     11 Provides a dialog overlay.
     12 
     13 Child elements that include a `dismissive` attribute are positioned in the lower left corner of the dialog. Elements that use the `affirmative` attribute are positioned in the lower right corner.
     14 
     15 Child elements that include the `dismissive` or `affirmative` attribute will automatically toggle the dialog when clicked.
     16 
     17 One child element should have the `autofocus` attribute so that the Enter key will automatically take action. This is
     18 especially important for screen reader environments.
     19 
     20 Example:
     21 
     22     <paper-dialog heading="Title for dialog">
     23       <p>Lorem ipsum ....</p>
     24       <p>Id qui scripta ...</p>
     25       <paper-button label="More Info..." dismissive></paper-button>
     26       <paper-button label="Decline" affirmative></paper-button>
     27       <paper-button label="Accept" affirmative autofocus></paper-button>
     28     </paper-dialog>
     29 
     30 #### Transitions
     31 
     32 `<paper-dialog>` can be used with `<paper-transition>` to transition the overlay open and close.
     33 
     34 To use a transition, import `paper-dialog-transition.html` alongside paper-dialog:
     35 
     36     <link rel="import" href="paper-dialog/paper-dialog-transition.html">
     37 
     38 Then set the `transition` attribute:
     39 
     40     <paper-dialog heading="Title for dialog" transition="paper-transition-center">
     41 
     42     <paper-dialog heading="Title for dialog" transition="paper-transition-bottom">
     43 
     44 @group Paper Elements
     45 @element paper-dialog
     46 @homepage github.io
     47 -->
     48 <!--
     49 Fired when the dialog's `opened` property changes.
     50 
     51 @event core-overlay-open
     52 @param {Object} detail
     53 @param {Object} detail.opened the opened state
     54 -->
     55 <link href="../polymer/polymer.html" rel="import">
     56 <link href="../core-overlay/core-overlay.html" rel="import">
     57 <link href="../paper-shadow/paper-shadow.html" rel="import">
     58 
     59 <polymer-element name="paper-dialog" attributes="opened heading transition autoCloseDisabled backdrop layered closeSelector" role="dialog">
     60 
     61   <template>
     62 
     63     <link href="paper-dialog.css" rel="stylesheet">
     64 
     65     <div id="shadow">
     66       <paper-shadow z="3" hasPosition></paper-shadow>
     67     </div>
     68 
     69     <core-overlay id="overlay" opened="{{opened}}" autoCloseDisabled?="{{autoCloseDisabled}}" backdrop?="{{backdrop}}" layered?="{{layered}}" target="{{}}" sizingTarget="{{$.container}}" closeSelector="{{closeSelector}}" transition="{{transition}}" margin="20"></core-overlay>
     70 
     71     <div id="container" layout vertical>
     72 
     73       <div id="actions" layout horizontal>
     74         <content select="[dismissive]"></content>
     75         <div flex auto></div>
     76         <content select="[affirmative]"></content>
     77       </div>
     78 
     79       <div id="main" flex auto>
     80         <h1>{{heading}}</h1>
     81         <content></content>
     82       </div>
     83 
     84     </div>
     85 
     86   </template>
     87 
     88   <script>
     89 
     90     Polymer('paper-dialog', {
     91 
     92       /**
     93        * Set opened to true to show the dialog and to false to hide it.
     94        * A dialog may be made intially opened by setting its opened attribute.
     95 
     96        * @attribute opened
     97        * @type boolean
     98        * @default false
     99        */
    100       opened: false,
    101 
    102       /**
    103        * If true, the dialog has a backdrop darkening the rest of the screen.
    104        * The backdrop element is attached to the document body and may be styled
    105        * with the class `core-overlay-backdrop`. When opened the `core-opened`
    106        * class is applied.
    107        *
    108        * @attribute backdrop
    109        * @type boolean
    110        * @default false
    111        */
    112       backdrop: false,
    113 
    114       /**
    115        * If true, the dialog is guaranteed to display above page content.
    116        *
    117        * @attribute layered
    118        * @type boolean
    119        * @default false
    120       */
    121       layered: false,
    122 
    123       /**
    124        * By default a dialog will close automatically if the user
    125        * taps outside it or presses the escape key. Disable this
    126        * behavior by setting the `autoCloseDisabled` property to true.
    127        * @attribute autoCloseDisabled
    128        * @type boolean
    129        * @default false
    130        */
    131       autoCloseDisabled: false,
    132 
    133       /**
    134        * This property specifies a selector matching elements that should
    135        * close the dialog on tap.
    136        *
    137        * @attribute closeSelector
    138        * @type string
    139        * @default ""
    140        */
    141       closeSelector: '[dismissive],[affirmative]',
    142 
    143       /**
    144        * @attribute heading
    145        * @type string
    146        * @default ''
    147        */
    148       heading: '',
    149 
    150       /**
    151        * Set this property to the id of a <core-transition> element to specify
    152        * the transition to use when opening/closing this dialog.
    153        *
    154        * @attribute transition
    155        * @type string
    156        * @default ''
    157        */
    158       transition: '',
    159 
    160       /**
    161        * Toggle the dialog's opened state.
    162        * @method toggle
    163        */
    164       toggle: function() {
    165         this.$.overlay.toggle();
    166       },
    167 
    168       headingChanged: function() {
    169         this.setAttribute('aria-label', this.heading);
    170       }
    171 
    172     });
    173 
    174   </script>
    175 
    176 </polymer-element>
    177