jekyll-polymer-magazine 0.1.0

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 (994) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +45 -0
  4. data/_includes/disqus.html +24 -0
  5. data/_includes/head.html +21 -0
  6. data/_includes/javascripts.html +9 -0
  7. data/_layouts/default.html +4 -0
  8. data/_layouts/page.html +17 -0
  9. data/_layouts/post.html +95 -0
  10. data/assets/bower.json +29 -0
  11. data/assets/bower_components/app-layout/.bower.json +55 -0
  12. data/assets/bower_components/app-layout/.github/ISSUE_TEMPLATE.md +33 -0
  13. data/assets/bower_components/app-layout/.gitignore +1 -0
  14. data/assets/bower_components/app-layout/.travis.yml +23 -0
  15. data/assets/bower_components/app-layout/CONTRIBUTING.md +77 -0
  16. data/assets/bower_components/app-layout/README.md +106 -0
  17. data/assets/bower_components/app-layout/app-box/README.md +69 -0
  18. data/assets/bower_components/app-layout/app-box/app-box.html +238 -0
  19. data/assets/bower_components/app-layout/app-box/demo/document-scroll.html +216 -0
  20. data/assets/bower_components/app-layout/app-box/demo/index.html +40 -0
  21. data/assets/bower_components/app-layout/app-box/demo/scrolling-region.html +230 -0
  22. data/assets/bower_components/app-layout/app-drawer-layout/README.md +93 -0
  23. data/assets/bower_components/app-layout/app-drawer-layout/app-drawer-layout.html +277 -0
  24. data/assets/bower_components/app-layout/app-drawer-layout/demo/index.html +40 -0
  25. data/assets/bower_components/app-layout/app-drawer-layout/demo/simple-drawer.html +67 -0
  26. data/assets/bower_components/app-layout/app-drawer-layout/demo/two-drawers.html +70 -0
  27. data/assets/bower_components/app-layout/app-drawer-layout/test/app-drawer-layout.html +234 -0
  28. data/assets/bower_components/app-layout/app-drawer-layout/test/index.html +25 -0
  29. data/assets/bower_components/app-layout/app-drawer/README.md +37 -0
  30. data/assets/bower_components/app-layout/app-drawer/app-drawer.html +690 -0
  31. data/assets/bower_components/app-layout/app-drawer/demo/index.html +40 -0
  32. data/assets/bower_components/app-layout/app-drawer/demo/left-drawer.html +70 -0
  33. data/assets/bower_components/app-layout/app-drawer/demo/right-drawer.html +94 -0
  34. data/assets/bower_components/app-layout/app-drawer/test/app-drawer.html +794 -0
  35. data/assets/bower_components/app-layout/app-drawer/test/index.html +25 -0
  36. data/assets/bower_components/app-layout/app-grid/README.md +124 -0
  37. data/assets/bower_components/app-layout/app-grid/app-grid-style.html +196 -0
  38. data/assets/bower_components/app-layout/app-grid/demo/aspect-ratio.html +113 -0
  39. data/assets/bower_components/app-layout/app-grid/demo/flickr-grid-layout.html +264 -0
  40. data/assets/bower_components/app-layout/app-grid/demo/index.html +41 -0
  41. data/assets/bower_components/app-layout/app-grid/demo/md-grid-layout.html +159 -0
  42. data/assets/bower_components/app-layout/app-grid/demo/simple-responsive-grid.html +124 -0
  43. data/assets/bower_components/app-layout/app-grid/test/app-grid-1.html +154 -0
  44. data/assets/bower_components/app-layout/app-grid/test/app-grid-2.html +157 -0
  45. data/assets/bower_components/app-layout/app-grid/test/app-grid-3.html +159 -0
  46. data/assets/bower_components/app-layout/app-grid/test/index.html +29 -0
  47. data/assets/bower_components/app-layout/app-header-layout/README.md +42 -0
  48. data/assets/bower_components/app-layout/app-header-layout/app-header-layout.html +228 -0
  49. data/assets/bower_components/app-layout/app-header-layout/demo/footer.html +90 -0
  50. data/assets/bower_components/app-layout/app-header-layout/demo/index.html +42 -0
  51. data/assets/bower_components/app-layout/app-header-layout/demo/music.html +239 -0
  52. data/assets/bower_components/app-layout/app-header-layout/demo/scrolling-region.html +87 -0
  53. data/assets/bower_components/app-layout/app-header-layout/demo/simple.html +74 -0
  54. data/assets/bower_components/app-layout/app-header-layout/test/app-header-layout.html +152 -0
  55. data/assets/bower_components/app-layout/app-header-layout/test/index.html +25 -0
  56. data/assets/bower_components/app-layout/app-header/README.md +199 -0
  57. data/assets/bower_components/app-layout/app-header/app-header.html +715 -0
  58. data/assets/bower_components/app-layout/app-header/demo/blend-background-1.html +109 -0
  59. data/assets/bower_components/app-layout/app-header/demo/blend-background-2.html +113 -0
  60. data/assets/bower_components/app-layout/app-header/demo/blend-background-3.html +110 -0
  61. data/assets/bower_components/app-layout/app-header/demo/contacts.html +124 -0
  62. data/assets/bower_components/app-layout/app-header/demo/custom-sticky-element-1.html +82 -0
  63. data/assets/bower_components/app-layout/app-header/demo/custom-sticky-element-2.html +89 -0
  64. data/assets/bower_components/app-layout/app-header/demo/give.html +115 -0
  65. data/assets/bower_components/app-layout/app-header/demo/index.html +48 -0
  66. data/assets/bower_components/app-layout/app-header/demo/music.html +235 -0
  67. data/assets/bower_components/app-layout/app-header/demo/no-effects.html +64 -0
  68. data/assets/bower_components/app-layout/app-header/demo/notes.html +174 -0
  69. data/assets/bower_components/app-layout/app-header/test/app-header.html +512 -0
  70. data/assets/bower_components/app-layout/app-header/test/index.html +25 -0
  71. data/assets/bower_components/app-layout/app-layout.html +19 -0
  72. data/assets/bower_components/app-layout/app-scroll-effects/README.md +84 -0
  73. data/assets/bower_components/app-layout/app-scroll-effects/app-scroll-effects-behavior.html +392 -0
  74. data/assets/bower_components/app-layout/app-scroll-effects/app-scroll-effects.html +17 -0
  75. data/assets/bower_components/app-layout/app-scroll-effects/effects/blend-background.html +42 -0
  76. data/assets/bower_components/app-layout/app-scroll-effects/effects/fade-background.html +53 -0
  77. data/assets/bower_components/app-layout/app-scroll-effects/effects/material.html +30 -0
  78. data/assets/bower_components/app-layout/app-scroll-effects/effects/parallax-background.html +55 -0
  79. data/assets/bower_components/app-layout/app-scroll-effects/effects/resize-snapped-title.html +64 -0
  80. data/assets/bower_components/app-layout/app-scroll-effects/effects/resize-title.html +85 -0
  81. data/assets/bower_components/app-layout/app-scroll-effects/effects/waterfall.html +26 -0
  82. data/assets/bower_components/app-layout/app-scroll-effects/test/app-scroll-effects-behavior.html +217 -0
  83. data/assets/bower_components/app-layout/app-scroll-effects/test/blend-background.html +90 -0
  84. data/assets/bower_components/app-layout/app-scroll-effects/test/fade-background.html +99 -0
  85. data/assets/bower_components/app-layout/app-scroll-effects/test/index.html +37 -0
  86. data/assets/bower_components/app-layout/app-scroll-effects/test/parallax-background.html +85 -0
  87. data/assets/bower_components/app-layout/app-scroll-effects/test/resize-snapped-title.html +93 -0
  88. data/assets/bower_components/app-layout/app-scroll-effects/test/resize-title.html +100 -0
  89. data/assets/bower_components/app-layout/app-scroll-effects/test/utils.html +43 -0
  90. data/assets/bower_components/app-layout/app-scroll-effects/test/waterfall.html +87 -0
  91. data/assets/bower_components/app-layout/app-scroll-effects/test/x-container.html +100 -0
  92. data/assets/bower_components/app-layout/app-scrollpos-control/README.md +35 -0
  93. data/assets/bower_components/app-layout/app-scrollpos-control/app-scrollpos-control.html +107 -0
  94. data/assets/bower_components/app-layout/app-scrollpos-control/demo/index.html +82 -0
  95. data/assets/bower_components/app-layout/app-scrollpos-control/test/app-scrollpos-control.html +69 -0
  96. data/assets/bower_components/app-layout/app-scrollpos-control/test/index.html +25 -0
  97. data/assets/bower_components/app-layout/app-toolbar/README.md +43 -0
  98. data/assets/bower_components/app-layout/app-toolbar/app-toolbar.html +117 -0
  99. data/assets/bower_components/app-layout/app-toolbar/demo/index.html +97 -0
  100. data/assets/bower_components/app-layout/app-toolbar/test/app-toolbar.html +88 -0
  101. data/assets/bower_components/app-layout/app-toolbar/test/index.html +25 -0
  102. data/assets/bower_components/app-layout/bower.json +45 -0
  103. data/assets/bower_components/app-layout/build.sh +22 -0
  104. data/assets/bower_components/app-layout/demo/contacts.json +11002 -0
  105. data/assets/bower_components/app-layout/demo/demo1.html +109 -0
  106. data/assets/bower_components/app-layout/demo/demo2.html +76 -0
  107. data/assets/bower_components/app-layout/demo/demo3.html +79 -0
  108. data/assets/bower_components/app-layout/demo/demo4.html +173 -0
  109. data/assets/bower_components/app-layout/demo/demo5.html +126 -0
  110. data/assets/bower_components/app-layout/demo/demo6.html +126 -0
  111. data/assets/bower_components/app-layout/demo/demo7.html +76 -0
  112. data/assets/bower_components/app-layout/demo/sample-content.html +102 -0
  113. data/assets/bower_components/app-layout/docs.html +30 -0
  114. data/assets/bower_components/app-layout/helpers/helpers.html +130 -0
  115. data/assets/bower_components/app-layout/helpers/test/index.html +27 -0
  116. data/assets/bower_components/app-layout/helpers/test/register-effect.html +49 -0
  117. data/assets/bower_components/app-layout/helpers/test/scroll.html +114 -0
  118. data/assets/bower_components/app-layout/index.html +428 -0
  119. data/assets/bower_components/app-layout/patterns/expand-card/index.html +73 -0
  120. data/assets/bower_components/app-layout/patterns/transform-navigation/index.html +39 -0
  121. data/assets/bower_components/app-layout/patterns/transform-navigation/x-app.html +132 -0
  122. data/assets/bower_components/app-layout/site/device-viewer/device-layout-viewer.html +196 -0
  123. data/assets/bower_components/app-layout/site/device-viewer/device-view.html +194 -0
  124. data/assets/bower_components/app-layout/site/device-viewer/index.html +42 -0
  125. data/assets/bower_components/app-layout/site/images/cds2015.png +0 -0
  126. data/assets/bower_components/app-layout/site/images/getting-started.png +0 -0
  127. data/assets/bower_components/app-layout/site/images/io2016.png +0 -0
  128. data/assets/bower_components/app-layout/site/images/landing-page.png +0 -0
  129. data/assets/bower_components/app-layout/site/images/pesto.png +0 -0
  130. data/assets/bower_components/app-layout/site/images/pica.png +0 -0
  131. data/assets/bower_components/app-layout/site/images/polymer-summit.png +0 -0
  132. data/assets/bower_components/app-layout/site/images/polymer.svg +46 -0
  133. data/assets/bower_components/app-layout/site/images/publishing.png +0 -0
  134. data/assets/bower_components/app-layout/site/images/shrine.png +0 -0
  135. data/assets/bower_components/app-layout/site/images/test-drive.png +0 -0
  136. data/assets/bower_components/app-layout/site/resources.json +76 -0
  137. data/assets/bower_components/app-layout/templates/getting-started/bower.json +13 -0
  138. data/assets/bower_components/app-layout/templates/getting-started/index.html +39 -0
  139. data/assets/bower_components/app-layout/templates/getting-started/x-app.html +75 -0
  140. data/assets/bower_components/app-layout/templates/landing-page/bower.json +14 -0
  141. data/assets/bower_components/app-layout/templates/landing-page/index.html +39 -0
  142. data/assets/bower_components/app-layout/templates/landing-page/x-app.html +186 -0
  143. data/assets/bower_components/app-layout/templates/pesto/bower.json +24 -0
  144. data/assets/bower_components/app-layout/templates/pesto/data/recipes.json +402 -0
  145. data/assets/bower_components/app-layout/templates/pesto/index.html +55 -0
  146. data/assets/bower_components/app-layout/templates/pesto/manifest.json +15 -0
  147. data/assets/bower_components/app-layout/templates/pesto/src/app-icons.html +27 -0
  148. data/assets/bower_components/app-layout/templates/pesto/src/recipe-app.html +210 -0
  149. data/assets/bower_components/app-layout/templates/pesto/src/recipe-detail.html +224 -0
  150. data/assets/bower_components/app-layout/templates/pesto/src/recipe-list.html +190 -0
  151. data/assets/bower_components/app-layout/templates/publishing/bower.json +23 -0
  152. data/assets/bower_components/app-layout/templates/publishing/data/articles.json +111 -0
  153. data/assets/bower_components/app-layout/templates/publishing/index.html +49 -0
  154. data/assets/bower_components/app-layout/templates/publishing/manifest.json +21 -0
  155. data/assets/bower_components/app-layout/templates/publishing/src/app-icons.html +20 -0
  156. data/assets/bower_components/app-layout/templates/publishing/src/article-detail.html +119 -0
  157. data/assets/bower_components/app-layout/templates/publishing/src/article-headline.html +69 -0
  158. data/assets/bower_components/app-layout/templates/publishing/src/blog-app.html +331 -0
  159. data/assets/bower_components/app-layout/templates/publishing/src/two-columns-grid.html +142 -0
  160. data/assets/bower_components/app-layout/templates/shrine/bower.json +21 -0
  161. data/assets/bower_components/app-layout/templates/shrine/data/featured.json +72 -0
  162. data/assets/bower_components/app-layout/templates/shrine/data/items.json +192 -0
  163. data/assets/bower_components/app-layout/templates/shrine/index.html +48 -0
  164. data/assets/bower_components/app-layout/templates/shrine/manifest.json +22 -0
  165. data/assets/bower_components/app-layout/templates/shrine/src/shrine-app.html +397 -0
  166. data/assets/bower_components/app-layout/templates/shrine/src/shrine-detail.html +297 -0
  167. data/assets/bower_components/app-layout/templates/shrine/src/shrine-featured-item.html +210 -0
  168. data/assets/bower_components/app-layout/templates/shrine/src/shrine-item.html +136 -0
  169. data/assets/bower_components/app-layout/templates/shrine/src/shrine-list.html +127 -0
  170. data/assets/bower_components/app-layout/templates/shrine/src/shrine-simple-item.html +82 -0
  171. data/assets/bower_components/app-layout/templates/test-drive/bower.json +14 -0
  172. data/assets/bower_components/app-layout/templates/test-drive/index.html +40 -0
  173. data/assets/bower_components/app-layout/templates/test-drive/test-app.html +233 -0
  174. data/assets/bower_components/app-layout/test/index.html +33 -0
  175. data/assets/bower_components/font-roboto/.bower.json +31 -0
  176. data/assets/bower_components/font-roboto/README.md +1 -0
  177. data/assets/bower_components/font-roboto/bower.json +22 -0
  178. data/assets/bower_components/font-roboto/roboto.html +11 -0
  179. data/assets/bower_components/iron-a11y-announcer/.bower.json +43 -0
  180. data/assets/bower_components/iron-a11y-announcer/.github/ISSUE_TEMPLATE.md +33 -0
  181. data/assets/bower_components/iron-a11y-announcer/.gitignore +1 -0
  182. data/assets/bower_components/iron-a11y-announcer/.travis.yml +23 -0
  183. data/assets/bower_components/iron-a11y-announcer/CONTRIBUTING.md +77 -0
  184. data/assets/bower_components/iron-a11y-announcer/README.md +55 -0
  185. data/assets/bower_components/iron-a11y-announcer/bower.json +33 -0
  186. data/assets/bower_components/iron-a11y-announcer/demo/index.html +38 -0
  187. data/assets/bower_components/iron-a11y-announcer/demo/x-announces.html +60 -0
  188. data/assets/bower_components/iron-a11y-announcer/index.html +28 -0
  189. data/assets/bower_components/iron-a11y-announcer/iron-a11y-announcer.html +124 -0
  190. data/assets/bower_components/iron-a11y-announcer/test/index.html +24 -0
  191. data/assets/bower_components/iron-a11y-announcer/test/iron-a11y-announcer.html +56 -0
  192. data/assets/bower_components/iron-a11y-keys-behavior/.bower.json +43 -0
  193. data/assets/bower_components/iron-a11y-keys-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  194. data/assets/bower_components/iron-a11y-keys-behavior/.gitignore +1 -0
  195. data/assets/bower_components/iron-a11y-keys-behavior/.travis.yml +25 -0
  196. data/assets/bower_components/iron-a11y-keys-behavior/CONTRIBUTING.md +77 -0
  197. data/assets/bower_components/iron-a11y-keys-behavior/README.md +58 -0
  198. data/assets/bower_components/iron-a11y-keys-behavior/bower.json +33 -0
  199. data/assets/bower_components/iron-a11y-keys-behavior/demo/index.html +24 -0
  200. data/assets/bower_components/iron-a11y-keys-behavior/demo/x-key-aware.html +105 -0
  201. data/assets/bower_components/iron-a11y-keys-behavior/index.html +24 -0
  202. data/assets/bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html +496 -0
  203. data/assets/bower_components/iron-a11y-keys-behavior/test/basic-test.html +445 -0
  204. data/assets/bower_components/iron-a11y-keys-behavior/test/index.html +28 -0
  205. data/assets/bower_components/iron-autogrow-textarea/.bower.json +48 -0
  206. data/assets/bower_components/iron-autogrow-textarea/.github/ISSUE_TEMPLATE.md +33 -0
  207. data/assets/bower_components/iron-autogrow-textarea/.gitignore +1 -0
  208. data/assets/bower_components/iron-autogrow-textarea/.travis.yml +23 -0
  209. data/assets/bower_components/iron-autogrow-textarea/CONTRIBUTING.md +77 -0
  210. data/assets/bower_components/iron-autogrow-textarea/README.md +41 -0
  211. data/assets/bower_components/iron-autogrow-textarea/bower.json +39 -0
  212. data/assets/bower_components/iron-autogrow-textarea/demo/index.html +111 -0
  213. data/assets/bower_components/iron-autogrow-textarea/hero.svg +33 -0
  214. data/assets/bower_components/iron-autogrow-textarea/index.html +30 -0
  215. data/assets/bower_components/iron-autogrow-textarea/iron-autogrow-textarea.html +361 -0
  216. data/assets/bower_components/iron-autogrow-textarea/test/basic.html +190 -0
  217. data/assets/bower_components/iron-autogrow-textarea/test/index.html +24 -0
  218. data/assets/bower_components/iron-behaviors/.bower.json +42 -0
  219. data/assets/bower_components/iron-behaviors/.github/ISSUE_TEMPLATE.md +33 -0
  220. data/assets/bower_components/iron-behaviors/.gitignore +1 -0
  221. data/assets/bower_components/iron-behaviors/.travis.yml +23 -0
  222. data/assets/bower_components/iron-behaviors/CONTRIBUTING.md +77 -0
  223. data/assets/bower_components/iron-behaviors/README.md +22 -0
  224. data/assets/bower_components/iron-behaviors/bower.json +32 -0
  225. data/assets/bower_components/iron-behaviors/demo/index.html +48 -0
  226. data/assets/bower_components/iron-behaviors/demo/simple-button.html +66 -0
  227. data/assets/bower_components/iron-behaviors/index.html +27 -0
  228. data/assets/bower_components/iron-behaviors/iron-button-state.html +228 -0
  229. data/assets/bower_components/iron-behaviors/iron-control-state.html +110 -0
  230. data/assets/bower_components/iron-behaviors/test/active-state.html +280 -0
  231. data/assets/bower_components/iron-behaviors/test/disabled-state.html +82 -0
  232. data/assets/bower_components/iron-behaviors/test/focused-state.html +161 -0
  233. data/assets/bower_components/iron-behaviors/test/index.html +27 -0
  234. data/assets/bower_components/iron-behaviors/test/test-elements.html +91 -0
  235. data/assets/bower_components/iron-checked-element-behavior/.bower.json +43 -0
  236. data/assets/bower_components/iron-checked-element-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  237. data/assets/bower_components/iron-checked-element-behavior/.gitignore +1 -0
  238. data/assets/bower_components/iron-checked-element-behavior/.travis.yml +23 -0
  239. data/assets/bower_components/iron-checked-element-behavior/CONTRIBUTING.md +77 -0
  240. data/assets/bower_components/iron-checked-element-behavior/README.md +27 -0
  241. data/assets/bower_components/iron-checked-element-behavior/bower.json +34 -0
  242. data/assets/bower_components/iron-checked-element-behavior/demo/index.html +39 -0
  243. data/assets/bower_components/iron-checked-element-behavior/demo/simple-checkbox.html +65 -0
  244. data/assets/bower_components/iron-checked-element-behavior/index.html +30 -0
  245. data/assets/bower_components/iron-checked-element-behavior/iron-checked-element-behavior.html +120 -0
  246. data/assets/bower_components/iron-checked-element-behavior/test/basic.html +152 -0
  247. data/assets/bower_components/iron-checked-element-behavior/test/index.html +31 -0
  248. data/assets/bower_components/iron-checked-element-behavior/test/simple-checkbox.html +26 -0
  249. data/assets/bower_components/iron-collapse/.bower.json +43 -0
  250. data/assets/bower_components/iron-collapse/.github/ISSUE_TEMPLATE.md +33 -0
  251. data/assets/bower_components/iron-collapse/.gitignore +1 -0
  252. data/assets/bower_components/iron-collapse/.travis.yml +24 -0
  253. data/assets/bower_components/iron-collapse/CONTRIBUTING.md +77 -0
  254. data/assets/bower_components/iron-collapse/README.md +66 -0
  255. data/assets/bower_components/iron-collapse/bower.json +34 -0
  256. data/assets/bower_components/iron-collapse/demo/index.html +104 -0
  257. data/assets/bower_components/iron-collapse/hero.svg +23 -0
  258. data/assets/bower_components/iron-collapse/index.html +31 -0
  259. data/assets/bower_components/iron-collapse/iron-collapse.html +302 -0
  260. data/assets/bower_components/iron-collapse/test/a11y.html +74 -0
  261. data/assets/bower_components/iron-collapse/test/basic.html +199 -0
  262. data/assets/bower_components/iron-collapse/test/flex.html +152 -0
  263. data/assets/bower_components/iron-collapse/test/horizontal.html +97 -0
  264. data/assets/bower_components/iron-collapse/test/index.html +35 -0
  265. data/assets/bower_components/iron-collapse/test/nested.html +131 -0
  266. data/assets/bower_components/iron-dropdown/.bower.json +47 -0
  267. data/assets/bower_components/iron-dropdown/.github/ISSUE_TEMPLATE.md +33 -0
  268. data/assets/bower_components/iron-dropdown/.gitignore +1 -0
  269. data/assets/bower_components/iron-dropdown/.travis.yml +23 -0
  270. data/assets/bower_components/iron-dropdown/CONTRIBUTING.md +77 -0
  271. data/assets/bower_components/iron-dropdown/README.md +46 -0
  272. data/assets/bower_components/iron-dropdown/bower.json +38 -0
  273. data/assets/bower_components/iron-dropdown/demo/grow-height-animation.html +36 -0
  274. data/assets/bower_components/iron-dropdown/demo/index.html +160 -0
  275. data/assets/bower_components/iron-dropdown/demo/x-select.html +80 -0
  276. data/assets/bower_components/iron-dropdown/index.html +24 -0
  277. data/assets/bower_components/iron-dropdown/iron-dropdown-scroll-manager.html +350 -0
  278. data/assets/bower_components/iron-dropdown/iron-dropdown.html +347 -0
  279. data/assets/bower_components/iron-dropdown/test/index.html +28 -0
  280. data/assets/bower_components/iron-dropdown/test/iron-dropdown-scroll-manager.html +187 -0
  281. data/assets/bower_components/iron-dropdown/test/iron-dropdown.html +519 -0
  282. data/assets/bower_components/iron-dropdown/test/x-scrollable-element.html +53 -0
  283. data/assets/bower_components/iron-fit-behavior/.bower.json +41 -0
  284. data/assets/bower_components/iron-fit-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  285. data/assets/bower_components/iron-fit-behavior/.gitignore +1 -0
  286. data/assets/bower_components/iron-fit-behavior/.travis.yml +23 -0
  287. data/assets/bower_components/iron-fit-behavior/CONTRIBUTING.md +77 -0
  288. data/assets/bower_components/iron-fit-behavior/README.md +57 -0
  289. data/assets/bower_components/iron-fit-behavior/bower.json +31 -0
  290. data/assets/bower_components/iron-fit-behavior/demo/index.html +166 -0
  291. data/assets/bower_components/iron-fit-behavior/demo/simple-fit.html +41 -0
  292. data/assets/bower_components/iron-fit-behavior/index.html +30 -0
  293. data/assets/bower_components/iron-fit-behavior/iron-fit-behavior.html +598 -0
  294. data/assets/bower_components/iron-fit-behavior/test/index.html +31 -0
  295. data/assets/bower_components/iron-fit-behavior/test/iron-fit-behavior.html +949 -0
  296. data/assets/bower_components/iron-fit-behavior/test/test-fit.html +41 -0
  297. data/assets/bower_components/iron-flex-layout/.bower.json +41 -0
  298. data/assets/bower_components/iron-flex-layout/.gitignore +2 -0
  299. data/assets/bower_components/iron-flex-layout/.travis.yml +25 -0
  300. data/assets/bower_components/iron-flex-layout/CONTRIBUTING.md +77 -0
  301. data/assets/bower_components/iron-flex-layout/README.md +55 -0
  302. data/assets/bower_components/iron-flex-layout/bower.json +31 -0
  303. data/assets/bower_components/iron-flex-layout/classes/iron-flex-layout.html +311 -0
  304. data/assets/bower_components/iron-flex-layout/classes/iron-shadow-flex-layout.html +307 -0
  305. data/assets/bower_components/iron-flex-layout/demo/index.html +396 -0
  306. data/assets/bower_components/iron-flex-layout/index.html +24 -0
  307. data/assets/bower_components/iron-flex-layout/iron-flex-layout-classes.html +431 -0
  308. data/assets/bower_components/iron-flex-layout/iron-flex-layout.html +399 -0
  309. data/assets/bower_components/iron-flex-layout/test/index.html +31 -0
  310. data/assets/bower_components/iron-flex-layout/test/iron-flex-layout-classes.html +412 -0
  311. data/assets/bower_components/iron-flex-layout/test/iron-flex-layout.html +434 -0
  312. data/assets/bower_components/iron-form-element-behavior/.bower.json +41 -0
  313. data/assets/bower_components/iron-form-element-behavior/.gitignore +1 -0
  314. data/assets/bower_components/iron-form-element-behavior/.travis.yml +22 -0
  315. data/assets/bower_components/iron-form-element-behavior/CONTRIBUTING.md +72 -0
  316. data/assets/bower_components/iron-form-element-behavior/README.md +23 -0
  317. data/assets/bower_components/iron-form-element-behavior/bower.json +31 -0
  318. data/assets/bower_components/iron-form-element-behavior/demo/index.html +67 -0
  319. data/assets/bower_components/iron-form-element-behavior/demo/simple-element.html +27 -0
  320. data/assets/bower_components/iron-form-element-behavior/demo/simple-form.html +53 -0
  321. data/assets/bower_components/iron-form-element-behavior/index.html +30 -0
  322. data/assets/bower_components/iron-form-element-behavior/iron-form-element-behavior.html +86 -0
  323. data/assets/bower_components/iron-form-element-behavior/test/basic.html +71 -0
  324. data/assets/bower_components/iron-form-element-behavior/test/index.html +24 -0
  325. data/assets/bower_components/iron-form-element-behavior/test/simple-element.html +23 -0
  326. data/assets/bower_components/iron-form-element-behavior/test/simple-form.html +19 -0
  327. data/assets/bower_components/iron-icon/.bower.json +45 -0
  328. data/assets/bower_components/iron-icon/.github/ISSUE_TEMPLATE.md +33 -0
  329. data/assets/bower_components/iron-icon/.gitignore +1 -0
  330. data/assets/bower_components/iron-icon/.travis.yml +23 -0
  331. data/assets/bower_components/iron-icon/CONTRIBUTING.md +77 -0
  332. data/assets/bower_components/iron-icon/README.md +22 -0
  333. data/assets/bower_components/iron-icon/bower.json +35 -0
  334. data/assets/bower_components/iron-icon/demo/async.html +62 -0
  335. data/assets/bower_components/iron-icon/demo/index.html +48 -0
  336. data/assets/bower_components/iron-icon/demo/location.png +0 -0
  337. data/assets/bower_components/iron-icon/hero.svg +19 -0
  338. data/assets/bower_components/iron-icon/index.html +26 -0
  339. data/assets/bower_components/iron-icon/iron-icon.html +210 -0
  340. data/assets/bower_components/iron-icon/test/index.html +27 -0
  341. data/assets/bower_components/iron-icon/test/iron-icon.html +246 -0
  342. data/assets/bower_components/iron-icons/.bower.json +48 -0
  343. data/assets/bower_components/iron-icons/.github/ISSUE_TEMPLATE.md +33 -0
  344. data/assets/bower_components/iron-icons/.gitignore +3 -0
  345. data/assets/bower_components/iron-icons/.travis.yml +24 -0
  346. data/assets/bower_components/iron-icons/CONTRIBUTING.md +77 -0
  347. data/assets/bower_components/iron-icons/README.md +49 -0
  348. data/assets/bower_components/iron-icons/av-icons.html +96 -0
  349. data/assets/bower_components/iron-icons/bower.json +38 -0
  350. data/assets/bower_components/iron-icons/communication-icons.html +66 -0
  351. data/assets/bower_components/iron-icons/demo/index.html +116 -0
  352. data/assets/bower_components/iron-icons/device-icons.html +95 -0
  353. data/assets/bower_components/iron-icons/editor-icons.html +84 -0
  354. data/assets/bower_components/iron-icons/hardware-icons.html +64 -0
  355. data/assets/bower_components/iron-icons/hero.svg +35 -0
  356. data/assets/bower_components/iron-icons/image-icons.html +171 -0
  357. data/assets/bower_components/iron-icons/index.html +26 -0
  358. data/assets/bower_components/iron-icons/iron-icons.html +353 -0
  359. data/assets/bower_components/iron-icons/maps-icons.html +84 -0
  360. data/assets/bower_components/iron-icons/notification-icons.html +70 -0
  361. data/assets/bower_components/iron-icons/places-icons.html +35 -0
  362. data/assets/bower_components/iron-icons/social-icons.html +46 -0
  363. data/assets/bower_components/iron-iconset-svg/.bower.json +44 -0
  364. data/assets/bower_components/iron-iconset-svg/.github/ISSUE_TEMPLATE.md +33 -0
  365. data/assets/bower_components/iron-iconset-svg/.gitignore +1 -0
  366. data/assets/bower_components/iron-iconset-svg/.travis.yml +23 -0
  367. data/assets/bower_components/iron-iconset-svg/CONTRIBUTING.md +77 -0
  368. data/assets/bower_components/iron-iconset-svg/README.md +56 -0
  369. data/assets/bower_components/iron-iconset-svg/bower.json +34 -0
  370. data/assets/bower_components/iron-iconset-svg/demo/index.html +70 -0
  371. data/assets/bower_components/iron-iconset-svg/demo/svg-sample-icons.html +81 -0
  372. data/assets/bower_components/iron-iconset-svg/index.html +26 -0
  373. data/assets/bower_components/iron-iconset-svg/iron-iconset-svg.html +241 -0
  374. data/assets/bower_components/iron-iconset-svg/test/index.html +27 -0
  375. data/assets/bower_components/iron-iconset-svg/test/iron-iconset-svg.html +233 -0
  376. data/assets/bower_components/iron-image/.bower.json +43 -0
  377. data/assets/bower_components/iron-image/.github/ISSUE_TEMPLATE.md +33 -0
  378. data/assets/bower_components/iron-image/.gitignore +1 -0
  379. data/assets/bower_components/iron-image/.travis.yml +23 -0
  380. data/assets/bower_components/iron-image/CONTRIBUTING.md +77 -0
  381. data/assets/bower_components/iron-image/README.md +86 -0
  382. data/assets/bower_components/iron-image/bower.json +33 -0
  383. data/assets/bower_components/iron-image/demo/index.html +266 -0
  384. data/assets/bower_components/iron-image/demo/loading.png +0 -0
  385. data/assets/bower_components/iron-image/demo/polymer.svg +175 -0
  386. data/assets/bower_components/iron-image/index.html +24 -0
  387. data/assets/bower_components/iron-image/iron-image.html +404 -0
  388. data/assets/bower_components/iron-image/test/index.html +23 -0
  389. data/assets/bower_components/iron-image/test/iron-image.html +338 -0
  390. data/assets/bower_components/iron-input/.bower.json +44 -0
  391. data/assets/bower_components/iron-input/.github/ISSUE_TEMPLATE.md +33 -0
  392. data/assets/bower_components/iron-input/.gitignore +1 -0
  393. data/assets/bower_components/iron-input/.travis.yml +23 -0
  394. data/assets/bower_components/iron-input/CONTRIBUTING.md +77 -0
  395. data/assets/bower_components/iron-input/README.md +59 -0
  396. data/assets/bower_components/iron-input/bower.json +35 -0
  397. data/assets/bower_components/iron-input/demo/index.html +87 -0
  398. data/assets/bower_components/iron-input/hero.svg +19 -0
  399. data/assets/bower_components/iron-input/index.html +30 -0
  400. data/assets/bower_components/iron-input/iron-input.html +306 -0
  401. data/assets/bower_components/iron-input/test/disabled-input.html +32 -0
  402. data/assets/bower_components/iron-input/test/index.html +24 -0
  403. data/assets/bower_components/iron-input/test/iron-input.html +281 -0
  404. data/assets/bower_components/iron-input/test/letters-only.html +30 -0
  405. data/assets/bower_components/iron-media-query/.bower.json +41 -0
  406. data/assets/bower_components/iron-media-query/.gitignore +1 -0
  407. data/assets/bower_components/iron-media-query/.travis.yml +22 -0
  408. data/assets/bower_components/iron-media-query/CONTRIBUTING.md +72 -0
  409. data/assets/bower_components/iron-media-query/README.md +28 -0
  410. data/assets/bower_components/iron-media-query/bower.json +32 -0
  411. data/assets/bower_components/iron-media-query/demo/index.html +93 -0
  412. data/assets/bower_components/iron-media-query/hero.svg +29 -0
  413. data/assets/bower_components/iron-media-query/index.html +29 -0
  414. data/assets/bower_components/iron-media-query/iron-media-query.html +121 -0
  415. data/assets/bower_components/iron-media-query/test/basic.html +118 -0
  416. data/assets/bower_components/iron-media-query/test/index.html +26 -0
  417. data/assets/bower_components/iron-menu-behavior/.bower.json +46 -0
  418. data/assets/bower_components/iron-menu-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  419. data/assets/bower_components/iron-menu-behavior/.gitignore +1 -0
  420. data/assets/bower_components/iron-menu-behavior/.travis.yml +23 -0
  421. data/assets/bower_components/iron-menu-behavior/CONTRIBUTING.md +77 -0
  422. data/assets/bower_components/iron-menu-behavior/README.md +30 -0
  423. data/assets/bower_components/iron-menu-behavior/bower.json +37 -0
  424. data/assets/bower_components/iron-menu-behavior/demo/index.html +118 -0
  425. data/assets/bower_components/iron-menu-behavior/demo/simple-menu.html +48 -0
  426. data/assets/bower_components/iron-menu-behavior/demo/simple-menubar.html +52 -0
  427. data/assets/bower_components/iron-menu-behavior/index.html +30 -0
  428. data/assets/bower_components/iron-menu-behavior/iron-menu-behavior.html +376 -0
  429. data/assets/bower_components/iron-menu-behavior/iron-menubar-behavior.html +81 -0
  430. data/assets/bower_components/iron-menu-behavior/test/index.html +33 -0
  431. data/assets/bower_components/iron-menu-behavior/test/iron-menu-behavior.html +559 -0
  432. data/assets/bower_components/iron-menu-behavior/test/iron-menubar-behavior.html +162 -0
  433. data/assets/bower_components/iron-menu-behavior/test/test-menu.html +46 -0
  434. data/assets/bower_components/iron-menu-behavior/test/test-menubar.html +46 -0
  435. data/assets/bower_components/iron-menu-behavior/test/test-nested-menu.html +44 -0
  436. data/assets/bower_components/iron-meta/.bower.json +40 -0
  437. data/assets/bower_components/iron-meta/.github/ISSUE_TEMPLATE.md +33 -0
  438. data/assets/bower_components/iron-meta/.gitignore +1 -0
  439. data/assets/bower_components/iron-meta/.travis.yml +23 -0
  440. data/assets/bower_components/iron-meta/CONTRIBUTING.md +77 -0
  441. data/assets/bower_components/iron-meta/README.md +110 -0
  442. data/assets/bower_components/iron-meta/bower.json +30 -0
  443. data/assets/bower_components/iron-meta/demo/index.html +76 -0
  444. data/assets/bower_components/iron-meta/hero.svg +33 -0
  445. data/assets/bower_components/iron-meta/index.html +27 -0
  446. data/assets/bower_components/iron-meta/iron-meta.html +333 -0
  447. data/assets/bower_components/iron-meta/test/basic.html +48 -0
  448. data/assets/bower_components/iron-meta/test/index.html +29 -0
  449. data/assets/bower_components/iron-meta/test/iron-meta.html +195 -0
  450. data/assets/bower_components/iron-overlay-behavior/.bower.json +47 -0
  451. data/assets/bower_components/iron-overlay-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  452. data/assets/bower_components/iron-overlay-behavior/.gitignore +1 -0
  453. data/assets/bower_components/iron-overlay-behavior/.travis.yml +23 -0
  454. data/assets/bower_components/iron-overlay-behavior/CONTRIBUTING.md +77 -0
  455. data/assets/bower_components/iron-overlay-behavior/README.md +78 -0
  456. data/assets/bower_components/iron-overlay-behavior/bower.json +37 -0
  457. data/assets/bower_components/iron-overlay-behavior/demo/index.html +188 -0
  458. data/assets/bower_components/iron-overlay-behavior/demo/simple-overlay.html +46 -0
  459. data/assets/bower_components/iron-overlay-behavior/index.html +30 -0
  460. data/assets/bower_components/iron-overlay-behavior/iron-focusables-helper.html +220 -0
  461. data/assets/bower_components/iron-overlay-behavior/iron-overlay-backdrop.html +168 -0
  462. data/assets/bower_components/iron-overlay-behavior/iron-overlay-behavior.html +638 -0
  463. data/assets/bower_components/iron-overlay-behavior/iron-overlay-manager.html +362 -0
  464. data/assets/bower_components/iron-overlay-behavior/test/index.html +33 -0
  465. data/assets/bower_components/iron-overlay-behavior/test/iron-focusables-helper.html +182 -0
  466. data/assets/bower_components/iron-overlay-behavior/test/iron-overlay-backdrop.html +85 -0
  467. data/assets/bower_components/iron-overlay-behavior/test/iron-overlay-behavior.html +1250 -0
  468. data/assets/bower_components/iron-overlay-behavior/test/test-buttons-wrapper.html +39 -0
  469. data/assets/bower_components/iron-overlay-behavior/test/test-buttons.html +34 -0
  470. data/assets/bower_components/iron-overlay-behavior/test/test-menu-button.html +38 -0
  471. data/assets/bower_components/iron-overlay-behavior/test/test-overlay.html +101 -0
  472. data/assets/bower_components/iron-overlay-behavior/test/test-overlay2.html +52 -0
  473. data/assets/bower_components/iron-range-behavior/.bower.json +39 -0
  474. data/assets/bower_components/iron-range-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  475. data/assets/bower_components/iron-range-behavior/.gitignore +1 -0
  476. data/assets/bower_components/iron-range-behavior/.travis.yml +23 -0
  477. data/assets/bower_components/iron-range-behavior/CONTRIBUTING.md +77 -0
  478. data/assets/bower_components/iron-range-behavior/README.md +24 -0
  479. data/assets/bower_components/iron-range-behavior/bower.json +29 -0
  480. data/assets/bower_components/iron-range-behavior/demo/index.html +80 -0
  481. data/assets/bower_components/iron-range-behavior/index.html +24 -0
  482. data/assets/bower_components/iron-range-behavior/iron-range-behavior.html +121 -0
  483. data/assets/bower_components/iron-range-behavior/test/basic.html +180 -0
  484. data/assets/bower_components/iron-range-behavior/test/index.html +24 -0
  485. data/assets/bower_components/iron-range-behavior/test/x-progressbar.html +19 -0
  486. data/assets/bower_components/iron-resizable-behavior/.bower.json +41 -0
  487. data/assets/bower_components/iron-resizable-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  488. data/assets/bower_components/iron-resizable-behavior/.gitignore +1 -0
  489. data/assets/bower_components/iron-resizable-behavior/.travis.yml +23 -0
  490. data/assets/bower_components/iron-resizable-behavior/CONTRIBUTING.md +77 -0
  491. data/assets/bower_components/iron-resizable-behavior/README.md +36 -0
  492. data/assets/bower_components/iron-resizable-behavior/bower.json +31 -0
  493. data/assets/bower_components/iron-resizable-behavior/demo/index.html +29 -0
  494. data/assets/bower_components/iron-resizable-behavior/demo/src/x-app.html +105 -0
  495. data/assets/bower_components/iron-resizable-behavior/index.html +25 -0
  496. data/assets/bower_components/iron-resizable-behavior/iron-resizable-behavior.html +195 -0
  497. data/assets/bower_components/iron-resizable-behavior/test/basic.html +223 -0
  498. data/assets/bower_components/iron-resizable-behavior/test/index.html +29 -0
  499. data/assets/bower_components/iron-resizable-behavior/test/iron-resizable-behavior.html +88 -0
  500. data/assets/bower_components/iron-resizable-behavior/test/test-elements.html +193 -0
  501. data/assets/bower_components/iron-scroll-target-behavior/.bower.json +40 -0
  502. data/assets/bower_components/iron-scroll-target-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  503. data/assets/bower_components/iron-scroll-target-behavior/.gitignore +2 -0
  504. data/assets/bower_components/iron-scroll-target-behavior/.travis.yml +23 -0
  505. data/assets/bower_components/iron-scroll-target-behavior/CONTRIBUTING.md +77 -0
  506. data/assets/bower_components/iron-scroll-target-behavior/README.md +28 -0
  507. data/assets/bower_components/iron-scroll-target-behavior/bower.json +31 -0
  508. data/assets/bower_components/iron-scroll-target-behavior/demo/document.html +39 -0
  509. data/assets/bower_components/iron-scroll-target-behavior/demo/scrolling-region.html +51 -0
  510. data/assets/bower_components/iron-scroll-target-behavior/demo/x-scrollable.html +101 -0
  511. data/assets/bower_components/iron-scroll-target-behavior/index.html +28 -0
  512. data/assets/bower_components/iron-scroll-target-behavior/iron-scroll-target-behavior.html +260 -0
  513. data/assets/bower_components/iron-scroll-target-behavior/test/basic.html +317 -0
  514. data/assets/bower_components/iron-scroll-target-behavior/test/index.html +32 -0
  515. data/assets/bower_components/iron-scroll-target-behavior/test/x-nested-scrollable.html +39 -0
  516. data/assets/bower_components/iron-scroll-target-behavior/test/x-scrollable.html +65 -0
  517. data/assets/bower_components/iron-selector/.bower.json +42 -0
  518. data/assets/bower_components/iron-selector/.github/ISSUE_TEMPLATE.md +33 -0
  519. data/assets/bower_components/iron-selector/.gitignore +2 -0
  520. data/assets/bower_components/iron-selector/.travis.yml +23 -0
  521. data/assets/bower_components/iron-selector/CONTRIBUTING.md +77 -0
  522. data/assets/bower_components/iron-selector/README.md +91 -0
  523. data/assets/bower_components/iron-selector/bower.json +33 -0
  524. data/assets/bower_components/iron-selector/demo/index.html +101 -0
  525. data/assets/bower_components/iron-selector/index.html +28 -0
  526. data/assets/bower_components/iron-selector/iron-multi-selectable.html +154 -0
  527. data/assets/bower_components/iron-selector/iron-selectable.html +388 -0
  528. data/assets/bower_components/iron-selector/iron-selection.html +119 -0
  529. data/assets/bower_components/iron-selector/iron-selector.html +87 -0
  530. data/assets/bower_components/iron-selector/test/activate-event.html +150 -0
  531. data/assets/bower_components/iron-selector/test/attr-for-selected-elements.html +30 -0
  532. data/assets/bower_components/iron-selector/test/attr-for-selected.html +229 -0
  533. data/assets/bower_components/iron-selector/test/basic.html +263 -0
  534. data/assets/bower_components/iron-selector/test/content-element.html +44 -0
  535. data/assets/bower_components/iron-selector/test/content.html +169 -0
  536. data/assets/bower_components/iron-selector/test/excluded-local-names.html +96 -0
  537. data/assets/bower_components/iron-selector/test/index.html +43 -0
  538. data/assets/bower_components/iron-selector/test/multi.html +375 -0
  539. data/assets/bower_components/iron-selector/test/next-previous.html +135 -0
  540. data/assets/bower_components/iron-selector/test/numeric-ids.html +73 -0
  541. data/assets/bower_components/iron-selector/test/selected-attribute.html +129 -0
  542. data/assets/bower_components/iron-selector/test/template-repeat.html +104 -0
  543. data/assets/bower_components/iron-validatable-behavior/.bower.json +42 -0
  544. data/assets/bower_components/iron-validatable-behavior/.github/ISSUE_TEMPLATE.md +33 -0
  545. data/assets/bower_components/iron-validatable-behavior/.gitignore +1 -0
  546. data/assets/bower_components/iron-validatable-behavior/.travis.yml +23 -0
  547. data/assets/bower_components/iron-validatable-behavior/CONTRIBUTING.md +77 -0
  548. data/assets/bower_components/iron-validatable-behavior/README.md +42 -0
  549. data/assets/bower_components/iron-validatable-behavior/bower.json +33 -0
  550. data/assets/bower_components/iron-validatable-behavior/demo/cats-only.html +46 -0
  551. data/assets/bower_components/iron-validatable-behavior/demo/index.html +71 -0
  552. data/assets/bower_components/iron-validatable-behavior/demo/validatable-input.html +46 -0
  553. data/assets/bower_components/iron-validatable-behavior/index.html +30 -0
  554. data/assets/bower_components/iron-validatable-behavior/iron-validatable-behavior.html +149 -0
  555. data/assets/bower_components/iron-validatable-behavior/test/cats-only.html +30 -0
  556. data/assets/bower_components/iron-validatable-behavior/test/dogs-only.html +30 -0
  557. data/assets/bower_components/iron-validatable-behavior/test/index.html +32 -0
  558. data/assets/bower_components/iron-validatable-behavior/test/iron-validatable-behavior.html +88 -0
  559. data/assets/bower_components/iron-validatable-behavior/test/test-validatable.html +29 -0
  560. data/assets/bower_components/neon-animation/.bower.json +61 -0
  561. data/assets/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md +33 -0
  562. data/assets/bower_components/neon-animation/.gitignore +1 -0
  563. data/assets/bower_components/neon-animation/.travis.yml +23 -0
  564. data/assets/bower_components/neon-animation/CONTRIBUTING.md +77 -0
  565. data/assets/bower_components/neon-animation/README.md +306 -0
  566. data/assets/bower_components/neon-animation/animations/cascaded-animation.html +95 -0
  567. data/assets/bower_components/neon-animation/animations/fade-in-animation.html +49 -0
  568. data/assets/bower_components/neon-animation/animations/fade-out-animation.html +49 -0
  569. data/assets/bower_components/neon-animation/animations/hero-animation.html +83 -0
  570. data/assets/bower_components/neon-animation/animations/opaque-animation.html +46 -0
  571. data/assets/bower_components/neon-animation/animations/reverse-ripple-animation.html +87 -0
  572. data/assets/bower_components/neon-animation/animations/ripple-animation.html +93 -0
  573. data/assets/bower_components/neon-animation/animations/scale-down-animation.html +65 -0
  574. data/assets/bower_components/neon-animation/animations/scale-up-animation.html +65 -0
  575. data/assets/bower_components/neon-animation/animations/slide-down-animation.html +59 -0
  576. data/assets/bower_components/neon-animation/animations/slide-from-bottom-animation.html +59 -0
  577. data/assets/bower_components/neon-animation/animations/slide-from-left-animation.html +60 -0
  578. data/assets/bower_components/neon-animation/animations/slide-from-right-animation.html +60 -0
  579. data/assets/bower_components/neon-animation/animations/slide-from-top-animation.html +59 -0
  580. data/assets/bower_components/neon-animation/animations/slide-left-animation.html +59 -0
  581. data/assets/bower_components/neon-animation/animations/slide-right-animation.html +59 -0
  582. data/assets/bower_components/neon-animation/animations/slide-up-animation.html +59 -0
  583. data/assets/bower_components/neon-animation/animations/transform-animation.html +70 -0
  584. data/assets/bower_components/neon-animation/bower.json +52 -0
  585. data/assets/bower_components/neon-animation/demo/card/index.html +166 -0
  586. data/assets/bower_components/neon-animation/demo/card/x-card.html +94 -0
  587. data/assets/bower_components/neon-animation/demo/card/x-cards-list.html +75 -0
  588. data/assets/bower_components/neon-animation/demo/declarative/index.html +132 -0
  589. data/assets/bower_components/neon-animation/demo/doc/index.html +70 -0
  590. data/assets/bower_components/neon-animation/demo/doc/my-animatable.html +68 -0
  591. data/assets/bower_components/neon-animation/demo/doc/my-dialog.html +94 -0
  592. data/assets/bower_components/neon-animation/demo/dropdown/animated-dropdown.html +90 -0
  593. data/assets/bower_components/neon-animation/demo/dropdown/index.html +54 -0
  594. data/assets/bower_components/neon-animation/demo/grid/animated-grid.html +164 -0
  595. data/assets/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html +122 -0
  596. data/assets/bower_components/neon-animation/demo/grid/index.html +64 -0
  597. data/assets/bower_components/neon-animation/demo/index.html +45 -0
  598. data/assets/bower_components/neon-animation/demo/list/full-view.html +118 -0
  599. data/assets/bower_components/neon-animation/demo/list/index.html +35 -0
  600. data/assets/bower_components/neon-animation/demo/list/list-demo.html +102 -0
  601. data/assets/bower_components/neon-animation/demo/list/list-view.html +124 -0
  602. data/assets/bower_components/neon-animation/demo/load/animated-grid.html +146 -0
  603. data/assets/bower_components/neon-animation/demo/load/full-page.html +82 -0
  604. data/assets/bower_components/neon-animation/demo/load/index.html +48 -0
  605. data/assets/bower_components/neon-animation/demo/reprojection/animated-grid.html +167 -0
  606. data/assets/bower_components/neon-animation/demo/reprojection/fullsize-page-with-card.html +120 -0
  607. data/assets/bower_components/neon-animation/demo/reprojection/index.html +63 -0
  608. data/assets/bower_components/neon-animation/demo/reprojection/reprojected-pages.html +45 -0
  609. data/assets/bower_components/neon-animation/demo/shared-styles.html +47 -0
  610. data/assets/bower_components/neon-animation/demo/tiles/circles-page.html +107 -0
  611. data/assets/bower_components/neon-animation/demo/tiles/index.html +70 -0
  612. data/assets/bower_components/neon-animation/demo/tiles/squares-page.html +100 -0
  613. data/assets/bower_components/neon-animation/guides/neon-animation.md +314 -0
  614. data/assets/bower_components/neon-animation/index.html +30 -0
  615. data/assets/bower_components/neon-animation/neon-animatable-behavior.html +150 -0
  616. data/assets/bower_components/neon-animation/neon-animatable.html +54 -0
  617. data/assets/bower_components/neon-animation/neon-animated-pages.html +220 -0
  618. data/assets/bower_components/neon-animation/neon-animation-behavior.html +86 -0
  619. data/assets/bower_components/neon-animation/neon-animation-runner-behavior.html +129 -0
  620. data/assets/bower_components/neon-animation/neon-animation.html +18 -0
  621. data/assets/bower_components/neon-animation/neon-animations.html +29 -0
  622. data/assets/bower_components/neon-animation/neon-shared-element-animatable-behavior.html +43 -0
  623. data/assets/bower_components/neon-animation/neon-shared-element-animation-behavior.html +72 -0
  624. data/assets/bower_components/neon-animation/test/index.html +28 -0
  625. data/assets/bower_components/neon-animation/test/neon-animated-pages-descendant-selection.html +118 -0
  626. data/assets/bower_components/neon-animation/test/neon-animated-pages-lazy.html +73 -0
  627. data/assets/bower_components/neon-animation/test/neon-animated-pages.html +101 -0
  628. data/assets/bower_components/neon-animation/test/test-resizable-pages.html +58 -0
  629. data/assets/bower_components/neon-animation/web-animations.html +11 -0
  630. data/assets/bower_components/paper-badge/.bower.json +46 -0
  631. data/assets/bower_components/paper-badge/.github/ISSUE_TEMPLATE.md +33 -0
  632. data/assets/bower_components/paper-badge/.gitignore +1 -0
  633. data/assets/bower_components/paper-badge/.travis.yml +23 -0
  634. data/assets/bower_components/paper-badge/CONTRIBUTING.md +77 -0
  635. data/assets/bower_components/paper-badge/README.md +67 -0
  636. data/assets/bower_components/paper-badge/bower.json +37 -0
  637. data/assets/bower_components/paper-badge/demo/index.html +112 -0
  638. data/assets/bower_components/paper-badge/demo/test-button.html +44 -0
  639. data/assets/bower_components/paper-badge/index.html +28 -0
  640. data/assets/bower_components/paper-badge/paper-badge.html +240 -0
  641. data/assets/bower_components/paper-badge/test/basic.html +278 -0
  642. data/assets/bower_components/paper-badge/test/index.html +24 -0
  643. data/assets/bower_components/paper-badge/test/test-button.html +36 -0
  644. data/assets/bower_components/paper-behaviors/.bower.json +51 -0
  645. data/assets/bower_components/paper-behaviors/.github/ISSUE_TEMPLATE.md +33 -0
  646. data/assets/bower_components/paper-behaviors/.gitignore +1 -0
  647. data/assets/bower_components/paper-behaviors/.travis.yml +23 -0
  648. data/assets/bower_components/paper-behaviors/CONTRIBUTING.md +77 -0
  649. data/assets/bower_components/paper-behaviors/README.md +44 -0
  650. data/assets/bower_components/paper-behaviors/bower.json +42 -0
  651. data/assets/bower_components/paper-behaviors/demo/index.html +45 -0
  652. data/assets/bower_components/paper-behaviors/demo/paper-button.html +64 -0
  653. data/assets/bower_components/paper-behaviors/demo/paper-radio-button.html +112 -0
  654. data/assets/bower_components/paper-behaviors/index.html +26 -0
  655. data/assets/bower_components/paper-behaviors/paper-button-behavior.html +97 -0
  656. data/assets/bower_components/paper-behaviors/paper-checked-element-behavior.html +57 -0
  657. data/assets/bower_components/paper-behaviors/paper-inky-focus-behavior.html +51 -0
  658. data/assets/bower_components/paper-behaviors/paper-ripple-behavior.html +126 -0
  659. data/assets/bower_components/paper-behaviors/test/index.html +29 -0
  660. data/assets/bower_components/paper-behaviors/test/paper-button-behavior.html +113 -0
  661. data/assets/bower_components/paper-behaviors/test/paper-checked-element-behavior.html +94 -0
  662. data/assets/bower_components/paper-behaviors/test/paper-radio-button-behavior.html +58 -0
  663. data/assets/bower_components/paper-behaviors/test/paper-ripple-behavior.html +335 -0
  664. data/assets/bower_components/paper-behaviors/test/shadowed-ripple.html +55 -0
  665. data/assets/bower_components/paper-behaviors/test/test-button.html +34 -0
  666. data/assets/bower_components/paper-behaviors/test/test-radio-button.html +41 -0
  667. data/assets/bower_components/paper-button/.bower.json +50 -0
  668. data/assets/bower_components/paper-button/.github/ISSUE_TEMPLATE.md +33 -0
  669. data/assets/bower_components/paper-button/.gitignore +1 -0
  670. data/assets/bower_components/paper-button/.travis.yml +23 -0
  671. data/assets/bower_components/paper-button/CONTRIBUTING.md +77 -0
  672. data/assets/bower_components/paper-button/README.md +73 -0
  673. data/assets/bower_components/paper-button/bower.json +41 -0
  674. data/assets/bower_components/paper-button/demo/index.html +138 -0
  675. data/assets/bower_components/paper-button/index.html +26 -0
  676. data/assets/bower_components/paper-button/paper-button.html +186 -0
  677. data/assets/bower_components/paper-button/test/index.html +24 -0
  678. data/assets/bower_components/paper-button/test/paper-button.html +108 -0
  679. data/assets/bower_components/paper-card/.bower.json +49 -0
  680. data/assets/bower_components/paper-card/.github/ISSUE_TEMPLATE.md +33 -0
  681. data/assets/bower_components/paper-card/.gitignore +1 -0
  682. data/assets/bower_components/paper-card/.travis.yml +23 -0
  683. data/assets/bower_components/paper-card/CONTRIBUTING.md +77 -0
  684. data/assets/bower_components/paper-card/README.md +79 -0
  685. data/assets/bower_components/paper-card/bower.json +40 -0
  686. data/assets/bower_components/paper-card/demo/cafe.png +0 -0
  687. data/assets/bower_components/paper-card/demo/donuts.png +0 -0
  688. data/assets/bower_components/paper-card/demo/house.png +0 -0
  689. data/assets/bower_components/paper-card/demo/index.html +323 -0
  690. data/assets/bower_components/paper-card/demo/travel.png +0 -0
  691. data/assets/bower_components/paper-card/demo/trip.png +0 -0
  692. data/assets/bower_components/paper-card/index.html +28 -0
  693. data/assets/bower_components/paper-card/paper-card.html +254 -0
  694. data/assets/bower_components/paper-card/test/basic.html +109 -0
  695. data/assets/bower_components/paper-card/test/index.html +26 -0
  696. data/assets/bower_components/paper-chip/.bower.json +47 -0
  697. data/assets/bower_components/paper-chip/LICENSE +20 -0
  698. data/assets/bower_components/paper-chip/README.md +11 -0
  699. data/assets/bower_components/paper-chip/bower.json +37 -0
  700. data/assets/bower_components/paper-chip/demo/avatars.html +29 -0
  701. data/assets/bower_components/paper-chip/demo/index.html +173 -0
  702. data/assets/bower_components/paper-chip/gulpfile.js +125 -0
  703. data/assets/bower_components/paper-chip/index.html +18 -0
  704. data/assets/bower_components/paper-chip/package.json +43 -0
  705. data/assets/bower_components/paper-chip/paper-chip.html +459 -0
  706. data/assets/bower_components/paper-dropdown-menu/.bower.json +57 -0
  707. data/assets/bower_components/paper-dropdown-menu/.github/ISSUE_TEMPLATE.md +33 -0
  708. data/assets/bower_components/paper-dropdown-menu/.gitignore +1 -0
  709. data/assets/bower_components/paper-dropdown-menu/.travis.yml +24 -0
  710. data/assets/bower_components/paper-dropdown-menu/CONTRIBUTING.md +77 -0
  711. data/assets/bower_components/paper-dropdown-menu/README.md +44 -0
  712. data/assets/bower_components/paper-dropdown-menu/bower.json +48 -0
  713. data/assets/bower_components/paper-dropdown-menu/demo/index.html +295 -0
  714. data/assets/bower_components/paper-dropdown-menu/index.html +24 -0
  715. data/assets/bower_components/paper-dropdown-menu/paper-dropdown-menu-icons.html +17 -0
  716. data/assets/bower_components/paper-dropdown-menu/paper-dropdown-menu-light.html +596 -0
  717. data/assets/bower_components/paper-dropdown-menu/paper-dropdown-menu-shared-styles.html +78 -0
  718. data/assets/bower_components/paper-dropdown-menu/paper-dropdown-menu.html +406 -0
  719. data/assets/bower_components/paper-dropdown-menu/test/index.html +26 -0
  720. data/assets/bower_components/paper-dropdown-menu/test/paper-dropdown-menu-light.html +219 -0
  721. data/assets/bower_components/paper-dropdown-menu/test/paper-dropdown-menu.html +220 -0
  722. data/assets/bower_components/paper-fab/.bower.json +49 -0
  723. data/assets/bower_components/paper-fab/.github/ISSUE_TEMPLATE.md +33 -0
  724. data/assets/bower_components/paper-fab/.gitignore +1 -0
  725. data/assets/bower_components/paper-fab/.travis.yml +23 -0
  726. data/assets/bower_components/paper-fab/CONTRIBUTING.md +77 -0
  727. data/assets/bower_components/paper-fab/README.md +53 -0
  728. data/assets/bower_components/paper-fab/bower.json +39 -0
  729. data/assets/bower_components/paper-fab/demo/index.html +90 -0
  730. data/assets/bower_components/paper-fab/index.html +24 -0
  731. data/assets/bower_components/paper-fab/paper-fab.html +187 -0
  732. data/assets/bower_components/paper-fab/test/a11y.html +67 -0
  733. data/assets/bower_components/paper-fab/test/basic.html +141 -0
  734. data/assets/bower_components/paper-fab/test/index.html +26 -0
  735. data/assets/bower_components/paper-header-panel/.bower.json +43 -0
  736. data/assets/bower_components/paper-header-panel/.github/ISSUE_TEMPLATE.md +33 -0
  737. data/assets/bower_components/paper-header-panel/.gitignore +1 -0
  738. data/assets/bower_components/paper-header-panel/.travis.yml +23 -0
  739. data/assets/bower_components/paper-header-panel/CONTRIBUTING.md +77 -0
  740. data/assets/bower_components/paper-header-panel/README.md +152 -0
  741. data/assets/bower_components/paper-header-panel/bower.json +33 -0
  742. data/assets/bower_components/paper-header-panel/demo/index.html +150 -0
  743. data/assets/bower_components/paper-header-panel/hero.svg +38 -0
  744. data/assets/bower_components/paper-header-panel/index.html +36 -0
  745. data/assets/bower_components/paper-header-panel/paper-header-panel.html +512 -0
  746. data/assets/bower_components/paper-header-panel/test/basic.html +156 -0
  747. data/assets/bower_components/paper-header-panel/test/index.html +31 -0
  748. data/assets/bower_components/paper-icon-button/.bower.json +50 -0
  749. data/assets/bower_components/paper-icon-button/.github/ISSUE_TEMPLATE.md +33 -0
  750. data/assets/bower_components/paper-icon-button/.gitignore +1 -0
  751. data/assets/bower_components/paper-icon-button/.travis.yml +23 -0
  752. data/assets/bower_components/paper-icon-button/CONTRIBUTING.md +77 -0
  753. data/assets/bower_components/paper-icon-button/README.md +95 -0
  754. data/assets/bower_components/paper-icon-button/bower.json +40 -0
  755. data/assets/bower_components/paper-icon-button/demo/index.html +103 -0
  756. data/assets/bower_components/paper-icon-button/demo/paper-icon-button-light.html +57 -0
  757. data/assets/bower_components/paper-icon-button/index.html +23 -0
  758. data/assets/bower_components/paper-icon-button/paper-icon-button-light.html +91 -0
  759. data/assets/bower_components/paper-icon-button/paper-icon-button.html +176 -0
  760. data/assets/bower_components/paper-icon-button/test/a11y.html +92 -0
  761. data/assets/bower_components/paper-icon-button/test/basic.html +75 -0
  762. data/assets/bower_components/paper-icon-button/test/index.html +26 -0
  763. data/assets/bower_components/paper-input/.bower.json +61 -0
  764. data/assets/bower_components/paper-input/.github/ISSUE_TEMPLATE.md +33 -0
  765. data/assets/bower_components/paper-input/.gitignore +1 -0
  766. data/assets/bower_components/paper-input/.travis.yml +24 -0
  767. data/assets/bower_components/paper-input/CONTRIBUTING.md +77 -0
  768. data/assets/bower_components/paper-input/README.md +38 -0
  769. data/assets/bower_components/paper-input/all-imports.html +12 -0
  770. data/assets/bower_components/paper-input/bower.json +51 -0
  771. data/assets/bower_components/paper-input/demo/index.html +155 -0
  772. data/assets/bower_components/paper-input/demo/ssn-input.html +96 -0
  773. data/assets/bower_components/paper-input/demo/ssn-validator.html +27 -0
  774. data/assets/bower_components/paper-input/hero.svg +19 -0
  775. data/assets/bower_components/paper-input/index.html +28 -0
  776. data/assets/bower_components/paper-input/paper-input-addon-behavior.html +47 -0
  777. data/assets/bower_components/paper-input/paper-input-behavior.html +569 -0
  778. data/assets/bower_components/paper-input/paper-input-char-counter.html +99 -0
  779. data/assets/bower_components/paper-input/paper-input-container.html +626 -0
  780. data/assets/bower_components/paper-input/paper-input-error.html +94 -0
  781. data/assets/bower_components/paper-input/paper-input.html +170 -0
  782. data/assets/bower_components/paper-input/paper-textarea.html +144 -0
  783. data/assets/bower_components/paper-input/test/index.html +32 -0
  784. data/assets/bower_components/paper-input/test/letters-only.html +30 -0
  785. data/assets/bower_components/paper-input/test/paper-input-char-counter.html +109 -0
  786. data/assets/bower_components/paper-input/test/paper-input-container.html +302 -0
  787. data/assets/bower_components/paper-input/test/paper-input-error.html +68 -0
  788. data/assets/bower_components/paper-input/test/paper-input.html +398 -0
  789. data/assets/bower_components/paper-input/test/paper-textarea.html +233 -0
  790. data/assets/bower_components/paper-item/.bower.json +53 -0
  791. data/assets/bower_components/paper-item/.github/ISSUE_TEMPLATE.md +33 -0
  792. data/assets/bower_components/paper-item/.gitignore +1 -0
  793. data/assets/bower_components/paper-item/.travis.yml +23 -0
  794. data/assets/bower_components/paper-item/CONTRIBUTING.md +77 -0
  795. data/assets/bower_components/paper-item/README.md +163 -0
  796. data/assets/bower_components/paper-item/all-imports.html +13 -0
  797. data/assets/bower_components/paper-item/bower.json +43 -0
  798. data/assets/bower_components/paper-item/demo/index.html +191 -0
  799. data/assets/bower_components/paper-item/index.html +30 -0
  800. data/assets/bower_components/paper-item/paper-icon-item.html +86 -0
  801. data/assets/bower_components/paper-item/paper-item-behavior.html +36 -0
  802. data/assets/bower_components/paper-item/paper-item-body.html +83 -0
  803. data/assets/bower_components/paper-item/paper-item-shared-styles.html +70 -0
  804. data/assets/bower_components/paper-item/paper-item.html +111 -0
  805. data/assets/bower_components/paper-item/test/index.html +31 -0
  806. data/assets/bower_components/paper-item/test/paper-item.html +218 -0
  807. data/assets/bower_components/paper-material/.bower.json +44 -0
  808. data/assets/bower_components/paper-material/.gitignore +1 -0
  809. data/assets/bower_components/paper-material/.travis.yml +25 -0
  810. data/assets/bower_components/paper-material/CONTRIBUTING.md +72 -0
  811. data/assets/bower_components/paper-material/README.md +35 -0
  812. data/assets/bower_components/paper-material/bower.json +35 -0
  813. data/assets/bower_components/paper-material/demo/index.html +84 -0
  814. data/assets/bower_components/paper-material/index.html +30 -0
  815. data/assets/bower_components/paper-material/paper-material-shared-styles.html +42 -0
  816. data/assets/bower_components/paper-material/paper-material.html +78 -0
  817. data/assets/bower_components/paper-material/test/index.html +24 -0
  818. data/assets/bower_components/paper-material/test/paper-material.html +88 -0
  819. data/assets/bower_components/paper-menu-button/.bower.json +56 -0
  820. data/assets/bower_components/paper-menu-button/.github/ISSUE_TEMPLATE.md +33 -0
  821. data/assets/bower_components/paper-menu-button/.gitignore +1 -0
  822. data/assets/bower_components/paper-menu-button/.travis.yml +23 -0
  823. data/assets/bower_components/paper-menu-button/CONTRIBUTING.md +77 -0
  824. data/assets/bower_components/paper-menu-button/README.md +69 -0
  825. data/assets/bower_components/paper-menu-button/bower.json +47 -0
  826. data/assets/bower_components/paper-menu-button/demo/index.html +203 -0
  827. data/assets/bower_components/paper-menu-button/hero.svg +39 -0
  828. data/assets/bower_components/paper-menu-button/index.html +24 -0
  829. data/assets/bower_components/paper-menu-button/paper-menu-button-animations.html +109 -0
  830. data/assets/bower_components/paper-menu-button/paper-menu-button.html +479 -0
  831. data/assets/bower_components/paper-menu-button/test/index.html +24 -0
  832. data/assets/bower_components/paper-menu-button/test/paper-menu-button.html +199 -0
  833. data/assets/bower_components/paper-menu/.bower.json +49 -0
  834. data/assets/bower_components/paper-menu/.gitignore +1 -0
  835. data/assets/bower_components/paper-menu/.travis.yml +25 -0
  836. data/assets/bower_components/paper-menu/CONTRIBUTING.md +72 -0
  837. data/assets/bower_components/paper-menu/README.md +113 -0
  838. data/assets/bower_components/paper-menu/bower.json +39 -0
  839. data/assets/bower_components/paper-menu/demo/index.html +150 -0
  840. data/assets/bower_components/paper-menu/hero.svg +35 -0
  841. data/assets/bower_components/paper-menu/index.html +30 -0
  842. data/assets/bower_components/paper-menu/paper-menu-shared-styles.html +47 -0
  843. data/assets/bower_components/paper-menu/paper-menu.html +102 -0
  844. data/assets/bower_components/paper-menu/paper-submenu.html +231 -0
  845. data/assets/bower_components/paper-menu/test/index.html +37 -0
  846. data/assets/bower_components/paper-menu/test/paper-menu.html +64 -0
  847. data/assets/bower_components/paper-menu/test/paper-submenu.html +203 -0
  848. data/assets/bower_components/paper-progress/.bower.json +43 -0
  849. data/assets/bower_components/paper-progress/.github/ISSUE_TEMPLATE.md +33 -0
  850. data/assets/bower_components/paper-progress/.gitignore +1 -0
  851. data/assets/bower_components/paper-progress/.travis.yml +23 -0
  852. data/assets/bower_components/paper-progress/CONTRIBUTING.md +77 -0
  853. data/assets/bower_components/paper-progress/README.md +49 -0
  854. data/assets/bower_components/paper-progress/bower.json +33 -0
  855. data/assets/bower_components/paper-progress/demo/index.html +127 -0
  856. data/assets/bower_components/paper-progress/hero.svg +21 -0
  857. data/assets/bower_components/paper-progress/index.html +28 -0
  858. data/assets/bower_components/paper-progress/paper-progress.html +354 -0
  859. data/assets/bower_components/paper-progress/test/basic.html +148 -0
  860. data/assets/bower_components/paper-progress/test/index.html +24 -0
  861. data/assets/bower_components/paper-ripple/.bower.json +45 -0
  862. data/assets/bower_components/paper-ripple/.github/ISSUE_TEMPLATE.md +33 -0
  863. data/assets/bower_components/paper-ripple/.gitignore +1 -0
  864. data/assets/bower_components/paper-ripple/.travis.yml +23 -0
  865. data/assets/bower_components/paper-ripple/CONTRIBUTING.md +77 -0
  866. data/assets/bower_components/paper-ripple/README.md +40 -0
  867. data/assets/bower_components/paper-ripple/bower.json +35 -0
  868. data/assets/bower_components/paper-ripple/demo/index.html +415 -0
  869. data/assets/bower_components/paper-ripple/hero.svg +30 -0
  870. data/assets/bower_components/paper-ripple/index.html +27 -0
  871. data/assets/bower_components/paper-ripple/paper-ripple.html +763 -0
  872. data/assets/bower_components/paper-ripple/test/index.html +24 -0
  873. data/assets/bower_components/paper-ripple/test/paper-ripple.html +253 -0
  874. data/assets/bower_components/paper-spinner/.bower.json +47 -0
  875. data/assets/bower_components/paper-spinner/.github/ISSUE_TEMPLATE.md +33 -0
  876. data/assets/bower_components/paper-spinner/.gitignore +1 -0
  877. data/assets/bower_components/paper-spinner/.travis.yml +23 -0
  878. data/assets/bower_components/paper-spinner/CONTRIBUTING.md +77 -0
  879. data/assets/bower_components/paper-spinner/README.md +49 -0
  880. data/assets/bower_components/paper-spinner/bower.json +38 -0
  881. data/assets/bower_components/paper-spinner/demo/index.html +97 -0
  882. data/assets/bower_components/paper-spinner/hero.svg +27 -0
  883. data/assets/bower_components/paper-spinner/index.html +30 -0
  884. data/assets/bower_components/paper-spinner/paper-spinner-behavior.html +87 -0
  885. data/assets/bower_components/paper-spinner/paper-spinner-lite.html +71 -0
  886. data/assets/bower_components/paper-spinner/paper-spinner-styles.html +341 -0
  887. data/assets/bower_components/paper-spinner/paper-spinner.html +91 -0
  888. data/assets/bower_components/paper-spinner/test/index.html +31 -0
  889. data/assets/bower_components/paper-spinner/test/paper-spinner.html +86 -0
  890. data/assets/bower_components/paper-styles/.bower.json +42 -0
  891. data/assets/bower_components/paper-styles/CONTRIBUTING.md +77 -0
  892. data/assets/bower_components/paper-styles/README.md +49 -0
  893. data/assets/bower_components/paper-styles/bower.json +33 -0
  894. data/assets/bower_components/paper-styles/classes/global.html +96 -0
  895. data/assets/bower_components/paper-styles/classes/shadow-layout.html +307 -0
  896. data/assets/bower_components/paper-styles/classes/shadow.html +52 -0
  897. data/assets/bower_components/paper-styles/classes/typography.html +169 -0
  898. data/assets/bower_components/paper-styles/color.html +333 -0
  899. data/assets/bower_components/paper-styles/default-theme.html +72 -0
  900. data/assets/bower_components/paper-styles/demo-pages.html +72 -0
  901. data/assets/bower_components/paper-styles/demo.css +25 -0
  902. data/assets/bower_components/paper-styles/demo/index.html +339 -0
  903. data/assets/bower_components/paper-styles/index.html +24 -0
  904. data/assets/bower_components/paper-styles/paper-styles-classes.html +14 -0
  905. data/assets/bower_components/paper-styles/paper-styles.html +44 -0
  906. data/assets/bower_components/paper-styles/shadow.html +76 -0
  907. data/assets/bower_components/paper-styles/typography.html +169 -0
  908. data/assets/bower_components/paper-tabs/.bower.json +54 -0
  909. data/assets/bower_components/paper-tabs/.github/ISSUE_TEMPLATE.md +33 -0
  910. data/assets/bower_components/paper-tabs/.gitignore +1 -0
  911. data/assets/bower_components/paper-tabs/.travis.yml +24 -0
  912. data/assets/bower_components/paper-tabs/CONTRIBUTING.md +77 -0
  913. data/assets/bower_components/paper-tabs/README.md +46 -0
  914. data/assets/bower_components/paper-tabs/bower.json +44 -0
  915. data/assets/bower_components/paper-tabs/demo/index.html +338 -0
  916. data/assets/bower_components/paper-tabs/hero.svg +23 -0
  917. data/assets/bower_components/paper-tabs/index.html +25 -0
  918. data/assets/bower_components/paper-tabs/paper-tab.html +176 -0
  919. data/assets/bower_components/paper-tabs/paper-tabs-icons.html +18 -0
  920. data/assets/bower_components/paper-tabs/paper-tabs.html +661 -0
  921. data/assets/bower_components/paper-tabs/test/attr-for-selected.html +82 -0
  922. data/assets/bower_components/paper-tabs/test/basic.html +394 -0
  923. data/assets/bower_components/paper-tabs/test/index.html +31 -0
  924. data/assets/bower_components/paper-tabs/test/links.html +163 -0
  925. data/assets/bower_components/paper-toolbar/.bower.json +47 -0
  926. data/assets/bower_components/paper-toolbar/.github/ISSUE_TEMPLATE.md +33 -0
  927. data/assets/bower_components/paper-toolbar/.gitignore +1 -0
  928. data/assets/bower_components/paper-toolbar/.travis.yml +23 -0
  929. data/assets/bower_components/paper-toolbar/CONTRIBUTING.md +77 -0
  930. data/assets/bower_components/paper-toolbar/README.md +107 -0
  931. data/assets/bower_components/paper-toolbar/bower.json +37 -0
  932. data/assets/bower_components/paper-toolbar/demo/index.html +186 -0
  933. data/assets/bower_components/paper-toolbar/index.html +38 -0
  934. data/assets/bower_components/paper-toolbar/paper-toolbar.html +383 -0
  935. data/assets/bower_components/paper-toolbar/test/index.html +24 -0
  936. data/assets/bower_components/paper-toolbar/test/paper-toolbar.html +148 -0
  937. data/assets/bower_components/paper-tooltip/.bower.json +45 -0
  938. data/assets/bower_components/paper-tooltip/.github/ISSUE_TEMPLATE.md +33 -0
  939. data/assets/bower_components/paper-tooltip/.gitignore +1 -0
  940. data/assets/bower_components/paper-tooltip/.travis.yml +23 -0
  941. data/assets/bower_components/paper-tooltip/CONTRIBUTING.md +77 -0
  942. data/assets/bower_components/paper-tooltip/README.md +62 -0
  943. data/assets/bower_components/paper-tooltip/bower.json +36 -0
  944. data/assets/bower_components/paper-tooltip/demo/index.html +133 -0
  945. data/assets/bower_components/paper-tooltip/demo/test-button.html +37 -0
  946. data/assets/bower_components/paper-tooltip/index.html +28 -0
  947. data/assets/bower_components/paper-tooltip/paper-tooltip.html +395 -0
  948. data/assets/bower_components/paper-tooltip/test/basic.html +501 -0
  949. data/assets/bower_components/paper-tooltip/test/index.html +24 -0
  950. data/assets/bower_components/paper-tooltip/test/test-button.html +43 -0
  951. data/assets/bower_components/paper-ui-elements/.bower.json +35 -0
  952. data/assets/bower_components/paper-ui-elements/README.md +2 -0
  953. data/assets/bower_components/paper-ui-elements/bower.json +24 -0
  954. data/assets/bower_components/polymer/.bower.json +45 -0
  955. data/assets/bower_components/polymer/LICENSE.txt +27 -0
  956. data/assets/bower_components/polymer/bower.json +35 -0
  957. data/assets/bower_components/polymer/build.log +626 -0
  958. data/assets/bower_components/polymer/polymer-micro.html +732 -0
  959. data/assets/bower_components/polymer/polymer-mini.html +2164 -0
  960. data/assets/bower_components/polymer/polymer.html +5414 -0
  961. data/assets/bower_components/web-animations-js/.bower.json +41 -0
  962. data/assets/bower_components/web-animations-js/CONTRIBUTING.md +105 -0
  963. data/assets/bower_components/web-animations-js/COPYING +202 -0
  964. data/assets/bower_components/web-animations-js/History.md +227 -0
  965. data/assets/bower_components/web-animations-js/README.md +172 -0
  966. data/assets/bower_components/web-animations-js/bower.json +31 -0
  967. data/assets/bower_components/web-animations-js/web-animations-next-lite.min.js +17 -0
  968. data/assets/bower_components/web-animations-js/web-animations-next-lite.min.js.map +1 -0
  969. data/assets/bower_components/web-animations-js/web-animations-next.min.js +17 -0
  970. data/assets/bower_components/web-animations-js/web-animations-next.min.js.map +1 -0
  971. data/assets/bower_components/web-animations-js/web-animations.html +50 -0
  972. data/assets/bower_components/web-animations-js/web-animations.min.js +17 -0
  973. data/assets/bower_components/web-animations-js/web-animations.min.js.map +1 -0
  974. data/assets/bower_components/webcomponentsjs/.bower.json +30 -0
  975. data/assets/bower_components/webcomponentsjs/CustomElements.js +1029 -0
  976. data/assets/bower_components/webcomponentsjs/CustomElements.min.js +11 -0
  977. data/assets/bower_components/webcomponentsjs/HTMLImports.js +1157 -0
  978. data/assets/bower_components/webcomponentsjs/HTMLImports.min.js +11 -0
  979. data/assets/bower_components/webcomponentsjs/MutationObserver.js +350 -0
  980. data/assets/bower_components/webcomponentsjs/MutationObserver.min.js +11 -0
  981. data/assets/bower_components/webcomponentsjs/README.md +155 -0
  982. data/assets/bower_components/webcomponentsjs/ShadowDOM.js +4496 -0
  983. data/assets/bower_components/webcomponentsjs/ShadowDOM.min.js +13 -0
  984. data/assets/bower_components/webcomponentsjs/bower.json +21 -0
  985. data/assets/bower_components/webcomponentsjs/build.log +527 -0
  986. data/assets/bower_components/webcomponentsjs/package.json +31 -0
  987. data/assets/bower_components/webcomponentsjs/webcomponents-lite.js +2505 -0
  988. data/assets/bower_components/webcomponentsjs/webcomponents-lite.min.js +12 -0
  989. data/assets/bower_components/webcomponentsjs/webcomponents.js +7209 -0
  990. data/assets/bower_components/webcomponentsjs/webcomponents.min.js +14 -0
  991. data/assets/css/highlighter.css +80 -0
  992. data/assets/css/simplegrid.css +287 -0
  993. data/assets/css/style.css +45 -0
  994. metadata +1078 -0
@@ -0,0 +1,85 @@
1
+ <!doctype html>
2
+ <!--
3
+ @license
4
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
5
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
6
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
8
+ Code distributed by Google as part of the polymer project is also
9
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
10
+ -->
11
+ <html>
12
+
13
+ <head>
14
+
15
+ <title>iron-overlay-backdrop tests</title>
16
+
17
+ <meta charset="utf-8">
18
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
19
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
20
+
21
+ <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
22
+
23
+ <script src="../../web-component-tester/browser.js"></script>
24
+ <link rel="import" href="../../iron-test-helpers/iron-test-helpers.html">
25
+ <link rel="import" href="test-overlay.html">
26
+
27
+ <style>
28
+ html,
29
+ body {
30
+ margin: 0;
31
+ width: 100%;
32
+ height: 100%;
33
+ min-width: 0;
34
+ }
35
+ .sizer {
36
+ width: 4000px;
37
+ height: 5000px;
38
+ }
39
+ </style>
40
+
41
+ </head>
42
+
43
+ <body>
44
+
45
+ <div class="sizer"></div>
46
+
47
+ <test-fixture id="backdrop">
48
+ <template>
49
+ <test-overlay with-backdrop>
50
+ Overlay with backdrop
51
+ </test-overlay>
52
+ </template>
53
+ </test-fixture>
54
+
55
+ <script>
56
+ function runAfterOpen(overlay, callback) {
57
+ overlay.addEventListener('iron-overlay-opened', callback);
58
+ overlay.open();
59
+ }
60
+
61
+ suite('overlay with backdrop', function() {
62
+ var overlay;
63
+
64
+ setup(function() {
65
+ overlay = fixture('backdrop');
66
+ });
67
+
68
+ test('backdrop size matches parent size', function(done) {
69
+ runAfterOpen(overlay, function() {
70
+ // Flush so we are sure backdrop is added in the DOM.
71
+ Polymer.dom.flush();
72
+ var backdrop = overlay.backdropElement;
73
+ var parent = backdrop.parentElement;
74
+ assert.strictEqual(backdrop.offsetWidth, parent.clientWidth, 'backdrop width matches parent width');
75
+ assert.strictEqual(backdrop.offsetHeight, parent.clientHeight, 'backdrop height matches parent height');
76
+ done();
77
+ });
78
+ });
79
+
80
+ });
81
+ </script>
82
+
83
+ </body>
84
+
85
+ </html>
@@ -0,0 +1,1250 @@
1
+ <!doctype html>
2
+ <!--
3
+ @license
4
+ Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
5
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
6
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
8
+ Code distributed by Google as part of the polymer project is also
9
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
10
+ -->
11
+ <html>
12
+
13
+ <head>
14
+
15
+ <title>iron-overlay-behavior tests</title>
16
+
17
+ <meta charset="utf-8">
18
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
19
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
20
+
21
+ <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
22
+
23
+ <script src="../../web-component-tester/browser.js"></script>
24
+ <link rel="import" href="../../iron-test-helpers/iron-test-helpers.html">
25
+ <link rel="import" href="test-overlay.html">
26
+ <link rel="import" href="test-overlay2.html">
27
+ <link rel="import" href="test-buttons.html">
28
+ <link rel="import" href="test-menu-button.html">
29
+
30
+ <style is="custom-style">
31
+ iron-overlay-backdrop {
32
+ /* For quicker tests */
33
+ --iron-overlay-backdrop: {
34
+ transition: none;
35
+ }
36
+ }
37
+ </style>
38
+
39
+ </head>
40
+
41
+ <body>
42
+
43
+ <test-fixture id="basic">
44
+ <template>
45
+ <test-overlay>
46
+ Basic Overlay
47
+ </test-overlay>
48
+ </template>
49
+ </test-fixture>
50
+
51
+ <test-fixture id="opened">
52
+ <template>
53
+ <test-overlay opened>
54
+ Basic Overlay
55
+ </test-overlay>
56
+ </template>
57
+ </test-fixture>
58
+
59
+ <test-fixture id="autofocus">
60
+ <template>
61
+ <test-overlay>
62
+ Autofocus
63
+ <button autofocus>button</button>
64
+ </test-overlay>
65
+ </template>
66
+ </test-fixture>
67
+
68
+ <test-fixture id="focusables">
69
+ <template>
70
+ <test-overlay tabindex="-1">
71
+ <h2>Focusables (no tabindex)</h2>
72
+ <div>
73
+ <input class="focusable1" placeholder="1 (nested)">
74
+ </div>
75
+ <button class="focusable2">1</button>
76
+ <button disabled> disabled button</button>
77
+ <div tabindex="-1">not focusable</div>
78
+ <button class="focusable3">2</button>
79
+ </test-overlay>
80
+ <test-overlay tabindex="-1">
81
+ <h2>Focusables (with tabindex)</h2>
82
+ <div tabindex="-1">not focusable</div>
83
+ <div tabindex="3" class="focusable3">3</div>
84
+ <div tabindex="4" class="focusable4">4</div>
85
+ <div tabindex="5" class="focusable5">5</div>
86
+ <div>
87
+ <div tabindex="1" class="focusable1">1 (nested)</div>
88
+ <div tabindex="6" class="focusable6">6 (nested)</div>
89
+ </div>
90
+ <div tabindex="2" class="focusable2">2</div>
91
+ </test-overlay>
92
+ <test-overlay2>
93
+ Overlay with optimized focusableNodes getter
94
+ <button class="focusable1">1</button>
95
+ </test-overlay2>
96
+ </template>
97
+ </test-fixture>
98
+
99
+ <test-fixture id="backdrop">
100
+ <template>
101
+ <test-overlay with-backdrop>
102
+ Overlay with backdrop
103
+ </test-overlay>
104
+ </template>
105
+ </test-fixture>
106
+
107
+ <test-fixture id="multiple">
108
+ <template>
109
+ <test-overlay class="overlay-1">
110
+ Test overlay 1
111
+ </test-overlay>
112
+ <test-overlay class="overlay-2">
113
+ Test overlay 2
114
+ <button>Click</button>
115
+ </test-overlay>
116
+ <test-overlay2 class="overlay-3">
117
+ Other overlay 3
118
+ </test-overlay2>
119
+ </template>
120
+ </test-fixture>
121
+
122
+ <test-fixture id="composed">
123
+ <template>
124
+ <test-menu-button></test-menu-button>
125
+ </template>
126
+ </test-fixture>
127
+
128
+ <test-buttons id="buttons"></test-buttons>
129
+ <input id="focusInput" placeholder="focus input">
130
+
131
+ <script>
132
+
133
+ function runAfterOpen(overlay, callback) {
134
+ overlay.addEventListener('iron-overlay-opened', callback);
135
+ overlay.open();
136
+ }
137
+
138
+ function runAfterClose(overlay, callback) {
139
+ overlay.addEventListener('iron-overlay-closed', callback);
140
+ overlay.close();
141
+ }
142
+
143
+ suite('basic overlay', function() {
144
+ var overlay;
145
+
146
+ setup(function() {
147
+ overlay = fixture('basic');
148
+ });
149
+
150
+ test('overlay starts hidden', function() {
151
+ assert.isFalse(overlay.opened, 'overlay starts closed');
152
+ assert.equal(getComputedStyle(overlay).display, 'none', 'overlay starts hidden');
153
+ });
154
+
155
+ test('_renderOpened called only after is attached', function(done) {
156
+ var overlay = document.createElement('test-overlay');
157
+ // The overlay is ready at this point, but not yet attached.
158
+ var spy = sinon.spy(overlay, '_renderOpened');
159
+ // This triggers _openedChanged.
160
+ overlay.opened = true;
161
+ // Wait long enough for requestAnimationFrame callback.
162
+ overlay.async(function() {
163
+ assert.isFalse(spy.called, '_renderOpened not called');
164
+ // Because not attached yet, overlay should not be the current overlay!
165
+ assert.isNotOk(overlay._manager.currentOverlay(), 'currentOverlay not set');
166
+ done();
167
+ }, 100);
168
+ });
169
+
170
+ test('overlay open/close events', function(done) {
171
+ var nevents = 0;
172
+
173
+ overlay.addEventListener('iron-overlay-opened', function() {
174
+ nevents += 1;
175
+ overlay.opened = false;
176
+ });
177
+
178
+ overlay.addEventListener('iron-overlay-closed', function() {
179
+ nevents += 1;
180
+ assert.equal(nevents, 2, 'opened and closed events fired');
181
+ done();
182
+ });
183
+
184
+ overlay.opened = true;
185
+ });
186
+
187
+ test('open() refits overlay only once', function(done) {
188
+ var spy = sinon.spy(overlay, 'refit');
189
+ runAfterOpen(overlay, function() {
190
+ assert.equal(spy.callCount, 1, 'overlay did refit only once');
191
+ done();
192
+ });
193
+ });
194
+
195
+ test('open overlay refits on iron-resize', function(done) {
196
+ runAfterOpen(overlay, function() {
197
+ var spy = sinon.spy(overlay, 'refit');
198
+ overlay.fire('iron-resize');
199
+ Polymer.dom.flush();
200
+ requestAnimationFrame(function() {
201
+ assert.isTrue(spy.called, 'overlay did refit');
202
+ done();
203
+ });
204
+ });
205
+ });
206
+
207
+ test('closed overlay does not refit on iron-resize', function(done) {
208
+ var spy = sinon.spy(overlay, 'refit');
209
+ overlay.fire('iron-resize');
210
+ Polymer.dom.flush();
211
+ requestAnimationFrame(function() {
212
+ assert.isFalse(spy.called, 'overlay should not refit');
213
+ done();
214
+ });
215
+ });
216
+
217
+ test('open() triggers iron-resize', function(done) {
218
+ var callCount = 0;
219
+ // Ignore iron-resize triggered by window resize.
220
+ window.addEventListener('resize', function() { callCount--; }, true);
221
+ overlay.addEventListener('iron-resize', function() { callCount++; });
222
+ runAfterOpen(overlay, function() {
223
+ assert.equal(callCount, 1, 'iron-resize called once before iron-overlay-opened');
224
+ done();
225
+ });
226
+ });
227
+
228
+ test('close() triggers iron-resize', function(done) {
229
+ runAfterOpen(overlay, function() {
230
+ var spy = sinon.stub();
231
+ overlay.addEventListener('iron-resize', spy);
232
+ runAfterClose(overlay, function() {
233
+ assert.equal(spy.callCount, 1, 'iron-resize called once before iron-overlay-closed');
234
+ done();
235
+ });
236
+ });
237
+ });
238
+
239
+ test('closed overlay does not trigger iron-resize when its content changes', function() {
240
+ // Ignore iron-resize triggered by window resize.
241
+ var callCount = 0;
242
+ window.addEventListener('resize', function() { callCount--; }, true);
243
+ overlay.addEventListener('iron-resize', function() { callCount++; });
244
+ Polymer.dom(overlay).appendChild(document.createElement('div'));
245
+ Polymer.dom.flush();
246
+ assert.equal(callCount, 0, 'iron-resize should not be called');
247
+ });
248
+
249
+ test('open overlay triggers iron-resize when its content changes', function(done) {
250
+ runAfterOpen(overlay, function() {
251
+ var spy = sinon.stub();
252
+ overlay.addEventListener('iron-resize', spy);
253
+ Polymer.dom(overlay).appendChild(document.createElement('div'));
254
+ Polymer.dom.flush();
255
+ assert.equal(spy.callCount, 1, 'iron-resize should be called once');
256
+ done();
257
+ });
258
+ });
259
+
260
+ test('close an overlay quickly after open', function(done) {
261
+ // first, open the overlay
262
+ overlay.open();
263
+ overlay.async(function() {
264
+ // during the opening transition, close the overlay
265
+ this.close();
266
+ // wait for any exceptions to be thrown until the transition is done
267
+ this.async(function() {
268
+ done();
269
+ }, 300);
270
+ });
271
+ });
272
+
273
+ test('clicking an overlay does not close it', function(done) {
274
+ runAfterOpen(overlay, function() {
275
+ var spy = sinon.stub();
276
+ overlay.addEventListener('iron-overlay-closed', spy);
277
+ MockInteractions.tap(overlay);
278
+ overlay.async(function() {
279
+ assert.isFalse(spy.called, 'iron-overlay-closed should not fire');
280
+ done();
281
+ }, 10);
282
+ });
283
+ });
284
+
285
+ test('open overlay on mousedown does not close it', function(done) {
286
+ var btn = document.createElement('button');
287
+ btn.addEventListener('mousedown', overlay.open.bind(overlay));
288
+ document.body.appendChild(btn);
289
+ // It triggers mousedown, mouseup, and click.
290
+ MockInteractions.tap(btn);
291
+ document.body.removeChild(btn);
292
+
293
+ assert.isTrue(overlay.opened, 'overlay opened');
294
+ overlay.async(function() {
295
+ assert.isTrue(overlay.opened, 'overlay is still open');
296
+ done();
297
+ }, 10);
298
+ });
299
+
300
+ test('clicking outside fires iron-overlay-canceled', function(done) {
301
+ runAfterOpen(overlay, function() {
302
+ overlay.addEventListener('iron-overlay-canceled', function(event) {
303
+ assert.equal(event.detail.target, document.body, 'detail contains original click event');
304
+ done();
305
+ });
306
+ MockInteractions.tap(document.body);
307
+ });
308
+ });
309
+
310
+ test('clicking outside closes the overlay', function(done) {
311
+ runAfterOpen(overlay, function() {
312
+ overlay.addEventListener('iron-overlay-closed', function(event) {
313
+ assert.isTrue(event.detail.canceled, 'overlay is canceled');
314
+ done();
315
+ });
316
+ MockInteractions.tap(document.body);
317
+ });
318
+ });
319
+
320
+ test('iron-overlay-canceled event can be prevented', function(done) {
321
+ runAfterOpen(overlay, function() {
322
+ overlay.addEventListener('iron-overlay-canceled', function(event) {
323
+ event.preventDefault();
324
+ });
325
+ var spy = sinon.stub();
326
+ overlay.addEventListener('iron-overlay-closed', spy);
327
+ MockInteractions.tap(document.body);
328
+ Polymer.Base.async(function() {
329
+ assert.isTrue(overlay.opened, 'overlay is still open');
330
+ assert.isFalse(spy.called, 'iron-overlay-closed not fired');
331
+ done();
332
+ }, 10);
333
+ });
334
+ });
335
+
336
+ test('cancel an overlay with esc key', function(done) {
337
+ runAfterOpen(overlay, function() {
338
+ overlay.addEventListener('iron-overlay-canceled', function(event) {
339
+ assert.equal(event.detail.type, 'keydown');
340
+ done();
341
+ });
342
+ MockInteractions.pressAndReleaseKeyOn(document, 27);
343
+ });
344
+ });
345
+
346
+ test('close an overlay with esc key', function(done) {
347
+ runAfterOpen(overlay, function() {
348
+ overlay.addEventListener('iron-overlay-closed', function(event) {
349
+ assert.isTrue(event.detail.canceled, 'overlay is canceled');
350
+ done();
351
+ });
352
+ MockInteractions.pressAndReleaseKeyOn(document, 27);
353
+ });
354
+ });
355
+
356
+ test('no-cancel-on-outside-click property', function(done) {
357
+ overlay.noCancelOnOutsideClick = true;
358
+ runAfterOpen(overlay, function() {
359
+ var spy = sinon.stub();
360
+ overlay.addEventListener('iron-overlay-closed', spy);
361
+ MockInteractions.tap(document.body);
362
+ Polymer.Base.async(function() {
363
+ assert.isFalse(spy.called, 'iron-overlay-closed should not fire');
364
+ done();
365
+ }, 10);
366
+ });
367
+ });
368
+
369
+ test('no-cancel-on-esc-key property', function(done) {
370
+ overlay.noCancelOnEscKey = true;
371
+ runAfterOpen(overlay, function() {
372
+ var spy = sinon.stub();
373
+ overlay.addEventListener('iron-overlay-closed', spy);
374
+ MockInteractions.pressAndReleaseKeyOn(document, 27);
375
+ Polymer.Base.async(function() {
376
+ assert.isFalse(spy.called, 'iron-overlay-cancel should not fire');
377
+ done();
378
+ }, 10);
379
+ });
380
+ });
381
+
382
+ test('with-backdrop sets tabindex=-1 and removes it', function() {
383
+ overlay.withBackdrop = true;
384
+ assert.equal(overlay.getAttribute('tabindex'), '-1', 'tabindex is -1');
385
+ overlay.withBackdrop = false;
386
+ assert.isFalse(overlay.hasAttribute('tabindex'), 'tabindex removed');
387
+ });
388
+
389
+ test('with-backdrop does not override tabindex if already set', function() {
390
+ overlay.setAttribute('tabindex', '1');
391
+ overlay.withBackdrop = true;
392
+ assert.equal(overlay.getAttribute('tabindex'), '1', 'tabindex is 1');
393
+ overlay.withBackdrop = false;
394
+ assert.equal(overlay.getAttribute('tabindex'), '1', 'tabindex is still 1');
395
+ });
396
+
397
+ });
398
+
399
+ suite('keyboard event listener', function() {
400
+ var overlay;
401
+
402
+ var preventKeyDown = function(event) {
403
+ event.preventDefault();
404
+ event.stopPropagation();
405
+ }
406
+
407
+ suiteSetup(function() {
408
+ // Worst case scenario: listener with useCapture = true that prevents & stops propagation
409
+ // added before the overlay is initialized.
410
+ document.addEventListener('keydown', preventKeyDown, true);
411
+ });
412
+
413
+ setup(function() {
414
+ overlay = fixture('basic');
415
+ });
416
+
417
+ suiteTeardown(function() {
418
+ document.removeEventListener('keydown', preventKeyDown, true);
419
+ });
420
+
421
+ test('cancel an overlay with esc key even if event is prevented by other listeners', function(done) {
422
+ runAfterOpen(overlay, function() {
423
+ overlay.addEventListener('iron-overlay-canceled', function(event) {
424
+ done();
425
+ });
426
+ MockInteractions.pressAndReleaseKeyOn(document, 27);
427
+ });
428
+ });
429
+ });
430
+
431
+ suite('opened overlay', function() {
432
+ var overlay;
433
+
434
+ setup(function() {
435
+ overlay = fixture('opened');
436
+ });
437
+
438
+ test('overlay open by default', function(done) {
439
+ overlay.addEventListener('iron-overlay-opened', function() {
440
+ assert.isTrue(overlay.opened, 'overlay starts opened');
441
+ assert.notEqual(getComputedStyle(overlay).display, 'none', 'overlay starts showing');
442
+ done();
443
+ });
444
+ });
445
+
446
+ test('overlay positioned & sized properly', function(done) {
447
+ overlay.addEventListener('iron-overlay-opened', function() {
448
+ var s = getComputedStyle(overlay);
449
+ assert.closeTo(parseFloat(s.left), (window.innerWidth - overlay.offsetWidth) / 2, 1, 'centered horizontally');
450
+ assert.closeTo(parseFloat(s.top), (window.innerHeight - overlay.offsetHeight) / 2, 1, 'centered vertically');
451
+ done();
452
+ });
453
+ });
454
+ });
455
+
456
+ suite('focus handling', function() {
457
+ var overlay;
458
+
459
+ setup(function() {
460
+ // Ensure focus is set to document.body
461
+ document.body.focus();
462
+ overlay = fixture('autofocus');
463
+ });
464
+
465
+ test('node with autofocus is focused', function(done) {
466
+ runAfterOpen(overlay, function() {
467
+ assert.equal(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> is focused');
468
+ done();
469
+ });
470
+ });
471
+
472
+ test('no-auto-focus will not focus node with autofocus', function(done) {
473
+ overlay.noAutoFocus = true;
474
+ runAfterOpen(overlay, function() {
475
+ assert.notEqual(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> not focused after opened');
476
+ done();
477
+ });
478
+ // In Safari the element with autofocus will immediately receive focus when displayed for the first time http://jsbin.com/woroci/2/
479
+ // Ensure this is not the case for overlay.
480
+ assert.notEqual(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> not immediately focused');
481
+ });
482
+
483
+ test('no-cancel-on-outside-click property; focus stays on overlay when click outside', function(done) {
484
+ overlay.noCancelOnOutsideClick = true;
485
+ runAfterOpen(overlay, function() {
486
+ MockInteractions.tap(document.body);
487
+ Polymer.Base.async(function() {
488
+ assert.equal(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> is focused');
489
+ done();
490
+ }, 10);
491
+ });
492
+ });
493
+
494
+ test('with-backdrop traps the focus within the overlay', function(done) {
495
+ var focusSpy = sinon.stub();
496
+ var button = document.createElement('button');
497
+ document.body.appendChild(button);
498
+ button.addEventListener('focus', focusSpy, true);
499
+
500
+ overlay.withBackdrop = true;
501
+ runAfterOpen(overlay, function() {
502
+ // Try to steal the focus
503
+ MockInteractions.focus(button);
504
+ assert.equal(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, '<button autofocus> is focused');
505
+ assert.equal(focusSpy.callCount, 0, 'button in body did not get the focus');
506
+ document.body.removeChild(button);
507
+ done();
508
+ });
509
+ });
510
+
511
+ test('overlay with-backdrop and 1 focusable: prevent TAB and trap the focus', function(done) {
512
+ overlay.withBackdrop = true;
513
+ runAfterOpen(overlay, function() {
514
+ // 1ms timeout needed by IE10 to have proper focus switching.
515
+ Polymer.Base.async(function() {
516
+ // Spy keydown.
517
+ var tabSpy = sinon.spy();
518
+ document.addEventListener('keydown', tabSpy);
519
+ // Simulate TAB.
520
+ MockInteractions.pressAndReleaseKeyOn(document, 9);
521
+ assert.equal(Polymer.dom(overlay).querySelector('[autofocus]'), document.activeElement, 'focus stays on button');
522
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
523
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
524
+ // Cleanup.
525
+ document.removeEventListener('keydown', tabSpy);
526
+ done();
527
+ }, 1);
528
+ });
529
+ });
530
+
531
+ test('empty overlay with-backdrop: prevent TAB and trap the focus', function(done) {
532
+ overlay = fixture('basic');
533
+ overlay.withBackdrop = true;
534
+ runAfterOpen(overlay, function() {
535
+ // 1ms timeout needed by IE10 to have proper focus switching.
536
+ Polymer.Base.async(function() {
537
+ // Spy keydown.
538
+ var tabSpy = sinon.spy();
539
+ document.addEventListener('keydown', tabSpy);
540
+ // Simulate TAB.
541
+ MockInteractions.pressAndReleaseKeyOn(document, 9);
542
+ assert.equal(overlay, document.activeElement, 'focus stays on overlay');
543
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
544
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
545
+ // Cleanup.
546
+ document.removeEventListener('keydown', tabSpy);
547
+ done();
548
+ }, 1);
549
+ });
550
+ });
551
+
552
+ });
553
+
554
+ suite('focusable nodes', function() {
555
+ var overlay, overlayWithTabIndex, overlayFocusableNodes;
556
+
557
+ setup(function() {
558
+ var f = fixture('focusables');
559
+ overlay = f[0];
560
+ overlayWithTabIndex = f[1];
561
+ overlayFocusableNodes = f[2];
562
+ });
563
+
564
+ test('_focusableNodes returns nodes that are focusable', function(done) {
565
+ runAfterOpen(overlay, function() {
566
+ var focusableNodes = overlay._focusableNodes;
567
+ assert.equal(focusableNodes.length, 3, '3 nodes are focusable');
568
+ assert.equal(focusableNodes[0], Polymer.dom(overlay).querySelector('.focusable1'));
569
+ assert.equal(focusableNodes[1], Polymer.dom(overlay).querySelector('.focusable2'));
570
+ assert.equal(focusableNodes[2], Polymer.dom(overlay).querySelector('.focusable3'));
571
+ done();
572
+ });
573
+ });
574
+
575
+ test('_focusableNodes includes overlay if it has a valid tabindex', function(done) {
576
+ runAfterOpen(overlay, function() {
577
+ overlay.setAttribute('tabindex', '0');
578
+ var focusableNodes = overlay._focusableNodes;
579
+ assert.equal(focusableNodes.length, 4, '4 focusable nodes');
580
+ assert.notEqual(focusableNodes.indexOf(overlay), -1, 'overlay is included');
581
+ done();
582
+ });
583
+ });
584
+
585
+ test('_focusableNodes respects the tabindex order', function(done) {
586
+ runAfterOpen(overlayWithTabIndex, function() {
587
+ var focusableNodes = overlayWithTabIndex._focusableNodes;
588
+ assert.equal(focusableNodes.length, 6, '6 nodes are focusable');
589
+ assert.equal(focusableNodes[0], Polymer.dom(overlayWithTabIndex).querySelector('.focusable1'));
590
+ assert.equal(focusableNodes[1], Polymer.dom(overlayWithTabIndex).querySelector('.focusable2'));
591
+ assert.equal(focusableNodes[2], Polymer.dom(overlayWithTabIndex).querySelector('.focusable3'));
592
+ assert.equal(focusableNodes[3], Polymer.dom(overlayWithTabIndex).querySelector('.focusable4'));
593
+ assert.equal(focusableNodes[4], Polymer.dom(overlayWithTabIndex).querySelector('.focusable5'));
594
+ assert.equal(focusableNodes[5], Polymer.dom(overlayWithTabIndex).querySelector('.focusable6'));
595
+ done();
596
+ });
597
+ });
598
+
599
+ test('_focusableNodes can be overridden', function(done) {
600
+ runAfterOpen(overlayFocusableNodes, function() {
601
+ // It has 1 focusable in the light dom, and 2 in the shadow dom.
602
+ var focusableNodes = overlayFocusableNodes._focusableNodes;
603
+ assert.equal(focusableNodes.length, 2, 'length ok');
604
+ assert.equal(focusableNodes[0], overlayFocusableNodes.$.first, 'first ok');
605
+ assert.equal(focusableNodes[1], overlayFocusableNodes.$.last, 'last ok');
606
+ done();
607
+ });
608
+ });
609
+
610
+ test('with-backdrop: TAB & Shift+TAB wrap focus', function(done) {
611
+ overlay.withBackdrop = true;
612
+ runAfterOpen(overlay, function() {
613
+ var focusableNodes = overlay._focusableNodes;
614
+ // 1ms timeout needed by IE10 to have proper focus switching.
615
+ Polymer.Base.async(function() {
616
+ // Go to last element.
617
+ focusableNodes[focusableNodes.length-1].focus();
618
+ // Spy keydown.
619
+ var tabSpy = sinon.spy();
620
+ document.addEventListener('keydown', tabSpy);
621
+ // Simulate TAB.
622
+ MockInteractions.pressAndReleaseKeyOn(document, 9);
623
+ assert.equal(focusableNodes[0], document.activeElement, 'focus wrapped to first focusable');
624
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
625
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
626
+ // Simulate Shift+TAB.
627
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
628
+ assert.equal(focusableNodes[focusableNodes.length-1], document.activeElement, 'focus wrapped to last focusable');
629
+ assert.isTrue(tabSpy.calledTwice, 'keydown spy called again');
630
+ assert.isTrue(tabSpy.getCall(1).args[0].defaultPrevented, 'keydown default prevented again');
631
+ // Cleanup.
632
+ document.removeEventListener('keydown', tabSpy);
633
+ done();
634
+ }, 1);
635
+ });
636
+ });
637
+
638
+ test('with-backdrop: TAB & Shift+TAB wrap focus respecting tabindex', function(done) {
639
+ overlayWithTabIndex.withBackdrop = true;
640
+ runAfterOpen(overlayWithTabIndex, function() {
641
+ var focusableNodes = overlayWithTabIndex._focusableNodes;
642
+ // 1ms timeout needed by IE10 to have proper focus switching.
643
+ Polymer.Base.async(function() {
644
+ // Go to last element.
645
+ focusableNodes[focusableNodes.length-1].focus();
646
+ // Simulate TAB.
647
+ MockInteractions.pressAndReleaseKeyOn(document, 9);
648
+ assert.equal(focusableNodes[0], document.activeElement, 'focus wrapped to first focusable');
649
+ // Simulate Shift+TAB.
650
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
651
+ assert.equal(focusableNodes[focusableNodes.length-1], document.activeElement, 'focus wrapped to last focusable');
652
+ done();
653
+ }, 1);
654
+ });
655
+ });
656
+
657
+ test('with-backdrop: Shift+TAB after open wrap focus', function(done) {
658
+ overlay.withBackdrop = true;
659
+ runAfterOpen(overlay, function() {
660
+ var focusableNodes = overlay._focusableNodes;
661
+ // 1ms timeout needed by IE10 to have proper focus switching.
662
+ Polymer.Base.async(function() {
663
+ // Spy keydown.
664
+ var tabSpy = sinon.spy();
665
+ document.addEventListener('keydown', tabSpy);
666
+ // Simulate Shift+TAB.
667
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
668
+ assert.equal(focusableNodes[focusableNodes.length-1], document.activeElement, 'focus wrapped to last focusable');
669
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
670
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
671
+ // Cleanup.
672
+ document.removeEventListener('keydown', tabSpy);
673
+ done();
674
+ }, 1);
675
+ });
676
+ });
677
+
678
+ test('with-backdrop: after open, update last focusable node and then Shift+TAB', function(done) {
679
+ overlay.withBackdrop = true;
680
+ runAfterOpen(overlay, function() {
681
+ var focusableNodes = overlay._focusableNodes;
682
+ // 1ms timeout needed by IE10 to have proper focus switching.
683
+ Polymer.Base.async(function() {
684
+ // Before tabbing, make lastFocusable non-tabbable. This will make
685
+ // the one before it (focusableNodes.length - 2), the new last focusable node.
686
+ focusableNodes[focusableNodes.length-1].setAttribute('tabindex', '-1');
687
+ overlay.invalidateTabbables();
688
+ // Simulate Shift+TAB.
689
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
690
+ assert.equal(focusableNodes[focusableNodes.length-2], document.activeElement, 'focus wrapped correctly');
691
+ done();
692
+ }, 1);
693
+ });
694
+ });
695
+
696
+ test('with-backdrop: Shift+TAB wrap focus in shadowDOM', function(done) {
697
+ overlayFocusableNodes.withBackdrop = true;
698
+ runAfterOpen(overlayFocusableNodes, function() {
699
+ // 1ms timeout needed by IE10 to have proper focus switching.
700
+ Polymer.Base.async(function() {
701
+ // Spy keydown.
702
+ var tabSpy = sinon.spy();
703
+ document.addEventListener('keydown', tabSpy);
704
+ // Simulate Shift+TAB.
705
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
706
+ assert.equal(overlayFocusableNodes.$.last, Polymer.IronOverlayManager.deepActiveElement, 'focus wrapped to last focusable in the shadowDOM');
707
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
708
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
709
+ // Cleanup.
710
+ document.removeEventListener('keydown', tabSpy);
711
+ done();
712
+ }, 1);
713
+ });
714
+ });
715
+
716
+ });
717
+
718
+ suite('Polymer.IronOverlayManager.deepActiveElement', function() {
719
+
720
+ test('handles document.body', function () {
721
+ document.body.focus();
722
+ assert.equal(Polymer.IronOverlayManager.deepActiveElement, document.body);
723
+ });
724
+
725
+ test('handles light dom', function () {
726
+ var focusable = document.getElementById('focusInput');
727
+ focusable.focus();
728
+ assert.equal(Polymer.IronOverlayManager.deepActiveElement, focusable, 'input is handled');
729
+ focusable.blur();
730
+ });
731
+
732
+ test('handles shadow dom', function () {
733
+ var focusable = document.getElementById('buttons').$.button0;
734
+ focusable.focus();
735
+ assert.equal(Polymer.IronOverlayManager.deepActiveElement, focusable);
736
+ focusable.blur();
737
+ });
738
+
739
+ });
740
+
741
+ suite('restore-focus-on-close', function() {
742
+
743
+ var overlay;
744
+ setup(function () {
745
+ overlay = fixture('autofocus');
746
+ overlay.restoreFocusOnClose = true;
747
+ });
748
+
749
+ teardown(function () {
750
+ // No matter what, return the focus to body!
751
+ document.body.focus();
752
+ });
753
+
754
+ test('does not return focus on close by default (restore-focus-on-close=false)', function(done) {
755
+ overlay.restoreFocusOnClose = false;
756
+ var focusable = document.getElementById('focusInput');
757
+ focusable.focus();
758
+ runAfterOpen(overlay, function() {
759
+ runAfterClose(overlay, function() {
760
+ assert.notEqual(Polymer.IronOverlayManager.deepActiveElement, focusable, 'focus is not restored to focusable');
761
+ done();
762
+ });
763
+ });
764
+ });
765
+
766
+ test('overlay returns focus on close', function(done) {
767
+ var focusable = document.getElementById('focusInput');
768
+ focusable.focus();
769
+ runAfterOpen(overlay, function() {
770
+ runAfterClose(overlay, function() {
771
+ assert.equal(Polymer.IronOverlayManager.deepActiveElement, focusable, 'focus restored to focusable');
772
+ done();
773
+ });
774
+ });
775
+ });
776
+
777
+ test('overlay returns focus on close (ShadowDOM)', function(done) {
778
+ var focusable = document.getElementById('buttons').$.button0;
779
+ focusable.focus();
780
+ runAfterOpen(overlay, function() {
781
+ runAfterClose(overlay, function() {
782
+ assert.equal(Polymer.IronOverlayManager.deepActiveElement, focusable, 'focus restored to focusable');
783
+ done();
784
+ });
785
+ });
786
+ });
787
+
788
+ });
789
+
790
+ suite('overlay with backdrop', function() {
791
+ var overlay;
792
+
793
+ setup(function() {
794
+ overlay = fixture('backdrop');
795
+ });
796
+
797
+ test('backdrop is opened when overlay is opened', function(done) {
798
+ assert.isOk(overlay.backdropElement, 'backdrop is defined');
799
+ runAfterOpen(overlay, function() {
800
+ assert.isTrue(overlay.backdropElement.opened, 'backdrop is opened');
801
+ assert.isOk(overlay.backdropElement.parentNode, 'backdrop is inserted in the DOM');
802
+ done();
803
+ });
804
+ });
805
+
806
+ test('backdrop appears behind the overlay', function(done) {
807
+ runAfterOpen(overlay, function() {
808
+ styleZ = parseInt(window.getComputedStyle(overlay).zIndex, 10);
809
+ backdropStyleZ = parseInt(window.getComputedStyle(overlay.backdropElement).zIndex, 10);
810
+ assert.isTrue(styleZ > backdropStyleZ, 'overlay has higher z-index than backdrop');
811
+ done();
812
+ });
813
+ });
814
+
815
+ test('backdrop is removed when overlay is closed', function(done) {
816
+ runAfterOpen(overlay, function() {
817
+ runAfterClose(overlay, function() {
818
+ assert.isFalse(overlay.backdropElement.opened, 'backdrop is closed');
819
+ assert.isNotOk(overlay.backdropElement.parentNode, 'backdrop is removed from the DOM');
820
+ assert.lengthOf(document.querySelectorAll('iron-overlay-backdrop'), 0, 'no backdrop elements on body');
821
+ done();
822
+ });
823
+ });
824
+ });
825
+
826
+ test('backdrop is removed when the element is removed from DOM', function(done) {
827
+ runAfterOpen(overlay, function() {
828
+ Polymer.dom(overlay).parentNode.removeChild(overlay);
829
+ // Ensure detached is executed.
830
+ Polymer.dom.flush();
831
+ assert.isFalse(overlay.backdropElement.opened, 'backdrop is closed');
832
+ assert.isNotOk(overlay.backdropElement.parentNode, 'backdrop is removed from the DOM');
833
+ assert.lengthOf(document.querySelectorAll('iron-overlay-backdrop'), 0, 'no backdrop elements on body');
834
+ assert.isNotOk(overlay._manager.currentOverlay(), 'currentOverlay ok');
835
+ done();
836
+ });
837
+ });
838
+
839
+ test('manager.getBackdrops() updated on opened changes', function(done) {
840
+ runAfterOpen(overlay, function() {
841
+ assert.equal(Polymer.IronOverlayManager.getBackdrops().length, 1, 'overlay added to manager backdrops');
842
+ runAfterClose(overlay, function() {
843
+ assert.equal(Polymer.IronOverlayManager.getBackdrops().length, 0, 'overlay removed from manager backdrops');
844
+ done();
845
+ });
846
+ });
847
+ });
848
+
849
+ test('updating with-backdrop to false closes backdrop', function(done) {
850
+ runAfterOpen(overlay, function() {
851
+ overlay.withBackdrop = false;
852
+ assert.isFalse(overlay.backdropElement.opened, 'backdrop is closed');
853
+ assert.isNotObject(overlay.backdropElement.parentNode, 'backdrop is removed from document');
854
+ done();
855
+ });
856
+ });
857
+
858
+ test('backdrop is removed when toggling overlay opened', function(done) {
859
+ overlay.open();
860
+ runAfterClose(overlay, function() {
861
+ assert.isFalse(overlay.backdropElement.opened, 'backdrop is closed');
862
+ assert.isNotOk(overlay.backdropElement.parentNode, 'backdrop is removed from document');
863
+ done();
864
+ });
865
+ });
866
+
867
+ test('withBackdrop = false does not prevent click outside event', function(done) {
868
+ overlay.withBackdrop = false;
869
+ runAfterOpen(overlay, function() {
870
+ overlay.addEventListener('iron-overlay-canceled', function(event) {
871
+ assert.isFalse(event.detail.defaultPrevented, 'click event not prevented');
872
+ done();
873
+ });
874
+ MockInteractions.tap(document.body);
875
+ });
876
+ });
877
+ });
878
+
879
+ suite('multiple overlays', function() {
880
+ var overlay1, overlay2;
881
+
882
+ setup(function() {
883
+ var f = fixture('multiple');
884
+ overlay1 = f[0];
885
+ overlay2 = f[1];
886
+ });
887
+
888
+ test('new overlays appear on top', function(done) {
889
+ runAfterOpen(overlay1, function() {
890
+ runAfterOpen(overlay2, function() {
891
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
892
+ var styleZ1 = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
893
+ assert.isTrue(styleZ1 > styleZ, 'overlay2 has higher z-index than overlay1');
894
+ done();
895
+ });
896
+ });
897
+ });
898
+
899
+ test('ESC closes only the top overlay', function(done) {
900
+ runAfterOpen(overlay1, function() {
901
+ runAfterOpen(overlay2, function() {
902
+ MockInteractions.pressAndReleaseKeyOn(document, 27);
903
+ assert.isFalse(overlay2.opened, 'overlay2 was closed');
904
+ assert.isTrue(overlay1.opened, 'overlay1 is still opened');
905
+ done();
906
+ });
907
+ });
908
+ });
909
+
910
+ test('close an overlay in proximity to another overlay', function(done) {
911
+ // Open and close a separate overlay.
912
+ overlay1.open();
913
+ overlay1.close();
914
+
915
+ // Open the overlay we care about.
916
+ overlay2.open();
917
+
918
+ // Immediately close the first overlay.
919
+ // Wait for infinite recursion, otherwise we win.
920
+ runAfterClose(overlay2, function() {
921
+ done();
922
+ })
923
+ });
924
+
925
+ });
926
+
927
+ suite('Manager overlays in sync', function() {
928
+ var overlay1, overlay2;
929
+ var overlays;
930
+
931
+ setup(function() {
932
+ var f = fixture('multiple');
933
+ overlay1 = f[0];
934
+ overlay2 = f[1];
935
+ overlays = Polymer.IronOverlayManager._overlays;
936
+ });
937
+
938
+ test('no duplicates after attached', function(done) {
939
+ overlay1 = document.createElement('test-overlay');
940
+ runAfterOpen(overlay1, function() {
941
+ assert.equal(overlays.length, 1, 'correct count after open and attached');
942
+ document.body.removeChild(overlay1);
943
+ done();
944
+ });
945
+ document.body.appendChild(overlay1);
946
+ });
947
+
948
+ test('call open multiple times handled', function(done) {
949
+ overlay1.open();
950
+ overlay1.open();
951
+ runAfterOpen(overlay1, function() {
952
+ assert.equal(overlays.length, 1, '1 overlay after open');
953
+ done();
954
+ })
955
+ });
956
+
957
+ test('close handled', function(done) {
958
+ runAfterOpen(overlay1, function() {
959
+ runAfterClose(overlay1, function() {
960
+ assert.equal(overlays.length, 0, '0 overlays after close');
961
+ done();
962
+ });
963
+ });
964
+ });
965
+
966
+ test('open/close brings overlay on top', function(done) {
967
+ overlay1.open();
968
+ runAfterOpen(overlay2, function() {
969
+ assert.equal(overlays.indexOf(overlay1), 0, 'overlay1 at index 0');
970
+ assert.equal(overlays.indexOf(overlay2), 1, 'overlay2 at index 1');
971
+ overlay1.close();
972
+ runAfterOpen(overlay1, function() {
973
+ assert.equal(overlays.indexOf(overlay1), 1, 'overlay1 moved at index 1');
974
+ assert.isAbove(parseInt(overlay1.style.zIndex), parseInt(overlay2.style.zIndex), 'overlay1 on top of overlay2');
975
+ done();
976
+ });
977
+ });
978
+ });
979
+ });
980
+
981
+ suite('z-ordering', function() {
982
+
983
+ var originalMinimumZ;
984
+ var overlay1, overlay2;
985
+
986
+ setup(function() {
987
+ var f = fixture('multiple');
988
+ overlay1 = f[0];
989
+ overlay2 = f[1];
990
+ originalMinimumZ = Polymer.IronOverlayManager._minimumZ;
991
+ });
992
+
993
+ teardown(function() {
994
+ Polymer.IronOverlayManager._minimumZ = originalMinimumZ;
995
+ });
996
+
997
+ // for iframes
998
+ test('default z-index is greater than 100', function(done) {
999
+ runAfterOpen(overlay1, function() {
1000
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1001
+ assert.isTrue(styleZ > 100, 'overlay1 z-index is <= 100');
1002
+ done();
1003
+ });
1004
+ });
1005
+
1006
+ test('ensureMinimumZ() effects z-index', function(done) {
1007
+ Polymer.IronOverlayManager.ensureMinimumZ(1000);
1008
+
1009
+ runAfterOpen(overlay1, function() {
1010
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1011
+ assert.isTrue(styleZ > 1000, 'overlay1 z-index is <= 1000');
1012
+ done();
1013
+ });
1014
+ });
1015
+
1016
+ test('ensureMinimumZ() never decreases the minimum z-index', function(done) {
1017
+ Polymer.IronOverlayManager.ensureMinimumZ(1000);
1018
+ Polymer.IronOverlayManager.ensureMinimumZ(500);
1019
+
1020
+ runAfterOpen(overlay1, function() {
1021
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1022
+ assert.isTrue(styleZ > 1000, 'overlay1 z-index is <= 1000');
1023
+ done();
1024
+ });
1025
+ });
1026
+
1027
+ });
1028
+
1029
+ suite('multiple overlays with backdrop', function() {
1030
+ var overlay1, overlay2, overlay3;
1031
+
1032
+ setup(function() {
1033
+ var f = fixture('multiple');
1034
+ overlay1 = f[0];
1035
+ overlay2 = f[1];
1036
+ overlay3 = f[2];
1037
+ overlay1.withBackdrop = overlay2.withBackdrop = overlay3.withBackdrop = true;
1038
+ });
1039
+
1040
+ test('multiple overlays share the same backdrop', function() {
1041
+ assert.isTrue(overlay1.backdropElement === overlay2.backdropElement, 'overlay1 and overlay2 have the same backdrop element');
1042
+ assert.isTrue(overlay1.backdropElement === overlay3.backdropElement, 'overlay1 and overlay3 have the same backdrop element');
1043
+ });
1044
+
1045
+ test('only one iron-overlay-backdrop in the DOM', function(done) {
1046
+ // Open them all.
1047
+ overlay1.opened = true;
1048
+ overlay2.opened = true;
1049
+ runAfterOpen(overlay3, function() {
1050
+ assert.lengthOf(document.querySelectorAll('iron-overlay-backdrop'), 1, 'only one backdrop element in the DOM');
1051
+ done();
1052
+ });
1053
+ });
1054
+
1055
+ test('iron-overlay-backdrop is removed from the DOM when all overlays with backdrop are closed', function(done) {
1056
+ // Open & close them all.
1057
+ overlay1.opened = true;
1058
+ overlay2.opened = true;
1059
+ runAfterOpen(overlay3, function() {
1060
+ overlay1.opened = overlay2.opened = false;
1061
+ runAfterClose(overlay3, function() {
1062
+ assert.lengthOf(document.querySelectorAll('iron-overlay-backdrop'), 0, 'backdrop element removed from the DOM');
1063
+ done();
1064
+ });
1065
+ });
1066
+ });
1067
+
1068
+ test('newest overlay appear on top', function(done) {
1069
+ runAfterOpen(overlay1, function() {
1070
+ runAfterOpen(overlay2, function() {
1071
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1072
+ var style1Z = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
1073
+ var bgStyleZ = parseInt(window.getComputedStyle(overlay1.backdropElement).zIndex, 10);
1074
+ assert.isTrue(style1Z > styleZ, 'overlay2 has higher z-index than overlay1');
1075
+ assert.isTrue(styleZ > bgStyleZ, 'overlay1 has higher z-index than backdrop');
1076
+ done();
1077
+ });
1078
+ });
1079
+ });
1080
+
1081
+ var clickEvents = ['click', 'tap'];
1082
+ for (var i = 0; i < clickEvents.length; i++) {
1083
+ var eventName = clickEvents[i];
1084
+ test(eventName + ' event handled only by top overlay', function(done) {
1085
+ runAfterOpen(overlay1, function() {
1086
+ runAfterOpen(overlay2, function() {
1087
+ var btn = Polymer.dom(overlay2).querySelector('button');
1088
+ btn.addEventListener(eventName, overlay2.close.bind(overlay2));
1089
+ MockInteractions.tap(btn);
1090
+ assert.isFalse(overlay2.opened, 'overlay2 closed');
1091
+ assert.isTrue(overlay1.opened, 'overlay1 opened');
1092
+ overlay2.addEventListener('iron-overlay-closed', function() {
1093
+ assert.isTrue(overlay1.opened, 'overlay1 still opened');
1094
+ done();
1095
+ });
1096
+ });
1097
+ });
1098
+ });
1099
+ }
1100
+
1101
+ test('updating with-backdrop updates z-index', function(done) {
1102
+ runAfterOpen(overlay1, function() {
1103
+ runAfterOpen(overlay2, function() {
1104
+ overlay1.withBackdrop = false;
1105
+ var styleZ = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1106
+ var style1Z = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
1107
+ var bgStyleZ = parseInt(window.getComputedStyle(overlay1.backdropElement).zIndex, 10);
1108
+ assert.isTrue(style1Z > bgStyleZ, 'overlay2 has higher z-index than backdrop');
1109
+ assert.isTrue(styleZ < bgStyleZ, 'overlay1 has lower z-index than backdrop');
1110
+ done();
1111
+ });
1112
+ });
1113
+ });
1114
+
1115
+ });
1116
+
1117
+ suite('overlay in composed tree', function() {
1118
+ var composed, overlay, trigger;
1119
+ setup(function(done) {
1120
+ composed = fixture('composed');
1121
+ overlay = composed.$.overlay;
1122
+ trigger = composed.$.trigger;
1123
+ overlay.withBackdrop = true;
1124
+ overlay.addEventListener('iron-overlay-opened', function() {
1125
+ done();
1126
+ });
1127
+ // Opens the overlay.
1128
+ MockInteractions.tap(trigger);
1129
+ });
1130
+
1131
+ test('click on overlay content does not close it', function(done) {
1132
+ // Tap on button inside overlay.
1133
+ MockInteractions.tap(Polymer.dom(overlay).querySelector('button'));
1134
+ Polymer.Base.async(function(){
1135
+ assert.isTrue(overlay.opened, 'overlay still opened');
1136
+ done();
1137
+ }, 1);
1138
+ });
1139
+
1140
+ test('with-backdrop wraps the focus within the overlay', function(done) {
1141
+ // 1ms timeout needed by IE10 to have proper focus switching.
1142
+ Polymer.Base.async(function(){
1143
+ var buttons = Polymer.dom(overlay).querySelectorAll('button');
1144
+ // Go to last element.
1145
+ buttons[buttons.length-1].focus();
1146
+ // Spy keydown.
1147
+ var tabSpy = sinon.spy();
1148
+ document.addEventListener('keydown', tabSpy);
1149
+ // Simulate TAB.
1150
+ MockInteractions.pressAndReleaseKeyOn(document, 9);
1151
+ assert.equal(buttons[0], Polymer.IronOverlayManager.deepActiveElement, 'focus wrapped to first focusable');
1152
+ assert.isTrue(tabSpy.calledOnce, 'keydown spy called');
1153
+ assert.isTrue(tabSpy.getCall(0).args[0].defaultPrevented, 'keydown default prevented');
1154
+ // Simulate Shift+TAB.
1155
+ MockInteractions.pressAndReleaseKeyOn(document, 9, ['shift']);
1156
+ assert.equal(buttons[buttons.length-1], Polymer.IronOverlayManager.deepActiveElement, 'focus wrapped to last focusable');
1157
+ assert.isTrue(tabSpy.calledTwice, 'keydown spy called again');
1158
+ assert.isTrue(tabSpy.getCall(1).args[0].defaultPrevented, 'keydown default prevented again');
1159
+ // Cleanup.
1160
+ document.removeEventListener('keydown', tabSpy);
1161
+ done();
1162
+ }, 1);
1163
+ });
1164
+
1165
+ });
1166
+
1167
+ suite('always-on-top', function() {
1168
+ var overlay1, overlay2;
1169
+
1170
+ setup(function() {
1171
+ var f = fixture('multiple');
1172
+ overlay1 = f[0];
1173
+ overlay2 = f[1];
1174
+ overlay1.alwaysOnTop = true;
1175
+ });
1176
+
1177
+ test('stays on top', function(done) {
1178
+ runAfterOpen(overlay1, function() {
1179
+ runAfterOpen(overlay2, function() {
1180
+ var zIndex1 = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1181
+ var zIndex2 = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
1182
+ assert.isAbove(zIndex1, zIndex2, 'overlay1 on top');
1183
+ assert.equal(Polymer.IronOverlayManager.currentOverlay(), overlay1, 'currentOverlay ok');
1184
+ done();
1185
+ });
1186
+ });
1187
+ });
1188
+
1189
+ test('stays on top also if another overlay is with-backdrop', function(done) {
1190
+ overlay2.withBackdrop = true;
1191
+ runAfterOpen(overlay1, function() {
1192
+ runAfterOpen(overlay2, function() {
1193
+ var zIndex1 = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1194
+ var zIndex2 = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
1195
+ assert.isAbove(zIndex1, zIndex2, 'overlay1 on top');
1196
+ assert.equal(Polymer.IronOverlayManager.currentOverlay(), overlay1, 'currentOverlay ok');
1197
+ done();
1198
+ });
1199
+ });
1200
+ });
1201
+
1202
+ test('last overlay with always-on-top wins', function(done) {
1203
+ overlay2.alwaysOnTop = true;
1204
+ runAfterOpen(overlay1, function() {
1205
+ runAfterOpen(overlay2, function() {
1206
+ var zIndex1 = parseInt(window.getComputedStyle(overlay1).zIndex, 10);
1207
+ var zIndex2 = parseInt(window.getComputedStyle(overlay2).zIndex, 10);
1208
+ assert.isAbove(zIndex2, zIndex1, 'overlay2 on top');
1209
+ assert.equal(Polymer.IronOverlayManager.currentOverlay(), overlay2, 'currentOverlay ok');
1210
+ done();
1211
+ });
1212
+ });
1213
+ });
1214
+
1215
+ });
1216
+
1217
+ suite('animations', function() {
1218
+
1219
+ test('overlay animations correctly triggered', function(done) {
1220
+ var overlay = fixture('basic');
1221
+ overlay.animated = true;
1222
+ overlay.open();
1223
+ overlay.addEventListener('simple-overlay-open-animation-start', function() {
1224
+ // Since animated overlay will transition center + 300px to center,
1225
+ // we should not find the element at the center when the open animation starts.
1226
+ var centerElement = document.elementFromPoint(window.innerWidth/2, window.innerHeight/2);
1227
+ assert.notEqual(centerElement, overlay, 'overlay should not be centered already');
1228
+ done();
1229
+ });
1230
+ });
1231
+
1232
+ });
1233
+
1234
+ suite('a11y', function() {
1235
+
1236
+ test('overlay has aria-hidden=true when opened', function() {
1237
+ var overlay = fixture('basic');
1238
+ assert.equal(overlay.getAttribute('aria-hidden'), 'true', 'overlay has aria-hidden="true"');
1239
+ overlay.open();
1240
+ assert.isFalse(overlay.hasAttribute('aria-hidden'), 'overlay does not have aria-hidden attribute');
1241
+ overlay.close();
1242
+ assert.equal(overlay.getAttribute('aria-hidden'), 'true', 'overlay has aria-hidden="true"');
1243
+ });
1244
+
1245
+ });
1246
+ </script>
1247
+
1248
+ </body>
1249
+
1250
+ </html>