rbbt-rest 1.8.123 → 1.8.126

Sign up to get free protection for your applications and to get access to all the features.
Files changed (302) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/rest/common/locate.rb +1 -0
  3. data/lib/rbbt/rest/common/table.rb +9 -4
  4. data/lib/rbbt/rest/entity/locate.rb +1 -1
  5. data/lib/rbbt/rest/file_server.rb +1 -1
  6. data/lib/rbbt/rest/main.rb +11 -14
  7. data/lib/rbbt/rest/workflow.rb +1 -1
  8. data/share/views/entity_partials/entity_card.haml +1 -1
  9. data/share/views/form.haml +1 -1
  10. data/share/views/partials/dependencies.haml +1 -1
  11. data/share/views/public/js/rbbt/table.js +2 -3
  12. data/share/views/public/plugins/semantic-ui/README.md +6 -8
  13. data/share/views/public/plugins/semantic-ui/RELEASE-NOTES.md +216 -0
  14. data/share/views/public/plugins/semantic-ui/dist/components/accordion.css +3 -2
  15. data/share/views/public/plugins/semantic-ui/dist/components/accordion.js +7 -4
  16. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.css +2 -2
  17. data/share/views/public/plugins/semantic-ui/dist/components/accordion.min.js +1 -1
  18. data/share/views/public/plugins/semantic-ui/dist/components/ad.css +1 -1
  19. data/share/views/public/plugins/semantic-ui/dist/components/ad.min.css +1 -1
  20. data/share/views/public/plugins/semantic-ui/dist/components/api.js +2 -2
  21. data/share/views/public/plugins/semantic-ui/dist/components/api.min.js +1 -1
  22. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.css +1 -1
  23. data/share/views/public/plugins/semantic-ui/dist/components/breadcrumb.min.css +1 -1
  24. data/share/views/public/plugins/semantic-ui/dist/components/button.css +634 -245
  25. data/share/views/public/plugins/semantic-ui/dist/components/button.min.css +2 -2
  26. data/share/views/public/plugins/semantic-ui/dist/components/card.css +70 -37
  27. data/share/views/public/plugins/semantic-ui/dist/components/card.min.css +2 -2
  28. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.css +19 -12
  29. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.js +2 -2
  30. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.css +2 -2
  31. data/share/views/public/plugins/semantic-ui/dist/components/checkbox.min.js +1 -1
  32. data/share/views/public/plugins/semantic-ui/dist/components/comment.css +3 -2
  33. data/share/views/public/plugins/semantic-ui/dist/components/comment.min.css +2 -2
  34. data/share/views/public/plugins/semantic-ui/dist/components/container.css +1 -1
  35. data/share/views/public/plugins/semantic-ui/dist/components/container.min.css +1 -1
  36. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.css +48 -9
  37. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.js +29 -4
  38. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.css +2 -2
  39. data/share/views/public/plugins/semantic-ui/dist/components/dimmer.min.js +1 -1
  40. data/share/views/public/plugins/semantic-ui/dist/components/divider.css +1 -1
  41. data/share/views/public/plugins/semantic-ui/dist/components/divider.min.css +2 -2
  42. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.css +90 -48
  43. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.js +99 -23
  44. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.css +2 -2
  45. data/share/views/public/plugins/semantic-ui/dist/components/dropdown.min.js +1 -2
  46. data/share/views/public/plugins/semantic-ui/dist/components/embed.css +1 -1
  47. data/share/views/public/plugins/semantic-ui/dist/components/embed.js +11 -1
  48. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.css +1 -1
  49. data/share/views/public/plugins/semantic-ui/dist/components/embed.min.js +1 -1
  50. data/share/views/public/plugins/semantic-ui/dist/components/feed.css +3 -4
  51. data/share/views/public/plugins/semantic-ui/dist/components/feed.min.css +2 -2
  52. data/share/views/public/plugins/semantic-ui/dist/components/flag.css +6 -1
  53. data/share/views/public/plugins/semantic-ui/dist/components/flag.min.css +2 -2
  54. data/share/views/public/plugins/semantic-ui/dist/components/form.css +29 -16
  55. data/share/views/public/plugins/semantic-ui/dist/components/form.js +14 -14
  56. data/share/views/public/plugins/semantic-ui/dist/components/form.min.css +2 -2
  57. data/share/views/public/plugins/semantic-ui/dist/components/form.min.js +1 -1
  58. data/share/views/public/plugins/semantic-ui/dist/components/grid.css +89 -52
  59. data/share/views/public/plugins/semantic-ui/dist/components/grid.min.css +2 -2
  60. data/share/views/public/plugins/semantic-ui/dist/components/header.css +11 -5
  61. data/share/views/public/plugins/semantic-ui/dist/components/header.min.css +2 -2
  62. data/share/views/public/plugins/semantic-ui/dist/components/icon.css +3366 -1876
  63. data/share/views/public/plugins/semantic-ui/dist/components/icon.min.css +2 -2
  64. data/share/views/public/plugins/semantic-ui/dist/components/image.css +7 -3
  65. data/share/views/public/plugins/semantic-ui/dist/components/image.min.css +2 -2
  66. data/share/views/public/plugins/semantic-ui/dist/components/input.css +50 -42
  67. data/share/views/public/plugins/semantic-ui/dist/components/input.min.css +2 -2
  68. data/share/views/public/plugins/semantic-ui/dist/components/item.css +10 -9
  69. data/share/views/public/plugins/semantic-ui/dist/components/item.min.css +2 -2
  70. data/share/views/public/plugins/semantic-ui/dist/components/label.css +34 -28
  71. data/share/views/public/plugins/semantic-ui/dist/components/label.min.css +2 -2
  72. data/share/views/public/plugins/semantic-ui/dist/components/list.css +15 -13
  73. data/share/views/public/plugins/semantic-ui/dist/components/list.min.css +2 -2
  74. data/share/views/public/plugins/semantic-ui/dist/components/loader.css +4 -4
  75. data/share/views/public/plugins/semantic-ui/dist/components/loader.min.css +2 -2
  76. data/share/views/public/plugins/semantic-ui/dist/components/menu.css +91 -50
  77. data/share/views/public/plugins/semantic-ui/dist/components/menu.min.css +1 -1
  78. data/share/views/public/plugins/semantic-ui/dist/components/message.css +46 -23
  79. data/share/views/public/plugins/semantic-ui/dist/components/message.min.css +2 -2
  80. data/share/views/public/plugins/semantic-ui/dist/components/modal.css +88 -56
  81. data/share/views/public/plugins/semantic-ui/dist/components/modal.js +117 -50
  82. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.css +2 -2
  83. data/share/views/public/plugins/semantic-ui/dist/components/modal.min.js +1 -1
  84. data/share/views/public/plugins/semantic-ui/dist/components/nag.css +3 -2
  85. data/share/views/public/plugins/semantic-ui/dist/components/nag.js +2 -2
  86. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.css +2 -2
  87. data/share/views/public/plugins/semantic-ui/dist/components/nag.min.js +1 -1
  88. data/share/views/public/plugins/semantic-ui/dist/components/placeholder.css +239 -0
  89. data/share/views/public/plugins/semantic-ui/dist/components/placeholder.min.css +9 -0
  90. data/share/views/public/plugins/semantic-ui/dist/components/popup.css +39 -20
  91. data/share/views/public/plugins/semantic-ui/dist/components/popup.js +64 -18
  92. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.css +2 -2
  93. data/share/views/public/plugins/semantic-ui/dist/components/popup.min.js +1 -1
  94. data/share/views/public/plugins/semantic-ui/dist/components/progress.css +3 -2
  95. data/share/views/public/plugins/semantic-ui/dist/components/progress.js +2 -2
  96. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.css +2 -2
  97. data/share/views/public/plugins/semantic-ui/dist/components/progress.min.js +1 -1
  98. data/share/views/public/plugins/semantic-ui/dist/components/rail.css +1 -1
  99. data/share/views/public/plugins/semantic-ui/dist/components/rail.min.css +1 -1
  100. data/share/views/public/plugins/semantic-ui/dist/components/rating.css +1 -1
  101. data/share/views/public/plugins/semantic-ui/dist/components/rating.js +2 -2
  102. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.css +1 -1
  103. data/share/views/public/plugins/semantic-ui/dist/components/rating.min.js +1 -1
  104. data/share/views/public/plugins/semantic-ui/dist/components/reset.css +13 -7
  105. data/share/views/public/plugins/semantic-ui/dist/components/reset.min.css +2 -2
  106. data/share/views/public/plugins/semantic-ui/dist/components/reveal.css +12 -1
  107. data/share/views/public/plugins/semantic-ui/dist/components/reveal.min.css +2 -2
  108. data/share/views/public/plugins/semantic-ui/dist/components/search.css +61 -24
  109. data/share/views/public/plugins/semantic-ui/dist/components/search.js +77 -23
  110. data/share/views/public/plugins/semantic-ui/dist/components/search.min.css +2 -2
  111. data/share/views/public/plugins/semantic-ui/dist/components/search.min.js +1 -1
  112. data/share/views/public/plugins/semantic-ui/dist/components/segment.css +101 -20
  113. data/share/views/public/plugins/semantic-ui/dist/components/segment.min.css +2 -2
  114. data/share/views/public/plugins/semantic-ui/dist/components/shape.css +3 -2
  115. data/share/views/public/plugins/semantic-ui/dist/components/shape.js +2 -2
  116. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.css +2 -2
  117. data/share/views/public/plugins/semantic-ui/dist/components/shape.min.js +1 -1
  118. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.css +5 -3
  119. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.js +2 -2
  120. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.css +2 -2
  121. data/share/views/public/plugins/semantic-ui/dist/components/sidebar.min.js +1 -1
  122. data/share/views/public/plugins/semantic-ui/dist/components/site.css +2 -1
  123. data/share/views/public/plugins/semantic-ui/dist/components/site.js +1 -1
  124. data/share/views/public/plugins/semantic-ui/dist/components/site.min.css +2 -2
  125. data/share/views/public/plugins/semantic-ui/dist/components/site.min.js +1 -1
  126. data/share/views/public/plugins/semantic-ui/dist/components/statistic.css +23 -26
  127. data/share/views/public/plugins/semantic-ui/dist/components/statistic.min.css +2 -2
  128. data/share/views/public/plugins/semantic-ui/dist/components/step.css +14 -11
  129. data/share/views/public/plugins/semantic-ui/dist/components/step.min.css +2 -2
  130. data/share/views/public/plugins/semantic-ui/dist/components/sticky.css +1 -1
  131. data/share/views/public/plugins/semantic-ui/dist/components/sticky.js +2 -2
  132. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.css +1 -1
  133. data/share/views/public/plugins/semantic-ui/dist/components/sticky.min.js +1 -1
  134. data/share/views/public/plugins/semantic-ui/dist/components/tab.css +3 -2
  135. data/share/views/public/plugins/semantic-ui/dist/components/tab.js +2 -2
  136. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.css +2 -2
  137. data/share/views/public/plugins/semantic-ui/dist/components/tab.min.js +1 -1
  138. data/share/views/public/plugins/semantic-ui/dist/components/table.css +56 -26
  139. data/share/views/public/plugins/semantic-ui/dist/components/table.min.css +2 -2
  140. data/share/views/public/plugins/semantic-ui/dist/components/transition.css +97 -2
  141. data/share/views/public/plugins/semantic-ui/dist/components/transition.js +2 -2
  142. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.css +2 -2
  143. data/share/views/public/plugins/semantic-ui/dist/components/transition.min.js +1 -1
  144. data/share/views/public/plugins/semantic-ui/dist/components/visibility.js +5 -5
  145. data/share/views/public/plugins/semantic-ui/dist/components/visibility.min.js +1 -1
  146. data/share/views/public/plugins/semantic-ui/dist/semantic.css +5301 -2120
  147. data/share/views/public/plugins/semantic-ui/dist/semantic.js +445 -873
  148. data/share/views/public/plugins/semantic-ui/dist/semantic.min.css +90 -82
  149. data/share/views/public/plugins/semantic-ui/dist/semantic.min.js +2 -10
  150. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
  151. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.svg +1008 -0
  152. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
  153. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.woff +0 -0
  154. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  155. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.eot +0 -0
  156. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.svg +1515 -2668
  157. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.ttf +0 -0
  158. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff +0 -0
  159. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  160. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
  161. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.svg +366 -0
  162. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
  163. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.woff +0 -0
  164. data/share/views/public/plugins/semantic-ui/dist/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  165. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe-content.js +729 -326
  166. data/share/views/public/plugins/semantic-ui/examples/assets/library/iframe.js +736 -326
  167. data/share/views/public/plugins/semantic-ui/examples/grid.html +0 -1
  168. data/share/views/public/plugins/semantic-ui/examples/responsive.html +4 -4
  169. data/share/views/public/plugins/semantic-ui/examples/sticky.html +1 -1
  170. data/share/views/public/plugins/semantic-ui/examples/theming.html +1 -0
  171. data/share/views/public/plugins/semantic-ui/package-lock.json +5608 -1608
  172. data/share/views/public/plugins/semantic-ui/package.json +24 -24
  173. data/share/views/public/plugins/semantic-ui/src/README.md +9 -7
  174. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/api.js +1 -1
  175. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/form.js +13 -13
  176. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visibility.js +4 -4
  177. data/share/views/public/plugins/semantic-ui/src/definitions/collections/form.less +2 -2
  178. data/share/views/public/plugins/semantic-ui/src/definitions/collections/grid.less +6 -6
  179. data/share/views/public/plugins/semantic-ui/src/definitions/collections/menu.less +15 -6
  180. data/share/views/public/plugins/semantic-ui/src/definitions/collections/table.less +7 -2
  181. data/share/views/public/plugins/semantic-ui/src/definitions/elements/button.less +137 -2
  182. data/share/views/public/plugins/semantic-ui/src/definitions/elements/header.less +1 -1
  183. data/share/views/public/plugins/semantic-ui/src/definitions/elements/icon.less +3 -3
  184. data/share/views/public/plugins/semantic-ui/src/definitions/elements/image.less +6 -2
  185. data/share/views/public/plugins/semantic-ui/src/definitions/elements/input.less +35 -35
  186. data/share/views/public/plugins/semantic-ui/src/definitions/elements/label.less +14 -13
  187. data/share/views/public/plugins/semantic-ui/src/definitions/elements/list.less +16 -14
  188. data/share/views/public/plugins/semantic-ui/src/definitions/elements/loader.less +0 -1
  189. data/share/views/public/plugins/semantic-ui/src/definitions/elements/placeholder.less +232 -0
  190. data/share/views/public/plugins/semantic-ui/src/definitions/elements/reveal.less +10 -0
  191. data/share/views/public/plugins/semantic-ui/src/definitions/elements/segment.less +54 -0
  192. data/share/views/public/plugins/semantic-ui/src/definitions/globals/site.less +1 -0
  193. data/share/views/public/plugins/semantic-ui/src/definitions/modules/accordion.js +6 -3
  194. data/share/views/public/plugins/semantic-ui/src/definitions/modules/checkbox.js +1 -1
  195. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.js +28 -3
  196. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dimmer.less +34 -9
  197. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.js +98 -22
  198. data/share/views/public/plugins/semantic-ui/src/definitions/modules/dropdown.less +14 -2
  199. data/share/views/public/plugins/semantic-ui/src/definitions/modules/embed.js +10 -0
  200. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.js +116 -49
  201. data/share/views/public/plugins/semantic-ui/src/definitions/modules/modal.less +46 -26
  202. data/share/views/public/plugins/semantic-ui/src/definitions/modules/nag.js +1 -1
  203. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.js +63 -17
  204. data/share/views/public/plugins/semantic-ui/src/definitions/modules/popup.less +1 -1
  205. data/share/views/public/plugins/semantic-ui/src/definitions/modules/progress.js +1 -1
  206. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.js +1 -1
  207. data/share/views/public/plugins/semantic-ui/src/definitions/modules/rating.less +1 -1
  208. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.js +76 -22
  209. data/share/views/public/plugins/semantic-ui/src/definitions/modules/search.less +48 -17
  210. data/share/views/public/plugins/semantic-ui/src/definitions/modules/shape.js +1 -1
  211. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sidebar.js +1 -1
  212. data/share/views/public/plugins/semantic-ui/src/definitions/modules/sticky.js +1 -1
  213. data/share/views/public/plugins/semantic-ui/src/definitions/modules/tab.js +1 -1
  214. data/share/views/public/plugins/semantic-ui/src/definitions/modules/transition.js +1 -1
  215. data/share/views/public/plugins/semantic-ui/src/definitions/views/statistic.less +0 -3
  216. data/share/views/public/plugins/semantic-ui/src/theme.config.example +48 -47
  217. data/share/views/public/plugins/semantic-ui/src/theme.less +1 -1
  218. data/share/views/public/plugins/semantic-ui/src/themes/basic/elements/button.variables +1 -1
  219. data/share/views/public/plugins/semantic-ui/src/themes/basic/modules/progress.variables +2 -2
  220. data/share/views/public/plugins/semantic-ui/src/themes/bookish/elements/header.variables +2 -2
  221. data/share/views/public/plugins/semantic-ui/src/themes/bootstrap3/elements/button.variables +2 -2
  222. data/share/views/public/plugins/semantic-ui/src/themes/chubby/elements/button.variables +1 -1
  223. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.eot +0 -0
  224. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.svg +1008 -0
  225. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
  226. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.woff +0 -0
  227. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  228. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.eot +0 -0
  229. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.svg +1515 -2668
  230. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.ttf +0 -0
  231. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff +0 -0
  232. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/icons.woff2 +0 -0
  233. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.eot +0 -0
  234. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.svg +366 -0
  235. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
  236. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.woff +0 -0
  237. data/share/views/public/plugins/semantic-ui/src/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  238. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/breadcrumb.variables +1 -1
  239. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/form.variables +1 -1
  240. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/menu.variables +22 -22
  241. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/message.variables +1 -1
  242. data/share/views/public/plugins/semantic-ui/src/themes/default/collections/table.variables +8 -7
  243. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/button.variables +6 -4
  244. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/divider.variables +2 -2
  245. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/flag.overrides +5 -0
  246. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/header.variables +1 -1
  247. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.overrides +1630 -905
  248. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/icon.variables +39 -7
  249. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/label.variables +10 -10
  250. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/list.variables +1 -1
  251. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/loader.variables +1 -0
  252. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/placeholder.overrides +3 -0
  253. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/placeholder.variables +55 -0
  254. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/reveal.variables +2 -1
  255. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/segment.variables +28 -13
  256. data/share/views/public/plugins/semantic-ui/src/themes/default/elements/step.variables +4 -4
  257. data/share/views/public/plugins/semantic-ui/src/themes/default/globals/site.variables +192 -179
  258. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.overrides +1 -1
  259. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/accordion.variables +1 -1
  260. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/checkbox.variables +2 -2
  261. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dimmer.variables +2 -5
  262. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.overrides +11 -14
  263. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/dropdown.variables +12 -8
  264. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/modal.variables +33 -29
  265. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/popup.variables +4 -3
  266. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/progress.variables +2 -2
  267. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/search.variables +8 -5
  268. data/share/views/public/plugins/semantic-ui/src/themes/default/modules/transition.overrides +54 -2
  269. data/share/views/public/plugins/semantic-ui/src/themes/default/views/ad.variables +2 -2
  270. data/share/views/public/plugins/semantic-ui/src/themes/default/views/card.variables +1 -1
  271. data/share/views/public/plugins/semantic-ui/src/themes/default/views/comment.variables +1 -1
  272. data/share/views/public/plugins/semantic-ui/src/themes/default/views/feed.variables +4 -4
  273. data/share/views/public/plugins/semantic-ui/src/themes/default/views/item.variables +1 -1
  274. data/share/views/public/plugins/semantic-ui/src/themes/default/views/statistic.variables +8 -7
  275. data/share/views/public/plugins/semantic-ui/tasks/admin/components/create.js +0 -1
  276. data/share/views/public/plugins/semantic-ui/tasks/admin/components/init.js +2 -2
  277. data/share/views/public/plugins/semantic-ui/tasks/admin/components/update.js +1 -1
  278. data/share/views/public/plugins/semantic-ui/tasks/admin/distributions/update.js +1 -1
  279. data/share/views/public/plugins/semantic-ui/tasks/admin/register.js +1 -1
  280. data/share/views/public/plugins/semantic-ui/tasks/build/css.js +1 -1
  281. data/share/views/public/plugins/semantic-ui/tasks/build/javascript.js +2 -2
  282. data/share/views/public/plugins/semantic-ui/tasks/collections/internal.js +1 -1
  283. data/share/views/public/plugins/semantic-ui/tasks/config/admin/release.js +1 -0
  284. data/share/views/public/plugins/semantic-ui/tasks/config/defaults.js +1 -0
  285. data/share/views/public/plugins/semantic-ui/tasks/config/project/install.js +2 -7
  286. data/share/views/public/plugins/semantic-ui/tasks/config/tasks.js +6 -2
  287. data/share/views/public/plugins/semantic-ui/tasks/docs/build.js +2 -2
  288. data/share/views/public/plugins/semantic-ui/tasks/docs/serve.js +4 -4
  289. data/share/views/public/plugins/semantic-ui/tasks/install.js +2 -2
  290. data/share/views/public/plugins/semantic-ui/tasks/rtl/build.js +1 -1
  291. data/share/views/public/plugins/semantic-ui/tasks/rtl/watch.js +5 -5
  292. data/share/views/public/plugins/semantic-ui/tasks/watch.js +4 -4
  293. metadata +28 -12
  294. data/share/views/public/plugins/semantic-ui/dist/components/colorize.js +0 -274
  295. data/share/views/public/plugins/semantic-ui/dist/components/colorize.min.js +0 -11
  296. data/share/views/public/plugins/semantic-ui/dist/components/state.js +0 -708
  297. data/share/views/public/plugins/semantic-ui/dist/components/state.min.js +0 -1
  298. data/share/views/public/plugins/semantic-ui/dist/components/visit.js +0 -517
  299. data/share/views/public/plugins/semantic-ui/dist/components/visit.min.js +0 -11
  300. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/colorize.js +0 -280
  301. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/state.js +0 -708
  302. data/share/views/public/plugins/semantic-ui/src/definitions/behaviors/visit.js +0 -525
@@ -1,5 +1,5 @@
1
1
  /*
2
- * # Semantic UI - 2.2.12
2
+ * # Semantic UI - 2.4.1
3
3
  * https://github.com/Semantic-Org/Semantic-UI
4
4
  * http://www.semantic-ui.com/
5
5
  *
@@ -9,7 +9,7 @@
9
9
  *
10
10
  */
11
11
  /*!
12
- * # Semantic UI 2.2.12 - Site
12
+ * # Semantic UI 2.4.1 - Site
13
13
  * http://github.com/semantic-org/semantic-ui/
14
14
  *
15
15
  *
@@ -497,7 +497,7 @@ $.extend($.expr[ ":" ], {
497
497
  })( jQuery, window, document );
498
498
 
499
499
  /*!
500
- * # Semantic UI 2.2.12 - Form Validation
500
+ * # Semantic UI 2.4.1 - Form Validation
501
501
  * http://github.com/semantic-org/semantic-ui/
502
502
  *
503
503
  *
@@ -508,7 +508,7 @@ $.extend($.expr[ ":" ], {
508
508
 
509
509
  ;(function ($, window, document, undefined) {
510
510
 
511
- "use strict";
511
+ 'use strict';
512
512
 
513
513
  window = (typeof window != 'undefined' && window.Math == Math)
514
514
  ? window
@@ -856,7 +856,7 @@ $.fn.form = function(parameters) {
856
856
  module.validate.field( validationRules );
857
857
  }
858
858
  }
859
- else if(settings.on == 'blur' || settings.on == 'change') {
859
+ else if(settings.on == 'blur') {
860
860
  if(validationRules) {
861
861
  module.validate.field( validationRules );
862
862
  }
@@ -933,16 +933,16 @@ $.fn.form = function(parameters) {
933
933
  var
934
934
  ruleName = module.get.ruleName(rule),
935
935
  ancillary = module.get.ancillaryValue(rule),
936
- prompt = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
936
+ $field = module.get.field(field.identifier),
937
+ value = $field.val(),
938
+ prompt = $.isFunction(rule.prompt)
939
+ ? rule.prompt(value)
940
+ : rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
937
941
  requiresValue = (prompt.search('{value}') !== -1),
938
942
  requiresName = (prompt.search('{name}') !== -1),
939
943
  $label,
940
- $field,
941
944
  name
942
945
  ;
943
- if(requiresName || requiresValue) {
944
- $field = module.get.field(field.identifier);
945
- }
946
946
  if(requiresValue) {
947
947
  prompt = prompt.replace('{value}', $field.val());
948
948
  }
@@ -1101,9 +1101,9 @@ $.fn.form = function(parameters) {
1101
1101
  }
1102
1102
  else {
1103
1103
  if(isRadio) {
1104
- if(values[name] === undefined) {
1104
+ if(values[name] === undefined || values[name] == false) {
1105
1105
  values[name] = (isChecked)
1106
- ? true
1106
+ ? value || true
1107
1107
  : false
1108
1108
  ;
1109
1109
  }
@@ -1761,10 +1761,10 @@ $.fn.form.settings = {
1761
1761
  isExactly : '{name} must be exactly "{ruleValue}"',
1762
1762
  not : '{name} cannot be set to "{ruleValue}"',
1763
1763
  notExactly : '{name} cannot be set to exactly "{ruleValue}"',
1764
- contain : '{name} cannot contain "{ruleValue}"',
1765
- containExactly : '{name} cannot contain exactly "{ruleValue}"',
1766
- doesntContain : '{name} must contain "{ruleValue}"',
1767
- doesntContainExactly : '{name} must contain exactly "{ruleValue}"',
1764
+ contain : '{name} must contain "{ruleValue}"',
1765
+ containExactly : '{name} must contain exactly "{ruleValue}"',
1766
+ doesntContain : '{name} cannot contain "{ruleValue}"',
1767
+ doesntContainExactly : '{name} cannot contain exactly "{ruleValue}"',
1768
1768
  minLength : '{name} must be at least {ruleValue} characters',
1769
1769
  length : '{name} must be at least {ruleValue} characters',
1770
1770
  exactLength : '{name} must be exactly {ruleValue} characters',
@@ -2204,7 +2204,7 @@ $.fn.form.settings = {
2204
2204
  })( jQuery, window, document );
2205
2205
 
2206
2206
  /*!
2207
- * # Semantic UI 2.2.12 - Accordion
2207
+ * # Semantic UI 2.4.1 - Accordion
2208
2208
  * http://github.com/semantic-org/semantic-ui/
2209
2209
  *
2210
2210
  *
@@ -2215,7 +2215,7 @@ $.fn.form.settings = {
2215
2215
 
2216
2216
  ;(function ($, window, document, undefined) {
2217
2217
 
2218
- "use strict";
2218
+ 'use strict';
2219
2219
 
2220
2220
  window = (typeof window != 'undefined' && window.Math == Math)
2221
2221
  ? window
@@ -2374,6 +2374,7 @@ $.fn.accordion = function(parameters) {
2374
2374
  }
2375
2375
  module.debug('Opening accordion content', $activeTitle);
2376
2376
  settings.onOpening.call($activeContent);
2377
+ settings.onChanging.call($activeContent);
2377
2378
  if(settings.exclusive) {
2378
2379
  module.closeOthers.call($activeTitle);
2379
2380
  }
@@ -2437,6 +2438,7 @@ $.fn.accordion = function(parameters) {
2437
2438
  if((isActive || isOpening) && !isClosing) {
2438
2439
  module.debug('Closing accordion content', $activeContent);
2439
2440
  settings.onClosing.call($activeContent);
2441
+ settings.onChanging.call($activeContent);
2440
2442
  $activeTitle
2441
2443
  .removeClass(className.active)
2442
2444
  ;
@@ -2779,10 +2781,11 @@ $.fn.accordion.settings = {
2779
2781
  duration : 350, // duration of animation
2780
2782
  easing : 'easeOutQuad', // easing equation for animation
2781
2783
 
2782
-
2783
2784
  onOpening : function(){}, // callback before open animation
2784
- onOpen : function(){}, // callback after open animation
2785
2785
  onClosing : function(){}, // callback before closing animation
2786
+ onChanging : function(){}, // callback before closing or opening animation
2787
+
2788
+ onOpen : function(){}, // callback after open animation
2786
2789
  onClose : function(){}, // callback after closing animation
2787
2790
  onChange : function(){}, // callback after closing or opening animation
2788
2791
 
@@ -2815,7 +2818,7 @@ $.extend( $.easing, {
2815
2818
 
2816
2819
 
2817
2820
  /*!
2818
- * # Semantic UI 2.2.12 - Checkbox
2821
+ * # Semantic UI 2.4.1 - Checkbox
2819
2822
  * http://github.com/semantic-org/semantic-ui/
2820
2823
  *
2821
2824
  *
@@ -2826,7 +2829,7 @@ $.extend( $.easing, {
2826
2829
 
2827
2830
  ;(function ($, window, document, undefined) {
2828
2831
 
2829
- "use strict";
2832
+ 'use strict';
2830
2833
 
2831
2834
  window = (typeof window != 'undefined' && window.Math == Math)
2832
2835
  ? window
@@ -3647,7 +3650,7 @@ $.fn.checkbox.settings = {
3647
3650
  })( jQuery, window, document );
3648
3651
 
3649
3652
  /*!
3650
- * # Semantic UI 2.2.12 - Dimmer
3653
+ * # Semantic UI 2.4.1 - Dimmer
3651
3654
  * http://github.com/semantic-org/semantic-ui/
3652
3655
  *
3653
3656
  *
@@ -3658,7 +3661,7 @@ $.fn.checkbox.settings = {
3658
3661
 
3659
3662
  ;(function ($, window, document, undefined) {
3660
3663
 
3661
- "use strict";
3664
+ 'use strict';
3662
3665
 
3663
3666
  window = (typeof window != 'undefined' && window.Math == Math)
3664
3667
  ? window
@@ -3731,7 +3734,6 @@ $.fn.dimmer = function(parameters) {
3731
3734
  else {
3732
3735
  $dimmer = module.create();
3733
3736
  }
3734
- module.set.variation();
3735
3737
  }
3736
3738
  },
3737
3739
 
@@ -3805,7 +3807,7 @@ $.fn.dimmer = function(parameters) {
3805
3807
  module.hide();
3806
3808
  event.stopImmediatePropagation();
3807
3809
  }
3808
- }
3810
+ },
3809
3811
  },
3810
3812
 
3811
3813
  addContent: function(element) {
@@ -3838,6 +3840,7 @@ $.fn.dimmer = function(parameters) {
3838
3840
  : function(){}
3839
3841
  ;
3840
3842
  module.debug('Showing dimmer', $dimmer, settings);
3843
+ module.set.variation();
3841
3844
  if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) {
3842
3845
  module.animate.show(callback);
3843
3846
  settings.onShow.call(element);
@@ -3881,11 +3884,22 @@ $.fn.dimmer = function(parameters) {
3881
3884
  : function(){}
3882
3885
  ;
3883
3886
  if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {
3887
+ if(settings.useFlex) {
3888
+ module.debug('Using flex dimmer');
3889
+ module.remove.legacy();
3890
+ }
3891
+ else {
3892
+ module.debug('Using legacy non-flex dimmer');
3893
+ module.set.legacy();
3894
+ }
3884
3895
  if(settings.opacity !== 'auto') {
3885
3896
  module.set.opacity();
3886
3897
  }
3887
3898
  $dimmer
3888
3899
  .transition({
3900
+ displayType : settings.useFlex
3901
+ ? 'flex'
3902
+ : 'block',
3889
3903
  animation : settings.transition + ' in',
3890
3904
  queue : false,
3891
3905
  duration : module.get.duration(),
@@ -3930,6 +3944,9 @@ $.fn.dimmer = function(parameters) {
3930
3944
  module.verbose('Hiding dimmer with css');
3931
3945
  $dimmer
3932
3946
  .transition({
3947
+ displayType : settings.useFlex
3948
+ ? 'flex'
3949
+ : 'block',
3933
3950
  animation : settings.transition + ' out',
3934
3951
  queue : false,
3935
3952
  duration : module.get.duration(),
@@ -3938,6 +3955,7 @@ $.fn.dimmer = function(parameters) {
3938
3955
  module.remove.dimmed();
3939
3956
  },
3940
3957
  onComplete : function() {
3958
+ module.remove.variation();
3941
3959
  module.remove.active();
3942
3960
  callback();
3943
3961
  }
@@ -4051,6 +4069,9 @@ $.fn.dimmer = function(parameters) {
4051
4069
  module.debug('Setting opacity to', opacity);
4052
4070
  $dimmer.css('background-color', color);
4053
4071
  },
4072
+ legacy: function() {
4073
+ $dimmer.addClass(className.legacy);
4074
+ },
4054
4075
  active: function() {
4055
4076
  $dimmer.addClass(className.active);
4056
4077
  },
@@ -4080,6 +4101,9 @@ $.fn.dimmer = function(parameters) {
4080
4101
  .removeClass(className.active)
4081
4102
  ;
4082
4103
  },
4104
+ legacy: function() {
4105
+ $dimmer.removeClass(className.legacy);
4106
+ },
4083
4107
  dimmed: function() {
4084
4108
  $dimmable.removeClass(className.dimmed);
4085
4109
  },
@@ -4293,6 +4317,9 @@ $.fn.dimmer.settings = {
4293
4317
  verbose : false,
4294
4318
  performance : true,
4295
4319
 
4320
+ // whether should use flex layout
4321
+ useFlex : true,
4322
+
4296
4323
  // name to distinguish between multiple dimmers in context
4297
4324
  dimmerName : false,
4298
4325
 
@@ -4336,6 +4363,7 @@ $.fn.dimmer.settings = {
4336
4363
  dimmer : 'dimmer',
4337
4364
  disabled : 'disabled',
4338
4365
  hide : 'hide',
4366
+ legacy : 'legacy',
4339
4367
  pageDimmer : 'page',
4340
4368
  show : 'show'
4341
4369
  },
@@ -4356,7 +4384,7 @@ $.fn.dimmer.settings = {
4356
4384
  })( jQuery, window, document );
4357
4385
 
4358
4386
  /*!
4359
- * # Semantic UI 2.2.12 - Dropdown
4387
+ * # Semantic UI 2.4.1 - Dropdown
4360
4388
  * http://github.com/semantic-org/semantic-ui/
4361
4389
  *
4362
4390
  *
@@ -4367,7 +4395,7 @@ $.fn.dimmer.settings = {
4367
4395
 
4368
4396
  ;(function ($, window, document, undefined) {
4369
4397
 
4370
- "use strict";
4398
+ 'use strict';
4371
4399
 
4372
4400
  window = (typeof window != 'undefined' && window.Math == Math)
4373
4401
  ? window
@@ -4853,7 +4881,7 @@ $.fn.dropdown = function(parameters) {
4853
4881
  ? callback
4854
4882
  : function(){}
4855
4883
  ;
4856
- if( module.is.active() ) {
4884
+ if( module.is.active() && !module.is.animatingOutward() ) {
4857
4885
  module.debug('Hiding dropdown');
4858
4886
  if(settings.onHide.call(element) !== false) {
4859
4887
  module.animate.hide(function() {
@@ -4962,7 +4990,6 @@ $.fn.dropdown = function(parameters) {
4962
4990
  else {
4963
4991
  if(settings.on == 'click') {
4964
4992
  $module
4965
- .on('click' + eventNamespace, selector.icon, module.event.icon.click)
4966
4993
  .on('click' + eventNamespace, module.event.test.toggle)
4967
4994
  ;
4968
4995
  }
@@ -4978,6 +5005,7 @@ $.fn.dropdown = function(parameters) {
4978
5005
  ;
4979
5006
  }
4980
5007
  $module
5008
+ .on('click' + eventNamespace, selector.icon, module.event.icon.click)
4981
5009
  .on('mousedown' + eventNamespace, module.event.mousedown)
4982
5010
  .on('mouseup' + eventNamespace, module.event.mouseup)
4983
5011
  .on('focus' + eventNamespace, module.event.focus)
@@ -5111,10 +5139,19 @@ $.fn.dropdown = function(parameters) {
5111
5139
  callback();
5112
5140
  },
5113
5141
  onSuccess : function(response) {
5114
- module.remove.message();
5115
- module.setup.menu({
5116
- values: response[fields.remoteValues]
5117
- });
5142
+ var
5143
+ values = response[fields.remoteValues],
5144
+ hasRemoteValues = ($.isArray(values) && values.length > 0)
5145
+ ;
5146
+ if(hasRemoteValues) {
5147
+ module.remove.message();
5148
+ module.setup.menu({
5149
+ values: response[fields.remoteValues]
5150
+ });
5151
+ }
5152
+ else {
5153
+ module.add.message(message.noResults);
5154
+ }
5118
5155
  callback();
5119
5156
  }
5120
5157
  }
@@ -5367,7 +5404,12 @@ $.fn.dropdown = function(parameters) {
5367
5404
  },
5368
5405
  icon: {
5369
5406
  click: function(event) {
5370
- module.toggle();
5407
+ if($icon.hasClass(className.clear)) {
5408
+ module.clear();
5409
+ }
5410
+ else if (module.can.click()) {
5411
+ module.toggle();
5412
+ }
5371
5413
  }
5372
5414
  },
5373
5415
  text: {
@@ -5974,7 +6016,7 @@ $.fn.dropdown = function(parameters) {
5974
6016
  : text
5975
6017
  ;
5976
6018
  if( module.can.activate( $(element) ) ) {
5977
- module.set.value(value, $(element));
6019
+ module.set.value(value, text, $(element));
5978
6020
  if(module.is.multiple() && !module.is.allFiltered()) {
5979
6021
  return;
5980
6022
  }
@@ -5994,7 +6036,7 @@ $.fn.dropdown = function(parameters) {
5994
6036
  },
5995
6037
 
5996
6038
  hide: function(text, value, element) {
5997
- module.set.value(value, text);
6039
+ module.set.value(value, text, $(element));
5998
6040
  module.hideAndClear();
5999
6041
  }
6000
6042
 
@@ -6640,7 +6682,7 @@ $.fn.dropdown = function(parameters) {
6640
6682
  var
6641
6683
  length = module.get.query().length
6642
6684
  ;
6643
- $search.val( text.substr(0 , length));
6685
+ $search.val( text.substr(0, length));
6644
6686
  },
6645
6687
  scrollPosition: function($item, forceScroll) {
6646
6688
  var
@@ -6792,7 +6834,6 @@ $.fn.dropdown = function(parameters) {
6792
6834
  var
6793
6835
  escapedValue = module.escape.value(value),
6794
6836
  hasInput = ($input.length > 0),
6795
- isAddition = !module.has.value(value),
6796
6837
  currentValue = module.get.values(),
6797
6838
  stringValue = (value !== undefined)
6798
6839
  ? String(value)
@@ -6830,6 +6871,15 @@ $.fn.dropdown = function(parameters) {
6830
6871
  $module.data(metadata.value, stringValue);
6831
6872
  }
6832
6873
  }
6874
+ if(module.is.single() && settings.clearable) {
6875
+ // treat undefined or '' as empty
6876
+ if(!escapedValue) {
6877
+ module.remove.clearable();
6878
+ }
6879
+ else {
6880
+ module.set.clearable();
6881
+ }
6882
+ }
6833
6883
  if(settings.fireOnInit === false && module.is.initialLoad()) {
6834
6884
  module.verbose('No callback on initial load', settings.onChange);
6835
6885
  }
@@ -6895,8 +6945,8 @@ $.fn.dropdown = function(parameters) {
6895
6945
  module.save.remoteData(selectedText, selectedValue);
6896
6946
  }
6897
6947
  if(settings.useLabels) {
6898
- module.add.value(selectedValue, selectedText, $selected);
6899
6948
  module.add.label(selectedValue, selectedText, shouldAnimate);
6949
+ module.add.value(selectedValue, selectedText, $selected);
6900
6950
  module.set.activeItem($selected);
6901
6951
  module.filterActive();
6902
6952
  module.select.nextAvailable($selectedItem);
@@ -6925,7 +6975,10 @@ $.fn.dropdown = function(parameters) {
6925
6975
  }
6926
6976
  })
6927
6977
  ;
6928
- }
6978
+ },
6979
+ clearable: function() {
6980
+ $icon.addClass(className.clear);
6981
+ },
6929
6982
  },
6930
6983
 
6931
6984
  add: {
@@ -6937,6 +6990,9 @@ $.fn.dropdown = function(parameters) {
6937
6990
  escapedValue = module.escape.value(value),
6938
6991
  $label
6939
6992
  ;
6993
+ if(settings.ignoreCase) {
6994
+ escapedValue = escapedValue.toLowerCase();
6995
+ }
6940
6996
  $label = $('<a />')
6941
6997
  .addClass(className.label)
6942
6998
  .attr('data-' + metadata.value, escapedValue)
@@ -6945,7 +7001,7 @@ $.fn.dropdown = function(parameters) {
6945
7001
  $label = settings.onLabelCreate.call($label, escapedValue, text);
6946
7002
 
6947
7003
  if(module.has.label(value)) {
6948
- module.debug('Label already exists, skipping', escapedValue);
7004
+ module.debug('User selection already exists, skipping', escapedValue);
6949
7005
  return;
6950
7006
  }
6951
7007
  if(settings.label.variation) {
@@ -7084,6 +7140,10 @@ $.fn.dropdown = function(parameters) {
7084
7140
  currentValue = module.get.values(),
7085
7141
  newValue
7086
7142
  ;
7143
+ if(module.has.value(addedValue)) {
7144
+ module.debug('Value already selected');
7145
+ return;
7146
+ }
7087
7147
  if(addedValue === '') {
7088
7148
  module.debug('Cannot select blank values from multiselect');
7089
7149
  return;
@@ -7116,7 +7176,7 @@ $.fn.dropdown = function(parameters) {
7116
7176
  }
7117
7177
  module.set.value(newValue, addedValue, addedText, $selectedItem);
7118
7178
  module.check.maxSelections();
7119
- }
7179
+ },
7120
7180
  },
7121
7181
 
7122
7182
  remove: {
@@ -7341,6 +7401,9 @@ $.fn.dropdown = function(parameters) {
7341
7401
  .removeAttr('tabindex')
7342
7402
  ;
7343
7403
  }
7404
+ },
7405
+ clearable: function() {
7406
+ $icon.removeClass(className.clear);
7344
7407
  }
7345
7408
  },
7346
7409
 
@@ -7397,6 +7460,9 @@ $.fn.dropdown = function(parameters) {
7397
7460
  escapedValue = module.escape.value(value),
7398
7461
  $labels = $module.find(selector.label)
7399
7462
  ;
7463
+ if(settings.ignoreCase) {
7464
+ escapedValue = escapedValue.toLowerCase();
7465
+ }
7400
7466
  return ($labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) +'"]').length > 0);
7401
7467
  },
7402
7468
  maxSelections: function() {
@@ -7415,6 +7481,12 @@ $.fn.dropdown = function(parameters) {
7415
7481
  return (module.get.query() !== '');
7416
7482
  },
7417
7483
  value: function(value) {
7484
+ return (settings.ignoreCase)
7485
+ ? module.has.valueIgnoringCase(value)
7486
+ : module.has.valueMatchingCase(value)
7487
+ ;
7488
+ },
7489
+ valueMatchingCase: function(value) {
7418
7490
  var
7419
7491
  values = module.get.values(),
7420
7492
  hasValue = $.isArray(values)
@@ -7425,6 +7497,22 @@ $.fn.dropdown = function(parameters) {
7425
7497
  ? true
7426
7498
  : false
7427
7499
  ;
7500
+ },
7501
+ valueIgnoringCase: function(value) {
7502
+ var
7503
+ values = module.get.values(),
7504
+ hasValue = false
7505
+ ;
7506
+ if(!$.isArray(values)) {
7507
+ values = [values];
7508
+ }
7509
+ $.each(values, function(index, existingValue) {
7510
+ if(String(value).toLowerCase() == String(existingValue).toLowerCase()) {
7511
+ hasValue = true;
7512
+ return false;
7513
+ }
7514
+ });
7515
+ return hasValue;
7428
7516
  }
7429
7517
  },
7430
7518
 
@@ -7432,6 +7520,12 @@ $.fn.dropdown = function(parameters) {
7432
7520
  active: function() {
7433
7521
  return $module.hasClass(className.active);
7434
7522
  },
7523
+ animatingInward: function() {
7524
+ return $menu.transition('is inward');
7525
+ },
7526
+ animatingOutward: function() {
7527
+ return $menu.transition('is outward');
7528
+ },
7435
7529
  bubbledLabelClick: function(event) {
7436
7530
  return $(event.target).is('select, input') && $module.closest('label').length > 0;
7437
7531
  },
@@ -7567,6 +7661,9 @@ $.fn.dropdown = function(parameters) {
7567
7661
  ;
7568
7662
  calculations = {
7569
7663
  context: {
7664
+ offset : ($context.get(0) === window)
7665
+ ? { top: 0, left: 0}
7666
+ : $context.offset(),
7570
7667
  scrollTop : $context.scrollTop(),
7571
7668
  height : $context.outerHeight()
7572
7669
  },
@@ -7579,8 +7676,8 @@ $.fn.dropdown = function(parameters) {
7579
7676
  calculations.menu.offset.top += calculations.context.scrollTop;
7580
7677
  }
7581
7678
  onScreen = {
7582
- above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,
7583
- below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height
7679
+ above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
7680
+ below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height
7584
7681
  };
7585
7682
  if(onScreen.below) {
7586
7683
  module.verbose('Dropdown can fit in context downward', onScreen);
@@ -7609,6 +7706,9 @@ $.fn.dropdown = function(parameters) {
7609
7706
  ;
7610
7707
  calculations = {
7611
7708
  context: {
7709
+ offset : ($context.get(0) === window)
7710
+ ? { top: 0, left: 0}
7711
+ : $context.offset(),
7612
7712
  scrollLeft : $context.scrollLeft(),
7613
7713
  width : $context.outerWidth()
7614
7714
  },
@@ -7620,7 +7720,7 @@ $.fn.dropdown = function(parameters) {
7620
7720
  if(module.is.horizontallyScrollableContext()) {
7621
7721
  calculations.menu.offset.left += calculations.context.scrollLeft;
7622
7722
  }
7623
- isOffscreenRight = (calculations.menu.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
7723
+ isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
7624
7724
  if(isOffscreenRight) {
7625
7725
  module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
7626
7726
  canOpenRightward = false;
@@ -7726,7 +7826,7 @@ $.fn.dropdown = function(parameters) {
7726
7826
  duration : settings.duration,
7727
7827
  debug : settings.debug,
7728
7828
  verbose : settings.verbose,
7729
- queue : true,
7829
+ queue : false,
7730
7830
  onStart : start,
7731
7831
  onComplete : function() {
7732
7832
  callback.call(element);
@@ -7991,6 +8091,8 @@ $.fn.dropdown.settings = {
7991
8091
 
7992
8092
  values : false, // specify values to use for dropdown
7993
8093
 
8094
+ clearable : false, // whether the value of the dropdown can be cleared
8095
+
7994
8096
  apiSettings : false,
7995
8097
  selectOnKeydown : true, // Whether selection should occur automatically when keyboard shortcuts used
7996
8098
  minCharacters : 0, // Minimum characters required to trigger API call
@@ -8014,7 +8116,8 @@ $.fn.dropdown.settings = {
8014
8116
  forceSelection : true, // force a choice on blur with search selection
8015
8117
 
8016
8118
  allowAdditions : false, // whether multiple select should allow user added values
8017
- hideAdditions : true, // whether or not to hide special message prompting a user they can enter a value
8119
+ ignoreCase : false, // whether to consider values not matching in case to be the same
8120
+ hideAdditions : true, // whether or not to hide special message prompting a user they can enter a value
8018
8121
 
8019
8122
  maxSelections : false, // When set to a number limits the number of selections to this count
8020
8123
  useLabels : true, // whether multiple select should filter currently active selections from choices
@@ -8142,6 +8245,7 @@ $.fn.dropdown.settings = {
8142
8245
  active : 'active',
8143
8246
  addition : 'addition',
8144
8247
  animating : 'animating',
8248
+ clear : 'clear',
8145
8249
  disabled : 'disabled',
8146
8250
  empty : 'empty',
8147
8251
  dropdown : 'ui dropdown',
@@ -8208,7 +8312,7 @@ $.fn.dropdown.settings.templates = {
8208
8312
  ? 'disabled '
8209
8313
  : ''
8210
8314
  ;
8211
- html += '<div class="'+ maybeDisabled +'item" data-value="' + option[fields.value] + '"' + maybeText + '>'
8315
+ html += '<div class="'+ maybeDisabled +'item" data-value="' + option[fields.value] + '"' + maybeText + '>';
8212
8316
  html += option[fields.name];
8213
8317
  html += '</div>';
8214
8318
  });
@@ -8236,7 +8340,7 @@ $.fn.dropdown.settings.templates = {
8236
8340
  })( jQuery, window, document );
8237
8341
 
8238
8342
  /*!
8239
- * # Semantic UI 2.2.12 - Embed
8343
+ * # Semantic UI 2.4.1 - Embed
8240
8344
  * http://github.com/semantic-org/semantic-ui/
8241
8345
  *
8242
8346
  *
@@ -8418,6 +8522,7 @@ $.fn.embed = function(parameters) {
8418
8522
  // clears embed
8419
8523
  reset: function() {
8420
8524
  module.debug('Clearing embed and showing placeholder');
8525
+ module.remove.data();
8421
8526
  module.remove.active();
8422
8527
  module.remove.embed();
8423
8528
  module.showPlaceholder();
@@ -8537,6 +8642,15 @@ $.fn.embed = function(parameters) {
8537
8642
  },
8538
8643
 
8539
8644
  remove: {
8645
+ data: function() {
8646
+ $module
8647
+ .removeData(metadata.id)
8648
+ .removeData(metadata.icon)
8649
+ .removeData(metadata.placeholder)
8650
+ .removeData(metadata.source)
8651
+ .removeData(metadata.url)
8652
+ ;
8653
+ },
8540
8654
  active: function() {
8541
8655
  $module.removeClass(className.active);
8542
8656
  },
@@ -8933,7 +9047,7 @@ $.fn.embed.settings = {
8933
9047
  })( jQuery, window, document );
8934
9048
 
8935
9049
  /*!
8936
- * # Semantic UI 2.2.12 - Modal
9050
+ * # Semantic UI 2.4.1 - Modal
8937
9051
  * http://github.com/semantic-org/semantic-ui/
8938
9052
  *
8939
9053
  *
@@ -8944,7 +9058,7 @@ $.fn.embed.settings = {
8944
9058
 
8945
9059
  ;(function ($, window, document, undefined) {
8946
9060
 
8947
- "use strict";
9061
+ 'use strict';
8948
9062
 
8949
9063
  window = (typeof window != 'undefined' && window.Math == Math)
8950
9064
  ? window
@@ -9042,6 +9156,9 @@ $.fn.modal = function(parameters) {
9042
9156
  var
9043
9157
  defaultSettings = {
9044
9158
  debug : settings.debug,
9159
+ variation : settings.centered
9160
+ ? false
9161
+ : 'top aligned',
9045
9162
  dimmerName : 'modals'
9046
9163
  },
9047
9164
  dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)
@@ -9062,7 +9179,7 @@ $.fn.modal = function(parameters) {
9062
9179
  $dimmer = $dimmable.dimmer('get dimmer');
9063
9180
  },
9064
9181
  id: function() {
9065
- id = (Math.random().toString(16) + '000000000').substr(2,8);
9182
+ id = (Math.random().toString(16) + '000000000').substr(2, 8);
9066
9183
  elementEventNamespace = '.' + id;
9067
9184
  module.verbose('Creating unique id for element', id);
9068
9185
  }
@@ -9097,9 +9214,11 @@ $.fn.modal = function(parameters) {
9097
9214
  refresh: function() {
9098
9215
  module.remove.scrolling();
9099
9216
  module.cacheSizes();
9217
+ if(!module.can.useFlex()) {
9218
+ module.set.modalOffset();
9219
+ }
9100
9220
  module.set.screenHeight();
9101
9221
  module.set.type();
9102
- module.set.position();
9103
9222
  },
9104
9223
 
9105
9224
  refreshModals: function() {
@@ -9138,12 +9257,22 @@ $.fn.modal = function(parameters) {
9138
9257
  $window
9139
9258
  .on('resize' + elementEventNamespace, module.event.resize)
9140
9259
  ;
9260
+ },
9261
+ scrollLock: function() {
9262
+ // touch events default to passive, due to changes in chrome to optimize mobile perf
9263
+ $dimmable.get(0).addEventListener('touchmove', module.event.preventScroll, { passive: false });
9264
+ }
9265
+ },
9266
+
9267
+ unbind: {
9268
+ scrollLock: function() {
9269
+ $dimmable.get(0).removeEventListener('touchmove', module.event.preventScroll, { passive: false });
9141
9270
  }
9142
9271
  },
9143
9272
 
9144
9273
  get: {
9145
9274
  id: function() {
9146
- return (Math.random().toString(16) + '000000000').substr(2,8);
9275
+ return (Math.random().toString(16) + '000000000').substr(2, 8);
9147
9276
  }
9148
9277
  },
9149
9278
 
@@ -9158,6 +9287,9 @@ $.fn.modal = function(parameters) {
9158
9287
  ignoreRepeatedEvents = false;
9159
9288
  });
9160
9289
  },
9290
+ preventScroll: function(event) {
9291
+ event.preventDefault();
9292
+ },
9161
9293
  deny: function() {
9162
9294
  if(ignoreRepeatedEvents || settings.onDeny.call(element, $(this)) === false) {
9163
9295
  module.verbose('Deny callback returned false cancelling hide');
@@ -9172,21 +9304,23 @@ $.fn.modal = function(parameters) {
9172
9304
  module.hide();
9173
9305
  },
9174
9306
  click: function(event) {
9307
+ if(!settings.closable) {
9308
+ module.verbose('Dimmer clicked but closable setting is disabled');
9309
+ return;
9310
+ }
9175
9311
  var
9176
9312
  $target = $(event.target),
9177
9313
  isInModal = ($target.closest(selector.modal).length > 0),
9178
9314
  isInDOM = $.contains(document.documentElement, event.target)
9179
9315
  ;
9180
- if(!isInModal && isInDOM) {
9316
+ if(!isInModal && isInDOM && module.is.active()) {
9181
9317
  module.debug('Dimmer clicked, hiding all modals');
9182
- if( module.is.active() ) {
9183
- module.remove.clickaway();
9184
- if(settings.allowMultiple) {
9185
- module.hide();
9186
- }
9187
- else {
9188
- module.hideAll();
9189
- }
9318
+ module.remove.clickaway();
9319
+ if(settings.allowMultiple) {
9320
+ module.hide();
9321
+ }
9322
+ else {
9323
+ module.hideAll();
9190
9324
  }
9191
9325
  }
9192
9326
  },
@@ -9233,6 +9367,8 @@ $.fn.modal = function(parameters) {
9233
9367
  ;
9234
9368
  module.refreshModals();
9235
9369
  module.set.dimmerSettings();
9370
+ module.set.dimmerStyles();
9371
+
9236
9372
  module.showModal(callback);
9237
9373
  },
9238
9374
 
@@ -9251,10 +9387,16 @@ $.fn.modal = function(parameters) {
9251
9387
  : function(){}
9252
9388
  ;
9253
9389
  if( module.is.animating() || !module.is.active() ) {
9254
-
9255
9390
  module.showDimmer();
9256
9391
  module.cacheSizes();
9257
- module.set.position();
9392
+ if(module.can.useFlex()) {
9393
+ module.remove.legacy();
9394
+ }
9395
+ else {
9396
+ module.set.legacy();
9397
+ module.set.modalOffset();
9398
+ module.debug('Using non-flex legacy modal positioning.');
9399
+ }
9258
9400
  module.set.screenHeight();
9259
9401
  module.set.type();
9260
9402
  module.set.clickaway();
@@ -9332,6 +9474,7 @@ $.fn.modal = function(parameters) {
9332
9474
  },
9333
9475
  onComplete : function() {
9334
9476
  settings.onHidden.call(element);
9477
+ module.remove.dimmerStyles();
9335
9478
  module.restore.focus();
9336
9479
  callback();
9337
9480
  }
@@ -9356,6 +9499,7 @@ $.fn.modal = function(parameters) {
9356
9499
 
9357
9500
  hideDimmer: function() {
9358
9501
  if( $dimmable.dimmer('is animating') || ($dimmable.dimmer('is active')) ) {
9502
+ module.unbind.scrollLock();
9359
9503
  $dimmable.dimmer('hide', function() {
9360
9504
  module.remove.clickaway();
9361
9505
  module.remove.screenHeight();
@@ -9421,7 +9565,13 @@ $.fn.modal = function(parameters) {
9421
9565
 
9422
9566
  save: {
9423
9567
  focus: function() {
9424
- $focusedElement = $(document.activeElement).blur();
9568
+ var
9569
+ $activeElement = $(document.activeElement),
9570
+ inCurrentModal = $activeElement.closest($module).length > 0
9571
+ ;
9572
+ if(!inCurrentModal) {
9573
+ $focusedElement = $(document.activeElement).blur();
9574
+ }
9425
9575
  }
9426
9576
  },
9427
9577
 
@@ -9437,12 +9587,17 @@ $.fn.modal = function(parameters) {
9437
9587
  active: function() {
9438
9588
  $module.removeClass(className.active);
9439
9589
  },
9590
+ legacy: function() {
9591
+ $module.removeClass(className.legacy);
9592
+ },
9440
9593
  clickaway: function() {
9441
- if(settings.closable) {
9442
- $dimmer
9443
- .off('click' + elementEventNamespace)
9444
- ;
9445
- }
9594
+ $dimmer
9595
+ .off('click' + elementEventNamespace)
9596
+ ;
9597
+ },
9598
+ dimmerStyles: function() {
9599
+ $dimmer.removeClass(className.inverted);
9600
+ $dimmable.removeClass(className.blurring);
9446
9601
  },
9447
9602
  bodyStyle: function() {
9448
9603
  if($body.attr('style') === '') {
@@ -9472,11 +9627,13 @@ $.fn.modal = function(parameters) {
9472
9627
  $module.addClass(className.loading);
9473
9628
  var
9474
9629
  scrollHeight = $module.prop('scrollHeight'),
9630
+ modalWidth = $module.outerWidth(),
9475
9631
  modalHeight = $module.outerHeight()
9476
9632
  ;
9477
9633
  if(module.cache === undefined || modalHeight !== 0) {
9478
9634
  module.cache = {
9479
9635
  pageHeight : $(document).outerHeight(),
9636
+ width : modalWidth,
9480
9637
  height : modalHeight + settings.offset,
9481
9638
  scrollHeight : scrollHeight + settings.offset,
9482
9639
  contextHeight : (settings.context == 'body')
@@ -9490,6 +9647,12 @@ $.fn.modal = function(parameters) {
9490
9647
  },
9491
9648
 
9492
9649
  can: {
9650
+ useFlex: function() {
9651
+ return (settings.useFlex == 'auto')
9652
+ ? settings.detachable && !module.is.ie()
9653
+ : settings.useFlex
9654
+ ;
9655
+ },
9493
9656
  fit: function() {
9494
9657
  var
9495
9658
  contextHeight = module.cache.contextHeight,
@@ -9511,6 +9674,13 @@ $.fn.modal = function(parameters) {
9511
9674
  active: function() {
9512
9675
  return $module.hasClass(className.active);
9513
9676
  },
9677
+ ie: function() {
9678
+ var
9679
+ isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window),
9680
+ isIE = ('ActiveXObject' in window)
9681
+ ;
9682
+ return (isIE11 || isIE);
9683
+ },
9514
9684
  animating: function() {
9515
9685
  return $module.transition('is supported')
9516
9686
  ? $module.transition('is animating')
@@ -9522,7 +9692,7 @@ $.fn.modal = function(parameters) {
9522
9692
  },
9523
9693
  modernBrowser: function() {
9524
9694
  // appName for IE11 reports 'Netscape' can no longer use
9525
- return !(window.ActiveXObject || "ActiveXObject" in window);
9695
+ return !(window.ActiveXObject || 'ActiveXObject' in window);
9526
9696
  }
9527
9697
  },
9528
9698
 
@@ -9540,11 +9710,9 @@ $.fn.modal = function(parameters) {
9540
9710
  }
9541
9711
  },
9542
9712
  clickaway: function() {
9543
- if(settings.closable) {
9544
- $dimmer
9545
- .on('click' + elementEventNamespace, module.event.click)
9546
- ;
9547
- }
9713
+ $dimmer
9714
+ .on('click' + elementEventNamespace, module.event.click)
9715
+ ;
9548
9716
  },
9549
9717
  dimmerSettings: function() {
9550
9718
  if($.fn.dimmer === undefined) {
@@ -9555,8 +9723,11 @@ $.fn.modal = function(parameters) {
9555
9723
  defaultSettings = {
9556
9724
  debug : settings.debug,
9557
9725
  dimmerName : 'modals',
9558
- variation : false,
9559
9726
  closable : 'auto',
9727
+ useFlex : module.can.useFlex(),
9728
+ variation : settings.centered
9729
+ ? false
9730
+ : 'top aligned',
9560
9731
  duration : {
9561
9732
  show : settings.duration,
9562
9733
  hide : settings.duration
@@ -9569,6 +9740,11 @@ $.fn.modal = function(parameters) {
9569
9740
  ? dimmerSettings.variation + ' inverted'
9570
9741
  : 'inverted'
9571
9742
  ;
9743
+ }
9744
+ $context.dimmer('setting', dimmerSettings);
9745
+ },
9746
+ dimmerStyles: function() {
9747
+ if(settings.inverted) {
9572
9748
  $dimmer.addClass(className.inverted);
9573
9749
  }
9574
9750
  else {
@@ -9580,7 +9756,21 @@ $.fn.modal = function(parameters) {
9580
9756
  else {
9581
9757
  $dimmable.removeClass(className.blurring);
9582
9758
  }
9583
- $context.dimmer('setting', dimmerSettings);
9759
+ },
9760
+ modalOffset: function() {
9761
+ var
9762
+ width = module.cache.width,
9763
+ height = module.cache.height
9764
+ ;
9765
+ $module
9766
+ .css({
9767
+ marginTop: (settings.centered && module.can.fit())
9768
+ ? -(height / 2)
9769
+ : 0,
9770
+ marginLeft: -(width / 2)
9771
+ })
9772
+ ;
9773
+ module.verbose('Setting modal offset for legacy mode');
9584
9774
  },
9585
9775
  screenHeight: function() {
9586
9776
  if( module.can.fit() ) {
@@ -9599,12 +9789,17 @@ $.fn.modal = function(parameters) {
9599
9789
  scrolling: function() {
9600
9790
  $dimmable.addClass(className.scrolling);
9601
9791
  $module.addClass(className.scrolling);
9792
+ module.unbind.scrollLock();
9793
+ },
9794
+ legacy: function() {
9795
+ $module.addClass(className.legacy);
9602
9796
  },
9603
9797
  type: function() {
9604
9798
  if(module.can.fit()) {
9605
9799
  module.verbose('Modal fits on screen');
9606
9800
  if(!module.others.active() && !module.others.animating()) {
9607
9801
  module.remove.scrolling();
9802
+ module.bind.scrollLock();
9608
9803
  }
9609
9804
  }
9610
9805
  else {
@@ -9612,25 +9807,6 @@ $.fn.modal = function(parameters) {
9612
9807
  module.set.scrolling();
9613
9808
  }
9614
9809
  },
9615
- position: function() {
9616
- module.verbose('Centering modal on page', module.cache);
9617
- if(module.can.fit()) {
9618
- $module
9619
- .css({
9620
- top: '',
9621
- marginTop: module.cache.topOffset
9622
- })
9623
- ;
9624
- }
9625
- else {
9626
- $module
9627
- .css({
9628
- marginTop : '',
9629
- top : $document.scrollTop()
9630
- })
9631
- ;
9632
- }
9633
- },
9634
9810
  undetached: function() {
9635
9811
  $dimmable.addClass(className.undetached);
9636
9812
  }
@@ -9824,6 +10000,9 @@ $.fn.modal.settings = {
9824
10000
  name : 'Modal',
9825
10001
  namespace : 'modal',
9826
10002
 
10003
+ useFlex : 'auto',
10004
+ offset : 0,
10005
+
9827
10006
  silent : false,
9828
10007
  debug : false,
9829
10008
  verbose : false,
@@ -9839,6 +10018,8 @@ $.fn.modal.settings = {
9839
10018
  inverted : false,
9840
10019
  blurring : false,
9841
10020
 
10021
+ centered : true,
10022
+
9842
10023
  dimmerSettings : {
9843
10024
  closable : false,
9844
10025
  useCSS : true
@@ -9851,7 +10032,6 @@ $.fn.modal.settings = {
9851
10032
 
9852
10033
  queue : false,
9853
10034
  duration : 500,
9854
- offset : 0,
9855
10035
  transition : 'scale',
9856
10036
 
9857
10037
  // padding with edge of page
@@ -9891,6 +10071,7 @@ $.fn.modal.settings = {
9891
10071
  animating : 'animating',
9892
10072
  blurring : 'blurring',
9893
10073
  inverted : 'inverted',
10074
+ legacy : 'legacy',
9894
10075
  loading : 'loading',
9895
10076
  scrolling : 'scrolling',
9896
10077
  undetached : 'undetached'
@@ -9901,7 +10082,7 @@ $.fn.modal.settings = {
9901
10082
  })( jQuery, window, document );
9902
10083
 
9903
10084
  /*!
9904
- * # Semantic UI 2.2.12 - Nag
10085
+ * # Semantic UI 2.4.1 - Nag
9905
10086
  * http://github.com/semantic-org/semantic-ui/
9906
10087
  *
9907
10088
  *
@@ -9912,7 +10093,7 @@ $.fn.modal.settings = {
9912
10093
 
9913
10094
  ;(function ($, window, document, undefined) {
9914
10095
 
9915
- "use strict";
10096
+ 'use strict';
9916
10097
 
9917
10098
  window = (typeof window != 'undefined' && window.Math == Math)
9918
10099
  ? window
@@ -10409,7 +10590,7 @@ $.extend( $.easing, {
10409
10590
  })( jQuery, window, document );
10410
10591
 
10411
10592
  /*!
10412
- * # Semantic UI 2.2.12 - Popup
10593
+ * # Semantic UI 2.4.1 - Popup
10413
10594
  * http://github.com/semantic-org/semantic-ui/
10414
10595
  *
10415
10596
  *
@@ -10420,7 +10601,7 @@ $.extend( $.easing, {
10420
10601
 
10421
10602
  ;(function ($, window, document, undefined) {
10422
10603
 
10423
- "use strict";
10604
+ 'use strict';
10424
10605
 
10425
10606
  window = (typeof window != 'undefined' && window.Math == Math)
10426
10607
  ? window
@@ -10898,7 +11079,7 @@ $.fn.popup = function(parameters) {
10898
11079
  },
10899
11080
  content: function() {
10900
11081
  $module.removeData(metadata.content);
10901
- return $module.data(metadata.content) || $module.attr('title') || settings.content;
11082
+ return $module.data(metadata.content) || settings.content || $module.attr('title');
10902
11083
  },
10903
11084
  variation: function() {
10904
11085
  $module.removeData(metadata.variation);
@@ -10912,9 +11093,10 @@ $.fn.popup = function(parameters) {
10912
11093
  },
10913
11094
  calculations: function() {
10914
11095
  var
10915
- targetElement = $target[0],
10916
- isWindow = ($boundary[0] == window),
10917
- targetPosition = (settings.inline || (settings.popup && settings.movePopup))
11096
+ $popupOffsetParent = module.get.offsetParent($popup),
11097
+ targetElement = $target[0],
11098
+ isWindow = ($boundary[0] == window),
11099
+ targetPosition = (settings.inline || (settings.popup && settings.movePopup))
10918
11100
  ? $target.position()
10919
11101
  : $target.offset(),
10920
11102
  screenPosition = (isWindow)
@@ -10959,6 +11141,17 @@ $.fn.popup = function(parameters) {
10959
11141
  }
10960
11142
  };
10961
11143
 
11144
+ // if popup offset context is not same as target, then adjust calculations
11145
+ if($popupOffsetParent.get(0) !== $offsetParent.get(0)) {
11146
+ var
11147
+ popupOffset = $popupOffsetParent.offset()
11148
+ ;
11149
+ calculations.target.top -= popupOffset.top;
11150
+ calculations.target.left -= popupOffset.left;
11151
+ calculations.parent.width = $popupOffsetParent.outerWidth();
11152
+ calculations.parent.height = $popupOffsetParent.outerHeight();
11153
+ }
11154
+
10962
11155
  // add in container calcs if fluid
10963
11156
  if( settings.setFluidWidth && module.is.fluid() ) {
10964
11157
  calculations.container = {
@@ -11035,11 +11228,11 @@ $.fn.popup = function(parameters) {
11035
11228
  }
11036
11229
  return distanceFromBoundary;
11037
11230
  },
11038
- offsetParent: function($target) {
11231
+ offsetParent: function($element) {
11039
11232
  var
11040
- element = ($target !== undefined)
11041
- ? $target[0]
11042
- : $module[0],
11233
+ element = ($element !== undefined)
11234
+ ? $element[0]
11235
+ : $target[0],
11043
11236
  parentNode = element.parentNode,
11044
11237
  $node = $(parentNode)
11045
11238
  ;
@@ -11047,14 +11240,14 @@ $.fn.popup = function(parameters) {
11047
11240
  var
11048
11241
  is2D = ($node.css('transform') === 'none'),
11049
11242
  isStatic = ($node.css('position') === 'static'),
11050
- isHTML = $node.is('html')
11243
+ isBody = $node.is('body')
11051
11244
  ;
11052
- while(parentNode && !isHTML && isStatic && is2D) {
11245
+ while(parentNode && !isBody && isStatic && is2D) {
11053
11246
  parentNode = parentNode.parentNode;
11054
11247
  $node = $(parentNode);
11055
11248
  is2D = ($node.css('transform') === 'none');
11056
11249
  isStatic = ($node.css('position') === 'static');
11057
- isHTML = $node.is('html');
11250
+ isBody = $node.is('body');
11058
11251
  }
11059
11252
  }
11060
11253
  return ($node && $node.length > 0)
@@ -11163,6 +11356,18 @@ $.fn.popup = function(parameters) {
11163
11356
  popup = calculations.popup;
11164
11357
  parent = calculations.parent;
11165
11358
 
11359
+ if(module.should.centerArrow(calculations)) {
11360
+ module.verbose('Adjusting offset to center arrow on small target element');
11361
+ if(position == 'top left' || position == 'bottom left') {
11362
+ offset += (target.width / 2)
11363
+ offset -= settings.arrowPixelsFromEdge;
11364
+ }
11365
+ if(position == 'top right' || position == 'bottom right') {
11366
+ offset -= (target.width / 2)
11367
+ offset += settings.arrowPixelsFromEdge;
11368
+ }
11369
+ }
11370
+
11166
11371
  if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) {
11167
11372
  module.debug('Popup target is hidden, no action taken');
11168
11373
  return false;
@@ -11398,12 +11603,12 @@ $.fn.popup = function(parameters) {
11398
11603
  if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) {
11399
11604
  module.bind.closeOnScroll();
11400
11605
  }
11401
- if(settings.on == 'hover' && openedWithTouch) {
11402
- module.bind.touchClose();
11403
- }
11404
- if(settings.on == 'click' && settings.closable) {
11606
+ if(module.is.closable()) {
11405
11607
  module.bind.clickaway();
11406
11608
  }
11609
+ else if(settings.on == 'hover' && openedWithTouch) {
11610
+ module.bind.touchClose();
11611
+ }
11407
11612
  },
11408
11613
  closeOnScroll: function() {
11409
11614
  module.verbose('Binding scroll close event to document');
@@ -11456,7 +11661,22 @@ $.fn.popup = function(parameters) {
11456
11661
  }
11457
11662
  },
11458
11663
 
11664
+ should: {
11665
+ centerArrow: function(calculations) {
11666
+ return !module.is.basic() && calculations.target.width <= (settings.arrowPixelsFromEdge * 2);
11667
+ },
11668
+ },
11669
+
11459
11670
  is: {
11671
+ closable: function() {
11672
+ if(settings.closable == 'auto') {
11673
+ if(settings.on == 'hover') {
11674
+ return false;
11675
+ }
11676
+ return true;
11677
+ }
11678
+ return settings.closable;
11679
+ },
11460
11680
  offstage: function(distanceFromBoundary, position) {
11461
11681
  var
11462
11682
  offstage = []
@@ -11478,6 +11698,9 @@ $.fn.popup = function(parameters) {
11478
11698
  svg: function(element) {
11479
11699
  return module.supports.svg() && (element instanceof SVGGraphicsElement);
11480
11700
  },
11701
+ basic: function() {
11702
+ return $module.hasClass(className.basic);
11703
+ },
11481
11704
  active: function() {
11482
11705
  return $module.hasClass(className.active);
11483
11706
  },
@@ -11790,8 +12013,11 @@ $.fn.popup.settings = {
11790
12013
  // specify position to appear even if it doesn't fit
11791
12014
  lastResort : false,
11792
12015
 
12016
+ // number of pixels from edge of popup to pointing arrow center (used from centering)
12017
+ arrowPixelsFromEdge: 20,
12018
+
11793
12019
  // delay used to prevent accidental refiring of animations due to user error
11794
- delay : {
12020
+ delay : {
11795
12021
  show : 50,
11796
12022
  hide : 70
11797
12023
  },
@@ -11835,6 +12061,7 @@ $.fn.popup.settings = {
11835
12061
 
11836
12062
  className : {
11837
12063
  active : 'active',
12064
+ basic : 'basic',
11838
12065
  animating : 'animating',
11839
12066
  dropdown : 'dropdown',
11840
12067
  fluid : 'fluid',
@@ -11896,7 +12123,7 @@ $.fn.popup.settings = {
11896
12123
  })( jQuery, window, document );
11897
12124
 
11898
12125
  /*!
11899
- * # Semantic UI 2.2.12 - Progress
12126
+ * # Semantic UI 2.4.1 - Progress
11900
12127
  * http://github.com/semantic-org/semantic-ui/
11901
12128
  *
11902
12129
  *
@@ -11907,7 +12134,7 @@ $.fn.popup.settings = {
11907
12134
 
11908
12135
  ;(function ($, window, document, undefined) {
11909
12136
 
11910
- "use strict";
12137
+ 'use strict';
11911
12138
 
11912
12139
  window = (typeof window != 'undefined' && window.Math == Math)
11913
12140
  ? window
@@ -12828,7 +13055,7 @@ $.fn.progress.settings = {
12828
13055
  })( jQuery, window, document );
12829
13056
 
12830
13057
  /*!
12831
- * # Semantic UI 2.2.12 - Rating
13058
+ * # Semantic UI 2.4.1 - Rating
12832
13059
  * http://github.com/semantic-org/semantic-ui/
12833
13060
  *
12834
13061
  *
@@ -12839,7 +13066,7 @@ $.fn.progress.settings = {
12839
13066
 
12840
13067
  ;(function ($, window, document, undefined) {
12841
13068
 
12842
- "use strict";
13069
+ 'use strict';
12843
13070
 
12844
13071
  window = (typeof window != 'undefined' && window.Math == Math)
12845
13072
  ? window
@@ -13337,7 +13564,7 @@ $.fn.rating.settings = {
13337
13564
  })( jQuery, window, document );
13338
13565
 
13339
13566
  /*!
13340
- * # Semantic UI 2.2.12 - Search
13567
+ * # Semantic UI 2.4.1 - Search
13341
13568
  * http://github.com/semantic-org/semantic-ui/
13342
13569
  *
13343
13570
  *
@@ -13348,7 +13575,7 @@ $.fn.rating.settings = {
13348
13575
 
13349
13576
  ;(function ($, window, document, undefined) {
13350
13577
 
13351
- "use strict";
13578
+ 'use strict';
13352
13579
 
13353
13580
  window = (typeof window != 'undefined' && window.Math == Math)
13354
13581
  ? window
@@ -13408,6 +13635,7 @@ $.fn.search = function(parameters) {
13408
13635
 
13409
13636
  initialize: function() {
13410
13637
  module.verbose('Initializing module');
13638
+ module.get.settings();
13411
13639
  module.determine.searchFields();
13412
13640
  module.bind.events();
13413
13641
  module.set.type();
@@ -13674,7 +13902,7 @@ $.fn.search = function(parameters) {
13674
13902
  apiSettings = {
13675
13903
  debug : settings.debug,
13676
13904
  on : false,
13677
- cache : true,
13905
+ cache : settings.cache,
13678
13906
  action : 'search',
13679
13907
  urlData : {
13680
13908
  query : searchTerm
@@ -13740,6 +13968,12 @@ $.fn.search = function(parameters) {
13740
13968
  },
13741
13969
 
13742
13970
  get: {
13971
+ settings: function() {
13972
+ if($.isPlainObject(parameters) && parameters.searchFullText) {
13973
+ settings.fullTextSearch = parameters.searchFullText;
13974
+ module.error(settings.error.oldSearchSyntax, element);
13975
+ }
13976
+ },
13743
13977
  inputEvent: function() {
13744
13978
  var
13745
13979
  prompt = $prompt[0],
@@ -13883,8 +14117,14 @@ $.fn.search = function(parameters) {
13883
14117
  ;
13884
14118
  module.set.loading();
13885
14119
  module.save.results(results);
13886
- module.debug('Returned local search results', results);
13887
-
14120
+ module.debug('Returned full local search results', results);
14121
+ if(settings.maxResults > 0) {
14122
+ module.debug('Using specified max results', results);
14123
+ results = results.slice(0, settings.maxResults);
14124
+ }
14125
+ if(settings.type == 'category') {
14126
+ results = module.create.categoryResults(results);
14127
+ }
13888
14128
  searchHTML = module.generateResults({
13889
14129
  results: results
13890
14130
  });
@@ -13912,6 +14152,7 @@ $.fn.search = function(parameters) {
13912
14152
  object: function(searchTerm, source, searchFields) {
13913
14153
  var
13914
14154
  results = [],
14155
+ exactResults = [],
13915
14156
  fuzzyResults = [],
13916
14157
  searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'),
13917
14158
  matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'),
@@ -13920,9 +14161,10 @@ $.fn.search = function(parameters) {
13920
14161
  addResult = function(array, result) {
13921
14162
  var
13922
14163
  notResult = ($.inArray(result, results) == -1),
13923
- notFuzzyResult = ($.inArray(result, fuzzyResults) == -1)
14164
+ notFuzzyResult = ($.inArray(result, fuzzyResults) == -1),
14165
+ notExactResults = ($.inArray(result, exactResults) == -1)
13924
14166
  ;
13925
- if(notResult && notFuzzyResult) {
14167
+ if(notResult && notFuzzyResult && notExactResults) {
13926
14168
  array.push(result);
13927
14169
  }
13928
14170
  }
@@ -13943,7 +14185,6 @@ $.fn.search = function(parameters) {
13943
14185
  module.error(error.source);
13944
14186
  return [];
13945
14187
  }
13946
-
13947
14188
  // iterate through search fields looking for matches
13948
14189
  $.each(searchFields, function(index, field) {
13949
14190
  $.each(source, function(label, content) {
@@ -13955,17 +14196,30 @@ $.fn.search = function(parameters) {
13955
14196
  // content starts with value (first in results)
13956
14197
  addResult(results, content);
13957
14198
  }
13958
- else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) {
14199
+ else if(settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, content[field]) ) {
14200
+ // content fuzzy matches (last in results)
14201
+ addResult(exactResults, content);
14202
+ }
14203
+ else if(settings.fullTextSearch == true && module.fuzzySearch(searchTerm, content[field]) ) {
13959
14204
  // content fuzzy matches (last in results)
13960
14205
  addResult(fuzzyResults, content);
13961
14206
  }
13962
14207
  }
13963
14208
  });
13964
14209
  });
13965
- return $.merge(results, fuzzyResults);
14210
+ $.merge(exactResults, fuzzyResults)
14211
+ $.merge(results, exactResults);
14212
+ return results;
13966
14213
  }
13967
14214
  },
13968
-
14215
+ exactSearch: function (query, term) {
14216
+ query = query.toLowerCase();
14217
+ term = term.toLowerCase();
14218
+ if(term.indexOf(query) > -1) {
14219
+ return true;
14220
+ }
14221
+ return false;
14222
+ },
13969
14223
  fuzzySearch: function(query, term) {
13970
14224
  var
13971
14225
  termLength = term.length,
@@ -14077,6 +14331,27 @@ $.fn.search = function(parameters) {
14077
14331
  },
14078
14332
 
14079
14333
  create: {
14334
+ categoryResults: function(results) {
14335
+ var
14336
+ categoryResults = {}
14337
+ ;
14338
+ $.each(results, function(index, result) {
14339
+ if(!result.category) {
14340
+ return;
14341
+ }
14342
+ if(categoryResults[result.category] === undefined) {
14343
+ module.verbose('Creating new category of results', result.category);
14344
+ categoryResults[result.category] = {
14345
+ name : result.category,
14346
+ results : [result]
14347
+ }
14348
+ }
14349
+ else {
14350
+ categoryResults[result.category].results.push(result);
14351
+ }
14352
+ });
14353
+ return categoryResults;
14354
+ },
14080
14355
  id: function(resultIndex, categoryIndex) {
14081
14356
  var
14082
14357
  resultID = (resultIndex + 1), // not zero indexed
@@ -14114,7 +14389,10 @@ $.fn.search = function(parameters) {
14114
14389
  $selectedResult = (categoryIndex !== undefined)
14115
14390
  ? $results
14116
14391
  .children().eq(categoryIndex)
14117
- .children(selector.result).eq(resultIndex)
14392
+ .children(selector.results)
14393
+ .first()
14394
+ .children(selector.result)
14395
+ .eq(resultIndex)
14118
14396
  : $results
14119
14397
  .children(selector.result).eq(resultIndex)
14120
14398
  ;
@@ -14535,8 +14813,8 @@ $.fn.search.settings = {
14535
14813
  // field to display in standard results template
14536
14814
  displayField : '',
14537
14815
 
14538
- // whether to include fuzzy results in local search
14539
- searchFullText : true,
14816
+ // search anywhere in value (set to 'exact' to require exact matches
14817
+ fullTextSearch : 'exact',
14540
14818
 
14541
14819
  // whether to add events to prompt automatically
14542
14820
  automatic : true,
@@ -14547,7 +14825,7 @@ $.fn.search.settings = {
14547
14825
  // delay before searching
14548
14826
  searchDelay : 200,
14549
14827
 
14550
- // maximum results returned from local
14828
+ // maximum results returned from search
14551
14829
  maxResults : 7,
14552
14830
 
14553
14831
  // whether to store lookups in local cache
@@ -14583,14 +14861,15 @@ $.fn.search.settings = {
14583
14861
  },
14584
14862
 
14585
14863
  error : {
14586
- source : 'Cannot search. No source used, and Semantic API module was not included',
14587
- noResults : 'Your search returned no results',
14588
- logging : 'Error in debug logging, exiting.',
14589
- noEndpoint : 'No search endpoint was specified',
14590
- noTemplate : 'A valid template name was not specified.',
14591
- serverError : 'There was an issue querying the server.',
14592
- maxResults : 'Results must be an array to use maxResults setting',
14593
- method : 'The method you called is not defined.'
14864
+ source : 'Cannot search. No source used, and Semantic API module was not included',
14865
+ noResults : 'Your search returned no results',
14866
+ logging : 'Error in debug logging, exiting.',
14867
+ noEndpoint : 'No search endpoint was specified',
14868
+ noTemplate : 'A valid template name was not specified.',
14869
+ oldSearchSyntax : 'searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.',
14870
+ serverError : 'There was an issue querying the server.',
14871
+ maxResults : 'Results must be an array to use maxResults setting',
14872
+ method : 'The method you called is not defined.'
14594
14873
  },
14595
14874
 
14596
14875
  metadata: {
@@ -14692,6 +14971,7 @@ $.fn.search.settings = {
14692
14971
  }
14693
14972
 
14694
14973
  // each item inside category
14974
+ html += '<div class="results">';
14695
14975
  $.each(category.results, function(index, result) {
14696
14976
  if(result[fields.url]) {
14697
14977
  html += '<a class="result" href="' + result[fields.url] + '">';
@@ -14721,6 +15001,7 @@ $.fn.search.settings = {
14721
15001
  ;
14722
15002
  html += '</a>';
14723
15003
  });
15004
+ html += '</div>';
14724
15005
  html += ''
14725
15006
  + '</div>'
14726
15007
  ;
@@ -14789,7 +15070,7 @@ $.fn.search.settings = {
14789
15070
  })( jQuery, window, document );
14790
15071
 
14791
15072
  /*!
14792
- * # Semantic UI 2.2.12 - Shape
15073
+ * # Semantic UI 2.4.1 - Shape
14793
15074
  * http://github.com/semantic-org/semantic-ui/
14794
15075
  *
14795
15076
  *
@@ -14800,7 +15081,7 @@ $.fn.search.settings = {
14800
15081
 
14801
15082
  ;(function ($, window, document, undefined) {
14802
15083
 
14803
- "use strict";
15084
+ 'use strict';
14804
15085
 
14805
15086
  window = (typeof window != 'undefined' && window.Math == Math)
14806
15087
  ? window
@@ -15711,7 +15992,7 @@ $.fn.shape.settings = {
15711
15992
  })( jQuery, window, document );
15712
15993
 
15713
15994
  /*!
15714
- * # Semantic UI 2.2.12 - Sidebar
15995
+ * # Semantic UI 2.4.1 - Sidebar
15715
15996
  * http://github.com/semantic-org/semantic-ui/
15716
15997
  *
15717
15998
  *
@@ -15722,7 +16003,7 @@ $.fn.shape.settings = {
15722
16003
 
15723
16004
  ;(function ($, window, document, undefined) {
15724
16005
 
15725
- "use strict";
16006
+ 'use strict';
15726
16007
 
15727
16008
  window = (typeof window != 'undefined' && window.Math == Math)
15728
16009
  ? window
@@ -16745,7 +17026,7 @@ $.fn.sidebar.settings = {
16745
17026
  })( jQuery, window, document );
16746
17027
 
16747
17028
  /*!
16748
- * # Semantic UI 2.2.12 - Sticky
17029
+ * # Semantic UI 2.4.1 - Sticky
16749
17030
  * http://github.com/semantic-org/semantic-ui/
16750
17031
  *
16751
17032
  *
@@ -16756,7 +17037,7 @@ $.fn.sidebar.settings = {
16756
17037
 
16757
17038
  ;(function ($, window, document, undefined) {
16758
17039
 
16759
- "use strict";
17040
+ 'use strict';
16760
17041
 
16761
17042
  window = (typeof window != 'undefined' && window.Math == Math)
16762
17043
  ? window
@@ -17705,7 +17986,7 @@ $.fn.sticky.settings = {
17705
17986
  })( jQuery, window, document );
17706
17987
 
17707
17988
  /*!
17708
- * # Semantic UI 2.2.12 - Tab
17989
+ * # Semantic UI 2.4.1 - Tab
17709
17990
  * http://github.com/semantic-org/semantic-ui/
17710
17991
  *
17711
17992
  *
@@ -17716,7 +17997,7 @@ $.fn.sticky.settings = {
17716
17997
 
17717
17998
  ;(function ($, window, document, undefined) {
17718
17999
 
17719
- "use strict";
18000
+ 'use strict';
17720
18001
 
17721
18002
  window = (typeof window != 'undefined' && window.Math == Math)
17722
18003
  ? window
@@ -18658,7 +18939,7 @@ $.fn.tab.settings = {
18658
18939
  })( jQuery, window, document );
18659
18940
 
18660
18941
  /*!
18661
- * # Semantic UI 2.2.12 - Transition
18942
+ * # Semantic UI 2.4.1 - Transition
18662
18943
  * http://github.com/semantic-org/semantic-ui/
18663
18944
  *
18664
18945
  *
@@ -18669,7 +18950,7 @@ $.fn.tab.settings = {
18669
18950
 
18670
18951
  ;(function ($, window, document, undefined) {
18671
18952
 
18672
- "use strict";
18953
+ 'use strict';
18673
18954
 
18674
18955
  window = (typeof window != 'undefined' && window.Math == Math)
18675
18956
  ? window
@@ -19754,7 +20035,7 @@ $.fn.transition.settings = {
19754
20035
  })( jQuery, window, document );
19755
20036
 
19756
20037
  /*!
19757
- * # Semantic UI 2.2.12 - API
20038
+ * # Semantic UI 2.4.1 - API
19758
20039
  * http://github.com/semantic-org/semantic-ui/
19759
20040
  *
19760
20041
  *
@@ -19765,7 +20046,7 @@ $.fn.transition.settings = {
19765
20046
 
19766
20047
  ;(function ($, window, document, undefined) {
19767
20048
 
19768
- "use strict";
20049
+ 'use strict';
19769
20050
 
19770
20051
  var
19771
20052
  window = (typeof window != 'undefined' && window.Math == Math)
@@ -20922,7 +21203,7 @@ $.api.settings = {
20922
21203
  })( jQuery, window, document );
20923
21204
 
20924
21205
  /*!
20925
- * # Semantic UI 2.2.12 - State
21206
+ * # Semantic UI 2.4.1 - Visibility
20926
21207
  * http://github.com/semantic-org/semantic-ui/
20927
21208
  *
20928
21209
  *
@@ -20933,716 +21214,7 @@ $.api.settings = {
20933
21214
 
20934
21215
  ;(function ($, window, document, undefined) {
20935
21216
 
20936
- "use strict";
20937
-
20938
- window = (typeof window != 'undefined' && window.Math == Math)
20939
- ? window
20940
- : (typeof self != 'undefined' && self.Math == Math)
20941
- ? self
20942
- : Function('return this')()
20943
- ;
20944
-
20945
- $.fn.state = function(parameters) {
20946
- var
20947
- $allModules = $(this),
20948
-
20949
- moduleSelector = $allModules.selector || '',
20950
-
20951
- hasTouch = ('ontouchstart' in document.documentElement),
20952
- time = new Date().getTime(),
20953
- performance = [],
20954
-
20955
- query = arguments[0],
20956
- methodInvoked = (typeof query == 'string'),
20957
- queryArguments = [].slice.call(arguments, 1),
20958
-
20959
- returnedValue
20960
- ;
20961
- $allModules
20962
- .each(function() {
20963
- var
20964
- settings = ( $.isPlainObject(parameters) )
20965
- ? $.extend(true, {}, $.fn.state.settings, parameters)
20966
- : $.extend({}, $.fn.state.settings),
20967
-
20968
- error = settings.error,
20969
- metadata = settings.metadata,
20970
- className = settings.className,
20971
- namespace = settings.namespace,
20972
- states = settings.states,
20973
- text = settings.text,
20974
-
20975
- eventNamespace = '.' + namespace,
20976
- moduleNamespace = namespace + '-module',
20977
-
20978
- $module = $(this),
20979
-
20980
- element = this,
20981
- instance = $module.data(moduleNamespace),
20982
-
20983
- module
20984
- ;
20985
- module = {
20986
-
20987
- initialize: function() {
20988
- module.verbose('Initializing module');
20989
-
20990
- // allow module to guess desired state based on element
20991
- if(settings.automatic) {
20992
- module.add.defaults();
20993
- }
20994
-
20995
- // bind events with delegated events
20996
- if(settings.context && moduleSelector !== '') {
20997
- $(settings.context)
20998
- .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text)
20999
- .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text)
21000
- .on(moduleSelector, 'click' + eventNamespace, module.toggle.state)
21001
- ;
21002
- }
21003
- else {
21004
- $module
21005
- .on('mouseenter' + eventNamespace, module.change.text)
21006
- .on('mouseleave' + eventNamespace, module.reset.text)
21007
- .on('click' + eventNamespace, module.toggle.state)
21008
- ;
21009
- }
21010
- module.instantiate();
21011
- },
21012
-
21013
- instantiate: function() {
21014
- module.verbose('Storing instance of module', module);
21015
- instance = module;
21016
- $module
21017
- .data(moduleNamespace, module)
21018
- ;
21019
- },
21020
-
21021
- destroy: function() {
21022
- module.verbose('Destroying previous module', instance);
21023
- $module
21024
- .off(eventNamespace)
21025
- .removeData(moduleNamespace)
21026
- ;
21027
- },
21028
-
21029
- refresh: function() {
21030
- module.verbose('Refreshing selector cache');
21031
- $module = $(element);
21032
- },
21033
-
21034
- add: {
21035
- defaults: function() {
21036
- var
21037
- userStates = parameters && $.isPlainObject(parameters.states)
21038
- ? parameters.states
21039
- : {}
21040
- ;
21041
- $.each(settings.defaults, function(type, typeStates) {
21042
- if( module.is[type] !== undefined && module.is[type]() ) {
21043
- module.verbose('Adding default states', type, element);
21044
- $.extend(settings.states, typeStates, userStates);
21045
- }
21046
- });
21047
- }
21048
- },
21049
-
21050
- is: {
21051
-
21052
- active: function() {
21053
- return $module.hasClass(className.active);
21054
- },
21055
- loading: function() {
21056
- return $module.hasClass(className.loading);
21057
- },
21058
- inactive: function() {
21059
- return !( $module.hasClass(className.active) );
21060
- },
21061
- state: function(state) {
21062
- if(className[state] === undefined) {
21063
- return false;
21064
- }
21065
- return $module.hasClass( className[state] );
21066
- },
21067
-
21068
- enabled: function() {
21069
- return !( $module.is(settings.filter.active) );
21070
- },
21071
- disabled: function() {
21072
- return ( $module.is(settings.filter.active) );
21073
- },
21074
- textEnabled: function() {
21075
- return !( $module.is(settings.filter.text) );
21076
- },
21077
-
21078
- // definitions for automatic type detection
21079
- button: function() {
21080
- return $module.is('.button:not(a, .submit)');
21081
- },
21082
- input: function() {
21083
- return $module.is('input');
21084
- },
21085
- progress: function() {
21086
- return $module.is('.ui.progress');
21087
- }
21088
- },
21089
-
21090
- allow: function(state) {
21091
- module.debug('Now allowing state', state);
21092
- states[state] = true;
21093
- },
21094
- disallow: function(state) {
21095
- module.debug('No longer allowing', state);
21096
- states[state] = false;
21097
- },
21098
-
21099
- allows: function(state) {
21100
- return states[state] || false;
21101
- },
21102
-
21103
- enable: function() {
21104
- $module.removeClass(className.disabled);
21105
- },
21106
-
21107
- disable: function() {
21108
- $module.addClass(className.disabled);
21109
- },
21110
-
21111
- setState: function(state) {
21112
- if(module.allows(state)) {
21113
- $module.addClass( className[state] );
21114
- }
21115
- },
21116
-
21117
- removeState: function(state) {
21118
- if(module.allows(state)) {
21119
- $module.removeClass( className[state] );
21120
- }
21121
- },
21122
-
21123
- toggle: {
21124
- state: function() {
21125
- var
21126
- apiRequest,
21127
- requestCancelled
21128
- ;
21129
- if( module.allows('active') && module.is.enabled() ) {
21130
- module.refresh();
21131
- if($.fn.api !== undefined) {
21132
- apiRequest = $module.api('get request');
21133
- requestCancelled = $module.api('was cancelled');
21134
- if( requestCancelled ) {
21135
- module.debug('API Request cancelled by beforesend');
21136
- settings.activateTest = function(){ return false; };
21137
- settings.deactivateTest = function(){ return false; };
21138
- }
21139
- else if(apiRequest) {
21140
- module.listenTo(apiRequest);
21141
- return;
21142
- }
21143
- }
21144
- module.change.state();
21145
- }
21146
- }
21147
- },
21148
-
21149
- listenTo: function(apiRequest) {
21150
- module.debug('API request detected, waiting for state signal', apiRequest);
21151
- if(apiRequest) {
21152
- if(text.loading) {
21153
- module.update.text(text.loading);
21154
- }
21155
- $.when(apiRequest)
21156
- .then(function() {
21157
- if(apiRequest.state() == 'resolved') {
21158
- module.debug('API request succeeded');
21159
- settings.activateTest = function(){ return true; };
21160
- settings.deactivateTest = function(){ return true; };
21161
- }
21162
- else {
21163
- module.debug('API request failed');
21164
- settings.activateTest = function(){ return false; };
21165
- settings.deactivateTest = function(){ return false; };
21166
- }
21167
- module.change.state();
21168
- })
21169
- ;
21170
- }
21171
- },
21172
-
21173
- // checks whether active/inactive state can be given
21174
- change: {
21175
-
21176
- state: function() {
21177
- module.debug('Determining state change direction');
21178
- // inactive to active change
21179
- if( module.is.inactive() ) {
21180
- module.activate();
21181
- }
21182
- else {
21183
- module.deactivate();
21184
- }
21185
- if(settings.sync) {
21186
- module.sync();
21187
- }
21188
- settings.onChange.call(element);
21189
- },
21190
-
21191
- text: function() {
21192
- if( module.is.textEnabled() ) {
21193
- if(module.is.disabled() ) {
21194
- module.verbose('Changing text to disabled text', text.hover);
21195
- module.update.text(text.disabled);
21196
- }
21197
- else if( module.is.active() ) {
21198
- if(text.hover) {
21199
- module.verbose('Changing text to hover text', text.hover);
21200
- module.update.text(text.hover);
21201
- }
21202
- else if(text.deactivate) {
21203
- module.verbose('Changing text to deactivating text', text.deactivate);
21204
- module.update.text(text.deactivate);
21205
- }
21206
- }
21207
- else {
21208
- if(text.hover) {
21209
- module.verbose('Changing text to hover text', text.hover);
21210
- module.update.text(text.hover);
21211
- }
21212
- else if(text.activate){
21213
- module.verbose('Changing text to activating text', text.activate);
21214
- module.update.text(text.activate);
21215
- }
21216
- }
21217
- }
21218
- }
21219
-
21220
- },
21221
-
21222
- activate: function() {
21223
- if( settings.activateTest.call(element) ) {
21224
- module.debug('Setting state to active');
21225
- $module
21226
- .addClass(className.active)
21227
- ;
21228
- module.update.text(text.active);
21229
- settings.onActivate.call(element);
21230
- }
21231
- },
21232
-
21233
- deactivate: function() {
21234
- if( settings.deactivateTest.call(element) ) {
21235
- module.debug('Setting state to inactive');
21236
- $module
21237
- .removeClass(className.active)
21238
- ;
21239
- module.update.text(text.inactive);
21240
- settings.onDeactivate.call(element);
21241
- }
21242
- },
21243
-
21244
- sync: function() {
21245
- module.verbose('Syncing other buttons to current state');
21246
- if( module.is.active() ) {
21247
- $allModules
21248
- .not($module)
21249
- .state('activate');
21250
- }
21251
- else {
21252
- $allModules
21253
- .not($module)
21254
- .state('deactivate')
21255
- ;
21256
- }
21257
- },
21258
-
21259
- get: {
21260
- text: function() {
21261
- return (settings.selector.text)
21262
- ? $module.find(settings.selector.text).text()
21263
- : $module.html()
21264
- ;
21265
- },
21266
- textFor: function(state) {
21267
- return text[state] || false;
21268
- }
21269
- },
21270
-
21271
- flash: {
21272
- text: function(text, duration, callback) {
21273
- var
21274
- previousText = module.get.text()
21275
- ;
21276
- module.debug('Flashing text message', text, duration);
21277
- text = text || settings.text.flash;
21278
- duration = duration || settings.flashDuration;
21279
- callback = callback || function() {};
21280
- module.update.text(text);
21281
- setTimeout(function(){
21282
- module.update.text(previousText);
21283
- callback.call(element);
21284
- }, duration);
21285
- }
21286
- },
21287
-
21288
- reset: {
21289
- // on mouseout sets text to previous value
21290
- text: function() {
21291
- var
21292
- activeText = text.active || $module.data(metadata.storedText),
21293
- inactiveText = text.inactive || $module.data(metadata.storedText)
21294
- ;
21295
- if( module.is.textEnabled() ) {
21296
- if( module.is.active() && activeText) {
21297
- module.verbose('Resetting active text', activeText);
21298
- module.update.text(activeText);
21299
- }
21300
- else if(inactiveText) {
21301
- module.verbose('Resetting inactive text', activeText);
21302
- module.update.text(inactiveText);
21303
- }
21304
- }
21305
- }
21306
- },
21307
-
21308
- update: {
21309
- text: function(text) {
21310
- var
21311
- currentText = module.get.text()
21312
- ;
21313
- if(text && text !== currentText) {
21314
- module.debug('Updating text', text);
21315
- if(settings.selector.text) {
21316
- $module
21317
- .data(metadata.storedText, text)
21318
- .find(settings.selector.text)
21319
- .text(text)
21320
- ;
21321
- }
21322
- else {
21323
- $module
21324
- .data(metadata.storedText, text)
21325
- .html(text)
21326
- ;
21327
- }
21328
- }
21329
- else {
21330
- module.debug('Text is already set, ignoring update', text);
21331
- }
21332
- }
21333
- },
21334
-
21335
- setting: function(name, value) {
21336
- module.debug('Changing setting', name, value);
21337
- if( $.isPlainObject(name) ) {
21338
- $.extend(true, settings, name);
21339
- }
21340
- else if(value !== undefined) {
21341
- if($.isPlainObject(settings[name])) {
21342
- $.extend(true, settings[name], value);
21343
- }
21344
- else {
21345
- settings[name] = value;
21346
- }
21347
- }
21348
- else {
21349
- return settings[name];
21350
- }
21351
- },
21352
- internal: function(name, value) {
21353
- if( $.isPlainObject(name) ) {
21354
- $.extend(true, module, name);
21355
- }
21356
- else if(value !== undefined) {
21357
- module[name] = value;
21358
- }
21359
- else {
21360
- return module[name];
21361
- }
21362
- },
21363
- debug: function() {
21364
- if(!settings.silent && settings.debug) {
21365
- if(settings.performance) {
21366
- module.performance.log(arguments);
21367
- }
21368
- else {
21369
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
21370
- module.debug.apply(console, arguments);
21371
- }
21372
- }
21373
- },
21374
- verbose: function() {
21375
- if(!settings.silent && settings.verbose && settings.debug) {
21376
- if(settings.performance) {
21377
- module.performance.log(arguments);
21378
- }
21379
- else {
21380
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
21381
- module.verbose.apply(console, arguments);
21382
- }
21383
- }
21384
- },
21385
- error: function() {
21386
- if(!settings.silent) {
21387
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
21388
- module.error.apply(console, arguments);
21389
- }
21390
- },
21391
- performance: {
21392
- log: function(message) {
21393
- var
21394
- currentTime,
21395
- executionTime,
21396
- previousTime
21397
- ;
21398
- if(settings.performance) {
21399
- currentTime = new Date().getTime();
21400
- previousTime = time || currentTime;
21401
- executionTime = currentTime - previousTime;
21402
- time = currentTime;
21403
- performance.push({
21404
- 'Name' : message[0],
21405
- 'Arguments' : [].slice.call(message, 1) || '',
21406
- 'Element' : element,
21407
- 'Execution Time' : executionTime
21408
- });
21409
- }
21410
- clearTimeout(module.performance.timer);
21411
- module.performance.timer = setTimeout(module.performance.display, 500);
21412
- },
21413
- display: function() {
21414
- var
21415
- title = settings.name + ':',
21416
- totalTime = 0
21417
- ;
21418
- time = false;
21419
- clearTimeout(module.performance.timer);
21420
- $.each(performance, function(index, data) {
21421
- totalTime += data['Execution Time'];
21422
- });
21423
- title += ' ' + totalTime + 'ms';
21424
- if(moduleSelector) {
21425
- title += ' \'' + moduleSelector + '\'';
21426
- }
21427
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
21428
- console.groupCollapsed(title);
21429
- if(console.table) {
21430
- console.table(performance);
21431
- }
21432
- else {
21433
- $.each(performance, function(index, data) {
21434
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
21435
- });
21436
- }
21437
- console.groupEnd();
21438
- }
21439
- performance = [];
21440
- }
21441
- },
21442
- invoke: function(query, passedArguments, context) {
21443
- var
21444
- object = instance,
21445
- maxDepth,
21446
- found,
21447
- response
21448
- ;
21449
- passedArguments = passedArguments || queryArguments;
21450
- context = element || context;
21451
- if(typeof query == 'string' && object !== undefined) {
21452
- query = query.split(/[\. ]/);
21453
- maxDepth = query.length - 1;
21454
- $.each(query, function(depth, value) {
21455
- var camelCaseValue = (depth != maxDepth)
21456
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
21457
- : query
21458
- ;
21459
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
21460
- object = object[camelCaseValue];
21461
- }
21462
- else if( object[camelCaseValue] !== undefined ) {
21463
- found = object[camelCaseValue];
21464
- return false;
21465
- }
21466
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
21467
- object = object[value];
21468
- }
21469
- else if( object[value] !== undefined ) {
21470
- found = object[value];
21471
- return false;
21472
- }
21473
- else {
21474
- module.error(error.method, query);
21475
- return false;
21476
- }
21477
- });
21478
- }
21479
- if ( $.isFunction( found ) ) {
21480
- response = found.apply(context, passedArguments);
21481
- }
21482
- else if(found !== undefined) {
21483
- response = found;
21484
- }
21485
- if($.isArray(returnedValue)) {
21486
- returnedValue.push(response);
21487
- }
21488
- else if(returnedValue !== undefined) {
21489
- returnedValue = [returnedValue, response];
21490
- }
21491
- else if(response !== undefined) {
21492
- returnedValue = response;
21493
- }
21494
- return found;
21495
- }
21496
- };
21497
-
21498
- if(methodInvoked) {
21499
- if(instance === undefined) {
21500
- module.initialize();
21501
- }
21502
- module.invoke(query);
21503
- }
21504
- else {
21505
- if(instance !== undefined) {
21506
- instance.invoke('destroy');
21507
- }
21508
- module.initialize();
21509
- }
21510
- })
21511
- ;
21512
-
21513
- return (returnedValue !== undefined)
21514
- ? returnedValue
21515
- : this
21516
- ;
21517
- };
21518
-
21519
- $.fn.state.settings = {
21520
-
21521
- // module info
21522
- name : 'State',
21523
-
21524
- // debug output
21525
- debug : false,
21526
-
21527
- // verbose debug output
21528
- verbose : false,
21529
-
21530
- // namespace for events
21531
- namespace : 'state',
21532
-
21533
- // debug data includes performance
21534
- performance : true,
21535
-
21536
- // callback occurs on state change
21537
- onActivate : function() {},
21538
- onDeactivate : function() {},
21539
- onChange : function() {},
21540
-
21541
- // state test functions
21542
- activateTest : function() { return true; },
21543
- deactivateTest : function() { return true; },
21544
-
21545
- // whether to automatically map default states
21546
- automatic : true,
21547
-
21548
- // activate / deactivate changes all elements instantiated at same time
21549
- sync : false,
21550
-
21551
- // default flash text duration, used for temporarily changing text of an element
21552
- flashDuration : 1000,
21553
-
21554
- // selector filter
21555
- filter : {
21556
- text : '.loading, .disabled',
21557
- active : '.disabled'
21558
- },
21559
-
21560
- context : false,
21561
-
21562
- // error
21563
- error: {
21564
- beforeSend : 'The before send function has cancelled state change',
21565
- method : 'The method you called is not defined.'
21566
- },
21567
-
21568
- // metadata
21569
- metadata: {
21570
- promise : 'promise',
21571
- storedText : 'stored-text'
21572
- },
21573
-
21574
- // change class on state
21575
- className: {
21576
- active : 'active',
21577
- disabled : 'disabled',
21578
- error : 'error',
21579
- loading : 'loading',
21580
- success : 'success',
21581
- warning : 'warning'
21582
- },
21583
-
21584
- selector: {
21585
- // selector for text node
21586
- text: false
21587
- },
21588
-
21589
- defaults : {
21590
- input: {
21591
- disabled : true,
21592
- loading : true,
21593
- active : true
21594
- },
21595
- button: {
21596
- disabled : true,
21597
- loading : true,
21598
- active : true,
21599
- },
21600
- progress: {
21601
- active : true,
21602
- success : true,
21603
- warning : true,
21604
- error : true
21605
- }
21606
- },
21607
-
21608
- states : {
21609
- active : true,
21610
- disabled : true,
21611
- error : true,
21612
- loading : true,
21613
- success : true,
21614
- warning : true
21615
- },
21616
-
21617
- text : {
21618
- disabled : false,
21619
- flash : false,
21620
- hover : false,
21621
- active : false,
21622
- inactive : false,
21623
- activate : false,
21624
- deactivate : false
21625
- }
21626
-
21627
- };
21628
-
21629
-
21630
-
21631
- })( jQuery, window, document );
21632
-
21633
- /*!
21634
- * # Semantic UI 2.2.12 - Visibility
21635
- * http://github.com/semantic-org/semantic-ui/
21636
- *
21637
- *
21638
- * Released under the MIT license
21639
- * http://opensource.org/licenses/MIT
21640
- *
21641
- */
21642
-
21643
- ;(function ($, window, document, undefined) {
21644
-
21645
- "use strict";
21217
+ 'use strict';
21646
21218
 
21647
21219
  window = (typeof window != 'undefined' && window.Math == Math)
21648
21220
  ? window
@@ -22559,13 +22131,13 @@ $.fn.visibility = function(parameters) {
22559
22131
  // visibility
22560
22132
  element.topPassed = (screen.top >= element.top);
22561
22133
  element.bottomPassed = (screen.top >= element.bottom);
22562
- element.topVisible = (screen.bottom >= element.top) && !element.bottomPassed;
22563
- element.bottomVisible = (screen.bottom >= element.bottom) && !element.topPassed;
22134
+ element.topVisible = (screen.bottom >= element.top) && !element.topPassed;
22135
+ element.bottomVisible = (screen.bottom >= element.bottom) && !element.bottomPassed;
22564
22136
  element.pixelsPassed = 0;
22565
22137
  element.percentagePassed = 0;
22566
22138
 
22567
22139
  // meta calculations
22568
- element.onScreen = (element.topVisible && !element.bottomPassed);
22140
+ element.onScreen = ((element.topVisible || element.passing) && !element.bottomPassed);
22569
22141
  element.passing = (element.topPassed && !element.bottomPassed);
22570
22142
  element.offScreen = (!element.onScreen);
22571
22143