UNPKG

five-bells-visualization

Version:
181 lines (140 loc) 4.92 kB
<!-- 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 --> <!-- @group Paper Elements Material Design: <a href="http://www.google.com/design/spec/components/buttons.html">Button</a> `paper-fab` is a floating action button. It contains an image placed in the center and comes in two sizes: regular size and a smaller size by applying the attribute `mini`. When the user touches the button, a ripple effect emanates from the center of the button. You may import `core-icons` to use with this element, or provide an URL to a custom icon. See `core-iconset` for more information about how to use a custom icon set. Example: <link href="path/to/core-icons/core-icons.html" rel="import"> <paper-fab icon="add"></paper-fab> <paper-fab mini icon="favorite"></paper-fab> <paper-fab src="star.png"></paper-fab> Styling ------- Style the button with CSS as you would a normal DOM element. If you are using the icons provided by `core-icons`, the icon will inherit the foreground color of the button. /* make a blue "cloud" button */ <paper-fab icon="cloud" style="color: blue;"></paper-fab> By default, the ripple is the same color as the foreground at 25% opacity. You may customize the color using this selector: /* make #my-button use a blue ripple instead of foreground color */ #my-button::shadow #ripple { color: blue; } The opacity of the ripple is not customizable via CSS. Accessibility ------------- The button is accessible by default if you use the `icon` property. By default, the `aria-label` attribute will be set to the `icon` property. If you use a custom icon, you should ensure that the `aria-label` attribute is set. <paper-fab src="star.png" aria-label="star"></paper-fab> @element paper-fab @extends paper-button-base @status unstable --> <link href="../polymer/polymer.html" rel="import"> <link href="../core-icon/core-icon.html" rel="import"> <link href="../paper-button/paper-button-base.html" rel="import"> <link href="../paper-ripple/paper-ripple.html" rel="import"> <link href="../paper-shadow/paper-shadow.html" rel="import"> <polymer-element name="paper-fab" extends="paper-button-base" attributes="src icon mini" role="button"> <template> <style> :host { display: inline-block; position: relative; outline: none; -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; box-sizing: border-box; width: 56px; height: 56px; background: #d23f31; color: #fff; border-radius: 50%; padding: 16px; } :host([mini]) { width: 40px; height: 40px; padding: 8px; } :host([disabled]) { color: #c9c9c9; pointer-events: none; cursor: auto; } #ripple { pointer-events: none; z-index: -1; } #shadow { border-radius: inherit; pointer-events: none; } #icon { display: block; pointer-events: none; } </style> <template if="{{raised}}"> <paper-shadow id="shadow" fit animated></paper-shadow> </template> <!-- to position to ripple behind the icon --> <core-icon relative id="icon" src="{{src}}" icon="{{icon}}"></core-icon> </template> <script> Polymer({ publish: { /** * The URL of an image for the icon. If the src property is specified, * the icon property should not be. * * @attribute src * @type string * @default '' */ src: '', /** * Specifies the icon name or index in the set of icons available in * the icon's icon set. If the icon property is specified, * the src property should not be. * * @attribute icon * @type string * @default '' */ icon: '', /** * Set this to true to style this is a "mini" FAB. * * @attribute mini * @type boolean * @default false */ mini: false, raised: true, recenteringTouch: true, fill: false }, iconChanged: function(oldIcon) { var label = this.getAttribute('aria-label'); if (!label || label === oldIcon) { this.setAttribute('aria-label', this.icon); } } }); </script> </polymer-element>