rbbt-rest 1.6.13 → 1.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (562) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/rest/common/misc.rb +1 -0
  3. data/lib/rbbt/rest/main.rb +3 -1
  4. data/lib/rbbt/rest/workflow.rb +4 -4
  5. data/lib/rbbt/rest/workflow/jobs.rb +2 -1
  6. data/share/views/compass/app.sass +15 -4
  7. data/share/views/layout.haml +1 -2
  8. data/share/views/layout/coda.haml +0 -2
  9. data/share/views/layout/footer.haml +20 -7
  10. data/share/views/layout/header.haml +4 -9
  11. data/share/views/layout/top_menu.haml +44 -32
  12. data/share/views/public/js/app.js +9 -10
  13. data/share/views/public/js/defer.js +1 -1
  14. data/share/views/public/js/helpers.js +14 -0
  15. data/share/views/public/js/rbbt.aesthetics.js +0 -3
  16. data/share/views/public/js/rbbt.exception.js +21 -0
  17. data/share/views/public/js/rbbt.favourites.js +24 -14
  18. data/share/views/public/js/rbbt.job.js +14 -5
  19. data/share/views/public/js/rbbt.modal.js +26 -4
  20. data/share/views/public/js/rbbt.page.js +111 -1
  21. data/share/views/public/js/rbbt/list.js +36 -26
  22. data/share/views/public/js/rbbt/modal.js +1 -0
  23. data/share/views/public/js/rbbt/reveal.js +2 -4
  24. data/share/views/public/js/rbbt/table.js +6 -4
  25. data/share/views/public/plugins/jquery/js/jquery-2.1.4.js +9210 -0
  26. data/share/views/public/plugins/semantic-ui/CONTRIBUTING.md +16 -31
  27. data/share/views/public/plugins/semantic-ui/LICENSE.md +0 -0
  28. data/share/views/public/plugins/semantic-ui/README.md +57 -64
  29. data/share/views/public/plugins/semantic-ui/RELEASE-NOTES.md +957 -7
  30. data/share/views/public/plugins/semantic-ui/bower.json +2 -4
  31. data/share/views/public/plugins/semantic-ui/composer.json +11 -8
  32. data/share/views/public/plugins/semantic-ui/dist/components/accordion.css +32 -26
  33. data/share/views/public/plugins/semantic-ui/dist/components/accordion.js +182 -94
  34. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.css +6 -7
  35. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.js +6 -6
  36. data/share/views/public/plugins/semantic-ui/dist/components/ad.css +19 -8
  37. data/share/views/public/plugins/semantic-ui/dist/components/ad.min.css +6 -7
  38. data/share/views/public/plugins/semantic-ui/dist/components/api.js +428 -190
  39. data/share/views/public/plugins/semantic-ui/dist/components/api.min.js +6 -6
  40. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.css +22 -22
  41. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.min.css +6 -7
  42. data/share/views/public/plugins/semantic-ui/dist/components/button.css +1569 -707
  43. data/share/views/public/plugins/semantic-ui/dist/components/button.min.css +6 -7
  44. data/share/views/public/plugins/semantic-ui/dist/components/card.css +334 -143
  45. data/share/views/public/plugins/semantic-ui/dist/components/card.min.css +6 -7
  46. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.css +234 -131
  47. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.js +348 -111
  48. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.css +6 -7
  49. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.js +6 -6
  50. data/share/views/public/plugins/semantic-ui/dist/components/colorize.js +6 -4
  51. data/share/views/public/plugins/semantic-ui/dist/components/colorize.min.js +6 -6
  52. data/share/views/public/plugins/semantic-ui/dist/components/comment.css +9 -10
  53. data/share/views/public/plugins/semantic-ui/dist/components/comment.min.css +6 -7
  54. data/share/views/public/plugins/semantic-ui/dist/components/container.css +125 -0
  55. data/share/views/public/plugins/semantic-ui/dist/components/container.min.css +10 -0
  56. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.css +34 -21
  57. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.js +89 -48
  58. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.css +6 -7
  59. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.js +6 -6
  60. data/share/views/public/plugins/semantic-ui/dist/components/divider.css +54 -38
  61. data/share/views/public/plugins/semantic-ui/dist/components/divider.min.css +6 -7
  62. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.css +575 -153
  63. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.js +2263 -536
  64. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.css +6 -7
  65. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.js +8 -6
  66. data/share/views/public/plugins/semantic-ui/dist/components/embed.css +162 -0
  67. data/share/views/public/plugins/semantic-ui/dist/components/embed.js +662 -0
  68. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.css +10 -0
  69. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.js +11 -0
  70. data/share/views/public/plugins/semantic-ui/dist/components/feed.css +54 -30
  71. data/share/views/public/plugins/semantic-ui/dist/components/feed.min.css +6 -7
  72. data/share/views/public/plugins/semantic-ui/dist/components/flag.css +12 -6
  73. data/share/views/public/plugins/semantic-ui/dist/components/flag.min.css +6 -7
  74. data/share/views/public/plugins/semantic-ui/dist/components/form.css +322 -162
  75. data/share/views/public/plugins/semantic-ui/dist/components/form.js +654 -193
  76. data/share/views/public/plugins/semantic-ui/dist/components/form.min.css +6 -7
  77. data/share/views/public/plugins/semantic-ui/dist/components/form.min.js +6 -6
  78. data/share/views/public/plugins/semantic-ui/dist/components/grid.css +622 -427
  79. data/share/views/public/plugins/semantic-ui/dist/components/grid.min.css +6 -7
  80. data/share/views/public/plugins/semantic-ui/dist/components/header.css +360 -171
  81. data/share/views/public/plugins/semantic-ui/dist/components/header.min.css +6 -7
  82. data/share/views/public/plugins/semantic-ui/dist/components/icon.css +611 -153
  83. data/share/views/public/plugins/semantic-ui/dist/components/icon.min.css +6 -7
  84. data/share/views/public/plugins/semantic-ui/dist/components/image.css +68 -18
  85. data/share/views/public/plugins/semantic-ui/dist/components/image.min.css +6 -7
  86. data/share/views/public/plugins/semantic-ui/dist/components/input.css +172 -131
  87. data/share/views/public/plugins/semantic-ui/dist/components/input.min.css +6 -7
  88. data/share/views/public/plugins/semantic-ui/dist/components/item.css +72 -48
  89. data/share/views/public/plugins/semantic-ui/dist/components/item.min.css +6 -7
  90. data/share/views/public/plugins/semantic-ui/dist/components/label.css +494 -316
  91. data/share/views/public/plugins/semantic-ui/dist/components/label.min.css +6 -7
  92. data/share/views/public/plugins/semantic-ui/dist/components/list.css +192 -158
  93. data/share/views/public/plugins/semantic-ui/dist/components/list.min.css +6 -7
  94. data/share/views/public/plugins/semantic-ui/dist/components/loader.css +25 -18
  95. data/share/views/public/plugins/semantic-ui/dist/components/loader.min.css +6 -7
  96. data/share/views/public/plugins/semantic-ui/dist/components/menu.css +952 -667
  97. data/share/views/public/plugins/semantic-ui/dist/components/menu.min.css +1 -11
  98. data/share/views/public/plugins/semantic-ui/dist/components/message.css +140 -98
  99. data/share/views/public/plugins/semantic-ui/dist/components/message.min.css +6 -7
  100. data/share/views/public/plugins/semantic-ui/dist/components/modal.css +167 -93
  101. data/share/views/public/plugins/semantic-ui/dist/components/modal.js +280 -202
  102. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.css +6 -7
  103. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.js +6 -6
  104. data/share/views/public/plugins/semantic-ui/dist/components/nag.css +11 -12
  105. data/share/views/public/plugins/semantic-ui/dist/components/nag.js +10 -11
  106. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.css +6 -7
  107. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.js +6 -6
  108. data/share/views/public/plugins/semantic-ui/dist/components/popup.css +86 -30
  109. data/share/views/public/plugins/semantic-ui/dist/components/popup.js +473 -233
  110. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.css +6 -7
  111. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.js +6 -6
  112. data/share/views/public/plugins/semantic-ui/dist/components/progress.css +217 -127
  113. data/share/views/public/plugins/semantic-ui/dist/components/progress.js +252 -111
  114. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.css +6 -7
  115. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.js +6 -6
  116. data/share/views/public/plugins/semantic-ui/dist/components/rail.css +19 -12
  117. data/share/views/public/plugins/semantic-ui/dist/components/rail.min.css +6 -7
  118. data/share/views/public/plugins/semantic-ui/dist/components/rating.css +77 -73
  119. data/share/views/public/plugins/semantic-ui/dist/components/rating.js +85 -61
  120. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.css +6 -7
  121. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.js +6 -6
  122. data/share/views/public/plugins/semantic-ui/dist/components/reset.css +15 -13
  123. data/share/views/public/plugins/semantic-ui/dist/components/reset.min.css +6 -7
  124. data/share/views/public/plugins/semantic-ui/dist/components/reveal.css +47 -17
  125. data/share/views/public/plugins/semantic-ui/dist/components/reveal.min.css +6 -7
  126. data/share/views/public/plugins/semantic-ui/dist/components/search.css +102 -56
  127. data/share/views/public/plugins/semantic-ui/dist/components/search.js +688 -296
  128. data/share/views/public/plugins/semantic-ui/dist/components/search.min.css +6 -7
  129. data/share/views/public/plugins/semantic-ui/dist/components/search.min.js +6 -6
  130. data/share/views/public/plugins/semantic-ui/dist/components/segment.css +311 -164
  131. data/share/views/public/plugins/semantic-ui/dist/components/segment.min.css +6 -7
  132. data/share/views/public/plugins/semantic-ui/dist/components/shape.css +14 -15
  133. data/share/views/public/plugins/semantic-ui/dist/components/shape.js +102 -56
  134. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.css +6 -7
  135. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.js +6 -6
  136. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.css +167 -38
  137. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.js +296 -249
  138. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.css +6 -7
  139. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.js +6 -6
  140. data/share/views/public/plugins/semantic-ui/dist/components/site.css +56 -30
  141. data/share/views/public/plugins/semantic-ui/dist/components/site.js +8 -8
  142. data/share/views/public/plugins/semantic-ui/dist/components/site.min.css +6 -7
  143. data/share/views/public/plugins/semantic-ui/dist/components/site.min.js +6 -6
  144. data/share/views/public/plugins/semantic-ui/dist/components/state.js +37 -32
  145. data/share/views/public/plugins/semantic-ui/dist/components/state.min.js +6 -6
  146. data/share/views/public/plugins/semantic-ui/dist/components/statistic.css +268 -94
  147. data/share/views/public/plugins/semantic-ui/dist/components/statistic.min.css +6 -7
  148. data/share/views/public/plugins/semantic-ui/dist/components/step.css +348 -102
  149. data/share/views/public/plugins/semantic-ui/dist/components/step.min.css +6 -7
  150. data/share/views/public/plugins/semantic-ui/dist/components/sticky.css +7 -8
  151. data/share/views/public/plugins/semantic-ui/dist/components/sticky.js +222 -108
  152. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.css +6 -7
  153. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.js +6 -6
  154. data/share/views/public/plugins/semantic-ui/dist/components/tab.css +6 -7
  155. data/share/views/public/plugins/semantic-ui/dist/components/tab.js +268 -172
  156. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.css +6 -7
  157. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.js +6 -6
  158. data/share/views/public/plugins/semantic-ui/dist/components/table.css +372 -201
  159. data/share/views/public/plugins/semantic-ui/dist/components/table.min.css +6 -7
  160. data/share/views/public/plugins/semantic-ui/dist/components/transition.css +1546 -557
  161. data/share/views/public/plugins/semantic-ui/dist/components/transition.js +355 -210
  162. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.css +6 -7
  163. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.js +6 -6
  164. data/share/views/public/plugins/semantic-ui/dist/components/video.css +19 -20
  165. data/share/views/public/plugins/semantic-ui/dist/components/video.js +16 -23
  166. data/share/views/public/plugins/semantic-ui/dist/components/video.min.css +5 -6
  167. data/share/views/public/plugins/semantic-ui/dist/components/video.min.js +6 -6
  168. data/share/views/public/plugins/semantic-ui/dist/components/visibility.js +423 -161
  169. data/share/views/public/plugins/semantic-ui/dist/components/visibility.min.js +6 -6
  170. data/share/views/public/plugins/semantic-ui/dist/components/visit.js +18 -14
  171. data/share/views/public/plugins/semantic-ui/dist/components/visit.min.js +6 -6
  172. data/share/views/public/plugins/semantic-ui/dist/semantic.css +24827 -17141
  173. data/share/views/public/plugins/semantic-ui/dist/semantic.js +15072 -11354
  174. data/share/views/public/plugins/semantic-ui/dist/semantic.min.css +2 -2
  175. data/share/views/public/plugins/semantic-ui/dist/semantic.min.js +10 -8
  176. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.eot +0 -0
  177. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.otf +0 -0
  178. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.svg +526 -465
  179. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.ttf +0 -0
  180. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff +0 -0
  181. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  182. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/images/flags.png +0 -0
  183. data/share/views/public/plugins/semantic-ui/examples/assets/images/avatar/nan.jpg +0 -0
  184. data/share/views/public/plugins/semantic-ui/examples/assets/images/avatar/tom.jpg +0 -0
  185. data/share/views/public/plugins/semantic-ui/examples/assets/images/bg.jpg +0 -0
  186. data/share/views/public/plugins/semantic-ui/examples/assets/images/logo.png +0 -0
  187. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/centered-paragraph.png +0 -0
  188. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/image-square.png +0 -0
  189. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/image-text.png +0 -0
  190. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/image.png +0 -0
  191. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/media-paragraph-alt.png +0 -0
  192. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/media-paragraph.png +0 -0
  193. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/paragraph.png +0 -0
  194. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/short-paragraph.png +0 -0
  195. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/square-image.png +0 -0
  196. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/text-image.png +0 -0
  197. data/share/views/public/plugins/semantic-ui/examples/{images → assets/images}/wireframe/white-image.png +0 -0
  198. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe-content.js +707 -0
  199. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe.js +642 -0
  200. data/share/views/public/plugins/semantic-ui/examples/assets/library/jquery.min.js +4 -0
  201. data/share/views/public/plugins/semantic-ui/examples/assets/show-examples.js +15 -0
  202. data/share/views/public/plugins/semantic-ui/examples/bootstrap.html +453 -0
  203. data/share/views/public/plugins/semantic-ui/examples/components/button.html +222 -0
  204. data/share/views/public/plugins/semantic-ui/examples/components/card.html +313 -0
  205. data/share/views/public/plugins/semantic-ui/examples/components/input.html +159 -0
  206. data/share/views/public/plugins/semantic-ui/examples/components/menu.html +183 -0
  207. data/share/views/public/plugins/semantic-ui/examples/components/site.html +74 -0
  208. data/share/views/public/plugins/semantic-ui/examples/components/table.html +471 -0
  209. data/share/views/public/plugins/semantic-ui/examples/fixed.html +137 -0
  210. data/share/views/public/plugins/semantic-ui/examples/grid.html +366 -1397
  211. data/share/views/public/plugins/semantic-ui/examples/homepage.html +249 -268
  212. data/share/views/public/plugins/semantic-ui/examples/login.html +125 -0
  213. data/share/views/public/plugins/semantic-ui/examples/responsive.html +689 -0
  214. data/share/views/public/plugins/semantic-ui/examples/sticky.html +230 -0
  215. data/share/views/public/plugins/semantic-ui/examples/theming.html +88 -0
  216. data/share/views/public/plugins/semantic-ui/gulpfile.js +47 -1082
  217. data/share/views/public/plugins/semantic-ui/karma.conf.js +0 -0
  218. data/share/views/public/plugins/semantic-ui/logo.png +0 -0
  219. data/share/views/public/plugins/semantic-ui/package.json +70 -36
  220. data/share/views/public/plugins/semantic-ui/semantic.json.example +4 -1
  221. data/share/views/public/plugins/semantic-ui/src/README.md +127 -0
  222. data/share/views/public/plugins/semantic-ui/src/_site/collections/breadcrumb.overrides +0 -0
  223. data/share/views/public/plugins/semantic-ui/src/_site/collections/breadcrumb.variables +0 -0
  224. data/share/views/public/plugins/semantic-ui/src/_site/collections/form.overrides +0 -0
  225. data/share/views/public/plugins/semantic-ui/src/_site/collections/grid.overrides +0 -0
  226. data/share/views/public/plugins/semantic-ui/src/_site/collections/menu.overrides +0 -0
  227. data/share/views/public/plugins/semantic-ui/src/_site/collections/table.overrides +0 -0
  228. data/share/views/public/plugins/semantic-ui/src/_site/elements/button.overrides +0 -0
  229. data/share/views/public/plugins/semantic-ui/src/_site/{modules/video.overrides → elements/container.overrides} +0 -0
  230. data/share/views/public/plugins/semantic-ui/src/_site/elements/container.variables +3 -0
  231. data/share/views/public/plugins/semantic-ui/src/_site/elements/divider.overrides +0 -0
  232. data/share/views/public/plugins/semantic-ui/src/_site/elements/flag.overrides +0 -0
  233. data/share/views/public/plugins/semantic-ui/src/_site/elements/header.overrides +0 -0
  234. data/share/views/public/plugins/semantic-ui/src/_site/elements/icon.overrides +0 -0
  235. data/share/views/public/plugins/semantic-ui/src/_site/elements/image.overrides +0 -0
  236. data/share/views/public/plugins/semantic-ui/src/_site/elements/input.overrides +0 -0
  237. data/share/views/public/plugins/semantic-ui/src/_site/elements/label.overrides +0 -0
  238. data/share/views/public/plugins/semantic-ui/src/_site/elements/loader.overrides +0 -0
  239. data/share/views/public/plugins/semantic-ui/src/_site/elements/rail.overrides +0 -0
  240. data/share/views/public/plugins/semantic-ui/src/_site/elements/reveal.overrides +0 -0
  241. data/share/views/public/plugins/semantic-ui/src/_site/elements/segment.overrides +0 -0
  242. data/share/views/public/plugins/semantic-ui/src/_site/elements/step.overrides +0 -0
  243. data/share/views/public/plugins/semantic-ui/src/_site/globals/reset.overrides +0 -0
  244. data/share/views/public/plugins/semantic-ui/src/_site/globals/site.overrides +0 -0
  245. data/share/views/public/plugins/semantic-ui/src/_site/modules/checkbox.overrides +0 -0
  246. data/share/views/public/plugins/semantic-ui/src/_site/modules/embed.overrides +3 -0
  247. data/share/views/public/plugins/semantic-ui/src/_site/modules/{video.variables → embed.variables} +0 -0
  248. data/share/views/public/plugins/semantic-ui/src/_site/modules/modal.overrides +0 -0
  249. data/share/views/public/plugins/semantic-ui/src/_site/modules/modal.variables +0 -0
  250. data/share/views/public/plugins/semantic-ui/src/_site/modules/progress.overrides +0 -0
  251. data/share/views/public/plugins/semantic-ui/src/_site/modules/rating.overrides +0 -0
  252. data/share/views/public/plugins/semantic-ui/src/_site/modules/rating.variables +0 -0
  253. data/share/views/public/plugins/semantic-ui/src/_site/modules/search.overrides +0 -0
  254. data/share/views/public/plugins/semantic-ui/src/_site/modules/search.variables +0 -0
  255. data/share/views/public/plugins/semantic-ui/src/_site/modules/sidebar.overrides +0 -0
  256. data/share/views/public/plugins/semantic-ui/src/_site/modules/sidebar.variables +0 -0
  257. data/share/views/public/plugins/semantic-ui/src/_site/modules/sticky.overrides +0 -0
  258. data/share/views/public/plugins/semantic-ui/src/_site/modules/sticky.variables +0 -0
  259. data/share/views/public/plugins/semantic-ui/src/_site/modules/transition.overrides +0 -0
  260. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/api.js +428 -190
  261. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/colorize.js +6 -4
  262. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/form.js +654 -193
  263. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/state.js +37 -32
  264. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visibility.js +423 -161
  265. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visit.js +18 -14
  266. data/share/views/public/plugins/semantic-ui/src/definitions/collections/breadcrumb.less +7 -6
  267. data/share/views/public/plugins/semantic-ui/src/definitions/collections/form.less +243 -103
  268. data/share/views/public/plugins/semantic-ui/src/definitions/collections/grid.less +522 -430
  269. data/share/views/public/plugins/semantic-ui/src/definitions/collections/menu.less +872 -640
  270. data/share/views/public/plugins/semantic-ui/src/definitions/collections/message.less +97 -79
  271. data/share/views/public/plugins/semantic-ui/src/definitions/collections/table.less +314 -132
  272. data/share/views/public/plugins/semantic-ui/src/definitions/elements/button.less +1300 -480
  273. data/share/views/public/plugins/semantic-ui/src/definitions/elements/container.less +125 -0
  274. data/share/views/public/plugins/semantic-ui/src/definitions/elements/divider.less +36 -37
  275. data/share/views/public/plugins/semantic-ui/src/definitions/elements/flag.less +12 -5
  276. data/share/views/public/plugins/semantic-ui/src/definitions/elements/header.less +308 -157
  277. data/share/views/public/plugins/semantic-ui/src/definitions/elements/icon.less +207 -106
  278. data/share/views/public/plugins/semantic-ui/src/definitions/elements/image.less +71 -13
  279. data/share/views/public/plugins/semantic-ui/src/definitions/elements/input.less +127 -104
  280. data/share/views/public/plugins/semantic-ui/src/definitions/elements/label.less +454 -268
  281. data/share/views/public/plugins/semantic-ui/src/definitions/elements/list.less +127 -96
  282. data/share/views/public/plugins/semantic-ui/src/definitions/elements/loader.less +13 -6
  283. data/share/views/public/plugins/semantic-ui/src/definitions/elements/rail.less +40 -31
  284. data/share/views/public/plugins/semantic-ui/src/definitions/elements/reveal.less +31 -15
  285. data/share/views/public/plugins/semantic-ui/src/definitions/elements/segment.less +265 -140
  286. data/share/views/public/plugins/semantic-ui/src/definitions/elements/step.less +243 -67
  287. data/share/views/public/plugins/semantic-ui/src/definitions/globals/reset.less +8 -6
  288. data/share/views/public/plugins/semantic-ui/src/definitions/globals/site.js +8 -8
  289. data/share/views/public/plugins/semantic-ui/src/definitions/globals/site.less +44 -13
  290. data/share/views/public/plugins/semantic-ui/src/definitions/modules/accordion.js +182 -94
  291. data/share/views/public/plugins/semantic-ui/src/definitions/modules/accordion.less +13 -9
  292. data/share/views/public/plugins/semantic-ui/src/definitions/modules/checkbox.js +348 -111
  293. data/share/views/public/plugins/semantic-ui/src/definitions/modules/checkbox.less +196 -96
  294. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.js +89 -48
  295. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.less +30 -20
  296. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.js +2263 -536
  297. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.less +498 -97
  298. data/share/views/public/plugins/semantic-ui/src/definitions/modules/embed.js +662 -0
  299. data/share/views/public/plugins/semantic-ui/src/definitions/modules/embed.less +164 -0
  300. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.js +280 -202
  301. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.less +91 -47
  302. data/share/views/public/plugins/semantic-ui/src/definitions/modules/nag.js +10 -11
  303. data/share/views/public/plugins/semantic-ui/src/definitions/modules/nag.less +6 -6
  304. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.js +473 -233
  305. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.less +55 -13
  306. data/share/views/public/plugins/semantic-ui/src/definitions/modules/progress.js +252 -111
  307. data/share/views/public/plugins/semantic-ui/src/definitions/modules/progress.less +182 -107
  308. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.js +85 -61
  309. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.less +64 -70
  310. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.js +688 -296
  311. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.less +60 -14
  312. data/share/views/public/plugins/semantic-ui/src/definitions/modules/shape.js +102 -56
  313. data/share/views/public/plugins/semantic-ui/src/definitions/modules/shape.less +10 -11
  314. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sidebar.js +296 -249
  315. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sidebar.less +140 -44
  316. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sticky.js +222 -108
  317. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sticky.less +6 -5
  318. data/share/views/public/plugins/semantic-ui/src/definitions/modules/tab.js +268 -172
  319. data/share/views/public/plugins/semantic-ui/src/definitions/modules/tab.less +6 -5
  320. data/share/views/public/plugins/semantic-ui/src/definitions/modules/transition.js +355 -210
  321. data/share/views/public/plugins/semantic-ui/src/definitions/modules/transition.less +8 -18
  322. data/share/views/public/plugins/semantic-ui/src/definitions/views/ad.less +6 -4
  323. data/share/views/public/plugins/semantic-ui/src/definitions/views/card.less +385 -92
  324. data/share/views/public/plugins/semantic-ui/src/definitions/views/comment.less +6 -6
  325. data/share/views/public/plugins/semantic-ui/src/definitions/views/feed.less +19 -12
  326. data/share/views/public/plugins/semantic-ui/src/definitions/views/item.less +18 -19
  327. data/share/views/public/plugins/semantic-ui/src/definitions/views/statistic.less +232 -90
  328. data/share/views/public/plugins/semantic-ui/src/semantic.less +66 -0
  329. data/share/views/public/plugins/semantic-ui/src/theme.config.example +19 -23
  330. data/share/views/public/plugins/semantic-ui/src/theme.less +24 -17
  331. data/share/views/public/plugins/semantic-ui/src/themes/amazon/elements/button.overrides +5 -5
  332. data/share/views/public/plugins/semantic-ui/src/themes/amazon/elements/button.variables +5 -4
  333. data/share/views/public/plugins/semantic-ui/src/themes/basic/collections/table.variables +1 -0
  334. data/share/views/public/plugins/semantic-ui/src/themes/basic/elements/icon.overrides +156 -156
  335. data/share/views/public/plugins/semantic-ui/src/themes/basic/elements/icon.variables +7 -0
  336. data/share/views/public/plugins/semantic-ui/src/themes/basic/views/card.variables +7 -6
  337. data/share/views/public/plugins/semantic-ui/src/themes/bookish/elements/header.variables +4 -4
  338. data/share/views/public/plugins/semantic-ui/src/themes/bootstrap3/elements/button.variables +1 -1
  339. data/share/views/public/plugins/semantic-ui/src/themes/chubby/collections/form.overrides +8 -0
  340. data/share/views/public/plugins/semantic-ui/src/themes/chubby/collections/menu.overrides +0 -0
  341. data/share/views/public/plugins/semantic-ui/src/themes/chubby/collections/menu.variables +40 -0
  342. data/share/views/public/plugins/semantic-ui/src/themes/chubby/elements/header.variables +4 -4
  343. data/share/views/public/plugins/semantic-ui/src/themes/classic/modules/progress.variables +1 -0
  344. data/share/views/public/plugins/semantic-ui/src/themes/classic/views/card.overrides +1 -1
  345. data/share/views/public/plugins/semantic-ui/src/themes/colored/modules/checkbox.overrides +0 -0
  346. data/share/views/public/plugins/semantic-ui/src/themes/colored/modules/checkbox.variables +17 -0
  347. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.eot +0 -0
  348. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.svg +526 -465
  349. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.ttf +0 -0
  350. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff +0 -0
  351. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff2 +0 -0
  352. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/images/flags.png +0 -0
  353. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/breadcrumb.overrides +0 -0
  354. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/breadcrumb.variables +7 -17
  355. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/form.overrides +0 -0
  356. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/form.variables +39 -39
  357. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/grid.overrides +0 -0
  358. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/grid.variables +34 -29
  359. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/menu.overrides +0 -0
  360. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/menu.variables +265 -157
  361. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/message.overrides +0 -0
  362. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/message.variables +42 -19
  363. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/table.overrides +0 -3
  364. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/table.variables +64 -60
  365. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/button.overrides +0 -0
  366. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/button.variables +110 -36
  367. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/container.overrides +3 -0
  368. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/container.variables +45 -0
  369. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/divider.overrides +15 -0
  370. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/divider.variables +3 -4
  371. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/flag.overrides +0 -1
  372. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/header.overrides +0 -0
  373. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/header.variables +59 -34
  374. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.overrides +142 -38
  375. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.variables +30 -4
  376. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/image.overrides +0 -0
  377. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/image.variables +5 -3
  378. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/input.overrides +0 -0
  379. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/input.variables +12 -26
  380. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/label.overrides +0 -0
  381. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/label.variables +101 -38
  382. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/list.overrides +0 -0
  383. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/list.variables +53 -34
  384. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/loader.overrides +0 -0
  385. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/loader.variables +9 -10
  386. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/rail.overrides +0 -0
  387. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/rail.variables +15 -5
  388. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/reveal.overrides +0 -0
  389. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/reveal.variables +6 -4
  390. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/segment.overrides +0 -0
  391. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/segment.variables +66 -28
  392. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/step.overrides +0 -0
  393. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/step.variables +64 -30
  394. data/share/views/public/plugins/semantic-ui/src/themes/default/globals/reset.overrides +0 -0
  395. data/share/views/public/plugins/semantic-ui/src/themes/default/globals/site.variables +519 -331
  396. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.overrides +0 -0
  397. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.variables +10 -11
  398. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/chatroom.overrides +0 -0
  399. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/checkbox.overrides +19 -16
  400. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/checkbox.variables +72 -43
  401. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dimmer.overrides +0 -0
  402. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dimmer.variables +20 -10
  403. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.overrides +5 -0
  404. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.variables +188 -63
  405. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/{video.overrides → embed.overrides} +0 -0
  406. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/embed.variables +53 -0
  407. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/modal.overrides +0 -0
  408. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/modal.variables +26 -22
  409. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/nag.overrides +0 -0
  410. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/popup.overrides +0 -0
  411. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/popup.variables +6 -12
  412. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/progress.variables +14 -8
  413. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/rating.overrides +0 -1
  414. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/rating.variables +72 -34
  415. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/search.overrides +0 -0
  416. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/search.variables +36 -34
  417. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/shape.overrides +0 -0
  418. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/shape.variables +7 -2
  419. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/sidebar.overrides +0 -0
  420. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/sidebar.variables +19 -13
  421. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/sticky.overrides +0 -0
  422. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/sticky.variables +2 -7
  423. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/tab.variables +1 -3
  424. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/transition.overrides +689 -224
  425. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/transition.variables +1 -1
  426. data/share/views/public/plugins/semantic-ui/src/themes/default/views/ad.variables +2 -2
  427. data/share/views/public/plugins/semantic-ui/src/themes/default/views/card.variables +61 -37
  428. data/share/views/public/plugins/semantic-ui/src/themes/default/views/comment.overrides +0 -0
  429. data/share/views/public/plugins/semantic-ui/src/themes/default/views/feed.overrides +0 -0
  430. data/share/views/public/plugins/semantic-ui/src/themes/default/views/feed.variables +15 -23
  431. data/share/views/public/plugins/semantic-ui/src/themes/default/views/item.overrides +0 -0
  432. data/share/views/public/plugins/semantic-ui/src/themes/default/views/item.variables +17 -15
  433. data/share/views/public/plugins/semantic-ui/src/themes/default/views/statistic.overrides +0 -0
  434. data/share/views/public/plugins/semantic-ui/src/themes/default/views/statistic.variables +25 -24
  435. data/share/views/public/plugins/semantic-ui/src/themes/fixed-width/collections/grid.variables +1 -3
  436. data/share/views/public/plugins/semantic-ui/src/themes/flat/collections/form.overrides +4 -0
  437. data/share/views/public/plugins/semantic-ui/src/themes/flat/collections/form.variables +1 -2
  438. data/share/views/public/plugins/semantic-ui/src/themes/flat/globals/site.variables +1 -0
  439. data/share/views/public/plugins/semantic-ui/src/themes/github/collections/form.variables +1 -1
  440. data/share/views/public/plugins/semantic-ui/src/themes/github/collections/menu.variables +10 -15
  441. data/share/views/public/plugins/semantic-ui/src/themes/github/elements/button.variables +2 -2
  442. data/share/views/public/plugins/semantic-ui/src/themes/github/elements/step.variables +2 -2
  443. data/share/views/public/plugins/semantic-ui/src/themes/instagram/views/card.overrides +12 -0
  444. data/share/views/public/plugins/semantic-ui/src/themes/instagram/views/card.variables +23 -0
  445. data/share/views/public/plugins/semantic-ui/src/themes/material/collections/menu.overrides +1 -0
  446. data/share/views/public/plugins/semantic-ui/src/themes/material/collections/menu.variables +10 -0
  447. data/share/views/public/plugins/semantic-ui/src/themes/material/elements/button.overrides +4 -4
  448. data/share/views/public/plugins/semantic-ui/src/themes/material/elements/button.variables +14 -6
  449. data/share/views/public/plugins/semantic-ui/src/themes/material/globals/site.variables +3 -2
  450. data/share/views/public/plugins/semantic-ui/src/themes/material/modules/dropdown.overrides +5 -0
  451. data/share/views/public/plugins/semantic-ui/src/themes/material/modules/dropdown.variables +20 -0
  452. data/share/views/public/plugins/semantic-ui/src/themes/raised/elements/button.variables +5 -5
  453. data/share/views/public/plugins/semantic-ui/src/themes/round/elements/button.variables +1 -1
  454. data/share/views/public/plugins/semantic-ui/src/themes/rtl/globals/site.overrides +6 -0
  455. data/share/views/public/plugins/semantic-ui/src/themes/rtl/globals/site.variables +14 -0
  456. data/share/views/public/plugins/semantic-ui/src/themes/timeline/views/feed.overrides +4 -12
  457. data/share/views/public/plugins/semantic-ui/src/themes/timeline/views/feed.variables +3 -7
  458. data/share/views/public/plugins/semantic-ui/tasks/README.md +17 -0
  459. data/share/views/public/plugins/semantic-ui/tasks/admin/components/create.js +332 -0
  460. data/share/views/public/plugins/semantic-ui/tasks/admin/components/init.js +170 -0
  461. data/share/views/public/plugins/semantic-ui/tasks/admin/components/update.js +184 -0
  462. data/share/views/public/plugins/semantic-ui/tasks/admin/distributions/create.js +219 -0
  463. data/share/views/public/plugins/semantic-ui/tasks/admin/distributions/init.js +170 -0
  464. data/share/views/public/plugins/semantic-ui/tasks/admin/distributions/update.js +182 -0
  465. data/share/views/public/plugins/semantic-ui/tasks/admin/publish.js +25 -0
  466. data/share/views/public/plugins/semantic-ui/tasks/admin/register.js +55 -0
  467. data/share/views/public/plugins/semantic-ui/tasks/admin/release.js +20 -76
  468. data/share/views/public/plugins/semantic-ui/tasks/build.js +37 -0
  469. data/share/views/public/plugins/semantic-ui/tasks/build/assets.js +35 -0
  470. data/share/views/public/plugins/semantic-ui/tasks/build/css.js +105 -0
  471. data/share/views/public/plugins/semantic-ui/tasks/build/javascript.js +77 -0
  472. data/share/views/public/plugins/semantic-ui/tasks/check-install.js +28 -0
  473. data/share/views/public/plugins/semantic-ui/tasks/clean.js +14 -0
  474. data/share/views/public/plugins/semantic-ui/tasks/collections/README.md +16 -0
  475. data/share/views/public/plugins/semantic-ui/tasks/collections/admin.js +49 -0
  476. data/share/views/public/plugins/semantic-ui/tasks/collections/internal.js +214 -0
  477. data/share/views/public/plugins/semantic-ui/tasks/config/admin/github.js +38 -0
  478. data/share/views/public/plugins/semantic-ui/tasks/{admin → config/admin}/oauth.example.js +5 -0
  479. data/share/views/public/plugins/semantic-ui/tasks/config/admin/release.js +110 -0
  480. data/share/views/public/plugins/semantic-ui/tasks/{admin → config/admin}/templates/README.md +6 -0
  481. data/share/views/public/plugins/semantic-ui/tasks/{admin → config/admin}/templates/bower.json +0 -0
  482. data/share/views/public/plugins/semantic-ui/tasks/config/admin/templates/component-package.js +14 -0
  483. data/share/views/public/plugins/semantic-ui/tasks/{admin → config/admin}/templates/composer.json +0 -0
  484. data/share/views/public/plugins/semantic-ui/tasks/config/admin/templates/css-package.js +34 -0
  485. data/share/views/public/plugins/semantic-ui/tasks/config/admin/templates/less-package.js +21 -0
  486. data/share/views/public/plugins/semantic-ui/tasks/{admin → config/admin}/templates/package.json +0 -0
  487. data/share/views/public/plugins/semantic-ui/tasks/config/defaults.js +117 -0
  488. data/share/views/public/plugins/semantic-ui/tasks/config/docs.js +32 -0
  489. data/share/views/public/plugins/semantic-ui/tasks/config/npm/gulpfile.js +72 -0
  490. data/share/views/public/plugins/semantic-ui/tasks/config/project/config.js +142 -0
  491. data/share/views/public/plugins/semantic-ui/tasks/config/project/install.js +756 -0
  492. data/share/views/public/plugins/semantic-ui/tasks/config/project/release.js +61 -0
  493. data/share/views/public/plugins/semantic-ui/tasks/config/tasks.js +160 -0
  494. data/share/views/public/plugins/semantic-ui/tasks/config/user.js +58 -0
  495. data/share/views/public/plugins/semantic-ui/tasks/docs/build.js +189 -0
  496. data/share/views/public/plugins/semantic-ui/tasks/docs/metadata.js +137 -0
  497. data/share/views/public/plugins/semantic-ui/tasks/docs/serve.js +255 -0
  498. data/share/views/public/plugins/semantic-ui/tasks/install.js +397 -0
  499. data/share/views/public/plugins/semantic-ui/tasks/rtl/build.js +132 -0
  500. data/share/views/public/plugins/semantic-ui/tasks/rtl/watch.js +221 -0
  501. data/share/views/public/plugins/semantic-ui/tasks/version.js +11 -0
  502. data/share/views/public/plugins/semantic-ui/tasks/watch.js +228 -0
  503. data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 (Linux)/index.html b/data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 → (Linux)/index.html +0 -0
  504. data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.css b/data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 → (Linux)/prettify.css +0 -0
  505. data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 (Linux)/prettify.js b/data/share/views/public/plugins/semantic-ui/test/coverage/PhantomJS 1.9.2 → (Linux)/prettify.js +0 -0
  506. data/share/views/public/plugins/semantic-ui/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012621.json b/data/share/views/public/plugins/semantic-ui/test/coverage/coverage-PhantomJS 1.9.2 → (Linux)-20131014_012621.json +0 -0
  507. data/share/views/public/plugins/semantic-ui/test/coverage/coverage-PhantomJS 1.9.2 (Linux)-20131014_012811.json b/data/share/views/public/plugins/semantic-ui/test/coverage/coverage-PhantomJS 1.9.2 → (Linux)-20131014_012811.json +0 -0
  508. data/share/views/public/plugins/semantic-ui/test/fixtures/accordion.html +0 -0
  509. data/share/views/public/plugins/semantic-ui/test/fixtures/checkbox.html +0 -0
  510. data/share/views/public/plugins/semantic-ui/test/fixtures/dropdown.html +0 -0
  511. data/share/views/public/plugins/semantic-ui/test/fixtures/modal.html +0 -0
  512. data/share/views/public/plugins/semantic-ui/test/fixtures/popup.html +0 -0
  513. data/share/views/public/plugins/semantic-ui/test/fixtures/rating.html +0 -0
  514. data/share/views/public/plugins/semantic-ui/test/fixtures/shape.html +0 -0
  515. data/share/views/public/plugins/semantic-ui/test/fixtures/sidebar.html +0 -0
  516. data/share/views/public/plugins/semantic-ui/test/fixtures/tab.html +0 -0
  517. data/share/views/public/plugins/semantic-ui/test/fixtures/transition.html +0 -0
  518. data/share/views/public/plugins/semantic-ui/test/fixtures/video.html +0 -0
  519. data/share/views/public/plugins/semantic-ui/test/helpers/jasmine-clog.js +0 -0
  520. data/share/views/public/plugins/semantic-ui/test/helpers/jasmine-jquery.js +0 -0
  521. data/share/views/public/plugins/semantic-ui/test/helpers/jasmine-sinon.js +0 -0
  522. data/share/views/public/plugins/semantic-ui/test/helpers/jquery-events.js +0 -0
  523. data/share/views/public/plugins/semantic-ui/test/helpers/sinon.js +0 -0
  524. data/share/views/public/plugins/semantic-ui/test/meteor/assets.js +20 -0
  525. data/share/views/public/plugins/semantic-ui/test/meteor/fonts.js +16 -0
  526. data/share/views/public/plugins/semantic-ui/test/modules/accordion.spec.js +0 -0
  527. data/share/views/public/plugins/semantic-ui/test/modules/checkbox.spec.js +0 -0
  528. data/share/views/public/plugins/semantic-ui/test/modules/dropdown.spec.js +0 -0
  529. data/share/views/public/plugins/semantic-ui/test/modules/modal.spec.js +0 -0
  530. data/share/views/public/plugins/semantic-ui/test/modules/module.spec.js +0 -0
  531. data/share/views/public/plugins/semantic-ui/test/modules/popup.spec.js +0 -0
  532. data/share/views/public/plugins/semantic-ui/test/modules/search.spec.js +0 -0
  533. data/share/views/public/plugins/semantic-ui/test/modules/shape.spec.js +0 -0
  534. data/share/views/public/plugins/semantic-ui/test/modules/sidebar.spec.js +0 -0
  535. data/share/views/public/plugins/semantic-ui/test/modules/tab.spec.js +0 -0
  536. data/share/views/public/plugins/semantic-ui/test/modules/transition.spec.js +0 -0
  537. data/share/views/public/plugins/semantic-ui/test/modules/video.spec.js +0 -0
  538. metadata +114 -45
  539. data/share/views/public/js/jquery-ui.js +0 -313
  540. data/share/views/public/plugins/semantic-ui/GETTING-STARTED.md +0 -96
  541. data/share/views/public/plugins/semantic-ui/examples/feed.css +0 -93
  542. data/share/views/public/plugins/semantic-ui/examples/feed.html +0 -174
  543. data/share/views/public/plugins/semantic-ui/examples/feed.js +0 -23
  544. data/share/views/public/plugins/semantic-ui/examples/grid.css +0 -102
  545. data/share/views/public/plugins/semantic-ui/examples/homepage.css +0 -134
  546. data/share/views/public/plugins/semantic-ui/examples/homepage.js +0 -57
  547. data/share/views/public/plugins/semantic-ui/examples/images/bg.jpg +0 -0
  548. data/share/views/public/plugins/semantic-ui/examples/images/cat.png +0 -0
  549. data/share/views/public/plugins/semantic-ui/examples/kitchensink.css +0 -49
  550. data/share/views/public/plugins/semantic-ui/examples/kitchensink.html +0 -5454
  551. data/share/views/public/plugins/semantic-ui/src/definitions/modules/video.js +0 -539
  552. data/share/views/public/plugins/semantic-ui/src/definitions/modules/video.less +0 -125
  553. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.otf +0 -0
  554. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/video.variables +0 -16
  555. data/share/views/public/plugins/semantic-ui/tasks/admin/docs.json +0 -19
  556. data/share/views/public/plugins/semantic-ui/tasks/admin/questions.js +0 -50
  557. data/share/views/public/plugins/semantic-ui/tasks/banner.js +0 -12
  558. data/share/views/public/plugins/semantic-ui/tasks/comments.js +0 -20
  559. data/share/views/public/plugins/semantic-ui/tasks/defaults.js +0 -69
  560. data/share/views/public/plugins/semantic-ui/tasks/gulp-settings.js +0 -51
  561. data/share/views/public/plugins/semantic-ui/tasks/log.js +0 -8
  562. data/share/views/public/plugins/semantic-ui/tasks/questions.js +0 -425
@@ -1,9 +1,9 @@
1
- /*
2
- * # Semantic - Search
1
+ /*!
2
+ * # Semantic UI 2.0.0 - Search
3
3
  * http://github.com/semantic-org/semantic-ui/
4
4
  *
5
5
  *
6
- * Copyright 2014 Contributor
6
+ * Copyright 2015 Contributors
7
7
  * Released under the MIT license
8
8
  * http://opensource.org/licenses/MIT
9
9
  *
@@ -29,9 +29,13 @@ $.fn.search = function(parameters) {
29
29
  $(this)
30
30
  .each(function() {
31
31
  var
32
- settings = $.extend(true, {}, $.fn.search.settings, parameters),
32
+ settings = ( $.isPlainObject(parameters) )
33
+ ? $.extend(true, {}, $.fn.search.settings, parameters)
34
+ : $.extend({}, $.fn.search.settings),
33
35
 
34
36
  className = settings.className,
37
+ metadata = settings.metadata,
38
+ regExp = settings.regExp,
35
39
  selector = settings.selector,
36
40
  error = settings.error,
37
41
  namespace = settings.namespace,
@@ -51,36 +55,15 @@ $.fn.search = function(parameters) {
51
55
 
52
56
  module
53
57
  ;
58
+
54
59
  module = {
55
60
 
56
61
  initialize: function() {
57
62
  module.verbose('Initializing module');
58
- var
59
- prompt = $prompt[0],
60
- inputEvent = (prompt !== undefined && prompt.oninput !== undefined)
61
- ? 'input'
62
- : (prompt !== undefined && prompt.onpropertychange !== undefined)
63
- ? 'propertychange'
64
- : 'keyup'
65
- ;
66
- if(settings.automatic) {
67
- $prompt
68
- .on(inputEvent + eventNamespace, module.search.throttle)
69
- ;
70
- }
71
- $prompt
72
- .on('focus' + eventNamespace, module.event.focus)
73
- .on('blur' + eventNamespace, module.event.blur)
74
- .on('keydown' + eventNamespace, module.handleKeyboard)
75
- ;
76
- $searchButton
77
- .on('click' + eventNamespace, module.search.query)
78
- ;
79
- $results
80
- .on('mousedown' + eventNamespace, module.event.mousedown)
81
- .on('mouseup' + eventNamespace, module.event.mouseup)
82
- .on('click' + eventNamespace, selector.result, module.results.select)
83
- ;
63
+ module.determine.searchFields();
64
+ module.bind.events();
65
+ module.set.type();
66
+ module.create.results();
84
67
  module.instantiate();
85
68
  },
86
69
  instantiate: function() {
@@ -93,61 +76,131 @@ $.fn.search = function(parameters) {
93
76
  destroy: function() {
94
77
  module.verbose('Destroying instance');
95
78
  $module
96
- .removeData(moduleNamespace)
97
- ;
98
- $prompt
99
- .off(eventNamespace)
100
- ;
101
- $searchButton
102
- .off(eventNamespace)
103
- ;
104
- $results
105
79
  .off(eventNamespace)
80
+ .removeData(moduleNamespace)
106
81
  ;
107
82
  },
108
- event: {
109
- focus: function() {
83
+
84
+ bind: {
85
+ events: function() {
86
+ module.verbose('Binding events to search');
87
+ if(settings.automatic) {
88
+ $module
89
+ .on(module.get.inputEvent() + eventNamespace, selector.prompt, module.event.input)
90
+ ;
91
+ $prompt
92
+ .attr('autocomplete', 'off')
93
+ ;
94
+ }
110
95
  $module
111
- .addClass(className.focus)
96
+ // prompt
97
+ .on('focus' + eventNamespace, selector.prompt, module.event.focus)
98
+ .on('blur' + eventNamespace, selector.prompt, module.event.blur)
99
+ .on('keydown' + eventNamespace, selector.prompt, module.handleKeyboard)
100
+ // search button
101
+ .on('click' + eventNamespace, selector.searchButton, module.query)
102
+ // results
103
+ .on('mousedown' + eventNamespace, selector.results, module.event.result.mousedown)
104
+ .on('mouseup' + eventNamespace, selector.results, module.event.result.mouseup)
105
+ .on('click' + eventNamespace, selector.result, module.event.result.click)
112
106
  ;
113
- clearTimeout(module.timer);
114
- module.search.throttle();
115
- if(module.has.minimum()) {
116
- module.results.show();
107
+ }
108
+ },
109
+
110
+ determine: {
111
+ searchFields: function() {
112
+ // this makes sure $.extend does not add specified search fields to default fields
113
+ // this is the only setting which should not extend defaults
114
+ if(parameters && parameters.searchFields !== undefined) {
115
+ settings.searchFields = parameters.searchFields;
117
116
  }
117
+ }
118
+ },
119
+
120
+ event: {
121
+ input: function() {
122
+ clearTimeout(module.timer);
123
+ module.timer = setTimeout(module.query, settings.searchDelay);
118
124
  },
119
- mousedown: function() {
120
- module.resultsClicked = true;
121
- },
122
- mouseup: function() {
123
- module.resultsClicked = false;
125
+ focus: function() {
126
+ module.set.focus();
127
+ if( module.has.minimumCharacters() ) {
128
+ module.query();
129
+ module.showResults();
130
+ }
124
131
  },
125
132
  blur: function(event) {
126
- module.search.cancel();
127
- $module
128
- .removeClass(className.focus)
133
+ var
134
+ pageLostFocus = (document.activeElement === this)
129
135
  ;
130
- if(!module.resultsClicked) {
131
- module.timer = setTimeout(module.results.hide, settings.hideDelay);
136
+ if(!pageLostFocus && !module.resultsClicked) {
137
+ module.cancel.query();
138
+ module.remove.focus();
139
+ module.timer = setTimeout(module.hideResults, settings.hideDelay);
140
+ }
141
+ },
142
+ result: {
143
+ mousedown: function() {
144
+ module.resultsClicked = true;
145
+ },
146
+ mouseup: function() {
147
+ module.resultsClicked = false;
148
+ },
149
+ click: function(event) {
150
+ module.debug('Search result selected');
151
+ var
152
+ $result = $(this),
153
+ $title = $result.find(selector.title).eq(0),
154
+ $link = $result.find('a[href]').eq(0),
155
+ href = $link.attr('href') || false,
156
+ target = $link.attr('target') || false,
157
+ title = $title.html(),
158
+ // title is used for result lookup
159
+ value = ($title.length > 0)
160
+ ? $title.text()
161
+ : false,
162
+ results = module.get.results(),
163
+ result = $result.data(metadata.result) || module.get.result(value, results),
164
+ returnedValue
165
+ ;
166
+ if( $.isFunction(settings.onSelect) ) {
167
+ if(settings.onSelect.call(element, result, results) === false) {
168
+ module.debug('Custom onSelect callback cancelled default select action');
169
+ return;
170
+ }
171
+ }
172
+ module.hideResults();
173
+ if(value) {
174
+ module.set.value(value);
175
+ }
176
+ if(href) {
177
+ module.verbose('Opening search link found in result', $link);
178
+ if(target == '_blank' || event.ctrlKey) {
179
+ window.open(href);
180
+ }
181
+ else {
182
+ window.location.href = (href);
183
+ }
184
+ }
132
185
  }
133
186
  }
134
187
  },
135
188
  handleKeyboard: function(event) {
136
189
  var
137
- // force latest jq dom
138
- $result = $module.find(selector.result),
139
- $category = $module.find(selector.category),
140
- keyCode = event.which,
141
- keys = {
190
+ // force selector refresh
191
+ $result = $module.find(selector.result),
192
+ $category = $module.find(selector.category),
193
+ currentIndex = $result.index( $result.filter('.' + className.active) ),
194
+ resultSize = $result.length,
195
+
196
+ keyCode = event.which,
197
+ keys = {
142
198
  backspace : 8,
143
199
  enter : 13,
144
200
  escape : 27,
145
201
  upArrow : 38,
146
202
  downArrow : 40
147
203
  },
148
- activeClass = className.active,
149
- currentIndex = $result.index( $result.filter('.' + activeClass) ),
150
- resultSize = $result.size(),
151
204
  newIndex
152
205
  ;
153
206
  // search shortcuts
@@ -157,12 +210,11 @@ $.fn.search = function(parameters) {
157
210
  .trigger('blur')
158
211
  ;
159
212
  }
160
- // result shortcuts
161
- if($results.filter(':visible').size() > 0) {
213
+ if( module.is.visible() ) {
162
214
  if(keyCode == keys.enter) {
163
215
  module.verbose('Enter key pressed, selecting active result');
164
- if( $result.filter('.' + activeClass).size() > 0 ) {
165
- $.proxy(module.results.select, $result.filter('.' + activeClass) )(event);
216
+ if( $result.filter('.' + className.active).length > 0 ) {
217
+ module.event.result.click.call($result.filter('.' + className.active), event);
166
218
  event.preventDefault();
167
219
  return false;
168
220
  }
@@ -174,14 +226,14 @@ $.fn.search = function(parameters) {
174
226
  : currentIndex - 1
175
227
  ;
176
228
  $category
177
- .removeClass(activeClass)
229
+ .removeClass(className.active)
178
230
  ;
179
231
  $result
180
- .removeClass(activeClass)
232
+ .removeClass(className.active)
181
233
  .eq(newIndex)
182
- .addClass(activeClass)
234
+ .addClass(className.active)
183
235
  .closest($category)
184
- .addClass(activeClass)
236
+ .addClass(className.active)
185
237
  ;
186
238
  event.preventDefault();
187
239
  }
@@ -192,14 +244,14 @@ $.fn.search = function(parameters) {
192
244
  : currentIndex + 1
193
245
  ;
194
246
  $category
195
- .removeClass(activeClass)
247
+ .removeClass(className.active)
196
248
  ;
197
249
  $result
198
- .removeClass(activeClass)
250
+ .removeClass(className.active)
199
251
  .eq(newIndex)
200
- .addClass(activeClass)
252
+ .addClass(className.active)
201
253
  .closest($category)
202
- .addClass(activeClass)
254
+ .addClass(className.active)
203
255
  ;
204
256
  event.preventDefault();
205
257
  }
@@ -208,280 +260,587 @@ $.fn.search = function(parameters) {
208
260
  // query shortcuts
209
261
  if(keyCode == keys.enter) {
210
262
  module.verbose('Enter key pressed, executing query');
211
- module.search.query();
212
- $searchButton
213
- .addClass(className.down)
214
- ;
215
- $prompt
216
- .one('keyup', function(){
217
- $searchButton
218
- .removeClass(className.down)
219
- ;
220
- })
221
- ;
263
+ module.query();
264
+ module.set.buttonPressed();
265
+ $prompt.one('keyup', module.remove.buttonFocus);
222
266
  }
223
267
  }
224
268
  },
225
- has: {
226
- minimum: function() {
269
+
270
+ setup: {
271
+ api: function() {
227
272
  var
228
- searchTerm = $prompt.val(),
229
- numCharacters = searchTerm.length
273
+ apiSettings = {
274
+ debug : settings.debug,
275
+ on : false,
276
+ cache : 'local',
277
+ action : 'search',
278
+ onError : module.error
279
+ },
280
+ searchHTML
230
281
  ;
231
- return (numCharacters >= settings.minCharacters);
282
+ module.verbose('First request, initializing API');
283
+ $module.api(apiSettings);
232
284
  }
233
285
  },
234
- search: {
235
- cancel: function() {
286
+
287
+ can: {
288
+ useAPI: function() {
289
+ return $.fn.api !== undefined;
290
+ },
291
+ transition: function() {
292
+ return settings.transition && $.fn.transition !== undefined && $module.transition('is supported');
293
+ }
294
+ },
295
+
296
+ is: {
297
+ empty: function() {
298
+ return ($results.html() === '');
299
+ },
300
+ visible: function() {
301
+ return ($results.filter(':visible').length > 0);
302
+ },
303
+ focused: function() {
304
+ return ($prompt.filter(':focus').length > 0);
305
+ }
306
+ },
307
+
308
+ get: {
309
+ inputEvent: function() {
236
310
  var
237
- xhr = $module.data('xhr') || false
311
+ prompt = $prompt[0],
312
+ inputEvent = (prompt !== undefined && prompt.oninput !== undefined)
313
+ ? 'input'
314
+ : (prompt !== undefined && prompt.onpropertychange !== undefined)
315
+ ? 'propertychange'
316
+ : 'keyup'
238
317
  ;
239
- if( xhr && xhr.state() != 'resolved') {
240
- module.debug('Cancelling last search');
241
- xhr.abort();
242
- }
318
+ return inputEvent;
243
319
  },
244
- throttle: function() {
245
- clearTimeout(module.timer);
246
- if(module.has.minimum()) {
247
- module.timer = setTimeout(module.search.query, settings.searchDelay);
320
+ value: function() {
321
+ return $prompt.val();
322
+ },
323
+ results: function() {
324
+ var
325
+ results = $module.data(metadata.results)
326
+ ;
327
+ return results;
328
+ },
329
+ result: function(value, results) {
330
+ var
331
+ lookupFields = ['title', 'id'],
332
+ result = false
333
+ ;
334
+ value = (value !== undefined)
335
+ ? value
336
+ : module.get.value()
337
+ ;
338
+ results = (results !== undefined)
339
+ ? results
340
+ : module.get.results()
341
+ ;
342
+ if(settings.type === 'category') {
343
+ module.debug('Finding result that matches', value);
344
+ $.each(results, function(index, category) {
345
+ if($.isArray(category.results)) {
346
+ result = module.search.object(value, category.results, lookupFields)[0];
347
+ // dont continue searching if a result is found
348
+ if(result) {
349
+ return false;
350
+ }
351
+ }
352
+ });
248
353
  }
249
354
  else {
250
- module.results.hide();
355
+ module.debug('Finding result in results object', value);
356
+ result = module.search.object(value, results, lookupFields)[0];
251
357
  }
358
+ return result || false;
252
359
  },
253
- query: function() {
254
- var
255
- searchTerm = $prompt.val(),
256
- cachedHTML = module.search.cache.read(searchTerm)
360
+ },
361
+
362
+ set: {
363
+ focus: function() {
364
+ $module.addClass(className.focus);
365
+ },
366
+ loading: function() {
367
+ $module.addClass(className.loading);
368
+ },
369
+ value: function(value) {
370
+ module.verbose('Setting search input value', value);
371
+ $prompt
372
+ .val(value)
257
373
  ;
258
- if(cachedHTML) {
259
- module.debug("Reading result for '" + searchTerm + "' from cache");
260
- module.results.add(cachedHTML);
374
+ },
375
+ type: function(type) {
376
+ type = type || settings.type;
377
+ if(settings.type == 'category') {
378
+ $module.addClass(settings.type);
379
+ }
380
+ },
381
+ buttonPressed: function() {
382
+ $searchButton.addClass(className.pressed);
383
+ }
384
+ },
385
+
386
+ remove: {
387
+ loading: function() {
388
+ $module.removeClass(className.loading);
389
+ },
390
+ focus: function() {
391
+ $module.removeClass(className.focus);
392
+ },
393
+ buttonPressed: function() {
394
+ $searchButton.removeClass(className.pressed);
395
+ }
396
+ },
397
+
398
+ query: function() {
399
+ var
400
+ searchTerm = module.get.value(),
401
+ cache = module.read.cache(searchTerm)
402
+ ;
403
+ if( module.has.minimumCharacters() ) {
404
+ if(cache) {
405
+ module.debug('Reading result from cache', searchTerm);
406
+ module.save.results(cache.results);
407
+ module.addResults(cache.html);
408
+ module.inject.id(cache.results);
261
409
  }
262
410
  else {
263
- module.debug("Querying for '" + searchTerm + "'");
411
+ module.debug('Querying for', searchTerm);
264
412
  if($.isPlainObject(settings.source) || $.isArray(settings.source)) {
265
413
  module.search.local(searchTerm);
266
414
  }
267
- else if(settings.apiSettings) {
268
- module.search.remote(searchTerm);
269
- }
270
- else if($.fn.api !== undefined && $.api.settings.api.search !== undefined) {
271
- module.debug('Searching with default search API endpoint');
272
- settings.apiSettings = {
273
- action: 'search'
274
- };
415
+ else if( module.can.useAPI() ) {
275
416
  module.search.remote(searchTerm);
276
417
  }
277
418
  else {
278
419
  module.error(error.source);
279
420
  }
280
- $.proxy(settings.onSearchQuery, $module)(searchTerm);
421
+ settings.onSearchQuery.call(element, searchTerm);
281
422
  }
282
- },
423
+ }
424
+ else {
425
+ module.hideResults();
426
+ }
427
+ },
428
+
429
+ search: {
283
430
  local: function(searchTerm) {
284
431
  var
285
- results = [],
286
- fullTextResults = [],
287
- searchFields = $.isArray(settings.searchFields)
288
- ? settings.searchFields
289
- : [settings.searchFields],
290
- searchRegExp = new RegExp('(?:\s|^)' + searchTerm, 'i'),
291
- fullTextRegExp = new RegExp(searchTerm, 'i'),
432
+ results = module.search.object(searchTerm, settings.content),
292
433
  searchHTML
293
434
  ;
435
+ module.set.loading();
436
+ module.save.results(results);
437
+ module.debug('Returned local search results', results);
438
+
439
+ searchHTML = module.generateResults({
440
+ results: results
441
+ });
442
+ module.remove.loading();
443
+ module.addResults(searchHTML);
444
+ module.inject.id(results);
445
+ module.write.cache(searchTerm, {
446
+ html : searchHTML,
447
+ results : results
448
+ });
449
+ },
450
+ remote: function(searchTerm) {
451
+ var
452
+ apiSettings = {
453
+ onSuccess : function(response) {
454
+ module.parse.response.call(element, response, searchTerm);
455
+ },
456
+ onFailure: function() {
457
+ module.displayMessage(error.serverError);
458
+ },
459
+ urlData: {
460
+ query: searchTerm
461
+ }
462
+ }
463
+ ;
464
+ if( !$module.api('get request') ) {
465
+ module.setup.api();
466
+ }
467
+ $.extend(true, apiSettings, settings.apiSettings);
468
+ module.debug('Executing search', apiSettings);
469
+ module.cancel.query();
294
470
  $module
295
- .addClass(className.loading)
471
+ .api('setting', apiSettings)
472
+ .api('query')
296
473
  ;
297
- // iterate through search fields in array order
474
+ },
475
+ object: function(searchTerm, source, searchFields) {
476
+ var
477
+ results = [],
478
+ fuzzyResults = [],
479
+ searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'),
480
+ matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'),
481
+
482
+ // avoid duplicates when pushing results
483
+ addResult = function(array, result) {
484
+ var
485
+ notResult = ($.inArray(result, results) == -1),
486
+ notFuzzyResult = ($.inArray(result, fuzzyResults) == -1)
487
+ ;
488
+ if(notResult && notFuzzyResult) {
489
+ array.push(result);
490
+ }
491
+ }
492
+ ;
493
+ source = source || settings.source;
494
+ searchFields = (searchFields !== undefined)
495
+ ? searchFields
496
+ : settings.searchFields
497
+ ;
498
+
499
+ // search fields should be array to loop correctly
500
+ if(!$.isArray(searchFields)) {
501
+ searchFields = [searchFields];
502
+ }
503
+
504
+ // exit conditions if no source
505
+ if(source === undefined || source === false) {
506
+ module.error(error.source);
507
+ return [];
508
+ }
509
+
510
+ // iterate through search fields looking for matches
298
511
  $.each(searchFields, function(index, field) {
299
- $.each(settings.source, function(label, content) {
512
+ $.each(source, function(label, content) {
300
513
  var
301
- fieldExists = (typeof content[field] == 'string'),
302
- notAlreadyResult = ($.inArray(content, results) == -1 && $.inArray(content, fullTextResults) == -1)
514
+ fieldExists = (typeof content[field] == 'string')
303
515
  ;
304
- if(fieldExists && notAlreadyResult) {
305
- if( searchRegExp.test( content[field] ) ) {
306
- results.push(content);
516
+ if(fieldExists) {
517
+ if( content[field].search(matchRegExp) !== -1) {
518
+ // content starts with value (first in results)
519
+ addResult(results, content);
307
520
  }
308
- else if( settings.searchFullText && fullTextRegExp.test( content[field] ) ) {
309
- fullTextResults.push(content);
521
+ else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) {
522
+ // content fuzzy matches (last in results)
523
+ addResult(fuzzyResults, content);
310
524
  }
311
525
  }
312
526
  });
313
527
  });
314
- searchHTML = module.results.generate({
315
- results: $.merge(results, fullTextResults)
316
- });
317
- $module
318
- .removeClass(className.loading)
528
+ return $.merge(results, fuzzyResults);
529
+ }
530
+ },
531
+
532
+ fuzzySearch: function(query, term) {
533
+ var
534
+ termLength = term.length,
535
+ queryLength = query.length
536
+ ;
537
+ if(typeof query !== 'string') {
538
+ return false;
539
+ }
540
+ query = query.toLowerCase();
541
+ term = term.toLowerCase();
542
+ if(queryLength > termLength) {
543
+ return false;
544
+ }
545
+ if(queryLength === termLength) {
546
+ return (query === term);
547
+ }
548
+ search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
549
+ var
550
+ queryCharacter = query.charCodeAt(characterIndex)
319
551
  ;
320
- module.search.cache.write(searchTerm, searchHTML);
321
- module.results.add(searchHTML);
322
- },
323
- remote: function(searchTerm) {
552
+ while(nextCharacterIndex < termLength) {
553
+ if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
554
+ continue search;
555
+ }
556
+ }
557
+ return false;
558
+ }
559
+ return true;
560
+ },
561
+
562
+ parse: {
563
+ response: function(response, searchTerm) {
324
564
  var
325
- apiSettings = {
326
- stateContext : $module,
327
- urlData : {
328
- query: searchTerm
329
- },
330
- onSuccess : function(response) {
331
- searchHTML = module.results.generate(response);
332
- module.search.cache.write(searchTerm, searchHTML);
333
- module.results.add(searchHTML);
334
- },
335
- onFailure : module.error
336
- },
337
- searchHTML
565
+ searchHTML = module.generateResults(response)
338
566
  ;
339
- module.search.cancel();
340
- module.debug('Executing search');
341
- $.extend(true, apiSettings, settings.apiSettings);
342
- $.api(apiSettings);
343
- },
567
+ module.verbose('Parsing server response', response);
568
+ if(response !== undefined) {
569
+ if(searchTerm !== undefined && response.results !== undefined) {
570
+ module.addResults(searchHTML);
571
+ module.inject.id(response.results);
572
+ module.write.cache(searchTerm, {
573
+ html : searchHTML,
574
+ results : response.results
575
+ });
576
+ module.save.results(response.results);
577
+ }
578
+ }
579
+ }
580
+ },
344
581
 
345
- cache: {
346
- read: function(name) {
347
- var
348
- cache = $module.data('cache')
349
- ;
350
- return (settings.cache && (typeof cache == 'object') && (cache[name] !== undefined) )
582
+ cancel: {
583
+ query: function() {
584
+ if( module.can.useAPI() ) {
585
+ $module.api('abort');
586
+ }
587
+ }
588
+ },
589
+
590
+ has: {
591
+ minimumCharacters: function() {
592
+ var
593
+ searchTerm = module.get.value(),
594
+ numCharacters = searchTerm.length
595
+ ;
596
+ return (numCharacters >= settings.minCharacters);
597
+ }
598
+ },
599
+
600
+ clear: {
601
+ cache: function(value) {
602
+ var
603
+ cache = $module.data(metadata.cache)
604
+ ;
605
+ if(!value) {
606
+ module.debug('Clearing cache', value);
607
+ $module.removeData(metadata.cache);
608
+ }
609
+ else if(value && cache && cache[value]) {
610
+ module.debug('Removing value from cache', value);
611
+ delete cache[value];
612
+ $module.data(metadata.cache, cache);
613
+ }
614
+ }
615
+ },
616
+
617
+ read: {
618
+ cache: function(name) {
619
+ var
620
+ cache = $module.data(metadata.cache)
621
+ ;
622
+ if(settings.cache) {
623
+ module.verbose('Checking cache for generated html for query', name);
624
+ return (typeof cache == 'object') && (cache[name] !== undefined)
351
625
  ? cache[name]
352
626
  : false
353
627
  ;
354
- },
355
- write: function(name, value) {
356
- var
357
- cache = ($module.data('cache') !== undefined)
358
- ? $module.data('cache')
359
- : {}
360
- ;
361
- cache[name] = value;
362
- $module
363
- .data('cache', cache)
364
- ;
365
628
  }
629
+ return false;
366
630
  }
367
631
  },
368
632
 
369
- results: {
370
- generate: function(response) {
371
- module.debug('Generating html from response', response);
633
+ create: {
634
+ id: function(resultIndex, categoryIndex) {
372
635
  var
373
- template = settings.templates[settings.type],
374
- html = ''
636
+ resultID = (resultIndex + 1), // not zero indexed
637
+ categoryID = (categoryIndex + 1),
638
+ firstCharCode,
639
+ letterID,
640
+ id
375
641
  ;
376
- if(($.isPlainObject(response.results) && !$.isEmptyObject(response.results)) || ($.isArray(response.results) && response.results.length > 0) ) {
377
- if(settings.maxResults > 0) {
378
- response.results = $.isArray(response.results)
379
- ? response.results.slice(0, settings.maxResults)
380
- : response.results
381
- ;
382
- }
383
- if($.isFunction(template)) {
384
- html = template(response);
385
- }
386
- else {
387
- module.error(error.noTemplate, false);
388
- }
642
+ if(categoryIndex !== undefined) {
643
+ // start char code for "A"
644
+ letterID = String.fromCharCode(97 + categoryIndex);
645
+ id = letterID + resultID;
646
+ module.verbose('Creating category result id', id);
389
647
  }
390
648
  else {
391
- html = module.message(error.noResults, 'empty');
649
+ id = resultID;
650
+ module.verbose('Creating result id', id);
392
651
  }
393
- $.proxy(settings.onResults, $module)(response);
394
- return html;
652
+ return id;
395
653
  },
396
- add: function(html) {
397
- if(settings.onResultsAdd == 'default' || $.proxy(settings.onResultsAdd, $results)(html) == 'default') {
398
- $results
399
- .html(html)
654
+ results: function() {
655
+ if($results.length === 0) {
656
+ $results = $('<div />')
657
+ .addClass(className.results)
658
+ .appendTo($module)
400
659
  ;
401
660
  }
402
- module.results.show();
661
+ }
662
+ },
663
+
664
+ inject: {
665
+ result: function(result, resultIndex, categoryIndex) {
666
+ module.verbose('Injecting result into results');
667
+ var
668
+ $selectedResult = (categoryIndex !== undefined)
669
+ ? $results
670
+ .children().eq(categoryIndex)
671
+ .children(selector.result).eq(resultIndex)
672
+ : $results
673
+ .children(selector.result).eq(resultIndex)
674
+ ;
675
+ module.verbose('Injecting results metadata', $selectedResult);
676
+ $selectedResult
677
+ .data(metadata.result, result)
678
+ ;
403
679
  },
404
- show: function() {
405
- if( ($results.filter(':visible').size() === 0) && ($prompt.filter(':focus').size() > 0) && $results.html() !== '') {
406
- if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is inward')) {
407
- module.debug('Showing results with css animations');
408
- $results
409
- .transition({
410
- animation : settings.transition + ' in',
411
- duration : settings.duration,
412
- queue : true
413
- })
414
- ;
415
- }
416
- else {
417
- module.debug('Showing results with javascript');
418
- $results
419
- .stop()
420
- .fadeIn(settings.duration, settings.easing)
421
- ;
422
- }
423
- $.proxy(settings.onResultsOpen, $results)();
680
+ id: function(results) {
681
+ module.debug('Injecting unique ids into results');
682
+ var
683
+ // since results may be object, we must use counters
684
+ categoryIndex = 0,
685
+ resultIndex = 0
686
+ ;
687
+ if(settings.type === 'category') {
688
+ // iterate through each category result
689
+ $.each(results, function(index, category) {
690
+ resultIndex = 0;
691
+ $.each(category.results, function(index, value) {
692
+ var
693
+ result = category.results[index]
694
+ ;
695
+ if(result.id === undefined) {
696
+ result.id = module.create.id(resultIndex, categoryIndex);
697
+ }
698
+ module.inject.result(result, resultIndex, categoryIndex);
699
+ resultIndex++;
700
+ });
701
+ categoryIndex++;
702
+ });
424
703
  }
425
- },
426
- hide: function() {
427
- if($results.filter(':visible').size() > 0) {
428
- if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported') && !$results.transition('is outward')) {
429
- module.debug('Hiding results with css animations');
430
- $results
431
- .transition({
432
- animation : settings.transition + ' out',
433
- duration : settings.duration,
434
- queue : true
435
- })
436
- ;
437
- }
438
- else {
439
- module.debug('Hiding results with javascript');
440
- $results
441
- .stop()
442
- .fadeIn(settings.duration, settings.easing)
704
+ else {
705
+ // top level
706
+ $.each(results, function(index, value) {
707
+ var
708
+ result = results[index]
443
709
  ;
444
- }
445
- $.proxy(settings.onResultsClose, $results)();
710
+ if(result.id === undefined) {
711
+ result.id = module.create.id(resultIndex);
712
+ }
713
+ module.inject.result(result, resultIndex);
714
+ resultIndex++;
715
+ });
446
716
  }
447
- },
448
- select: function(event) {
449
- module.debug('Search result selected');
717
+ return results;
718
+ }
719
+ },
720
+
721
+ save: {
722
+ results: function(results) {
723
+ module.verbose('Saving current search results to metadata', results);
724
+ $module.data(metadata.results, results);
725
+ }
726
+ },
727
+
728
+ write: {
729
+ cache: function(name, value) {
450
730
  var
451
- $result = $(this),
452
- $title = $result.find('.title'),
453
- title = $title.html()
731
+ cache = ($module.data(metadata.cache) !== undefined)
732
+ ? $module.data(metadata.cache)
733
+ : {}
454
734
  ;
455
- if(settings.onSelect == 'default' || $.proxy(settings.onSelect, this)(event) == 'default') {
456
- var
457
- $link = $result.find('a[href]').eq(0),
458
- $title = $result.find(selector.title).eq(0),
459
- href = $link.attr('href') || false,
460
- target = $link.attr('target') || false,
461
- name = ($title.size() > 0)
462
- ? $title.text()
463
- : false
735
+ if(settings.cache) {
736
+ module.verbose('Writing generated html to cache', name, value);
737
+ cache[name] = value;
738
+ $module
739
+ .data(metadata.cache, cache)
464
740
  ;
465
- module.results.hide();
466
- if(name) {
467
- $prompt.val(name);
468
- }
469
- if(href) {
470
- if(target == '_blank' || event.ctrlKey) {
471
- window.open(href);
472
- }
473
- else {
474
- window.location.href = (href);
741
+ }
742
+ }
743
+ },
744
+
745
+ addResults: function(html) {
746
+ if( $.isFunction(settings.onResultsAdd) ) {
747
+ if( settings.onResultsAdd.call($results, html) === false ) {
748
+ module.debug('onResultsAdd callback cancelled default action');
749
+ return false;
750
+ }
751
+ }
752
+ $results
753
+ .html(html)
754
+ ;
755
+ module.showResults();
756
+ },
757
+
758
+ showResults: function() {
759
+ if( !module.is.visible() && module.is.focused() && !module.is.empty() ) {
760
+ if( module.can.transition() ) {
761
+ module.debug('Showing results with css animations');
762
+ $results
763
+ .transition({
764
+ animation : settings.transition + ' in',
765
+ debug : settings.debug,
766
+ verbose : settings.verbose,
767
+ duration : settings.duration,
768
+ queue : true
769
+ })
770
+ ;
771
+ }
772
+ else {
773
+ module.debug('Showing results with javascript');
774
+ $results
775
+ .stop()
776
+ .fadeIn(settings.duration, settings.easing)
777
+ ;
778
+ }
779
+ settings.onResultsOpen.call($results);
780
+ }
781
+ },
782
+ hideResults: function() {
783
+ if( module.is.visible() ) {
784
+ if( module.can.transition() ) {
785
+ module.debug('Hiding results with css animations');
786
+ $results
787
+ .transition({
788
+ animation : settings.transition + ' out',
789
+ debug : settings.debug,
790
+ verbose : settings.verbose,
791
+ duration : settings.duration,
792
+ queue : true
793
+ })
794
+ ;
795
+ }
796
+ else {
797
+ module.debug('Hiding results with javascript');
798
+ $results
799
+ .stop()
800
+ .fadeOut(settings.duration, settings.easing)
801
+ ;
802
+ }
803
+ settings.onResultsClose.call($results);
804
+ }
805
+ },
806
+
807
+ generateResults: function(response) {
808
+ module.debug('Generating html from response', response);
809
+ var
810
+ template = settings.templates[settings.type],
811
+ isProperObject = ($.isPlainObject(response.results) && !$.isEmptyObject(response.results)),
812
+ isProperArray = ($.isArray(response.results) && response.results.length > 0),
813
+ html = ''
814
+ ;
815
+ if(isProperObject || isProperArray ) {
816
+ if(settings.maxResults > 0) {
817
+ if(isProperObject) {
818
+ if(settings.type == 'standard') {
819
+ module.error(error.maxResults);
475
820
  }
476
821
  }
822
+ else {
823
+ response.results = response.results.slice(0, settings.maxResults);
824
+ }
825
+ }
826
+ if($.isFunction(template)) {
827
+ html = template(response);
828
+ }
829
+ else {
830
+ module.error(error.noTemplate, false);
477
831
  }
478
832
  }
833
+ else {
834
+ html = module.displayMessage(error.noResults, 'empty');
835
+ }
836
+ settings.onResults.call(element, response);
837
+ return html;
479
838
  },
480
839
 
481
- // displays mesage visibly in search results
482
- message: function(text, type) {
840
+ displayMessage: function(text, type) {
483
841
  type = type || 'standard';
484
- module.results.add( settings.templates.message(text, type) );
842
+ module.debug('Displaying message', text, type);
843
+ module.addResults( settings.templates.message(text, type) );
485
844
  return settings.templates.message(text, type);
486
845
  },
487
846
 
@@ -553,7 +912,7 @@ $.fn.search = function(parameters) {
553
912
  });
554
913
  }
555
914
  clearTimeout(module.performance.timer);
556
- module.performance.timer = setTimeout(module.performance.display, 100);
915
+ module.performance.timer = setTimeout(module.performance.display, 500);
557
916
  },
558
917
  display: function() {
559
918
  var
@@ -569,8 +928,8 @@ $.fn.search = function(parameters) {
569
928
  if(moduleSelector) {
570
929
  title += ' \'' + moduleSelector + '\'';
571
930
  }
572
- if($allModules.size() > 1) {
573
- title += ' ' + '(' + $allModules.size() + ')';
931
+ if($allModules.length > 1) {
932
+ title += ' ' + '(' + $allModules.length + ')';
574
933
  }
575
934
  if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
576
935
  console.groupCollapsed(title);
@@ -623,7 +982,7 @@ $.fn.search = function(parameters) {
623
982
  }
624
983
  });
625
984
  }
626
- if ( $.isFunction( found ) ) {
985
+ if( $.isFunction( found ) ) {
627
986
  response = found.apply(context, passedArguments);
628
987
  }
629
988
  else if(found !== undefined) {
@@ -649,7 +1008,7 @@ $.fn.search = function(parameters) {
649
1008
  }
650
1009
  else {
651
1010
  if(instance !== undefined) {
652
- module.destroy();
1011
+ instance.invoke('destroy');
653
1012
  }
654
1013
  module.initialize();
655
1014
  }
@@ -665,38 +1024,57 @@ $.fn.search = function(parameters) {
665
1024
 
666
1025
  $.fn.search.settings = {
667
1026
 
668
- name : 'Search Module',
1027
+ name : 'Search',
669
1028
  namespace : 'search',
670
1029
 
671
1030
  debug : false,
672
- verbose : true,
1031
+ verbose : false,
673
1032
  performance : true,
674
1033
 
675
- // api config
676
- apiSettings : false,
677
1034
  type : 'standard',
1035
+ // template to use (specified in settings.templates)
1036
+
678
1037
  minCharacters : 1,
1038
+ // minimum characters required to search
1039
+
1040
+ apiSettings : false,
1041
+ // API config
679
1042
 
680
1043
  source : false,
1044
+ // object to search
1045
+
681
1046
  searchFields : [
682
1047
  'title',
683
1048
  'description'
684
1049
  ],
1050
+ // fields to search
1051
+
685
1052
  searchFullText : true,
1053
+ // whether to include fuzzy results in local search
1054
+
1055
+ automatic : true,
1056
+ // whether to add events to prompt automatically
686
1057
 
687
- automatic : 'true',
688
1058
  hideDelay : 0,
689
- searchDelay : 300,
1059
+ // delay before hiding menu after blur
1060
+
1061
+ searchDelay : 200,
1062
+ // delay before searching
1063
+
690
1064
  maxResults : 7,
1065
+ // maximum results returned from local
1066
+
691
1067
  cache : true,
1068
+ // whether to store lookups in local cache
692
1069
 
1070
+ // transition settings
693
1071
  transition : 'scale',
694
- duration : 300,
1072
+ duration : 200,
695
1073
  easing : 'easeOutExpo',
696
1074
 
697
- // onSelect default action is defined in module
698
- onSelect : 'default',
699
- onResultsAdd : 'default',
1075
+ // callbacks
1076
+ onSelect : false,
1077
+ onResultsAdd : false,
700
1078
 
701
1079
  onSearchQuery : function(){},
702
1080
  onResults : function(response){},
@@ -706,21 +1084,35 @@ $.fn.search.settings = {
706
1084
 
707
1085
  className: {
708
1086
  active : 'active',
709
- down : 'down',
710
- focus : 'focus',
711
1087
  empty : 'empty',
712
- loading : 'loading'
1088
+ focus : 'focus',
1089
+ loading : 'loading',
1090
+ results : 'results',
1091
+ pressed : 'down'
713
1092
  },
714
1093
 
715
1094
  error : {
716
1095
  source : 'Cannot search. No source used, and Semantic API module was not included',
717
1096
  noResults : 'Your search returned no results',
718
1097
  logging : 'Error in debug logging, exiting.',
1098
+ noEndpoint : 'No search endpoint was specified',
719
1099
  noTemplate : 'A valid template name was not specified.',
720
- serverError : 'There was an issue with querying the server.',
1100
+ serverError : 'There was an issue querying the server.',
1101
+ maxResults : 'Results must be an array to use maxResults setting',
721
1102
  method : 'The method you called is not defined.'
722
1103
  },
723
1104
 
1105
+ metadata: {
1106
+ cache : 'cache',
1107
+ results : 'results',
1108
+ result : 'result'
1109
+ },
1110
+
1111
+ regExp: {
1112
+ escape : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,
1113
+ beginsWith : '(?:\s|^)'
1114
+ },
1115
+
724
1116
  selector : {
725
1117
  prompt : '.prompt',
726
1118
  searchButton : '.search.button',