fomantic-ui 2.9.1-beta.4 → 2.9.1-beta.40

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 (552) hide show
  1. package/.eslint/eqeqeq-rule.js +18 -0
  2. package/.eslint/index.js +29 -0
  3. package/.eslint/no-extra-parens-rule.js +17 -0
  4. package/.eslint/package.json +11 -0
  5. package/.eslintrc.js +123 -0
  6. package/.github/auto_assign.yml +0 -1
  7. package/.github/workflows/ci.yml +37 -4
  8. package/.github/workflows/nightly.yml +1 -1
  9. package/.github/workflows/release.yml +1 -1
  10. package/.prettierrc.js +12 -0
  11. package/.stylelintrc.js +48 -0
  12. package/README.md +1 -1
  13. package/dist/components/accordion.css +35 -53
  14. package/dist/components/accordion.js +568 -595
  15. package/dist/components/accordion.min.css +2 -2
  16. package/dist/components/accordion.min.js +3 -3
  17. package/dist/components/ad.css +34 -45
  18. package/dist/components/ad.min.css +2 -2
  19. package/dist/components/api.js +1157 -1179
  20. package/dist/components/api.min.js +3 -3
  21. package/dist/components/breadcrumb.css +5 -5
  22. package/dist/components/breadcrumb.min.css +2 -2
  23. package/dist/components/button.css +709 -1121
  24. package/dist/components/button.min.css +2 -2
  25. package/dist/components/calendar.css +24 -27
  26. package/dist/components/calendar.js +1934 -1809
  27. package/dist/components/calendar.min.css +2 -2
  28. package/dist/components/calendar.min.js +3 -3
  29. package/dist/components/card.css +219 -365
  30. package/dist/components/card.min.css +2 -2
  31. package/dist/components/checkbox.css +120 -191
  32. package/dist/components/checkbox.js +842 -841
  33. package/dist/components/checkbox.min.css +2 -2
  34. package/dist/components/checkbox.min.js +3 -3
  35. package/dist/components/comment.css +41 -59
  36. package/dist/components/comment.min.css +2 -2
  37. package/dist/components/container.css +7 -6
  38. package/dist/components/container.min.css +2 -2
  39. package/dist/components/dimmer.css +53 -172
  40. package/dist/components/dimmer.js +706 -737
  41. package/dist/components/dimmer.min.css +2 -2
  42. package/dist/components/dimmer.min.js +3 -3
  43. package/dist/components/divider.css +43 -61
  44. package/dist/components/divider.min.css +2 -2
  45. package/dist/components/dropdown.css +252 -386
  46. package/dist/components/dropdown.js +4179 -4236
  47. package/dist/components/dropdown.min.css +2 -2
  48. package/dist/components/dropdown.min.js +3 -3
  49. package/dist/components/embed.css +18 -29
  50. package/dist/components/embed.js +645 -675
  51. package/dist/components/embed.min.css +2 -2
  52. package/dist/components/embed.min.js +3 -3
  53. package/dist/components/emoji.css +3556 -3556
  54. package/dist/components/emoji.min.css +1 -1
  55. package/dist/components/feed.css +35 -57
  56. package/dist/components/feed.min.css +2 -2
  57. package/dist/components/flag.css +270 -268
  58. package/dist/components/flag.min.css +2 -2
  59. package/dist/components/flyout.css +94 -141
  60. package/dist/components/flyout.js +1460 -1465
  61. package/dist/components/flyout.min.css +2 -2
  62. package/dist/components/flyout.min.js +3 -3
  63. package/dist/components/form.css +244 -339
  64. package/dist/components/form.js +2020 -2004
  65. package/dist/components/form.min.css +2 -2
  66. package/dist/components/form.min.js +3 -3
  67. package/dist/components/grid.css +183 -329
  68. package/dist/components/grid.min.css +2 -2
  69. package/dist/components/header.css +118 -142
  70. package/dist/components/header.min.css +2 -2
  71. package/dist/components/icon.css +665 -745
  72. package/dist/components/icon.min.css +2 -2
  73. package/dist/components/image.css +39 -63
  74. package/dist/components/image.min.css +2 -2
  75. package/dist/components/input.css +356 -274
  76. package/dist/components/input.min.css +2 -2
  77. package/dist/components/item.css +84 -131
  78. package/dist/components/item.min.css +2 -2
  79. package/dist/components/label.css +359 -410
  80. package/dist/components/label.min.css +2 -2
  81. package/dist/components/list.css +49 -70
  82. package/dist/components/list.min.css +2 -2
  83. package/dist/components/loader.css +67 -155
  84. package/dist/components/loader.min.css +2 -2
  85. package/dist/components/menu.css +269 -431
  86. package/dist/components/menu.min.css +1 -1
  87. package/dist/components/message.css +125 -197
  88. package/dist/components/message.min.css +2 -2
  89. package/dist/components/modal.css +119 -154
  90. package/dist/components/modal.js +1488 -1486
  91. package/dist/components/modal.min.css +2 -2
  92. package/dist/components/modal.min.js +3 -3
  93. package/dist/components/nag.css +53 -63
  94. package/dist/components/nag.js +520 -526
  95. package/dist/components/nag.min.css +2 -2
  96. package/dist/components/nag.min.js +3 -3
  97. package/dist/components/placeholder.css +22 -42
  98. package/dist/components/placeholder.min.css +2 -2
  99. package/dist/components/popup.css +424 -202
  100. package/dist/components/popup.js +1454 -1456
  101. package/dist/components/popup.min.css +2 -2
  102. package/dist/components/popup.min.js +3 -3
  103. package/dist/components/progress.css +106 -211
  104. package/dist/components/progress.js +969 -997
  105. package/dist/components/progress.min.css +2 -2
  106. package/dist/components/progress.min.js +3 -3
  107. package/dist/components/rail.css +15 -20
  108. package/dist/components/rail.min.css +1 -1
  109. package/dist/components/rating.css +80 -121
  110. package/dist/components/rating.js +505 -523
  111. package/dist/components/rating.min.css +2 -2
  112. package/dist/components/rating.min.js +3 -3
  113. package/dist/components/reset.css +8 -13
  114. package/dist/components/reset.min.css +2 -2
  115. package/dist/components/reveal.css +44 -83
  116. package/dist/components/reveal.min.css +2 -2
  117. package/dist/components/search.css +69 -98
  118. package/dist/components/search.js +1520 -1534
  119. package/dist/components/search.min.css +2 -2
  120. package/dist/components/search.min.js +3 -3
  121. package/dist/components/segment.css +148 -224
  122. package/dist/components/segment.min.css +2 -2
  123. package/dist/components/shape.css +14 -30
  124. package/dist/components/shape.js +781 -810
  125. package/dist/components/shape.min.css +2 -2
  126. package/dist/components/shape.min.js +3 -3
  127. package/dist/components/sidebar.css +103 -206
  128. package/dist/components/sidebar.js +1061 -1099
  129. package/dist/components/sidebar.min.css +2 -2
  130. package/dist/components/sidebar.min.js +3 -3
  131. package/dist/components/site.css +28 -41
  132. package/dist/components/site.js +436 -476
  133. package/dist/components/site.min.css +2 -2
  134. package/dist/components/site.min.js +3 -3
  135. package/dist/components/slider.css +93 -121
  136. package/dist/components/slider.js +1310 -1311
  137. package/dist/components/slider.min.css +1 -1
  138. package/dist/components/slider.min.js +3 -3
  139. package/dist/components/state.js +639 -657
  140. package/dist/components/state.min.js +3 -3
  141. package/dist/components/statistic.css +75 -116
  142. package/dist/components/statistic.min.css +2 -2
  143. package/dist/components/step.css +77 -150
  144. package/dist/components/step.min.css +2 -2
  145. package/dist/components/sticky.css +1 -5
  146. package/dist/components/sticky.js +848 -901
  147. package/dist/components/sticky.min.css +2 -2
  148. package/dist/components/sticky.min.js +3 -3
  149. package/dist/components/tab.css +10 -14
  150. package/dist/components/tab.js +902 -966
  151. package/dist/components/tab.min.css +2 -2
  152. package/dist/components/tab.min.js +3 -3
  153. package/dist/components/table.css +547 -774
  154. package/dist/components/table.min.css +2 -2
  155. package/dist/components/text.css +32 -32
  156. package/dist/components/text.min.css +1 -1
  157. package/dist/components/toast.css +69 -147
  158. package/dist/components/toast.js +910 -884
  159. package/dist/components/toast.min.css +2 -2
  160. package/dist/components/toast.min.js +3 -3
  161. package/dist/components/transition.css +369 -1280
  162. package/dist/components/transition.js +1047 -1077
  163. package/dist/components/transition.min.css +2 -2
  164. package/dist/components/transition.min.js +3 -3
  165. package/dist/components/visibility.js +1213 -1245
  166. package/dist/components/visibility.min.js +3 -3
  167. package/dist/semantic.css +9482 -12264
  168. package/dist/semantic.js +29051 -29426
  169. package/dist/semantic.min.css +3 -3
  170. package/dist/semantic.min.js +3 -3
  171. package/dist/themes/basic/assets/fonts/icons.woff2 +0 -0
  172. package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  173. package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  174. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  175. package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  176. package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  177. package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  178. package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  179. package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  180. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  181. package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  182. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  183. package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  184. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  185. package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  186. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  187. package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  188. package/dist/themes/github/assets/fonts/octicons.woff2 +0 -0
  189. package/examples/.eslintrc.js +6 -0
  190. package/examples/assets/library/jquery.min.js +2 -4
  191. package/examples/assets/show-examples.js +13 -13
  192. package/examples/attached.html +1 -1
  193. package/examples/bootstrap.html +1 -1
  194. package/examples/components/button.html +1 -1
  195. package/examples/components/card.html +6 -6
  196. package/examples/components/input.html +1 -1
  197. package/examples/components/menu.html +1 -1
  198. package/examples/components/site.html +1 -1
  199. package/examples/components/sticky-context.html +2 -2
  200. package/examples/components/table.html +1 -1
  201. package/examples/fixed.html +3 -3
  202. package/examples/grid.html +5 -5
  203. package/examples/homepage.html +1 -1
  204. package/examples/login.html +2 -2
  205. package/examples/responsive.html +2 -2
  206. package/examples/sticky.html +4 -4
  207. package/examples/theming.html +1 -1
  208. package/gulpfile.js +13 -11
  209. package/package.json +17 -10
  210. package/scripts/nightly-version.js +83 -75
  211. package/src/_site/collections/menu.overrides +1 -1
  212. package/src/_site/elements/flag.variables +2 -2
  213. package/src/_site/globals/site.variables +1 -1
  214. package/src/_site/modules/embed.variables +3 -0
  215. package/src/definitions/behaviors/api.js +1158 -1180
  216. package/src/definitions/behaviors/form.js +2019 -2003
  217. package/src/definitions/behaviors/state.js +645 -663
  218. package/src/definitions/behaviors/visibility.js +1212 -1244
  219. package/src/definitions/collections/breadcrumb.less +43 -47
  220. package/src/definitions/collections/form.less +866 -884
  221. package/src/definitions/collections/grid.less +1681 -1699
  222. package/src/definitions/collections/menu.less +1521 -1544
  223. package/src/definitions/collections/message.less +294 -298
  224. package/src/definitions/collections/table.less +1657 -1661
  225. package/src/definitions/elements/button.less +1714 -1756
  226. package/src/definitions/elements/container.less +211 -211
  227. package/src/definitions/elements/divider.less +198 -211
  228. package/src/definitions/elements/emoji.less +41 -48
  229. package/src/definitions/elements/flag.less +46 -48
  230. package/src/definitions/elements/header.less +351 -359
  231. package/src/definitions/elements/icon.less +541 -484
  232. package/src/definitions/elements/image.less +216 -227
  233. package/src/definitions/elements/input.less +692 -698
  234. package/src/definitions/elements/label.less +784 -806
  235. package/src/definitions/elements/list.less +810 -814
  236. package/src/definitions/elements/loader.less +273 -268
  237. package/src/definitions/elements/placeholder.less +173 -170
  238. package/src/definitions/elements/rail.less +93 -93
  239. package/src/definitions/elements/reveal.less +192 -198
  240. package/src/definitions/elements/segment.less +742 -749
  241. package/src/definitions/elements/step.less +423 -437
  242. package/src/definitions/elements/text.less +34 -36
  243. package/src/definitions/globals/reset.less +11 -8
  244. package/src/definitions/globals/site.js +435 -475
  245. package/src/definitions/globals/site.less +108 -110
  246. package/src/definitions/modules/accordion.js +567 -594
  247. package/src/definitions/modules/accordion.less +244 -248
  248. package/src/definitions/modules/calendar.js +1933 -1808
  249. package/src/definitions/modules/calendar.less +100 -97
  250. package/src/definitions/modules/checkbox.js +841 -840
  251. package/src/definitions/modules/checkbox.less +531 -552
  252. package/src/definitions/modules/dimmer.js +705 -736
  253. package/src/definitions/modules/dimmer.less +294 -305
  254. package/src/definitions/modules/dropdown.js +4178 -4235
  255. package/src/definitions/modules/dropdown.less +1568 -1598
  256. package/src/definitions/modules/embed.js +644 -674
  257. package/src/definitions/modules/embed.less +82 -84
  258. package/src/definitions/modules/flyout.js +1459 -1464
  259. package/src/definitions/modules/flyout.less +452 -455
  260. package/src/definitions/modules/modal.js +1487 -1485
  261. package/src/definitions/modules/modal.less +458 -467
  262. package/src/definitions/modules/nag.js +519 -525
  263. package/src/definitions/modules/nag.less +136 -149
  264. package/src/definitions/modules/popup.js +1453 -1455
  265. package/src/definitions/modules/popup.less +738 -693
  266. package/src/definitions/modules/progress.js +968 -996
  267. package/src/definitions/modules/progress.less +523 -499
  268. package/src/definitions/modules/rating.js +504 -522
  269. package/src/definitions/modules/rating.less +98 -103
  270. package/src/definitions/modules/search.js +1519 -1533
  271. package/src/definitions/modules/search.less +374 -394
  272. package/src/definitions/modules/shape.js +780 -809
  273. package/src/definitions/modules/shape.less +70 -79
  274. package/src/definitions/modules/sidebar.js +1060 -1098
  275. package/src/definitions/modules/sidebar.less +463 -476
  276. package/src/definitions/modules/slider.js +1309 -1310
  277. package/src/definitions/modules/slider.less +309 -310
  278. package/src/definitions/modules/sticky.js +864 -917
  279. package/src/definitions/modules/sticky.less +17 -25
  280. package/src/definitions/modules/tab.js +901 -965
  281. package/src/definitions/modules/tab.less +48 -54
  282. package/src/definitions/modules/toast.js +909 -883
  283. package/src/definitions/modules/toast.less +589 -589
  284. package/src/definitions/modules/transition.js +1046 -1076
  285. package/src/definitions/modules/transition.less +65 -31
  286. package/src/definitions/views/ad.less +207 -208
  287. package/src/definitions/views/card.less +955 -973
  288. package/src/definitions/views/comment.less +192 -200
  289. package/src/definitions/views/feed.less +222 -226
  290. package/src/definitions/views/item.less +437 -448
  291. package/src/definitions/views/statistic.less +273 -279
  292. package/src/semantic.less +8 -6
  293. package/src/theme.config.example +53 -53
  294. package/src/theme.less +44 -35
  295. package/src/themes/amazon/elements/button.overrides +23 -24
  296. package/src/themes/amazon/elements/button.variables +18 -23
  297. package/src/themes/amazon/globals/site.variables +16 -17
  298. package/src/themes/basic/assets/fonts/icons.woff2 +0 -0
  299. package/src/themes/basic/collections/table.overrides +0 -1
  300. package/src/themes/basic/collections/table.variables +3 -3
  301. package/src/themes/basic/elements/button.overrides +0 -1
  302. package/src/themes/basic/elements/button.variables +9 -9
  303. package/src/themes/basic/elements/icon.overrides +9 -169
  304. package/src/themes/basic/elements/icon.variables +161 -18
  305. package/src/themes/basic/elements/step.overrides +2 -2
  306. package/src/themes/basic/elements/step.variables +2 -2
  307. package/src/themes/basic/globals/reset.overrides +1 -1
  308. package/src/themes/basic/globals/reset.variables +1 -1
  309. package/src/themes/basic/modules/progress.variables +2 -2
  310. package/src/themes/basic/views/card.overrides +0 -1
  311. package/src/themes/basic/views/card.variables +6 -6
  312. package/src/themes/bookish/elements/header.overrides +4 -4
  313. package/src/themes/bookish/elements/header.variables +5 -5
  314. package/src/themes/bootstrap3/elements/button.overrides +3 -0
  315. package/src/themes/bootstrap3/elements/button.variables +20 -25
  316. package/src/themes/chubby/collections/form.overrides +9 -9
  317. package/src/themes/chubby/collections/form.variables +3 -3
  318. package/src/themes/chubby/collections/menu.overrides +3 -0
  319. package/src/themes/chubby/collections/menu.variables +3 -3
  320. package/src/themes/chubby/elements/button.overrides +8 -10
  321. package/src/themes/chubby/elements/button.variables +10 -10
  322. package/src/themes/chubby/elements/header.overrides +1 -1
  323. package/src/themes/chubby/elements/header.variables +4 -4
  324. package/src/themes/chubby/modules/accordion.overrides +2 -2
  325. package/src/themes/chubby/modules/accordion.variables +4 -4
  326. package/src/themes/chubby/views/comment.overrides +5 -5
  327. package/src/themes/chubby/views/comment.variables +11 -11
  328. package/src/themes/classic/collections/table.variables +3 -3
  329. package/src/themes/classic/elements/button.variables +36 -43
  330. package/src/themes/classic/elements/header.variables +4 -4
  331. package/src/themes/classic/modules/progress.variables +3 -3
  332. package/src/themes/classic/views/card.overrides +25 -27
  333. package/src/themes/classic/views/card.variables +7 -7
  334. package/src/themes/colored/modules/checkbox.overrides +3 -0
  335. package/src/themes/colored/modules/checkbox.variables +1 -3
  336. package/src/themes/default/assets/fonts/Lato-Bold.woff +0 -0
  337. package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
  338. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
  339. package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
  340. package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
  341. package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
  342. package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
  343. package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
  344. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
  345. package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
  346. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
  347. package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
  348. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
  349. package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
  350. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
  351. package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
  352. package/src/themes/default/collections/breadcrumb.variables +4 -4
  353. package/src/themes/default/collections/form.variables +15 -16
  354. package/src/themes/default/collections/grid.overrides +0 -1
  355. package/src/themes/default/collections/grid.variables +15 -16
  356. package/src/themes/default/collections/menu.variables +31 -45
  357. package/src/themes/default/collections/message.variables +84 -123
  358. package/src/themes/default/collections/table.overrides +3 -0
  359. package/src/themes/default/collections/table.variables +30 -34
  360. package/src/themes/default/elements/button.variables +44 -53
  361. package/src/themes/default/elements/container.variables +8 -16
  362. package/src/themes/default/elements/divider.overrides +8 -9
  363. package/src/themes/default/elements/divider.variables +5 -6
  364. package/src/themes/default/elements/emoji.overrides +0 -1
  365. package/src/themes/default/elements/emoji.variables +3556 -3556
  366. package/src/themes/default/elements/flag.variables +1595 -1595
  367. package/src/themes/default/elements/header.overrides +0 -1
  368. package/src/themes/default/elements/header.variables +21 -21
  369. package/src/themes/default/elements/icon.variables +2016 -2009
  370. package/src/themes/default/elements/image.variables +6 -7
  371. package/src/themes/default/elements/input.variables +11 -12
  372. package/src/themes/default/elements/label.variables +25 -26
  373. package/src/themes/default/elements/list.variables +17 -21
  374. package/src/themes/default/elements/loader.variables +16 -17
  375. package/src/themes/default/elements/placeholder.variables +12 -9
  376. package/src/themes/default/elements/rail.variables +4 -5
  377. package/src/themes/default/elements/reveal.variables +1 -1
  378. package/src/themes/default/elements/segment.variables +24 -36
  379. package/src/themes/default/elements/step.overrides +4 -4
  380. package/src/themes/default/elements/step.variables +19 -22
  381. package/src/themes/default/elements/text.variables +2 -3
  382. package/src/themes/default/globals/colors.less +588 -588
  383. package/src/themes/default/globals/reset.overrides +63 -59
  384. package/src/themes/default/globals/reset.variables +1 -1
  385. package/src/themes/default/globals/site.variables +1075 -1123
  386. package/src/themes/default/globals/variation.variables +13 -4
  387. package/src/themes/default/modules/accordion.overrides +11 -11
  388. package/src/themes/default/modules/accordion.variables +15 -20
  389. package/src/themes/default/modules/calendar.variables +2 -0
  390. package/src/themes/default/modules/chatroom.variables +1 -1
  391. package/src/themes/default/modules/checkbox.overrides +9 -13
  392. package/src/themes/default/modules/checkbox.variables +24 -33
  393. package/src/themes/default/modules/dimmer.variables +14 -17
  394. package/src/themes/default/modules/dropdown.overrides +17 -17
  395. package/src/themes/default/modules/dropdown.variables +29 -31
  396. package/src/themes/default/modules/embed.variables +9 -13
  397. package/src/themes/default/modules/flyout.variables +10 -8
  398. package/src/themes/default/modules/modal.variables +64 -67
  399. package/src/themes/default/modules/nag.variables +11 -14
  400. package/src/themes/default/modules/popup.variables +14 -13
  401. package/src/themes/default/modules/progress.variables +17 -19
  402. package/src/themes/default/modules/rating.variables +10 -12
  403. package/src/themes/default/modules/search.variables +12 -17
  404. package/src/themes/default/modules/shape.variables +7 -8
  405. package/src/themes/default/modules/sidebar.variables +4 -4
  406. package/src/themes/default/modules/slider.variables +55 -54
  407. package/src/themes/default/modules/sticky.variables +1 -1
  408. package/src/themes/default/modules/toast.variables +8 -8
  409. package/src/themes/default/modules/transition.overrides +936 -915
  410. package/src/themes/default/modules/transition.variables +8 -1
  411. package/src/themes/default/views/ad.variables +1 -1
  412. package/src/themes/default/views/card.variables +33 -45
  413. package/src/themes/default/views/comment.variables +7 -9
  414. package/src/themes/default/views/feed.variables +10 -10
  415. package/src/themes/default/views/item.variables +20 -23
  416. package/src/themes/default/views/statistic.variables +8 -8
  417. package/src/themes/duo/elements/loader.variables +1 -1
  418. package/src/themes/famfamfam/elements/flag.overrides +263 -268
  419. package/src/themes/famfamfam/elements/flag.variables +4 -4
  420. package/src/themes/fixed-width/collections/grid.variables +4 -4
  421. package/src/themes/fixed-width/modules/modal.variables +11 -13
  422. package/src/themes/flat/collections/form.overrides +9 -9
  423. package/src/themes/flat/collections/form.variables +16 -17
  424. package/src/themes/flat/globals/site.variables +69 -74
  425. package/src/themes/github/assets/fonts/octicons.woff2 +0 -0
  426. package/src/themes/github/collections/breadcrumb.variables +0 -1
  427. package/src/themes/github/collections/form.overrides +7 -8
  428. package/src/themes/github/collections/form.variables +16 -18
  429. package/src/themes/github/collections/grid.variables +1 -2
  430. package/src/themes/github/collections/menu.overrides +2 -2
  431. package/src/themes/github/collections/menu.variables +24 -26
  432. package/src/themes/github/collections/message.overrides +3 -3
  433. package/src/themes/github/collections/message.variables +12 -14
  434. package/src/themes/github/collections/table.variables +2 -2
  435. package/src/themes/github/elements/button.overrides +0 -1
  436. package/src/themes/github/elements/button.variables +26 -30
  437. package/src/themes/github/elements/header.variables +2 -2
  438. package/src/themes/github/elements/icon.overrides +3 -208
  439. package/src/themes/github/elements/icon.variables +234 -19
  440. package/src/themes/github/elements/image.variables +1 -1
  441. package/src/themes/github/elements/input.overrides +16 -16
  442. package/src/themes/github/elements/input.variables +4 -5
  443. package/src/themes/github/elements/label.overrides +3 -3
  444. package/src/themes/github/elements/label.variables +0 -1
  445. package/src/themes/github/elements/segment.variables +9 -10
  446. package/src/themes/github/elements/step.overrides +13 -13
  447. package/src/themes/github/elements/step.variables +6 -6
  448. package/src/themes/github/globals/site.variables +16 -16
  449. package/src/themes/github/modules/dropdown.overrides +18 -19
  450. package/src/themes/github/modules/dropdown.variables +8 -10
  451. package/src/themes/github/modules/popup.variables +0 -2
  452. package/src/themes/gmail/collections/message.overrides +3 -0
  453. package/src/themes/gmail/collections/message.variables +4 -4
  454. package/src/themes/instagram/views/card.overrides +4 -5
  455. package/src/themes/instagram/views/card.variables +7 -8
  456. package/src/themes/joypixels/elements/emoji.overrides +0 -2
  457. package/src/themes/joypixels/elements/emoji.variables +3554 -3554
  458. package/src/themes/material/collections/menu.overrides +1 -1
  459. package/src/themes/material/collections/menu.variables +4 -4
  460. package/src/themes/material/elements/button.overrides +7 -9
  461. package/src/themes/material/elements/button.variables +44 -46
  462. package/src/themes/material/elements/header.overrides +3 -3
  463. package/src/themes/material/elements/header.variables +8 -10
  464. package/src/themes/material/elements/icon.overrides +3 -934
  465. package/src/themes/material/elements/icon.variables +958 -18
  466. package/src/themes/material/globals/site.overrides +3 -0
  467. package/src/themes/material/globals/site.variables +83 -84
  468. package/src/themes/material/modules/dropdown.overrides +2 -2
  469. package/src/themes/material/modules/dropdown.variables +5 -5
  470. package/src/themes/material/modules/modal.overrides +3 -3
  471. package/src/themes/material/modules/modal.variables +4 -5
  472. package/src/themes/pulsar/elements/loader.overrides +23 -61
  473. package/src/themes/raised/elements/button.variables +8 -9
  474. package/src/themes/resetcss/globals/reset.overrides +115 -33
  475. package/src/themes/resetcss/globals/reset.variables +1 -1
  476. package/src/themes/round/elements/button.overrides +3 -0
  477. package/src/themes/round/elements/button.variables +33 -38
  478. package/src/themes/rtl/globals/site.overrides +1 -1
  479. package/src/themes/rtl/globals/site.variables +5 -6
  480. package/src/themes/striped/modules/progress.overrides +20 -16
  481. package/src/themes/systemfont/globals/reset.overrides +1 -1
  482. package/src/themes/systemfont/globals/site.variables +6 -6
  483. package/src/themes/timeline/views/feed.overrides +12 -12
  484. package/src/themes/timeline/views/feed.variables +8 -8
  485. package/src/themes/twitter/elements/button.overrides +4 -5
  486. package/src/themes/twitter/elements/button.variables +17 -18
  487. package/src/themes/twitter/elements/emoji.variables +3556 -3556
  488. package/tasks/.eslintrc.js +9 -0
  489. package/tasks/README.md +2 -4
  490. package/tasks/admin/components/create.js +268 -277
  491. package/tasks/admin/components/init.js +123 -129
  492. package/tasks/admin/components/update.js +151 -158
  493. package/tasks/admin/distributions/create.js +183 -189
  494. package/tasks/admin/distributions/init.js +125 -131
  495. package/tasks/admin/distributions/update.js +147 -153
  496. package/tasks/admin/publish.js +5 -9
  497. package/tasks/admin/register.js +37 -39
  498. package/tasks/admin/release.js +8 -12
  499. package/tasks/build/assets.js +43 -40
  500. package/tasks/build/css.js +230 -217
  501. package/tasks/build/javascript.js +120 -114
  502. package/tasks/build.js +11 -11
  503. package/tasks/check-install.js +15 -17
  504. package/tasks/clean.js +6 -6
  505. package/tasks/collections/README.md +3 -5
  506. package/tasks/collections/admin.js +34 -36
  507. package/tasks/collections/build.js +19 -21
  508. package/tasks/collections/docs.js +11 -13
  509. package/tasks/collections/install.js +11 -13
  510. package/tasks/collections/rtl.js +9 -12
  511. package/tasks/collections/various.js +10 -12
  512. package/tasks/config/admin/github.js +17 -19
  513. package/tasks/config/admin/oauth.example.js +4 -4
  514. package/tasks/config/admin/release.js +98 -98
  515. package/tasks/config/admin/templates/README.md +8 -8
  516. package/tasks/config/admin/templates/bower.json +3 -2
  517. package/tasks/config/admin/templates/component-package.js +9 -10
  518. package/tasks/config/admin/templates/css-package.js +19 -21
  519. package/tasks/config/admin/templates/less-package.js +12 -14
  520. package/tasks/config/admin/templates/package.json +6 -6
  521. package/tasks/config/defaults.js +116 -116
  522. package/tasks/config/docs.js +23 -23
  523. package/tasks/config/npm/gulpfile.js +15 -14
  524. package/tasks/config/project/config.js +124 -136
  525. package/tasks/config/project/install.js +722 -719
  526. package/tasks/config/project/release.js +34 -41
  527. package/tasks/config/tasks.js +168 -167
  528. package/tasks/config/user.js +28 -29
  529. package/tasks/docs/build.js +100 -96
  530. package/tasks/docs/metadata.js +91 -98
  531. package/tasks/docs/serve.js +84 -82
  532. package/tasks/install.js +373 -382
  533. package/tasks/rtl/build.js +4 -3
  534. package/tasks/rtl/watch.js +4 -3
  535. package/tasks/version.js +4 -6
  536. package/tasks/watch.js +29 -31
  537. package/test/.eslintrc.js +23 -0
  538. package/test/meteor/assets.js +11 -14
  539. package/test/meteor/fonts.js +12 -13
  540. package/test/modules/accordion.spec.js +6 -8
  541. package/test/modules/checkbox.spec.js +5 -7
  542. package/test/modules/dropdown.spec.js +5 -7
  543. package/test/modules/modal.spec.js +6 -8
  544. package/test/modules/module.spec.js +158 -178
  545. package/test/modules/popup.spec.js +5 -7
  546. package/test/modules/search.spec.js +5 -7
  547. package/test/modules/shape.spec.js +5 -7
  548. package/test/modules/sidebar.spec.js +5 -7
  549. package/test/modules/tab.spec.js +6 -8
  550. package/test/modules/transition.spec.js +5 -7
  551. package/test/modules/video.spec.js +5 -7
  552. package/.github/workflows/codeql.yml +0 -68
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.9.1-beta.4+9773a1d - Progress
2
+ * # Fomantic-UI 2.9.1-beta.40+0bffb4a - Progress
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -8,1029 +8,1001 @@
8
8
  *
9
9
  */
10
10
 
11
- ;(function ($, window, document, undefined) {
12
-
13
- 'use strict';
14
-
15
- $.isFunction = $.isFunction || function(obj) {
16
- return typeof obj === "function" && typeof obj.nodeType !== "number";
17
- };
18
-
19
- window = (typeof window != 'undefined' && window.Math == Math)
20
- ? window
21
- : (typeof self != 'undefined' && self.Math == Math)
22
- ? self
23
- : Function('return this')()
24
- ;
25
-
26
- $.fn.progress = function(parameters) {
27
- var
28
- $allModules = $(this),
29
-
30
- moduleSelector = $allModules.selector || '',
31
-
32
- time = new Date().getTime(),
33
- performance = [],
34
-
35
- query = arguments[0],
36
- methodInvoked = (typeof query == 'string'),
37
- queryArguments = [].slice.call(arguments, 1),
38
-
39
- returnedValue
40
- ;
41
-
42
- $allModules
43
- .each(function() {
44
- var
45
- settings = ( $.isPlainObject(parameters) )
46
- ? $.extend(true, {}, $.fn.progress.settings, parameters)
47
- : $.extend({}, $.fn.progress.settings),
48
-
49
- className = settings.className,
50
- metadata = settings.metadata,
51
- namespace = settings.namespace,
52
- selector = settings.selector,
53
- error = settings.error,
54
-
55
- eventNamespace = '.' + namespace,
56
- moduleNamespace = 'module-' + namespace,
57
-
58
- $module = $(this),
59
- $bars = $(this).find(selector.bar),
60
- $progresses = $(this).find(selector.progress),
61
- $label = $(this).find(selector.label),
62
-
63
- element = this,
64
- instance = $module.data(moduleNamespace),
65
-
66
- animating = false,
67
- transitionEnd,
68
- module
69
- ;
70
- module = {
71
- helper: {
72
- sum: function (nums) {
73
- return Array.isArray(nums) ? nums.reduce(function (left, right) {
74
- return left + Number(right);
75
- }, 0) : 0;
76
- },
77
- /**
78
- * Derive precision for multiple progress with total and values.
79
- *
80
- * This helper dervices a precision that is sufficiently large to show minimum value of multiple progress.
81
- *
82
- * Example1
83
- * - total: 1122
84
- * - values: [325, 111, 74, 612]
85
- * - min ratio: 74/1122 = 0.0659...
86
- * - required precision: 100
87
- *
88
- * Example2
89
- * - total: 10541
90
- * - values: [3235, 1111, 74, 6121]
91
- * - min ratio: 74/10541 = 0.0070...
92
- * - required precision: 1000
93
- *
94
- * @param min A minimum value within multiple values
95
- * @param total A total amount of multiple values
96
- * @returns {number} A precision. Could be 1, 10, 100, ... 1e+10.
97
- */
98
- derivePrecision: function(min, total) {
99
- var precisionPower = 0
100
- var precision = 1;
101
- var ratio = min / total;
102
- while (precisionPower < 10) {
103
- ratio = ratio * precision;
104
- if (ratio > 1) {
105
- break;
106
- }
107
- precision = Math.pow(10, precisionPower++);
108
- }
109
- return precision;
110
- },
111
- forceArray: function (element) {
112
- return Array.isArray(element)
113
- ? element
114
- : !isNaN(element)
115
- ? [element]
116
- : typeof element == 'string'
117
- ? element.split(',')
118
- : []
119
- ;
120
- }
121
- },
11
+ (function ($, window, document) {
12
+ 'use strict';
122
13
 
123
- initialize: function() {
124
- module.set.duration();
125
- module.set.transitionEvent();
126
- module.debug(element);
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
127
17
 
128
- module.read.metadata();
129
- module.read.settings();
18
+ window = window !== undefined && window.Math === Math
19
+ ? window
20
+ : globalThis;
130
21
 
131
- module.instantiate();
132
- },
22
+ $.fn.progress = function (parameters) {
23
+ var
24
+ $allModules = $(this),
133
25
 
134
- instantiate: function() {
135
- module.verbose('Storing instance of progress', module);
136
- instance = module;
137
- $module
138
- .data(moduleNamespace, module)
139
- ;
140
- },
141
- destroy: function() {
142
- module.verbose('Destroying previous progress for', $module);
143
- clearInterval(instance.interval);
144
- module.remove.state();
145
- $module.removeData(moduleNamespace);
146
- instance = undefined;
147
- },
26
+ moduleSelector = $allModules.selector || '',
148
27
 
149
- reset: function() {
150
- module.remove.nextValue();
151
- module.update.progress(0);
152
- },
28
+ time = Date.now(),
29
+ performance = [],
153
30
 
154
- complete: function(keepState) {
155
- if(module.percent === undefined || module.percent < 100) {
156
- module.remove.progressPoll();
157
- if(keepState !== true){
158
- module.set.percent(100);
159
- }
160
- }
161
- },
31
+ query = arguments[0],
32
+ methodInvoked = typeof query === 'string',
33
+ queryArguments = [].slice.call(arguments, 1),
34
+
35
+ returnedValue
36
+ ;
162
37
 
163
- read: {
164
- metadata: function() {
38
+ $allModules.each(function () {
165
39
  var
166
- data = {
167
- percent : module.helper.forceArray($module.data(metadata.percent)),
168
- total : $module.data(metadata.total),
169
- value : module.helper.forceArray($module.data(metadata.value))
170
- }
40
+ settings = $.isPlainObject(parameters)
41
+ ? $.extend(true, {}, $.fn.progress.settings, parameters)
42
+ : $.extend({}, $.fn.progress.settings),
43
+
44
+ className = settings.className,
45
+ metadata = settings.metadata,
46
+ namespace = settings.namespace,
47
+ selector = settings.selector,
48
+ error = settings.error,
49
+
50
+ eventNamespace = '.' + namespace,
51
+ moduleNamespace = 'module-' + namespace,
52
+
53
+ $module = $(this),
54
+ $bars = $(this).find(selector.bar),
55
+ $progresses = $(this).find(selector.progress),
56
+ $label = $(this).find(selector.label),
57
+
58
+ element = this,
59
+ instance = $module.data(moduleNamespace),
60
+
61
+ animating = false,
62
+ transitionEnd,
63
+ module
171
64
  ;
172
- if(data.total !== undefined) {
173
- module.debug('Total value set from metadata', data.total);
174
- module.set.total(data.total);
175
- }
176
- if(data.value.length > 0) {
177
- module.debug('Current value set from metadata', data.value);
178
- module.set.value(data.value);
179
- module.set.progress(data.value);
180
- }
181
- if(data.percent.length > 0) {
182
- module.debug('Current percent value set from metadata', data.percent);
183
- module.set.percent(data.percent);
184
- }
185
- },
186
- settings: function() {
187
- if(settings.total !== false) {
188
- module.debug('Current total set in settings', settings.total);
189
- module.set.total(settings.total);
190
- }
191
- if(settings.value !== false) {
192
- module.debug('Current value set in settings', settings.value);
193
- module.set.value(settings.value);
194
- module.set.progress(module.value);
195
- }
196
- if(settings.percent !== false) {
197
- module.debug('Current percent set in settings', settings.percent);
198
- module.set.percent(settings.percent);
65
+ module = {
66
+ helper: {
67
+ sum: function (nums) {
68
+ return Array.isArray(nums) ? nums.reduce(function (left, right) {
69
+ return left + Number(right);
70
+ }, 0) : 0;
71
+ },
72
+ /**
73
+ * Derive precision for multiple progress with total and values.
74
+ *
75
+ * This helper dervices a precision that is sufficiently large to show minimum value of multiple progress.
76
+ *
77
+ * Example1
78
+ * - total: 1122
79
+ * - values: [325, 111, 74, 612]
80
+ * - min ratio: 74/1122 = 0.0659...
81
+ * - required precision: 100
82
+ *
83
+ * Example2
84
+ * - total: 10541
85
+ * - values: [3235, 1111, 74, 6121]
86
+ * - min ratio: 74/10541 = 0.0070...
87
+ * - required precision: 1000
88
+ *
89
+ * @param min A minimum value within multiple values
90
+ * @param total A total amount of multiple values
91
+ * @returns {number} A precision. Could be 1, 10, 100, ... 1e+10.
92
+ */
93
+ derivePrecision: function (min, total) {
94
+ var precisionPower = 0;
95
+ var precision = 1;
96
+ var ratio = min / total;
97
+ while (precisionPower < 10) {
98
+ ratio *= precision;
99
+ if (ratio > 1) {
100
+ break;
101
+ }
102
+ precision = Math.pow(10, precisionPower++);
103
+ }
104
+
105
+ return precision;
106
+ },
107
+ forceArray: function (element) {
108
+ return Array.isArray(element)
109
+ ? element
110
+ : (!isNaN(element)
111
+ ? [element]
112
+ : (typeof element === 'string' ? element.split(',') : [])); // eslint-disable-line unicorn/no-nested-ternary
113
+ },
114
+ },
115
+
116
+ initialize: function () {
117
+ module.set.duration();
118
+ module.set.transitionEvent();
119
+ module.debug(element);
120
+
121
+ module.read.metadata();
122
+ module.read.settings();
123
+
124
+ module.instantiate();
125
+ },
126
+
127
+ instantiate: function () {
128
+ module.verbose('Storing instance of progress', module);
129
+ instance = module;
130
+ $module
131
+ .data(moduleNamespace, module)
132
+ ;
133
+ },
134
+ destroy: function () {
135
+ module.verbose('Destroying previous progress for', $module);
136
+ clearInterval(instance.interval);
137
+ module.remove.state();
138
+ $module.removeData(moduleNamespace);
139
+ instance = undefined;
140
+ },
141
+
142
+ reset: function () {
143
+ module.remove.nextValue();
144
+ module.update.progress(0);
145
+ },
146
+
147
+ complete: function (keepState) {
148
+ if (module.percent === undefined || module.percent < 100) {
149
+ module.remove.progressPoll();
150
+ if (keepState !== true) {
151
+ module.set.percent(100);
152
+ }
153
+ }
154
+ },
155
+
156
+ read: {
157
+ metadata: function () {
158
+ var
159
+ data = {
160
+ percent: module.helper.forceArray($module.data(metadata.percent)),
161
+ total: $module.data(metadata.total),
162
+ value: module.helper.forceArray($module.data(metadata.value)),
163
+ }
164
+ ;
165
+ if (data.total !== undefined) {
166
+ module.debug('Total value set from metadata', data.total);
167
+ module.set.total(data.total);
168
+ }
169
+ if (data.value.length > 0) {
170
+ module.debug('Current value set from metadata', data.value);
171
+ module.set.value(data.value);
172
+ module.set.progress(data.value);
173
+ }
174
+ if (data.percent.length > 0) {
175
+ module.debug('Current percent value set from metadata', data.percent);
176
+ module.set.percent(data.percent);
177
+ }
178
+ },
179
+ settings: function () {
180
+ if (settings.total !== false) {
181
+ module.debug('Current total set in settings', settings.total);
182
+ module.set.total(settings.total);
183
+ }
184
+ if (settings.value !== false) {
185
+ module.debug('Current value set in settings', settings.value);
186
+ module.set.value(settings.value);
187
+ module.set.progress(module.value);
188
+ }
189
+ if (settings.percent !== false) {
190
+ module.debug('Current percent set in settings', settings.percent);
191
+ module.set.percent(settings.percent);
192
+ }
193
+ },
194
+ },
195
+
196
+ bind: {
197
+ transitionEnd: function (callback) {
198
+ var
199
+ transitionEnd = module.get.transitionEnd()
200
+ ;
201
+ $bars
202
+ .one(transitionEnd + eventNamespace, function (event) {
203
+ clearTimeout(module.failSafeTimer);
204
+ callback.call(this, event);
205
+ })
206
+ ;
207
+ module.failSafeTimer = setTimeout(function () {
208
+ $bars.triggerHandler(transitionEnd);
209
+ }, settings.duration + settings.failSafeDelay);
210
+ module.verbose('Adding fail safe timer', module.timer);
211
+ },
212
+ },
213
+
214
+ increment: function (incrementValue) {
215
+ var
216
+ startValue,
217
+ newValue
218
+ ;
219
+ if (module.has.total()) {
220
+ startValue = module.get.value();
221
+ incrementValue = incrementValue || 1;
222
+ } else {
223
+ startValue = module.get.percent();
224
+ incrementValue = incrementValue || module.get.randomValue();
225
+ }
226
+ newValue = startValue + incrementValue;
227
+ module.debug('Incrementing percentage by', startValue, newValue, incrementValue);
228
+ newValue = module.get.normalizedValue(newValue);
229
+ module.set.progress(newValue);
230
+ },
231
+ decrement: function (decrementValue) {
232
+ var
233
+ total = module.get.total(),
234
+ startValue,
235
+ newValue
236
+ ;
237
+ if (total) {
238
+ startValue = module.get.value();
239
+ decrementValue = decrementValue || 1;
240
+ newValue = startValue - decrementValue;
241
+ module.debug('Decrementing value by', decrementValue, startValue);
242
+ } else {
243
+ startValue = module.get.percent();
244
+ decrementValue = decrementValue || module.get.randomValue();
245
+ newValue = startValue - decrementValue;
246
+ module.debug('Decrementing percentage by', decrementValue, startValue);
247
+ }
248
+ newValue = module.get.normalizedValue(newValue);
249
+ module.set.progress(newValue);
250
+ },
251
+
252
+ has: {
253
+ progressPoll: function () {
254
+ return module.progressPoll;
255
+ },
256
+ total: function () {
257
+ return module.get.total() !== false;
258
+ },
259
+ },
260
+
261
+ get: {
262
+ text: function (templateText, index) {
263
+ if (!index) {
264
+ index = 0;
265
+ }
266
+
267
+ var
268
+ value = module.get.value(index),
269
+ total = module.get.total(),
270
+ percent = animating
271
+ ? module.get.displayPercent(index)
272
+ : module.get.percent(index),
273
+ left = total !== false
274
+ ? Math.max(0, total - value)
275
+ : 100 - percent
276
+ ;
277
+ templateText = templateText || '';
278
+ templateText = templateText
279
+ .replace('{value}', value)
280
+ .replace('{total}', total || 0)
281
+ .replace('{left}', left)
282
+ .replace('{percent}', percent)
283
+ .replace('{bar}', settings.text.bars[index] || '')
284
+ ;
285
+ module.verbose('Adding variables to progress bar text', templateText);
286
+
287
+ return templateText;
288
+ },
289
+
290
+ normalizedValue: function (value) {
291
+ if (value < 0) {
292
+ module.debug('Value cannot decrement below 0');
293
+
294
+ return 0;
295
+ }
296
+ if (module.has.total()) {
297
+ if (value > module.total) {
298
+ module.debug('Value cannot increment above total', module.total);
299
+
300
+ return module.total;
301
+ }
302
+ } else if (value > 100) {
303
+ module.debug('Value cannot increment above 100 percent');
304
+
305
+ return 100;
306
+ }
307
+
308
+ return value;
309
+ },
310
+
311
+ updateInterval: function () {
312
+ if (settings.updateInterval === 'auto') {
313
+ return settings.duration;
314
+ }
315
+
316
+ return settings.updateInterval;
317
+ },
318
+
319
+ randomValue: function () {
320
+ module.debug('Generating random increment percentage');
321
+
322
+ return Math.floor((Math.random() * settings.random.max) + settings.random.min);
323
+ },
324
+
325
+ numericValue: function (value) {
326
+ return typeof value === 'string'
327
+ ? (value.replace(/[^\d.]/g, '') !== ''
328
+ ? +value.replace(/[^\d.]/g, '')
329
+ : false)
330
+ : value;
331
+ },
332
+
333
+ transitionEnd: function () {
334
+ var
335
+ element = document.createElement('element'),
336
+ transitions = {
337
+ transition: 'transitionend',
338
+ OTransition: 'oTransitionEnd',
339
+ MozTransition: 'transitionend',
340
+ WebkitTransition: 'webkitTransitionEnd',
341
+ },
342
+ transition
343
+ ;
344
+ for (transition in transitions) {
345
+ if (element.style[transition] !== undefined) {
346
+ return transitions[transition];
347
+ }
348
+ }
349
+ },
350
+
351
+ // gets current displayed percentage (if animating values this is the intermediary value)
352
+ displayPercent: function (index) {
353
+ var
354
+ $bar = $($bars[index]),
355
+ barWidth = $bar.width(),
356
+ totalWidth = $module.width(),
357
+ minDisplay = parseInt($bar.css('min-width'), 10),
358
+ displayPercent = barWidth > minDisplay
359
+ ? (barWidth / totalWidth) * 100
360
+ : module.percent
361
+ ;
362
+
363
+ return settings.precision > 0
364
+ ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision)
365
+ : Math.round(displayPercent);
366
+ },
367
+
368
+ percent: function (index) {
369
+ return (module.percent && module.percent[index || 0]) || 0;
370
+ },
371
+ value: function (index) {
372
+ return module.nextValue || (module.value && module.value[index || 0]) || 0;
373
+ },
374
+ total: function () {
375
+ return module.total !== undefined ? module.total : false;
376
+ },
377
+ },
378
+
379
+ create: {
380
+ progressPoll: function () {
381
+ module.progressPoll = setTimeout(function () {
382
+ module.update.toNextValue();
383
+ module.remove.progressPoll();
384
+ }, module.get.updateInterval());
385
+ },
386
+ },
387
+
388
+ is: {
389
+ complete: function () {
390
+ return module.is.success() || module.is.warning() || module.is.error();
391
+ },
392
+ success: function () {
393
+ return $module.hasClass(className.success);
394
+ },
395
+ warning: function () {
396
+ return $module.hasClass(className.warning);
397
+ },
398
+ error: function () {
399
+ return $module.hasClass(className.error);
400
+ },
401
+ active: function () {
402
+ return $module.hasClass(className.active);
403
+ },
404
+ visible: function () {
405
+ return $module.is(':visible');
406
+ },
407
+ },
408
+
409
+ remove: {
410
+ progressPoll: function () {
411
+ module.verbose('Removing progress poll timer');
412
+ if (module.progressPoll) {
413
+ clearTimeout(module.progressPoll);
414
+ delete module.progressPoll;
415
+ }
416
+ },
417
+ nextValue: function () {
418
+ module.verbose('Removing progress value stored for next update');
419
+ delete module.nextValue;
420
+ },
421
+ state: function () {
422
+ module.verbose('Removing stored state');
423
+ delete module.total;
424
+ delete module.percent;
425
+ delete module.value;
426
+ },
427
+ active: function () {
428
+ module.verbose('Removing active state');
429
+ $module.removeClass(className.active);
430
+ },
431
+ success: function () {
432
+ module.verbose('Removing success state');
433
+ $module.removeClass(className.success);
434
+ },
435
+ warning: function () {
436
+ module.verbose('Removing warning state');
437
+ $module.removeClass(className.warning);
438
+ },
439
+ error: function () {
440
+ module.verbose('Removing error state');
441
+ $module.removeClass(className.error);
442
+ },
443
+ },
444
+
445
+ set: {
446
+ barWidth: function (values) {
447
+ module.debug('set bar width with ', values);
448
+ values = module.helper.forceArray(values);
449
+ var firstNonZeroIndex = -1;
450
+ var lastNonZeroIndex = -1;
451
+ var valuesSum = module.helper.sum(values);
452
+ var barCounts = $bars.length;
453
+ var isMultiple = barCounts > 1;
454
+ var percents = values.map(function (value, index) {
455
+ var allZero = index === barCounts - 1 && valuesSum === 0;
456
+ var $bar = $($bars[index]);
457
+ if (value === 0 && isMultiple && !allZero) {
458
+ $bar.css('display', 'none');
459
+ } else {
460
+ if (isMultiple && allZero) {
461
+ $bar.css('background', 'transparent');
462
+ }
463
+ if (firstNonZeroIndex === -1) {
464
+ firstNonZeroIndex = index;
465
+ }
466
+ lastNonZeroIndex = index;
467
+ $bar.css({
468
+ display: 'block',
469
+ width: value + '%',
470
+ });
471
+ }
472
+
473
+ return parseFloat(value);
474
+ });
475
+ values.forEach(function (_, index) {
476
+ var $bar = $($bars[index]);
477
+ $bar.css({
478
+ borderTopLeftRadius: index === firstNonZeroIndex ? '' : '0',
479
+ borderBottomLeftRadius: index === firstNonZeroIndex ? '' : '0',
480
+ borderTopRightRadius: index === lastNonZeroIndex ? '' : '0',
481
+ borderBottomRightRadius: index === lastNonZeroIndex ? '' : '0',
482
+ });
483
+ });
484
+ $module
485
+ .attr('data-percent', percents)
486
+ ;
487
+ },
488
+ duration: function (duration) {
489
+ duration = duration || settings.duration;
490
+ duration = typeof duration === 'number'
491
+ ? duration + 'ms'
492
+ : duration;
493
+ module.verbose('Setting progress bar transition duration', duration);
494
+ $bars
495
+ .css({
496
+ 'transition-duration': duration,
497
+ })
498
+ ;
499
+ },
500
+ percent: function (percents) {
501
+ percents = module.helper.forceArray(percents).map(function (percent) {
502
+ percent = typeof percent === 'string'
503
+ ? +percent.replace('%', '')
504
+ : percent;
505
+
506
+ return settings.limitValues
507
+ ? Math.max(0, Math.min(100, percent))
508
+ : percent;
509
+ });
510
+ var hasTotal = module.has.total();
511
+ var totalPercent = module.helper.sum(percents);
512
+ var isMultipleValues = percents.length > 1 && hasTotal;
513
+ var sumTotal = module.helper.sum(module.helper.forceArray(module.value));
514
+ if (isMultipleValues && sumTotal > module.total) {
515
+ // Sum values instead of pecents to avoid precision issues when summing floats
516
+ module.error(error.sumExceedsTotal, sumTotal, module.total);
517
+ } else if (!isMultipleValues && totalPercent > 100) {
518
+ // Sum before rounding since sum of rounded may have error though sum of actual is fine
519
+ module.error(error.tooHigh, totalPercent);
520
+ } else if (totalPercent < 0) {
521
+ module.error(error.tooLow, totalPercent);
522
+ } else {
523
+ var autoPrecision = settings.precision > 0
524
+ ? settings.precision
525
+ : (isMultipleValues
526
+ ? module.helper.derivePrecision(Math.min.apply(null, module.value), module.total)
527
+ : 0);
528
+
529
+ // round display percentage
530
+ var roundedPercents = percents.map(function (percent) {
531
+ return autoPrecision > 0
532
+ ? Math.round(percent * (10 * autoPrecision)) / (10 * autoPrecision)
533
+ : Math.round(percent)
534
+ ;
535
+ });
536
+ module.percent = roundedPercents;
537
+ if (hasTotal) {
538
+ module.value = percents.map(function (percent) {
539
+ return autoPrecision > 0
540
+ ? Math.round((percent / 100) * module.total * (10 * autoPrecision)) / (10 * autoPrecision)
541
+ : Math.round((percent / 100) * module.total * 10) / 10;
542
+ });
543
+ }
544
+ module.set.barWidth(percents);
545
+ module.set.labelInterval();
546
+ }
547
+ settings.onChange.call(element, percents, module.value, module.total);
548
+ },
549
+ labelInterval: function () {
550
+ var
551
+ animationCallback = function () {
552
+ module.verbose('Bar finished animating, removing continuous label updates');
553
+ clearInterval(module.interval);
554
+ animating = false;
555
+ module.set.labels();
556
+ }
557
+ ;
558
+ clearInterval(module.interval);
559
+ module.bind.transitionEnd(animationCallback);
560
+ animating = true;
561
+ module.interval = setInterval(function () {
562
+ var
563
+ isInDOM = $.contains(document.documentElement, element)
564
+ ;
565
+ if (!isInDOM) {
566
+ clearInterval(module.interval);
567
+ animating = false;
568
+ }
569
+ module.set.labels();
570
+ }, settings.framerate);
571
+ },
572
+ labels: function () {
573
+ module.verbose('Setting both bar progress and outer label text');
574
+ module.set.barLabel();
575
+ module.set.state();
576
+ },
577
+ label: function (text) {
578
+ if (text) {
579
+ text = module.get.text(text);
580
+ module.verbose('Setting label to text', text);
581
+ $label.text(text);
582
+ }
583
+ },
584
+ state: function (percent) {
585
+ percent = percent !== undefined
586
+ ? percent
587
+ : module.helper.sum(module.percent);
588
+ if (percent === 100) {
589
+ if (settings.autoSuccess && $bars.length === 1 && !(module.is.warning() || module.is.error() || module.is.success())) {
590
+ module.set.success();
591
+ module.debug('Automatically triggering success at 100%');
592
+ } else {
593
+ module.verbose('Reached 100% removing active state');
594
+ module.remove.active();
595
+ module.remove.progressPoll();
596
+ }
597
+ } else if (percent > 0) {
598
+ module.verbose('Adjusting active progress bar label', percent);
599
+ module.set.active();
600
+ } else {
601
+ module.remove.active();
602
+ module.remove.warning();
603
+ module.remove.error();
604
+ module.remove.success();
605
+ module.set.label(settings.text.active);
606
+ }
607
+ },
608
+ barLabel: function (text) {
609
+ $progresses.each(function (index, element) {
610
+ var $progress = $(element);
611
+ if (text !== undefined) {
612
+ $progress.text(module.get.text(text, index));
613
+ } else if (settings.label === 'ratio' && module.has.total()) {
614
+ module.verbose('Adding ratio to bar label');
615
+ $progress.text(module.get.text(settings.text.ratio, index));
616
+ } else if (settings.label === 'percent') {
617
+ module.verbose('Adding percentage to bar label');
618
+ $progress.text(module.get.text(settings.text.percent, index));
619
+ }
620
+ });
621
+ },
622
+ active: function (text) {
623
+ text = text || settings.text.active;
624
+ module.debug('Setting active state');
625
+ if (settings.showActivity && !module.is.active()) {
626
+ $module.addClass(className.active);
627
+ }
628
+ module.remove.warning();
629
+ module.remove.error();
630
+ module.remove.success();
631
+ text = settings.onLabelUpdate('active', text, module.value, module.total);
632
+ if (text) {
633
+ module.set.label(text);
634
+ }
635
+ module.bind.transitionEnd(function () {
636
+ settings.onActive.call(element, module.value, module.total);
637
+ });
638
+ },
639
+ success: function (text, keepState) {
640
+ text = text || settings.text.success || settings.text.active;
641
+ module.debug('Setting success state');
642
+ $module.addClass(className.success);
643
+ module.remove.active();
644
+ module.remove.warning();
645
+ module.remove.error();
646
+ module.complete(keepState);
647
+ if (settings.text.success) {
648
+ text = settings.onLabelUpdate('success', text, module.value, module.total);
649
+ module.set.label(text);
650
+ } else {
651
+ text = settings.onLabelUpdate('active', text, module.value, module.total);
652
+ module.set.label(text);
653
+ }
654
+ module.bind.transitionEnd(function () {
655
+ settings.onSuccess.call(element, module.total);
656
+ });
657
+ },
658
+ warning: function (text, keepState) {
659
+ text = text || settings.text.warning;
660
+ module.debug('Setting warning state');
661
+ $module.addClass(className.warning);
662
+ module.remove.active();
663
+ module.remove.success();
664
+ module.remove.error();
665
+ module.complete(keepState);
666
+ text = settings.onLabelUpdate('warning', text, module.value, module.total);
667
+ if (text) {
668
+ module.set.label(text);
669
+ }
670
+ module.bind.transitionEnd(function () {
671
+ settings.onWarning.call(element, module.value, module.total);
672
+ });
673
+ },
674
+ error: function (text, keepState) {
675
+ text = text || settings.text.error;
676
+ module.debug('Setting error state');
677
+ $module.addClass(className.error);
678
+ module.remove.active();
679
+ module.remove.success();
680
+ module.remove.warning();
681
+ module.complete(keepState);
682
+ text = settings.onLabelUpdate('error', text, module.value, module.total);
683
+ if (text) {
684
+ module.set.label(text);
685
+ }
686
+ module.bind.transitionEnd(function () {
687
+ settings.onError.call(element, module.value, module.total);
688
+ });
689
+ },
690
+ transitionEvent: function () {
691
+ transitionEnd = module.get.transitionEnd();
692
+ },
693
+ total: function (totalValue) {
694
+ module.total = totalValue;
695
+ },
696
+ value: function (value) {
697
+ module.value = module.helper.forceArray(value);
698
+ },
699
+ progress: function (value) {
700
+ if (!module.has.progressPoll()) {
701
+ module.debug('First update in progress update interval, immediately updating', value);
702
+ module.update.progress(value);
703
+ module.create.progressPoll();
704
+ } else {
705
+ module.debug('Updated within interval, setting next update to use new value', value);
706
+ module.set.nextValue(value);
707
+ }
708
+ },
709
+ nextValue: function (value) {
710
+ module.nextValue = value;
711
+ },
712
+ },
713
+
714
+ update: {
715
+ toNextValue: function () {
716
+ var
717
+ nextValue = module.nextValue
718
+ ;
719
+ if (nextValue) {
720
+ module.debug('Update interval complete using last updated value', nextValue);
721
+ module.update.progress(nextValue);
722
+ module.remove.nextValue();
723
+ }
724
+ },
725
+ progress: function (values) {
726
+ var hasTotal = module.has.total();
727
+ if (hasTotal) {
728
+ module.set.value(values);
729
+ }
730
+ var percentCompletes = module.helper.forceArray(values).map(function (value) {
731
+ var
732
+ percentComplete
733
+ ;
734
+ value = module.get.numericValue(value);
735
+ if (value === false) {
736
+ module.error(error.nonNumeric, value);
737
+ }
738
+ value = module.get.normalizedValue(value);
739
+ if (hasTotal) {
740
+ percentComplete = module.total > 0 ? (value / module.total) * 100 : 100;
741
+ module.debug('Calculating percent complete from total', percentComplete);
742
+ } else {
743
+ percentComplete = value;
744
+ module.debug('Setting value to exact percentage value', percentComplete);
745
+ }
746
+
747
+ return percentComplete;
748
+ });
749
+ module.set.percent(percentCompletes);
750
+ },
751
+ },
752
+
753
+ setting: function (name, value) {
754
+ module.debug('Changing setting', name, value);
755
+ if ($.isPlainObject(name)) {
756
+ $.extend(true, settings, name);
757
+ } else if (value !== undefined) {
758
+ if ($.isPlainObject(settings[name])) {
759
+ $.extend(true, settings[name], value);
760
+ } else {
761
+ settings[name] = value;
762
+ }
763
+ } else {
764
+ return settings[name];
765
+ }
766
+ },
767
+ internal: function (name, value) {
768
+ if ($.isPlainObject(name)) {
769
+ $.extend(true, module, name);
770
+ } else if (value !== undefined) {
771
+ module[name] = value;
772
+ } else {
773
+ return module[name];
774
+ }
775
+ },
776
+ debug: function () {
777
+ if (!settings.silent && settings.debug) {
778
+ if (settings.performance) {
779
+ module.performance.log(arguments);
780
+ } else {
781
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
782
+ module.debug.apply(console, arguments);
783
+ }
784
+ }
785
+ },
786
+ verbose: function () {
787
+ if (!settings.silent && settings.verbose && settings.debug) {
788
+ if (settings.performance) {
789
+ module.performance.log(arguments);
790
+ } else {
791
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
792
+ module.verbose.apply(console, arguments);
793
+ }
794
+ }
795
+ },
796
+ error: function () {
797
+ if (!settings.silent) {
798
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
799
+ module.error.apply(console, arguments);
800
+ }
801
+ },
802
+ performance: {
803
+ log: function (message) {
804
+ var
805
+ currentTime,
806
+ executionTime,
807
+ previousTime
808
+ ;
809
+ if (settings.performance) {
810
+ currentTime = Date.now();
811
+ previousTime = time || currentTime;
812
+ executionTime = currentTime - previousTime;
813
+ time = currentTime;
814
+ performance.push({
815
+ Name: message[0],
816
+ Arguments: [].slice.call(message, 1) || '',
817
+ Element: element,
818
+ 'Execution Time': executionTime,
819
+ });
820
+ }
821
+ clearTimeout(module.performance.timer);
822
+ module.performance.timer = setTimeout(module.performance.display, 500);
823
+ },
824
+ display: function () {
825
+ var
826
+ title = settings.name + ':',
827
+ totalTime = 0
828
+ ;
829
+ time = false;
830
+ clearTimeout(module.performance.timer);
831
+ $.each(performance, function (index, data) {
832
+ totalTime += data['Execution Time'];
833
+ });
834
+ title += ' ' + totalTime + 'ms';
835
+ if (moduleSelector) {
836
+ title += ' \'' + moduleSelector + '\'';
837
+ }
838
+ if (performance.length > 0) {
839
+ console.groupCollapsed(title);
840
+ if (console.table) {
841
+ console.table(performance);
842
+ } else {
843
+ $.each(performance, function (index, data) {
844
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
845
+ });
846
+ }
847
+ console.groupEnd();
848
+ }
849
+ performance = [];
850
+ },
851
+ },
852
+ invoke: function (query, passedArguments, context) {
853
+ var
854
+ object = instance,
855
+ maxDepth,
856
+ found,
857
+ response
858
+ ;
859
+ passedArguments = passedArguments || queryArguments;
860
+ context = context || element;
861
+ if (typeof query === 'string' && object !== undefined) {
862
+ query = query.split(/[ .]/);
863
+ maxDepth = query.length - 1;
864
+ $.each(query, function (depth, value) {
865
+ var camelCaseValue = depth !== maxDepth
866
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
867
+ : query
868
+ ;
869
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
870
+ object = object[camelCaseValue];
871
+ } else if (object[camelCaseValue] !== undefined) {
872
+ found = object[camelCaseValue];
873
+
874
+ return false;
875
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
876
+ object = object[value];
877
+ } else if (object[value] !== undefined) {
878
+ found = object[value];
879
+
880
+ return false;
881
+ } else {
882
+ module.error(error.method, query);
883
+
884
+ return false;
885
+ }
886
+ });
887
+ }
888
+ if (isFunction(found)) {
889
+ response = found.apply(context, passedArguments);
890
+ } else if (found !== undefined) {
891
+ response = found;
892
+ }
893
+ if (Array.isArray(returnedValue)) {
894
+ returnedValue.push(response);
895
+ } else if (returnedValue !== undefined) {
896
+ returnedValue = [returnedValue, response];
897
+ } else if (response !== undefined) {
898
+ returnedValue = response;
899
+ }
900
+
901
+ return found;
902
+ },
903
+ };
904
+
905
+ if (methodInvoked) {
906
+ if (instance === undefined) {
907
+ module.initialize();
908
+ }
909
+ module.invoke(query);
910
+ } else {
911
+ if (instance !== undefined) {
912
+ instance.invoke('destroy');
913
+ }
914
+ module.initialize();
199
915
  }
200
- }
201
- },
916
+ });
202
917
 
203
- bind: {
204
- transitionEnd: function(callback) {
205
- var
206
- transitionEnd = module.get.transitionEnd()
207
- ;
208
- $bars
209
- .one(transitionEnd + eventNamespace, function(event) {
210
- clearTimeout(module.failSafeTimer);
211
- callback.call(this, event);
212
- })
213
- ;
214
- module.failSafeTimer = setTimeout(function() {
215
- $bars.triggerHandler(transitionEnd);
216
- }, settings.duration + settings.failSafeDelay);
217
- module.verbose('Adding fail safe timer', module.timer);
218
- }
219
- },
918
+ return returnedValue !== undefined
919
+ ? returnedValue
920
+ : this;
921
+ };
220
922
 
221
- increment: function(incrementValue) {
222
- var
223
- startValue,
224
- newValue
225
- ;
226
- if( module.has.total() ) {
227
- startValue = module.get.value();
228
- incrementValue = incrementValue || 1;
229
- }
230
- else {
231
- startValue = module.get.percent();
232
- incrementValue = incrementValue || module.get.randomValue();
233
- }
234
- newValue = startValue + incrementValue;
235
- module.debug('Incrementing percentage by', startValue, newValue, incrementValue);
236
- newValue = module.get.normalizedValue(newValue);
237
- module.set.progress(newValue);
238
- },
239
- decrement: function(decrementValue) {
240
- var
241
- total = module.get.total(),
242
- startValue,
243
- newValue
244
- ;
245
- if(total) {
246
- startValue = module.get.value();
247
- decrementValue = decrementValue || 1;
248
- newValue = startValue - decrementValue;
249
- module.debug('Decrementing value by', decrementValue, startValue);
250
- }
251
- else {
252
- startValue = module.get.percent();
253
- decrementValue = decrementValue || module.get.randomValue();
254
- newValue = startValue - decrementValue;
255
- module.debug('Decrementing percentage by', decrementValue, startValue);
256
- }
257
- newValue = module.get.normalizedValue(newValue);
258
- module.set.progress(newValue);
259
- },
923
+ $.fn.progress.settings = {
924
+
925
+ name: 'Progress',
926
+ namespace: 'progress',
927
+
928
+ silent: false,
929
+ debug: false,
930
+ verbose: false,
931
+ performance: true,
260
932
 
261
- has: {
262
- progressPoll: function() {
263
- return module.progressPoll;
264
- },
265
- total: function() {
266
- return (module.get.total() !== false);
267
- }
933
+ random: {
934
+ min: 2,
935
+ max: 5,
268
936
  },
269
937
 
270
- get: {
271
- text: function(templateText, index) {
272
- var
273
- index_ = index || 0,
274
- value = module.get.value(index_),
275
- total = module.get.total(),
276
- percent = (animating)
277
- ? module.get.displayPercent(index_)
278
- : module.get.percent(index_),
279
- left = (total !== false)
280
- ? Math.max(0,total - value)
281
- : (100 - percent)
282
- ;
283
- templateText = templateText || '';
284
- templateText = templateText
285
- .replace('{value}', value)
286
- .replace('{total}', total || 0)
287
- .replace('{left}', left)
288
- .replace('{percent}', percent)
289
- .replace('{bar}', settings.text.bars[index_] || '')
290
- ;
291
- module.verbose('Adding variables to progress bar text', templateText);
292
- return templateText;
293
- },
294
-
295
- normalizedValue: function(value) {
296
- if(value < 0) {
297
- module.debug('Value cannot decrement below 0');
298
- return 0;
299
- }
300
- if(module.has.total()) {
301
- if(value > module.total) {
302
- module.debug('Value cannot increment above total', module.total);
303
- return module.total;
304
- }
305
- }
306
- else if(value > 100 ) {
307
- module.debug('Value cannot increment above 100 percent');
308
- return 100;
309
- }
310
- return value;
311
- },
938
+ duration: 300,
312
939
 
313
- updateInterval: function() {
314
- if(settings.updateInterval == 'auto') {
315
- return settings.duration;
316
- }
317
- return settings.updateInterval;
318
- },
319
-
320
- randomValue: function() {
321
- module.debug('Generating random increment percentage');
322
- return Math.floor((Math.random() * settings.random.max) + settings.random.min);
323
- },
324
-
325
- numericValue: function(value) {
326
- return (typeof value === 'string')
327
- ? (value.replace(/[^\d.]/g, '') !== '')
328
- ? +(value.replace(/[^\d.]/g, ''))
329
- : false
330
- : value
331
- ;
332
- },
940
+ updateInterval: 'auto',
333
941
 
334
- transitionEnd: function() {
335
- var
336
- element = document.createElement('element'),
337
- transitions = {
338
- 'transition' :'transitionend',
339
- 'OTransition' :'oTransitionEnd',
340
- 'MozTransition' :'transitionend',
341
- 'WebkitTransition' :'webkitTransitionEnd'
342
- },
343
- transition
344
- ;
345
- for(transition in transitions){
346
- if( element.style[transition] !== undefined ){
347
- return transitions[transition];
348
- }
349
- }
350
- },
942
+ autoSuccess: true,
943
+ showActivity: true,
944
+ limitValues: true,
351
945
 
352
- // gets current displayed percentage (if animating values this is the intermediary value)
353
- displayPercent: function(index) {
354
- var
355
- $bar = $($bars[index]),
356
- barWidth = $bar.width(),
357
- totalWidth = $module.width(),
358
- minDisplay = parseInt($bar.css('min-width'), 10),
359
- displayPercent = (barWidth > minDisplay)
360
- ? (barWidth / totalWidth * 100)
361
- : module.percent
362
- ;
363
- return (settings.precision > 0)
364
- ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision)
365
- : Math.round(displayPercent)
366
- ;
367
- },
368
-
369
- percent: function(index) {
370
- return module.percent && module.percent[index || 0] || 0;
371
- },
372
- value: function(index) {
373
- return module.nextValue || module.value && module.value[index || 0] || 0;
374
- },
375
- total: function() {
376
- return module.total !== undefined ? module.total : false;
377
- }
378
- },
946
+ label: 'percent',
947
+ precision: 0,
948
+ framerate: 1000 / 30, /// 30 fps
379
949
 
380
- create: {
381
- progressPoll: function() {
382
- module.progressPoll = setTimeout(function() {
383
- module.update.toNextValue();
384
- module.remove.progressPoll();
385
- }, module.get.updateInterval());
386
- },
387
- },
950
+ percent: false,
951
+ total: false,
952
+ value: false,
388
953
 
389
- is: {
390
- complete: function() {
391
- return module.is.success() || module.is.warning() || module.is.error();
392
- },
393
- success: function() {
394
- return $module.hasClass(className.success);
395
- },
396
- warning: function() {
397
- return $module.hasClass(className.warning);
398
- },
399
- error: function() {
400
- return $module.hasClass(className.error);
401
- },
402
- active: function() {
403
- return $module.hasClass(className.active);
404
- },
405
- visible: function() {
406
- return $module.is(':visible');
407
- }
408
- },
954
+ // delay in ms for fail safe animation callback
955
+ failSafeDelay: 100,
409
956
 
410
- remove: {
411
- progressPoll: function() {
412
- module.verbose('Removing progress poll timer');
413
- if(module.progressPoll) {
414
- clearTimeout(module.progressPoll);
415
- delete module.progressPoll;
416
- }
417
- },
418
- nextValue: function() {
419
- module.verbose('Removing progress value stored for next update');
420
- delete module.nextValue;
421
- },
422
- state: function() {
423
- module.verbose('Removing stored state');
424
- delete module.total;
425
- delete module.percent;
426
- delete module.value;
427
- },
428
- active: function() {
429
- module.verbose('Removing active state');
430
- $module.removeClass(className.active);
431
- },
432
- success: function() {
433
- module.verbose('Removing success state');
434
- $module.removeClass(className.success);
435
- },
436
- warning: function() {
437
- module.verbose('Removing warning state');
438
- $module.removeClass(className.warning);
439
- },
440
- error: function() {
441
- module.verbose('Removing error state');
442
- $module.removeClass(className.error);
443
- }
957
+ onLabelUpdate: function (state, text, value, total) {
958
+ return text;
444
959
  },
445
-
446
- set: {
447
- barWidth: function(values) {
448
- module.debug("set bar width with ", values);
449
- values = module.helper.forceArray(values);
450
- var firstNonZeroIndex = -1;
451
- var lastNonZeroIndex = -1;
452
- var valuesSum = module.helper.sum(values);
453
- var barCounts = $bars.length;
454
- var isMultiple = barCounts > 1;
455
- var percents = values.map(function(value, index) {
456
- var allZero = (index === barCounts - 1 && valuesSum === 0);
457
- var $bar = $($bars[index]);
458
- if (value === 0 && isMultiple && !allZero) {
459
- $bar.css('display', 'none');
460
- } else {
461
- if (isMultiple && allZero) {
462
- $bar.css('background', 'transparent');
463
- }
464
- if (firstNonZeroIndex == -1) {
465
- firstNonZeroIndex = index;
466
- }
467
- lastNonZeroIndex = index;
468
- $bar.css({
469
- display: 'block',
470
- width: value + '%'
471
- });
472
- }
473
- return parseFloat(value);
474
- });
475
- values.forEach(function(_, index) {
476
- var $bar = $($bars[index]);
477
- $bar.css({
478
- borderTopLeftRadius: index == firstNonZeroIndex ? '' : 0,
479
- borderBottomLeftRadius: index == firstNonZeroIndex ? '' : 0,
480
- borderTopRightRadius: index == lastNonZeroIndex ? '' : 0,
481
- borderBottomRightRadius: index == lastNonZeroIndex ? '' : 0
482
- });
483
- });
484
- $module
485
- .attr('data-percent', percents)
486
- ;
487
- },
488
- duration: function(duration) {
489
- duration = duration || settings.duration;
490
- duration = (typeof duration == 'number')
491
- ? duration + 'ms'
492
- : duration
493
- ;
494
- module.verbose('Setting progress bar transition duration', duration);
495
- $bars
496
- .css({
497
- 'transition-duration': duration
498
- })
499
- ;
500
- },
501
- percent: function(percents) {
502
- percents = module.helper.forceArray(percents).map(function(percent) {
503
- percent = (typeof percent == 'string')
504
- ? +(percent.replace('%', ''))
505
- : percent
506
- ;
507
- return (settings.limitValues)
508
- ? Math.max(0, Math.min(100, percent))
509
- : percent
510
- ;
511
- });
512
- var hasTotal = module.has.total();
513
- var totalPercent = module.helper.sum(percents);
514
- var isMultipleValues = percents.length > 1 && hasTotal;
515
- var sumTotal = module.helper.sum(module.helper.forceArray(module.value));
516
- if (isMultipleValues && sumTotal > module.total) {
517
- // Sum values instead of pecents to avoid precision issues when summing floats
518
- module.error(error.sumExceedsTotal, sumTotal, module.total);
519
- } else if (!isMultipleValues && totalPercent > 100) {
520
- // Sum before rounding since sum of rounded may have error though sum of actual is fine
521
- module.error(error.tooHigh, totalPercent);
522
- } else if (totalPercent < 0) {
523
- module.error(error.tooLow, totalPercent);
524
- } else {
525
- var autoPrecision = settings.precision > 0
526
- ? settings.precision
527
- : isMultipleValues
528
- ? module.helper.derivePrecision(Math.min.apply(null, module.value), module.total)
529
- : 0;
530
-
531
- // round display percentage
532
- var roundedPercents = percents.map(function (percent) {
533
- return (autoPrecision > 0)
534
- ? Math.round(percent * (10 * autoPrecision)) / (10 * autoPrecision)
535
- : Math.round(percent)
536
- ;
537
- });
538
- module.percent = roundedPercents;
539
- if (hasTotal) {
540
- module.value = percents.map(function (percent) {
541
- return (autoPrecision > 0)
542
- ? Math.round((percent / 100) * module.total * (10 * autoPrecision)) / (10 * autoPrecision)
543
- : Math.round((percent / 100) * module.total * 10) / 10
544
- ;
545
- });
546
- }
547
- module.set.barWidth(percents);
548
- module.set.labelInterval();
549
- }
550
- settings.onChange.call(element, percents, module.value, module.total);
551
- },
552
- labelInterval: function() {
553
- var
554
- animationCallback = function() {
555
- module.verbose('Bar finished animating, removing continuous label updates');
556
- clearInterval(module.interval);
557
- animating = false;
558
- module.set.labels();
559
- }
560
- ;
561
- clearInterval(module.interval);
562
- module.bind.transitionEnd(animationCallback);
563
- animating = true;
564
- module.interval = setInterval(function() {
565
- var
566
- isInDOM = $.contains(document.documentElement, element)
567
- ;
568
- if(!isInDOM) {
569
- clearInterval(module.interval);
570
- animating = false;
571
- }
572
- module.set.labels();
573
- }, settings.framerate);
574
- },
575
- labels: function() {
576
- module.verbose('Setting both bar progress and outer label text');
577
- module.set.barLabel();
578
- module.set.state();
579
- },
580
- label: function(text) {
581
- text = text || '';
582
- if(text) {
583
- text = module.get.text(text);
584
- module.verbose('Setting label to text', text);
585
- $label.text(text);
586
- }
587
- },
588
- state: function(percent) {
589
- percent = (percent !== undefined)
590
- ? percent
591
- : module.helper.sum(module.percent)
592
- ;
593
- if(percent === 100) {
594
- if(settings.autoSuccess && $bars.length === 1 && !(module.is.warning() || module.is.error() || module.is.success())) {
595
- module.set.success();
596
- module.debug('Automatically triggering success at 100%');
597
- }
598
- else {
599
- module.verbose('Reached 100% removing active state');
600
- module.remove.active();
601
- module.remove.progressPoll();
602
- }
603
- }
604
- else if(percent > 0) {
605
- module.verbose('Adjusting active progress bar label', percent);
606
- module.set.active();
607
- }
608
- else {
609
- module.remove.active();
610
- module.remove.warning();
611
- module.remove.error();
612
- module.remove.success();
613
- module.set.label(settings.text.active);
614
- }
615
- },
616
- barLabel: function(text) {
617
- $progresses.map(function(index, element){
618
- var $progress = $(element);
619
- if (text !== undefined) {
620
- $progress.text( module.get.text(text, index) );
621
- }
622
- else if (settings.label == 'ratio' && module.has.total()) {
623
- module.verbose('Adding ratio to bar label');
624
- $progress.text( module.get.text(settings.text.ratio, index) );
625
- }
626
- else if (settings.label == 'percent') {
627
- module.verbose('Adding percentage to bar label');
628
- $progress.text( module.get.text(settings.text.percent, index) );
629
- }
630
- });
631
- },
632
- active: function(text) {
633
- text = text || settings.text.active;
634
- module.debug('Setting active state');
635
- if(settings.showActivity && !module.is.active() ) {
636
- $module.addClass(className.active);
637
- }
638
- module.remove.warning();
639
- module.remove.error();
640
- module.remove.success();
641
- text = settings.onLabelUpdate('active', text, module.value, module.total);
642
- if(text) {
643
- module.set.label(text);
644
- }
645
- module.bind.transitionEnd(function() {
646
- settings.onActive.call(element, module.value, module.total);
647
- });
648
- },
649
- success : function(text, keepState) {
650
- text = text || settings.text.success || settings.text.active;
651
- module.debug('Setting success state');
652
- $module.addClass(className.success);
653
- module.remove.active();
654
- module.remove.warning();
655
- module.remove.error();
656
- module.complete(keepState);
657
- if(settings.text.success) {
658
- text = settings.onLabelUpdate('success', text, module.value, module.total);
659
- module.set.label(text);
660
- }
661
- else {
662
- text = settings.onLabelUpdate('active', text, module.value, module.total);
663
- module.set.label(text);
664
- }
665
- module.bind.transitionEnd(function() {
666
- settings.onSuccess.call(element, module.total);
667
- });
668
- },
669
- warning : function(text, keepState) {
670
- text = text || settings.text.warning;
671
- module.debug('Setting warning state');
672
- $module.addClass(className.warning);
673
- module.remove.active();
674
- module.remove.success();
675
- module.remove.error();
676
- module.complete(keepState);
677
- text = settings.onLabelUpdate('warning', text, module.value, module.total);
678
- if(text) {
679
- module.set.label(text);
680
- }
681
- module.bind.transitionEnd(function() {
682
- settings.onWarning.call(element, module.value, module.total);
683
- });
684
- },
685
- error : function(text, keepState) {
686
- text = text || settings.text.error;
687
- module.debug('Setting error state');
688
- $module.addClass(className.error);
689
- module.remove.active();
690
- module.remove.success();
691
- module.remove.warning();
692
- module.complete(keepState);
693
- text = settings.onLabelUpdate('error', text, module.value, module.total);
694
- if(text) {
695
- module.set.label(text);
696
- }
697
- module.bind.transitionEnd(function() {
698
- settings.onError.call(element, module.value, module.total);
699
- });
700
- },
701
- transitionEvent: function() {
702
- transitionEnd = module.get.transitionEnd();
703
- },
704
- total: function(totalValue) {
705
- module.total = totalValue;
706
- },
707
- value: function(value) {
708
- module.value = module.helper.forceArray(value);
709
- },
710
- progress: function(value) {
711
- if(!module.has.progressPoll()) {
712
- module.debug('First update in progress update interval, immediately updating', value);
713
- module.update.progress(value);
714
- module.create.progressPoll();
715
- }
716
- else {
717
- module.debug('Updated within interval, setting next update to use new value', value);
718
- module.set.nextValue(value);
719
- }
720
- },
721
- nextValue: function(value) {
722
- module.nextValue = value;
723
- }
960
+ onChange: function (percent, value, total) {},
961
+ onSuccess: function (total) {},
962
+ onActive: function (value, total) {},
963
+ onError: function (value, total) {},
964
+ onWarning: function (value, total) {},
965
+
966
+ error: {
967
+ method: 'The method you called is not defined.',
968
+ nonNumeric: 'Progress value is non numeric',
969
+ tooHigh: 'Value specified is above 100%',
970
+ tooLow: 'Value specified is below 0%',
971
+ sumExceedsTotal: 'Sum of multiple values exceed total',
724
972
  },
725
973
 
726
- update: {
727
- toNextValue: function() {
728
- var
729
- nextValue = module.nextValue
730
- ;
731
- if(nextValue) {
732
- module.debug('Update interval complete using last updated value', nextValue);
733
- module.update.progress(nextValue);
734
- module.remove.nextValue();
735
- }
736
- },
737
- progress: function(values) {
738
- var hasTotal = module.has.total();
739
- if (hasTotal) {
740
- module.set.value(values);
741
- }
742
- var percentCompletes = module.helper.forceArray(values).map(function(value) {
743
- var
744
- percentComplete
745
- ;
746
- value = module.get.numericValue(value);
747
- if (value === false) {
748
- module.error(error.nonNumeric, value);
749
- }
750
- value = module.get.normalizedValue(value);
751
- if (hasTotal) {
752
- percentComplete = module.total > 0 ? (value / module.total) * 100 : 100;
753
- module.debug('Calculating percent complete from total', percentComplete);
754
- }
755
- else {
756
- percentComplete = value;
757
- module.debug('Setting value to exact percentage value', percentComplete);
758
- }
759
- return percentComplete;
760
- });
761
- module.set.percent( percentCompletes );
762
- }
974
+ regExp: {
975
+ variable: /{\$*[\da-z]+}/gi,
763
976
  },
764
977
 
765
- setting: function(name, value) {
766
- module.debug('Changing setting', name, value);
767
- if( $.isPlainObject(name) ) {
768
- $.extend(true, settings, name);
769
- }
770
- else if(value !== undefined) {
771
- if($.isPlainObject(settings[name])) {
772
- $.extend(true, settings[name], value);
773
- }
774
- else {
775
- settings[name] = value;
776
- }
777
- }
778
- else {
779
- return settings[name];
780
- }
978
+ metadata: {
979
+ percent: 'percent',
980
+ total: 'total',
981
+ value: 'value',
781
982
  },
782
- internal: function(name, value) {
783
- if( $.isPlainObject(name) ) {
784
- $.extend(true, module, name);
785
- }
786
- else if(value !== undefined) {
787
- module[name] = value;
788
- }
789
- else {
790
- return module[name];
791
- }
792
- },
793
- debug: function() {
794
- if(!settings.silent && settings.debug) {
795
- if(settings.performance) {
796
- module.performance.log(arguments);
797
- }
798
- else {
799
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
800
- module.debug.apply(console, arguments);
801
- }
802
- }
803
- },
804
- verbose: function() {
805
- if(!settings.silent && settings.verbose && settings.debug) {
806
- if(settings.performance) {
807
- module.performance.log(arguments);
808
- }
809
- else {
810
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
811
- module.verbose.apply(console, arguments);
812
- }
813
- }
983
+
984
+ selector: {
985
+ bar: '> .bar',
986
+ label: '> .label',
987
+ progress: '.bar > .progress',
814
988
  },
815
- error: function() {
816
- if(!settings.silent) {
817
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
818
- module.error.apply(console, arguments);
819
- }
989
+
990
+ text: {
991
+ active: false,
992
+ error: false,
993
+ success: false,
994
+ warning: false,
995
+ percent: '{percent}%',
996
+ ratio: '{value} of {total}',
997
+ bars: [''],
820
998
  },
821
- performance: {
822
- log: function(message) {
823
- var
824
- currentTime,
825
- executionTime,
826
- previousTime
827
- ;
828
- if(settings.performance) {
829
- currentTime = new Date().getTime();
830
- previousTime = time || currentTime;
831
- executionTime = currentTime - previousTime;
832
- time = currentTime;
833
- performance.push({
834
- 'Name' : message[0],
835
- 'Arguments' : [].slice.call(message, 1) || '',
836
- 'Element' : element,
837
- 'Execution Time' : executionTime
838
- });
839
- }
840
- clearTimeout(module.performance.timer);
841
- module.performance.timer = setTimeout(module.performance.display, 500);
842
- },
843
- display: function() {
844
- var
845
- title = settings.name + ':',
846
- totalTime = 0
847
- ;
848
- time = false;
849
- clearTimeout(module.performance.timer);
850
- $.each(performance, function(index, data) {
851
- totalTime += data['Execution Time'];
852
- });
853
- title += ' ' + totalTime + 'ms';
854
- if(moduleSelector) {
855
- title += ' \'' + moduleSelector + '\'';
856
- }
857
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
858
- console.groupCollapsed(title);
859
- if(console.table) {
860
- console.table(performance);
861
- }
862
- else {
863
- $.each(performance, function(index, data) {
864
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
865
- });
866
- }
867
- console.groupEnd();
868
- }
869
- performance = [];
870
- }
999
+
1000
+ className: {
1001
+ active: 'active',
1002
+ error: 'error',
1003
+ success: 'success',
1004
+ warning: 'warning',
871
1005
  },
872
- invoke: function(query, passedArguments, context) {
873
- var
874
- object = instance,
875
- maxDepth,
876
- found,
877
- response
878
- ;
879
- passedArguments = passedArguments || queryArguments;
880
- context = context || element;
881
- if(typeof query == 'string' && object !== undefined) {
882
- query = query.split(/[\. ]/);
883
- maxDepth = query.length - 1;
884
- $.each(query, function(depth, value) {
885
- var camelCaseValue = (depth != maxDepth)
886
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
887
- : query
888
- ;
889
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
890
- object = object[camelCaseValue];
891
- }
892
- else if( object[camelCaseValue] !== undefined ) {
893
- found = object[camelCaseValue];
894
- return false;
895
- }
896
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
897
- object = object[value];
898
- }
899
- else if( object[value] !== undefined ) {
900
- found = object[value];
901
- return false;
902
- }
903
- else {
904
- module.error(error.method, query);
905
- return false;
906
- }
907
- });
908
- }
909
- if ( $.isFunction( found ) ) {
910
- response = found.apply(context, passedArguments);
911
- }
912
- else if(found !== undefined) {
913
- response = found;
914
- }
915
- if(Array.isArray(returnedValue)) {
916
- returnedValue.push(response);
917
- }
918
- else if(returnedValue !== undefined) {
919
- returnedValue = [returnedValue, response];
920
- }
921
- else if(response !== undefined) {
922
- returnedValue = response;
923
- }
924
- return found;
925
- }
926
- };
927
-
928
- if(methodInvoked) {
929
- if(instance === undefined) {
930
- module.initialize();
931
- }
932
- module.invoke(query);
933
- }
934
- else {
935
- if(instance !== undefined) {
936
- instance.invoke('destroy');
937
- }
938
- module.initialize();
939
- }
940
- })
941
- ;
942
-
943
- return (returnedValue !== undefined)
944
- ? returnedValue
945
- : this
946
- ;
947
- };
948
-
949
- $.fn.progress.settings = {
950
-
951
- name : 'Progress',
952
- namespace : 'progress',
953
-
954
- silent : false,
955
- debug : false,
956
- verbose : false,
957
- performance : true,
958
-
959
- random : {
960
- min : 2,
961
- max : 5
962
- },
963
-
964
- duration : 300,
965
-
966
- updateInterval : 'auto',
967
-
968
- autoSuccess : true,
969
- showActivity : true,
970
- limitValues : true,
971
-
972
- label : 'percent',
973
- precision : 0,
974
- framerate : (1000 / 30), /// 30 fps
975
-
976
- percent : false,
977
- total : false,
978
- value : false,
979
-
980
- // delay in ms for fail safe animation callback
981
- failSafeDelay : 100,
982
-
983
- onLabelUpdate : function(state, text, value, total){
984
- return text;
985
- },
986
- onChange : function(percent, value, total){},
987
- onSuccess : function(total){},
988
- onActive : function(value, total){},
989
- onError : function(value, total){},
990
- onWarning : function(value, total){},
991
-
992
- error : {
993
- method : 'The method you called is not defined.',
994
- nonNumeric : 'Progress value is non numeric',
995
- tooHigh : 'Value specified is above 100%',
996
- tooLow : 'Value specified is below 0%',
997
- sumExceedsTotal : 'Sum of multiple values exceed total',
998
- },
999
-
1000
- regExp: {
1001
- variable: /\{\$*[a-z0-9]+\}/gi
1002
- },
1003
-
1004
- metadata: {
1005
- percent : 'percent',
1006
- total : 'total',
1007
- value : 'value'
1008
- },
1009
-
1010
- selector : {
1011
- bar : '> .bar',
1012
- label : '> .label',
1013
- progress : '.bar > .progress'
1014
- },
1015
-
1016
- text : {
1017
- active : false,
1018
- error : false,
1019
- success : false,
1020
- warning : false,
1021
- percent : '{percent}%',
1022
- ratio : '{value} of {total}',
1023
- bars : ['']
1024
- },
1025
-
1026
- className : {
1027
- active : 'active',
1028
- error : 'error',
1029
- success : 'success',
1030
- warning : 'warning'
1031
- }
1032
-
1033
- };
1034
-
1035
-
1036
- })( jQuery, window, document );
1006
+
1007
+ };
1008
+ })(jQuery, window, document);