less-rails-semantic_ui 1.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +13 -0
  4. data/Appraisals +7 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +65 -0
  8. data/Rakefile +9 -0
  9. data/assets/fonts/semantic_ui/themes/basic/assets/fonts/icons.eot +0 -0
  10. data/assets/fonts/semantic_ui/themes/basic/assets/fonts/icons.svg +450 -0
  11. data/assets/fonts/semantic_ui/themes/basic/assets/fonts/icons.ttf +0 -0
  12. data/assets/fonts/semantic_ui/themes/basic/assets/fonts/icons.woff +0 -0
  13. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.eot +0 -0
  14. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.otf +0 -0
  15. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.svg +504 -0
  16. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.ttf +0 -0
  17. data/assets/fonts/semantic_ui/themes/default/assets/fonts/icons.woff +0 -0
  18. data/assets/images/semantic_ui/themes/default/assets/images/flags.png +0 -0
  19. data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +839 -0
  20. data/assets/javascripts/semantic_ui/definitions/behaviors/colorize.js +272 -0
  21. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +795 -0
  22. data/assets/javascripts/semantic_ui/definitions/behaviors/state.js +690 -0
  23. data/assets/javascripts/semantic_ui/definitions/behaviors/visibility.js +951 -0
  24. data/assets/javascripts/semantic_ui/definitions/behaviors/visit.js +516 -0
  25. data/assets/javascripts/semantic_ui/definitions/globals/site.js +487 -0
  26. data/assets/javascripts/semantic_ui/definitions/modules/accordion.js +504 -0
  27. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +469 -0
  28. data/assets/javascripts/semantic_ui/definitions/modules/dimmer.js +626 -0
  29. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +1496 -0
  30. data/assets/javascripts/semantic_ui/definitions/modules/modal.js +809 -0
  31. data/assets/javascripts/semantic_ui/definitions/modules/nag.js +480 -0
  32. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +1050 -0
  33. data/assets/javascripts/semantic_ui/definitions/modules/progress.js +652 -0
  34. data/assets/javascripts/semantic_ui/definitions/modules/rating.js +451 -0
  35. data/assets/javascripts/semantic_ui/definitions/modules/search.js +886 -0
  36. data/assets/javascripts/semantic_ui/definitions/modules/shape.js +830 -0
  37. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +976 -0
  38. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +768 -0
  39. data/assets/javascripts/semantic_ui/definitions/modules/tab.js +801 -0
  40. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +865 -0
  41. data/assets/javascripts/semantic_ui/definitions/modules/video.js +539 -0
  42. data/assets/stylesheets/semantic_ui/definitions/collections/breadcrumb.less +128 -0
  43. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +839 -0
  44. data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +1201 -0
  45. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +1600 -0
  46. data/assets/stylesheets/semantic_ui/definitions/collections/message.less +448 -0
  47. data/assets/stylesheets/semantic_ui/definitions/collections/table.less +877 -0
  48. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +2396 -0
  49. data/assets/stylesheets/semantic_ui/definitions/elements/divider.less +262 -0
  50. data/assets/stylesheets/semantic_ui/definitions/elements/flag.less +52 -0
  51. data/assets/stylesheets/semantic_ui/definitions/elements/header.less +564 -0
  52. data/assets/stylesheets/semantic_ui/definitions/elements/icon.less +351 -0
  53. data/assets/stylesheets/semantic_ui/definitions/elements/image.less +267 -0
  54. data/assets/stylesheets/semantic_ui/definitions/elements/input.less +448 -0
  55. data/assets/stylesheets/semantic_ui/definitions/elements/label.less +959 -0
  56. data/assets/stylesheets/semantic_ui/definitions/elements/list.less +896 -0
  57. data/assets/stylesheets/semantic_ui/definitions/elements/loader.less +268 -0
  58. data/assets/stylesheets/semantic_ui/definitions/elements/rail.less +132 -0
  59. data/assets/stylesheets/semantic_ui/definitions/elements/reveal.less +263 -0
  60. data/assets/stylesheets/semantic_ui/definitions/elements/segment.less +603 -0
  61. data/assets/stylesheets/semantic_ui/definitions/elements/step.less +358 -0
  62. data/assets/stylesheets/semantic_ui/definitions/globals/reset.less +45 -0
  63. data/assets/stylesheets/semantic_ui/definitions/globals/site.less +138 -0
  64. data/assets/stylesheets/semantic_ui/definitions/modules/accordion.less +221 -0
  65. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +468 -0
  66. data/assets/stylesheets/semantic_ui/definitions/modules/dimmer.less +186 -0
  67. data/assets/stylesheets/semantic_ui/definitions/modules/dropdown.less +914 -0
  68. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +447 -0
  69. data/assets/stylesheets/semantic_ui/definitions/modules/nag.less +165 -0
  70. data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +296 -0
  71. data/assets/stylesheets/semantic_ui/definitions/modules/progress.less +404 -0
  72. data/assets/stylesheets/semantic_ui/definitions/modules/rating.less +204 -0
  73. data/assets/stylesheets/semantic_ui/definitions/modules/search.less +344 -0
  74. data/assets/stylesheets/semantic_ui/definitions/modules/shape.less +158 -0
  75. data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +464 -0
  76. data/assets/stylesheets/semantic_ui/definitions/modules/sticky.less +80 -0
  77. data/assets/stylesheets/semantic_ui/definitions/modules/tab.less +100 -0
  78. data/assets/stylesheets/semantic_ui/definitions/modules/transition.less +95 -0
  79. data/assets/stylesheets/semantic_ui/definitions/modules/video.less +131 -0
  80. data/assets/stylesheets/semantic_ui/definitions/views/ad.less +272 -0
  81. data/assets/stylesheets/semantic_ui/definitions/views/card.less +751 -0
  82. data/assets/stylesheets/semantic_ui/definitions/views/comment.less +262 -0
  83. data/assets/stylesheets/semantic_ui/definitions/views/feed.less +278 -0
  84. data/assets/stylesheets/semantic_ui/definitions/views/item.less +472 -0
  85. data/assets/stylesheets/semantic_ui/definitions/views/statistic.less +422 -0
  86. data/assets/stylesheets/semantic_ui/theme.less +48 -0
  87. data/assets/stylesheets/semantic_ui/themes/amazon/elements/button.overrides +46 -0
  88. data/assets/stylesheets/semantic_ui/themes/amazon/elements/button.variables +57 -0
  89. data/assets/stylesheets/semantic_ui/themes/basic/collections/table.overrides +4 -0
  90. data/assets/stylesheets/semantic_ui/themes/basic/collections/table.variables +10 -0
  91. data/assets/stylesheets/semantic_ui/themes/basic/elements/button.overrides +4 -0
  92. data/assets/stylesheets/semantic_ui/themes/basic/elements/button.variables +44 -0
  93. data/assets/stylesheets/semantic_ui/themes/basic/elements/icon.overrides +189 -0
  94. data/assets/stylesheets/semantic_ui/themes/basic/elements/icon.variables +5 -0
  95. data/assets/stylesheets/semantic_ui/themes/basic/elements/step.overrides +7 -0
  96. data/assets/stylesheets/semantic_ui/themes/basic/elements/step.variables +10 -0
  97. data/assets/stylesheets/semantic_ui/themes/basic/globals/reset.overrides +5 -0
  98. data/assets/stylesheets/semantic_ui/themes/basic/globals/reset.variables +3 -0
  99. data/assets/stylesheets/semantic_ui/themes/basic/modules/progress.overrides +3 -0
  100. data/assets/stylesheets/semantic_ui/themes/basic/modules/progress.variables +15 -0
  101. data/assets/stylesheets/semantic_ui/themes/basic/views/card.overrides +4 -0
  102. data/assets/stylesheets/semantic_ui/themes/basic/views/card.variables +34 -0
  103. data/assets/stylesheets/semantic_ui/themes/bookish/elements/header.overrides +15 -0
  104. data/assets/stylesheets/semantic_ui/themes/bookish/elements/header.variables +37 -0
  105. data/assets/stylesheets/semantic_ui/themes/bootstrap3/elements/button.overrides +0 -0
  106. data/assets/stylesheets/semantic_ui/themes/bootstrap3/elements/button.variables +63 -0
  107. data/assets/stylesheets/semantic_ui/themes/chubby/collections/form.overrides +8 -0
  108. data/assets/stylesheets/semantic_ui/themes/chubby/collections/form.variables +9 -0
  109. data/assets/stylesheets/semantic_ui/themes/chubby/elements/button.overrides +21 -0
  110. data/assets/stylesheets/semantic_ui/themes/chubby/elements/button.variables +57 -0
  111. data/assets/stylesheets/semantic_ui/themes/chubby/elements/header.overrides +5 -0
  112. data/assets/stylesheets/semantic_ui/themes/chubby/elements/header.variables +21 -0
  113. data/assets/stylesheets/semantic_ui/themes/chubby/modules/accordion.overrides +7 -0
  114. data/assets/stylesheets/semantic_ui/themes/chubby/modules/accordion.variables +15 -0
  115. data/assets/stylesheets/semantic_ui/themes/chubby/views/comment.overrides +12 -0
  116. data/assets/stylesheets/semantic_ui/themes/chubby/views/comment.variables +46 -0
  117. data/assets/stylesheets/semantic_ui/themes/classic/collections/table.overrides +3 -0
  118. data/assets/stylesheets/semantic_ui/themes/classic/collections/table.variables +14 -0
  119. data/assets/stylesheets/semantic_ui/themes/classic/elements/button.overrides +3 -0
  120. data/assets/stylesheets/semantic_ui/themes/classic/elements/button.variables +96 -0
  121. data/assets/stylesheets/semantic_ui/themes/classic/elements/header.overrides +3 -0
  122. data/assets/stylesheets/semantic_ui/themes/classic/elements/header.variables +12 -0
  123. data/assets/stylesheets/semantic_ui/themes/classic/modules/progress.overrides +3 -0
  124. data/assets/stylesheets/semantic_ui/themes/classic/modules/progress.variables +8 -0
  125. data/assets/stylesheets/semantic_ui/themes/classic/views/card.overrides +98 -0
  126. data/assets/stylesheets/semantic_ui/themes/classic/views/card.variables +22 -0
  127. data/assets/stylesheets/semantic_ui/themes/default/collections/breadcrumb.overrides +3 -0
  128. data/assets/stylesheets/semantic_ui/themes/default/collections/breadcrumb.variables +43 -0
  129. data/assets/stylesheets/semantic_ui/themes/default/collections/form.overrides +3 -0
  130. data/assets/stylesheets/semantic_ui/themes/default/collections/form.variables +189 -0
  131. data/assets/stylesheets/semantic_ui/themes/default/collections/grid.overrides +4 -0
  132. data/assets/stylesheets/semantic_ui/themes/default/collections/grid.variables +93 -0
  133. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.overrides +3 -0
  134. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +322 -0
  135. data/assets/stylesheets/semantic_ui/themes/default/collections/message.overrides +3 -0
  136. data/assets/stylesheets/semantic_ui/themes/default/collections/message.variables +88 -0
  137. data/assets/stylesheets/semantic_ui/themes/default/collections/table.overrides +3 -0
  138. data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +228 -0
  139. data/assets/stylesheets/semantic_ui/themes/default/elements/button.overrides +3 -0
  140. data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +260 -0
  141. data/assets/stylesheets/semantic_ui/themes/default/elements/divider.overrides +3 -0
  142. data/assets/stylesheets/semantic_ui/themes/default/elements/divider.variables +54 -0
  143. data/assets/stylesheets/semantic_ui/themes/default/elements/flag.overrides +979 -0
  144. data/assets/stylesheets/semantic_ui/themes/default/elements/flag.variables +13 -0
  145. data/assets/stylesheets/semantic_ui/themes/default/elements/header.overrides +4 -0
  146. data/assets/stylesheets/semantic_ui/themes/default/elements/header.variables +126 -0
  147. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.overrides +661 -0
  148. data/assets/stylesheets/semantic_ui/themes/default/elements/icon.variables +34 -0
  149. data/assets/stylesheets/semantic_ui/themes/default/elements/image.overrides +3 -0
  150. data/assets/stylesheets/semantic_ui/themes/default/elements/image.variables +42 -0
  151. data/assets/stylesheets/semantic_ui/themes/default/elements/input.overrides +3 -0
  152. data/assets/stylesheets/semantic_ui/themes/default/elements/input.variables +114 -0
  153. data/assets/stylesheets/semantic_ui/themes/default/elements/label.overrides +3 -0
  154. data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +164 -0
  155. data/assets/stylesheets/semantic_ui/themes/default/elements/list.overrides +3 -0
  156. data/assets/stylesheets/semantic_ui/themes/default/elements/list.variables +204 -0
  157. data/assets/stylesheets/semantic_ui/themes/default/elements/loader.overrides +3 -0
  158. data/assets/stylesheets/semantic_ui/themes/default/elements/loader.variables +61 -0
  159. data/assets/stylesheets/semantic_ui/themes/default/elements/rail.overrides +3 -0
  160. data/assets/stylesheets/semantic_ui/themes/default/elements/rail.variables +24 -0
  161. data/assets/stylesheets/semantic_ui/themes/default/elements/reveal.overrides +3 -0
  162. data/assets/stylesheets/semantic_ui/themes/default/elements/reveal.variables +15 -0
  163. data/assets/stylesheets/semantic_ui/themes/default/elements/segment.overrides +3 -0
  164. data/assets/stylesheets/semantic_ui/themes/default/elements/segment.variables +100 -0
  165. data/assets/stylesheets/semantic_ui/themes/default/elements/step.overrides +16 -0
  166. data/assets/stylesheets/semantic_ui/themes/default/elements/step.variables +94 -0
  167. data/assets/stylesheets/semantic_ui/themes/default/globals/reset.overrides +434 -0
  168. data/assets/stylesheets/semantic_ui/themes/default/globals/reset.variables +3 -0
  169. data/assets/stylesheets/semantic_ui/themes/default/globals/site.overrides +3 -0
  170. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +599 -0
  171. data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.overrides +28 -0
  172. data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.variables +101 -0
  173. data/assets/stylesheets/semantic_ui/themes/default/modules/chatroom.overrides +3 -0
  174. data/assets/stylesheets/semantic_ui/themes/default/modules/chatroom.variables +3 -0
  175. data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.overrides +33 -0
  176. data/assets/stylesheets/semantic_ui/themes/default/modules/checkbox.variables +139 -0
  177. data/assets/stylesheets/semantic_ui/themes/default/modules/dimmer.overrides +3 -0
  178. data/assets/stylesheets/semantic_ui/themes/default/modules/dimmer.variables +51 -0
  179. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.overrides +57 -0
  180. data/assets/stylesheets/semantic_ui/themes/default/modules/dropdown.variables +237 -0
  181. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.overrides +3 -0
  182. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +147 -0
  183. data/assets/stylesheets/semantic_ui/themes/default/modules/nag.overrides +3 -0
  184. data/assets/stylesheets/semantic_ui/themes/default/modules/nag.variables +74 -0
  185. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.overrides +3 -0
  186. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +95 -0
  187. data/assets/stylesheets/semantic_ui/themes/default/modules/progress.overrides +3 -0
  188. data/assets/stylesheets/semantic_ui/themes/default/modules/progress.variables +99 -0
  189. data/assets/stylesheets/semantic_ui/themes/default/modules/rating.overrides +69 -0
  190. data/assets/stylesheets/semantic_ui/themes/default/modules/rating.variables +65 -0
  191. data/assets/stylesheets/semantic_ui/themes/default/modules/search.overrides +3 -0
  192. data/assets/stylesheets/semantic_ui/themes/default/modules/search.variables +140 -0
  193. data/assets/stylesheets/semantic_ui/themes/default/modules/shape.overrides +3 -0
  194. data/assets/stylesheets/semantic_ui/themes/default/modules/shape.variables +35 -0
  195. data/assets/stylesheets/semantic_ui/themes/default/modules/sidebar.overrides +3 -0
  196. data/assets/stylesheets/semantic_ui/themes/default/modules/sidebar.variables +39 -0
  197. data/assets/stylesheets/semantic_ui/themes/default/modules/sticky.overrides +3 -0
  198. data/assets/stylesheets/semantic_ui/themes/default/modules/sticky.variables +12 -0
  199. data/assets/stylesheets/semantic_ui/themes/default/modules/tab.overrides +3 -0
  200. data/assets/stylesheets/semantic_ui/themes/default/modules/tab.variables +13 -0
  201. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +445 -0
  202. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.variables +10 -0
  203. data/assets/stylesheets/semantic_ui/themes/default/modules/video.overrides +3 -0
  204. data/assets/stylesheets/semantic_ui/themes/default/modules/video.variables +16 -0
  205. data/assets/stylesheets/semantic_ui/themes/default/views/ad.overrides +3 -0
  206. data/assets/stylesheets/semantic_ui/themes/default/views/ad.variables +13 -0
  207. data/assets/stylesheets/semantic_ui/themes/default/views/card.overrides +3 -0
  208. data/assets/stylesheets/semantic_ui/themes/default/views/card.variables +185 -0
  209. data/assets/stylesheets/semantic_ui/themes/default/views/comment.overrides +3 -0
  210. data/assets/stylesheets/semantic_ui/themes/default/views/comment.variables +104 -0
  211. data/assets/stylesheets/semantic_ui/themes/default/views/feed.overrides +3 -0
  212. data/assets/stylesheets/semantic_ui/themes/default/views/feed.variables +149 -0
  213. data/assets/stylesheets/semantic_ui/themes/default/views/item.overrides +3 -0
  214. data/assets/stylesheets/semantic_ui/themes/default/views/item.variables +152 -0
  215. data/assets/stylesheets/semantic_ui/themes/default/views/statistic.overrides +3 -0
  216. data/assets/stylesheets/semantic_ui/themes/default/views/statistic.variables +97 -0
  217. data/assets/stylesheets/semantic_ui/themes/duo/elements/loader.overrides +3 -0
  218. data/assets/stylesheets/semantic_ui/themes/duo/elements/loader.variables +6 -0
  219. data/assets/stylesheets/semantic_ui/themes/fixed-width/collections/grid.overrides +3 -0
  220. data/assets/stylesheets/semantic_ui/themes/fixed-width/collections/grid.variables +25 -0
  221. data/assets/stylesheets/semantic_ui/themes/fixed-width/modules/modal.overrides +3 -0
  222. data/assets/stylesheets/semantic_ui/themes/fixed-width/modules/modal.variables +37 -0
  223. data/assets/stylesheets/semantic_ui/themes/flat/collections/form.overrides +24 -0
  224. data/assets/stylesheets/semantic_ui/themes/flat/collections/form.variables +74 -0
  225. data/assets/stylesheets/semantic_ui/themes/flat/globals/site.overrides +3 -0
  226. data/assets/stylesheets/semantic_ui/themes/flat/globals/site.variables +106 -0
  227. data/assets/stylesheets/semantic_ui/themes/github/collections/form.overrides +16 -0
  228. data/assets/stylesheets/semantic_ui/themes/github/collections/form.variables +40 -0
  229. data/assets/stylesheets/semantic_ui/themes/github/collections/menu.overrides +7 -0
  230. data/assets/stylesheets/semantic_ui/themes/github/collections/menu.variables +66 -0
  231. data/assets/stylesheets/semantic_ui/themes/github/collections/message.overrides +11 -0
  232. data/assets/stylesheets/semantic_ui/themes/github/collections/message.variables +29 -0
  233. data/assets/stylesheets/semantic_ui/themes/github/elements/button.overrides +4 -0
  234. data/assets/stylesheets/semantic_ui/themes/github/elements/button.variables +77 -0
  235. data/assets/stylesheets/semantic_ui/themes/github/elements/segment.overrides +3 -0
  236. data/assets/stylesheets/semantic_ui/themes/github/elements/segment.variables +41 -0
  237. data/assets/stylesheets/semantic_ui/themes/github/elements/step.overrides +26 -0
  238. data/assets/stylesheets/semantic_ui/themes/github/elements/step.variables +20 -0
  239. data/assets/stylesheets/semantic_ui/themes/gmail/collections/message.overrides +0 -0
  240. data/assets/stylesheets/semantic_ui/themes/gmail/collections/message.variables +15 -0
  241. data/assets/stylesheets/semantic_ui/themes/material/elements/button.overrides +23 -0
  242. data/assets/stylesheets/semantic_ui/themes/material/elements/button.variables +87 -0
  243. data/assets/stylesheets/semantic_ui/themes/material/elements/header.overrides +15 -0
  244. data/assets/stylesheets/semantic_ui/themes/material/elements/header.variables +21 -0
  245. data/assets/stylesheets/semantic_ui/themes/material/globals/site.overrides +0 -0
  246. data/assets/stylesheets/semantic_ui/themes/material/globals/site.variables +119 -0
  247. data/assets/stylesheets/semantic_ui/themes/material/modules/modal.overrides +6 -0
  248. data/assets/stylesheets/semantic_ui/themes/material/modules/modal.variables +15 -0
  249. data/assets/stylesheets/semantic_ui/themes/pulsar/elements/loader.overrides +70 -0
  250. data/assets/stylesheets/semantic_ui/themes/pulsar/elements/loader.variables +7 -0
  251. data/assets/stylesheets/semantic_ui/themes/raised/elements/button.overrides +3 -0
  252. data/assets/stylesheets/semantic_ui/themes/raised/elements/button.variables +26 -0
  253. data/assets/stylesheets/semantic_ui/themes/resetcss/globals/reset.overrides +52 -0
  254. data/assets/stylesheets/semantic_ui/themes/resetcss/globals/reset.variables +3 -0
  255. data/assets/stylesheets/semantic_ui/themes/round/elements/button.overrides +0 -0
  256. data/assets/stylesheets/semantic_ui/themes/round/elements/button.variables +138 -0
  257. data/assets/stylesheets/semantic_ui/themes/striped/modules/progress.overrides +29 -0
  258. data/assets/stylesheets/semantic_ui/themes/striped/modules/progress.variables +3 -0
  259. data/assets/stylesheets/semantic_ui/themes/timeline/views/feed.overrides +35 -0
  260. data/assets/stylesheets/semantic_ui/themes/timeline/views/feed.variables +40 -0
  261. data/assets/stylesheets/semantic_ui/themes/twitter/elements/button.overrides +13 -0
  262. data/assets/stylesheets/semantic_ui/themes/twitter/elements/button.variables +45 -0
  263. data/less-rails-semantic_ui.gemspec +28 -0
  264. data/lib/generators/semantic_ui/install/install_generator.rb +20 -0
  265. data/lib/generators/semantic_ui/install/templates/config/collections/breadcrumb.overrides +3 -0
  266. data/lib/generators/semantic_ui/install/templates/config/collections/breadcrumb.variables +3 -0
  267. data/lib/generators/semantic_ui/install/templates/config/collections/form.overrides +3 -0
  268. data/lib/generators/semantic_ui/install/templates/config/collections/form.variables +3 -0
  269. data/lib/generators/semantic_ui/install/templates/config/collections/grid.overrides +3 -0
  270. data/lib/generators/semantic_ui/install/templates/config/collections/grid.variables +3 -0
  271. data/lib/generators/semantic_ui/install/templates/config/collections/menu.overrides +3 -0
  272. data/lib/generators/semantic_ui/install/templates/config/collections/menu.variables +3 -0
  273. data/lib/generators/semantic_ui/install/templates/config/collections/message.overrides +3 -0
  274. data/lib/generators/semantic_ui/install/templates/config/collections/message.variables +3 -0
  275. data/lib/generators/semantic_ui/install/templates/config/collections/table.overrides +3 -0
  276. data/lib/generators/semantic_ui/install/templates/config/collections/table.variables +3 -0
  277. data/lib/generators/semantic_ui/install/templates/config/elements/button.overrides +3 -0
  278. data/lib/generators/semantic_ui/install/templates/config/elements/button.variables +3 -0
  279. data/lib/generators/semantic_ui/install/templates/config/elements/divider.overrides +3 -0
  280. data/lib/generators/semantic_ui/install/templates/config/elements/divider.variables +3 -0
  281. data/lib/generators/semantic_ui/install/templates/config/elements/flag.overrides +3 -0
  282. data/lib/generators/semantic_ui/install/templates/config/elements/flag.variables +3 -0
  283. data/lib/generators/semantic_ui/install/templates/config/elements/header.overrides +3 -0
  284. data/lib/generators/semantic_ui/install/templates/config/elements/header.variables +3 -0
  285. data/lib/generators/semantic_ui/install/templates/config/elements/icon.overrides +3 -0
  286. data/lib/generators/semantic_ui/install/templates/config/elements/icon.variables +3 -0
  287. data/lib/generators/semantic_ui/install/templates/config/elements/image.overrides +3 -0
  288. data/lib/generators/semantic_ui/install/templates/config/elements/image.variables +3 -0
  289. data/lib/generators/semantic_ui/install/templates/config/elements/input.overrides +3 -0
  290. data/lib/generators/semantic_ui/install/templates/config/elements/input.variables +3 -0
  291. data/lib/generators/semantic_ui/install/templates/config/elements/label.overrides +3 -0
  292. data/lib/generators/semantic_ui/install/templates/config/elements/label.variables +3 -0
  293. data/lib/generators/semantic_ui/install/templates/config/elements/list.overrides +3 -0
  294. data/lib/generators/semantic_ui/install/templates/config/elements/list.variables +3 -0
  295. data/lib/generators/semantic_ui/install/templates/config/elements/loader.overrides +3 -0
  296. data/lib/generators/semantic_ui/install/templates/config/elements/loader.variables +3 -0
  297. data/lib/generators/semantic_ui/install/templates/config/elements/rail.overrides +3 -0
  298. data/lib/generators/semantic_ui/install/templates/config/elements/rail.variables +3 -0
  299. data/lib/generators/semantic_ui/install/templates/config/elements/reveal.overrides +3 -0
  300. data/lib/generators/semantic_ui/install/templates/config/elements/reveal.variables +3 -0
  301. data/lib/generators/semantic_ui/install/templates/config/elements/segment.overrides +3 -0
  302. data/lib/generators/semantic_ui/install/templates/config/elements/segment.variables +3 -0
  303. data/lib/generators/semantic_ui/install/templates/config/elements/step.overrides +3 -0
  304. data/lib/generators/semantic_ui/install/templates/config/elements/step.variables +3 -0
  305. data/lib/generators/semantic_ui/install/templates/config/globals/reset.overrides +3 -0
  306. data/lib/generators/semantic_ui/install/templates/config/globals/reset.variables +3 -0
  307. data/lib/generators/semantic_ui/install/templates/config/globals/site.overrides +3 -0
  308. data/lib/generators/semantic_ui/install/templates/config/globals/site.variables +3 -0
  309. data/lib/generators/semantic_ui/install/templates/config/modules/accordion.overrides +3 -0
  310. data/lib/generators/semantic_ui/install/templates/config/modules/accordion.variables +3 -0
  311. data/lib/generators/semantic_ui/install/templates/config/modules/chatroom.overrides +3 -0
  312. data/lib/generators/semantic_ui/install/templates/config/modules/chatroom.variables +3 -0
  313. data/lib/generators/semantic_ui/install/templates/config/modules/checkbox.overrides +3 -0
  314. data/lib/generators/semantic_ui/install/templates/config/modules/checkbox.variables +3 -0
  315. data/lib/generators/semantic_ui/install/templates/config/modules/dimmer.overrides +3 -0
  316. data/lib/generators/semantic_ui/install/templates/config/modules/dimmer.variables +3 -0
  317. data/lib/generators/semantic_ui/install/templates/config/modules/dropdown.overrides +3 -0
  318. data/lib/generators/semantic_ui/install/templates/config/modules/dropdown.variables +3 -0
  319. data/lib/generators/semantic_ui/install/templates/config/modules/modal.overrides +3 -0
  320. data/lib/generators/semantic_ui/install/templates/config/modules/modal.variables +3 -0
  321. data/lib/generators/semantic_ui/install/templates/config/modules/nag.overrides +3 -0
  322. data/lib/generators/semantic_ui/install/templates/config/modules/nag.variables +3 -0
  323. data/lib/generators/semantic_ui/install/templates/config/modules/popup.overrides +3 -0
  324. data/lib/generators/semantic_ui/install/templates/config/modules/popup.variables +3 -0
  325. data/lib/generators/semantic_ui/install/templates/config/modules/progress.overrides +3 -0
  326. data/lib/generators/semantic_ui/install/templates/config/modules/progress.variables +3 -0
  327. data/lib/generators/semantic_ui/install/templates/config/modules/rating.overrides +3 -0
  328. data/lib/generators/semantic_ui/install/templates/config/modules/rating.variables +3 -0
  329. data/lib/generators/semantic_ui/install/templates/config/modules/search.overrides +3 -0
  330. data/lib/generators/semantic_ui/install/templates/config/modules/search.variables +3 -0
  331. data/lib/generators/semantic_ui/install/templates/config/modules/shape.overrides +3 -0
  332. data/lib/generators/semantic_ui/install/templates/config/modules/shape.variables +3 -0
  333. data/lib/generators/semantic_ui/install/templates/config/modules/sidebar.overrides +3 -0
  334. data/lib/generators/semantic_ui/install/templates/config/modules/sidebar.variables +3 -0
  335. data/lib/generators/semantic_ui/install/templates/config/modules/sticky.overrides +3 -0
  336. data/lib/generators/semantic_ui/install/templates/config/modules/sticky.variables +3 -0
  337. data/lib/generators/semantic_ui/install/templates/config/modules/tab.overrides +3 -0
  338. data/lib/generators/semantic_ui/install/templates/config/modules/tab.variables +3 -0
  339. data/lib/generators/semantic_ui/install/templates/config/modules/transition.overrides +3 -0
  340. data/lib/generators/semantic_ui/install/templates/config/modules/transition.variables +3 -0
  341. data/lib/generators/semantic_ui/install/templates/config/modules/video.overrides +3 -0
  342. data/lib/generators/semantic_ui/install/templates/config/modules/video.variables +0 -0
  343. data/lib/generators/semantic_ui/install/templates/config/views/ad.overrides +3 -0
  344. data/lib/generators/semantic_ui/install/templates/config/views/ad.variables +3 -0
  345. data/lib/generators/semantic_ui/install/templates/config/views/card.overrides +3 -0
  346. data/lib/generators/semantic_ui/install/templates/config/views/card.variables +3 -0
  347. data/lib/generators/semantic_ui/install/templates/config/views/comment.overrides +3 -0
  348. data/lib/generators/semantic_ui/install/templates/config/views/comment.variables +3 -0
  349. data/lib/generators/semantic_ui/install/templates/config/views/feed.overrides +3 -0
  350. data/lib/generators/semantic_ui/install/templates/config/views/feed.variables +3 -0
  351. data/lib/generators/semantic_ui/install/templates/config/views/item.overrides +3 -0
  352. data/lib/generators/semantic_ui/install/templates/config/views/item.variables +3 -0
  353. data/lib/generators/semantic_ui/install/templates/config/views/statistic.overrides +3 -0
  354. data/lib/generators/semantic_ui/install/templates/config/views/statistic.variables +3 -0
  355. data/lib/generators/semantic_ui/install/templates/semantic_ui.css +52 -0
  356. data/lib/generators/semantic_ui/install/templates/semantic_ui.js +27 -0
  357. data/lib/generators/semantic_ui/install/templates/theme.config +87 -0
  358. data/lib/less/rails/semantic_ui.rb +2 -0
  359. data/lib/less/rails/semantic_ui/engine.rb +18 -0
  360. data/spec/dummy_app/.gitignore +1 -0
  361. data/spec/dummy_app/app/assets/javascripts/application.js +1 -0
  362. data/spec/dummy_app/app/assets/stylesheets/application.css +4 -0
  363. data/spec/dummy_app/init.rb +20 -0
  364. data/spec/generators/install_generator_spec.rb +80 -0
  365. data/spec/spec_helper.rb +1 -0
  366. data/tasks/templates/semantic_ui.css.erb +11 -0
  367. data/tasks/templates/semantic_ui.js.erb +7 -0
  368. data/tasks/update.rake +245 -0
  369. metadata +547 -0
@@ -0,0 +1,451 @@
1
+ /*
2
+ * # Semantic - Rating
3
+ * http://github.com/semantic-org/semantic-ui/
4
+ *
5
+ *
6
+ * Copyright 2014 Contributor
7
+ * Released under the MIT license
8
+ * http://opensource.org/licenses/MIT
9
+ *
10
+ */
11
+
12
+ ;(function ($, window, document, undefined) {
13
+
14
+ "use strict";
15
+
16
+ $.fn.rating = function(parameters) {
17
+ var
18
+ $allModules = $(this),
19
+ moduleSelector = $allModules.selector || '',
20
+
21
+ time = new Date().getTime(),
22
+ performance = [],
23
+
24
+ query = arguments[0],
25
+ methodInvoked = (typeof query == 'string'),
26
+ queryArguments = [].slice.call(arguments, 1),
27
+ returnedValue
28
+ ;
29
+ $allModules
30
+ .each(function() {
31
+ var
32
+ settings = ( $.isPlainObject(parameters) )
33
+ ? $.extend(true, {}, $.fn.rating.settings, parameters)
34
+ : $.extend({}, $.fn.rating.settings),
35
+
36
+ namespace = settings.namespace,
37
+ className = settings.className,
38
+ metadata = settings.metadata,
39
+ selector = settings.selector,
40
+ error = settings.error,
41
+
42
+ eventNamespace = '.' + namespace,
43
+ moduleNamespace = 'module-' + namespace,
44
+
45
+ element = this,
46
+ instance = $(this).data(moduleNamespace),
47
+
48
+ $module = $(this),
49
+ $icon = $module.find(selector.icon),
50
+
51
+ module
52
+ ;
53
+
54
+ module = {
55
+
56
+ initialize: function() {
57
+ module.verbose('Initializing rating module', settings);
58
+
59
+ if($icon.size() === 0) {
60
+ module.setup.layout();
61
+ }
62
+
63
+ if(settings.interactive) {
64
+ module.enable();
65
+ }
66
+ else {
67
+ module.disable();
68
+ }
69
+ if(settings.initialRating) {
70
+ module.debug('Setting initial rating');
71
+ module.setRating(settings.initialRating);
72
+ }
73
+ if( $module.data(metadata.rating) ) {
74
+ module.debug('Rating found in metadata');
75
+ module.setRating( $module.data(metadata.rating) );
76
+ }
77
+ module.instantiate();
78
+ },
79
+
80
+ instantiate: function() {
81
+ module.verbose('Instantiating module', settings);
82
+ instance = module;
83
+ $module
84
+ .data(moduleNamespace, module)
85
+ ;
86
+ },
87
+
88
+ destroy: function() {
89
+ module.verbose('Destroying previous instance', instance);
90
+ $module
91
+ .removeData(moduleNamespace)
92
+ ;
93
+ $icon
94
+ .off(eventNamespace)
95
+ ;
96
+ },
97
+
98
+ refresh: function() {
99
+ $icon = $module.find(selector.icon);
100
+ },
101
+
102
+ setup: {
103
+ layout: function() {
104
+ var
105
+ maxRating = $module.data(metadata.maxRating) || settings.maxRating
106
+ ;
107
+ module.debug('Generating icon html dynamically');
108
+ $module
109
+ .html($.fn.rating.settings.templates.icon(maxRating))
110
+ ;
111
+ module.refresh();
112
+ }
113
+ },
114
+
115
+ event: {
116
+ mouseenter: function() {
117
+ var
118
+ $activeIcon = $(this)
119
+ ;
120
+ $activeIcon
121
+ .nextAll()
122
+ .removeClass(className.selected)
123
+ ;
124
+ $module
125
+ .addClass(className.selected)
126
+ ;
127
+ $activeIcon
128
+ .addClass(className.selected)
129
+ .prevAll()
130
+ .addClass(className.selected)
131
+ ;
132
+ },
133
+ mouseleave: function() {
134
+ $module
135
+ .removeClass(className.selected)
136
+ ;
137
+ $icon
138
+ .removeClass(className.selected)
139
+ ;
140
+ },
141
+ click: function() {
142
+ var
143
+ $activeIcon = $(this),
144
+ currentRating = module.getRating(),
145
+ rating = $icon.index($activeIcon) + 1,
146
+ canClear = (settings.clearable == 'auto')
147
+ ? ($icon.size() === 1)
148
+ : settings.clearable
149
+ ;
150
+ if(canClear && currentRating == rating) {
151
+ module.clearRating();
152
+ }
153
+ else {
154
+ module.setRating( rating );
155
+ }
156
+ }
157
+ },
158
+
159
+ clearRating: function() {
160
+ module.debug('Clearing current rating');
161
+ module.setRating(0);
162
+ },
163
+
164
+ getRating: function() {
165
+ var
166
+ currentRating = $icon.filter('.' + className.active).size()
167
+ ;
168
+ module.verbose('Current rating retrieved', currentRating);
169
+ return currentRating;
170
+ },
171
+
172
+ enable: function() {
173
+ module.debug('Setting rating to interactive mode');
174
+ $icon
175
+ .on('mouseenter' + eventNamespace, module.event.mouseenter)
176
+ .on('mouseleave' + eventNamespace, module.event.mouseleave)
177
+ .on('click' + eventNamespace, module.event.click)
178
+ ;
179
+ $module
180
+ .removeClass(className.disabled)
181
+ ;
182
+ },
183
+
184
+ disable: function() {
185
+ module.debug('Setting rating to read-only mode');
186
+ $icon
187
+ .off(eventNamespace)
188
+ ;
189
+ $module
190
+ .addClass(className.disabled)
191
+ ;
192
+ },
193
+
194
+ setRating: function(rating) {
195
+ var
196
+ ratingIndex = (rating - 1 >= 0)
197
+ ? (rating - 1)
198
+ : 0,
199
+ $activeIcon = $icon.eq(ratingIndex)
200
+ ;
201
+ $module
202
+ .removeClass(className.selected)
203
+ ;
204
+ $icon
205
+ .removeClass(className.selected)
206
+ .removeClass(className.active)
207
+ ;
208
+ if(rating > 0) {
209
+ module.verbose('Setting current rating to', rating);
210
+ $activeIcon
211
+ .prevAll()
212
+ .andSelf()
213
+ .addClass(className.active)
214
+ ;
215
+ }
216
+ $.proxy(settings.onRate, element)(rating);
217
+ },
218
+
219
+ setting: function(name, value) {
220
+ module.debug('Changing setting', name, value);
221
+ if( $.isPlainObject(name) ) {
222
+ $.extend(true, settings, name);
223
+ }
224
+ else if(value !== undefined) {
225
+ settings[name] = value;
226
+ }
227
+ else {
228
+ return settings[name];
229
+ }
230
+ },
231
+ internal: function(name, value) {
232
+ if( $.isPlainObject(name) ) {
233
+ $.extend(true, module, name);
234
+ }
235
+ else if(value !== undefined) {
236
+ module[name] = value;
237
+ }
238
+ else {
239
+ return module[name];
240
+ }
241
+ },
242
+ debug: function() {
243
+ if(settings.debug) {
244
+ if(settings.performance) {
245
+ module.performance.log(arguments);
246
+ }
247
+ else {
248
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
249
+ module.debug.apply(console, arguments);
250
+ }
251
+ }
252
+ },
253
+ verbose: function() {
254
+ if(settings.verbose && settings.debug) {
255
+ if(settings.performance) {
256
+ module.performance.log(arguments);
257
+ }
258
+ else {
259
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
260
+ module.verbose.apply(console, arguments);
261
+ }
262
+ }
263
+ },
264
+ error: function() {
265
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
266
+ module.error.apply(console, arguments);
267
+ },
268
+ performance: {
269
+ log: function(message) {
270
+ var
271
+ currentTime,
272
+ executionTime,
273
+ previousTime
274
+ ;
275
+ if(settings.performance) {
276
+ currentTime = new Date().getTime();
277
+ previousTime = time || currentTime;
278
+ executionTime = currentTime - previousTime;
279
+ time = currentTime;
280
+ performance.push({
281
+ 'Name' : message[0],
282
+ 'Arguments' : [].slice.call(message, 1) || '',
283
+ 'Element' : element,
284
+ 'Execution Time' : executionTime
285
+ });
286
+ }
287
+ clearTimeout(module.performance.timer);
288
+ module.performance.timer = setTimeout(module.performance.display, 100);
289
+ },
290
+ display: function() {
291
+ var
292
+ title = settings.name + ':',
293
+ totalTime = 0
294
+ ;
295
+ time = false;
296
+ clearTimeout(module.performance.timer);
297
+ $.each(performance, function(index, data) {
298
+ totalTime += data['Execution Time'];
299
+ });
300
+ title += ' ' + totalTime + 'ms';
301
+ if(moduleSelector) {
302
+ title += ' \'' + moduleSelector + '\'';
303
+ }
304
+ if($allModules.size() > 1) {
305
+ title += ' ' + '(' + $allModules.size() + ')';
306
+ }
307
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
308
+ console.groupCollapsed(title);
309
+ if(console.table) {
310
+ console.table(performance);
311
+ }
312
+ else {
313
+ $.each(performance, function(index, data) {
314
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
315
+ });
316
+ }
317
+ console.groupEnd();
318
+ }
319
+ performance = [];
320
+ }
321
+ },
322
+ invoke: function(query, passedArguments, context) {
323
+ var
324
+ object = instance,
325
+ maxDepth,
326
+ found,
327
+ response
328
+ ;
329
+ passedArguments = passedArguments || queryArguments;
330
+ context = element || context;
331
+ if(typeof query == 'string' && object !== undefined) {
332
+ query = query.split(/[\. ]/);
333
+ maxDepth = query.length - 1;
334
+ $.each(query, function(depth, value) {
335
+ var camelCaseValue = (depth != maxDepth)
336
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
337
+ : query
338
+ ;
339
+ if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
340
+ object = object[camelCaseValue];
341
+ }
342
+ else if( object[camelCaseValue] !== undefined ) {
343
+ found = object[camelCaseValue];
344
+ return false;
345
+ }
346
+ else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
347
+ object = object[value];
348
+ }
349
+ else if( object[value] !== undefined ) {
350
+ found = object[value];
351
+ return false;
352
+ }
353
+ else {
354
+ return false;
355
+ }
356
+ });
357
+ }
358
+ if ( $.isFunction( found ) ) {
359
+ response = found.apply(context, passedArguments);
360
+ }
361
+ else if(found !== undefined) {
362
+ response = found;
363
+ }
364
+ if($.isArray(returnedValue)) {
365
+ returnedValue.push(response);
366
+ }
367
+ else if(returnedValue !== undefined) {
368
+ returnedValue = [returnedValue, response];
369
+ }
370
+ else if(response !== undefined) {
371
+ returnedValue = response;
372
+ }
373
+ return found;
374
+ }
375
+ };
376
+ if(methodInvoked) {
377
+ if(instance === undefined) {
378
+ module.initialize();
379
+ }
380
+ module.invoke(query);
381
+ }
382
+ else {
383
+ if(instance !== undefined) {
384
+ module.destroy();
385
+ }
386
+ module.initialize();
387
+ }
388
+ })
389
+ ;
390
+
391
+ return (returnedValue !== undefined)
392
+ ? returnedValue
393
+ : this
394
+ ;
395
+ };
396
+
397
+ $.fn.rating.settings = {
398
+
399
+ name : 'Rating',
400
+ namespace : 'rating',
401
+
402
+ debug : false,
403
+ verbose : true,
404
+ performance : true,
405
+
406
+ initialRating : 0,
407
+ interactive : true,
408
+ maxRating : 4,
409
+ clearable : 'auto',
410
+
411
+ onRate : function(rating){},
412
+
413
+ error : {
414
+ method : 'The method you called is not defined',
415
+ noMaximum : 'No maximum rating specified. Cannot generate HTML automatically'
416
+ },
417
+
418
+
419
+ metadata: {
420
+ rating : 'rating',
421
+ maxRating : 'maxRating'
422
+ },
423
+
424
+ className : {
425
+ active : 'active',
426
+ disabled : 'disabled',
427
+ selected : 'selected',
428
+ loading : 'loading'
429
+ },
430
+
431
+ selector : {
432
+ icon : '.icon'
433
+ },
434
+
435
+ templates: {
436
+ icon: function(maxRating) {
437
+ var
438
+ icon = 1,
439
+ html = ''
440
+ ;
441
+ while(icon <= maxRating) {
442
+ html += '<i class="icon"></i>';
443
+ icon++;
444
+ }
445
+ return html;
446
+ }
447
+ }
448
+
449
+ };
450
+
451
+ })( jQuery, window , document );
@@ -0,0 +1,886 @@
1
+ /*
2
+ * # Semantic - Search
3
+ * http://github.com/semantic-org/semantic-ui/
4
+ *
5
+ *
6
+ * Copyright 2014 Contributor
7
+ * Released under the MIT license
8
+ * http://opensource.org/licenses/MIT
9
+ *
10
+ */
11
+
12
+ ;(function ($, window, document, undefined) {
13
+
14
+ "use strict";
15
+
16
+ $.fn.search = function(parameters) {
17
+ var
18
+ $allModules = $(this),
19
+ moduleSelector = $allModules.selector || '',
20
+
21
+ time = new Date().getTime(),
22
+ performance = [],
23
+
24
+ query = arguments[0],
25
+ methodInvoked = (typeof query == 'string'),
26
+ queryArguments = [].slice.call(arguments, 1),
27
+ returnedValue
28
+ ;
29
+ $(this)
30
+ .each(function() {
31
+ var
32
+ settings = $.extend(true, {}, $.fn.search.settings, parameters),
33
+
34
+ className = settings.className,
35
+ selector = settings.selector,
36
+ error = settings.error,
37
+ namespace = settings.namespace,
38
+
39
+ eventNamespace = '.' + namespace,
40
+ moduleNamespace = namespace + '-module',
41
+
42
+ $module = $(this),
43
+ $prompt = $module.find(selector.prompt),
44
+ $searchButton = $module.find(selector.searchButton),
45
+ $results = $module.find(selector.results),
46
+ $result = $module.find(selector.result),
47
+ $category = $module.find(selector.category),
48
+
49
+ element = this,
50
+ instance = $module.data(moduleNamespace),
51
+
52
+ module
53
+ ;
54
+ module = {
55
+
56
+ initialize: function() {
57
+ 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
+ ;
84
+ module.instantiate();
85
+ },
86
+ instantiate: function() {
87
+ module.verbose('Storing instance of module', module);
88
+ instance = module;
89
+ $module
90
+ .data(moduleNamespace, module)
91
+ ;
92
+ },
93
+ destroy: function() {
94
+ module.verbose('Destroying instance');
95
+ $module
96
+ .removeData(moduleNamespace)
97
+ ;
98
+ $prompt
99
+ .off(eventNamespace)
100
+ ;
101
+ $searchButton
102
+ .off(eventNamespace)
103
+ ;
104
+ $results
105
+ .off(eventNamespace)
106
+ ;
107
+ },
108
+ event: {
109
+ focus: function() {
110
+ $module
111
+ .addClass(className.focus)
112
+ ;
113
+ clearTimeout(module.timer);
114
+ module.search.throttle();
115
+ if(module.has.minimum()) {
116
+ module.results.show();
117
+ }
118
+ },
119
+ mousedown: function() {
120
+ module.resultsClicked = true;
121
+ },
122
+ mouseup: function() {
123
+ module.resultsClicked = false;
124
+ },
125
+ blur: function(event) {
126
+ module.search.cancel();
127
+ $module
128
+ .removeClass(className.focus)
129
+ ;
130
+ if(!module.resultsClicked) {
131
+ module.timer = setTimeout(module.results.hide, settings.hideDelay);
132
+ }
133
+ }
134
+ },
135
+ handleKeyboard: function(event) {
136
+ var
137
+ // force latest jq dom
138
+ $result = $module.find(selector.result),
139
+ $category = $module.find(selector.category),
140
+ keyCode = event.which,
141
+ keys = {
142
+ backspace : 8,
143
+ enter : 13,
144
+ escape : 27,
145
+ upArrow : 38,
146
+ downArrow : 40
147
+ },
148
+ activeClass = className.active,
149
+ currentIndex = $result.index( $result.filter('.' + activeClass) ),
150
+ resultSize = $result.size(),
151
+ newIndex
152
+ ;
153
+ // search shortcuts
154
+ if(keyCode == keys.escape) {
155
+ module.verbose('Escape key pressed, blurring search field');
156
+ $prompt
157
+ .trigger('blur')
158
+ ;
159
+ }
160
+ // result shortcuts
161
+ if($results.filter(':visible').size() > 0) {
162
+ if(keyCode == keys.enter) {
163
+ module.verbose('Enter key pressed, selecting active result');
164
+ if( $result.filter('.' + activeClass).size() > 0 ) {
165
+ $.proxy(module.results.select, $result.filter('.' + activeClass) )(event);
166
+ event.preventDefault();
167
+ return false;
168
+ }
169
+ }
170
+ else if(keyCode == keys.upArrow) {
171
+ module.verbose('Up key pressed, changing active result');
172
+ newIndex = (currentIndex - 1 < 0)
173
+ ? currentIndex
174
+ : currentIndex - 1
175
+ ;
176
+ $category
177
+ .removeClass(activeClass)
178
+ ;
179
+ $result
180
+ .removeClass(activeClass)
181
+ .eq(newIndex)
182
+ .addClass(activeClass)
183
+ .closest($category)
184
+ .addClass(activeClass)
185
+ ;
186
+ event.preventDefault();
187
+ }
188
+ else if(keyCode == keys.downArrow) {
189
+ module.verbose('Down key pressed, changing active result');
190
+ newIndex = (currentIndex + 1 >= resultSize)
191
+ ? currentIndex
192
+ : currentIndex + 1
193
+ ;
194
+ $category
195
+ .removeClass(activeClass)
196
+ ;
197
+ $result
198
+ .removeClass(activeClass)
199
+ .eq(newIndex)
200
+ .addClass(activeClass)
201
+ .closest($category)
202
+ .addClass(activeClass)
203
+ ;
204
+ event.preventDefault();
205
+ }
206
+ }
207
+ else {
208
+ // query shortcuts
209
+ if(keyCode == keys.enter) {
210
+ 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
+ ;
222
+ }
223
+ }
224
+ },
225
+ has: {
226
+ minimum: function() {
227
+ var
228
+ searchTerm = $prompt.val(),
229
+ numCharacters = searchTerm.length
230
+ ;
231
+ return (numCharacters >= settings.minCharacters);
232
+ }
233
+ },
234
+ search: {
235
+ cancel: function() {
236
+ var
237
+ xhr = $module.data('xhr') || false
238
+ ;
239
+ if( xhr && xhr.state() != 'resolved') {
240
+ module.debug('Cancelling last search');
241
+ xhr.abort();
242
+ }
243
+ },
244
+ throttle: function() {
245
+ clearTimeout(module.timer);
246
+ if(module.has.minimum()) {
247
+ module.timer = setTimeout(module.search.query, settings.searchDelay);
248
+ }
249
+ else {
250
+ module.results.hide();
251
+ }
252
+ },
253
+ query: function() {
254
+ var
255
+ searchTerm = $prompt.val(),
256
+ cachedHTML = module.search.cache.read(searchTerm)
257
+ ;
258
+ if(cachedHTML) {
259
+ module.debug("Reading result for '" + searchTerm + "' from cache");
260
+ module.results.add(cachedHTML);
261
+ }
262
+ else {
263
+ module.debug("Querying for '" + searchTerm + "'");
264
+ if($.isPlainObject(settings.source) || $.isArray(settings.source)) {
265
+ module.search.local(searchTerm);
266
+ }
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
+ };
275
+ module.search.remote(searchTerm);
276
+ }
277
+ else {
278
+ module.error(error.source);
279
+ }
280
+ $.proxy(settings.onSearchQuery, $module)(searchTerm);
281
+ }
282
+ },
283
+ local: function(searchTerm) {
284
+ 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'),
292
+ searchHTML
293
+ ;
294
+ $module
295
+ .addClass(className.loading)
296
+ ;
297
+ // iterate through search fields in array order
298
+ $.each(searchFields, function(index, field) {
299
+ $.each(settings.source, function(label, content) {
300
+ var
301
+ fieldExists = (typeof content[field] == 'string'),
302
+ notAlreadyResult = ($.inArray(content, results) == -1 && $.inArray(content, fullTextResults) == -1)
303
+ ;
304
+ if(fieldExists && notAlreadyResult) {
305
+ if( searchRegExp.test( content[field] ) ) {
306
+ results.push(content);
307
+ }
308
+ else if( settings.searchFullText && fullTextRegExp.test( content[field] ) ) {
309
+ fullTextResults.push(content);
310
+ }
311
+ }
312
+ });
313
+ });
314
+ searchHTML = module.results.generate({
315
+ results: $.merge(results, fullTextResults)
316
+ });
317
+ $module
318
+ .removeClass(className.loading)
319
+ ;
320
+ module.search.cache.write(searchTerm, searchHTML);
321
+ module.results.add(searchHTML);
322
+ },
323
+ remote: function(searchTerm) {
324
+ 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
338
+ ;
339
+ module.search.cancel();
340
+ module.debug('Executing search');
341
+ $.extend(true, apiSettings, settings.apiSettings);
342
+ $.api(apiSettings);
343
+ },
344
+
345
+ cache: {
346
+ read: function(name) {
347
+ var
348
+ cache = $module.data('cache')
349
+ ;
350
+ return (settings.cache && (typeof cache == 'object') && (cache[name] !== undefined) )
351
+ ? cache[name]
352
+ : false
353
+ ;
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
+ }
366
+ }
367
+ },
368
+
369
+ results: {
370
+ generate: function(response) {
371
+ module.debug('Generating html from response', response);
372
+ var
373
+ template = settings.templates[settings.type],
374
+ html = ''
375
+ ;
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
+ }
389
+ }
390
+ else {
391
+ html = module.message(error.noResults, 'empty');
392
+ }
393
+ $.proxy(settings.onResults, $module)(response);
394
+ return html;
395
+ },
396
+ add: function(html) {
397
+ if(settings.onResultsAdd == 'default' || $.proxy(settings.onResultsAdd, $results)(html) == 'default') {
398
+ $results
399
+ .html(html)
400
+ ;
401
+ }
402
+ module.results.show();
403
+ },
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)();
424
+ }
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)
443
+ ;
444
+ }
445
+ $.proxy(settings.onResultsClose, $results)();
446
+ }
447
+ },
448
+ select: function(event) {
449
+ module.debug('Search result selected');
450
+ var
451
+ $result = $(this),
452
+ $title = $result.find('.title'),
453
+ title = $title.html()
454
+ ;
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
464
+ ;
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);
475
+ }
476
+ }
477
+ }
478
+ }
479
+ },
480
+
481
+ // displays mesage visibly in search results
482
+ message: function(text, type) {
483
+ type = type || 'standard';
484
+ module.results.add( settings.templates.message(text, type) );
485
+ return settings.templates.message(text, type);
486
+ },
487
+
488
+ setting: function(name, value) {
489
+ if( $.isPlainObject(name) ) {
490
+ $.extend(true, settings, name);
491
+ }
492
+ else if(value !== undefined) {
493
+ settings[name] = value;
494
+ }
495
+ else {
496
+ return settings[name];
497
+ }
498
+ },
499
+ internal: function(name, value) {
500
+ if( $.isPlainObject(name) ) {
501
+ $.extend(true, module, name);
502
+ }
503
+ else if(value !== undefined) {
504
+ module[name] = value;
505
+ }
506
+ else {
507
+ return module[name];
508
+ }
509
+ },
510
+ debug: function() {
511
+ if(settings.debug) {
512
+ if(settings.performance) {
513
+ module.performance.log(arguments);
514
+ }
515
+ else {
516
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
517
+ module.debug.apply(console, arguments);
518
+ }
519
+ }
520
+ },
521
+ verbose: function() {
522
+ if(settings.verbose && settings.debug) {
523
+ if(settings.performance) {
524
+ module.performance.log(arguments);
525
+ }
526
+ else {
527
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
528
+ module.verbose.apply(console, arguments);
529
+ }
530
+ }
531
+ },
532
+ error: function() {
533
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
534
+ module.error.apply(console, arguments);
535
+ },
536
+ performance: {
537
+ log: function(message) {
538
+ var
539
+ currentTime,
540
+ executionTime,
541
+ previousTime
542
+ ;
543
+ if(settings.performance) {
544
+ currentTime = new Date().getTime();
545
+ previousTime = time || currentTime;
546
+ executionTime = currentTime - previousTime;
547
+ time = currentTime;
548
+ performance.push({
549
+ 'Name' : message[0],
550
+ 'Arguments' : [].slice.call(message, 1) || '',
551
+ 'Element' : element,
552
+ 'Execution Time' : executionTime
553
+ });
554
+ }
555
+ clearTimeout(module.performance.timer);
556
+ module.performance.timer = setTimeout(module.performance.display, 100);
557
+ },
558
+ display: function() {
559
+ var
560
+ title = settings.name + ':',
561
+ totalTime = 0
562
+ ;
563
+ time = false;
564
+ clearTimeout(module.performance.timer);
565
+ $.each(performance, function(index, data) {
566
+ totalTime += data['Execution Time'];
567
+ });
568
+ title += ' ' + totalTime + 'ms';
569
+ if(moduleSelector) {
570
+ title += ' \'' + moduleSelector + '\'';
571
+ }
572
+ if($allModules.size() > 1) {
573
+ title += ' ' + '(' + $allModules.size() + ')';
574
+ }
575
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
576
+ console.groupCollapsed(title);
577
+ if(console.table) {
578
+ console.table(performance);
579
+ }
580
+ else {
581
+ $.each(performance, function(index, data) {
582
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
583
+ });
584
+ }
585
+ console.groupEnd();
586
+ }
587
+ performance = [];
588
+ }
589
+ },
590
+ invoke: function(query, passedArguments, context) {
591
+ var
592
+ object = instance,
593
+ maxDepth,
594
+ found,
595
+ response
596
+ ;
597
+ passedArguments = passedArguments || queryArguments;
598
+ context = element || context;
599
+ if(typeof query == 'string' && object !== undefined) {
600
+ query = query.split(/[\. ]/);
601
+ maxDepth = query.length - 1;
602
+ $.each(query, function(depth, value) {
603
+ var camelCaseValue = (depth != maxDepth)
604
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
605
+ : query
606
+ ;
607
+ if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
608
+ object = object[camelCaseValue];
609
+ }
610
+ else if( object[camelCaseValue] !== undefined ) {
611
+ found = object[camelCaseValue];
612
+ return false;
613
+ }
614
+ else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
615
+ object = object[value];
616
+ }
617
+ else if( object[value] !== undefined ) {
618
+ found = object[value];
619
+ return false;
620
+ }
621
+ else {
622
+ return false;
623
+ }
624
+ });
625
+ }
626
+ if ( $.isFunction( found ) ) {
627
+ response = found.apply(context, passedArguments);
628
+ }
629
+ else if(found !== undefined) {
630
+ response = found;
631
+ }
632
+ if($.isArray(returnedValue)) {
633
+ returnedValue.push(response);
634
+ }
635
+ else if(returnedValue !== undefined) {
636
+ returnedValue = [returnedValue, response];
637
+ }
638
+ else if(response !== undefined) {
639
+ returnedValue = response;
640
+ }
641
+ return found;
642
+ }
643
+ };
644
+ if(methodInvoked) {
645
+ if(instance === undefined) {
646
+ module.initialize();
647
+ }
648
+ module.invoke(query);
649
+ }
650
+ else {
651
+ if(instance !== undefined) {
652
+ module.destroy();
653
+ }
654
+ module.initialize();
655
+ }
656
+
657
+ })
658
+ ;
659
+
660
+ return (returnedValue !== undefined)
661
+ ? returnedValue
662
+ : this
663
+ ;
664
+ };
665
+
666
+ $.fn.search.settings = {
667
+
668
+ name : 'Search Module',
669
+ namespace : 'search',
670
+
671
+ debug : false,
672
+ verbose : true,
673
+ performance : true,
674
+
675
+ // api config
676
+ apiSettings : false,
677
+ type : 'standard',
678
+ minCharacters : 1,
679
+
680
+ source : false,
681
+ searchFields : [
682
+ 'title',
683
+ 'description'
684
+ ],
685
+ searchFullText : true,
686
+
687
+ automatic : 'true',
688
+ hideDelay : 0,
689
+ searchDelay : 300,
690
+ maxResults : 7,
691
+ cache : true,
692
+
693
+ transition : 'scale',
694
+ duration : 300,
695
+ easing : 'easeOutExpo',
696
+
697
+ // onSelect default action is defined in module
698
+ onSelect : 'default',
699
+ onResultsAdd : 'default',
700
+
701
+ onSearchQuery : function(){},
702
+ onResults : function(response){},
703
+
704
+ onResultsOpen : function(){},
705
+ onResultsClose : function(){},
706
+
707
+ className: {
708
+ active : 'active',
709
+ down : 'down',
710
+ focus : 'focus',
711
+ empty : 'empty',
712
+ loading : 'loading'
713
+ },
714
+
715
+ error : {
716
+ source : 'Cannot search. No source used, and Semantic API module was not included',
717
+ noResults : 'Your search returned no results',
718
+ logging : 'Error in debug logging, exiting.',
719
+ noTemplate : 'A valid template name was not specified.',
720
+ serverError : 'There was an issue with querying the server.',
721
+ method : 'The method you called is not defined.'
722
+ },
723
+
724
+ selector : {
725
+ prompt : '.prompt',
726
+ searchButton : '.search.button',
727
+ results : '.results',
728
+ category : '.category',
729
+ result : '.result',
730
+ title : '.title, .name'
731
+ },
732
+
733
+ templates: {
734
+ escape: function(string) {
735
+ var
736
+ badChars = /[&<>"'`]/g,
737
+ shouldEscape = /[&<>"'`]/,
738
+ escape = {
739
+ "&": "&amp;",
740
+ "<": "&lt;",
741
+ ">": "&gt;",
742
+ '"': "&quot;",
743
+ "'": "&#x27;",
744
+ "`": "&#x60;"
745
+ },
746
+ escapedChar = function(chr) {
747
+ return escape[chr];
748
+ }
749
+ ;
750
+ if(shouldEscape.test(string)) {
751
+ return string.replace(badChars, escapedChar);
752
+ }
753
+ return string;
754
+ },
755
+ message: function(message, type) {
756
+ var
757
+ html = ''
758
+ ;
759
+ if(message !== undefined && type !== undefined) {
760
+ html += ''
761
+ + '<div class="message ' + type + '">'
762
+ ;
763
+ // message type
764
+ if(type == 'empty') {
765
+ html += ''
766
+ + '<div class="header">No Results</div class="header">'
767
+ + '<div class="description">' + message + '</div class="description">'
768
+ ;
769
+ }
770
+ else {
771
+ html += ' <div class="description">' + message + '</div>';
772
+ }
773
+ html += '</div>';
774
+ }
775
+ return html;
776
+ },
777
+ category: function(response) {
778
+ var
779
+ html = '',
780
+ escape = $.fn.search.settings.templates.escape
781
+ ;
782
+ if(response.results !== undefined) {
783
+ // each category
784
+ $.each(response.results, function(index, category) {
785
+ if(category.results !== undefined && category.results.length > 0) {
786
+ html += ''
787
+ + '<div class="category">'
788
+ + '<div class="name">' + category.name + '</div>'
789
+ ;
790
+ // each item inside category
791
+ $.each(category.results, function(index, result) {
792
+ html += '<div class="result">';
793
+ if(result.url) {
794
+ html += '<a href="' + result.url + '"></a>';
795
+ }
796
+ if(result.image !== undefined) {
797
+ result.image = escape(result.image);
798
+ html += ''
799
+ + '<div class="image">'
800
+ + ' <img src="' + result.image + '" alt="">'
801
+ + '</div>'
802
+ ;
803
+ }
804
+ html += '<div class="content">';
805
+ if(result.price !== undefined) {
806
+ result.price = escape(result.price);
807
+ html += '<div class="price">' + result.price + '</div>';
808
+ }
809
+ if(result.title !== undefined) {
810
+ result.title = escape(result.title);
811
+ html += '<div class="title">' + result.title + '</div>';
812
+ }
813
+ if(result.description !== undefined) {
814
+ html += '<div class="description">' + result.description + '</div>';
815
+ }
816
+ html += ''
817
+ + '</div>'
818
+ + '</div>'
819
+ ;
820
+ });
821
+ html += ''
822
+ + '</div>'
823
+ ;
824
+ }
825
+ });
826
+ if(response.action) {
827
+ html += ''
828
+ + '<a href="' + response.action.url + '" class="action">'
829
+ + response.action.text
830
+ + '</a>';
831
+ }
832
+ return html;
833
+ }
834
+ return false;
835
+ },
836
+ standard: function(response) {
837
+ var
838
+ html = ''
839
+ ;
840
+ if(response.results !== undefined) {
841
+
842
+ // each result
843
+ $.each(response.results, function(index, result) {
844
+ if(result.url) {
845
+ html += '<a class="result" href="' + result.url + '">';
846
+ }
847
+ else {
848
+ html += '<a class="result">';
849
+ }
850
+ if(result.image !== undefined) {
851
+ html += ''
852
+ + '<div class="image">'
853
+ + ' <img src="' + result.image + '">'
854
+ + '</div>'
855
+ ;
856
+ }
857
+ html += '<div class="content">';
858
+ if(result.price !== undefined) {
859
+ html += '<div class="price">' + result.price + '</div>';
860
+ }
861
+ if(result.title !== undefined) {
862
+ html += '<div class="title">' + result.title + '</div>';
863
+ }
864
+ if(result.description !== undefined) {
865
+ html += '<div class="description">' + result.description + '</div>';
866
+ }
867
+ html += ''
868
+ + '</div>'
869
+ ;
870
+ html += '</a>';
871
+ });
872
+
873
+ if(response.action) {
874
+ html += ''
875
+ + '<a href="' + response.action.url + '" class="action">'
876
+ + response.action.text
877
+ + '</a>';
878
+ }
879
+ return html;
880
+ }
881
+ return false;
882
+ }
883
+ }
884
+ };
885
+
886
+ })( jQuery, window , document );