Updated useraccounts, character settings to Polymer 1
This commit is contained in:
@@ -0,0 +1,311 @@
|
||||
<!--
|
||||
@license
|
||||
Copyright (c) 2016 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="../../components/polymer/polymer.html">
|
||||
<link rel="import" href="../../components/paper-styles/default-theme.html">
|
||||
<link rel="import" href="../../components/paper-behaviors/paper-checked-element-behavior.html">
|
||||
|
||||
<!--
|
||||
Material design: [Checkbox](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-checkbox)
|
||||
|
||||
`paper-checkbox` is a button that can be either checked or unchecked. User
|
||||
can tap the checkbox to check or uncheck it. Usually you use checkboxes
|
||||
to allow user to select multiple options from a set. If you have a single
|
||||
ON/OFF option, avoid using a single checkbox and use `paper-toggle-button`
|
||||
instead.
|
||||
|
||||
Example:
|
||||
|
||||
<paper-checkbox>label</paper-checkbox>
|
||||
|
||||
<paper-checkbox checked> label</paper-checkbox>
|
||||
|
||||
### Styling
|
||||
|
||||
The following custom properties and mixins are available for styling:
|
||||
|
||||
Custom property | Description | Default
|
||||
----------------|-------------|----------
|
||||
`--paper-checkbox-unchecked-background-color` | Checkbox background color when the input is not checked | `transparent`
|
||||
`--paper-checkbox-unchecked-color` | Checkbox border color when the input is not checked | `--primary-text-color`
|
||||
`--paper-checkbox-unchecked-ink-color` | Selected/focus ripple color when the input is not checked | `--primary-text-color`
|
||||
`--paper-checkbox-checked-color` | Checkbox color when the input is checked | `--primary-color`
|
||||
`--paper-checkbox-checked-ink-color` | Selected/focus ripple color when the input is checked | `--primary-color`
|
||||
`--paper-checkbox-checkmark-color` | Checkmark color | `white`
|
||||
`--paper-checkbox-label-color` | Label color | `--primary-text-color`
|
||||
`--paper-checkbox-label-checked-color` | Label color when the input is checked | `--paper-checkbox-label-color`
|
||||
`--paper-checkbox-label-spacing` | Spacing between the label and the checkbox | `8px`
|
||||
`--paper-checkbox-label` | Mixin applied to the label | `{}`
|
||||
`--paper-checkbox-label-checked` | Mixin applied to the label when the input is checked | `{}`
|
||||
`--paper-checkbox-error-color` | Checkbox color when invalid | `--error-color`
|
||||
`--paper-checkbox-size` | Size of the checkbox | `18px`
|
||||
`--paper-checkbox-ink-size` | Size of the ripple | `48px`
|
||||
`--paper-checkbox-margin` | Margin around the checkbox container | `initial`
|
||||
`--paper-checkbox-vertical-align` | Vertical alignment of the checkbox container | `middle`
|
||||
|
||||
This element applies the mixin `--paper-font-common-base` but does not import `paper-styles/typography.html`.
|
||||
In order to apply the `Roboto` font to this element, make sure you've imported `paper-styles/typography.html`.
|
||||
|
||||
@demo demo/index.html
|
||||
-->
|
||||
|
||||
<dom-module id="paper-checkbox">
|
||||
<template strip-whitespace>
|
||||
<style>
|
||||
:host {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
--calculated-paper-checkbox-size: var(--paper-checkbox-size, 18px);
|
||||
/* -1px is a sentinel for the default and is replaced in `attached`. */
|
||||
--calculated-paper-checkbox-ink-size: var(--paper-checkbox-ink-size, -1px);
|
||||
@apply(--paper-font-common-base);
|
||||
line-height: 0;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
:host([hidden]) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
:host(:focus) {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#checkboxContainer {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: var(--calculated-paper-checkbox-size);
|
||||
height: var(--calculated-paper-checkbox-size);
|
||||
min-width: var(--calculated-paper-checkbox-size);
|
||||
margin: var(--paper-checkbox-margin, initial);
|
||||
vertical-align: var(--paper-checkbox-vertical-align, middle);
|
||||
background-color: var(--paper-checkbox-unchecked-background-color, transparent);
|
||||
}
|
||||
|
||||
#ink {
|
||||
position: absolute;
|
||||
|
||||
/* Center the ripple in the checkbox by negative offsetting it by
|
||||
* (inkWidth - rippleWidth) / 2 */
|
||||
top: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size)) / 2);
|
||||
left: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size)) / 2);
|
||||
width: var(--calculated-paper-checkbox-ink-size);
|
||||
height: var(--calculated-paper-checkbox-ink-size);
|
||||
color: var(--paper-checkbox-unchecked-ink-color, var(--primary-text-color));
|
||||
opacity: 0.6;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
:host-context([dir="rtl"]) #ink {
|
||||
right: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size)) / 2);
|
||||
left: auto;
|
||||
}
|
||||
|
||||
#ink[checked] {
|
||||
color: var(--paper-checkbox-checked-ink-color, var(--primary-color));
|
||||
}
|
||||
|
||||
#checkbox {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
height: 100%;
|
||||
border: solid 2px;
|
||||
border-color: var(--paper-checkbox-unchecked-color, var(--primary-text-color));
|
||||
border-radius: 2px;
|
||||
pointer-events: none;
|
||||
-webkit-transition: background-color 140ms, border-color 140ms;
|
||||
transition: background-color 140ms, border-color 140ms;
|
||||
}
|
||||
|
||||
/* checkbox checked animations */
|
||||
#checkbox.checked #checkmark {
|
||||
-webkit-animation: checkmark-expand 140ms ease-out forwards;
|
||||
animation: checkmark-expand 140ms ease-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes checkmark-expand {
|
||||
0% {
|
||||
-webkit-transform: scale(0, 0) rotate(45deg) translateZ(0);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) rotate(45deg) translateZ(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes checkmark-expand {
|
||||
0% {
|
||||
transform: scale(0, 0) rotate(45deg) translateZ(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1, 1) rotate(45deg) translateZ(0);
|
||||
}
|
||||
}
|
||||
|
||||
#checkbox.checked {
|
||||
background-color: var(--paper-checkbox-checked-color, var(--primary-color));
|
||||
border-color: var(--paper-checkbox-checked-color, var(--primary-color));
|
||||
}
|
||||
|
||||
#checkmark {
|
||||
position: absolute;
|
||||
width: 36%;
|
||||
height: 70%;
|
||||
border-style: solid;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right-width: calc(2/15 * var(--calculated-paper-checkbox-size));
|
||||
border-bottom-width: calc(2/15 * var(--calculated-paper-checkbox-size));
|
||||
border-color: var(--paper-checkbox-checkmark-color, white);
|
||||
-webkit-transform-origin: 97% 86%;
|
||||
transform-origin: 97% 86%;
|
||||
box-sizing: content-box; /* protect against page-level box-sizing */
|
||||
}
|
||||
|
||||
:host-context([dir="rtl"]) #checkmark {
|
||||
-webkit-transform-origin: 50% 14%;
|
||||
transform-origin: 50% 14%;
|
||||
}
|
||||
|
||||
/* label */
|
||||
#checkboxLabel {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding-left: var(--paper-checkbox-label-spacing, 8px);
|
||||
white-space: normal;
|
||||
line-height: normal;
|
||||
color: var(--paper-checkbox-label-color, var(--primary-text-color));
|
||||
@apply(--paper-checkbox-label);
|
||||
}
|
||||
|
||||
:host([checked]) #checkboxLabel {
|
||||
color: var(--paper-checkbox-label-checked-color, var(--paper-checkbox-label-color, var(--primary-text-color)));
|
||||
@apply(--paper-checkbox-label-checked);
|
||||
}
|
||||
|
||||
:host-context([dir="rtl"]) #checkboxLabel {
|
||||
padding-right: var(--paper-checkbox-label-spacing, 8px);
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#checkboxLabel[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* disabled state */
|
||||
|
||||
:host([disabled]) #checkbox {
|
||||
opacity: 0.5;
|
||||
border-color: var(--paper-checkbox-unchecked-color, var(--primary-text-color));
|
||||
}
|
||||
|
||||
:host([disabled][checked]) #checkbox {
|
||||
background-color: var(--paper-checkbox-unchecked-color, var(--primary-text-color));
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
:host([disabled]) #checkboxLabel {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
/* invalid state */
|
||||
#checkbox.invalid:not(.checked) {
|
||||
border-color: var(--paper-checkbox-error-color, var(--error-color));
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="checkboxContainer">
|
||||
<div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]">
|
||||
<div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="checkboxLabel"><content></content></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
Polymer({
|
||||
is: 'paper-checkbox',
|
||||
|
||||
behaviors: [
|
||||
Polymer.PaperCheckedElementBehavior
|
||||
],
|
||||
|
||||
hostAttributes: {
|
||||
role: 'checkbox',
|
||||
'aria-checked': false,
|
||||
tabindex: 0
|
||||
},
|
||||
|
||||
properties: {
|
||||
/**
|
||||
* Fired when the checked state changes due to user interaction.
|
||||
*
|
||||
* @event change
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fired when the checked state changes.
|
||||
*
|
||||
* @event iron-change
|
||||
*/
|
||||
ariaActiveAttribute: {
|
||||
type: String,
|
||||
value: 'aria-checked'
|
||||
}
|
||||
},
|
||||
|
||||
attached: function() {
|
||||
var inkSize = this.getComputedStyleValue('--calculated-paper-checkbox-ink-size').trim();
|
||||
// If unset, compute and set the default `--paper-checkbox-ink-size`.
|
||||
if (inkSize === '-1px') {
|
||||
var checkboxSize = parseFloat(this.getComputedStyleValue('--calculated-paper-checkbox-size').trim());
|
||||
var defaultInkSize = Math.floor((8 / 3) * checkboxSize);
|
||||
|
||||
// The checkbox and ripple need to have the same parity so that their
|
||||
// centers align.
|
||||
if (defaultInkSize % 2 !== checkboxSize % 2) {
|
||||
defaultInkSize++;
|
||||
}
|
||||
|
||||
this.customStyle['--paper-checkbox-ink-size'] = defaultInkSize + 'px';
|
||||
this.updateStyles();
|
||||
}
|
||||
},
|
||||
|
||||
_computeCheckboxClass: function(checked, invalid) {
|
||||
var className = '';
|
||||
if (checked) {
|
||||
className += 'checked ';
|
||||
}
|
||||
if (invalid) {
|
||||
className += 'invalid';
|
||||
}
|
||||
return className;
|
||||
},
|
||||
|
||||
_computeCheckmarkClass: function(checked) {
|
||||
return checked ? '' : 'hidden';
|
||||
},
|
||||
|
||||
// create ripple inside the checkboxContainer
|
||||
_createRipple: function() {
|
||||
this._rippleContainer = this.$.checkboxContainer;
|
||||
return Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this);
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
</dom-module>
|
||||
@@ -1,44 +0,0 @@
|
||||
/*
|
||||
* @license
|
||||
* 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
|
||||
*/
|
||||
|
||||
:host {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
background-color: #fff;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
padding: 0.75em 0;
|
||||
}
|
||||
|
||||
#control {
|
||||
box-sizing: border-box;
|
||||
max-height: 2em;
|
||||
color: #757575;
|
||||
border-bottom: 1px solid #757575;
|
||||
}
|
||||
|
||||
#control[selected] {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#control > div {
|
||||
padding: 0.5em 0 0.25em;
|
||||
overflow: hidden;
|
||||
/* FIXME not working for some reason */
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
core-icon {
|
||||
margin: 0.3em 0 0.2em 0.25em;
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
<!--
|
||||
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
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
`paper-dropdown-menu` works together with `paper-dropdown` and `core-menu` to
|
||||
implement a drop-down menu. The currently selected item is displayed in the
|
||||
control. If no item is selected, the `label` is displayed instead.
|
||||
|
||||
The child element with the class `dropdown` will be used as the drop-down
|
||||
menu. It should be a `paper-dropdown` or other overlay element. You should
|
||||
also provide a `core-selector` or other selector element, such as `core-menu`,
|
||||
in the drop-down. You should apply the class `menu` to the selector element.
|
||||
|
||||
Example:
|
||||
|
||||
<paper-dropdown-menu label="Your favorite pastry">
|
||||
<paper-dropdown class="dropdown">
|
||||
<core-menu class="menu">
|
||||
<paper-item>Croissant</paper-item>
|
||||
<paper-item>Donut</paper-item>
|
||||
<paper-item>Financier</paper-item>
|
||||
<paper-item>Madeleine</paper-item>
|
||||
</core-menu>
|
||||
</paper-dropdown>
|
||||
</paper-dropdown-menu>
|
||||
|
||||
This example renders a drop-down menu with 4 options.
|
||||
|
||||
@group Paper Elements
|
||||
@element paper-dropdown-menu
|
||||
@extends core-dropdown-base
|
||||
@mixins Polymer.CoreFocusable https://github.com/polymer/core-focusable
|
||||
@status unstable
|
||||
@homepage github.io
|
||||
-->
|
||||
|
||||
<!--
|
||||
Fired when an item's selection state is changed. This event is fired both
|
||||
when an item is selected or deselected. The `isSelected` detail property
|
||||
contains the selection state.
|
||||
|
||||
@event core-select
|
||||
@param {Object} detail
|
||||
@param {boolean} detail.isSelected true for selection and false for deselection
|
||||
@param {Object} detail.item the item element
|
||||
-->
|
||||
<link href="../../components/polymer/polymer.html" rel="import">
|
||||
|
||||
<link href="../../components/core-a11y-keys/core-a11y-keys.html" rel="import">
|
||||
<link href="../../components/core-dropdown/core-dropdown-base.html" rel="import">
|
||||
<link href="../../components/core-focusable/core-focusable.html" rel="import">
|
||||
<link href="../../components/core-icon/core-icon.html" rel="import">
|
||||
<link href="../../components/core-icons/core-icons.html" rel="import">
|
||||
<link href="../../components/paper-shadow/paper-shadow.html" rel="import">
|
||||
|
||||
<style shim-shadowdom>
|
||||
html /deep/ #paper-dropdown-menu-dropdown {
|
||||
margin: 12px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
html /deep/ #paper-dropdown-menu-dropdown #menu {
|
||||
padding: 8px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
html /deep/ #paper-dropdown-menu-dropdown .menu-container {
|
||||
overflow: auto;
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<polymer-element name="paper-dropdown-menu" extends="core-dropdown-base" relative layout inline horizontal center tabindex="0">
|
||||
<template>
|
||||
|
||||
<style>
|
||||
:host {
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
padding: 0.5em 0 0.25em;
|
||||
margin: 0.75em 0;
|
||||
border-bottom: 1px solid #757575;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#label:not(.selectedItem), #arrow {
|
||||
color: #757575;
|
||||
}
|
||||
|
||||
#label {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
|
||||
<core-a11y-keys target="{{}}" keys="enter space" on-keys-pressed="{{toggleOverlay}}"></core-a11y-keys>
|
||||
|
||||
<div flex auto id="label">{{selectedItemLabel || label}}</div>
|
||||
<core-icon id="arrow" icon="{{opened ? openedIcon : closedIcon}}"></core-icon>
|
||||
|
||||
<content></content>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
|
||||
(function() {
|
||||
|
||||
var p = {
|
||||
|
||||
publish: {
|
||||
|
||||
/**
|
||||
* A label for the control. The label is displayed if no item is selected.
|
||||
*
|
||||
* @attribute label
|
||||
* @type string
|
||||
* @default 'Select an item'
|
||||
*/
|
||||
label: 'Select an item',
|
||||
|
||||
/**
|
||||
* The icon to display when the drop-down is opened.
|
||||
*
|
||||
* @attribute openedIcon
|
||||
* @type string
|
||||
* @default 'arrow-drop-up'
|
||||
*/
|
||||
openedIcon: 'arrow-drop-up',
|
||||
|
||||
/**
|
||||
* The icon to display when the drop-down is closed.
|
||||
*
|
||||
* @attribute closedIcon
|
||||
* @type string
|
||||
* @default 'arrow-drop-down'
|
||||
*/
|
||||
closedIcon: 'arrow-drop-down'
|
||||
|
||||
},
|
||||
|
||||
selectedItemLabel: '',
|
||||
|
||||
overlayListeners: {
|
||||
'core-overlay-open': 'openAction',
|
||||
'core-activate': 'activateAction',
|
||||
'core-select': 'selectAction'
|
||||
},
|
||||
|
||||
activateAction: function(e) {
|
||||
this.opened = false;
|
||||
},
|
||||
|
||||
selectAction: function(e) {
|
||||
var detail = e.detail;
|
||||
if (detail.isSelected) {
|
||||
this.$.label.classList.add('selectedItem');
|
||||
this.selectedItemLabel = detail.item.label || detail.item.textContent;
|
||||
var event = new CustomEvent('core-select', { 'detail': detail });
|
||||
this.dispatchEvent(event);
|
||||
} else {
|
||||
this.$.label.classList.remove('selectedItem');
|
||||
this.selectedItemLabel = '';
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Polymer.mixin2(p, Polymer.CoreFocusable);
|
||||
Polymer(p);
|
||||
|
||||
})();
|
||||
|
||||
</script>
|
||||
</polymer-element>
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"name": "paper-dropdown",
|
||||
"private": false,
|
||||
"dependencies": {
|
||||
"polymer": "Polymer/polymer#^0.5",
|
||||
"core-animation": "Polymer/core-animation#^0.5",
|
||||
"core-collapse": "Polymer/core-collapse#^0.5",
|
||||
"core-dropdown": "Polymer/core-dropdown#^0.5",
|
||||
"core-transition": "Polymer/core-transition#^0.5",
|
||||
"core-icons": "Polymer/core-icons#^0.5",
|
||||
"paper-icon-button": "Polymer/paper-icon-button#^0.5",
|
||||
"paper-item": "Polymer/paper-item#^0.5",
|
||||
"paper-shadow": "Polymer/paper-shadow#^0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"web-component-tester": "web-component-tester#master"
|
||||
},
|
||||
"version": "0.5.6",
|
||||
"homepage": "https://github.com/Polymer/paper-dropdown",
|
||||
"_release": "0.5.6",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "0.5.6",
|
||||
"commit": "30db0c00276fd8740bc7488f58703ad9f2449e9d"
|
||||
},
|
||||
"_source": "git://github.com/Polymer/paper-dropdown.git",
|
||||
"_target": "^0.5",
|
||||
"_originalSource": "Polymer/paper-dropdown"
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
paper-dropdown
|
||||
==============
|
||||
|
||||
owner: @morethanreal
|
||||
|
||||
See the [component page](https://www.polymer-project.org/0.5/docs/elements/paper-dropdown.html) for more information.
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"name": "paper-dropdown",
|
||||
"private": false,
|
||||
"dependencies": {
|
||||
"polymer": "Polymer/polymer#^0.5",
|
||||
"core-animation": "Polymer/core-animation#^0.5",
|
||||
"core-collapse": "Polymer/core-collapse#^0.5",
|
||||
"core-dropdown": "Polymer/core-dropdown#^0.5",
|
||||
"core-transition": "Polymer/core-transition#^0.5",
|
||||
"core-icons": "Polymer/core-icons#^0.5",
|
||||
"paper-icon-button": "Polymer/paper-icon-button#^0.5",
|
||||
"paper-item": "Polymer/paper-item#^0.5",
|
||||
"paper-shadow": "Polymer/paper-shadow#^0.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"web-component-tester": "web-component-tester#master"
|
||||
},
|
||||
"version": "0.5.6"
|
||||
}
|
||||
@@ -1,456 +0,0 @@
|
||||
<!doctype 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
|
||||
-->
|
||||
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
<title>paper-dropdown</title>
|
||||
|
||||
<script src="../webcomponentsjs/webcomponents.js"></script>
|
||||
|
||||
<link href="../core-collapse/core-collapse.html" rel="import">
|
||||
<link href="../core-icons/core-icons.html" rel="import">
|
||||
<link href="../paper-icon-button/paper-icon-button.html" rel="import">
|
||||
<link href="../paper-item/paper-item.html" rel="import">
|
||||
|
||||
<link href="paper-dropdown.html" rel="import">
|
||||
|
||||
<style shim-shadowdom>
|
||||
body {
|
||||
font-family: RobotoDraft, 'Helvetica Neue', Helvetica, Arial;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
padding: 24px;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
-webkit-touch-callout: none;
|
||||
}
|
||||
|
||||
section {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
section > div {
|
||||
padding: 14px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
x-trigger {
|
||||
z-index: auto;
|
||||
}
|
||||
|
||||
html /deep/ paper-dropdown:not(.no-padding)::shadow #scroller {
|
||||
box-sizing: border-box;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.with-margin {
|
||||
margin: 12px;
|
||||
}
|
||||
|
||||
.open-below {
|
||||
top: 38px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<polymer-element name="x-trigger" extends="paper-icon-button" relative on-tap="{{toggle}}" noink>
|
||||
<template>
|
||||
<shadow></shadow>
|
||||
<content></content>
|
||||
</template>
|
||||
<script>
|
||||
Polymer({
|
||||
toggle: function() {
|
||||
if (!this.dropdown) {
|
||||
this.dropdown = this.querySelector('paper-dropdown');
|
||||
}
|
||||
this.dropdown && this.dropdown.toggle();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</polymer-element>
|
||||
|
||||
<template is="auto-binding">
|
||||
|
||||
<section>
|
||||
|
||||
<div>Absolutely positioned dropdowns</div>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown>
|
||||
halign = left
|
||||
<br>
|
||||
valign = top
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown valign="bottom">
|
||||
halign = left
|
||||
<br>
|
||||
valign = bottom
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown halign="right">
|
||||
halign = right
|
||||
<br>
|
||||
valign = top
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown class="no-padding">
|
||||
<div class="menu">
|
||||
<paper-item>Item 1</paper-item>
|
||||
<paper-item>Item 2</paper-item>
|
||||
<paper-item>Item 3</paper-item>
|
||||
</div>
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
<div>Layered dropdowns</div>
|
||||
|
||||
<button onclick="document.getElementById('collapse').toggle()">toggle core-collapse</button>
|
||||
|
||||
<br>
|
||||
|
||||
<core-collapse id="collapse">
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown layered>
|
||||
halign = left
|
||||
<br>
|
||||
valign = top
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
</core-collapse>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
<div>Scrolling and margin</div>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown>
|
||||
no margin<br>
|
||||
<br>
|
||||
<template repeat="{{countries}}">
|
||||
{{name}}<br>
|
||||
</template>
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown class="with-margin">
|
||||
with margin<br>
|
||||
<br>
|
||||
<template repeat="{{countries}}">
|
||||
{{name}}<br>
|
||||
</template>
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
||||
<div>Custom position</div>
|
||||
|
||||
<x-trigger icon="menu">
|
||||
<paper-dropdown class="open-below">
|
||||
top: 38px
|
||||
</paper-dropdown>
|
||||
</x-trigger>
|
||||
|
||||
</section>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
scope = document.querySelector('template[is=auto-binding]');
|
||||
|
||||
scope.countries = [
|
||||
{name: 'Afghanistan', code: 'AF'},
|
||||
{name: 'Åland Islands', code: 'AX'},
|
||||
{name: 'Albania', code: 'AL'},
|
||||
{name: 'Algeria', code: 'DZ'},
|
||||
{name: 'American Samoa', code: 'AS'},
|
||||
{name: 'Andorra', code: 'AD'},
|
||||
{name: 'Angola', code: 'AO'},
|
||||
{name: 'Anguilla', code: 'AI'},
|
||||
{name: 'Antarctica', code: 'AQ'},
|
||||
{name: 'Antigua and Barbuda', code: 'AG'},
|
||||
{name: 'Argentina', code: 'AR'},
|
||||
{name: 'Armenia', code: 'AM'},
|
||||
{name: 'Aruba', code: 'AW'},
|
||||
{name: 'Australia', code: 'AU'},
|
||||
{name: 'Austria', code: 'AT'},
|
||||
{name: 'Azerbaijan', code: 'AZ'},
|
||||
{name: 'Bahamas', code: 'BS'},
|
||||
{name: 'Bahrain', code: 'BH'},
|
||||
{name: 'Bangladesh', code: 'BD'},
|
||||
{name: 'Barbados', code: 'BB'},
|
||||
{name: 'Belarus', code: 'BY'},
|
||||
{name: 'Belgium', code: 'BE'},
|
||||
{name: 'Belize', code: 'BZ'},
|
||||
{name: 'Benin', code: 'BJ'},
|
||||
{name: 'Bermuda', code: 'BM'},
|
||||
{name: 'Bhutan', code: 'BT'},
|
||||
{name: 'Bolivia', code: 'BO'},
|
||||
{name: 'Bosnia and Herzegovina', code: 'BA'},
|
||||
{name: 'Botswana', code: 'BW'},
|
||||
{name: 'Bouvet Island', code: 'BV'},
|
||||
{name: 'Brazil', code: 'BR'},
|
||||
{name: 'British Indian Ocean Territory', code: 'IO'},
|
||||
{name: 'Brunei Darussalam', code: 'BN'},
|
||||
{name: 'Bulgaria', code: 'BG'},
|
||||
{name: 'Burkina Faso', code: 'BF'},
|
||||
{name: 'Burundi', code: 'BI'},
|
||||
{name: 'Cambodia', code: 'KH'},
|
||||
{name: 'Cameroon', code: 'CM'},
|
||||
{name: 'Canada', code: 'CA'},
|
||||
{name: 'Cape Verde', code: 'CV'},
|
||||
{name: 'Cayman Islands', code: 'KY'},
|
||||
{name: 'Central African Republic', code: 'CF'},
|
||||
{name: 'Chad', code: 'TD'},
|
||||
{name: 'Chile', code: 'CL'},
|
||||
{name: 'China', code: 'CN'},
|
||||
{name: 'Christmas Island', code: 'CX'},
|
||||
{name: 'Cocos (Keeling) Islands', code: 'CC'},
|
||||
{name: 'Colombia', code: 'CO'},
|
||||
{name: 'Comoros', code: 'KM'},
|
||||
{name: 'Congo', code: 'CG'},
|
||||
{name: 'Congo, The Democratic Republic of the', code: 'CD'},
|
||||
{name: 'Cook Islands', code: 'CK'},
|
||||
{name: 'Costa Rica', code: 'CR'},
|
||||
{name: 'Cote D\'Ivoire', code: 'CI'},
|
||||
{name: 'Croatia', code: 'HR'},
|
||||
{name: 'Cuba', code: 'CU'},
|
||||
{name: 'Cyprus', code: 'CY'},
|
||||
{name: 'Czech Republic', code: 'CZ'},
|
||||
{name: 'Denmark', code: 'DK'},
|
||||
{name: 'Djibouti', code: 'DJ'},
|
||||
{name: 'Dominica', code: 'DM'},
|
||||
{name: 'Dominican Republic', code: 'DO'},
|
||||
{name: 'Ecuador', code: 'EC'},
|
||||
{name: 'Egypt', code: 'EG'},
|
||||
{name: 'El Salvador', code: 'SV'},
|
||||
{name: 'Equatorial Guinea', code: 'GQ'},
|
||||
{name: 'Eritrea', code: 'ER'},
|
||||
{name: 'Estonia', code: 'EE'},
|
||||
{name: 'Ethiopia', code: 'ET'},
|
||||
{name: 'Falkland Islands (Malvinas)', code: 'FK'},
|
||||
{name: 'Faroe Islands', code: 'FO'},
|
||||
{name: 'Fiji', code: 'FJ'},
|
||||
{name: 'Finland', code: 'FI'},
|
||||
{name: 'France', code: 'FR'},
|
||||
{name: 'French Guiana', code: 'GF'},
|
||||
{name: 'French Polynesia', code: 'PF'},
|
||||
{name: 'French Southern Territories', code: 'TF'},
|
||||
{name: 'Gabon', code: 'GA'},
|
||||
{name: 'Gambia', code: 'GM'},
|
||||
{name: 'Georgia', code: 'GE'},
|
||||
{name: 'Germany', code: 'DE'},
|
||||
{name: 'Ghana', code: 'GH'},
|
||||
{name: 'Gibraltar', code: 'GI'},
|
||||
{name: 'Greece', code: 'GR'},
|
||||
{name: 'Greenland', code: 'GL'},
|
||||
{name: 'Grenada', code: 'GD'},
|
||||
{name: 'Guadeloupe', code: 'GP'},
|
||||
{name: 'Guam', code: 'GU'},
|
||||
{name: 'Guatemala', code: 'GT'},
|
||||
{name: 'Guernsey', code: 'GG'},
|
||||
{name: 'Guinea', code: 'GN'},
|
||||
{name: 'Guinea-Bissau', code: 'GW'},
|
||||
{name: 'Guyana', code: 'GY'},
|
||||
{name: 'Haiti', code: 'HT'},
|
||||
{name: 'Heard Island and Mcdonald Islands', code: 'HM'},
|
||||
{name: 'Holy See (Vatican City State)', code: 'VA'},
|
||||
{name: 'Honduras', code: 'HN'},
|
||||
{name: 'Hong Kong', code: 'HK'},
|
||||
{name: 'Hungary', code: 'HU'},
|
||||
{name: 'Iceland', code: 'IS'},
|
||||
{name: 'India', code: 'IN'},
|
||||
{name: 'Indonesia', code: 'ID'},
|
||||
{name: 'Iran, Islamic Republic Of', code: 'IR'},
|
||||
{name: 'Iraq', code: 'IQ'},
|
||||
{name: 'Ireland', code: 'IE'},
|
||||
{name: 'Isle of Man', code: 'IM'},
|
||||
{name: 'Israel', code: 'IL'},
|
||||
{name: 'Italy', code: 'IT'},
|
||||
{name: 'Jamaica', code: 'JM'},
|
||||
{name: 'Japan', code: 'JP'},
|
||||
{name: 'Jersey', code: 'JE'},
|
||||
{name: 'Jordan', code: 'JO'},
|
||||
{name: 'Kazakhstan', code: 'KZ'},
|
||||
{name: 'Kenya', code: 'KE'},
|
||||
{name: 'Kiribati', code: 'KI'},
|
||||
{name: 'Korea, Democratic People\'S Republic of', code: 'KP'},
|
||||
{name: 'Korea, Republic of', code: 'KR'},
|
||||
{name: 'Kuwait', code: 'KW'},
|
||||
{name: 'Kyrgyzstan', code: 'KG'},
|
||||
{name: 'Lao People\'S Democratic Republic', code: 'LA'},
|
||||
{name: 'Latvia', code: 'LV'},
|
||||
{name: 'Lebanon', code: 'LB'},
|
||||
{name: 'Lesotho', code: 'LS'},
|
||||
{name: 'Liberia', code: 'LR'},
|
||||
{name: 'Libyan Arab Jamahiriya', code: 'LY'},
|
||||
{name: 'Liechtenstein', code: 'LI'},
|
||||
{name: 'Lithuania', code: 'LT'},
|
||||
{name: 'Luxembourg', code: 'LU'},
|
||||
{name: 'Macao', code: 'MO'},
|
||||
{name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK'},
|
||||
{name: 'Madagascar', code: 'MG'},
|
||||
{name: 'Malawi', code: 'MW'},
|
||||
{name: 'Malaysia', code: 'MY'},
|
||||
{name: 'Maldives', code: 'MV'},
|
||||
{name: 'Mali', code: 'ML'},
|
||||
{name: 'Malta', code: 'MT'},
|
||||
{name: 'Marshall Islands', code: 'MH'},
|
||||
{name: 'Martinique', code: 'MQ'},
|
||||
{name: 'Mauritania', code: 'MR'},
|
||||
{name: 'Mauritius', code: 'MU'},
|
||||
{name: 'Mayotte', code: 'YT'},
|
||||
{name: 'Mexico', code: 'MX'},
|
||||
{name: 'Micronesia, Federated States of', code: 'FM'},
|
||||
{name: 'Moldova, Republic of', code: 'MD'},
|
||||
{name: 'Monaco', code: 'MC'},
|
||||
{name: 'Mongolia', code: 'MN'},
|
||||
{name: 'Montserrat', code: 'MS'},
|
||||
{name: 'Morocco', code: 'MA'},
|
||||
{name: 'Mozambique', code: 'MZ'},
|
||||
{name: 'Myanmar', code: 'MM'},
|
||||
{name: 'Namibia', code: 'NA'},
|
||||
{name: 'Nauru', code: 'NR'},
|
||||
{name: 'Nepal', code: 'NP'},
|
||||
{name: 'Netherlands', code: 'NL'},
|
||||
{name: 'Netherlands Antilles', code: 'AN'},
|
||||
{name: 'New Caledonia', code: 'NC'},
|
||||
{name: 'New Zealand', code: 'NZ'},
|
||||
{name: 'Nicaragua', code: 'NI'},
|
||||
{name: 'Niger', code: 'NE'},
|
||||
{name: 'Nigeria', code: 'NG'},
|
||||
{name: 'Niue', code: 'NU'},
|
||||
{name: 'Norfolk Island', code: 'NF'},
|
||||
{name: 'Northern Mariana Islands', code: 'MP'},
|
||||
{name: 'Norway', code: 'NO'},
|
||||
{name: 'Oman', code: 'OM'},
|
||||
{name: 'Pakistan', code: 'PK'},
|
||||
{name: 'Palau', code: 'PW'},
|
||||
{name: 'Palestinian Territory, Occupied', code: 'PS'},
|
||||
{name: 'Panama', code: 'PA'},
|
||||
{name: 'Papua New Guinea', code: 'PG'},
|
||||
{name: 'Paraguay', code: 'PY'},
|
||||
{name: 'Peru', code: 'PE'},
|
||||
{name: 'Philippines', code: 'PH'},
|
||||
{name: 'Pitcairn', code: 'PN'},
|
||||
{name: 'Poland', code: 'PL'},
|
||||
{name: 'Portugal', code: 'PT'},
|
||||
{name: 'Puerto Rico', code: 'PR'},
|
||||
{name: 'Qatar', code: 'QA'},
|
||||
{name: 'Reunion', code: 'RE'},
|
||||
{name: 'Romania', code: 'RO'},
|
||||
{name: 'Russian Federation', code: 'RU'},
|
||||
{name: 'RWANDA', code: 'RW'},
|
||||
{name: 'Saint Helena', code: 'SH'},
|
||||
{name: 'Saint Kitts and Nevis', code: 'KN'},
|
||||
{name: 'Saint Lucia', code: 'LC'},
|
||||
{name: 'Saint Pierre and Miquelon', code: 'PM'},
|
||||
{name: 'Saint Vincent and the Grenadines', code: 'VC'},
|
||||
{name: 'Samoa', code: 'WS'},
|
||||
{name: 'San Marino', code: 'SM'},
|
||||
{name: 'Sao Tome and Principe', code: 'ST'},
|
||||
{name: 'Saudi Arabia', code: 'SA'},
|
||||
{name: 'Senegal', code: 'SN'},
|
||||
{name: 'Serbia and Montenegro', code: 'CS'},
|
||||
{name: 'Seychelles', code: 'SC'},
|
||||
{name: 'Sierra Leone', code: 'SL'},
|
||||
{name: 'Singapore', code: 'SG'},
|
||||
{name: 'Slovakia', code: 'SK'},
|
||||
{name: 'Slovenia', code: 'SI'},
|
||||
{name: 'Solomon Islands', code: 'SB'},
|
||||
{name: 'Somalia', code: 'SO'},
|
||||
{name: 'South Africa', code: 'ZA'},
|
||||
{name: 'South Georgia and the South Sandwich Islands', code: 'GS'},
|
||||
{name: 'Spain', code: 'ES'},
|
||||
{name: 'Sri Lanka', code: 'LK'},
|
||||
{name: 'Sudan', code: 'SD'},
|
||||
{name: 'Suriname', code: 'SR'},
|
||||
{name: 'Svalbard and Jan Mayen', code: 'SJ'},
|
||||
{name: 'Swaziland', code: 'SZ'},
|
||||
{name: 'Sweden', code: 'SE'},
|
||||
{name: 'Switzerland', code: 'CH'},
|
||||
{name: 'Syrian Arab Republic', code: 'SY'},
|
||||
{name: 'Taiwan, Province of China', code: 'TW'},
|
||||
{name: 'Tajikistan', code: 'TJ'},
|
||||
{name: 'Tanzania, United Republic of', code: 'TZ'},
|
||||
{name: 'Thailand', code: 'TH'},
|
||||
{name: 'Timor-Leste', code: 'TL'},
|
||||
{name: 'Togo', code: 'TG'},
|
||||
{name: 'Tokelau', code: 'TK'},
|
||||
{name: 'Tonga', code: 'TO'},
|
||||
{name: 'Trinidad and Tobago', code: 'TT'},
|
||||
{name: 'Tunisia', code: 'TN'},
|
||||
{name: 'Turkey', code: 'TR'},
|
||||
{name: 'Turkmenistan', code: 'TM'},
|
||||
{name: 'Turks and Caicos Islands', code: 'TC'},
|
||||
{name: 'Tuvalu', code: 'TV'},
|
||||
{name: 'Uganda', code: 'UG'},
|
||||
{name: 'Ukraine', code: 'UA'},
|
||||
{name: 'United Arab Emirates', code: 'AE'},
|
||||
{name: 'United Kingdom', code: 'GB'},
|
||||
{name: 'United States', code: 'US'},
|
||||
{name: 'United States Minor Outlying Islands', code: 'UM'},
|
||||
{name: 'Uruguay', code: 'UY'},
|
||||
{name: 'Uzbekistan', code: 'UZ'},
|
||||
{name: 'Vanuatu', code: 'VU'},
|
||||
{name: 'Venezuela', code: 'VE'},
|
||||
{name: 'Viet Nam', code: 'VN'},
|
||||
{name: 'Virgin Islands, British', code: 'VG'},
|
||||
{name: 'Virgin Islands, U.S.', code: 'VI'},
|
||||
{name: 'Wallis and Futuna', code: 'WF'},
|
||||
{name: 'Western Sahara', code: 'EH'},
|
||||
{name: 'Yemen', code: 'YE'},
|
||||
{name: 'Zambia', code: 'ZM'},
|
||||
{name: 'Zimbabwe', code: 'ZW'}
|
||||
];
|
||||
|
||||
scope.pastries = [
|
||||
'Apple fritter',
|
||||
'Croissant',
|
||||
'Donut',
|
||||
'Financier',
|
||||
'Jello',
|
||||
'Madeleine',
|
||||
'Pound cake',
|
||||
'Pretzel',
|
||||
'Sfogliatelle'
|
||||
];
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,22 +0,0 @@
|
||||
<!doctype 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
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<script src="../webcomponentsjs/webcomponents.js"></script>
|
||||
<link rel="import" href="../core-component-page/core-component-page.html">
|
||||
|
||||
</head>
|
||||
<body unresolved>
|
||||
|
||||
<core-component-page sources='["paper-dropdown.html","paper-dropdown-transition.html"]'></core-component-page>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
/* 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 */
|
||||
|
||||
:host(.core-transition) #ripple,
|
||||
:host(.core-transition) #background {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
:host(.core-transition) #scroller {
|
||||
opacity: 0;
|
||||
}
|
||||
@@ -1,179 +0,0 @@
|
||||
<!--
|
||||
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
|
||||
-->
|
||||
<!--
|
||||
|
||||
`paper-dropdown-transition` is a transition for `paper-dropdown`.
|
||||
|
||||
Add the class `menu` to a `core-selector` child of the `paper-dropdown` to
|
||||
enable the optional list cascade transition.
|
||||
|
||||
@group Paper Elements
|
||||
@class paper-dropdown-transition
|
||||
@extends core-transition-css
|
||||
@status unstable
|
||||
-->
|
||||
<link href="../../components/polymer/polymer.html" rel="import">
|
||||
<link href="../../components/core-transition/core-transition-css.html" rel="import">
|
||||
<link href="../../components/core-animation/web-animations.html" rel="import">
|
||||
|
||||
<polymer-element name="paper-dropdown-transition" extends="core-transition-css">
|
||||
<template>
|
||||
<link href="paper-dropdown-transition.css" rel="stylesheet" no-shim>
|
||||
</template>
|
||||
<script>
|
||||
Polymer('paper-dropdown-transition', {
|
||||
|
||||
publish: {
|
||||
|
||||
/**
|
||||
* The duration of the transition in ms. You can also set the duration by
|
||||
* setting a `duration` attribute on the target:
|
||||
*
|
||||
* <paper-dropdown duration="1000"></paper-dropdown>
|
||||
*
|
||||
* @attribute duration
|
||||
* @type number
|
||||
* @default 500
|
||||
*/
|
||||
duration: 350
|
||||
|
||||
},
|
||||
|
||||
setup: function(node) {
|
||||
this.super(arguments);
|
||||
|
||||
var to = {
|
||||
'top': '0%',
|
||||
'left': '0%',
|
||||
'bottom': '100%',
|
||||
'right': '100%'
|
||||
};
|
||||
|
||||
var bg = node.$.background;
|
||||
bg.style.webkitTransformOrigin = to[node.halign] + ' ' + to[node.valign];
|
||||
bg.style.transformOrigin = to[node.halign] + ' ' + to[node.valign];
|
||||
},
|
||||
|
||||
transitionOpened: function(node, opened) {
|
||||
this.super(arguments);
|
||||
|
||||
if (opened) {
|
||||
if (this.player) {
|
||||
this.player.cancel();
|
||||
}
|
||||
|
||||
var duration = Number(node.getAttribute('duration')) || this.duration;
|
||||
|
||||
var anims = [];
|
||||
|
||||
var size = node.getBoundingClientRect();
|
||||
|
||||
var ink = node.$.ripple;
|
||||
// var offset = 40 / Math.max(size.width, size.height);
|
||||
var offset = 0.2;
|
||||
anims.push(new Animation(ink, [{
|
||||
'opacity': 0.9,
|
||||
'transform': 'scale(0)',
|
||||
}, {
|
||||
'opacity': 0.9,
|
||||
'transform': 'scale(1)'
|
||||
}], {
|
||||
duration: duration * offset,
|
||||
}));
|
||||
|
||||
// XXX: cancel() seems not to be working until chrome 41 so set the opacity for the
|
||||
// background here to prevent a flash.
|
||||
anims.push(new Animation(node.$.background, [{
|
||||
'opacity': 0,
|
||||
'transform': 'scale(0)'
|
||||
}, {
|
||||
'opacity': 0,
|
||||
'transform': 'scale(0)'
|
||||
}], {
|
||||
duration: 0,
|
||||
delay: 0,
|
||||
fill: 'forwards'
|
||||
}));
|
||||
|
||||
var bg = node.$.background;
|
||||
var sx = 40 / size.width;
|
||||
var sy = 40 / size.height;
|
||||
anims.push(new Animation(bg, [{
|
||||
'opacity': 0.9,
|
||||
'transform': 'scale(' + sx + ',' + sy + ')',
|
||||
}, {
|
||||
'opacity': 1,
|
||||
'transform': 'scale(' + Math.max(sx, 0.95) + ',' + Math.max(sy, 0.5) + ')'
|
||||
}, {
|
||||
'opacity': 1,
|
||||
'transform': 'scale(1, 1)'
|
||||
}], {
|
||||
delay: duration * offset,
|
||||
duration: duration * (1 - offset),
|
||||
fill: 'forwards'
|
||||
}));
|
||||
|
||||
var menu = node.querySelector('.menu');
|
||||
if (menu) {
|
||||
var items = menu.items || menu.children.array();
|
||||
var itemDelay = offset + (1 - offset) / 2;
|
||||
var itemDuration = duration * (1 - itemDelay) / items.length;
|
||||
var reverse = this.valign === 'bottom';
|
||||
|
||||
items.forEach(function(item, i) {
|
||||
anims.push(new Animation(item, [{
|
||||
'opacity': 0
|
||||
}, {
|
||||
'opacity': 1
|
||||
}], {
|
||||
delay: duration * itemDelay + itemDuration * (reverse ? items.length - 1 - i : i),
|
||||
duration: itemDuration,
|
||||
fill: 'both'
|
||||
}));
|
||||
}.bind(this));
|
||||
|
||||
anims.push(new Animation(node.$.scroller, [{
|
||||
'opacity': 1
|
||||
}, {
|
||||
'opacity': 1
|
||||
}], {
|
||||
delay: duration * itemDelay,
|
||||
duration: itemDuration * items.length,
|
||||
fill: 'both'
|
||||
}));
|
||||
|
||||
} else {
|
||||
anims.push(new Animation(node.$.scroller, [{
|
||||
'opacity': 0
|
||||
}, {
|
||||
'opacity': 1
|
||||
}], {
|
||||
delay: duration * (offset + (1 - offset) / 2),
|
||||
duration: duration * 0.5,
|
||||
fill: 'both'
|
||||
}));
|
||||
}
|
||||
|
||||
var group = new AnimationGroup(anims/*, {
|
||||
easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
|
||||
}*/);
|
||||
this.player = document.timeline.play(group);
|
||||
this.player.onfinish = function() {
|
||||
this.fire('core-transitionend', this, node);
|
||||
}.bind(this);
|
||||
|
||||
} else {
|
||||
this.fire('core-transitionend', this, node);
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
</polymer-element>
|
||||
|
||||
<paper-dropdown-transition id="paper-dropdown-transition"></paper-dropdown-transition>
|
||||
@@ -1,115 +0,0 @@
|
||||
<!--
|
||||
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
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
`paper-dropdown` is a `core-dropdown` with a `paper-shadow`. By default, it
|
||||
is animated on open with `paper-dropdown-transition`. Use this element with
|
||||
`paper-dropdown-menu` or `paper-menu-button` to implement UI controls that
|
||||
open a drop-down.
|
||||
|
||||
Example:
|
||||
|
||||
<paper-dropdown>
|
||||
Hi!
|
||||
</paper-dropdown>
|
||||
|
||||
Theming
|
||||
-------
|
||||
|
||||
Style the background color of the dropdown with these selectors:
|
||||
|
||||
paper-dropdown::shadow #ripple,
|
||||
paper-dropdown::shadow #background {
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
@group Paper Elements
|
||||
@element paper-dropdown
|
||||
@extends core-dropdown
|
||||
@status unstable
|
||||
-->
|
||||
|
||||
<link href="../../components/polymer/polymer.html" rel="import">
|
||||
<link href="../../components/core-dropdown/core-dropdown.html" rel="import">
|
||||
<link href="../../components/paper-shadow/paper-shadow.html" rel="import">
|
||||
|
||||
<!--<link href="paper-dropdown-transition.html" rel="import">-->
|
||||
|
||||
<style shim-shadowdom>
|
||||
html /deep/ paper-dropdown {
|
||||
position: absolute;
|
||||
overflow: visible;
|
||||
min-height: 40px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<polymer-element name="paper-dropdown" extends="core-dropdown">
|
||||
<template>
|
||||
|
||||
<style>
|
||||
#ripple {
|
||||
background-color: #fff;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.26);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
:host([halign=right]) #ripple {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
:host([valign=bottom]) #ripple {
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#background {
|
||||
background-color: #fff;
|
||||
border-radius: inherit;
|
||||
}
|
||||
|
||||
#scroller {
|
||||
overflow: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="ripple"></div>
|
||||
|
||||
<div id="background" fit>
|
||||
<paper-shadow fit></paper-shadow>
|
||||
</div>
|
||||
|
||||
<div id="scroller" relative>
|
||||
<content></content>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
|
||||
Polymer({
|
||||
publish: { //Chrome 52 breaks this
|
||||
// transition: 'paper-dropdown-transition'
|
||||
},
|
||||
ready: function() {
|
||||
this.super();
|
||||
this.sizingTarget = this.$.scroller;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</polymer-element>
|
||||
@@ -1,83 +0,0 @@
|
||||
<link rel="import" href="/components/polymer/polymer.html">
|
||||
|
||||
|
||||
<polymer-element name="swipe-detect" attributes="threshold">
|
||||
|
||||
<template>
|
||||
|
||||
<div id="swipeDetector" class="swipeDetector" touch-action="pan-y">
|
||||
<content></content>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
'use strict';
|
||||
|
||||
var isWebkit = document.body.style.webkitTransform !== undefined;
|
||||
|
||||
Polymer({
|
||||
|
||||
setupEventHandlers : function(){
|
||||
this.setupTrackStartEventHandler();
|
||||
this.setupTrackEventHandler();
|
||||
this.setupTrackEndEventHandler();
|
||||
},
|
||||
|
||||
setupTrackStartEventHandler : function(){
|
||||
PolymerGestures.addEventListener(this, "trackstart", function(event){
|
||||
//tracking started
|
||||
});
|
||||
},
|
||||
|
||||
setupTrackEventHandler : function(){
|
||||
PolymerGestures.addEventListener(this, "track", function(event){
|
||||
var userIsSwipingLeftwards = (event.dx < 0);
|
||||
var userIsSwipingRightwards = (event.dx > 0);
|
||||
//tracking events fired
|
||||
});
|
||||
},
|
||||
|
||||
setupTrackEndEventHandler : function(){
|
||||
PolymerGestures.addEventListener(this, "trackend", function(event){
|
||||
var userIsSwipingLeftwards = (event.dx < 0);
|
||||
var userIsSwipingRightwards = (event.dx > 0);
|
||||
|
||||
var thresholdWasCrossed = (Math.abs(event.dx) / this.getBoundingClientRect().width) > this.threshold;
|
||||
|
||||
if (thresholdWasCrossed){
|
||||
if (userIsSwipingRightwards){
|
||||
$(this).trigger("swiperight")
|
||||
}
|
||||
if (userIsSwipingLeftwards){
|
||||
$(this).trigger("swipeleft")
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
publish: {
|
||||
/**
|
||||
* Specifies the threshold the user must swipe in order to
|
||||
* cause a page transition.
|
||||
* Only accepts values between 0 and 1.
|
||||
* @attribute threshold
|
||||
* @default 0.3
|
||||
* @type Number
|
||||
*/
|
||||
threshold: 0.3,
|
||||
},
|
||||
|
||||
ready: function(){
|
||||
this.setupEventHandlers();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</polymer-element>
|
||||
Reference in New Issue
Block a user