UNPKG

five-bells-visualization

Version:
198 lines (158 loc) 5.24 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">Buttons</a> `paper-button` is a button. When the user touches the button, a ripple effect emanates from the point of contact. It may be flat or raised. A raised button is styled with a shadow. Example: <paper-button>flat button</paper-button> <paper-button raised>raised button</paper-button> <paper-button noink>No ripple effect</paper-button> You may use custom DOM in the button body to create a variety of buttons. For example, to create a button with an icon and some text: <paper-button> <core-icon icon="favorite"></core-icon> custom button content </paper-button> ## Styling Style the button with CSS as you would a normal DOM element. /* make #my-button green with yellow text */ #my-button { background: green; color: yellow; } 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. @element paper-button @extends paper-button-base @status unstable --> <link href="../polymer/polymer.html" rel="import"> <link href="../paper-shadow/paper-shadow.html" rel="import"> <link href="../core-a11y-keys/core-a11y-keys.html" rel="import"> <link href="paper-button-base.html" rel="import"> <polymer-element name="paper-button" extends="paper-button-base" attributes="raised recenteringTouch fill" role="button"> <template> <style> :host { display: inline-block; position: relative; box-sizing: border-box; min-width: 5.14em; margin: 0 0.29em; background: transparent; text-align: center; font: inherit; text-transform: uppercase; outline: none; border-radius: 3px; -moz-user-select: none; -ms-user-select: none; -webkit-user-select: none; user-select: none; cursor: pointer; z-index: 0; } :host([disabled]) { background: #eaeaea; color: #a8a8a8; cursor: auto; pointer-events: none; } ::content * { text-transform: inherit; } #bg, #shadow { border-radius: inherit; } #ripple { pointer-events: none; z-index: -1; } .button-content { padding: 0.7em 0.57em } polyfill-next-selector { content: '.button-content > a'; } ::content > a { height: 100%; padding: 0.7em 0.57em; margin: -0.7em -0.57em; /* flex */ -ms-flex: 1 1 0.000000001px; -webkit-flex: 1; flex: 1; -webkit-flex-basis: 0.000000001px; flex-basis: 0.000000001px; } </style> <template if="{{raised}}"> <paper-shadow id="shadow" fit animated></paper-shadow> </template> <!-- this div is needed to position the ripple behind text content --> <div class="button-content" relative layout horizontal center-center> <content></content> </div> <core-a11y-keys keys="space enter" target="{{}}" on-keys-pressed="{{_activate}}"></core-a11y-keys> </template> <script> Polymer({ publish: { /** * If true, the button will be styled with a shadow. * * @attribute raised * @type boolean * @default false */ raised: false, /** * By default the ripple emanates from where the user touched the button. * Set this to true to always center the ripple. * * @attribute recenteringTouch * @type boolean * @default false */ recenteringTouch: false, /** * By default the ripple expands to fill the button. Set this to true to * constrain the ripple to a circle within the button. * * @attribute fill * @type boolean * @default true */ fill: true }, _activate: function() { this.click(); this.fire('tap'); if (!this.pressed) { var bcr = this.getBoundingClientRect(); var x = bcr.left + (bcr.width / 2); var y = bcr.top + (bcr.height / 2); this.downAction({x: x, y: y}); var fn = function fn() { this.upAction(); this.removeEventListener('keyup', fn); }.bind(this); this.addEventListener('keyup', fn); } } }); </script> </polymer-element>