polymer-paper-elements-rails 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +51 -0
  3. data/Rakefile +1 -0
  4. data/app/assets/components/iron-a11y-announcer/iron-a11y-announcer.html +125 -0
  5. data/app/assets/components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html +418 -0
  6. data/app/assets/components/iron-autogrow-textarea/hero.svg +33 -0
  7. data/app/assets/components/iron-autogrow-textarea/iron-autogrow-textarea.html +263 -0
  8. data/app/assets/components/iron-behaviors/iron-button-state.html +195 -0
  9. data/app/assets/components/iron-behaviors/iron-control-state.html +102 -0
  10. data/app/assets/components/iron-fit-behavior/iron-fit-behavior.html +230 -0
  11. data/app/assets/components/iron-flex-layout/classes/iron-flex-layout.html +307 -0
  12. data/app/assets/components/iron-flex-layout/classes/iron-shadow-flex-layout.html +302 -0
  13. data/app/assets/components/iron-flex-layout/iron-flex-layout.html +313 -0
  14. data/app/assets/components/iron-form-element-behavior/iron-form-element-behavior.html +50 -0
  15. data/app/assets/components/iron-icon/hero.svg +19 -0
  16. data/app/assets/components/iron-icon/iron-icon.html +187 -0
  17. data/app/assets/components/iron-icons/av-icons.html +73 -0
  18. data/app/assets/components/iron-icons/communication-icons.html +59 -0
  19. data/app/assets/components/iron-icons/device-icons.html +94 -0
  20. data/app/assets/components/iron-icons/editor-icons.html +70 -0
  21. data/app/assets/components/iron-icons/hardware-icons.html +61 -0
  22. data/app/assets/components/iron-icons/hero.svg +35 -0
  23. data/app/assets/components/iron-icons/image-icons.html +164 -0
  24. data/app/assets/components/iron-icons/iron-icons.html +303 -0
  25. data/app/assets/components/iron-icons/maps-icons.html +71 -0
  26. data/app/assets/components/iron-icons/notification-icons.html +62 -0
  27. data/app/assets/components/iron-icons/social-icons.html +40 -0
  28. data/app/assets/components/iron-iconset-svg/iron-iconset-svg.html +191 -0
  29. data/app/assets/components/iron-input/hero.svg +19 -0
  30. data/app/assets/components/iron-input/iron-input.html +235 -0
  31. data/app/assets/components/iron-media-query/hero.svg +29 -0
  32. data/app/assets/components/iron-media-query/iron-media-query.html +84 -0
  33. data/app/assets/components/iron-menu-behavior/iron-menu-behavior.html +214 -0
  34. data/app/assets/components/iron-menu-behavior/iron-menubar-behavior.html +65 -0
  35. data/app/assets/components/iron-meta/hero.svg +33 -0
  36. data/app/assets/components/iron-meta/iron-meta.html +352 -0
  37. data/app/assets/components/iron-overlay-behavior/iron-overlay-backdrop.html +132 -0
  38. data/app/assets/components/iron-overlay-behavior/iron-overlay-behavior.html +432 -0
  39. data/app/assets/components/iron-overlay-behavior/iron-overlay-manager.html +107 -0
  40. data/app/assets/components/iron-range-behavior/iron-range-behavior.html +101 -0
  41. data/app/assets/components/iron-resizable-behavior/iron-resizable-behavior.html +139 -0
  42. data/app/assets/components/iron-selector/iron-multi-selectable.html +120 -0
  43. data/app/assets/components/iron-selector/iron-selectable.html +307 -0
  44. data/app/assets/components/iron-selector/iron-selection.html +115 -0
  45. data/app/assets/components/iron-selector/iron-selector.html +71 -0
  46. data/app/assets/components/iron-validatable-behavior/iron-validatable-behavior.html +100 -0
  47. data/app/assets/components/neon-animation/animations/cascaded-animation.html +84 -0
  48. data/app/assets/components/neon-animation/animations/fade-in-animation.html +49 -0
  49. data/app/assets/components/neon-animation/animations/fade-out-animation.html +49 -0
  50. data/app/assets/components/neon-animation/animations/hero-animation.html +83 -0
  51. data/app/assets/components/neon-animation/animations/opaque-animation.html +46 -0
  52. data/app/assets/components/neon-animation/animations/ripple-animation.html +92 -0
  53. data/app/assets/components/neon-animation/animations/scale-down-animation.html +65 -0
  54. data/app/assets/components/neon-animation/animations/scale-up-animation.html +58 -0
  55. data/app/assets/components/neon-animation/animations/slide-down-animation.html +59 -0
  56. data/app/assets/components/neon-animation/animations/slide-from-left-animation.html +60 -0
  57. data/app/assets/components/neon-animation/animations/slide-from-right-animation.html +60 -0
  58. data/app/assets/components/neon-animation/animations/slide-left-animation.html +59 -0
  59. data/app/assets/components/neon-animation/animations/slide-right-animation.html +59 -0
  60. data/app/assets/components/neon-animation/animations/slide-up-animation.html +59 -0
  61. data/app/assets/components/neon-animation/animations/transform-animation.html +61 -0
  62. data/app/assets/components/neon-animation/guides/neon-animation.md +313 -0
  63. data/app/assets/components/neon-animation/neon-animatable-behavior.html +156 -0
  64. data/app/assets/components/neon-animation/neon-animatable.html +54 -0
  65. data/app/assets/components/neon-animation/neon-animated-pages.html +208 -0
  66. data/app/assets/components/neon-animation/neon-animation-behavior.html +88 -0
  67. data/app/assets/components/neon-animation/neon-animation-runner-behavior.html +110 -0
  68. data/app/assets/components/neon-animation/neon-animation.html +17 -0
  69. data/app/assets/components/neon-animation/neon-animations.html +25 -0
  70. data/app/assets/components/neon-animation/neon-shared-element-animatable-behavior.html +37 -0
  71. data/app/assets/components/neon-animation/neon-shared-element-animation-behavior.html +66 -0
  72. data/app/assets/components/neon-animation/web-animations.html +11 -0
  73. data/app/assets/components/paper-behaviors/paper-button-behavior.html +55 -0
  74. data/app/assets/components/paper-behaviors/paper-inky-focus-behavior.html +44 -0
  75. data/app/assets/components/paper-button/paper-button.html +177 -0
  76. data/app/assets/components/paper-checkbox/metadata.html +17 -0
  77. data/app/assets/components/paper-checkbox/paper-checkbox.css +149 -0
  78. data/app/assets/components/paper-checkbox/paper-checkbox.html +163 -0
  79. data/app/assets/components/paper-dialog-behavior/hero.svg +51 -0
  80. data/app/assets/components/paper-dialog-behavior/paper-dialog-behavior.html +236 -0
  81. data/app/assets/components/paper-dialog-behavior/paper-dialog-common.css +58 -0
  82. data/app/assets/components/paper-dialog-scrollable/hero.svg +69 -0
  83. data/app/assets/components/paper-dialog-scrollable/paper-dialog-scrollable.html +150 -0
  84. data/app/assets/components/paper-dialog/hero.svg +58 -0
  85. data/app/assets/components/paper-dialog/paper-dialog.html +122 -0
  86. data/app/assets/components/paper-drawer-panel/hero.svg +21 -0
  87. data/app/assets/components/paper-drawer-panel/paper-drawer-panel.css +142 -0
  88. data/app/assets/components/paper-drawer-panel/paper-drawer-panel.html +585 -0
  89. data/app/assets/components/paper-fab/paper-fab.html +159 -0
  90. data/app/assets/components/paper-header-panel/hero.svg +38 -0
  91. data/app/assets/components/paper-header-panel/paper-header-panel.html +496 -0
  92. data/app/assets/components/paper-icon-button/paper-icon-button.html +141 -0
  93. data/app/assets/components/paper-input/all-imports.html +12 -0
  94. data/app/assets/components/paper-input/hero.svg +19 -0
  95. data/app/assets/components/paper-input/paper-input-addon-behavior.html +43 -0
  96. data/app/assets/components/paper-input/paper-input-behavior.html +293 -0
  97. data/app/assets/components/paper-input/paper-input-char-counter.html +95 -0
  98. data/app/assets/components/paper-input/paper-input-container.html +495 -0
  99. data/app/assets/components/paper-input/paper-input-error.html +99 -0
  100. data/app/assets/components/paper-input/paper-input.html +126 -0
  101. data/app/assets/components/paper-input/paper-textarea.html +100 -0
  102. data/app/assets/components/paper-item/all-imports.html +13 -0
  103. data/app/assets/components/paper-item/paper-icon-item.html +86 -0
  104. data/app/assets/components/paper-item/paper-item-body.html +93 -0
  105. data/app/assets/components/paper-item/paper-item-shared.css +19 -0
  106. data/app/assets/components/paper-item/paper-item.html +95 -0
  107. data/app/assets/components/paper-material/paper-material.html +98 -0
  108. data/app/assets/components/paper-menu/hero.svg +35 -0
  109. data/app/assets/components/paper-menu/paper-menu.html +133 -0
  110. data/app/assets/components/paper-progress/hero.svg +21 -0
  111. data/app/assets/components/paper-progress/paper-progress.html +199 -0
  112. data/app/assets/components/paper-radio-button/hero.svg +22 -0
  113. data/app/assets/components/paper-radio-button/paper-radio-button.css +109 -0
  114. data/app/assets/components/paper-radio-button/paper-radio-button.html +148 -0
  115. data/app/assets/components/paper-radio-group/hero.svg +25 -0
  116. data/app/assets/components/paper-radio-group/paper-radio-group.html +186 -0
  117. data/app/assets/components/paper-ripple/hero.svg +30 -0
  118. data/app/assets/components/paper-ripple/paper-ripple.html +714 -0
  119. data/app/assets/components/paper-scroll-header-panel/hero.svg +41 -0
  120. data/app/assets/components/paper-scroll-header-panel/paper-scroll-header-panel.html +455 -0
  121. data/app/assets/components/paper-slider/hero.svg +20 -0
  122. data/app/assets/components/paper-slider/paper-slider.css +252 -0
  123. data/app/assets/components/paper-slider/paper-slider.html +449 -0
  124. data/app/assets/components/paper-spinner/hero.svg +27 -0
  125. data/app/assets/components/paper-spinner/paper-spinner.css +325 -0
  126. data/app/assets/components/paper-spinner/paper-spinner.html +222 -0
  127. data/app/assets/components/paper-styles/classes/global.html +96 -0
  128. data/app/assets/components/paper-styles/classes/shadow-layout.html +302 -0
  129. data/app/assets/components/paper-styles/classes/shadow.html +39 -0
  130. data/app/assets/components/paper-styles/classes/typography.html +171 -0
  131. data/app/assets/components/paper-styles/color.html +333 -0
  132. data/app/assets/components/paper-styles/default-theme.html +39 -0
  133. data/app/assets/components/paper-styles/paper-styles-classes.html +14 -0
  134. data/app/assets/components/paper-styles/paper-styles.html +17 -0
  135. data/app/assets/components/paper-styles/shadow.html +61 -0
  136. data/app/assets/components/paper-styles/typography.html +240 -0
  137. data/app/assets/components/paper-tabs/hero.svg +23 -0
  138. data/app/assets/components/paper-tabs/paper-tab.html +158 -0
  139. data/app/assets/components/paper-tabs/paper-tabs-icons.html +18 -0
  140. data/app/assets/components/paper-tabs/paper-tabs.html +483 -0
  141. data/app/assets/components/paper-toast/hero.svg +20 -0
  142. data/app/assets/components/paper-toast/paper-toast.html +164 -0
  143. data/app/assets/components/paper-toggle-button/hero.svg +22 -0
  144. data/app/assets/components/paper-toggle-button/paper-toggle-button.css +108 -0
  145. data/app/assets/components/paper-toggle-button/paper-toggle-button.html +183 -0
  146. data/app/assets/components/paper-toolbar/paper-toolbar.html +375 -0
  147. data/app/assets/components/polymer-gestures/Gruntfile.js +60 -0
  148. data/app/assets/components/polymer-gestures/banner.txt +9 -0
  149. data/app/assets/components/polymer-gestures/build.json +17 -0
  150. data/app/assets/components/polymer-gestures/conf/karma.conf.js +39 -0
  151. data/app/assets/components/polymer-gestures/package.json +20 -0
  152. data/app/assets/components/polymer-gestures/polymer-gestures.html +21 -0
  153. data/app/assets/components/polymer-gestures/polymer-gestures.js +46 -0
  154. data/app/assets/components/polymer-gestures/src/dispatcher.js +474 -0
  155. data/app/assets/components/polymer-gestures/src/eventFactory.js +127 -0
  156. data/app/assets/components/polymer-gestures/src/hold.js +129 -0
  157. data/app/assets/components/polymer-gestures/src/mouse.js +135 -0
  158. data/app/assets/components/polymer-gestures/src/ms.js +80 -0
  159. data/app/assets/components/polymer-gestures/src/pinch.js +186 -0
  160. data/app/assets/components/polymer-gestures/src/platform-events.js +39 -0
  161. data/app/assets/components/polymer-gestures/src/pointer.js +68 -0
  162. data/app/assets/components/polymer-gestures/src/pointermap.js +67 -0
  163. data/app/assets/components/polymer-gestures/src/scope.js +10 -0
  164. data/app/assets/components/polymer-gestures/src/tap.js +103 -0
  165. data/app/assets/components/polymer-gestures/src/targetfind.js +244 -0
  166. data/app/assets/components/polymer-gestures/src/touch-action.js +60 -0
  167. data/app/assets/components/polymer-gestures/src/touch.js +341 -0
  168. data/app/assets/components/polymer-gestures/src/track.js +230 -0
  169. data/app/assets/components/web-animations-js/web-animations-next-lite.min.js +17 -0
  170. data/app/assets/components/web-animations-js/web-animations-next.min.js +17 -0
  171. data/app/assets/components/web-animations-js/web-animations.min.js +17 -0
  172. data/app/assets/components/webcomponentsjs/CustomElements.js +956 -0
  173. data/app/assets/components/webcomponentsjs/CustomElements.min.js +11 -0
  174. data/app/assets/components/webcomponentsjs/HTMLImports.js +1078 -0
  175. data/app/assets/components/webcomponentsjs/HTMLImports.min.js +11 -0
  176. data/app/assets/components/webcomponentsjs/MutationObserver.js +344 -0
  177. data/app/assets/components/webcomponentsjs/MutationObserver.min.js +11 -0
  178. data/app/assets/components/webcomponentsjs/ShadowDOM.js +4414 -0
  179. data/app/assets/components/webcomponentsjs/ShadowDOM.min.js +15 -0
  180. data/app/assets/components/webcomponentsjs/package.json +31 -0
  181. data/app/assets/components/webcomponentsjs/webcomponents-lite.js +2300 -0
  182. data/app/assets/components/webcomponentsjs/webcomponents-lite.min.js +13 -0
  183. data/app/assets/components/webcomponentsjs/webcomponents.js +7112 -0
  184. data/app/assets/components/webcomponentsjs/webcomponents.min.js +15 -0
  185. data/lib/polymer-paper-elements-rails.rb +2 -0
  186. data/lib/polymer-paper-elements-rails/engine.rb +4 -0
  187. data/lib/polymer-paper-elements-rails/version.rb +3 -0
  188. metadata +272 -0
@@ -0,0 +1,54 @@
1
+ <!--
2
+ Copyright (c) 2015 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
+ <link rel="import" href="../polymer/polymer.html">
11
+ <link rel="import" href="neon-animatable-behavior.html">
12
+
13
+ <!--
14
+ `<neon-animatable>` is a simple container element implementing `Polymer.NeonAnimatableBehavior`. This is a convenience element for use with `<neon-animated-pages>`.
15
+
16
+ ```
17
+ <neon-animated-pages selected="0"
18
+ entry-animation="slide-from-right-animation"
19
+ exit-animation="slide-left-animation">
20
+ <neon-animatable>1</neon-animatable>
21
+ <neon-animatable>2</neon-animatable>
22
+ </neon-animated-pages>
23
+ ```
24
+ -->
25
+
26
+ <dom-module id="neon-animatable">
27
+
28
+ <style>
29
+
30
+ :host {
31
+ display: block;
32
+ }
33
+
34
+ </style>
35
+
36
+ <template>
37
+ <content></content>
38
+ </template>
39
+
40
+ </dom-module>
41
+
42
+ <script>
43
+
44
+ Polymer({
45
+
46
+ is: 'neon-animatable',
47
+
48
+ behaviors: [
49
+ Polymer.NeonAnimatableBehavior
50
+ ]
51
+
52
+ });
53
+
54
+ </script>
@@ -0,0 +1,208 @@
1
+ <!--
2
+ Copyright (c) 2015 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
+ <link rel="import" href="../polymer/polymer.html">
10
+ <link rel="import" href="../iron-resizable-behavior/iron-resizable-behavior.html">
11
+ <link rel="import" href="../iron-selector/iron-selectable.html">
12
+ <link rel="import" href="../paper-styles/paper-styles.html">
13
+ <link rel="import" href="neon-animation-runner-behavior.html">
14
+ <link rel="import" href="animations/opaque-animation.html">
15
+
16
+ <!--
17
+ `neon-animated-pages` manages a set of pages and runs an animation when switching between them. Its
18
+ children pages should implement `Polymer.NeonAnimatableBehavior` and define `entry` and `exit`
19
+ animations to be run when switching to or switching out of the page.
20
+
21
+ @group Neon Elements
22
+ @element neon-animated-pages
23
+ @demo demo/index.html
24
+ -->
25
+
26
+ <dom-module id="neon-animated-pages">
27
+
28
+ <style>
29
+
30
+ :host {
31
+ display: block;
32
+ position: relative;
33
+ }
34
+
35
+ :host > ::content > * {
36
+ @apply(--layout-fit);
37
+ height: 100%;
38
+ }
39
+
40
+ :host > ::content > :not(.iron-selected):not(.neon-animating) {
41
+ display: none !important;
42
+ }
43
+
44
+ :host > ::content > .neon-animating {
45
+ pointer-events: none;
46
+ }
47
+
48
+ </style>
49
+
50
+ <template>
51
+ <content id="content"></content>
52
+ </template>
53
+
54
+ </dom-module>
55
+
56
+ <script>
57
+ (function() {
58
+
59
+ Polymer({
60
+
61
+ is: 'neon-animated-pages',
62
+
63
+ behaviors: [
64
+ Polymer.IronResizableBehavior,
65
+ Polymer.IronSelectableBehavior,
66
+ Polymer.NeonAnimationRunnerBehavior
67
+ ],
68
+
69
+ properties: {
70
+
71
+ activateEvent: {
72
+ type: String,
73
+ value: ''
74
+ },
75
+
76
+ // if true, the initial page selection will also be animated according to its animation config.
77
+ animateInitialSelection: {
78
+ type: Boolean,
79
+ value: false
80
+ }
81
+
82
+ },
83
+
84
+ observers: [
85
+ '_selectedChanged(selected)'
86
+ ],
87
+
88
+ listeners: {
89
+ 'neon-animation-finish': '_onNeonAnimationFinish'
90
+ },
91
+
92
+ _selectedChanged: function(selected) {
93
+
94
+ var selectedPage = this.selectedItem;
95
+ var oldPage = this._prevSelected || false;
96
+ this._prevSelected = selectedPage;
97
+
98
+ // on initial load and if animateInitialSelection is negated, simply display selectedPage.
99
+ if (!oldPage && !this.animateInitialSelection) {
100
+ this._completeSelectedChanged();
101
+ return;
102
+ }
103
+
104
+ // insert safari fix.
105
+ this.animationConfig = [{
106
+ name: 'opaque-animation',
107
+ node: selectedPage
108
+ }];
109
+
110
+ // configure selectedPage animations.
111
+ if (this.entryAnimation) {
112
+ this.animationConfig.push({
113
+ name: this.entryAnimation,
114
+ node: selectedPage
115
+ });
116
+ } else {
117
+ if (selectedPage.getAnimationConfig) {
118
+ this.animationConfig.push({
119
+ animatable: selectedPage,
120
+ type: 'entry'
121
+ });
122
+ }
123
+ }
124
+
125
+ // configure oldPage animations iff exists.
126
+ if (oldPage) {
127
+
128
+ // cancel the currently running animation if one is ongoing.
129
+ if (oldPage.classList.contains('neon-animating')) {
130
+ this._squelchNextFinishEvent = true;
131
+ this.cancelAnimation();
132
+ this._completeSelectedChanged();
133
+ }
134
+
135
+ // configure the animation.
136
+ if (this.exitAnimation) {
137
+ this.animationConfig.push({
138
+ name: this.exitAnimation,
139
+ node: oldPage
140
+ });
141
+ } else {
142
+ if (oldPage.getAnimationConfig) {
143
+ this.animationConfig.push({
144
+ animatable: oldPage,
145
+ type: 'exit'
146
+ });
147
+ }
148
+ }
149
+
150
+ // display the oldPage during the transition.
151
+ oldPage.classList.add('neon-animating');
152
+ }
153
+
154
+ // display the selectedPage during the transition.
155
+ selectedPage.classList.add('neon-animating');
156
+
157
+ // actually run the animations.
158
+ if (this.animationConfig.length > 1) {
159
+
160
+ // on first load, ensure we run animations only after element is attached.
161
+ if (!this.isAttached) {
162
+ this.async(function () {
163
+ this.playAnimation(null, {
164
+ fromPage: null,
165
+ toPage: selectedPage
166
+ });
167
+ });
168
+
169
+ } else {
170
+ this.playAnimation(null, {
171
+ fromPage: oldPage,
172
+ toPage: selectedPage
173
+ });
174
+ }
175
+
176
+ } else {
177
+ this._completeSelectedChanged(oldPage, selectedPage);
178
+ }
179
+ },
180
+
181
+ _completeSelectedChanged: function(oldPage, selectedPage) {
182
+ if (selectedPage) {
183
+ selectedPage.classList.remove('neon-animating');
184
+ }
185
+ if (oldPage) {
186
+ oldPage.classList.remove('neon-animating');
187
+ }
188
+ if (!selectedPage || !oldPage) {
189
+ var nodes = Polymer.dom(this.$.content).getDistributedNodes();
190
+ for (var node, index = 0; node = nodes[index]; index++) {
191
+ node.classList && node.classList.remove('neon-animating');
192
+ }
193
+ }
194
+ this.async(this.notifyResize);
195
+ },
196
+
197
+ _onNeonAnimationFinish: function(event) {
198
+ if (this._squelchNextFinishEvent) {
199
+ this._squelchNextFinishEvent = false;
200
+ return;
201
+ }
202
+ this._completeSelectedChanged(event.detail.fromPage, event.detail.toPage);
203
+ }
204
+
205
+ })
206
+
207
+ })();
208
+ </script>
@@ -0,0 +1,88 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+
11
+ <link rel="import" href="../polymer/polymer.html">
12
+ <link rel="import" href="../iron-meta/iron-meta.html">
13
+
14
+ <script>
15
+
16
+ /**
17
+ * Use `Polymer.NeonAnimationBehavior` to implement an animation.
18
+ * @polymerBehavior
19
+ */
20
+ Polymer.NeonAnimationBehavior = {
21
+
22
+ properties: {
23
+
24
+ /**
25
+ * Defines the animation timing.
26
+ */
27
+ animationTiming: {
28
+ type: Object,
29
+ value: function() {
30
+ return {
31
+ duration: 500,
32
+ easing: 'cubic-bezier(0.4, 0, 0.2, 1)',
33
+ fill: 'both'
34
+ }
35
+ }
36
+ }
37
+
38
+ },
39
+
40
+ registered: function() {
41
+ new Polymer.IronMeta({type: 'animation', key: this.is, value: this.constructor});
42
+ },
43
+
44
+ /**
45
+ * Do any animation configuration here.
46
+ */
47
+ // configure: function(config) {
48
+ // },
49
+
50
+ /**
51
+ * Returns the animation timing by mixing in properties from `config` to the defaults defined
52
+ * by the animation.
53
+ */
54
+ timingFromConfig: function(config) {
55
+ if (config.timing) {
56
+ for (var property in config.timing) {
57
+ this.animationTiming[property] = config.timing[property];
58
+ }
59
+ }
60
+ return this.animationTiming;
61
+ },
62
+
63
+ /**
64
+ * Sets `transform` and `transformOrigin` properties along with the prefixed versions.
65
+ */
66
+ setPrefixedProperty: function(node, property, value) {
67
+ var map = {
68
+ 'transform': ['webkitTransform'],
69
+ 'transformOrigin': ['mozTransformOrigin', 'webkitTransformOrigin']
70
+ };
71
+ var prefixes = map[property];
72
+ for (var prefix, index = 0; prefix = prefixes[index]; index++) {
73
+ node.style[prefix] = value;
74
+ }
75
+ node.style[property] = value;
76
+ },
77
+
78
+ /**
79
+ * Called when the animation finishes.
80
+ */
81
+ complete: function() {
82
+ // FIXME not sure about non-bubbling event
83
+ this.fire(this.animationEndEvent, null, {bubbles: false});
84
+ }
85
+
86
+ };
87
+
88
+ </script>
@@ -0,0 +1,110 @@
1
+ <!--
2
+ Copyright (c) 2015 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
+ <link rel="import" href="../polymer/polymer.html">
10
+ <link rel="import" href="../iron-meta/iron-meta.html">
11
+ <link rel="import" href="neon-animatable-behavior.html">
12
+
13
+ <script>
14
+
15
+ /**
16
+ * `Polymer.NeonAnimationRunnerBehavior` adds a method to run animations.
17
+ * @polymerBehavior
18
+ */
19
+ Polymer.NeonAnimationRunnerBehavior = [Polymer.NeonAnimatableBehavior, {
20
+
21
+ properties: {
22
+
23
+ _animationMeta: {
24
+ type: Object,
25
+ value: function() {
26
+ return new Polymer.IronMeta({type: 'animation'});
27
+ }
28
+ },
29
+
30
+ _player: {
31
+ type: Object
32
+ }
33
+
34
+ },
35
+
36
+ _configureAnimationEffects: function(allConfigs) {
37
+ var allAnimations = [];
38
+ if (allConfigs.length > 0) {
39
+ for (var config, index = 0; config = allConfigs[index]; index++) {
40
+ var animationConstructor = this._animationMeta.byKey(config.name);
41
+ if (animationConstructor) {
42
+ var animation = animationConstructor && new animationConstructor();
43
+ var effect = animation.configure(config);
44
+ if (effect) {
45
+ allAnimations.push({
46
+ animation: animation,
47
+ config: config,
48
+ effect: effect
49
+ });
50
+ }
51
+ } else {
52
+ console.warn(this.is + ':', config.name, 'not found!');
53
+ }
54
+ }
55
+ }
56
+ return allAnimations;
57
+ },
58
+
59
+ _runAnimationEffects: function(allEffects) {
60
+ return player = document.timeline.play(new GroupEffect(allEffects));
61
+ },
62
+
63
+ _completeAnimations: function(allAnimations) {
64
+ for (var animation, index = 0; animation = allAnimations[index]; index++) {
65
+ animation.animation.complete(animation.config);
66
+ }
67
+ },
68
+
69
+ /**
70
+ * Plays an animation with an optional `type`.
71
+ */
72
+ playAnimation: function(type, cookie) {
73
+ var allConfigs = this.getAnimationConfig(type);
74
+ if (!allConfigs) {
75
+ return;
76
+ }
77
+ var allAnimations = this._configureAnimationEffects(allConfigs);
78
+ var allEffects = allAnimations.map(function(animation) {
79
+ return animation.effect;
80
+ });
81
+
82
+ if (allEffects.length > 0) {
83
+ this._player = this._runAnimationEffects(allEffects);
84
+ this._player.onfinish = function() {
85
+ this._completeAnimations(allAnimations);
86
+
87
+ if (this._player) {
88
+ this._player.cancel();
89
+ this._player = null;
90
+ }
91
+
92
+ this.fire('neon-animation-finish', cookie, {bubbles: false});
93
+ }.bind(this);
94
+
95
+ } else {
96
+ this.fire('neon-animation-finish', cookie, {bubbles: false});
97
+ }
98
+ },
99
+
100
+ /**
101
+ * Cancels the currently running animation.
102
+ */
103
+ cancelAnimation: function() {
104
+ if (this._player) {
105
+ this._player.cancel();
106
+ }
107
+ }
108
+
109
+ }];
110
+ </script>