180 lines
4.8 KiB
HTML
180 lines
4.8 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.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>
|