easycomments 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +14 -0
  5. data/LICENSE +21 -0
  6. data/README.md +92 -0
  7. data/Rakefile +49 -0
  8. data/_config.yml +28 -0
  9. data/bin/ec +45 -0
  10. data/config.ru +12 -0
  11. data/dashboard.rb +57 -0
  12. data/easycomments.gemspec +22 -0
  13. data/ec.rb +43 -0
  14. data/lib/easycomments/ec_configuration.rb +42 -0
  15. data/lib/easycomments/ec_dashboard_model.rb +70 -0
  16. data/lib/easycomments/ec_model.rb +47 -0
  17. data/lib/easycomments.rb +14 -0
  18. data/public/bower.json +32 -0
  19. data/public/bower_components/core-a11y-keys/.bower.json +28 -0
  20. data/public/bower_components/core-a11y-keys/README.md +4 -0
  21. data/public/bower_components/core-a11y-keys/bower.json +18 -0
  22. data/public/bower_components/core-a11y-keys/core-a11y-keys.html +335 -0
  23. data/public/bower_components/core-a11y-keys/demo.html +41 -0
  24. data/public/bower_components/core-a11y-keys/index.html +22 -0
  25. data/public/bower_components/core-ajax/.bower.json +22 -0
  26. data/public/bower_components/core-ajax/README.md +4 -0
  27. data/public/bower_components/core-ajax/bower.json +11 -0
  28. data/public/bower_components/core-ajax/core-ajax.html +434 -0
  29. data/public/bower_components/core-ajax/core-xhr.html +116 -0
  30. data/public/bower_components/core-ajax/demo-progress.html +65 -0
  31. data/public/bower_components/core-ajax/demo.html +43 -0
  32. data/public/bower_components/core-ajax/index.html +22 -0
  33. data/public/bower_components/core-ajax/metadata.html +23 -0
  34. data/public/bower_components/core-ajax/test/core-ajax-progress.html +108 -0
  35. data/public/bower_components/core-ajax/test/core-ajax-race.html +81 -0
  36. data/public/bower_components/core-ajax/test/core-ajax.html +287 -0
  37. data/public/bower_components/core-ajax/test/index.html +17 -0
  38. data/public/bower_components/core-collapse/.bower.json +21 -0
  39. data/public/bower_components/core-collapse/README.md +4 -0
  40. data/public/bower_components/core-collapse/bower.json +11 -0
  41. data/public/bower_components/core-collapse/core-collapse.css +16 -0
  42. data/public/bower_components/core-collapse/core-collapse.html +298 -0
  43. data/public/bower_components/core-collapse/demo.html +75 -0
  44. data/public/bower_components/core-collapse/index.html +22 -0
  45. data/public/bower_components/core-collapse/test/basic.html +85 -0
  46. data/public/bower_components/core-collapse/test/index.html +24 -0
  47. data/public/bower_components/core-component-page/.bower.json +19 -0
  48. data/public/bower_components/core-component-page/README.md +6 -0
  49. data/public/bower_components/core-component-page/bowager-logo.png +0 -0
  50. data/public/bower_components/core-component-page/bower.json +9 -0
  51. data/public/bower_components/core-component-page/core-component-page.html +37 -0
  52. data/public/bower_components/core-component-page/demo.html +23 -0
  53. data/public/bower_components/core-component-page/index.html +22 -0
  54. data/public/bower_components/core-drawer-panel/.bower.json +19 -0
  55. data/public/bower_components/core-drawer-panel/README.md +4 -0
  56. data/public/bower_components/core-drawer-panel/bower.json +9 -0
  57. data/public/bower_components/core-drawer-panel/core-drawer-panel.css +160 -0
  58. data/public/bower_components/core-drawer-panel/core-drawer-panel.html +418 -0
  59. data/public/bower_components/core-drawer-panel/demo.html +68 -0
  60. data/public/bower_components/core-drawer-panel/index.html +22 -0
  61. data/public/bower_components/core-drawer-panel/metadata.html +37 -0
  62. data/public/bower_components/core-focusable/.bower.json +18 -0
  63. data/public/bower_components/core-focusable/README.md +6 -0
  64. data/public/bower_components/core-focusable/bower.json +8 -0
  65. data/public/bower_components/core-focusable/core-focusable.html +4 -0
  66. data/public/bower_components/core-focusable/core-focusable.js +134 -0
  67. data/public/bower_components/core-focusable/demo.html +109 -0
  68. data/public/bower_components/core-focusable/polymer-mixin.js +35 -0
  69. data/public/bower_components/core-header-panel/.bower.json +18 -0
  70. data/public/bower_components/core-header-panel/README.md +4 -0
  71. data/public/bower_components/core-header-panel/bower.json +8 -0
  72. data/public/bower_components/core-header-panel/core-header-panel.css +78 -0
  73. data/public/bower_components/core-header-panel/core-header-panel.html +277 -0
  74. data/public/bower_components/core-header-panel/demo.html +100 -0
  75. data/public/bower_components/core-header-panel/index.html +23 -0
  76. data/public/bower_components/core-header-panel/metadata.html +37 -0
  77. data/public/bower_components/core-icon/.bower.json +19 -0
  78. data/public/bower_components/core-icon/README.md +4 -0
  79. data/public/bower_components/core-icon/bower.json +9 -0
  80. data/public/bower_components/core-icon/core-icon.css +16 -0
  81. data/public/bower_components/core-icon/core-icon.html +201 -0
  82. data/public/bower_components/core-icon/demo.html +44 -0
  83. data/public/bower_components/core-icon/index.html +22 -0
  84. data/public/bower_components/core-icon/metadata.html +21 -0
  85. data/public/bower_components/core-icon-button/.bower.json +18 -0
  86. data/public/bower_components/core-icon-button/README.md +4 -0
  87. data/public/bower_components/core-icon-button/bower.json +8 -0
  88. data/public/bower_components/core-icon-button/core-icon-button.css +75 -0
  89. data/public/bower_components/core-icon-button/core-icon-button.html +81 -0
  90. data/public/bower_components/core-icon-button/demo.html +35 -0
  91. data/public/bower_components/core-icon-button/index.html +22 -0
  92. data/public/bower_components/core-icon-button/metadata.html +20 -0
  93. data/public/bower_components/core-icons/.bower.json +24 -0
  94. data/public/bower_components/core-icons/.gitignore +2 -0
  95. data/public/bower_components/core-icons/README.md +8 -0
  96. data/public/bower_components/core-icons/av-icons.html +65 -0
  97. data/public/bower_components/core-icons/bower.json +14 -0
  98. data/public/bower_components/core-icons/communication-icons.html +54 -0
  99. data/public/bower_components/core-icons/core-icons.html +278 -0
  100. data/public/bower_components/core-icons/demo.html +98 -0
  101. data/public/bower_components/core-icons/device-icons.html +90 -0
  102. data/public/bower_components/core-icons/editor-icons.html +67 -0
  103. data/public/bower_components/core-icons/hardware-icons.html +56 -0
  104. data/public/bower_components/core-icons/image-icons.html +152 -0
  105. data/public/bower_components/core-icons/index.html +22 -0
  106. data/public/bower_components/core-icons/maps-icons.html +70 -0
  107. data/public/bower_components/core-icons/notification-icons.html +49 -0
  108. data/public/bower_components/core-icons/social-icons.html +39 -0
  109. data/public/bower_components/core-iconset/.bower.json +20 -0
  110. data/public/bower_components/core-iconset/README.md +4 -0
  111. data/public/bower_components/core-iconset/bower.json +10 -0
  112. data/public/bower_components/core-iconset/core-iconset.html +241 -0
  113. data/public/bower_components/core-iconset/demo.html +62 -0
  114. data/public/bower_components/core-iconset/index.html +22 -0
  115. data/public/bower_components/core-iconset/my-icons-big.png +0 -0
  116. data/public/bower_components/core-iconset/my-icons.png +0 -0
  117. data/public/bower_components/core-iconset-svg/.bower.json +19 -0
  118. data/public/bower_components/core-iconset-svg/README.md +4 -0
  119. data/public/bower_components/core-iconset-svg/bower.json +9 -0
  120. data/public/bower_components/core-iconset-svg/core-iconset-svg.html +168 -0
  121. data/public/bower_components/core-iconset-svg/demo.html +66 -0
  122. data/public/bower_components/core-iconset-svg/index.html +22 -0
  123. data/public/bower_components/core-iconset-svg/svg-sample-icons.html +68 -0
  124. data/public/bower_components/core-input/.bower.json +20 -0
  125. data/public/bower_components/core-input/README.md +2 -0
  126. data/public/bower_components/core-input/bower.json +10 -0
  127. data/public/bower_components/core-input/core-input.css +41 -0
  128. data/public/bower_components/core-input/core-input.html +148 -0
  129. data/public/bower_components/core-input/demo.html +62 -0
  130. data/public/bower_components/core-input/index.html +22 -0
  131. data/public/bower_components/core-input/metadata.html +23 -0
  132. data/public/bower_components/core-input/test/a11y.html +55 -0
  133. data/public/bower_components/core-input/test/basic.html +60 -0
  134. data/public/bower_components/core-input/test/index.html +25 -0
  135. data/public/bower_components/core-item/.bower.json +19 -0
  136. data/public/bower_components/core-item/README.md +4 -0
  137. data/public/bower_components/core-item/bower.json +9 -0
  138. data/public/bower_components/core-item/core-item.css +45 -0
  139. data/public/bower_components/core-item/core-item.html +73 -0
  140. data/public/bower_components/core-item/demo.html +92 -0
  141. data/public/bower_components/core-item/index.html +22 -0
  142. data/public/bower_components/core-item/metadata.html +24 -0
  143. data/public/bower_components/core-media-query/.bower.json +18 -0
  144. data/public/bower_components/core-media-query/README.md +4 -0
  145. data/public/bower_components/core-media-query/bower.json +8 -0
  146. data/public/bower_components/core-media-query/core-media-query.html +87 -0
  147. data/public/bower_components/core-media-query/demo.html +44 -0
  148. data/public/bower_components/core-media-query/index.html +22 -0
  149. data/public/bower_components/core-menu/.bower.json +22 -0
  150. data/public/bower_components/core-menu/README.md +4 -0
  151. data/public/bower_components/core-menu/bower.json +11 -0
  152. data/public/bower_components/core-menu/core-menu.css +18 -0
  153. data/public/bower_components/core-menu/core-menu.html +73 -0
  154. data/public/bower_components/core-menu/core-submenu.css +43 -0
  155. data/public/bower_components/core-menu/core-submenu.html +126 -0
  156. data/public/bower_components/core-menu/demo.html +101 -0
  157. data/public/bower_components/core-menu/index.html +22 -0
  158. data/public/bower_components/core-menu/metadata.html +62 -0
  159. data/public/bower_components/core-meta/.bower.json +18 -0
  160. data/public/bower_components/core-meta/README.md +4 -0
  161. data/public/bower_components/core-meta/bower.json +8 -0
  162. data/public/bower_components/core-meta/core-meta.html +145 -0
  163. data/public/bower_components/core-meta/demo.html +58 -0
  164. data/public/bower_components/core-meta/index.html +22 -0
  165. data/public/bower_components/core-overlay/.bower.json +20 -0
  166. data/public/bower_components/core-overlay/README.md +4 -0
  167. data/public/bower_components/core-overlay/bower.json +10 -0
  168. data/public/bower_components/core-overlay/core-key-helper.html +22 -0
  169. data/public/bower_components/core-overlay/core-overlay-layer.html +116 -0
  170. data/public/bower_components/core-overlay/core-overlay.html +776 -0
  171. data/public/bower_components/core-overlay/demo.html +155 -0
  172. data/public/bower_components/core-overlay/gulpfile.js +2 -0
  173. data/public/bower_components/core-overlay/index.html +22 -0
  174. data/public/bower_components/core-overlay/tests/html/core-overlay-basic.html +127 -0
  175. data/public/bower_components/core-overlay/tests/html/core-overlay-positioning-margin.html +153 -0
  176. data/public/bower_components/core-overlay/tests/html/core-overlay-positioning.html +167 -0
  177. data/public/bower_components/core-overlay/tests/html/core-overlay-quick-close.html +45 -0
  178. data/public/bower_components/core-overlay/tests/html/core-overlay-scroll.html +130 -0
  179. data/public/bower_components/core-overlay/tests/js/htmltests.js +7 -0
  180. data/public/bower_components/core-overlay/tests/runner.html +14 -0
  181. data/public/bower_components/core-overlay/tests/tests.json +6 -0
  182. data/public/bower_components/core-pages/.bower.json +19 -0
  183. data/public/bower_components/core-pages/README.md +4 -0
  184. data/public/bower_components/core-pages/bower.json +8 -0
  185. data/public/bower_components/core-pages/core-pages.css +30 -0
  186. data/public/bower_components/core-pages/core-pages.html +44 -0
  187. data/public/bower_components/core-pages/demo.html +136 -0
  188. data/public/bower_components/core-pages/index.html +22 -0
  189. data/public/bower_components/core-pages/metadata.html +25 -0
  190. data/public/bower_components/core-resizable/.bower.json +18 -0
  191. data/public/bower_components/core-resizable/README.md +4 -0
  192. data/public/bower_components/core-resizable/bower.json +8 -0
  193. data/public/bower_components/core-resizable/core-resizable.html +248 -0
  194. data/public/bower_components/core-resizable/index.html +22 -0
  195. data/public/bower_components/core-resizable/test/basic.html +504 -0
  196. data/public/bower_components/core-resizable/test/index.html +16 -0
  197. data/public/bower_components/core-resizable/test/test-elements.html +66 -0
  198. data/public/bower_components/core-scaffold/.bower.json +22 -0
  199. data/public/bower_components/core-scaffold/README.md +4 -0
  200. data/public/bower_components/core-scaffold/bower.json +11 -0
  201. data/public/bower_components/core-scaffold/core-scaffold.html +252 -0
  202. data/public/bower_components/core-scaffold/demo.html +82 -0
  203. data/public/bower_components/core-scaffold/index.html +22 -0
  204. data/public/bower_components/core-scaffold/metadata.html +52 -0
  205. data/public/bower_components/core-selection/.bower.json +21 -0
  206. data/public/bower_components/core-selection/README.md +4 -0
  207. data/public/bower_components/core-selection/bower.json +11 -0
  208. data/public/bower_components/core-selection/core-selection.html +149 -0
  209. data/public/bower_components/core-selection/demo.html +59 -0
  210. data/public/bower_components/core-selection/index.html +22 -0
  211. data/public/bower_components/core-selection/test/basic.html +62 -0
  212. data/public/bower_components/core-selection/test/index.html +25 -0
  213. data/public/bower_components/core-selection/test/multi.html +63 -0
  214. data/public/bower_components/core-selector/.bower.json +22 -0
  215. data/public/bower_components/core-selector/.gitignore +2 -0
  216. data/public/bower_components/core-selector/README.md +4 -0
  217. data/public/bower_components/core-selector/bower.json +12 -0
  218. data/public/bower_components/core-selector/core-selector.html +548 -0
  219. data/public/bower_components/core-selector/demo.html +106 -0
  220. data/public/bower_components/core-selector/index.html +22 -0
  221. data/public/bower_components/core-selector/metadata.html +20 -0
  222. data/public/bower_components/core-selector/test/activate-event.html +63 -0
  223. data/public/bower_components/core-selector/test/basic.html +126 -0
  224. data/public/bower_components/core-selector/test/content.html +101 -0
  225. data/public/bower_components/core-selector/test/index.html +30 -0
  226. data/public/bower_components/core-selector/test/multi.html +115 -0
  227. data/public/bower_components/core-selector/test/next-previous.html +113 -0
  228. data/public/bower_components/core-selector/test/selected-attr-prop.html +62 -0
  229. data/public/bower_components/core-selector/test/template-repeat.html +63 -0
  230. data/public/bower_components/core-style/.bower.json +18 -0
  231. data/public/bower_components/core-style/README.md +4 -0
  232. data/public/bower_components/core-style/bower.json +8 -0
  233. data/public/bower_components/core-style/core-style.html +387 -0
  234. data/public/bower_components/core-style/demo.html +58 -0
  235. data/public/bower_components/core-style/elements.html +55 -0
  236. data/public/bower_components/core-style/index.html +22 -0
  237. data/public/bower_components/core-style/my-theme.html +73 -0
  238. data/public/bower_components/core-toolbar/.bower.json +19 -0
  239. data/public/bower_components/core-toolbar/README.md +4 -0
  240. data/public/bower_components/core-toolbar/bower.json +9 -0
  241. data/public/bower_components/core-toolbar/core-toolbar.css +117 -0
  242. data/public/bower_components/core-toolbar/core-toolbar.html +155 -0
  243. data/public/bower_components/core-toolbar/demo.html +119 -0
  244. data/public/bower_components/core-toolbar/index.html +22 -0
  245. data/public/bower_components/core-toolbar/metadata.html +28 -0
  246. data/public/bower_components/core-toolbar/test/basic.html +86 -0
  247. data/public/bower_components/core-toolbar/test/index.html +24 -0
  248. data/public/bower_components/core-transition/.bower.json +19 -0
  249. data/public/bower_components/core-transition/README.md +2 -0
  250. data/public/bower_components/core-transition/bower.json +9 -0
  251. data/public/bower_components/core-transition/core-transition-css.html +220 -0
  252. data/public/bower_components/core-transition/core-transition-overlay.css +46 -0
  253. data/public/bower_components/core-transition/core-transition.html +140 -0
  254. data/public/bower_components/core-transition/demo.html +87 -0
  255. data/public/bower_components/core-transition/index.html +22 -0
  256. data/public/bower_components/font-roboto/.bower.json +15 -0
  257. data/public/bower_components/font-roboto/roboto.html +9 -0
  258. data/public/bower_components/paper-button/.bower.json +27 -0
  259. data/public/bower_components/paper-button/README.md +4 -0
  260. data/public/bower_components/paper-button/bower.json +16 -0
  261. data/public/bower_components/paper-button/demo.html +157 -0
  262. data/public/bower_components/paper-button/index.html +22 -0
  263. data/public/bower_components/paper-button/metadata.html +17 -0
  264. data/public/bower_components/paper-button/paper-button-base.html +164 -0
  265. data/public/bower_components/paper-button/paper-button.html +197 -0
  266. data/public/bower_components/paper-button/test/index.html +24 -0
  267. data/public/bower_components/paper-button/test/paper-button.html +112 -0
  268. data/public/bower_components/paper-icon-button/.bower.json +25 -0
  269. data/public/bower_components/paper-icon-button/README.md +4 -0
  270. data/public/bower_components/paper-icon-button/bower.json +15 -0
  271. data/public/bower_components/paper-icon-button/demo.html +150 -0
  272. data/public/bower_components/paper-icon-button/index.html +22 -0
  273. data/public/bower_components/paper-icon-button/metadata.html +21 -0
  274. data/public/bower_components/paper-icon-button/paper-icon-button.html +154 -0
  275. data/public/bower_components/paper-icon-button/test/a11y.html +68 -0
  276. data/public/bower_components/paper-icon-button/test/basic.html +50 -0
  277. data/public/bower_components/paper-icon-button/test/index.html +25 -0
  278. data/public/bower_components/paper-input/.bower.json +26 -0
  279. data/public/bower_components/paper-input/.gitignore +1 -0
  280. data/public/bower_components/paper-input/README.md +4 -0
  281. data/public/bower_components/paper-input/bower.json +15 -0
  282. data/public/bower_components/paper-input/demo.html +236 -0
  283. data/public/bower_components/paper-input/index.html +22 -0
  284. data/public/bower_components/paper-input/metadata.html +20 -0
  285. data/public/bower_components/paper-input/paper-autogrow-textarea.html +162 -0
  286. data/public/bower_components/paper-input/paper-char-counter.html +121 -0
  287. data/public/bower_components/paper-input/paper-input-decorator.css +132 -0
  288. data/public/bower_components/paper-input/paper-input-decorator.html +547 -0
  289. data/public/bower_components/paper-input/paper-input.html +145 -0
  290. data/public/bower_components/paper-input/test/index.html +26 -0
  291. data/public/bower_components/paper-input/test/paper-autogrow-textarea.html +146 -0
  292. data/public/bower_components/paper-input/test/paper-input-decorator.html +240 -0
  293. data/public/bower_components/paper-input/test/paper-input.html +68 -0
  294. data/public/bower_components/paper-input/test/util.js +15 -0
  295. data/public/bower_components/paper-radio-button/.bower.json +22 -0
  296. data/public/bower_components/paper-radio-button/README.md +4 -0
  297. data/public/bower_components/paper-radio-button/bower.json +12 -0
  298. data/public/bower_components/paper-radio-button/demo.html +84 -0
  299. data/public/bower_components/paper-radio-button/index.html +22 -0
  300. data/public/bower_components/paper-radio-button/metadata.html +17 -0
  301. data/public/bower_components/paper-radio-button/paper-radio-button.css +108 -0
  302. data/public/bower_components/paper-radio-button/paper-radio-button.html +166 -0
  303. data/public/bower_components/paper-ripple/.bower.json +23 -0
  304. data/public/bower_components/paper-ripple/README.md +4 -0
  305. data/public/bower_components/paper-ripple/bower.json +13 -0
  306. data/public/bower_components/paper-ripple/demo.html +414 -0
  307. data/public/bower_components/paper-ripple/index.html +22 -0
  308. data/public/bower_components/paper-ripple/metadata.html +20 -0
  309. data/public/bower_components/paper-ripple/paper-ripple.html +477 -0
  310. data/public/bower_components/paper-ripple/test/index.html +24 -0
  311. data/public/bower_components/paper-ripple/test/position.html +109 -0
  312. data/public/bower_components/paper-shadow/.bower.json +22 -0
  313. data/public/bower_components/paper-shadow/README.md +4 -0
  314. data/public/bower_components/paper-shadow/bower.json +11 -0
  315. data/public/bower_components/paper-shadow/demo.html +134 -0
  316. data/public/bower_components/paper-shadow/index.html +22 -0
  317. data/public/bower_components/paper-shadow/metadata.html +17 -0
  318. data/public/bower_components/paper-shadow/paper-shadow.css +66 -0
  319. data/public/bower_components/paper-shadow/paper-shadow.html +86 -0
  320. data/public/bower_components/paper-shadow/test/basic.html +62 -0
  321. data/public/bower_components/paper-shadow/test/index.html +24 -0
  322. data/public/bower_components/paper-tabs/.bower.json +26 -0
  323. data/public/bower_components/paper-tabs/README.md +4 -0
  324. data/public/bower_components/paper-tabs/bower.json +15 -0
  325. data/public/bower_components/paper-tabs/demo.html +242 -0
  326. data/public/bower_components/paper-tabs/index.html +22 -0
  327. data/public/bower_components/paper-tabs/metadata.html +58 -0
  328. data/public/bower_components/paper-tabs/paper-tab.css +59 -0
  329. data/public/bower_components/paper-tabs/paper-tab.html +82 -0
  330. data/public/bower_components/paper-tabs/paper-tabs.css +80 -0
  331. data/public/bower_components/paper-tabs/paper-tabs.html +353 -0
  332. data/public/bower_components/paper-toast/.bower.json +22 -0
  333. data/public/bower_components/paper-toast/README.md +4 -0
  334. data/public/bower_components/paper-toast/bower.json +11 -0
  335. data/public/bower_components/paper-toast/demo.html +63 -0
  336. data/public/bower_components/paper-toast/index.html +22 -0
  337. data/public/bower_components/paper-toast/metadata.html +20 -0
  338. data/public/bower_components/paper-toast/paper-toast.css +80 -0
  339. data/public/bower_components/paper-toast/paper-toast.html +296 -0
  340. data/public/bower_components/paper-toggle-button/.bower.json +20 -0
  341. data/public/bower_components/paper-toggle-button/README.md +4 -0
  342. data/public/bower_components/paper-toggle-button/bower.json +9 -0
  343. data/public/bower_components/paper-toggle-button/demo.html +97 -0
  344. data/public/bower_components/paper-toggle-button/index.html +22 -0
  345. data/public/bower_components/paper-toggle-button/metadata.html +17 -0
  346. data/public/bower_components/paper-toggle-button/paper-toggle-button.css +95 -0
  347. data/public/bower_components/paper-toggle-button/paper-toggle-button.html +179 -0
  348. data/public/bower_components/polymer/.bower.json +32 -0
  349. data/public/bower_components/polymer/README.md +21 -0
  350. data/public/bower_components/polymer/bower.json +23 -0
  351. data/public/bower_components/polymer/build.log +26 -0
  352. data/public/bower_components/polymer/layout.html +286 -0
  353. data/public/bower_components/polymer/polymer.html +12 -0
  354. data/public/bower_components/polymer/polymer.js +11859 -0
  355. data/public/bower_components/polymer/polymer.min.js +14 -0
  356. data/public/bower_components/webcomponentsjs/.bower.json +23 -0
  357. data/public/bower_components/webcomponentsjs/CustomElements.js +634 -0
  358. data/public/bower_components/webcomponentsjs/CustomElements.min.js +11 -0
  359. data/public/bower_components/webcomponentsjs/HTMLImports.js +764 -0
  360. data/public/bower_components/webcomponentsjs/HTMLImports.min.js +11 -0
  361. data/public/bower_components/webcomponentsjs/README.md +73 -0
  362. data/public/bower_components/webcomponentsjs/ShadowDOM.js +4277 -0
  363. data/public/bower_components/webcomponentsjs/ShadowDOM.min.js +13 -0
  364. data/public/bower_components/webcomponentsjs/bower.json +14 -0
  365. data/public/bower_components/webcomponentsjs/build.log +31 -0
  366. data/public/bower_components/webcomponentsjs/package.json +31 -0
  367. data/public/bower_components/webcomponentsjs/webcomponents-lite.js +1728 -0
  368. data/public/bower_components/webcomponentsjs/webcomponents-lite.min.js +11 -0
  369. data/public/bower_components/webcomponentsjs/webcomponents.js +6114 -0
  370. data/public/bower_components/webcomponentsjs/webcomponents.min.js +14 -0
  371. data/public/css/main.css +41 -0
  372. data/public/elements/ec-dashboard/ec-dashboard.html +269 -0
  373. data/public/polymer-loader.html +24 -0
  374. data/public/polymer-loader.vulcanized.html +19 -0
  375. data/spec/ec/ec_dashboard_spec.rb +78 -0
  376. data/spec/ec/ec_spec.rb +78 -0
  377. data/spec/spec_helper.rb +27 -0
  378. data/views/index.html +88 -0
  379. metadata +464 -0
@@ -0,0 +1,157 @@
1
+ <!doctype html>
2
+ <!--
3
+ Copyright 2013 The Polymer Authors. All rights reserved.
4
+ Use of this source code is governed by a BSD-style
5
+ license that can be found in the LICENSE file.
6
+ -->
7
+ <html>
8
+ <head>
9
+
10
+ <meta charset="utf-8">
11
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
13
+
14
+ <title>paper-button</title>
15
+
16
+ <script src="../webcomponentsjs/webcomponents.js"></script>
17
+
18
+ <link href="../font-roboto/roboto.html" rel="import">
19
+ <link href="../core-icon/core-icon.html" rel="import">
20
+ <link href="../core-icons/core-icons.html" rel="import">
21
+ <link href="paper-button.html" rel="import">
22
+
23
+ <style shim-shadowdom>
24
+ body {
25
+ font-family: RobotoDraft, 'Helvetica Neue', Helvetica, Arial;
26
+ font-size: 14px;
27
+ margin: 0;
28
+ padding: 24px;
29
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
30
+ -webkit-touch-callout: none;
31
+ }
32
+
33
+ section {
34
+ padding: 20px 0;
35
+ }
36
+
37
+ section > div {
38
+ padding: 14px;
39
+ font-size: 16px;
40
+ }
41
+
42
+ paper-button.colored {
43
+ color: #4285f4;
44
+ }
45
+
46
+ paper-button[raised].colored {
47
+ background: #4285f4;
48
+ color: #fff;
49
+ }
50
+
51
+ paper-button.custom > core-icon {
52
+ margin-right: 4px;
53
+ }
54
+
55
+ paper-button.hover:hover {
56
+ background: #eee;
57
+ }
58
+
59
+ paper-button.blue-ripple::shadow #ripple {
60
+ color: #4285f4;
61
+ }
62
+
63
+ </style>
64
+ </head>
65
+ <body unresolved>
66
+
67
+ <template is="auto-binding">
68
+ <div id="clicker" on-tap="{{clickAction}}">
69
+ <section>
70
+
71
+ <div>Flat buttons</div>
72
+
73
+ <paper-button>button</paper-button>
74
+ <paper-button class="colored">colored</paper-button>
75
+ <paper-button disabled>disabled</paper-button>
76
+ <paper-button noink>noink</paper-button>
77
+
78
+ </section>
79
+
80
+ <br>
81
+
82
+ <section>
83
+
84
+ <div>Raised buttons</div>
85
+
86
+ <paper-button raised>button</paper-button>
87
+ <paper-button raised class="colored">colored</paper-button>
88
+ <paper-button raised disabled>disabled</paper-button>
89
+ <paper-button raised noink>noink</paper-button>
90
+
91
+ </section>
92
+
93
+ <section>
94
+
95
+ <div>Custom button content</div>
96
+
97
+ <paper-button class="colored custom">
98
+ <core-icon icon="check"></core-icon>
99
+ ok
100
+ </paper-button>
101
+ <paper-button class="custom">
102
+ <core-icon icon="clear"></core-icon>
103
+ cancel
104
+ </paper-button>
105
+ <br>
106
+ <paper-button>
107
+ <a href="https://www.polymer-project.org" target="_blank">link</a>
108
+ </paper-button>
109
+
110
+ </section>
111
+
112
+ <section>
113
+
114
+ <div>Toggle buttons</div>
115
+
116
+ <paper-button toggle>button</paper-button>
117
+
118
+ <paper-button toggle raised noink>noink</paper-button>
119
+
120
+ <paper-button toggle active class="colored">active</paper-button>
121
+
122
+ <paper-button toggle raised active class="colored">active</paper-button>
123
+
124
+ </section>
125
+
126
+ <section>
127
+
128
+ <div>Styling options</div>
129
+
130
+ <paper-button class="hover">hover</paper-button>
131
+ <paper-button class="blue-ripple">custom ripple</paper-button>
132
+
133
+ </section>
134
+ </div>
135
+ </template>
136
+
137
+ <script>
138
+
139
+ function clickAction(e) {
140
+ var t = e.target;
141
+ if (t.localName === 'paper-button') {
142
+ if (t.hasAttribute('disabled')) {
143
+ console.error('should not be able to click disabled button', t);
144
+ } else {
145
+ console.log('click', t);
146
+ }
147
+ }
148
+ }
149
+
150
+ addEventListener('template-bound', function(e) {
151
+ e.target.clickAction = clickAction;
152
+ });
153
+
154
+ </script>
155
+
156
+ </body>
157
+ </html>
@@ -0,0 +1,22 @@
1
+ <!doctype html>
2
+ <!--
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS
9
+ -->
10
+ <html>
11
+ <head>
12
+
13
+ <script src="../webcomponentsjs/webcomponents.js"></script>
14
+ <link rel="import" href="../core-component-page/core-component-page.html">
15
+
16
+ </head>
17
+ <body unresolved>
18
+
19
+ <core-component-page sources='["paper-button.html","paper-button-base.html"]'></core-component-page>
20
+
21
+ </body>
22
+ </html>
@@ -0,0 +1,17 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+ <x-meta id="paper-button" label="Button" group="Paper" isContainer>
11
+ <template>
12
+ <paper-button>button</paper-button>
13
+ </template>
14
+ <template id="imports">
15
+ <link rel="import" href="paper-button.html">
16
+ </template>
17
+ </x-meta>
@@ -0,0 +1,164 @@
1
+ <!--
2
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
+ Code distributed by Google as part of the polymer project is also
7
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
+ -->
9
+
10
+ <!--
11
+ @group Paper Elements
12
+
13
+ `paper-button-base` is the base class for button-like elements with ripple and optional shadow.
14
+
15
+ @element paper-button-base
16
+ @mixins Polymer.CoreFocusable https://github.com/polymer/core-focusable
17
+ @status unstable
18
+ -->
19
+
20
+ <link href="../polymer/polymer.html" rel="import">
21
+ <link href="../core-focusable/core-focusable.html" rel="import">
22
+ <link href="../paper-ripple/paper-ripple.html" rel="import">
23
+
24
+ <polymer-element name="paper-button-base" tabindex="0">
25
+
26
+ <script>
27
+
28
+ (function() {
29
+
30
+ var p = {
31
+
32
+ eventDelegates: {
33
+ down: 'downAction',
34
+ up: 'upAction'
35
+ },
36
+
37
+ toggleBackground: function() {
38
+ if (this.active) {
39
+
40
+ if (!this.$.bg) {
41
+ var bg = document.createElement('div');
42
+ bg.setAttribute('id', 'bg');
43
+ bg.setAttribute('fit', '');
44
+ bg.style.opacity = 0.25;
45
+ this.$.bg = bg;
46
+ this.shadowRoot.insertBefore(bg, this.shadowRoot.firstChild);
47
+ }
48
+ this.$.bg.style.backgroundColor = getComputedStyle(this).color;
49
+
50
+ } else {
51
+
52
+ if (this.$.bg) {
53
+ this.$.bg.style.backgroundColor = '';
54
+ }
55
+ }
56
+ },
57
+
58
+ activeChanged: function() {
59
+ this.super();
60
+
61
+ if (this.toggle && (!this.lastEvent || this.matches(':host-context([noink])'))) {
62
+ this.toggleBackground();
63
+ }
64
+ },
65
+
66
+ pressedChanged: function() {
67
+ this.super();
68
+
69
+ if (!this.lastEvent) {
70
+ return;
71
+ }
72
+
73
+ if (this.$.ripple && !this.hasAttribute('noink')) {
74
+ if (this.pressed) {
75
+ this.$.ripple.downAction(this.lastEvent);
76
+ } else {
77
+ this.$.ripple.upAction();
78
+ }
79
+ }
80
+
81
+ this.adjustZ();
82
+ },
83
+
84
+ focusedChanged: function() {
85
+ this.adjustZ();
86
+ },
87
+
88
+ disabledChanged: function() {
89
+ this._disabledChanged();
90
+ this.adjustZ();
91
+ },
92
+
93
+ recenteringTouchChanged: function() {
94
+ if (this.$.ripple) {
95
+ this.$.ripple.classList.toggle('recenteringTouch', this.recenteringTouch);
96
+ }
97
+ },
98
+
99
+ fillChanged: function() {
100
+ if (this.$.ripple) {
101
+ this.$.ripple.classList.toggle('fill', this.fill);
102
+ }
103
+ },
104
+
105
+ adjustZ: function() {
106
+ if (!this.$.shadow) {
107
+ return;
108
+ }
109
+ if (this.active) {
110
+ this.$.shadow.setZ(2);
111
+ } else if (this.disabled) {
112
+ this.$.shadow.setZ(0);
113
+ } else if (this.focused) {
114
+ this.$.shadow.setZ(3);
115
+ } else {
116
+ this.$.shadow.setZ(1);
117
+ }
118
+ },
119
+
120
+ downAction: function(e) {
121
+ this._downAction();
122
+
123
+ if (this.hasAttribute('noink')) {
124
+ return;
125
+ }
126
+
127
+ this.lastEvent = e;
128
+ if (!this.$.ripple) {
129
+ var ripple = document.createElement('paper-ripple');
130
+ ripple.setAttribute('id', 'ripple');
131
+ ripple.setAttribute('fit', '');
132
+ if (this.recenteringTouch) {
133
+ ripple.classList.add('recenteringTouch');
134
+ }
135
+ if (!this.fill) {
136
+ ripple.classList.add('circle');
137
+ }
138
+ this.$.ripple = ripple;
139
+ this.shadowRoot.insertBefore(ripple, this.shadowRoot.firstChild);
140
+ // No need to forward the event to the ripple because the ripple
141
+ // is triggered in activeChanged
142
+ }
143
+ },
144
+
145
+ upAction: function() {
146
+ this._upAction();
147
+
148
+ if (this.toggle) {
149
+ this.toggleBackground();
150
+ if (this.$.ripple) {
151
+ this.$.ripple.cancel();
152
+ }
153
+ }
154
+ }
155
+
156
+ };
157
+
158
+ Polymer.mixin2(p, Polymer.CoreFocusable);
159
+ Polymer(p);
160
+
161
+ })();
162
+
163
+ </script>
164
+ </polymer-element>
@@ -0,0 +1,197 @@
1
+ <!--
2
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
3
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6
+ Code distributed by Google as part of the polymer project is also
7
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
+ -->
9
+
10
+ <!--
11
+ @group Paper Elements
12
+
13
+ Material Design: <a href="http://www.google.com/design/spec/components/buttons.html">Buttons</a>
14
+
15
+ `paper-button` is a button. When the user touches the button, a ripple effect emanates
16
+ from the point of contact. It may be flat or raised. A raised button is styled with a
17
+ shadow.
18
+
19
+ Example:
20
+
21
+ <paper-button>flat button</paper-button>
22
+ <paper-button raised>raised button</paper-button>
23
+ <paper-button noink>No ripple effect</paper-button>
24
+
25
+ You may use custom DOM in the button body to create a variety of buttons. For example, to
26
+ create a button with an icon and some text:
27
+
28
+ <paper-button>
29
+ <core-icon icon="favorite"></core-icon>
30
+ custom button content
31
+ </paper-button>
32
+
33
+ ## Styling
34
+
35
+ Style the button with CSS as you would a normal DOM element.
36
+
37
+ /* make #my-button green with yellow text */
38
+ #my-button {
39
+ background: green;
40
+ color: yellow;
41
+ }
42
+
43
+ By default, the ripple is the same color as the foreground at 25% opacity. You may
44
+ customize the color using this selector:
45
+
46
+ /* make #my-button use a blue ripple instead of foreground color */
47
+ #my-button::shadow #ripple {
48
+ color: blue;
49
+ }
50
+
51
+ The opacity of the ripple is not customizable via CSS.
52
+
53
+ @element paper-button
54
+ @extends paper-button-base
55
+ @status unstable
56
+ -->
57
+
58
+ <link href="../polymer/polymer.html" rel="import">
59
+ <link href="../paper-shadow/paper-shadow.html" rel="import">
60
+ <link href="../core-a11y-keys/core-a11y-keys.html" rel="import">
61
+
62
+ <link href="paper-button-base.html" rel="import">
63
+
64
+ <polymer-element name="paper-button" extends="paper-button-base" attributes="raised recenteringTouch fill"
65
+ role="button">
66
+
67
+ <template>
68
+
69
+ <style>
70
+
71
+ :host {
72
+ display: inline-block;
73
+ position: relative;
74
+ box-sizing: border-box;
75
+ min-width: 5.14em;
76
+ margin: 0 0.29em;
77
+ background: transparent;
78
+ text-align: center;
79
+ font: inherit;
80
+ text-transform: uppercase;
81
+ outline: none;
82
+ border-radius: 3px;
83
+ -moz-user-select: none;
84
+ -ms-user-select: none;
85
+ -webkit-user-select: none;
86
+ user-select: none;
87
+ cursor: pointer;
88
+ z-index: 0;
89
+ }
90
+
91
+ :host([disabled]) {
92
+ background: #eaeaea;
93
+ color: #a8a8a8;
94
+ cursor: auto;
95
+ pointer-events: none;
96
+ }
97
+
98
+ ::content * {
99
+ text-transform: inherit;
100
+ }
101
+
102
+ #bg, #shadow {
103
+ border-radius: inherit;
104
+ }
105
+
106
+ #ripple {
107
+ pointer-events: none;
108
+ z-index: -1;
109
+ }
110
+
111
+ .button-content {
112
+ padding: 0.7em 0.57em
113
+ }
114
+
115
+ polyfill-next-selector { content: '.button-content > a'; }
116
+ ::content > a {
117
+ height: 100%;
118
+ padding: 0.7em 0.57em;
119
+ margin: -0.7em -0.57em;
120
+ /* flex */
121
+ -ms-flex: 1 1 0.000000001px;
122
+ -webkit-flex: 1;
123
+ flex: 1;
124
+ -webkit-flex-basis: 0.000000001px;
125
+ flex-basis: 0.000000001px;
126
+ }
127
+
128
+ </style>
129
+
130
+ <template if="{{raised}}">
131
+ <paper-shadow id="shadow" fit animated></paper-shadow>
132
+ </template>
133
+
134
+ <!-- this div is needed to position the ripple behind text content -->
135
+ <div class="button-content" relative layout horizontal center-center>
136
+ <content></content>
137
+ </div>
138
+
139
+ <core-a11y-keys keys="space enter" target="{{}}" on-keys-pressed="{{_activate}}"></core-a11y-keys>
140
+
141
+ </template>
142
+
143
+ <script>
144
+ Polymer({
145
+
146
+ publish: {
147
+
148
+ /**
149
+ * If true, the button will be styled with a shadow.
150
+ *
151
+ * @attribute raised
152
+ * @type boolean
153
+ * @default false
154
+ */
155
+ raised: false,
156
+
157
+ /**
158
+ * By default the ripple emanates from where the user touched the button.
159
+ * Set this to true to always center the ripple.
160
+ *
161
+ * @attribute recenteringTouch
162
+ * @type boolean
163
+ * @default false
164
+ */
165
+ recenteringTouch: false,
166
+
167
+ /**
168
+ * By default the ripple expands to fill the button. Set this to true to
169
+ * constrain the ripple to a circle within the button.
170
+ *
171
+ * @attribute fill
172
+ * @type boolean
173
+ * @default true
174
+ */
175
+ fill: true
176
+
177
+ },
178
+
179
+ _activate: function() {
180
+ this.click();
181
+ this.fire('tap');
182
+ if (!this.pressed) {
183
+ var bcr = this.getBoundingClientRect();
184
+ var x = bcr.left + (bcr.width / 2);
185
+ var y = bcr.top + (bcr.height / 2);
186
+ this.downAction({x: x, y: y});
187
+ var fn = function fn() {
188
+ this.upAction();
189
+ this.removeEventListener('keyup', fn);
190
+ }.bind(this);
191
+ this.addEventListener('keyup', fn);
192
+ }
193
+ }
194
+
195
+ });
196
+ </script>
197
+ </polymer-element>
@@ -0,0 +1,24 @@
1
+ <!doctype html>
2
+ <!--
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+ <html>
11
+ <head>
12
+ <meta charset="UTF-8">
13
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
14
+ <title>paper-button tests</title>
15
+ <script src="../../web-component-tester/browser.js"></script>
16
+ </head>
17
+ <body>
18
+ <script>
19
+ WCT.loadSuites([
20
+ 'paper-button.html'
21
+ ]);
22
+ </script>
23
+ </body>
24
+ </html>
@@ -0,0 +1,112 @@
1
+ <!doctype html>
2
+ <!--
3
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
+ Code distributed by Google as part of the polymer project is also
8
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
+ -->
10
+ <html>
11
+ <head>
12
+ <meta charset="UTF-8">
13
+ <title>paper-button basic tests</title>
14
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
15
+
16
+ <script src="../../webcomponentsjs/webcomponents.js"></script>
17
+ <script src="../../web-component-tester/browser.js"></script>
18
+ <script src="../../polymer-gestures/test/js/fake.js"></script>
19
+
20
+ <link href="../paper-button.html" rel="import">
21
+
22
+ </head>
23
+ <body>
24
+
25
+ <paper-button id="button1">button</paper-button>
26
+
27
+ <paper-button id="button2">button</paper-button>
28
+
29
+ <paper-button id="disabled" disabled>disabled</paper-button>
30
+
31
+ <script>
32
+
33
+ var fake = new Fake();
34
+
35
+ var b1 = document.getElementById('button1');
36
+
37
+ test('can set raised imperatively', function(done) {
38
+ assert.ok(!b1.shadowRoot.querySelector('paper-shadow'));
39
+ b1.raised = true;
40
+ flush(function() {
41
+ setTimeout(function() {
42
+ var shadow = b1.shadowRoot.querySelector('paper-shadow');
43
+ assert.ok(shadow);
44
+ done();
45
+ }, 600);
46
+ });
47
+ });
48
+
49
+ test('can set noink dynamically', function(done) {
50
+ var button = document.getElementById('button2');
51
+ button.lastEvent = {x: 100, y: 100};
52
+ button.$.ripple = {
53
+ downAction: function() {
54
+ assert.ok(false);
55
+ },
56
+ upAction: function() {
57
+ assert.ok(false);
58
+ }
59
+ };
60
+ button.setAttribute('noink', '');
61
+ fake.downOnNode(button);
62
+ fake.upOnNode(button);
63
+ // would throw if it tries to ripple
64
+ setTimeout(done, 10);
65
+ });
66
+
67
+ suite('a11y', function() {
68
+
69
+ test('aria role is a button', function() {
70
+ assert.strictEqual('button', b1.getAttribute('role'));
71
+ });
72
+
73
+ test('aria-disabled is set', function(done) {
74
+ var button = document.getElementById('disabled');
75
+ assert.ok(button.hasAttribute('aria-disabled'));
76
+ button.removeAttribute('disabled');
77
+ flush(function() {
78
+ assert.ok(!button.hasAttribute('aria-disabled'));
79
+ done();
80
+ });
81
+ });
82
+
83
+ test('space triggers the button', function() {
84
+ var ev = new CustomEvent('keydown', {detail: {key: 'space'}});
85
+ var sawClick = false;
86
+ function clickListener() {
87
+ sawClick = true;
88
+ }
89
+ b1.addEventListener('click', clickListener);
90
+ b1.dispatchEvent(ev);
91
+ assert.ok(sawClick);
92
+ b1.removeEventListener(clickListener);
93
+ });
94
+
95
+ test('enter triggers the button', function() {
96
+ var ev = new CustomEvent('keydown', {detail: {key: 'enter'}});
97
+ var sawClick = false;
98
+ function clickListener() {
99
+ sawClick = true;
100
+ }
101
+ b1.addEventListener('click', clickListener);
102
+ b1.dispatchEvent(ev);
103
+ assert.ok(sawClick);
104
+ b1.removeEventListener(clickListener);
105
+ });
106
+
107
+ });
108
+
109
+ </script>
110
+
111
+ </body>
112
+ </html>