| Index: third_party/polymer/components/paper-button/paper-button.html
|
| diff --git a/third_party/polymer/components/paper-button/paper-button.html b/third_party/polymer/components/paper-button/paper-button.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..87dbef7f40d828cb8415f6f5b7f050eed0618244
|
| --- /dev/null
|
| +++ b/third_party/polymer/components/paper-button/paper-button.html
|
| @@ -0,0 +1,211 @@
|
| +<!--
|
| +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
|
| +
|
| +`paper-button` is a button containing text or an image. When the user touches
|
| +the button, a ripple effect emanates from the point of contact.
|
| +
|
| +A `paper-button` may be flat or raised. A raised button behaves like a piece
|
| +of paper resting on another sheet, and lifts up upon press. Flat buttons do
|
| +not raise up. Add the `raisedButton` attribute to make a raised button.
|
| +
|
| +Example:
|
| +
|
| + <paper-button label="flat button"></paper-button>
|
| + <paper-button label="raised button" raisedButton></paper-button>
|
| +
|
| +A button should be styled with a background color, text color, ripple color
|
| +and hover color.
|
| +
|
| +To style the background, text and hover color, apply the `background` and
|
| +`color` CSS properties to the button. To style the ripple color, apply the
|
| +`color` CSS property to the `#ripple` element in the button's shadow root:
|
| +
|
| + /* Style #my-button blue with white text and darker blue ink. */
|
| + #my-button {
|
| + background: #4285f4;
|
| + color: #fff;
|
| + }
|
| +
|
| + #my-button:hover {
|
| + background: #2a56c6;
|
| + }
|
| +
|
| + #my-button::shadow #ripple {
|
| + color: #2a56c6;
|
| + }
|
| +
|
| +@element paper-button
|
| +@extends paper-focusable
|
| +-->
|
| +
|
| +<link href="../polymer/polymer.html" rel="import">
|
| +<link href="../core-icon/core-icon.html" rel="import">
|
| +<link href="../paper-focusable/paper-focusable.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-button" extends="paper-focusable" attributes="label raisedButton iconSrc icon"
|
| +role="button">
|
| +
|
| + <template>
|
| +
|
| + <link href="paper-button.css" rel="stylesheet">
|
| +
|
| + <template if="{{raisedButton}}">
|
| + <div fit id="shadow-container">
|
| + <paper-shadow id="shadow" z="{{z}}" animated></paper-shadow>
|
| + </div>
|
| + </template>
|
| +
|
| + <div id="clip">
|
| + <!-- <div id="focusBg"></div> -->
|
| + <paper-ripple id="ripple"></paper-ripple>
|
| + <div id="content">
|
| + <template if="{{iconSrc || icon}}">
|
| + <core-icon id="icon" src="{{iconSrc}}" icon="{{icon}}"></core-icon>
|
| + </template>
|
| + <template if="{{label}}">
|
| + <span>{{label}}</span>
|
| + </template>
|
| + </div>
|
| + </div>
|
| +
|
| + </template>
|
| +
|
| + <script>
|
| + Polymer('paper-button', {
|
| +
|
| + publish: {
|
| +
|
| + /**
|
| + * The label of the button.
|
| + *
|
| + * @attribute label
|
| + * @type string
|
| + * @default ''
|
| + */
|
| + label: '',
|
| +
|
| + /**
|
| + * If true, the button will be styled as a "raised" button.
|
| + *
|
| + * @attribute raisedButton
|
| + * @type boolean
|
| + * @default false
|
| + */
|
| + raisedButton: {value: false, reflect: true},
|
| +
|
| + /**
|
| + * (optional) The URL of an image for an icon to use in the button.
|
| + * Should not use `icon` property if you are using this property.
|
| + *
|
| + * @attribute iconSrc
|
| + * @type string
|
| + * @default ''
|
| + */
|
| + iconSrc: '',
|
| +
|
| + /**
|
| + * (optional) Specifies the icon name or index in the set of icons
|
| + * available in the icon set. If using this property, load the icon
|
| + * set separately where the icon is used. Should not use `src`
|
| + * if you are using this property.
|
| + *
|
| + * @attribute icon
|
| + * @type string
|
| + * @default ''
|
| + */
|
| + icon: ''
|
| +
|
| + },
|
| +
|
| + z: 1,
|
| +
|
| + attached: function() {
|
| + if (this.textContent && !this.textContent.match(/\s+/)) {
|
| + console.warn('Using textContent to label the button is deprecated. Use the "label" property instead');
|
| + this.label = this.textContent;
|
| + }
|
| + },
|
| +
|
| + activeChanged: function() {
|
| + this.super();
|
| +
|
| + if (this.active) {
|
| + // FIXME: remove when paper-ripple can have a default 'down' state.
|
| + if (!this.lastEvent) {
|
| + var rect = this.getBoundingClientRect();
|
| + this.lastEvent = {
|
| + x: rect.left + rect.width / 2,
|
| + y: rect.top + rect.height / 2
|
| + }
|
| + }
|
| + this.$.ripple.downAction(this.lastEvent);
|
| + } else {
|
| + this.$.ripple.upAction();
|
| + }
|
| + this.adjustZ();
|
| + },
|
| +
|
| + focusedChanged: function() {
|
| + this.super();
|
| + this.adjustZ();
|
| + },
|
| +
|
| + disabledChanged: function() {
|
| + this.super();
|
| + this.adjustZ();
|
| + },
|
| +
|
| + // waitForSpillCompleted: function(callback) {
|
| + // this.async(callback, null, (this.$.ink.spillCompleted ? 0 : this.duration));
|
| + // },
|
| +
|
| + // resetInk: function() {
|
| + // this.active = false;
|
| + // this.$.ink.reset();
|
| + // },
|
| +
|
| + insideButton: function(x, y) {
|
| + var rect = this.getBoundingClientRect();
|
| + return (rect.left <= x) && (x <= rect.right) && (rect.top <= y) && (y <= rect.bottom);
|
| + },
|
| +
|
| + adjustZ: function() {
|
| + if (this.focused) {
|
| + this.classList.add('paper-shadow-animate-z-1-z-2');
|
| + } else {
|
| + this.classList.remove('paper-shadow-animate-z-1-z-2');
|
| +
|
| + if (this.active) {
|
| + this.z = 2;
|
| + } else if (this.disabled) {
|
| + this.z = 0;
|
| + } else {
|
| + this.z = 1;
|
| + }
|
| +
|
| + }
|
| + },
|
| +
|
| + downAction: function(e) {
|
| + this.super(e);
|
| + this.lastEvent = e;
|
| + },
|
| +
|
| + labelChanged: function() {
|
| + this.setAttribute('aria-label', this.label);
|
| + }
|
| +
|
| + });
|
| + </script>
|
| +</polymer-element>
|
|
|