diff options
Diffstat (limited to 'catapult/third_party/polymer/components/paper-fab/paper-fab.html')
-rw-r--r-- | catapult/third_party/polymer/components/paper-fab/paper-fab.html | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/paper-fab/paper-fab.html b/catapult/third_party/polymer/components/paper-fab/paper-fab.html new file mode 100644 index 00000000..c7f05783 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-fab/paper-fab.html @@ -0,0 +1,187 @@ +<!-- +@license +Copyright (c) 2015 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 +--> + +<link rel="import" href="../polymer/polymer.html"> +<link rel="import" href="../iron-flex-layout/iron-flex-layout.html"> +<link rel="import" href="../iron-icon/iron-icon.html"> +<link rel="import" href="../paper-behaviors/paper-button-behavior.html"> +<link rel="import" href="../paper-material/paper-material-shared-styles.html"> +<link rel="import" href="../paper-styles/color.html"> +<link rel="import" href="../paper-styles/default-theme.html"> + +<!-- +Material design: [Floating Action Button](https://www.google.com/design/spec/components/buttons-floating-action-button.html) + +`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 `iron-icons` to use with this element, or provide a URL to a custom icon. +See `iron-iconset` for more information about how to use a custom icon set. + +Example: + + <link href="path/to/iron-icons/iron-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 + +The following custom properties and mixins are available for styling: + +Custom property | Description | Default +----------------|-------------|---------- +`--paper-fab-background` | The background color of the button | `--accent-color` +`--paper-fab-keyboard-focus-background` | The background color of the button when focused | `--paper-pink-900` +`--paper-fab-disabled-background` | The background color of the button when it's disabled | `--paper-grey-300` +`--paper-fab-disabled-text` | The text color of the button when it's disabled | `--paper-grey-500` +`--paper-fab` | Mixin applied to the button | `{}` +`--paper-fab-mini` | Mixin applied to a mini button | `{}` +`--paper-fab-disabled` | Mixin applied to a disabled button | `{}` +`--paper-fab-iron-icon` | Mixin applied to the iron-icon within the button | `{}` +`--paper-fab-label` | Mixin applied to the label within the button | `{}` + +@group Paper Elements +@demo demo/index.html +--> + +<dom-module id="paper-fab"> + <template strip-whitespace> + <style include="paper-material-shared-styles"> + :host { + @apply(--layout-vertical); + @apply(--layout-center-center); + + background: var(--paper-fab-background, --accent-color); + border-radius: 50%; + box-sizing: border-box; + color: var(--text-primary-color); + cursor: pointer; + height: 56px; + min-width: 0; + outline: none; + padding: 16px; + position: relative; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + width: 56px; + z-index: 0; + + /* NOTE: Both values are needed, since some phones require the value `transparent`. */ + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: transparent; + + @apply(--paper-fab); + } + + [hidden] { + display: none !important; + } + + :host([mini]) { + width: 40px; + height: 40px; + padding: 8px; + + @apply(--paper-fab-mini); + } + + :host([disabled]) { + color: var(--paper-fab-disabled-text, --paper-grey-500); + background: var(--paper-fab-disabled-background, --paper-grey-300); + + @apply(--paper-fab-disabled); + } + + iron-icon { + @apply(--paper-fab-iron-icon); + } + + span { + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-align: center; + + @apply(--paper-fab-label); + } + + :host(.keyboard-focus) { + background: var(--paper-fab-keyboard-focus-background, --paper-pink-900); + } + </style> + + <iron-icon id="icon" hidden$="{{!_computeIsIconFab(icon, src)}}" src="[[src]]" icon="[[icon]]"></iron-icon> + <span hidden$="{{_computeIsIconFab(icon, src)}}">{{label}}</span> + </template> + + <script> + Polymer({ + is: 'paper-fab', + + behaviors: [ + Polymer.PaperButtonBehavior + ], + + properties: { + /** + * The URL of an image for the icon. If the src property is specified, + * the icon property should not be. + */ + src: { + type: String, + value: '' + }, + + /** + * 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. + */ + icon: { + type: String, + value: '' + }, + + /** + * Set this to true to style this is a "mini" FAB. + */ + mini: { + type: Boolean, + value: false, + reflectToAttribute: true + }, + + /** + * The label displayed in the badge. The label is centered, and ideally + * should have very few characters. + */ + label: { + type: String, + observer: '_labelChanged' + } + }, + + _labelChanged: function() { + this.setAttribute('aria-label', this.label); + }, + + _computeIsIconFab: function(icon, src) { + return (icon.length > 0) || (src.length > 0); + } + }); + </script> +</dom-module> |