fomantic-ui 2.9.0-beta.30 → 2.9.0-beta.300

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 (408) hide show
  1. package/.all-contributorsrc +242 -3
  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/CONTRIBUTORS.md +81 -37
  9. package/FAQ.md +38 -38
  10. package/README.md +8 -8
  11. package/dist/components/accordion.css +176 -36
  12. package/dist/components/accordion.js +6 -3
  13. package/dist/components/accordion.min.css +2 -2
  14. package/dist/components/accordion.min.js +3 -3
  15. package/dist/components/ad.css +4 -4
  16. package/dist/components/ad.min.css +2 -2
  17. package/dist/components/api.js +89 -30
  18. package/dist/components/api.min.js +3 -3
  19. package/dist/components/breadcrumb.css +1 -1
  20. package/dist/components/breadcrumb.min.css +1 -1
  21. package/dist/components/button.css +204 -157
  22. package/dist/components/button.min.css +2 -2
  23. package/dist/components/calendar.css +18 -1
  24. package/dist/components/calendar.js +85 -68
  25. package/dist/components/calendar.min.css +2 -2
  26. package/dist/components/calendar.min.js +3 -3
  27. package/dist/components/card.css +754 -117
  28. package/dist/components/card.min.css +2 -2
  29. package/dist/components/checkbox.css +92 -91
  30. package/dist/components/checkbox.js +17 -11
  31. package/dist/components/checkbox.min.css +2 -2
  32. package/dist/components/checkbox.min.js +3 -3
  33. package/dist/components/comment.css +12 -12
  34. package/dist/components/comment.min.css +2 -2
  35. package/dist/components/container.css +98 -4
  36. package/dist/components/container.min.css +2 -2
  37. package/dist/components/dimmer.css +29 -14
  38. package/dist/components/dimmer.js +11 -5
  39. package/dist/components/dimmer.min.css +2 -2
  40. package/dist/components/dimmer.min.js +3 -3
  41. package/dist/components/divider.css +31 -31
  42. package/dist/components/divider.min.css +2 -2
  43. package/dist/components/dropdown.css +90 -50
  44. package/dist/components/dropdown.js +150 -115
  45. package/dist/components/dropdown.min.css +2 -2
  46. package/dist/components/dropdown.min.js +3 -3
  47. package/dist/components/embed.css +5 -5
  48. package/dist/components/embed.js +1 -1
  49. package/dist/components/embed.min.css +2 -2
  50. package/dist/components/embed.min.js +3 -3
  51. package/dist/components/emoji.css +10847 -8841
  52. package/dist/components/emoji.min.css +1 -1
  53. package/dist/components/feed.css +29 -29
  54. package/dist/components/feed.min.css +2 -2
  55. package/dist/components/flag.css +1011 -902
  56. package/dist/components/flag.min.css +2 -2
  57. package/dist/components/form.css +160 -83
  58. package/dist/components/form.js +39 -30
  59. package/dist/components/form.min.css +2 -2
  60. package/dist/components/form.min.js +3 -3
  61. package/dist/components/grid.css +25 -21
  62. package/dist/components/grid.min.css +2 -2
  63. package/dist/components/header.css +6 -4
  64. package/dist/components/header.min.css +2 -2
  65. package/dist/components/icon.css +2063 -1984
  66. package/dist/components/icon.min.css +2 -2
  67. package/dist/components/image.css +1 -1
  68. package/dist/components/image.min.css +1 -1
  69. package/dist/components/input.css +759 -22
  70. package/dist/components/input.min.css +2 -2
  71. package/dist/components/item.css +17 -17
  72. package/dist/components/item.min.css +2 -2
  73. package/dist/components/label.css +72 -68
  74. package/dist/components/label.min.css +2 -2
  75. package/dist/components/list.css +31 -31
  76. package/dist/components/list.min.css +2 -2
  77. package/dist/components/loader.css +352 -352
  78. package/dist/components/loader.min.css +2 -2
  79. package/dist/components/menu.css +108 -76
  80. package/dist/components/menu.min.css +1 -1
  81. package/dist/components/message.css +43 -43
  82. package/dist/components/message.min.css +2 -2
  83. package/dist/components/modal.css +29 -4
  84. package/dist/components/modal.js +128 -50
  85. package/dist/components/modal.min.css +2 -2
  86. package/dist/components/modal.min.js +3 -3
  87. package/dist/components/nag.css +1 -1
  88. package/dist/components/nag.js +2 -2
  89. package/dist/components/nag.min.css +1 -1
  90. package/dist/components/nag.min.js +3 -3
  91. package/dist/components/placeholder.css +33 -33
  92. package/dist/components/placeholder.min.css +2 -2
  93. package/dist/components/popup.css +100 -104
  94. package/dist/components/popup.js +11 -11
  95. package/dist/components/popup.min.css +2 -2
  96. package/dist/components/popup.min.js +3 -3
  97. package/dist/components/progress.css +1 -1
  98. package/dist/components/progress.js +4 -1
  99. package/dist/components/progress.min.css +1 -1
  100. package/dist/components/progress.min.js +3 -3
  101. package/dist/components/rail.css +1 -1
  102. package/dist/components/rail.min.css +1 -1
  103. package/dist/components/rating.css +1 -1
  104. package/dist/components/rating.js +1 -1
  105. package/dist/components/rating.min.css +1 -1
  106. package/dist/components/rating.min.js +3 -3
  107. package/dist/components/reset.css +5 -4
  108. package/dist/components/reset.min.css +2 -2
  109. package/dist/components/reveal.css +1 -1
  110. package/dist/components/reveal.min.css +1 -1
  111. package/dist/components/search.css +6 -6
  112. package/dist/components/search.js +23 -7
  113. package/dist/components/search.min.css +2 -2
  114. package/dist/components/search.min.js +3 -3
  115. package/dist/components/segment.css +118 -34
  116. package/dist/components/segment.min.css +2 -2
  117. package/dist/components/shape.css +1 -1
  118. package/dist/components/shape.js +3 -3
  119. package/dist/components/shape.min.css +1 -1
  120. package/dist/components/shape.min.js +3 -3
  121. package/dist/components/sidebar.css +7 -5
  122. package/dist/components/sidebar.js +14 -12
  123. package/dist/components/sidebar.min.css +2 -2
  124. package/dist/components/sidebar.min.js +3 -3
  125. package/dist/components/site.css +139 -42
  126. package/dist/components/site.js +1 -1
  127. package/dist/components/site.min.css +2 -2
  128. package/dist/components/site.min.js +3 -3
  129. package/dist/components/slider.css +17 -17
  130. package/dist/components/slider.js +68 -51
  131. package/dist/components/slider.min.css +1 -1
  132. package/dist/components/slider.min.js +3 -3
  133. package/dist/components/state.js +2 -2
  134. package/dist/components/state.min.js +3 -3
  135. package/dist/components/statistic.css +4 -4
  136. package/dist/components/statistic.min.css +2 -2
  137. package/dist/components/step.css +31 -31
  138. package/dist/components/step.min.css +2 -2
  139. package/dist/components/sticky.css +1 -1
  140. package/dist/components/sticky.js +4 -4
  141. package/dist/components/sticky.min.css +1 -1
  142. package/dist/components/sticky.min.js +3 -3
  143. package/dist/components/tab.css +5 -5
  144. package/dist/components/tab.js +24 -6
  145. package/dist/components/tab.min.css +2 -2
  146. package/dist/components/tab.min.js +3 -3
  147. package/dist/components/table.css +1684 -272
  148. package/dist/components/table.min.css +2 -2
  149. package/dist/components/text.css +1 -1
  150. package/dist/components/text.min.css +1 -1
  151. package/dist/components/toast.css +42 -1
  152. package/dist/components/toast.js +63 -31
  153. package/dist/components/toast.min.css +2 -2
  154. package/dist/components/toast.min.js +3 -3
  155. package/dist/components/transition.css +1 -1
  156. package/dist/components/transition.js +21 -16
  157. package/dist/components/transition.min.css +1 -1
  158. package/dist/components/transition.min.js +3 -3
  159. package/dist/components/visibility.js +2 -2
  160. package/dist/components/visibility.min.js +3 -3
  161. package/dist/semantic.css +20183 -13376
  162. package/dist/semantic.js +771 -465
  163. package/dist/semantic.min.css +3 -3
  164. package/dist/semantic.min.js +3 -3
  165. package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  166. package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  167. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  168. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  169. package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  170. package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  171. package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  172. package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  173. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  174. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  175. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  176. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  177. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  178. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  179. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  180. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  181. package/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
  182. package/dist/themes/default/assets/fonts/brand-icons.svg +801 -654
  183. package/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
  184. package/dist/themes/default/assets/fonts/brand-icons.woff +0 -0
  185. package/dist/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  186. package/dist/themes/default/assets/fonts/icons.eot +0 -0
  187. package/dist/themes/default/assets/fonts/icons.svg +1175 -1079
  188. package/dist/themes/default/assets/fonts/icons.ttf +0 -0
  189. package/dist/themes/default/assets/fonts/icons.woff +0 -0
  190. package/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  191. package/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
  192. package/dist/themes/default/assets/fonts/outline-icons.svg +93 -95
  193. package/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
  194. package/dist/themes/default/assets/fonts/outline-icons.woff +0 -0
  195. package/dist/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  196. package/dist/themes/{default → famfamfam}/assets/images/flags.png +0 -0
  197. package/examples/assets/library/iframe-content.js +8 -8
  198. package/examples/assets/library/iframe.js +3 -3
  199. package/examples/components/button.html +1 -1
  200. package/examples/components/card.html +1 -1
  201. package/examples/components/input.html +1 -1
  202. package/examples/components/menu.html +1 -1
  203. package/examples/components/site.html +1 -1
  204. package/examples/components/table.html +1 -1
  205. package/package.json +18 -16
  206. package/scripts/nightly-version.js +47 -38
  207. package/src/definitions/behaviors/api.js +88 -29
  208. package/src/definitions/behaviors/form.js +38 -29
  209. package/src/definitions/behaviors/state.js +1 -1
  210. package/src/definitions/behaviors/visibility.js +1 -1
  211. package/src/definitions/collections/form.less +229 -165
  212. package/src/definitions/collections/grid.less +723 -687
  213. package/src/definitions/collections/menu.less +232 -170
  214. package/src/definitions/collections/message.less +49 -47
  215. package/src/definitions/collections/table.less +882 -272
  216. package/src/definitions/elements/button.less +611 -469
  217. package/src/definitions/elements/container.less +145 -8
  218. package/src/definitions/elements/divider.less +24 -24
  219. package/src/definitions/elements/emoji.less +39 -10
  220. package/src/definitions/elements/flag.less +53 -18
  221. package/src/definitions/elements/header.less +46 -37
  222. package/src/definitions/elements/icon.less +39 -32
  223. package/src/definitions/elements/input.less +281 -33
  224. package/src/definitions/elements/label.less +132 -128
  225. package/src/definitions/elements/list.less +84 -75
  226. package/src/definitions/elements/loader.less +99 -98
  227. package/src/definitions/elements/placeholder.less +32 -32
  228. package/src/definitions/elements/segment.less +177 -56
  229. package/src/definitions/elements/step.less +76 -72
  230. package/src/definitions/elements/text.less +17 -15
  231. package/src/definitions/globals/reset.less +2 -2
  232. package/src/definitions/globals/site.less +25 -2
  233. package/src/definitions/modules/accordion.js +5 -2
  234. package/src/definitions/modules/accordion.less +371 -219
  235. package/src/definitions/modules/calendar.js +84 -67
  236. package/src/definitions/modules/calendar.less +20 -0
  237. package/src/definitions/modules/checkbox.js +16 -10
  238. package/src/definitions/modules/checkbox.less +83 -227
  239. package/src/definitions/modules/dimmer.js +10 -4
  240. package/src/definitions/modules/dimmer.less +22 -8
  241. package/src/definitions/modules/dropdown.js +149 -114
  242. package/src/definitions/modules/dropdown.less +191 -136
  243. package/src/definitions/modules/embed.less +4 -4
  244. package/src/definitions/modules/modal.js +127 -49
  245. package/src/definitions/modules/modal.less +66 -33
  246. package/src/definitions/modules/nag.js +1 -1
  247. package/src/definitions/modules/nag.less +20 -19
  248. package/src/definitions/modules/popup.js +10 -10
  249. package/src/definitions/modules/popup.less +86 -90
  250. package/src/definitions/modules/progress.js +3 -0
  251. package/src/definitions/modules/progress.less +19 -18
  252. package/src/definitions/modules/rating.less +35 -34
  253. package/src/definitions/modules/search.js +22 -6
  254. package/src/definitions/modules/search.less +35 -19
  255. package/src/definitions/modules/shape.js +2 -2
  256. package/src/definitions/modules/sidebar.js +13 -11
  257. package/src/definitions/modules/sidebar.less +36 -22
  258. package/src/definitions/modules/slider.js +67 -50
  259. package/src/definitions/modules/slider.less +48 -47
  260. package/src/definitions/modules/sticky.js +3 -3
  261. package/src/definitions/modules/sticky.less +3 -1
  262. package/src/definitions/modules/tab.js +23 -5
  263. package/src/definitions/modules/tab.less +4 -4
  264. package/src/definitions/modules/toast.js +62 -30
  265. package/src/definitions/modules/toast.less +51 -16
  266. package/src/definitions/modules/transition.js +20 -15
  267. package/src/definitions/views/ad.less +3 -3
  268. package/src/definitions/views/card.less +522 -375
  269. package/src/definitions/views/comment.less +93 -82
  270. package/src/definitions/views/feed.less +164 -144
  271. package/src/definitions/views/item.less +251 -198
  272. package/src/definitions/views/statistic.less +91 -89
  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/step.overrides +2 -2
  277. package/src/themes/bookish/elements/header.overrides +1 -1
  278. package/src/themes/chubby/elements/button.overrides +1 -1
  279. package/src/themes/chubby/elements/header.overrides +1 -1
  280. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  281. package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  282. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  283. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  284. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  285. package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  286. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  287. package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  288. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  289. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  290. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  291. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  292. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  293. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  294. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  295. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  296. package/src/themes/default/assets/fonts/brand-icons.eot +0 -0
  297. package/src/themes/default/assets/fonts/brand-icons.svg +801 -654
  298. package/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
  299. package/src/themes/default/assets/fonts/brand-icons.woff +0 -0
  300. package/src/themes/default/assets/fonts/brand-icons.woff2 +0 -0
  301. package/src/themes/default/assets/fonts/icons.eot +0 -0
  302. package/src/themes/default/assets/fonts/icons.svg +1175 -1079
  303. package/src/themes/default/assets/fonts/icons.ttf +0 -0
  304. package/src/themes/default/assets/fonts/icons.woff +0 -0
  305. package/src/themes/default/assets/fonts/icons.woff2 +0 -0
  306. package/src/themes/default/assets/fonts/outline-icons.eot +0 -0
  307. package/src/themes/default/assets/fonts/outline-icons.svg +93 -95
  308. package/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
  309. package/src/themes/default/assets/fonts/outline-icons.woff +0 -0
  310. package/src/themes/default/assets/fonts/outline-icons.woff2 +0 -0
  311. package/src/themes/default/collections/form.variables +4 -0
  312. package/src/themes/default/collections/menu.variables +6 -0
  313. package/src/themes/default/collections/table.variables +52 -0
  314. package/src/themes/default/elements/button.variables +7 -1
  315. package/src/themes/default/elements/container.variables +12 -0
  316. package/src/themes/default/elements/divider.overrides +7 -7
  317. package/src/themes/default/elements/emoji.overrides +0 -3090
  318. package/src/themes/default/elements/emoji.variables +3575 -1
  319. package/src/themes/default/elements/flag.overrides +0 -991
  320. package/src/themes/default/elements/flag.variables +1609 -5
  321. package/src/themes/default/elements/icon.overrides +1975 -1949
  322. package/src/themes/default/elements/icon.variables +1 -0
  323. package/src/themes/default/elements/input.variables +15 -0
  324. package/src/themes/default/elements/segment.variables +8 -0
  325. package/src/themes/default/elements/step.overrides +3 -3
  326. package/src/themes/default/globals/site.variables +109 -8
  327. package/src/themes/default/globals/variation.variables +143 -6
  328. package/src/themes/default/modules/accordion.overrides +6 -5
  329. package/src/themes/default/modules/accordion.variables +49 -2
  330. package/src/themes/default/modules/calendar.variables +3 -0
  331. package/src/themes/default/modules/checkbox.overrides +9 -9
  332. package/src/themes/default/modules/checkbox.variables +5 -5
  333. package/src/themes/default/modules/dimmer.variables +1 -1
  334. package/src/themes/default/modules/dropdown.overrides +5 -5
  335. package/src/themes/default/modules/dropdown.variables +4 -10
  336. package/src/themes/default/modules/modal.variables +14 -0
  337. package/src/themes/default/modules/popup.variables +0 -2
  338. package/src/themes/default/modules/toast.variables +3 -0
  339. package/src/themes/default/views/card.variables +8 -0
  340. package/src/themes/{default → famfamfam}/assets/images/flags.png +0 -0
  341. package/src/themes/famfamfam/elements/flag.overrides +1026 -0
  342. package/src/themes/famfamfam/elements/flag.variables +20 -0
  343. package/src/themes/github/elements/icon.overrides +206 -206
  344. package/src/themes/github/elements/step.overrides +5 -5
  345. package/src/themes/github/globals/site.variables +1 -0
  346. package/src/themes/github/modules/dropdown.overrides +6 -6
  347. package/src/themes/instagram/views/card.overrides +1 -1
  348. package/src/themes/joypixels/elements/emoji.overrides +0 -3089
  349. package/src/themes/joypixels/elements/emoji.variables +3574 -5
  350. package/src/themes/material/collections/menu.overrides +1 -1
  351. package/src/themes/material/elements/button.overrides +1 -1
  352. package/src/themes/material/elements/header.overrides +1 -1
  353. package/src/themes/material/elements/icon.overrides +932 -932
  354. package/src/themes/material/globals/site.variables +0 -1
  355. package/src/themes/material/modules/dropdown.overrides +1 -1
  356. package/src/themes/material/modules/modal.overrides +1 -1
  357. package/src/themes/pulsar/elements/loader.overrides +2 -2
  358. package/src/themes/resetcss/globals/reset.overrides +3 -3
  359. package/src/themes/rtl/globals/site.overrides +1 -1
  360. package/src/themes/striped/modules/progress.overrides +1 -1
  361. package/src/themes/systemfont/globals/reset.overrides +8 -0
  362. package/src/themes/systemfont/globals/site.variables +10 -0
  363. package/src/themes/twitter/elements/emoji.overrides +0 -3091
  364. package/src/themes/twitter/elements/emoji.variables +3570 -6
  365. package/tasks/admin/distributions/create.js +1 -1
  366. package/tasks/admin/publish.js +1 -1
  367. package/tasks/admin/release.js +1 -1
  368. package/tasks/build/assets.js +1 -1
  369. package/tasks/build/css.js +9 -4
  370. package/tasks/build/javascript.js +3 -3
  371. package/tasks/check-install.js +1 -1
  372. package/tasks/clean.js +1 -1
  373. package/tasks/collections/README.md +1 -1
  374. package/tasks/collections/admin.js +1 -1
  375. package/tasks/config/admin/oauth.example.js +1 -1
  376. package/tasks/config/admin/templates/composer.json +1 -1
  377. package/tasks/config/project/install.js +15 -13
  378. package/tasks/install.js +1 -0
  379. package/tasks/rtl/watch.js +1 -1
  380. package/tasks/version.js +1 -1
  381. package/test/fixtures/accordion.html +1 -1
  382. package/test/fixtures/checkbox.html +1 -1
  383. package/test/fixtures/dropdown.html +1 -1
  384. package/test/fixtures/modal.html +1 -1
  385. package/test/fixtures/popup.html +1 -1
  386. package/test/fixtures/rating.html +1 -1
  387. package/test/fixtures/shape.html +1 -1
  388. package/test/fixtures/sidebar.html +1 -1
  389. package/test/fixtures/tab.html +1 -1
  390. package/test/fixtures/transition.html +1 -1
  391. package/test/fixtures/video.html +1 -1
  392. package/test/helpers/jasmine-jquery.js +2 -2
  393. package/test/helpers/jasmine-sinon.js +1 -1
  394. package/test/helpers/jquery-events.js +1 -1
  395. package/test/helpers/sinon.js +3 -3
  396. package/test/meteor/fonts.js +1 -1
  397. package/test/modules/accordion.spec.js +1 -1
  398. package/test/modules/checkbox.spec.js +1 -1
  399. package/test/modules/dropdown.spec.js +1 -1
  400. package/test/modules/modal.spec.js +1 -1
  401. package/test/modules/module.spec.js +1 -1
  402. package/test/modules/popup.spec.js +1 -1
  403. package/test/modules/search.spec.js +1 -1
  404. package/test/modules/shape.spec.js +1 -1
  405. package/test/modules/sidebar.spec.js +1 -1
  406. package/test/modules/tab.spec.js +1 -1
  407. package/test/modules/transition.spec.js +1 -1
  408. package/test/modules/video.spec.js +1 -1
@@ -367,20 +367,36 @@ $.fn.search = function(parameters) {
367
367
  urlData : {
368
368
  query : searchTerm
369
369
  },
370
- onSuccess : function(response) {
370
+ },
371
+ apiCallbacks = {
372
+ onSuccess : function(response, $module, xhr) {
371
373
  module.parse.response.call(element, response, searchTerm);
372
374
  callback();
375
+ if(settings.apiSettings && typeof settings.apiSettings.onSuccess === 'function') {
376
+ settings.apiSettings.onSuccess.call(this, response, $module, xhr);
377
+ }
373
378
  },
374
- onFailure : function() {
379
+ onFailure : function(response, $module, xhr) {
375
380
  module.displayMessage(error.serverError);
376
381
  callback();
382
+ if(settings.apiSettings && typeof settings.apiSettings.onFailure === 'function') {
383
+ settings.apiSettings.onFailure.call(this, response, $module, xhr);
384
+ }
377
385
  },
378
- onAbort : function(response) {
386
+ onAbort : function(status, $module, xhr) {
387
+ if(settings.apiSettings && typeof settings.apiSettings.onAbort === 'function') {
388
+ settings.apiSettings.onAbort.call(this, status, $module, xhr);
389
+ }
379
390
  },
380
- onError : module.error
391
+ onError : function(errorMessage, $module, xhr){
392
+ module.error();
393
+ if(settings.apiSettings && typeof settings.apiSettings.onError === 'function') {
394
+ settings.apiSettings.onError.call(this, errorMessage, $module, xhr);
395
+ }
396
+ }
381
397
  }
382
398
  ;
383
- $.extend(true, apiSettings, settings.apiSettings);
399
+ $.extend(true, apiSettings, settings.apiSettings, apiCallbacks);
384
400
  module.verbose('Setting up API request', apiSettings);
385
401
  $module.api(apiSettings);
386
402
  }
@@ -403,7 +419,7 @@ $.fn.search = function(parameters) {
403
419
  return $results.hasClass(className.animating);
404
420
  },
405
421
  chrome: function() {
406
- return !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);
422
+ return !!window.chrome && !window.StyleMedia;
407
423
  },
408
424
  hidden: function() {
409
425
  return $results.hasClass(className.hidden);
@@ -200,7 +200,7 @@
200
200
  Loading
201
201
  ---------------------*/
202
202
 
203
- .ui.loading.search .input > i.icon:before {
203
+ .ui.loading.search .input > i.icon::before {
204
204
  position: absolute;
205
205
  content: '';
206
206
  top: 50%;
@@ -213,7 +213,7 @@
213
213
  border-radius: @circularRadius;
214
214
  border: @loaderLineWidth solid @loaderFillColor;
215
215
  }
216
- .ui.loading.search .input > i.icon:after {
216
+ .ui.loading.search .input > i.icon::after {
217
217
  position: absolute;
218
218
  content: '';
219
219
  top: 50%;
@@ -393,7 +393,7 @@
393
393
  & when (@variationSearchScrolling),
394
394
  (@variationSearchShort),
395
395
  (@variationSearchLong) {
396
-
396
+
397
397
  /*-------------------
398
398
  Scrolling
399
399
  --------------------*/
@@ -437,16 +437,20 @@
437
437
  .ui.search.short > .results {
438
438
  max-height: @scrollingMobileMaxResultsHeight;
439
439
  }
440
- .ui.search[class*="very short"] > .results {
441
- max-height: @scrollingMobileMaxResultsHeight * 0.75;
440
+ & when (@variationSearchVeryShort) {
441
+ .ui.search[class*="very short"] > .results {
442
+ max-height: @scrollingMobileMaxResultsHeight * 0.75;
443
+ }
442
444
  }
443
445
  }
444
446
  & when (@variationSearchLong) {
445
447
  .ui.search.long > .results {
446
448
  max-height: @scrollingMobileMaxResultsHeight * 2;
447
449
  }
448
- .ui.search[class*="very long"] > .results {
449
- max-height: @scrollingMobileMaxResultsHeight * 3;
450
+ & when (@variationSearchVeryLong) {
451
+ .ui.search[class*="very long"] > .results {
452
+ max-height: @scrollingMobileMaxResultsHeight * 3;
453
+ }
450
454
  }
451
455
  }
452
456
  }
@@ -455,16 +459,20 @@
455
459
  .ui.search.short > .results {
456
460
  max-height: @scrollingTabletMaxResultsHeight;
457
461
  }
458
- .ui.search[class*="very short"] > .results {
459
- max-height: @scrollingTabletMaxResultsHeight * 0.75;
462
+ & when (@variationSearchVeryShort) {
463
+ .ui.search[class*="very short"] > .results {
464
+ max-height: @scrollingTabletMaxResultsHeight * 0.75;
465
+ }
460
466
  }
461
467
  }
462
468
  & when (@variationSearchLong) {
463
469
  .ui.search.long > .results {
464
470
  max-height: @scrollingTabletMaxResultsHeight * 2;
465
471
  }
466
- .ui.search[class*="very long"] > .results {
467
- max-height: @scrollingTabletMaxResultsHeight * 3;
472
+ & when (@variationSearchVeryLong) {
473
+ .ui.search[class*="very long"] > .results {
474
+ max-height: @scrollingTabletMaxResultsHeight * 3;
475
+ }
468
476
  }
469
477
  }
470
478
  }
@@ -473,16 +481,20 @@
473
481
  .ui.search.short > .results {
474
482
  max-height: @scrollingComputerMaxResultsHeight;
475
483
  }
476
- .ui.search[class*="very short"] > .results {
477
- max-height: @scrollingComputerMaxResultsHeight * 0.75;
484
+ & when (@variationSearchVeryShort) {
485
+ .ui.search[class*="very short"] > .results {
486
+ max-height: @scrollingComputerMaxResultsHeight * 0.75;
487
+ }
478
488
  }
479
489
  }
480
490
  & when (@variationSearchLong) {
481
491
  .ui.search.long > .results {
482
492
  max-height: @scrollingComputerMaxResultsHeight * 2;
483
493
  }
484
- .ui.search[class*="very long"] > .results {
485
- max-height: @scrollingComputerMaxResultsHeight * 3;
494
+ & when (@variationSearchVeryLong) {
495
+ .ui.search[class*="very long"] > .results {
496
+ max-height: @scrollingComputerMaxResultsHeight * 3;
497
+ }
486
498
  }
487
499
  }
488
500
  }
@@ -491,16 +503,20 @@
491
503
  .ui.search.short > .results {
492
504
  max-height: @scrollingWidescreenMaxResultsHeight;
493
505
  }
494
- .ui.search[class*="very short"] > .results {
495
- max-height: @scrollingWidescreenMaxResultsHeight * 0.75;
506
+ & when (@variationSearchVeryShort) {
507
+ .ui.search[class*="very short"] > .results {
508
+ max-height: @scrollingWidescreenMaxResultsHeight * 0.75;
509
+ }
496
510
  }
497
511
  }
498
512
  & when (@variationSearchLong) {
499
513
  .ui.search.long > .results {
500
514
  max-height: @scrollingWidescreenMaxResultsHeight * 2;
501
515
  }
502
- .ui.search[class*="very long"] > .results {
503
- max-height: @scrollingWidescreenMaxResultsHeight * 3;
516
+ & when (@variationSearchVeryLong) {
517
+ .ui.search[class*="very long"] > .results {
518
+ max-height: @scrollingWidescreenMaxResultsHeight * 3;
519
+ }
504
520
  }
505
521
  }
506
522
  }
@@ -126,7 +126,7 @@ $.fn.shape = function(parameters) {
126
126
  module.reset();
127
127
  module.set.active();
128
128
  };
129
- settings.beforeChange.call($nextSide[0]);
129
+ settings.onBeforeChange.call($nextSide[0]);
130
130
  if(module.get.transitionEvent()) {
131
131
  module.verbose('Starting CSS animation');
132
132
  $module
@@ -813,7 +813,7 @@ $.fn.shape.settings = {
813
813
  height: 'initial',
814
814
 
815
815
  // callback occurs on side change
816
- beforeChange : function() {},
816
+ onBeforeChange : function() {},
817
817
  onChange : function() {},
818
818
 
819
819
  // allow animation to same side
@@ -66,7 +66,7 @@ $.fn.sidebar = function(parameters) {
66
66
  moduleNamespace = 'module-' + namespace,
67
67
 
68
68
  $module = $(this),
69
- $context = $(settings.context),
69
+ $context = [window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context),
70
70
 
71
71
  $sidebars = $module.children(selector.sidebar),
72
72
  $fixed = $context.children(selector.fixed),
@@ -118,7 +118,7 @@ $.fn.sidebar = function(parameters) {
118
118
 
119
119
  create: {
120
120
  id: function() {
121
- id = (Math.random().toString(16) + '000000000').substr(2,8);
121
+ id = (Math.random().toString(16) + '000000000').slice(2, 10);
122
122
  elementNamespace = '.' + id;
123
123
  module.verbose('Creating unique id for element', id);
124
124
  }
@@ -261,7 +261,7 @@ $.fn.sidebar = function(parameters) {
261
261
  if(direction === 'left' || direction === 'right') {
262
262
  module.debug('Adding CSS rules for animation distance', width);
263
263
  style += ''
264
- + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'
264
+ + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher::after {'
265
265
  + ' -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);'
266
266
  + ' transform: translate3d('+ distance[direction] + 'px, 0, 0);'
267
267
  + ' }'
@@ -269,7 +269,7 @@ $.fn.sidebar = function(parameters) {
269
269
  }
270
270
  else if(direction === 'top' || direction == 'bottom') {
271
271
  style += ''
272
- + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'
272
+ + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher::after {'
273
273
  + ' -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);'
274
274
  + ' transform: translate3d(0, ' + distance[direction] + 'px, 0);'
275
275
  + ' }'
@@ -277,8 +277,8 @@ $.fn.sidebar = function(parameters) {
277
277
  }
278
278
  /* opposite sides visible forces content overlay */
279
279
  style += ''
280
- + ' body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after,'
281
- + ' body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after {'
280
+ + ' body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher::after,'
281
+ + ' body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher::after {'
282
282
  + ' -webkit-transform: translate3d(0, 0, 0);'
283
283
  + ' transform: translate3d(0, 0, 0);'
284
284
  + ' }'
@@ -294,7 +294,7 @@ $.fn.sidebar = function(parameters) {
294
294
 
295
295
  refresh: function() {
296
296
  module.verbose('Refreshing selector cache');
297
- $context = $(settings.context);
297
+ $context = [window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context);
298
298
  $sidebars = $context.children(selector.sidebar);
299
299
  $pusher = $context.children(selector.pusher);
300
300
  $fixed = $context.children(selector.fixed);
@@ -371,6 +371,10 @@ $.fn.sidebar = function(parameters) {
371
371
  : function(){}
372
372
  ;
373
373
  if(module.is.hidden()) {
374
+ if(settings.onShow.call(element) === false) {
375
+ module.verbose('Show callback returned false cancelling show');
376
+ return;
377
+ }
374
378
  module.refreshSidebars();
375
379
  if(settings.overlay) {
376
380
  module.error(error.overlay);
@@ -395,10 +399,9 @@ $.fn.sidebar = function(parameters) {
395
399
  }
396
400
  module.pushPage(function() {
397
401
  callback.call(element);
398
- settings.onShow.call(element);
402
+ settings.onVisible.call(element);
399
403
  });
400
404
  settings.onChange.call(element);
401
- settings.onVisible.call(element);
402
405
  }
403
406
  else {
404
407
  module.debug('Sidebar is already visible');
@@ -410,7 +413,7 @@ $.fn.sidebar = function(parameters) {
410
413
  ? callback
411
414
  : function(){}
412
415
  ;
413
- if(module.is.visible() || module.is.animating()) {
416
+ if((module.is.visible() || module.is.animating()) && settings.onHide.call(element) !== false) {
414
417
  module.debug('Hiding sidebar', callback);
415
418
  module.refreshSidebars();
416
419
  module.pullPage(function() {
@@ -418,7 +421,6 @@ $.fn.sidebar = function(parameters) {
418
421
  settings.onHidden.call(element);
419
422
  });
420
423
  settings.onChange.call(element);
421
- settings.onHide.call(element);
422
424
  }
423
425
  },
424
426
 
@@ -116,7 +116,7 @@ body.pushable {
116
116
  }
117
117
  .pushable:not(body) > .ui.sidebar,
118
118
  .pushable:not(body) > .fixed,
119
- .pushable:not(body) > .pusher:after {
119
+ .pushable:not(body) > .pusher::after {
120
120
  position: absolute;
121
121
  }
122
122
 
@@ -141,13 +141,15 @@ body.pushable {
141
141
  .pushable > .pusher {
142
142
  position: relative;
143
143
  backface-visibility: hidden;
144
- overflow: hidden;
145
144
  min-height: 100%;
146
145
  transition: transform @duration @easing;
147
146
  z-index: @middleLayer;
148
147
 
149
148
  /* Pusher should inherit background from context */
150
149
  background: inherit;
150
+ &:not(.overflowing) {
151
+ overflow: hidden;
152
+ }
151
153
  }
152
154
 
153
155
  body.pushable > .pusher {
@@ -158,7 +160,7 @@ body.pushable > .pusher {
158
160
  Dimmer
159
161
  ---------------*/
160
162
 
161
- .pushable > .pusher:after {
163
+ .pushable > .pusher::after {
162
164
  position: fixed;
163
165
  top: 0;
164
166
  right: 0;
@@ -187,7 +189,7 @@ body.pushable > .pusher {
187
189
  Dimmed
188
190
  ---------------*/
189
191
 
190
- .pushable > .pusher.dimmed:after {
192
+ .pushable > .pusher.dimmed::after {
191
193
  width: 100% !important;
192
194
  height: 100% !important;
193
195
  opacity: 1 !important;
@@ -281,9 +283,11 @@ body.pushable > .pusher {
281
283
  width: @thinWidth;
282
284
  }
283
285
 
284
- .ui[class*="very thin"].left.sidebar,
285
- .ui[class*="very thin"].right.sidebar {
286
- width: @veryThinWidth;
286
+ & when (@variationSidebarVeryThin) {
287
+ .ui[class*="very thin"].left.sidebar,
288
+ .ui[class*="very thin"].right.sidebar {
289
+ width: @veryThinWidth;
290
+ }
287
291
  }
288
292
  }
289
293
 
@@ -298,9 +302,11 @@ body.pushable > .pusher {
298
302
  width: @wideWidth;
299
303
  }
300
304
 
301
- .ui[class*="very wide"].left.sidebar,
302
- .ui[class*="very wide"].right.sidebar {
303
- width: @veryWideWidth;
305
+ & when (@variationSidebarVeryWide) {
306
+ .ui[class*="very wide"].left.sidebar,
307
+ .ui[class*="very wide"].right.sidebar {
308
+ width: @veryWideWidth;
309
+ }
304
310
  }
305
311
  }
306
312
 
@@ -312,9 +318,11 @@ body.pushable > .pusher {
312
318
  transform: translate3d(@thinWidth, 0, 0);
313
319
  }
314
320
 
315
- .ui.visible[class*="very thin"].left.sidebar ~ .fixed,
316
- .ui.visible[class*="very thin"].left.sidebar ~ .pusher {
317
- transform: translate3d(@veryThinWidth, 0, 0);
321
+ & when (@variationSidebarVeryThin) {
322
+ .ui.visible[class*="very thin"].left.sidebar ~ .fixed,
323
+ .ui.visible[class*="very thin"].left.sidebar ~ .pusher {
324
+ transform: translate3d(@veryThinWidth, 0, 0);
325
+ }
318
326
  }
319
327
  }
320
328
 
@@ -324,9 +332,11 @@ body.pushable > .pusher {
324
332
  transform: translate3d(@wideWidth, 0, 0);
325
333
  }
326
334
 
327
- .ui.visible[class*="very wide"].left.sidebar ~ .fixed,
328
- .ui.visible[class*="very wide"].left.sidebar ~ .pusher {
329
- transform: translate3d(@veryWideWidth, 0, 0);
335
+ & when (@variationSidebarVeryWide) {
336
+ .ui.visible[class*="very wide"].left.sidebar ~ .fixed,
337
+ .ui.visible[class*="very wide"].left.sidebar ~ .pusher {
338
+ transform: translate3d(@veryWideWidth, 0, 0);
339
+ }
330
340
  }
331
341
  }
332
342
  }
@@ -339,9 +349,11 @@ body.pushable > .pusher {
339
349
  transform: translate3d(-@thinWidth, 0, 0);
340
350
  }
341
351
 
342
- .ui.visible[class*="very thin"].right.sidebar ~ .fixed,
343
- .ui.visible[class*="very thin"].right.sidebar ~ .pusher {
344
- transform: translate3d(-@veryThinWidth, 0, 0);
352
+ & when (@variationSidebarVeryThin) {
353
+ .ui.visible[class*="very thin"].right.sidebar ~ .fixed,
354
+ .ui.visible[class*="very thin"].right.sidebar ~ .pusher {
355
+ transform: translate3d(-@veryThinWidth, 0, 0);
356
+ }
345
357
  }
346
358
  }
347
359
 
@@ -351,9 +363,11 @@ body.pushable > .pusher {
351
363
  transform: translate3d(-@wideWidth, 0, 0);
352
364
  }
353
365
 
354
- .ui.visible[class*="very wide"].right.sidebar ~ .fixed,
355
- .ui.visible[class*="very wide"].right.sidebar ~ .pusher {
356
- transform: translate3d(-@veryWideWidth, 0, 0);
366
+ & when (@variationSidebarVeryWide) {
367
+ .ui.visible[class*="very wide"].right.sidebar ~ .fixed,
368
+ .ui.visible[class*="very wide"].right.sidebar ~ .pusher {
369
+ transform: translate3d(-@veryWideWidth, 0, 0);
370
+ }
357
371
  }
358
372
  }
359
373
  }
@@ -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,13 +381,26 @@ $.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;
387
392
  if (previousValue !== undefined) {
388
393
  previousValue = undefined;
389
394
  }
390
395
  },
396
+ touchCancel: function(event) {
397
+ event.preventDefault();
398
+ touchIdentifier = undefined;
399
+ if (previousValue !== undefined) {
400
+ module.update.value(previousValue);
401
+ previousValue = undefined;
402
+ }
403
+ },
391
404
  keydown: function(event, first) {
392
405
  if(settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
393
406
  $currThumb = undefined;
@@ -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
 
@@ -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
  }