154 lines
4.2 KiB
HTML
154 lines
4.2 KiB
HTML
<!--
|
|
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
|
|
The complete set of authors may be found at http://polymer.github.io/AUTHORS
|
|
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
|
|
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
|
|
-->
|
|
|
|
<!--
|
|
@group Paper Elements
|
|
|
|
Material Design: <a href="http://www.google.com/design/spec/components/buttons.html">Buttons</a>
|
|
|
|
`paper-icon-button` is a button with an image placed at the center. When the user touches
|
|
the button, a ripple effect emanates from the center of the button.
|
|
|
|
`paper-icon-button` includes a default icon set. Use `icon` to specify which icon
|
|
from the icon set to use.
|
|
|
|
<paper-icon-button icon="menu"></paper-icon-button>
|
|
|
|
See [`core-iconset`](#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-icon-button icon="favorite"></paper-icon-button>
|
|
<paper-icon-button src="star.png"></paper-icon-button>
|
|
|
|
Styling
|
|
-------
|
|
|
|
Style the button with CSS as you would a normal DOM element. If you are using the icons
|
|
provided by `core-icons`, they will inherit the foreground color of the button.
|
|
|
|
/* make a red "favorite" button */
|
|
<paper-icon-button icon="favorite" style="color: red;"></paper-icon-button>
|
|
|
|
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-icon-button src="star.png" aria-label="star"></paper-icon-button>
|
|
|
|
@element paper-icon-button
|
|
@extends paper-button-base
|
|
@homepage github.io
|
|
-->
|
|
|
|
<link href="../polymer/polymer.html" rel="import">
|
|
<link href="../core-icon/core-icon.html" rel="import">
|
|
<link href="../core-icons/core-icons.html" rel="import">
|
|
<link href="../paper-button/paper-button-base.html" rel="import">
|
|
<link href="../paper-ripple/paper-ripple.html" rel="import">
|
|
|
|
<polymer-element name="paper-icon-button" extends="paper-button-base" attributes="src icon" role="button">
|
|
|
|
<template>
|
|
|
|
<style>
|
|
:host {
|
|
display: inline-block;
|
|
position: relative;
|
|
padding: 8px;
|
|
outline: none;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
cursor: pointer;
|
|
z-index: 0;
|
|
}
|
|
|
|
:host([disabled]) {
|
|
color: #c9c9c9;
|
|
pointer-events: none;
|
|
cursor: auto;
|
|
}
|
|
|
|
#ripple {
|
|
pointer-events: none;
|
|
z-index: -1;
|
|
}
|
|
|
|
#icon {
|
|
display: block;
|
|
pointer-events: none;
|
|
}
|
|
</style>
|
|
|
|
<!-- 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: '',
|
|
|
|
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>
|