fomantic-ui 2.9.0-beta.98 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/.all-contributorsrc +86 -1
  2. package/.github/codeql/codeql-config.yml +4 -0
  3. package/.github/dependabot.yml +10 -0
  4. package/.github/workflows/ci.yml +10 -6
  5. package/.github/workflows/codeql.yml +68 -0
  6. package/.github/workflows/nightly.yml +16 -8
  7. package/.github/workflows/release.yml +34 -0
  8. package/CHANGELOG.md +925 -650
  9. package/CONTRIBUTORS.md +16 -1
  10. package/FAQ.md +38 -38
  11. package/README.md +7 -7
  12. package/dist/components/accordion.css +136 -40
  13. package/dist/components/accordion.js +10 -4
  14. package/dist/components/accordion.min.css +2 -2
  15. package/dist/components/accordion.min.js +3 -3
  16. package/dist/components/ad.css +4 -4
  17. package/dist/components/ad.min.css +2 -2
  18. package/dist/components/api.js +82 -25
  19. package/dist/components/api.min.js +3 -3
  20. package/dist/components/breadcrumb.css +1 -1
  21. package/dist/components/breadcrumb.min.css +1 -1
  22. package/dist/components/button.css +124 -77
  23. package/dist/components/button.min.css +2 -2
  24. package/dist/components/calendar.css +18 -1
  25. package/dist/components/calendar.js +92 -73
  26. package/dist/components/calendar.min.css +2 -2
  27. package/dist/components/calendar.min.js +3 -3
  28. package/dist/components/card.css +729 -99
  29. package/dist/components/card.min.css +2 -2
  30. package/dist/components/checkbox.css +92 -92
  31. package/dist/components/checkbox.js +4 -3
  32. package/dist/components/checkbox.min.css +2 -2
  33. package/dist/components/checkbox.min.js +3 -3
  34. package/dist/components/comment.css +2 -2
  35. package/dist/components/comment.min.css +2 -2
  36. package/dist/components/container.css +98 -4
  37. package/dist/components/container.min.css +2 -2
  38. package/dist/components/dimmer.css +7 -6
  39. package/dist/components/dimmer.js +19 -10
  40. package/dist/components/dimmer.min.css +2 -2
  41. package/dist/components/dimmer.min.js +3 -3
  42. package/dist/components/divider.css +31 -31
  43. package/dist/components/divider.min.css +2 -2
  44. package/dist/components/dropdown.css +74 -47
  45. package/dist/components/dropdown.js +237 -188
  46. package/dist/components/dropdown.min.css +2 -2
  47. package/dist/components/dropdown.min.js +3 -3
  48. package/dist/components/embed.css +5 -5
  49. package/dist/components/embed.js +14 -10
  50. package/dist/components/embed.min.css +2 -2
  51. package/dist/components/embed.min.js +3 -3
  52. package/dist/components/emoji.css +10797 -8839
  53. package/dist/components/emoji.min.css +1 -1
  54. package/dist/components/feed.css +2 -2
  55. package/dist/components/feed.min.css +2 -2
  56. package/dist/components/flag.css +563 -563
  57. package/dist/components/flag.min.css +2 -2
  58. package/dist/components/flyout.css +592 -0
  59. package/dist/components/flyout.js +1530 -0
  60. package/dist/components/flyout.min.css +9 -0
  61. package/dist/components/flyout.min.js +11 -0
  62. package/dist/components/form.css +67 -39
  63. package/dist/components/form.js +25 -21
  64. package/dist/components/form.min.css +2 -2
  65. package/dist/components/form.min.js +3 -3
  66. package/dist/components/grid.css +15 -14
  67. package/dist/components/grid.min.css +2 -2
  68. package/dist/components/header.css +6 -4
  69. package/dist/components/header.min.css +2 -2
  70. package/dist/components/icon.css +2105 -2061
  71. package/dist/components/icon.min.css +2 -2
  72. package/dist/components/image.css +1 -1
  73. package/dist/components/image.min.css +1 -1
  74. package/dist/components/input.css +743 -21
  75. package/dist/components/input.min.css +2 -2
  76. package/dist/components/item.css +5 -5
  77. package/dist/components/item.min.css +2 -2
  78. package/dist/components/label.css +72 -68
  79. package/dist/components/label.min.css +2 -2
  80. package/dist/components/list.css +31 -31
  81. package/dist/components/list.min.css +2 -2
  82. package/dist/components/loader.css +352 -352
  83. package/dist/components/loader.min.css +2 -2
  84. package/dist/components/menu.css +79 -71
  85. package/dist/components/menu.min.css +1 -1
  86. package/dist/components/message.css +3 -3
  87. package/dist/components/message.min.css +2 -2
  88. package/dist/components/modal.css +35 -6
  89. package/dist/components/modal.js +97 -57
  90. package/dist/components/modal.min.css +2 -2
  91. package/dist/components/modal.min.js +3 -3
  92. package/dist/components/nag.css +1 -1
  93. package/dist/components/nag.js +3 -3
  94. package/dist/components/nag.min.css +1 -1
  95. package/dist/components/nag.min.js +3 -3
  96. package/dist/components/placeholder.css +33 -33
  97. package/dist/components/placeholder.min.css +2 -2
  98. package/dist/components/popup.css +100 -104
  99. package/dist/components/popup.js +17 -23
  100. package/dist/components/popup.min.css +2 -2
  101. package/dist/components/popup.min.js +3 -3
  102. package/dist/components/progress.css +1 -1
  103. package/dist/components/progress.js +6 -3
  104. package/dist/components/progress.min.css +1 -1
  105. package/dist/components/progress.min.js +3 -3
  106. package/dist/components/rail.css +1 -1
  107. package/dist/components/rail.min.css +1 -1
  108. package/dist/components/rating.css +1 -1
  109. package/dist/components/rating.js +8 -4
  110. package/dist/components/rating.min.css +1 -1
  111. package/dist/components/rating.min.js +3 -3
  112. package/dist/components/reset.css +5 -4
  113. package/dist/components/reset.min.css +2 -2
  114. package/dist/components/reveal.css +1 -1
  115. package/dist/components/reveal.min.css +1 -1
  116. package/dist/components/search.css +6 -6
  117. package/dist/components/search.js +48 -21
  118. package/dist/components/search.min.css +2 -2
  119. package/dist/components/search.min.js +3 -3
  120. package/dist/components/segment.css +107 -29
  121. package/dist/components/segment.min.css +2 -2
  122. package/dist/components/shape.css +1 -1
  123. package/dist/components/shape.js +4 -4
  124. package/dist/components/shape.min.css +1 -1
  125. package/dist/components/shape.min.js +3 -3
  126. package/dist/components/sidebar.css +20 -8
  127. package/dist/components/sidebar.js +141 -44
  128. package/dist/components/sidebar.min.css +2 -2
  129. package/dist/components/sidebar.min.js +3 -3
  130. package/dist/components/site.css +79 -4
  131. package/dist/components/site.js +2 -2
  132. package/dist/components/site.min.css +2 -2
  133. package/dist/components/site.min.js +3 -3
  134. package/dist/components/slider.css +17 -17
  135. package/dist/components/slider.js +79 -64
  136. package/dist/components/slider.min.css +1 -1
  137. package/dist/components/slider.min.js +3 -3
  138. package/dist/components/state.js +3 -3
  139. package/dist/components/state.min.js +3 -3
  140. package/dist/components/statistic.css +4 -4
  141. package/dist/components/statistic.min.css +2 -2
  142. package/dist/components/step.css +30 -30
  143. package/dist/components/step.min.css +2 -2
  144. package/dist/components/sticky.css +1 -1
  145. package/dist/components/sticky.js +30 -19
  146. package/dist/components/sticky.min.css +1 -1
  147. package/dist/components/sticky.min.js +3 -3
  148. package/dist/components/tab.css +5 -5
  149. package/dist/components/tab.js +25 -7
  150. package/dist/components/tab.min.css +2 -2
  151. package/dist/components/tab.min.js +3 -3
  152. package/dist/components/table.css +1680 -270
  153. package/dist/components/table.min.css +2 -2
  154. package/dist/components/text.css +1 -1
  155. package/dist/components/text.min.css +1 -1
  156. package/dist/components/toast.css +11 -1
  157. package/dist/components/toast.js +19 -12
  158. package/dist/components/toast.min.css +2 -2
  159. package/dist/components/toast.min.js +3 -3
  160. package/dist/components/transition.css +1 -1
  161. package/dist/components/transition.js +27 -22
  162. package/dist/components/transition.min.css +1 -1
  163. package/dist/components/transition.min.js +3 -3
  164. package/dist/components/visibility.js +5 -5
  165. package/dist/components/visibility.min.js +3 -3
  166. package/dist/semantic.css +41415 -34430
  167. package/dist/semantic.js +2597 -696
  168. package/dist/semantic.min.css +3 -3
  169. package/dist/semantic.min.js +3 -3
  170. package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  171. package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  172. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  173. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  174. package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  175. package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  176. package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  177. package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  178. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  179. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  180. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  181. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  182. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  183. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  184. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  185. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  186. package/dist/themes/default/assets/fonts/brand-icons.woff +0 -0
  187. package/dist/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  188. package/dist/themes/default/assets/fonts/icons.woff +0 -0
  189. package/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  190. package/dist/themes/default/assets/fonts/outline-icons.woff +0 -0
  191. package/dist/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  192. package/dist/themes/{default → famfamfam}/assets/images/flags.png +0 -0
  193. package/examples/assets/library/iframe-content.js +3 -3
  194. package/examples/assets/library/iframe.js +3 -3
  195. package/examples/components/button.html +1 -1
  196. package/examples/components/card.html +1 -1
  197. package/examples/components/input.html +1 -1
  198. package/examples/components/menu.html +1 -1
  199. package/examples/components/site.html +1 -1
  200. package/examples/components/sticky-context.html +197 -0
  201. package/examples/components/table.html +1 -1
  202. package/package.json +20 -18
  203. package/scripts/nightly-version.js +47 -38
  204. package/src/definitions/behaviors/api.js +81 -24
  205. package/src/definitions/behaviors/form.js +24 -20
  206. package/src/definitions/behaviors/state.js +2 -2
  207. package/src/definitions/behaviors/visibility.js +4 -4
  208. package/src/definitions/collections/form.less +43 -31
  209. package/src/definitions/collections/grid.less +11 -11
  210. package/src/definitions/collections/menu.less +62 -47
  211. package/src/definitions/collections/message.less +1 -1
  212. package/src/definitions/collections/table.less +636 -39
  213. package/src/definitions/elements/button.less +254 -125
  214. package/src/definitions/elements/container.less +129 -0
  215. package/src/definitions/elements/divider.less +24 -24
  216. package/src/definitions/elements/emoji.less +25 -2
  217. package/src/definitions/elements/flag.less +47 -1
  218. package/src/definitions/elements/header.less +4 -2
  219. package/src/definitions/elements/icon.less +91 -12
  220. package/src/definitions/elements/input.less +259 -27
  221. package/src/definitions/elements/label.less +42 -39
  222. package/src/definitions/elements/list.less +29 -30
  223. package/src/definitions/elements/loader.less +87 -87
  224. package/src/definitions/elements/placeholder.less +32 -32
  225. package/src/definitions/elements/segment.less +147 -34
  226. package/src/definitions/elements/step.less +25 -25
  227. package/src/definitions/globals/reset.less +2 -2
  228. package/src/definitions/globals/site.js +1 -1
  229. package/src/definitions/globals/site.less +14 -12
  230. package/src/definitions/modules/accordion.js +9 -3
  231. package/src/definitions/modules/accordion.less +371 -269
  232. package/src/definitions/modules/calendar.js +91 -72
  233. package/src/definitions/modules/calendar.less +20 -0
  234. package/src/definitions/modules/checkbox.js +3 -2
  235. package/src/definitions/modules/checkbox.less +53 -53
  236. package/src/definitions/modules/dimmer.js +18 -9
  237. package/src/definitions/modules/dimmer.less +11 -10
  238. package/src/definitions/modules/dropdown.js +236 -187
  239. package/src/definitions/modules/dropdown.less +110 -77
  240. package/src/definitions/modules/embed.js +13 -9
  241. package/src/definitions/modules/embed.less +4 -4
  242. package/src/definitions/modules/flyout.js +1530 -0
  243. package/src/definitions/modules/flyout.less +650 -0
  244. package/src/definitions/modules/modal.js +96 -56
  245. package/src/definitions/modules/modal.less +68 -33
  246. package/src/definitions/modules/nag.js +2 -2
  247. package/src/definitions/modules/popup.js +16 -22
  248. package/src/definitions/modules/popup.less +86 -90
  249. package/src/definitions/modules/progress.js +5 -2
  250. package/src/definitions/modules/rating.js +7 -3
  251. package/src/definitions/modules/search.js +47 -20
  252. package/src/definitions/modules/search.less +3 -3
  253. package/src/definitions/modules/shape.js +3 -3
  254. package/src/definitions/modules/sidebar.js +140 -43
  255. package/src/definitions/modules/sidebar.less +20 -5
  256. package/src/definitions/modules/slider.js +78 -63
  257. package/src/definitions/modules/slider.less +9 -9
  258. package/src/definitions/modules/sticky.js +29 -18
  259. package/src/definitions/modules/sticky.less +3 -1
  260. package/src/definitions/modules/tab.js +24 -6
  261. package/src/definitions/modules/tab.less +4 -4
  262. package/src/definitions/modules/toast.js +18 -11
  263. package/src/definitions/modules/toast.less +6 -0
  264. package/src/definitions/modules/transition.js +26 -21
  265. package/src/definitions/views/ad.less +3 -3
  266. package/src/definitions/views/card.less +124 -18
  267. package/src/definitions/views/comment.less +1 -1
  268. package/src/definitions/views/feed.less +1 -1
  269. package/src/definitions/views/item.less +3 -3
  270. package/src/definitions/views/statistic.less +1 -1
  271. package/src/semantic.less +1 -0
  272. package/src/theme.config.example +1 -0
  273. package/src/theme.less +13 -2
  274. package/src/themes/amazon/globals/site.variables +1 -0
  275. package/src/themes/basic/elements/icon.overrides +149 -149
  276. package/src/themes/basic/elements/icon.variables +16 -6
  277. package/src/themes/basic/elements/step.overrides +2 -2
  278. package/src/themes/bookish/elements/header.overrides +1 -1
  279. package/src/themes/chubby/elements/button.overrides +1 -1
  280. package/src/themes/chubby/elements/header.overrides +1 -1
  281. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  282. package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  283. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  284. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  285. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  286. package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  287. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  288. package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  289. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  290. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  291. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  292. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  293. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  294. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  295. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  296. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  297. package/src/themes/default/assets/fonts/brand-icons.woff +0 -0
  298. package/src/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  299. package/src/themes/default/assets/fonts/icons.woff +0 -0
  300. package/src/themes/default/assets/fonts/icons.woff2 +0 -0
  301. package/src/themes/default/assets/fonts/outline-icons.woff +0 -0
  302. package/src/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  303. package/src/themes/default/collections/form.variables +4 -0
  304. package/src/themes/default/collections/table.variables +52 -0
  305. package/src/themes/default/elements/button.variables +5 -0
  306. package/src/themes/default/elements/container.variables +12 -0
  307. package/src/themes/default/elements/divider.overrides +7 -7
  308. package/src/themes/default/elements/emoji.overrides +0 -3090
  309. package/src/themes/default/elements/emoji.variables +3563 -1
  310. package/src/themes/default/elements/flag.overrides +0 -1640
  311. package/src/themes/default/elements/flag.variables +1597 -1
  312. package/src/themes/default/elements/icon.overrides +1 -2043
  313. package/src/themes/default/elements/icon.variables +2045 -30
  314. package/src/themes/default/elements/input.variables +15 -0
  315. package/src/themes/default/elements/segment.variables +8 -0
  316. package/src/themes/default/elements/step.overrides +4 -7
  317. package/src/themes/default/globals/site.variables +103 -8
  318. package/src/themes/default/globals/variation.variables +59 -0
  319. package/src/themes/default/modules/accordion.overrides +7 -9
  320. package/src/themes/default/modules/accordion.variables +34 -2
  321. package/src/themes/default/modules/calendar.variables +3 -0
  322. package/src/themes/default/modules/checkbox.overrides +10 -12
  323. package/src/themes/default/modules/checkbox.variables +5 -5
  324. package/src/themes/default/modules/dropdown.overrides +6 -9
  325. package/src/themes/default/modules/dropdown.variables +6 -9
  326. package/src/themes/default/modules/flyout.overrides +3 -0
  327. package/src/themes/default/modules/flyout.variables +100 -0
  328. package/src/themes/default/modules/modal.variables +16 -2
  329. package/src/themes/default/modules/popup.variables +0 -2
  330. package/src/themes/default/modules/sidebar.variables +4 -1
  331. package/src/themes/default/views/card.variables +8 -0
  332. package/src/themes/{default → famfamfam}/assets/images/flags.png +0 -0
  333. package/src/themes/famfamfam/elements/flag.overrides +496 -496
  334. package/src/themes/famfamfam/elements/flag.variables +8 -1
  335. package/src/themes/github/elements/icon.overrides +206 -206
  336. package/src/themes/github/elements/icon.variables +16 -1
  337. package/src/themes/github/elements/step.overrides +5 -5
  338. package/src/themes/github/globals/site.variables +1 -0
  339. package/src/themes/github/modules/dropdown.overrides +7 -10
  340. package/src/themes/instagram/views/card.overrides +1 -1
  341. package/src/themes/joypixels/elements/emoji.overrides +0 -3089
  342. package/src/themes/joypixels/elements/emoji.variables +3562 -5
  343. package/src/themes/material/collections/menu.overrides +1 -1
  344. package/src/themes/material/elements/button.overrides +1 -1
  345. package/src/themes/material/elements/header.overrides +1 -1
  346. package/src/themes/material/elements/icon.overrides +932 -932
  347. package/src/themes/material/elements/icon.variables +17 -0
  348. package/src/themes/material/globals/site.variables +0 -1
  349. package/src/themes/material/modules/dropdown.overrides +1 -1
  350. package/src/themes/material/modules/modal.overrides +1 -1
  351. package/src/themes/pulsar/elements/loader.overrides +2 -2
  352. package/src/themes/resetcss/globals/reset.overrides +3 -3
  353. package/src/themes/rtl/globals/site.overrides +1 -1
  354. package/src/themes/striped/modules/progress.overrides +1 -1
  355. package/src/themes/systemfont/globals/reset.overrides +8 -0
  356. package/src/themes/systemfont/globals/site.variables +10 -0
  357. package/src/themes/twitter/elements/emoji.overrides +0 -3091
  358. package/src/themes/twitter/elements/emoji.variables +3558 -6
  359. package/tasks/admin/distributions/create.js +1 -1
  360. package/tasks/admin/publish.js +1 -1
  361. package/tasks/admin/release.js +1 -1
  362. package/tasks/build/assets.js +1 -1
  363. package/tasks/build/css.js +3 -3
  364. package/tasks/build/javascript.js +3 -3
  365. package/tasks/check-install.js +1 -1
  366. package/tasks/clean.js +1 -1
  367. package/tasks/collections/README.md +1 -1
  368. package/tasks/collections/admin.js +1 -1
  369. package/tasks/config/admin/oauth.example.js +1 -1
  370. package/tasks/config/admin/release.js +1 -0
  371. package/tasks/config/admin/templates/composer.json +1 -1
  372. package/tasks/config/admin/templates/css-package.js +8 -12
  373. package/tasks/config/admin/templates/less-package.js +2 -2
  374. package/tasks/config/defaults.js +1 -0
  375. package/tasks/config/project/install.js +16 -13
  376. package/tasks/install.js +1 -0
  377. package/tasks/rtl/watch.js +1 -1
  378. package/tasks/version.js +1 -1
  379. package/test/fixtures/accordion.html +1 -1
  380. package/test/fixtures/checkbox.html +1 -1
  381. package/test/fixtures/dropdown.html +1 -1
  382. package/test/fixtures/modal.html +1 -1
  383. package/test/fixtures/popup.html +1 -1
  384. package/test/fixtures/rating.html +1 -1
  385. package/test/fixtures/shape.html +1 -1
  386. package/test/fixtures/sidebar.html +1 -1
  387. package/test/fixtures/tab.html +1 -1
  388. package/test/fixtures/transition.html +1 -1
  389. package/test/fixtures/video.html +1 -1
  390. package/test/helpers/jasmine-jquery.js +2 -2
  391. package/test/helpers/jasmine-sinon.js +1 -1
  392. package/test/helpers/jquery-events.js +1 -1
  393. package/test/helpers/sinon.js +2 -2
  394. package/test/meteor/fonts.js +1 -1
  395. package/test/modules/accordion.spec.js +1 -1
  396. package/test/modules/checkbox.spec.js +1 -1
  397. package/test/modules/dropdown.spec.js +1 -1
  398. package/test/modules/modal.spec.js +1 -1
  399. package/test/modules/module.spec.js +1 -1
  400. package/test/modules/popup.spec.js +1 -1
  401. package/test/modules/search.spec.js +1 -1
  402. package/test/modules/shape.spec.js +1 -1
  403. package/test/modules/sidebar.spec.js +1 -1
  404. package/test/modules/tab.spec.js +1 -1
  405. package/test/modules/transition.spec.js +1 -1
  406. package/test/modules/video.spec.js +1 -1
  407. package/dist/themes/basic/assets/fonts/icons.eot +0 -0
  408. package/dist/themes/basic/assets/fonts/icons.svg +0 -450
  409. package/dist/themes/basic/assets/fonts/icons.ttf +0 -0
  410. package/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
  411. package/dist/themes/default/assets/fonts/brand-icons.svg +0 -3570
  412. package/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
  413. package/dist/themes/default/assets/fonts/icons.eot +0 -0
  414. package/dist/themes/default/assets/fonts/icons.svg +0 -4938
  415. package/dist/themes/default/assets/fonts/icons.ttf +0 -0
  416. package/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
  417. package/dist/themes/default/assets/fonts/outline-icons.svg +0 -803
  418. package/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
  419. package/dist/themes/github/assets/fonts/octicons-local.ttf +0 -0
  420. package/dist/themes/github/assets/fonts/octicons.svg +0 -200
  421. package/dist/themes/github/assets/fonts/octicons.ttf +0 -0
  422. package/dist/themes/material/assets/fonts/icons.eot +0 -0
  423. package/dist/themes/material/assets/fonts/icons.svg +0 -2373
  424. package/dist/themes/material/assets/fonts/icons.ttf +0 -0
  425. package/src/themes/basic/assets/fonts/icons.eot +0 -0
  426. package/src/themes/basic/assets/fonts/icons.svg +0 -450
  427. package/src/themes/basic/assets/fonts/icons.ttf +0 -0
  428. package/src/themes/default/assets/fonts/brand-icons.eot +0 -0
  429. package/src/themes/default/assets/fonts/brand-icons.svg +0 -3570
  430. package/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
  431. package/src/themes/default/assets/fonts/icons.eot +0 -0
  432. package/src/themes/default/assets/fonts/icons.svg +0 -4938
  433. package/src/themes/default/assets/fonts/icons.ttf +0 -0
  434. package/src/themes/default/assets/fonts/outline-icons.eot +0 -0
  435. package/src/themes/default/assets/fonts/outline-icons.svg +0 -803
  436. package/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
  437. package/src/themes/github/assets/fonts/octicons-local.ttf +0 -0
  438. package/src/themes/github/assets/fonts/octicons.svg +0 -200
  439. package/src/themes/github/assets/fonts/octicons.ttf +0 -0
  440. package/src/themes/material/assets/fonts/icons.eot +0 -0
  441. package/src/themes/material/assets/fonts/icons.svg +0 -2373
  442. package/src/themes/material/assets/fonts/icons.ttf +0 -0
@@ -70,6 +70,7 @@ $.fn.slider = function(parameters) {
70
70
 
71
71
  $module = $(this),
72
72
  $currThumb,
73
+ touchIdentifier,
73
74
  $thumb,
74
75
  $secondThumb,
75
76
  $track,
@@ -86,7 +87,6 @@ $.fn.slider = function(parameters) {
86
87
  secondPos,
87
88
  offset,
88
89
  precision,
89
- isTouch,
90
90
  gapRatio = 1,
91
91
  previousValue,
92
92
 
@@ -104,7 +104,6 @@ $.fn.slider = function(parameters) {
104
104
  currentRange += 1;
105
105
  documentEventID = currentRange;
106
106
 
107
- isTouch = module.setup.testOutTouch();
108
107
  module.setup.layout();
109
108
  module.setup.labels();
110
109
 
@@ -175,14 +174,6 @@ $.fn.slider = function(parameters) {
175
174
  }
176
175
  }
177
176
  },
178
- testOutTouch: function() {
179
- try {
180
- document.createEvent('TouchEvent');
181
- return true;
182
- } catch (e) {
183
- return false;
184
- }
185
- },
186
177
  customLabel: function() {
187
178
  var
188
179
  $children = $labels.find('.label'),
@@ -236,9 +227,6 @@ $.fn.slider = function(parameters) {
236
227
  module.bind.globalKeyboardEvents();
237
228
  module.bind.keyboardEvents();
238
229
  module.bind.mouseEvents();
239
- if(module.is.touch()) {
240
- module.bind.touchEvents();
241
- }
242
230
  if (settings.autoAdjustLabels) {
243
231
  module.bind.windowEvents();
244
232
  }
@@ -251,7 +239,7 @@ $.fn.slider = function(parameters) {
251
239
  $(document).on('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
252
240
  },
253
241
  mouseEvents: function() {
254
- module.verbose('Binding mouse events');
242
+ module.verbose('Binding mouse and touch events');
255
243
  $module.find('.track, .thumb, .inner').on('mousedown' + eventNamespace, function(event) {
256
244
  event.stopImmediatePropagation();
257
245
  event.preventDefault();
@@ -264,27 +252,20 @@ $.fn.slider = function(parameters) {
264
252
  $module.on('mouseleave' + eventNamespace, function(event) {
265
253
  isHover = false;
266
254
  });
267
- },
268
- touchEvents: function() {
269
- module.verbose('Binding touch events');
270
- $module.find('.track, .thumb, .inner').on('touchstart' + eventNamespace, function(event) {
271
- event.stopImmediatePropagation();
272
- event.preventDefault();
273
- module.event.down(event);
274
- });
275
- $module.on('touchstart' + eventNamespace, module.event.down);
255
+ // All touch events are invoked on the element where the touch *started*. Thus, we can bind them all
256
+ // on the thumb(s) and don't need to worry about interference with other components, i.e. no dynamic binding
257
+ // and unbinding required.
258
+ $module.find('.thumb')
259
+ .on('touchstart' + eventNamespace, module.event.touchDown)
260
+ .on('touchmove' + eventNamespace, module.event.move)
261
+ .on('touchend' + eventNamespace, module.event.up)
262
+ .on('touchcancel' + eventNamespace, module.event.touchCancel);
276
263
  },
277
264
  slidingEvents: function() {
278
265
  // these don't need the identifier because we only ever want one of them to be registered with document
279
266
  module.verbose('Binding page wide events while handle is being draged');
280
- if(module.is.touch()) {
281
- $(document).on('touchmove' + eventNamespace, module.event.move);
282
- $(document).on('touchend' + eventNamespace, module.event.up);
283
- }
284
- else {
285
- $(document).on('mousemove' + eventNamespace, module.event.move);
286
- $(document).on('mouseup' + eventNamespace, module.event.up);
287
- }
267
+ $(document).on('mousemove' + eventNamespace, module.event.move);
268
+ $(document).on('mouseup' + eventNamespace, module.event.up);
288
269
  },
289
270
  windowEvents: function() {
290
271
  $window.on('resize' + eventNamespace, module.event.resize);
@@ -294,24 +275,22 @@ $.fn.slider = function(parameters) {
294
275
  unbind: {
295
276
  events: function() {
296
277
  $module.find('.track, .thumb, .inner').off('mousedown' + eventNamespace);
297
- $module.find('.track, .thumb, .inner').off('touchstart' + eventNamespace);
298
278
  $module.off('mousedown' + eventNamespace);
299
279
  $module.off('mouseenter' + eventNamespace);
300
280
  $module.off('mouseleave' + eventNamespace);
301
- $module.off('touchstart' + eventNamespace);
281
+ $module.find('.thumb')
282
+ .off('touchstart' + eventNamespace)
283
+ .off('touchmove' + eventNamespace)
284
+ .off('touchend' + eventNamespace)
285
+ .off('touchcancel' + eventNamespace);
302
286
  $module.off('keydown' + eventNamespace);
303
287
  $module.off('focusout' + eventNamespace);
304
288
  $(document).off('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
305
289
  $window.off('resize' + eventNamespace);
306
290
  },
307
291
  slidingEvents: function() {
308
- if(module.is.touch()) {
309
- $(document).off('touchmove' + eventNamespace);
310
- $(document).off('touchend' + eventNamespace);
311
- } else {
312
- $(document).off('mousemove' + eventNamespace);
313
- $(document).off('mouseup' + eventNamespace);
314
- }
292
+ $(document).off('mousemove' + eventNamespace);
293
+ $(document).off('mouseup' + eventNamespace);
315
294
  },
316
295
  },
317
296
 
@@ -341,10 +320,31 @@ $.fn.slider = function(parameters) {
341
320
  module.bind.slidingEvents();
342
321
  }
343
322
  },
323
+ touchDown: function(event) {
324
+ event.preventDefault(); // disable mouse emulation and touch-scrolling
325
+ event.stopImmediatePropagation();
326
+ if(touchIdentifier !== undefined) {
327
+ // ignore multiple touches on the same slider --
328
+ // we cannot handle changing both thumbs at once due to shared state
329
+ return;
330
+ }
331
+ $currThumb = $(event.target);
332
+ var touchEvent = event.touches ? event : event.originalEvent;
333
+ touchIdentifier = touchEvent.targetTouches[0].identifier;
334
+ if(previousValue === undefined) {
335
+ previousValue = module.get.currentThumbValue();
336
+ }
337
+ },
344
338
  move: function(event) {
345
- event.preventDefault();
339
+ if(event.type == 'mousemove') {
340
+ event.preventDefault(); // prevent text selection etc.
341
+ }
342
+ if(module.is.disabled()) {
343
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
344
+ return;
345
+ }
346
346
  var value = module.determine.valueFromEvent(event);
347
- if($currThumb === undefined) {
347
+ if(event.type == 'mousemove' && $currThumb === undefined) {
348
348
  var
349
349
  eventPos = module.determine.eventPos(event),
350
350
  newPos = module.determine.pos(eventPos)
@@ -381,10 +381,23 @@ $.fn.slider = function(parameters) {
381
381
  },
382
382
  up: function(event) {
383
383
  event.preventDefault();
384
+ if(module.is.disabled()) {
385
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
386
+ return;
387
+ }
384
388
  var value = module.determine.valueFromEvent(event);
385
389
  module.set.value(value);
386
390
  module.unbind.slidingEvents();
391
+ touchIdentifier = undefined;
392
+ if (previousValue !== undefined) {
393
+ previousValue = undefined;
394
+ }
395
+ },
396
+ touchCancel: function(event) {
397
+ event.preventDefault();
398
+ touchIdentifier = undefined;
387
399
  if (previousValue !== undefined) {
400
+ module.update.value(previousValue);
388
401
  previousValue = undefined;
389
402
  }
390
403
  },
@@ -441,8 +454,8 @@ $.fn.slider = function(parameters) {
441
454
  module.setup.labels();
442
455
  },
443
456
  takeStep: function(multiplier) {
457
+ multiplier = multiplier != undefined ? multiplier : 1;
444
458
  var
445
- multiplier = multiplier != undefined ? multiplier : 1,
446
459
  step = module.get.step(),
447
460
  currValue = module.get.currentThumbValue()
448
461
  ;
@@ -459,8 +472,8 @@ $.fn.slider = function(parameters) {
459
472
  },
460
473
 
461
474
  backStep: function(multiplier) {
475
+ multiplier = multiplier != undefined ? multiplier : 1;
462
476
  var
463
- multiplier = multiplier != undefined ? multiplier : 1,
464
477
  step = module.get.step(),
465
478
  currValue = module.get.currentThumbValue()
466
479
  ;
@@ -500,9 +513,6 @@ $.fn.slider = function(parameters) {
500
513
  },
501
514
  smooth: function() {
502
515
  return settings.smooth || $module.hasClass(settings.className.smooth);
503
- },
504
- touch: function() {
505
- return isTouch;
506
516
  }
507
517
  },
508
518
 
@@ -711,11 +721,11 @@ $.fn.slider = function(parameters) {
711
721
  ;
712
722
  return pos;
713
723
  },
714
- positionFromValue: function(value) {
724
+ positionFromValue: function(val) {
715
725
  var
716
726
  min = module.get.min(),
717
727
  max = module.get.max(),
718
- value = value > max ? max : value < min ? min : value,
728
+ value = val > max ? max : val < min ? min : val,
719
729
  trackLength = module.get.trackLength(),
720
730
  ratio = (value - min) / (max - min),
721
731
  position = Math.round(ratio * trackLength)
@@ -766,12 +776,19 @@ $.fn.slider = function(parameters) {
766
776
  return value;
767
777
  },
768
778
  eventPos: function(event) {
769
- if(module.is.touch()) {
779
+ if(event.type === "touchmove" || event.type === "touchend") {
780
+ var
781
+ touchEvent = event.touches ? event : event.originalEvent,
782
+ touch = touchEvent.changedTouches[0]; // fall back to first touch if correct touch not found
783
+ for(var i=0; i < touchEvent.touches.length; i++) {
784
+ if(touchEvent.touches[i].identifier === touchIdentifier) {
785
+ touch = touchEvent.touches[i];
786
+ break;
787
+ }
788
+ }
770
789
  var
771
- touchEvent = event.changedTouches ? event : event.originalEvent,
772
- touches = touchEvent.changedTouches[0] ? touchEvent.changedTouches : touchEvent.touches,
773
- touchY = touches[0].pageY,
774
- touchX = touches[0].pageX
790
+ touchY = touch.pageY,
791
+ touchX = touch.pageX
775
792
  ;
776
793
  return module.is.vertical() ? touchY : touchX;
777
794
  }
@@ -916,14 +933,12 @@ $.fn.slider = function(parameters) {
916
933
  },
917
934
  position: function(position, which) {
918
935
  var thumbVal = module.determine.value(position);
919
- switch (which) {
920
- case 'second':
921
- module.secondThumbVal = thumbVal;
922
- module.update.position(thumbVal, $secondThumb);
923
- break;
924
- default:
925
- module.thumbVal = thumbVal;
926
- module.update.position(thumbVal, $thumb);
936
+ if (which === 'second') {
937
+ module.secondThumbVal = thumbVal;
938
+ module.update.position(thumbVal, $secondThumb);
939
+ } else {
940
+ module.thumbVal = thumbVal;
941
+ module.update.position(thumbVal, $thumb);
927
942
  }
928
943
  value = Math.abs(module.thumbVal - (module.secondThumbVal || 0));
929
944
  module.set.value(value);
@@ -1192,7 +1207,7 @@ $.fn.slider = function(parameters) {
1192
1207
  response
1193
1208
  ;
1194
1209
  passedArguments = passedArguments || queryArguments;
1195
- context = element || context;
1210
+ context = context || element;
1196
1211
  if(typeof query == 'string' && object !== undefined) {
1197
1212
  query = query.split(/[\. ]/);
1198
1213
  maxDepth = query.length - 1;
@@ -206,7 +206,7 @@
206
206
  transform: translate(-50%, 100%);
207
207
  }
208
208
  & when (@variationSliderTicked) {
209
- .ui.labeled.ticked.slider > .labels .label:after {
209
+ .ui.labeled.ticked.slider > .labels .label::after {
210
210
  content: ' ';
211
211
  height: @labelHeight;
212
212
  width: @labelWidth;
@@ -215,11 +215,11 @@
215
215
  top: 100%;
216
216
  left: 50%;
217
217
  }
218
- .ui.bottom.aligned.labeled.ticked.slider > .labels .label:after {
218
+ .ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
219
219
  top: auto;
220
220
  bottom: 100%;
221
221
  }
222
- .ui.labeled.ticked.slider > .labels .halftick.label:after {
222
+ .ui.labeled.ticked.slider > .labels .halftick.label::after {
223
223
  height: (@labelHeight / 2);
224
224
  }
225
225
  }
@@ -240,13 +240,13 @@
240
240
  transform: translate(-100%, -50%);
241
241
  }
242
242
 
243
- .ui.labeled.vertical.slider > .labels .label:after {
243
+ .ui.labeled.vertical.slider > .labels .label::after {
244
244
  width: @labelHeight;
245
245
  height: @labelWidth;
246
246
  left: 100%;
247
247
  top: 50%;
248
248
  }
249
- .ui.labeled.vertical.slider > .labels .halftick.label:after {
249
+ .ui.labeled.vertical.slider > .labels .halftick.label::after {
250
250
  width: (@labelHeight / 2);
251
251
  height: @labelWidth;
252
252
  }
@@ -386,10 +386,10 @@
386
386
  }
387
387
  & when (@variationSliderLabeled) {
388
388
  .ui.@{value}.labeled.slider:not(.vertical) > .labels,
389
- .ui.@{value}.labeled.slider:not(.vertical) > .labels .label:after {
389
+ .ui.@{value}.labeled.slider:not(.vertical) > .labels .label::after {
390
390
  height: @@lh;
391
391
  }
392
- .ui.@{value}.labeled.slider:not(.vertical) > .labels .halftick.label:after {
392
+ .ui.@{value}.labeled.slider:not(.vertical) > .labels .halftick.label::after {
393
393
  height: (@@lh / 2);
394
394
  }
395
395
  }
@@ -405,10 +405,10 @@
405
405
  }
406
406
  & when (@variationSliderLabeled) {
407
407
  .ui.@{value}.labeled.vertical.slider> .labels,
408
- .ui.@{value}.labeled.vertical.slider> .labels .label:after {
408
+ .ui.@{value}.labeled.vertical.slider> .labels .label::after {
409
409
  width: @@lh;
410
410
  }
411
- .ui.@{value}.labeled.vertical.slider> .labels .halftick.label:after {
411
+ .ui.@{value}.labeled.vertical.slider> .labels .halftick.label::after {
412
412
  width: (@@lh / 2);
413
413
  }
414
414
  }
@@ -53,7 +53,7 @@ $.fn.sticky = function(parameters) {
53
53
 
54
54
  $module = $(this),
55
55
  $window = $(window),
56
- $scroll = $(settings.scrollContext),
56
+ $scroll = [window,document].indexOf(settings.scrollContext) < 0 ? $(document).find(settings.scrollContext) : $(settings.scrollContext),
57
57
  $container,
58
58
  $context,
59
59
 
@@ -139,7 +139,7 @@ $.fn.sticky = function(parameters) {
139
139
 
140
140
  determineContainer: function() {
141
141
  if(settings.container) {
142
- $container = $(settings.container);
142
+ $container = [window,document].indexOf(settings.container) < 0 ? $(document).find(settings.container) : $(settings.container);
143
143
  }
144
144
  else {
145
145
  $container = $module.offsetParent();
@@ -148,14 +148,13 @@ $.fn.sticky = function(parameters) {
148
148
 
149
149
  determineContext: function() {
150
150
  if(settings.context) {
151
- $context = $(settings.context);
151
+ $context = [window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context);
152
152
  }
153
153
  else {
154
154
  $context = $container;
155
155
  }
156
156
  if($context.length === 0) {
157
157
  module.error(error.invalidContext, settings.context, $module);
158
- return;
159
158
  }
160
159
  },
161
160
 
@@ -166,7 +165,6 @@ $.fn.sticky = function(parameters) {
166
165
  if(module.cache.element.height > module.cache.context.height) {
167
166
  module.reset();
168
167
  module.error(error.elementSize, $module);
169
- return;
170
168
  }
171
169
  },
172
170
 
@@ -317,13 +315,8 @@ $.fn.sticky = function(parameters) {
317
315
  direction = 'down'
318
316
  ;
319
317
  scroll = scroll || $scroll.scrollTop();
320
- if(module.lastScroll !== undefined) {
321
- if(module.lastScroll < scroll) {
322
- direction = 'down';
323
- }
324
- else if(module.lastScroll > scroll) {
318
+ if(module.lastScroll && module.lastScroll > scroll) {
325
319
  direction = 'up';
326
- }
327
320
  }
328
321
  return direction;
329
322
  },
@@ -371,7 +364,7 @@ $.fn.sticky = function(parameters) {
371
364
  lastScroll: function() {
372
365
  delete module.lastScroll;
373
366
  },
374
- elementScroll: function(scroll) {
367
+ elementScroll: function() {
375
368
  delete module.elementScroll;
376
369
  },
377
370
  minimumSize: function() {
@@ -393,14 +386,26 @@ $.fn.sticky = function(parameters) {
393
386
  },
394
387
  containerSize: function() {
395
388
  var
396
- tagName = $container.get(0).tagName
389
+ tagName = $container[0].tagName
397
390
  ;
398
- if(tagName === 'HTML' || tagName == 'body') {
391
+ if(tagName === 'HTML' || tagName === 'body') {
399
392
  // this can trigger for too many reasons
400
393
  //module.error(error.container, tagName, $module);
401
394
  module.determineContainer();
402
395
  }
403
396
  else {
397
+ var tallestHeight = Math.max(module.cache.context.height, module.cache.element.height);
398
+ if(tallestHeight - $container.outerHeight() > settings.jitter) {
399
+ module.debug('Context is taller than container. Specifying exact height for container', module.cache.context.height);
400
+ $container.css({
401
+ height: tallestHeight,
402
+ });
403
+ }
404
+ else {
405
+ $container.css({
406
+ height: '',
407
+ });
408
+ }
404
409
  if( Math.abs($container.outerHeight() - module.cache.context.height) > settings.jitter) {
405
410
  module.debug('Context has padding, specifying exact height for container', module.cache.context.height);
406
411
  $container.css({
@@ -467,9 +472,9 @@ $.fn.sticky = function(parameters) {
467
472
  }
468
473
  },
469
474
 
470
- stick: function(scroll) {
475
+ stick: function(scrollPosition) {
471
476
  var
472
- cachedPosition = scroll || $scroll.scrollTop(),
477
+ cachedPosition = scrollPosition || $scroll.scrollTop(),
473
478
  cache = module.cache,
474
479
  fits = cache.fits,
475
480
  sameHeight = cache.sameHeight,
@@ -499,7 +504,7 @@ $.fn.sticky = function(parameters) {
499
504
  module.bindBottom();
500
505
  }
501
506
  else if(scroll.top > element.top) {
502
- if( (element.height + scroll.top - elementScroll) >= context.bottom ) {
507
+ if( (element.height + scroll.top - elementScroll) >= context.bottom && element.height < context.height) {
503
508
  module.debug('Initial element position is bottom of container');
504
509
  module.bindBottom();
505
510
  }
@@ -578,6 +583,9 @@ $.fn.sticky = function(parameters) {
578
583
  bindTop: function() {
579
584
  module.debug('Binding element to top of parent container');
580
585
  module.remove.offset();
586
+ if(settings.setSize) {
587
+ module.set.size();
588
+ }
581
589
  $module
582
590
  .css({
583
591
  left : '',
@@ -595,6 +603,9 @@ $.fn.sticky = function(parameters) {
595
603
  bindBottom: function() {
596
604
  module.debug('Binding element to bottom of parent container');
597
605
  module.remove.offset();
606
+ if(settings.setSize) {
607
+ module.set.size();
608
+ }
598
609
  $module
599
610
  .css({
600
611
  left : '',
@@ -816,7 +827,7 @@ $.fn.sticky = function(parameters) {
816
827
  response
817
828
  ;
818
829
  passedArguments = passedArguments || queryArguments;
819
- context = element || context;
830
+ context = context || element;
820
831
  if(typeof query == 'string' && object !== undefined) {
821
832
  query = query.split(/[\. ]/);
822
833
  maxDepth = query.length - 1;
@@ -66,7 +66,9 @@
66
66
  .ui.native.sticky {
67
67
  position: -webkit-sticky;
68
68
  position: -moz-sticky;
69
- position: -ms-sticky;
69
+ & when (@supportIE) {
70
+ position: -ms-sticky;
71
+ }
70
72
  position: -o-sticky;
71
73
  position: sticky;
72
74
  }
@@ -100,10 +100,18 @@ $.fn.tab = function(parameters) {
100
100
  initializedHistory = true;
101
101
  }
102
102
 
103
- if(settings.autoTabActivation && instance === undefined && module.determine.activeTab() == null) {
104
- module.debug('No active tab detected, setting first tab active', module.get.initialPath());
105
- module.changeTab(settings.autoTabActivation === true ? module.get.initialPath() : settings.autoTabActivation);
106
- };
103
+ var activeTab = module.determine.activeTab();
104
+ if(settings.autoTabActivation && instance === undefined && activeTab == null) {
105
+ activeTab = settings.autoTabActivation === true ? module.get.initialPath() : settings.autoTabActivation;
106
+ module.debug('No active tab detected, setting tab active', activeTab);
107
+ module.changeTab(activeTab);
108
+ }
109
+ if(activeTab != null && settings.history) {
110
+ var autoUpdate = $.address.autoUpdate();
111
+ $.address.autoUpdate(false);
112
+ $.address.value(activeTab);
113
+ $.address.autoUpdate(autoUpdate);
114
+ }
107
115
 
108
116
  module.instantiate();
109
117
  },
@@ -154,7 +162,7 @@ $.fn.tab = function(parameters) {
154
162
  module.verbose('Determined parent element for creating context', $context);
155
163
  }
156
164
  else if(settings.context) {
157
- $context = $(settings.context);
165
+ $context = [window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context);
158
166
  module.verbose('Using selector for tab context', settings.context, $context);
159
167
  }
160
168
  else {
@@ -203,6 +211,7 @@ $.fn.tab = function(parameters) {
203
211
  .history(true)
204
212
  .state(settings.path)
205
213
  ;
214
+ $(window).trigger('popstate');
206
215
  }
207
216
  else {
208
217
  module.error(error.path);
@@ -370,6 +379,10 @@ $.fn.tab = function(parameters) {
370
379
  module.verbose('Tab parameters found', nextPathArray);
371
380
  }
372
381
  }
382
+ if (settings.onBeforeChange.call(element, currentPath) === false) {
383
+ module.debug('onBeforeChange returned false, cancelling tab change', $tab);
384
+ return false;
385
+ }
373
386
  if(isLastTab && remoteContent) {
374
387
  if(!shouldIgnoreLoad) {
375
388
  module.activate.navigation(currentPath);
@@ -406,6 +419,10 @@ $.fn.tab = function(parameters) {
406
419
  // if anchor exists use parent tab
407
420
  if($anchor && $anchor.length > 0 && currentPath) {
408
421
  module.debug('Anchor link used, opening parent tab', $tab, $anchor);
422
+ if (settings.onBeforeChange.call(element, currentPath) === false) {
423
+ module.debug('onBeforeChange returned false, cancelling tab change', $tab);
424
+ return false;
425
+ }
409
426
  if( !$tab.hasClass(className.active) ) {
410
427
  setTimeout(function() {
411
428
  module.scrollTo($anchor);
@@ -851,7 +868,7 @@ $.fn.tab = function(parameters) {
851
868
  response
852
869
  ;
853
870
  passedArguments = passedArguments || queryArguments;
854
- context = element || context;
871
+ context = context || element;
855
872
  if(typeof query == 'string' && object !== undefined) {
856
873
  query = query.split(/[\. ]/);
857
874
  maxDepth = query.length - 1;
@@ -959,6 +976,7 @@ $.fn.tab.settings = {
959
976
  onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load
960
977
  onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible
961
978
  onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content
979
+ onBeforeChange: function(tabPath) {}, // called before a tab is about to be changed. Returning false will cancel the tab change
962
980
 
963
981
  templates : {
964
982
  determineTitle: function(tabArray) {} // returns page title for path
@@ -55,8 +55,8 @@
55
55
  left: @loadingContentOffset !important;
56
56
  }
57
57
 
58
- .ui.tab.loading:before,
59
- .ui.tab.loading.segment:before {
58
+ .ui.tab.loading::before,
59
+ .ui.tab.loading.segment::before {
60
60
  position: absolute;
61
61
  content: '';
62
62
  top: @loaderDistanceFromTop;
@@ -69,8 +69,8 @@
69
69
  border-radius: @circularRadius;
70
70
  border: @loaderLineWidth solid @loaderFillColor;
71
71
  }
72
- .ui.tab.loading:after,
73
- .ui.tab.loading.segment:after {
72
+ .ui.tab.loading::after,
73
+ .ui.tab.loading.segment::after {
74
74
  position: absolute;
75
75
  content: '';
76
76
  top: @loaderDistanceFromTop;