polymer-paper-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +69 -0
  3. data/Rakefile +1 -0
  4. data/app/assets/components/core/animation/web-animations.html.erb +1 -0
  5. data/app/assets/components/core/animation/web-animations.js +5666 -0
  6. data/app/assets/components/core/icon/core-icon.css +25 -0
  7. data/app/assets/components/core/icon/core-icon.html.erb +126 -0
  8. data/app/assets/components/core/iconset/core-iconset.html.erb +236 -0
  9. data/app/assets/components/core/input/core-input.css +35 -0
  10. data/app/assets/components/core/input/core-input.html.erb +385 -0
  11. data/app/assets/components/core/list/core-list.css +20 -0
  12. data/app/assets/components/core/list/core-list.html.erb +403 -0
  13. data/app/assets/components/core/media-query/core-media-query.html +86 -0
  14. data/app/assets/components/core/menu/core-menu.css +18 -0
  15. data/app/assets/components/core/menu/core-menu.html.erb +62 -0
  16. data/app/assets/components/core/menu/core-submenu.css +29 -0
  17. data/app/assets/components/core/menu/core-submenu.html.erb +106 -0
  18. data/app/assets/components/core/meta/core-meta.html +143 -0
  19. data/app/assets/components/core/overlay/core-key-helper.html +17 -0
  20. data/app/assets/components/core/overlay/core-overlay-layer.html +112 -0
  21. data/app/assets/components/core/overlay/core-overlay.html.erb +661 -0
  22. data/app/assets/components/core/range/core-range.html +106 -0
  23. data/app/assets/components/core/selection/core-selection.html +148 -0
  24. data/app/assets/components/core/selector/core-selector.html.erb +423 -0
  25. data/app/assets/components/core/style/core-style.html +386 -0
  26. data/app/assets/components/core/transition/core-transition-css.html.erb +76 -0
  27. data/app/assets/components/core/transition/core-transition-overlay.css +46 -0
  28. data/app/assets/components/core/transition/core-transition.html.erb +44 -0
  29. data/app/assets/components/paper-button/paper-button.css +115 -0
  30. data/app/assets/components/paper-button/paper-button.html.erb +210 -0
  31. data/app/assets/components/paper-checkbox/paper-checkbox.css +262 -0
  32. data/app/assets/components/paper-checkbox/paper-checkbox.html.erb +104 -0
  33. data/app/assets/components/paper-dialog/paper-dialog-transition.css +59 -0
  34. data/app/assets/components/paper-dialog/paper-dialog-transition.html.erb +27 -0
  35. data/app/assets/components/paper-dialog/paper-dialog.css +0 -0
  36. data/app/assets/components/paper-dialog/paper-dialog.html.erb +176 -0
  37. data/app/assets/components/paper-fab/paper-fab.css +27 -0
  38. data/app/assets/components/paper-fab/paper-fab.html.erb +55 -0
  39. data/app/assets/components/paper-focusable/paper-focusable.html +144 -0
  40. data/app/assets/components/paper-icon-button/paper-icon-button.css +17 -0
  41. data/app/assets/components/paper-icon-button/paper-icon-button.html.erb +87 -0
  42. data/app/assets/components/paper-input/error-100.png +0 -0
  43. data/app/assets/components/paper-input/error-200.png +0 -0
  44. data/app/assets/components/paper-input/paper-input.html.erb +398 -0
  45. data/app/assets/components/paper-input/paper-input.scss +203 -0
  46. data/app/assets/components/paper-item/paper-item.css +30 -0
  47. data/app/assets/components/paper-item/paper-item.html.erb +103 -0
  48. data/app/assets/components/paper-menu-button/paper-menu-button-overlay.html.erb +86 -0
  49. data/app/assets/components/paper-menu-button/paper-menu-button-transition.css +19 -0
  50. data/app/assets/components/paper-menu-button/paper-menu-button-transition.html.erb +118 -0
  51. data/app/assets/components/paper-menu-button/paper-menu-button.css +86 -0
  52. data/app/assets/components/paper-menu-button/paper-menu-button.html.erb +128 -0
  53. data/app/assets/components/paper-progress/paper-progress.css +35 -0
  54. data/app/assets/components/paper-progress/paper-progress.html.erb +98 -0
  55. data/app/assets/components/paper-radio-button/paper-radio-button.css +98 -0
  56. data/app/assets/components/paper-radio-button/paper-radio-button.html.erb +148 -0
  57. data/app/assets/components/paper-radio-group/paper-radio-group.html.erb +68 -0
  58. data/app/assets/components/paper-ripple/paper-ripple.html +426 -0
  59. data/app/assets/components/paper-shadow/paper-shadow.css +81 -0
  60. data/app/assets/components/paper-shadow/paper-shadow.html.erb +212 -0
  61. data/app/assets/components/paper-slider/paper-slider.css +193 -0
  62. data/app/assets/components/paper-slider/paper-slider.html.erb +310 -0
  63. data/app/assets/components/paper-tabs/paper-tab.css +49 -0
  64. data/app/assets/components/paper-tabs/paper-tab.html.erb +66 -0
  65. data/app/assets/components/paper-tabs/paper-tabs.css +57 -0
  66. data/app/assets/components/paper-tabs/paper-tabs.html.erb +127 -0
  67. data/app/assets/components/paper-toast/paper-toast.css +0 -0
  68. data/app/assets/components/paper-toast/paper-toast.html.erb +258 -0
  69. data/app/assets/components/paper-toggle-button/paper-toggle-button.css +61 -0
  70. data/app/assets/components/paper-toggle-button/paper-toggle-button.html.erb +125 -0
  71. data/lib/polymer-paper-rails/engine.rb +4 -0
  72. data/lib/polymer-paper-rails/version.rb +3 -0
  73. data/lib/polymer-paper-rails.rb +2 -0
  74. metadata +158 -0
@@ -0,0 +1,203 @@
1
+ :host {
2
+ display: inline-block;
3
+ outline: none;
4
+ text-align: inherit;
5
+ color: #757575;
6
+ }
7
+ :host(:hover) {
8
+ cursor: text;
9
+ }
10
+
11
+ #container {
12
+ position: relative;
13
+ }
14
+
15
+ #inputClone,
16
+ #minInputHeight,
17
+ #maxInputHeight {
18
+ position: absolute;
19
+ top: 0;
20
+ left: 0;
21
+ visibility: hidden;
22
+ padding: 0.5em 0;
23
+ }
24
+
25
+ :host /deep/ input,
26
+ :host /deep/ textarea {
27
+ font: inherit;
28
+ color: #000;
29
+ padding: 0;
30
+ /* Important to use margin here so the margin remains visible
31
+ * when textarea scrolls internally. */
32
+ margin: 0.5em 0;
33
+ background-color: transparent;
34
+ border: none;
35
+ outline: none;
36
+ width: 100%;
37
+ }
38
+
39
+ .host /deep/ textarea {
40
+ resize: none;
41
+ }
42
+
43
+ #floatedLabel {
44
+ font-size: 0.75em;
45
+ background: transparent;
46
+ white-space: nowrap;
47
+ }
48
+ #floatedLabel.hidden {
49
+ visibility: hidden;
50
+ }
51
+ #floatedLabel.focused {
52
+ visibility: visible;
53
+ }
54
+
55
+ #label {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ right: 0;
60
+ bottom: 0;
61
+ width: 100%;
62
+ padding: 0.5em 0;
63
+ background: transparent;
64
+ -webkit-transform-origin: 0% 0%;
65
+ transform-origin: 0% 0%;
66
+ }
67
+ #label.hidden {
68
+ display: none;
69
+ }
70
+ #label.animating {
71
+ /* TODO: transforms are unprefixed in M36/ Remove when stable. */
72
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
73
+ transition: transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
74
+ }
75
+
76
+ #labelSpan {
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ white-space: nowrap;
80
+ display: inline-block;
81
+ max-width: 100%;
82
+ }
83
+
84
+ #errorContainer {
85
+ visibility: hidden;
86
+ display: -webkit-flex;
87
+ display: flex;
88
+ -webkit-align-items: center;
89
+ align-items: center;
90
+ }
91
+
92
+ :host(.invalid) #errorContainer {
93
+ visibility: visible;
94
+ }
95
+
96
+ #error {
97
+ -webkit-flex: 1;
98
+ flex: 1;
99
+ font-size: 0.75em;
100
+ padding: 0.5em 0;
101
+ }
102
+
103
+ #errorIcon {
104
+ background-image: image-url('paper-input/error-100.png');
105
+ background-size: 24px 24px;
106
+ height: 24px;
107
+ width: 24px;
108
+ }
109
+
110
+
111
+ @media (min-resolution: 2dppx) {
112
+ #errorIcon {
113
+ background-image: image-url('paper-input/error-200.png');
114
+ background-size: 24px 24px;
115
+ }
116
+ }
117
+
118
+ #underlineContainer {
119
+ position: absolute;
120
+ left: 0;
121
+ right: 0;
122
+ bottom: -1px;
123
+ }
124
+
125
+ :host([multiline]) #underlineContainer {
126
+ bottom: auto;
127
+ }
128
+
129
+ :host([multiline]) #underlineContainer.animating {
130
+ -webkit-transition: top 0.2s ease-in;
131
+ transition: top 0.2s ease-in;
132
+ }
133
+
134
+ #underline {
135
+ height: 1px;
136
+ background: #757575;
137
+ border-bottom-color: #757575;
138
+ }
139
+
140
+ :host([disabled]) #underline {
141
+ border-bottom: 1px dashed;
142
+ height: 0px;
143
+ background: transparent;
144
+ }
145
+
146
+ #underlineHighlight {
147
+ position: absolute;
148
+ left: 0;
149
+ right: 0;
150
+ bottom: 0;
151
+ height: 2px;
152
+ -webkit-transform: scale(0,2);
153
+ transform: scale(0,2);
154
+ }
155
+ #underlineHighlight.pressed {
156
+ -webkit-transform: scale(0.1,2);
157
+ transform: scale(0.1,2);
158
+ /* TODO: transforms are unprefixed in M36/ Remove when stable. */
159
+ -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.2, 0, 0.03, 1);
160
+ transition: transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
161
+ }
162
+ #underlineHighlight.animating {
163
+ /* TODO: transforms are unprefixed in M36/ Remove when stable. */
164
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
165
+ transition: transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
166
+ }
167
+ #underlineHighlight.focused {
168
+ -webkit-transform: scale(1);
169
+ transform: scale(1);
170
+ }
171
+
172
+ #caret {
173
+ display: none;
174
+ position: absolute;
175
+ top: 0;
176
+ left: 0;
177
+ right: 0;
178
+ bottom: 0;
179
+ opacity: 0;
180
+ -webkit-transform-origin-x: 0%;
181
+ transform-origin-x: 0%;
182
+ -webkit-transform: scaleX(1) translateX(10%);
183
+ transform: scaleX(1) translateX(10%);
184
+ }
185
+ #caret.animating {
186
+ display: block;
187
+ /* TODO: transforms are unprefixed in M36/ Remove when stable. */
188
+ -webkit-transition: -webkit-transform 0.2s ease-out, opacity 0.2s ease-out;
189
+ transition: transform 0.3s cubic-bezier(0.2, 0, 0.03, 1);
190
+ }
191
+ #caret.focused {
192
+ display: block;
193
+ opacity: 0.75;
194
+ -webkit-transform: scaleX(0) translateX(0);
195
+ transform: scaleX(0) translateX(0);
196
+ }
197
+ #caretInner {
198
+ position: absolute;
199
+ top: 0.6em;
200
+ left: 0;
201
+ height: 1.2em;
202
+ width: 25%;
203
+ }
@@ -0,0 +1,30 @@
1
+ html /deep/ paper-item {
2
+ display: block;
3
+ position: relative;
4
+ -webkit-user-select: none;
5
+ user-select: none;
6
+ cursor: pointer;
7
+ height: 36px;
8
+ padding: 0 12px;
9
+ }
10
+
11
+ html /deep/ paper-item::shadow #ripple {
12
+ position: absolute;
13
+ top: 0;
14
+ left: 0;
15
+ bottom: 0;
16
+ right: 0;
17
+ pointer-events: none;
18
+ }
19
+
20
+ html /deep/ paper-item::shadow #icon {
21
+ margin-right: 8px;
22
+ }
23
+
24
+ html /deep/ paper-item::shadow ::content > a {
25
+ position: absolute;
26
+ top: 0;
27
+ right: 0;
28
+ bottom: 0;
29
+ left: 0;
30
+ }
@@ -0,0 +1,103 @@
1
+ <!--
2
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
+ Code distributed by Google as part of the polymer project is also
7
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
+ -->
9
+
10
+ <!--
11
+ @group Paper Elements
12
+
13
+ `paper-item` is a list-item object for use in menus. It may contain and icon and/or
14
+ a text label.
15
+
16
+ Example:
17
+
18
+ <core-menu>
19
+ <paper-item icon="refresh" label="Refresh"></paper-item>
20
+ <paper-item label="Help"></paper-item>
21
+ <paper-item label="Sign Out"></paper-item>
22
+ </core-menu>
23
+
24
+ To use as a link, put an `&lt;a&gt;` element in the item.
25
+
26
+ Example:
27
+
28
+ <paper-item icon="home" label="Home">
29
+ <a href="http://www.polymer-project.org"></a>
30
+ </paper-item>
31
+
32
+ @class paper-item
33
+ -->
34
+
35
+ <%= html_import_tag "core/icon/core-icon" %>
36
+ <%= html_import_tag "paper-ripple/paper-ripple" %>
37
+
38
+ <%= stylesheet_link_tag "paper-item/paper-item", "shim-shadowdom" => true %>
39
+
40
+ <polymer-element name="paper-item" attributes="label iconSrc icon" center horizontal layout>
41
+
42
+ <template>
43
+
44
+ <paper-ripple id="ripple"></paper-ripple>
45
+
46
+ <core-icon id="icon" hidden?="{{!iconSrc && !icon}}" src="{{iconSrc}}" icon="{{icon}}"></core-icon>
47
+ {{label}}
48
+ <content></content>
49
+ </template>
50
+
51
+ <script>
52
+ Polymer('paper-item', {
53
+
54
+ publish: {
55
+
56
+ /**
57
+ * The label for the item.
58
+ *
59
+ * @attribute label
60
+ * @type string
61
+ * @default ''
62
+ */
63
+ label: '',
64
+
65
+ /**
66
+ * (optional) The URL of an image for an icon to use in the button.
67
+ * Should not use `icon` property if you are using this property.
68
+ *
69
+ * @attribute iconSrc
70
+ * @type string
71
+ * @default ''
72
+ */
73
+ iconSrc: {value: ''},
74
+
75
+ /**
76
+ * (optional) Specifies the icon name or index in the set of icons
77
+ * available in the icon set. If using this property, load the icon
78
+ * set separately where the icon is used. Should not use `src`
79
+ * if you are using this property.
80
+ *
81
+ * @attribute icon
82
+ * @type string
83
+ * @default ''
84
+ */
85
+ icon: {value: ''}
86
+
87
+ },
88
+
89
+ eventDelegates: {
90
+ 'down': 'downAction',
91
+ 'up': 'upAction'
92
+ },
93
+
94
+ downAction: function(e) {
95
+ this.$.ripple.downAction(e);
96
+ },
97
+
98
+ upAction: function(e) {
99
+ this.$.ripple.upAction(e);
100
+ }
101
+ });
102
+ </script>
103
+ </polymer-element>
@@ -0,0 +1,86 @@
1
+ <!--
2
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
+ Code distributed by Google as part of the polymer project is also
7
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
+ -->
9
+
10
+ <%= html_import_tag "core/overlay/core-overlay" %>
11
+
12
+ <!--
13
+
14
+ `paper-menu-button-overlay` is a helper class to position an overlay relative to another
15
+ element, e.g. the button with a pulldown menu.
16
+
17
+ @group Paper Elements
18
+ @element paper-menu-button-overlay
19
+ @extends core-overlay
20
+ @homepage github.io
21
+ -->
22
+
23
+ <polymer-element name="paper-menu-button-overlay" extends="core-overlay" attributes="relatedTarget halign valign">
24
+ <script>
25
+ Polymer('paper-menu-button-overlay', {
26
+
27
+ publish: {
28
+
29
+ /**
30
+ * The `relatedTarget` is an element used to position the overlay, for example a
31
+ * button the user taps to show a menu.
32
+ *
33
+ * @attribute relatedTarget
34
+ * @type Element
35
+ */
36
+ relatedTarget: null,
37
+
38
+ /**
39
+ * The horizontal alignment of the overlay relative to the `relatedTarget`.
40
+ *
41
+ * @attribute halign
42
+ * @type 'left'|'right'|'center'
43
+ * @default 'left'
44
+ */
45
+ halign: 'left'
46
+
47
+ },
48
+
49
+ updateTargetDimensions: function() {
50
+ this.super();
51
+
52
+ var t = this.target;
53
+ this.target.cachedSize = t.getBoundingClientRect();
54
+ },
55
+
56
+ positionTarget: function() {
57
+ if (this.relatedTarget) {
58
+
59
+ var rect = this.relatedTarget.getBoundingClientRect();
60
+
61
+ if (this.halign === 'left') {
62
+ this.target.style.left = rect.left + 'px';
63
+ } else if (this.halign === 'right') {
64
+ this.target.style.right = (window.innerWidth - rect.right) + 'px';
65
+ } else {
66
+ this.target.style.left = (rect.left - (rect.width - this.target.cachedSize.width) / 2) + 'px';
67
+ }
68
+
69
+ if (this.valign === 'top') {
70
+ this.target.style.top = rect.top + 'px';
71
+ } else if (this.valign === 'bottom') {
72
+ this.target.style.top = rect.bottom + 'px';
73
+ } else {
74
+ this.target.style.top = rect.top + 'px';
75
+ }
76
+
77
+ // this.target.style.top = rect.top + 'px';
78
+
79
+ } else {
80
+ this.super();
81
+ }
82
+ }
83
+
84
+ });
85
+ </script>
86
+ </polymer-element>
@@ -0,0 +1,19 @@
1
+ /* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
2
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
3
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
4
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
5
+ Code distributed by Google as part of the polymer project is also
6
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */
7
+
8
+ :host(.paper-menu-button-transition) {
9
+ outline: none;
10
+ opacity: 0;
11
+ transition: transform 0.2s ease-in-out, opacity 0.2s ease-in;
12
+ -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in;
13
+ }
14
+
15
+ :host(.paper-menu-button-transition.paper-menu-button-opened) {
16
+ opacity: 1;
17
+ transform: none;
18
+ -webkit-transform: none;
19
+ }
@@ -0,0 +1,118 @@
1
+ <!--
2
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
+ Code distributed by Google as part of the polymer project is also
7
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
+ -->
9
+ <!--
10
+ @group Paper Elements
11
+ @class paper-menu-button-transition
12
+ @extends core-transition-css
13
+ -->
14
+
15
+ <%= html_import_tag "core/transition/core-transition-css" %>
16
+ <%= html_import_tag "core/animation/web-animations" %>
17
+
18
+ <polymer-element name="paper-menu-button-transition" extends="core-transition-css" attributes="duration transformOrigin">
19
+ <template>
20
+ <%= stylesheet_link_tag "paper-menu-button/paper-menu-button-transition" %>
21
+ </template>
22
+ <script>
23
+ Polymer('paper-menu-button-transition', {
24
+
25
+ baseClass: 'paper-menu-button-transition',
26
+ revealedClass: 'paper-menu-button-revealed',
27
+ openedClass: 'paper-menu-button-opened',
28
+ closedClass: 'paper-menu-button-closed',
29
+
30
+ duration: 500,
31
+
32
+ setup: function(node) {
33
+ this.super(arguments);
34
+
35
+ var bg = node.querySelector('.paper-menu-button-overlay-bg');
36
+ bg.style.transformOrigin = this.transformOrigin;
37
+ bg.style.webkitTransformOrigin = this.transformOrigin;
38
+ },
39
+
40
+ transitionOpened: function(node, opened) {
41
+ this.super(arguments);
42
+
43
+ if (opened) {
44
+ if (this.player) {
45
+ this.player.cancel();
46
+ }
47
+
48
+ var anims = [];
49
+
50
+ var ink = node.querySelector('.paper-menu-button-overlay-ink');
51
+ var offset = 40 / Math.max(node.cachedSize.width, node.cachedSize.height);
52
+ anims.push(new Animation(ink, [{
53
+ 'opacity': 0.9,
54
+ 'transform': 'scale(0)',
55
+ }, {
56
+ 'opacity': 0.9,
57
+ 'transform': 'scale(1)'
58
+ }], {
59
+ duration: this.duration * offset
60
+ }));
61
+
62
+ var bg = node.querySelector('.paper-menu-button-overlay-bg');
63
+ anims.push(new Animation(bg, [{
64
+ 'opacity': 0.9,
65
+ 'transform': 'scale(' + 40 / node.cachedSize.width + ',' + 40 / node.cachedSize.height + ')',
66
+ }, {
67
+ 'opacity': 1,
68
+ 'transform': 'scale(0.95, 0.5)'
69
+ }, {
70
+ 'opacity': 1,
71
+ 'transform': 'scale(1, 1)'
72
+ }], {
73
+ delay: this.duration * offset,
74
+ duration: this.duration * (1 - offset),
75
+ fill: 'forwards'
76
+ }));
77
+
78
+ var nodes = window.ShadowDOMPolyfill ? Platform.queryAllShadows(node.querySelector('core-menu'), 'content').getDistributedNodes() : node.querySelector('core-menu::shadow content').getDistributedNodes().array();
79
+ var items = nodes.filter(function(n) {
80
+ return n.nodeType === Node.ELEMENT_NODE;
81
+ });
82
+ var itemDelay = offset + (1 - offset) / 2;
83
+ var itemDuration = this.duration * (1 - itemDelay) / (items.length - 1);
84
+ items.forEach(function(item, i) {
85
+ anims.push(new Animation(item, [{
86
+ 'opacity': 0
87
+ }, {
88
+ 'opacity': 1
89
+ }], {
90
+ delay: this.duration * itemDelay + itemDuration * i,
91
+ duration: itemDuration,
92
+ fill: 'both'
93
+ }));
94
+ }.bind(this));
95
+
96
+ var shadow = node.querySelector('paper-shadow');
97
+ anims.push(new Animation(shadow, function(t, target) {
98
+ if (t > offset * 2 && shadow.z === 0) {
99
+ shadow.z = 1
100
+ }
101
+ }, {
102
+ duration: this.duration
103
+ }));
104
+
105
+ var group = new AnimationGroup(anims, {
106
+ easing: 'cubic-bezier(0.4, 0, 0.2, 1)'
107
+ });
108
+ this.player = document.timeline.play(group);
109
+ }
110
+ },
111
+
112
+ });
113
+ </script>
114
+ </polymer-element>
115
+
116
+ <paper-menu-button-transition id="paper-menu-button-transition-top-left" transformOrigin="0% 0%"></paper-menu-button-transition>
117
+ <paper-menu-button-transition id="paper-menu-button-transition-top-right" transformOrigin="100% 0%"></paper-menu-button-transition>
118
+ <paper-menu-button-transition id="paper-menu-button-transition-top-right-slow" transformOrigin="100% 0%" duration="10000"></paper-menu-button-transition>