fomantic-ui 2.9.0-beta.2 → 2.9.0-beta.202

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 (243) hide show
  1. package/.all-contributorsrc +197 -3
  2. package/CONTRIBUTING.md +1 -1
  3. package/CONTRIBUTORS.md +74 -37
  4. package/README.md +1 -1
  5. package/dist/components/accordion.css +162 -26
  6. package/dist/components/accordion.js +1 -1
  7. package/dist/components/accordion.min.css +2 -2
  8. package/dist/components/accordion.min.js +2 -2
  9. package/dist/components/ad.css +1 -1
  10. package/dist/components/ad.min.css +1 -1
  11. package/dist/components/api.js +30 -26
  12. package/dist/components/api.min.js +3 -3
  13. package/dist/components/breadcrumb.css +1 -1
  14. package/dist/components/breadcrumb.min.css +1 -1
  15. package/dist/components/button.css +81 -81
  16. package/dist/components/button.min.css +2 -2
  17. package/dist/components/calendar.css +1 -1
  18. package/dist/components/calendar.js +110 -11
  19. package/dist/components/calendar.min.css +1 -1
  20. package/dist/components/calendar.min.js +3 -3
  21. package/dist/components/card.css +26 -19
  22. package/dist/components/card.min.css +2 -2
  23. package/dist/components/checkbox.css +2 -1
  24. package/dist/components/checkbox.js +17 -11
  25. package/dist/components/checkbox.min.css +2 -2
  26. package/dist/components/checkbox.min.js +3 -3
  27. package/dist/components/comment.css +11 -11
  28. package/dist/components/comment.min.css +1 -1
  29. package/dist/components/container.css +77 -1
  30. package/dist/components/container.min.css +2 -2
  31. package/dist/components/dimmer.css +28 -14
  32. package/dist/components/dimmer.js +7 -1
  33. package/dist/components/dimmer.min.css +2 -2
  34. package/dist/components/dimmer.min.js +3 -3
  35. package/dist/components/divider.css +1 -1
  36. package/dist/components/divider.min.css +1 -1
  37. package/dist/components/dropdown.css +30 -7
  38. package/dist/components/dropdown.js +59 -34
  39. package/dist/components/dropdown.min.css +2 -2
  40. package/dist/components/dropdown.min.js +3 -3
  41. package/dist/components/embed.css +1 -1
  42. package/dist/components/embed.js +1 -1
  43. package/dist/components/embed.min.css +1 -1
  44. package/dist/components/embed.min.js +2 -2
  45. package/dist/components/emoji.css +2 -2
  46. package/dist/components/feed.css +28 -28
  47. package/dist/components/feed.min.css +2 -2
  48. package/dist/components/flag.css +731 -625
  49. package/dist/components/flag.min.css +2 -2
  50. package/dist/components/form.css +106 -55
  51. package/dist/components/form.js +25 -23
  52. package/dist/components/form.min.css +2 -2
  53. package/dist/components/form.min.js +3 -3
  54. package/dist/components/grid.css +11 -8
  55. package/dist/components/grid.min.css +2 -2
  56. package/dist/components/header.css +1 -1
  57. package/dist/components/header.min.css +1 -1
  58. package/dist/components/icon.css +6 -1
  59. package/dist/components/icon.min.css +2 -2
  60. package/dist/components/image.css +1 -1
  61. package/dist/components/image.min.css +1 -1
  62. package/dist/components/input.css +734 -17
  63. package/dist/components/input.min.css +2 -2
  64. package/dist/components/item.css +13 -13
  65. package/dist/components/item.min.css +1 -1
  66. package/dist/components/label.css +1 -1
  67. package/dist/components/label.min.css +1 -1
  68. package/dist/components/list.css +1 -1
  69. package/dist/components/list.min.css +1 -1
  70. package/dist/components/loader.css +1 -1
  71. package/dist/components/loader.min.css +1 -1
  72. package/dist/components/menu.css +31 -7
  73. package/dist/components/menu.min.css +1 -1
  74. package/dist/components/message.css +41 -41
  75. package/dist/components/message.min.css +2 -2
  76. package/dist/components/modal.css +13 -1
  77. package/dist/components/modal.js +121 -46
  78. package/dist/components/modal.min.css +2 -2
  79. package/dist/components/modal.min.js +3 -3
  80. package/dist/components/nag.css +1 -1
  81. package/dist/components/nag.js +1 -1
  82. package/dist/components/nag.min.css +1 -1
  83. package/dist/components/nag.min.js +2 -2
  84. package/dist/components/placeholder.css +1 -1
  85. package/dist/components/placeholder.min.css +1 -1
  86. package/dist/components/popup.css +5 -3
  87. package/dist/components/popup.js +1 -1
  88. package/dist/components/popup.min.css +2 -2
  89. package/dist/components/popup.min.js +2 -2
  90. package/dist/components/progress.css +1 -1
  91. package/dist/components/progress.js +6 -3
  92. package/dist/components/progress.min.css +1 -1
  93. package/dist/components/progress.min.js +3 -3
  94. package/dist/components/rail.css +1 -1
  95. package/dist/components/rail.min.css +1 -1
  96. package/dist/components/rating.css +7 -46
  97. package/dist/components/rating.js +1 -1
  98. package/dist/components/rating.min.css +2 -2
  99. package/dist/components/rating.min.js +2 -2
  100. package/dist/components/reset.css +1 -1
  101. package/dist/components/reset.min.css +1 -1
  102. package/dist/components/reveal.css +1 -1
  103. package/dist/components/reveal.min.css +1 -1
  104. package/dist/components/search.css +1 -1
  105. package/dist/components/search.js +1 -1
  106. package/dist/components/search.min.css +1 -1
  107. package/dist/components/search.min.js +2 -2
  108. package/dist/components/segment.css +90 -6
  109. package/dist/components/segment.min.css +2 -2
  110. package/dist/components/shape.css +1 -1
  111. package/dist/components/shape.js +1 -1
  112. package/dist/components/shape.min.css +1 -1
  113. package/dist/components/shape.min.js +2 -2
  114. package/dist/components/sidebar.css +4 -2
  115. package/dist/components/sidebar.js +1 -1
  116. package/dist/components/sidebar.min.css +2 -2
  117. package/dist/components/sidebar.min.js +2 -2
  118. package/dist/components/site.css +61 -39
  119. package/dist/components/site.js +1 -1
  120. package/dist/components/site.min.css +2 -2
  121. package/dist/components/site.min.js +2 -2
  122. package/dist/components/slider.js +1 -1
  123. package/dist/components/slider.min.js +2 -2
  124. package/dist/components/state.js +1 -1
  125. package/dist/components/state.min.js +2 -2
  126. package/dist/components/statistic.css +1 -1
  127. package/dist/components/statistic.min.css +1 -1
  128. package/dist/components/step.css +4 -4
  129. package/dist/components/step.min.css +2 -2
  130. package/dist/components/sticky.css +1 -1
  131. package/dist/components/sticky.js +2 -2
  132. package/dist/components/sticky.min.css +1 -1
  133. package/dist/components/sticky.min.js +3 -3
  134. package/dist/components/tab.css +1 -1
  135. package/dist/components/tab.js +23 -5
  136. package/dist/components/tab.min.css +1 -1
  137. package/dist/components/tab.min.js +3 -3
  138. package/dist/components/table.css +1168 -26
  139. package/dist/components/table.min.css +2 -2
  140. package/dist/components/text.css +1 -1
  141. package/dist/components/text.min.css +1 -1
  142. package/dist/components/toast.css +45 -1
  143. package/dist/components/toast.js +56 -28
  144. package/dist/components/toast.min.css +2 -2
  145. package/dist/components/toast.min.js +3 -3
  146. package/dist/components/transition.css +1 -1
  147. package/dist/components/transition.js +2 -2
  148. package/dist/components/transition.min.css +1 -1
  149. package/dist/components/transition.min.js +3 -3
  150. package/dist/components/visibility.js +2 -2
  151. package/dist/components/visibility.min.js +2 -2
  152. package/dist/semantic.css +4300 -1394
  153. package/dist/semantic.js +473 -207
  154. package/dist/semantic.min.css +3 -3
  155. package/dist/semantic.min.js +3 -3
  156. package/examples/assets/library/iframe-content.js +8 -8
  157. package/examples/assets/library/iframe.js +3 -3
  158. package/package.json +2 -2
  159. package/src/definitions/behaviors/api.js +29 -25
  160. package/src/definitions/behaviors/form.js +24 -22
  161. package/src/definitions/behaviors/visibility.js +1 -1
  162. package/src/definitions/collections/form.less +193 -140
  163. package/src/definitions/collections/grid.less +716 -680
  164. package/src/definitions/collections/menu.less +174 -127
  165. package/src/definitions/collections/message.less +48 -46
  166. package/src/definitions/collections/table.less +849 -262
  167. package/src/definitions/elements/button.less +360 -347
  168. package/src/definitions/elements/container.less +126 -8
  169. package/src/definitions/elements/emoji.less +15 -9
  170. package/src/definitions/elements/flag.less +7 -17
  171. package/src/definitions/elements/header.less +42 -35
  172. package/src/definitions/elements/icon.less +38 -31
  173. package/src/definitions/elements/input.less +256 -21
  174. package/src/definitions/elements/label.less +92 -91
  175. package/src/definitions/elements/list.less +55 -45
  176. package/src/definitions/elements/loader.less +30 -29
  177. package/src/definitions/elements/segment.less +146 -27
  178. package/src/definitions/elements/step.less +52 -48
  179. package/src/definitions/elements/text.less +17 -15
  180. package/src/definitions/globals/site.less +23 -2
  181. package/src/definitions/modules/accordion.less +175 -24
  182. package/src/definitions/modules/calendar.js +109 -10
  183. package/src/definitions/modules/checkbox.js +16 -10
  184. package/src/definitions/modules/checkbox.less +34 -178
  185. package/src/definitions/modules/dimmer.js +6 -0
  186. package/src/definitions/modules/dimmer.less +21 -8
  187. package/src/definitions/modules/dropdown.js +58 -33
  188. package/src/definitions/modules/dropdown.less +101 -69
  189. package/src/definitions/modules/modal.js +120 -45
  190. package/src/definitions/modules/modal.less +12 -0
  191. package/src/definitions/modules/nag.less +20 -19
  192. package/src/definitions/modules/popup.less +5 -1
  193. package/src/definitions/modules/progress.js +5 -2
  194. package/src/definitions/modules/progress.less +19 -18
  195. package/src/definitions/modules/rating.less +49 -42
  196. package/src/definitions/modules/search.less +32 -16
  197. package/src/definitions/modules/sidebar.less +33 -19
  198. package/src/definitions/modules/slider.less +39 -38
  199. package/src/definitions/modules/sticky.js +1 -1
  200. package/src/definitions/modules/tab.js +22 -4
  201. package/src/definitions/modules/toast.js +55 -27
  202. package/src/definitions/modules/toast.less +53 -16
  203. package/src/definitions/modules/transition.js +1 -1
  204. package/src/definitions/views/card.less +402 -361
  205. package/src/definitions/views/comment.less +92 -81
  206. package/src/definitions/views/feed.less +164 -144
  207. package/src/definitions/views/item.less +249 -196
  208. package/src/definitions/views/statistic.less +90 -88
  209. package/src/themes/bookish/elements/header.overrides +1 -1
  210. package/src/themes/chubby/elements/button.overrides +1 -1
  211. package/src/themes/chubby/elements/header.overrides +1 -1
  212. package/src/themes/default/collections/menu.variables +6 -0
  213. package/src/themes/default/collections/table.variables +52 -0
  214. package/src/themes/default/elements/button.variables +2 -1
  215. package/src/themes/default/elements/container.variables +8 -0
  216. package/src/themes/default/elements/flag.overrides +1635 -986
  217. package/src/themes/default/elements/flag.variables +7 -5
  218. package/src/themes/default/elements/icon.overrides +35 -28
  219. package/src/themes/default/elements/icon.variables +1 -0
  220. package/src/themes/default/elements/input.variables +15 -0
  221. package/src/themes/default/elements/segment.variables +8 -0
  222. package/src/themes/default/elements/step.overrides +1 -1
  223. package/src/themes/default/globals/site.variables +6 -0
  224. package/src/themes/default/globals/variation.variables +135 -6
  225. package/src/themes/default/modules/accordion.variables +49 -2
  226. package/src/themes/default/modules/checkbox.variables +5 -5
  227. package/src/themes/default/modules/dimmer.variables +1 -1
  228. package/src/themes/default/modules/dropdown.variables +1 -1
  229. package/src/themes/default/modules/modal.variables +13 -0
  230. package/src/themes/default/modules/toast.variables +3 -0
  231. package/src/themes/famfamfam/elements/flag.overrides +1026 -0
  232. package/src/themes/famfamfam/elements/flag.variables +13 -0
  233. package/src/themes/instagram/views/card.overrides +1 -1
  234. package/src/themes/material/collections/menu.overrides +1 -1
  235. package/src/themes/material/elements/button.overrides +1 -1
  236. package/src/themes/material/elements/header.overrides +1 -1
  237. package/src/themes/material/modules/dropdown.overrides +1 -1
  238. package/src/themes/material/modules/modal.overrides +1 -1
  239. package/src/themes/rtl/globals/site.overrides +1 -1
  240. package/tasks/admin/components/init.js +2 -2
  241. package/tasks/admin/distributions/init.js +2 -2
  242. package/tasks/build/css.js +6 -1
  243. package/test/helpers/sinon.js +1 -1
package/dist/semantic.js CHANGED
@@ -1,15 +1,15 @@
1
1
  /*
2
- * # Fomantic UI - 2.9.0-beta.2
2
+ * # Fomantic UI - 2.9.0-beta.202
3
3
  * https://github.com/fomantic/Fomantic-UI
4
4
  * http://fomantic-ui.com/
5
5
  *
6
- * Copyright 2021 Contributors
6
+ * Copyright 2022 Contributors
7
7
  * Released under the MIT license
8
8
  * http://opensource.org/licenses/MIT
9
9
  *
10
10
  */
11
11
  /*!
12
- * # Fomantic-UI 2.9.0-beta.2 - Site
12
+ * # Fomantic-UI 2.9.0-beta.202 - Site
13
13
  * http://github.com/fomantic/Fomantic-UI/
14
14
  *
15
15
  *
@@ -503,7 +503,7 @@ $.extend($.expr[ ":" ], {
503
503
  })( jQuery, window, document );
504
504
 
505
505
  /*!
506
- * # Fomantic-UI 2.9.0-beta.2 - Form Validation
506
+ * # Fomantic-UI 2.9.0-beta.202 - Form Validation
507
507
  * http://github.com/fomantic/Fomantic-UI/
508
508
  *
509
509
  *
@@ -923,6 +923,7 @@ $.fn.form = function(parameters) {
923
923
  $field.one('keyup' + eventNamespace, module.event.field.keyup);
924
924
  module.submit();
925
925
  module.debug('Enter pressed on input submitting form');
926
+ event.preventDefault();
926
927
  }
927
928
  keyHeldDown = true;
928
929
  }
@@ -1047,7 +1048,7 @@ $.fn.form = function(parameters) {
1047
1048
  parts,
1048
1049
  suffixPrompt
1049
1050
  ;
1050
- if(ancillary && ancillary.indexOf('..') >= 0) {
1051
+ if(ancillary && ['integer', 'decimal', 'number'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) {
1051
1052
  parts = ancillary.split('..', 2);
1052
1053
  if(!rule.prompt) {
1053
1054
  suffixPrompt = (
@@ -1390,13 +1391,13 @@ $.fn.form = function(parameters) {
1390
1391
  }
1391
1392
  if(settings.inline) {
1392
1393
  if(!promptExists) {
1393
- $prompt = settings.templates.prompt(errors, className.label);
1394
+ $prompt = $('<div/>').addClass(className.label);
1394
1395
  $prompt
1395
1396
  .appendTo($fieldGroup)
1396
1397
  ;
1397
1398
  }
1398
1399
  $prompt
1399
- .html(errors[0])
1400
+ .html(settings.templates.prompt(errors))
1400
1401
  ;
1401
1402
  if(!promptExists) {
1402
1403
  if(settings.transition && module.can.useElement('transition') && $module.transition('is supported')) {
@@ -1589,12 +1590,15 @@ $.fn.form = function(parameters) {
1589
1590
  }
1590
1591
  else if(isCheckbox) {
1591
1592
  module.verbose('Setting checkbox value', value, $element);
1592
- if(value === true || value === 1) {
1593
+ if(value === true || value === 1 || value === 'on') {
1593
1594
  $element.checkbox('check');
1594
1595
  }
1595
1596
  else {
1596
1597
  $element.checkbox('uncheck');
1597
1598
  }
1599
+ if(typeof value === 'string') {
1600
+ $field.val(value);
1601
+ }
1598
1602
  }
1599
1603
  else if(isDropdown) {
1600
1604
  module.verbose('Setting dropdown value', value, $element);
@@ -1707,7 +1711,7 @@ $.fn.form = function(parameters) {
1707
1711
  if(event && $module.data('moduleApi') !== undefined) {
1708
1712
  event.stopImmediatePropagation();
1709
1713
  }
1710
- if(settings.errorFocus) {
1714
+ if(settings.errorFocus && ignoreCallbacks !== true) {
1711
1715
  var focusElement, hasTabIndex = true;
1712
1716
  if (typeof settings.errorFocus === 'string') {
1713
1717
  focusElement = $(settings.errorFocus);
@@ -2030,7 +2034,7 @@ $.fn.form.settings = {
2030
2034
 
2031
2035
  autoCheckRequired : false,
2032
2036
  preventLeaving : false,
2033
- errorFocus : false,
2037
+ errorFocus : true,
2034
2038
  dateHandling : 'date', // 'date', 'input', 'formatter'
2035
2039
 
2036
2040
  onValid : function() {},
@@ -2086,7 +2090,6 @@ $.fn.form.settings = {
2086
2090
  doesntContain : '{name} cannot contain "{ruleValue}"',
2087
2091
  doesntContainExactly : '{name} cannot contain exactly "{ruleValue}"',
2088
2092
  minLength : '{name} must be at least {ruleValue} characters',
2089
- length : '{name} must be at least {ruleValue} characters',
2090
2093
  exactLength : '{name} must be exactly {ruleValue} characters',
2091
2094
  maxLength : '{name} cannot be longer than {ruleValue} characters',
2092
2095
  match : '{name} must match {ruleValue} field',
@@ -2100,7 +2103,7 @@ $.fn.form.settings = {
2100
2103
  selector : {
2101
2104
  checkbox : 'input[type="checkbox"], input[type="radio"]',
2102
2105
  clear : '.clear',
2103
- field : 'input:not(.search):not([type="file"]), textarea, select',
2106
+ field : 'input:not(.search):not([type="file"]):not([type="reset"]):not([type="button"]):not([type="submit"]), textarea, select',
2104
2107
  group : '.field',
2105
2108
  input : 'input:not([type="file"])',
2106
2109
  message : '.error.message',
@@ -2141,15 +2144,22 @@ $.fn.form.settings = {
2141
2144
  html += '<li>' + value + '</li>';
2142
2145
  });
2143
2146
  html += '</ul>';
2144
- return $(html);
2147
+ return html;
2145
2148
  },
2146
2149
 
2147
- // template that produces label
2148
- prompt: function(errors, labelClasses) {
2149
- return $('<div/>')
2150
- .addClass(labelClasses)
2151
- .html(errors[0])
2150
+ // template that produces label content
2151
+ prompt: function(errors) {
2152
+ if(errors.length === 1){
2153
+ return errors[0];
2154
+ }
2155
+ var
2156
+ html = '<ul class="ui list">'
2152
2157
  ;
2158
+ $.each(errors, function(index, value) {
2159
+ html += '<li>' + value + '</li>';
2160
+ });
2161
+ html += '</ul>';
2162
+ return html;
2153
2163
  }
2154
2164
  },
2155
2165
 
@@ -2359,14 +2369,6 @@ $.fn.form.settings = {
2359
2369
  ;
2360
2370
  },
2361
2371
 
2362
- // see rls notes for 2.0.6 (this is a duplicate of minLength)
2363
- length: function(value, requiredLength) {
2364
- return (value !== undefined)
2365
- ? (value.length >= requiredLength)
2366
- : false
2367
- ;
2368
- },
2369
-
2370
2372
  // is exactly length
2371
2373
  exactLength: function(value, requiredLength) {
2372
2374
  return (value !== undefined)
@@ -2575,7 +2577,7 @@ $.fn.form.settings = {
2575
2577
  })( jQuery, window, document );
2576
2578
 
2577
2579
  /*!
2578
- * # Fomantic-UI 2.9.0-beta.2 - Accordion
2580
+ * # Fomantic-UI 2.9.0-beta.202 - Accordion
2579
2581
  * http://github.com/fomantic/Fomantic-UI/
2580
2582
  *
2581
2583
  *
@@ -3194,7 +3196,7 @@ $.extend( $.easing, {
3194
3196
 
3195
3197
 
3196
3198
  /*!
3197
- * # Fomantic-UI 2.9.0-beta.2 - Calendar
3199
+ * # Fomantic-UI 2.9.0-beta.202 - Calendar
3198
3200
  * http://github.com/fomantic/Fomantic-UI/
3199
3201
  *
3200
3202
  *
@@ -3317,7 +3319,7 @@ $.fn.calendar = function(parameters) {
3317
3319
  module.set.maxDate($module.data(metadata.maxDate));
3318
3320
  }
3319
3321
  module.setting('type', module.get.type());
3320
- module.setting('on', settings.on || ($input.length ? 'focus' : 'click'));
3322
+ module.setting('on', settings.on || 'click');
3321
3323
  },
3322
3324
  popup: function () {
3323
3325
  if (settings.inline) {
@@ -3348,7 +3350,10 @@ $.fn.calendar = function(parameters) {
3348
3350
  module.refreshTooltips();
3349
3351
  return settings.onVisible.apply($container, arguments);
3350
3352
  };
3351
- var onHidden = settings.onHidden;
3353
+ var onHidden = function () {
3354
+ module.blur();
3355
+ return settings.onHidden.apply($container, arguments)
3356
+ }
3352
3357
  if (!$input.length) {
3353
3358
  //no input, $container has to handle focus/blur
3354
3359
  $container.attr('tabindex', '0');
@@ -3357,10 +3362,6 @@ $.fn.calendar = function(parameters) {
3357
3362
  module.focus();
3358
3363
  return settings.onVisible.apply($container, arguments);
3359
3364
  };
3360
- onHidden = function () {
3361
- module.blur();
3362
- return settings.onHidden.apply($container, arguments);
3363
- };
3364
3365
  }
3365
3366
  var onShow = function () {
3366
3367
  //reset the focus date onShow
@@ -3585,6 +3586,19 @@ $.fn.calendar = function(parameters) {
3585
3586
  cell.attr("data-variation", disabledDate[metadata.variation]);
3586
3587
  }
3587
3588
  }
3589
+ if (mode === 'hour') {
3590
+ var disabledHour = module.helper.findHourAsObject(cellDate, mode, settings.disabledHours);
3591
+ if (disabledHour !== null && disabledHour[metadata.message]) {
3592
+ cell.attr("data-tooltip", disabledHour[metadata.message]);
3593
+ cell.attr("data-position", disabledHour[metadata.position] || tooltipPosition);
3594
+ if(disabledHour[metadata.inverted] || (isInverted && disabledHour[metadata.inverted] === undefined)) {
3595
+ cell.attr("data-inverted", '');
3596
+ }
3597
+ if(disabledHour[metadata.variation]) {
3598
+ cell.attr("data-variation", disabledHour[metadata.variation]);
3599
+ }
3600
+ }
3601
+ }
3588
3602
  } else {
3589
3603
  eventDate = module.helper.findDayAsObject(cellDate, mode, settings.eventDates);
3590
3604
  if (eventDate !== null) {
@@ -3806,7 +3820,9 @@ $.fn.calendar = function(parameters) {
3806
3820
  var mode = module.get.mode();
3807
3821
  var date = module.get.focusDate();
3808
3822
  if (date && !settings.isDisabled(date, mode) && !module.helper.isDisabled(date, mode) && module.helper.isEnabled(date, mode)) {
3809
- module.selectDate(date);
3823
+ if (settings.onSelect.call(element, date, module.get.mode()) !== false) {
3824
+ module.selectDate(date);
3825
+ }
3810
3826
  }
3811
3827
  //disable form submission:
3812
3828
  event.preventDefault();
@@ -4118,6 +4134,7 @@ $.fn.calendar = function(parameters) {
4118
4134
  //if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
4119
4135
  var endModule = module.get.calendarModule(settings.endCalendar);
4120
4136
  if (endModule) {
4137
+ endModule.refresh();
4121
4138
  if (endModule.setting('on') !== 'focus') {
4122
4139
  endModule.popup('show');
4123
4140
  }
@@ -4167,7 +4184,7 @@ $.fn.calendar = function(parameters) {
4167
4184
 
4168
4185
  helper: {
4169
4186
  isDisabled: function(date, mode) {
4170
- return (mode === 'day' || mode === 'month' || mode === 'year') && ((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
4187
+ return (mode === 'day' || mode === 'month' || mode === 'year' || mode === 'hour') && (((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
4171
4188
  if(typeof d === 'string') {
4172
4189
  d = module.helper.sanitiseDate(d);
4173
4190
  }
@@ -4200,7 +4217,45 @@ $.fn.calendar = function(parameters) {
4200
4217
  }
4201
4218
  }
4202
4219
  }
4203
- }));
4220
+ })) || (mode === 'hour' && settings.disabledHours.some(function(d){
4221
+ if (typeof d === 'string') {
4222
+ d = module.helper.sanitiseDate(d);
4223
+ }
4224
+ if (d instanceof Date) {
4225
+ return module.helper.dateEqual(date, d, mode);
4226
+ } else if (typeof d === 'number') {
4227
+ return date.getHours() === d;
4228
+ }
4229
+ if (d !== null && typeof d === 'object') {
4230
+ var blocked = true;
4231
+
4232
+ if (d[metadata.date]) {
4233
+ if (d[metadata.date] instanceof Date) {
4234
+ blocked = module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]));
4235
+ } else if (Array.isArray(d[metadata.date])) {
4236
+ return d[metadata.date].some(function(idate) {
4237
+ blocked = module.helper.dateEqual(date, idate, mode);
4238
+ });
4239
+ }
4240
+ }
4241
+
4242
+ if (d[metadata.days]) {
4243
+ if (typeof d[metadata.days] === 'number') {
4244
+ blocked = date.getDay() == d[metadata.days];
4245
+ } else if (Array.isArray(d[metadata.days])) {
4246
+ blocked = d[metadata.days].indexOf(date.getDay()) > -1;
4247
+ }
4248
+ }
4249
+
4250
+ if (d[metadata.hours]) {
4251
+ if (typeof d[metadata.hours] === 'number') {
4252
+ return blocked && date.getHours() == d[metadata.hours];
4253
+ } else if (Array.isArray(d[metadata.hours])) {
4254
+ return blocked && d[metadata.hours].indexOf(date.getHours()) > -1;
4255
+ }
4256
+ }
4257
+ }
4258
+ })));
4204
4259
  },
4205
4260
  isEnabled: function(date, mode) {
4206
4261
  if (mode === 'day') {
@@ -4268,6 +4323,49 @@ $.fn.calendar = function(parameters) {
4268
4323
  }
4269
4324
  return null;
4270
4325
  },
4326
+ findHourAsObject: function(date, mode, hours) {
4327
+ if (mode === 'hour') {
4328
+ var d;
4329
+ var hourCheck = function(date, d) {
4330
+ if (d[metadata.hours]) {
4331
+ if (typeof d[metadata.hours] === 'number' && date.getHours() == d[metadata.hours]) {
4332
+ return d;
4333
+ } else if (Array.isArray(d[metadata.hours])) {
4334
+ if (d[metadata.hours].indexOf(date.getHours()) > -1) {
4335
+ return d;
4336
+ }
4337
+ }
4338
+ }
4339
+ }
4340
+ for (var i = 0; i < hours.length; i++) {
4341
+ d = hours[i];
4342
+ if (typeof d === 'number' && date.getHours() == d) {
4343
+ return null;
4344
+ } else if (d !== null && typeof d === 'object') {
4345
+ if (d[metadata.days] && hourCheck(date,d)) {
4346
+ if (typeof d[metadata.days] === 'number' && date.getDay() == d[metadata.days]) {
4347
+ return d;
4348
+ } else if (Array.isArray(d[metadata.days])) {
4349
+ if (d[metadata.days].indexOf(date.getDay()) > -1) {
4350
+ return d;
4351
+ }
4352
+ }
4353
+ } else if (d[metadata.date] && hourCheck(date,d)) {
4354
+ if (d[metadata.date] instanceof Date && module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]))) {
4355
+ return d;
4356
+ } else if (Array.isArray(d[metadata.date])) {
4357
+ if (d[metadata.date].some(function(idate) { return module.helper.dateEqual(date, idate, mode); })) {
4358
+ return d;
4359
+ }
4360
+ }
4361
+ } else if (hourCheck(date,d)) {
4362
+ return d;
4363
+ }
4364
+ }
4365
+ }
4366
+ }
4367
+ return null;
4368
+ },
4271
4369
  sanitiseDate: function (date) {
4272
4370
  if (!(date instanceof Date)) {
4273
4371
  date = parser.date('' + date, settings);
@@ -4553,6 +4651,7 @@ $.fn.calendar.settings = {
4553
4651
  multiMonth : 1, // show multiple months when in 'day' mode
4554
4652
  minTimeGap : 5,
4555
4653
  showWeekNumbers : null, // show Number of Week at the very first column of a dayView
4654
+ disabledHours : [], // specific hour(s) which won't be selectable and contain additional information.
4556
4655
  disabledDates : [], // specific day(s) which won't be selectable and contain additional information.
4557
4656
  disabledDaysOfWeek : [], // day(s) which won't be selectable(s) (0 = Sunday)
4558
4657
  enabledDates : [], // specific day(s) which will be selectable, all other days will be disabled
@@ -4958,7 +5057,9 @@ $.fn.calendar.settings = {
4958
5057
  variation: 'variation',
4959
5058
  position: 'position',
4960
5059
  month: 'month',
4961
- year: 'year'
5060
+ year: 'year',
5061
+ hours: 'hours',
5062
+ days: 'days'
4962
5063
  },
4963
5064
 
4964
5065
  eventClass: 'blue'
@@ -4967,7 +5068,7 @@ $.fn.calendar.settings = {
4967
5068
  })(jQuery, window, document);
4968
5069
 
4969
5070
  /*!
4970
- * # Fomantic-UI 2.9.0-beta.2 - Checkbox
5071
+ * # Fomantic-UI 2.9.0-beta.202 - Checkbox
4971
5072
  * http://github.com/fomantic/Fomantic-UI/
4972
5073
  *
4973
5074
  *
@@ -5207,18 +5308,26 @@ $.fn.checkbox = function(parameters) {
5207
5308
  }
5208
5309
  }
5209
5310
 
5311
+ shortcutPressed = false;
5210
5312
  if(key == keyCode.escape) {
5211
5313
  module.verbose('Escape key pressed blurring field');
5212
5314
  $input.blur();
5213
5315
  shortcutPressed = true;
5214
5316
  }
5215
- else if(!event.ctrlKey && ( key == keyCode.space || (key == keyCode.enter && settings.enableEnterKey)) ) {
5216
- module.verbose('Enter/space key pressed, toggling checkbox');
5217
- module.toggle();
5218
- shortcutPressed = true;
5219
- }
5220
- else {
5221
- shortcutPressed = false;
5317
+ else if(!event.ctrlKey && module.can.change()) {
5318
+ if( key == keyCode.space || (key == keyCode.enter && settings.enableEnterKey) ) {
5319
+ module.verbose('Enter/space key pressed, toggling checkbox');
5320
+ module.toggle();
5321
+ shortcutPressed = true;
5322
+ } else if($module.is('.toggle, .slider') && !module.is.radio()) {
5323
+ if(key == keyCode.left && module.is.checked()) {
5324
+ module.uncheck();
5325
+ shortcutPressed = true;
5326
+ } else if(key == keyCode.right && module.is.unchecked()) {
5327
+ module.check();
5328
+ shortcutPressed = true;
5329
+ }
5330
+ }
5222
5331
  }
5223
5332
  },
5224
5333
  keyup: function(event) {
@@ -5291,7 +5400,6 @@ $.fn.checkbox = function(parameters) {
5291
5400
  settings.onEnable.call(input);
5292
5401
  // preserve legacy callbacks
5293
5402
  settings.onEnabled.call(input);
5294
- module.trigger.change();
5295
5403
  }
5296
5404
  },
5297
5405
 
@@ -5306,7 +5414,6 @@ $.fn.checkbox = function(parameters) {
5306
5414
  settings.onDisable.call(input);
5307
5415
  // preserve legacy callbacks
5308
5416
  settings.onDisabled.call(input);
5309
- module.trigger.change();
5310
5417
  }
5311
5418
  },
5312
5419
 
@@ -5834,7 +5941,7 @@ $.fn.checkbox.settings = {
5834
5941
 
5835
5942
  selector : {
5836
5943
  checkbox : '.ui.checkbox',
5837
- label : 'label, .box',
5944
+ label : 'label',
5838
5945
  input : 'input[type="checkbox"], input[type="radio"]',
5839
5946
  link : 'a[href]'
5840
5947
  }
@@ -5844,7 +5951,7 @@ $.fn.checkbox.settings = {
5844
5951
  })( jQuery, window, document );
5845
5952
 
5846
5953
  /*!
5847
- * # Fomantic-UI 2.9.0-beta.2 - Dimmer
5954
+ * # Fomantic-UI 2.9.0-beta.202 - Dimmer
5848
5955
  * http://github.com/fomantic/Fomantic-UI/
5849
5956
  *
5850
5957
  *
@@ -6109,6 +6216,7 @@ $.fn.dimmer = function(parameters) {
6109
6216
  },
6110
6217
  onComplete : function() {
6111
6218
  module.set.active();
6219
+ settings.onVisible.call($dimmer);
6112
6220
  callback();
6113
6221
  }
6114
6222
  })
@@ -6130,6 +6238,7 @@ $.fn.dimmer = function(parameters) {
6130
6238
  .fadeTo(module.get.duration(), settings.opacity, function() {
6131
6239
  $dimmer.removeAttr('style');
6132
6240
  module.set.active();
6241
+ settings.onVisible.call($dimmer);
6133
6242
  callback();
6134
6243
  })
6135
6244
  ;
@@ -6155,6 +6264,7 @@ $.fn.dimmer = function(parameters) {
6155
6264
  module.remove.dimmed();
6156
6265
  module.remove.variation();
6157
6266
  module.remove.active();
6267
+ settings.onHidden.call($dimmer);
6158
6268
  callback();
6159
6269
  }
6160
6270
  })
@@ -6168,6 +6278,7 @@ $.fn.dimmer = function(parameters) {
6168
6278
  module.remove.dimmed();
6169
6279
  module.remove.active();
6170
6280
  $dimmer.removeAttr('style');
6281
+ settings.onHidden.call($dimmer);
6171
6282
  callback();
6172
6283
  })
6173
6284
  ;
@@ -6549,6 +6660,8 @@ $.fn.dimmer.settings = {
6549
6660
  onChange : function(){},
6550
6661
  onShow : function(){},
6551
6662
  onHide : function(){},
6663
+ onVisible : function(){},
6664
+ onHidden : function(){},
6552
6665
 
6553
6666
  error : {
6554
6667
  method : 'The method you called is not defined.'
@@ -6595,7 +6708,7 @@ $.fn.dimmer.settings = {
6595
6708
  })( jQuery, window, document );
6596
6709
 
6597
6710
  /*!
6598
- * # Fomantic-UI 2.9.0-beta.2 - Dropdown
6711
+ * # Fomantic-UI 2.9.0-beta.202 - Dropdown
6599
6712
  * http://github.com/fomantic/Fomantic-UI/
6600
6713
  *
6601
6714
  *
@@ -6796,6 +6909,7 @@ $.fn.dropdown = function(parameters) {
6796
6909
  select: function() {
6797
6910
  if(module.has.input() && selectObserver) {
6798
6911
  selectObserver.observe($module[0], {
6912
+ attributes: true,
6799
6913
  childList : true,
6800
6914
  subtree : true
6801
6915
  });
@@ -7017,6 +7131,9 @@ $.fn.dropdown = function(parameters) {
7017
7131
  module.debug('Disabling dropdown');
7018
7132
  $module.addClass(className.disabled);
7019
7133
  }
7134
+ if($input.is('[required]')) {
7135
+ settings.forceSelection = true;
7136
+ }
7020
7137
  $input
7021
7138
  .removeAttr('required')
7022
7139
  .removeAttr('class')
@@ -7156,7 +7273,7 @@ $.fn.dropdown = function(parameters) {
7156
7273
  if(settings.onHide.call(element) !== false) {
7157
7274
  module.animate.hide(function() {
7158
7275
  module.remove.visible();
7159
- // hidding search focus
7276
+ // hiding search focus
7160
7277
  if ( module.is.focusedOnSearch() && preventBlur !== true ) {
7161
7278
  $search.blur();
7162
7279
  }
@@ -7221,6 +7338,11 @@ $.fn.dropdown = function(parameters) {
7221
7338
  $module
7222
7339
  .on('change' + eventNamespace, selector.input, module.event.change)
7223
7340
  ;
7341
+ if(module.is.multiple() && module.is.searchSelection()) {
7342
+ $module
7343
+ .on('paste' + eventNamespace, selector.search, module.event.paste)
7344
+ ;
7345
+ }
7224
7346
  },
7225
7347
  mouseEvents: function() {
7226
7348
  module.verbose('Binding mouse events');
@@ -7440,7 +7562,7 @@ $.fn.dropdown = function(parameters) {
7440
7562
  var value = module.is.multiple() ? module.get.values() : module.get.value();
7441
7563
  if (value !== '') {
7442
7564
  module.verbose('Value(s) present after click icon, select value(s) in items');
7443
- module.set.selected(value, null, null, true);
7565
+ module.set.selected(value, null, true, true);
7444
7566
  }
7445
7567
  }
7446
7568
  iconClicked = false;
@@ -7669,6 +7791,15 @@ $.fn.dropdown = function(parameters) {
7669
7791
  },
7670
7792
 
7671
7793
  event: {
7794
+ paste: function(event) {
7795
+ var pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
7796
+ tokens = pasteValue.split(settings.delimiter)
7797
+ ;
7798
+ tokens.forEach(function(value){
7799
+ module.set.selected(module.escape.htmlEntities(value.trim()), null, true, true);
7800
+ });
7801
+ event.preventDefault();
7802
+ },
7672
7803
  change: function() {
7673
7804
  if(!internalChange) {
7674
7805
  module.debug('Input changed, updating selection');
@@ -7881,8 +8012,8 @@ $.fn.dropdown = function(parameters) {
7881
8012
  },
7882
8013
  select: {
7883
8014
  mutation: function(mutations) {
7884
- module.debug('<select> modified, recreating menu');
7885
8015
  if(module.is.selectMutation(mutations)) {
8016
+ module.debug('<select> modified, recreating menu');
7886
8017
  module.disconnect.selectObserver();
7887
8018
  module.refresh();
7888
8019
  module.setup.select();
@@ -8127,7 +8258,7 @@ $.fn.dropdown = function(parameters) {
8127
8258
  hasSubMenu = ($subMenu.length> 0),
8128
8259
  hasSelectedItem = ($selectedItem.length > 0),
8129
8260
  selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
8130
- delimiterPressed = (pressedKey == keys.delimiter && settings.allowAdditions && module.is.multiple()),
8261
+ delimiterPressed = (pressedKey == keys.delimiter && module.is.multiple()),
8131
8262
  isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),
8132
8263
  $nextItem,
8133
8264
  isSubMenuItem,
@@ -8225,7 +8356,7 @@ $.fn.dropdown = function(parameters) {
8225
8356
  .addClass(className.selected)
8226
8357
  ;
8227
8358
  module.set.scrollPosition($nextItem);
8228
- if(settings.selectOnKeydown && module.is.single()) {
8359
+ if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
8229
8360
  module.set.selectedItem($nextItem);
8230
8361
  }
8231
8362
  }
@@ -8252,7 +8383,7 @@ $.fn.dropdown = function(parameters) {
8252
8383
  .addClass(className.selected)
8253
8384
  ;
8254
8385
  module.set.scrollPosition($nextItem);
8255
- if(settings.selectOnKeydown && module.is.single()) {
8386
+ if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
8256
8387
  module.set.selectedItem($nextItem);
8257
8388
  }
8258
8389
  }
@@ -8383,7 +8514,7 @@ $.fn.dropdown = function(parameters) {
8383
8514
  ;
8384
8515
  if( module.can.activate( $(element) ) ) {
8385
8516
  module.set.selected(value, $(element));
8386
- if(!module.is.multiple()) {
8517
+ if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
8387
8518
  module.hideAndClear();
8388
8519
  }
8389
8520
  }
@@ -8396,7 +8527,7 @@ $.fn.dropdown = function(parameters) {
8396
8527
  ;
8397
8528
  if( module.can.activate( $(element) ) ) {
8398
8529
  module.set.value(value, text, $(element));
8399
- if(!module.is.multiple()) {
8530
+ if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
8400
8531
  module.hideAndClear();
8401
8532
  }
8402
8533
  }
@@ -8916,7 +9047,7 @@ $.fn.dropdown = function(parameters) {
8916
9047
  module.error(error.noStorage);
8917
9048
  return;
8918
9049
  }
8919
- name = sessionStorage.getItem(value);
9050
+ name = sessionStorage.getItem(value + elementNamespace);
8920
9051
  return (name !== undefined)
8921
9052
  ? name
8922
9053
  : false
@@ -8960,7 +9091,7 @@ $.fn.dropdown = function(parameters) {
8960
9091
  return;
8961
9092
  }
8962
9093
  module.verbose('Saving remote data to session storage', value, name);
8963
- sessionStorage.setItem(value, name);
9094
+ sessionStorage.setItem(value + elementNamespace, name);
8964
9095
  }
8965
9096
  },
8966
9097
 
@@ -9020,7 +9151,7 @@ $.fn.dropdown = function(parameters) {
9020
9151
  $nextSelectedItem
9021
9152
  .addClass(className.selected)
9022
9153
  ;
9023
- if(settings.selectOnKeydown && module.is.single()) {
9154
+ if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
9024
9155
  module.set.selectedItem($nextSelectedItem);
9025
9156
  }
9026
9157
  $menu
@@ -9223,7 +9354,7 @@ $.fn.dropdown = function(parameters) {
9223
9354
  module.set.scrollPosition($nextValue);
9224
9355
  $selectedItem.removeClass(className.selected);
9225
9356
  $nextValue.addClass(className.selected);
9226
- if(settings.selectOnKeydown && module.is.single()) {
9357
+ if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
9227
9358
  module.set.selectedItem($nextValue);
9228
9359
  }
9229
9360
  }
@@ -9361,17 +9492,24 @@ $.fn.dropdown = function(parameters) {
9361
9492
 
9362
9493
  isFiltered = $selected.hasClass(className.filtered),
9363
9494
  isActive = $selected.hasClass(className.active),
9495
+ isActionable = $selected.hasClass(className.actionable),
9364
9496
  isUserValue = $selected.hasClass(className.addition),
9365
9497
  shouldAnimate = (isMultiple && $selectedItem.length == 1)
9366
9498
  ;
9367
- if(isMultiple) {
9499
+ if(isActionable){
9500
+ if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
9501
+ module.save.remoteData(selectedText, selectedValue);
9502
+ }
9503
+ settings.onActionable.call(element, selectedValue, selectedText, $selected);
9504
+ }
9505
+ else if(isMultiple) {
9368
9506
  if(!isActive || isUserValue) {
9369
9507
  if(settings.apiSettings && settings.saveRemoteData) {
9370
9508
  module.save.remoteData(selectedText, selectedValue);
9371
9509
  }
9372
9510
  if(settings.useLabels) {
9373
- module.add.label(selectedValue, selectedText, shouldAnimate);
9374
9511
  module.add.value(selectedValue, selectedText, $selected);
9512
+ module.add.label(selectedValue, selectedText, shouldAnimate);
9375
9513
  module.set.activeItem($selected);
9376
9514
  module.filterActive();
9377
9515
  module.select.nextAvailable($selectedItem);
@@ -9391,7 +9529,7 @@ $.fn.dropdown = function(parameters) {
9391
9529
  if(settings.apiSettings && settings.saveRemoteData) {
9392
9530
  module.save.remoteData(selectedText, selectedValue);
9393
9531
  }
9394
- if (!keepSearchTerm) {
9532
+ if (!keepSearchTerm && !$selected.hasClass(className.actionable)) {
9395
9533
  module.set.text(selectedText);
9396
9534
  }
9397
9535
  module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
@@ -9581,7 +9719,7 @@ $.fn.dropdown = function(parameters) {
9581
9719
  }
9582
9720
  // extend current array
9583
9721
  if(Array.isArray(currentValue)) {
9584
- newValue = currentValue.concat([addedValue]);
9722
+ newValue = $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
9585
9723
  newValue = module.get.uniqueArray(newValue);
9586
9724
  }
9587
9725
  else {
@@ -9665,18 +9803,10 @@ $.fn.dropdown = function(parameters) {
9665
9803
  return;
9666
9804
  }
9667
9805
  // temporarily disconnect observer
9668
- if(selectObserver) {
9669
- selectObserver.disconnect();
9670
- module.verbose('Temporarily disconnecting mutation observer');
9671
- }
9806
+ module.disconnect.selectObserver();
9672
9807
  $option.remove();
9673
9808
  module.verbose('Removing user addition as an <option>', escapedValue);
9674
- if(selectObserver) {
9675
- selectObserver.observe($input[0], {
9676
- childList : true,
9677
- subtree : true
9678
- });
9679
- }
9809
+ module.observe.select();
9680
9810
  },
9681
9811
  message: function() {
9682
9812
  $menu.children(selector.message).remove();
@@ -10041,7 +10171,7 @@ $.fn.dropdown = function(parameters) {
10041
10171
  selectChanged = false
10042
10172
  ;
10043
10173
  $.each(mutations, function(index, mutation) {
10044
- if($(mutation.target).is('select') || $(mutation.addedNodes).is('select')) {
10174
+ if($(mutation.target).is('select, option, optgroup') || $(mutation.addedNodes).is('select')) {
10045
10175
  selectChanged = true;
10046
10176
  return false;
10047
10177
  }
@@ -10586,7 +10716,7 @@ $.fn.dropdown.settings = {
10586
10716
  keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing
10587
10717
 
10588
10718
  match : 'both', // what to match against with search selection (both, text, or label)
10589
- fullTextSearch : false, // search anywhere in value (set to 'exact' to require exact matches)
10719
+ fullTextSearch : 'exact', // search anywhere in value (set to 'exact' to require exact matches)
10590
10720
  ignoreDiacritics : false, // match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...)
10591
10721
  hideDividers : false, // Whether to hide any divider elements (specified in selector.divider) that are sibling to any items when searched (set to true will hide all dividers, set to 'empty' will hide them when they are not followed by a visible item)
10592
10722
 
@@ -10594,7 +10724,7 @@ $.fn.dropdown.settings = {
10594
10724
  preserveHTML : true, // preserve html when selecting value
10595
10725
  sortSelect : false, // sort selection on init
10596
10726
 
10597
- forceSelection : true, // force a choice on blur with search selection
10727
+ forceSelection : false, // force a choice on blur with search selection
10598
10728
 
10599
10729
  allowAdditions : false, // whether multiple select should allow user added values
10600
10730
  ignoreCase : false, // whether to consider case sensitivity when creating labels
@@ -10605,7 +10735,7 @@ $.fn.dropdown.settings = {
10605
10735
  useLabels : true, // whether multiple select should filter currently active selections from choices
10606
10736
  delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character
10607
10737
 
10608
- showOnFocus : true, // show menu on focus
10738
+ showOnFocus : false, // show menu on focus
10609
10739
  allowReselection : false, // whether current value should trigger callbacks when reselected
10610
10740
  allowTab : true, // add tabindex to element
10611
10741
  allowCategorySelection : false, // allow elements with sub-menus to be selected
@@ -10620,6 +10750,8 @@ $.fn.dropdown.settings = {
10620
10750
 
10621
10751
  headerDivider : true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
10622
10752
 
10753
+ collapseOnActionable : true, // whether the dropdown should collapse upon selection of an actionable item
10754
+
10623
10755
  // label settings on multi-select
10624
10756
  label: {
10625
10757
  transition : 'scale',
@@ -10639,6 +10771,7 @@ $.fn.dropdown.settings = {
10639
10771
  onChange : function(value, text, $selected){},
10640
10772
  onAdd : function(value, text, $selected){},
10641
10773
  onRemove : function(value, text, $selected){},
10774
+ onActionable : function(value, text, $selected){},
10642
10775
  onSearch : function(searchTerm){},
10643
10776
 
10644
10777
  onLabelSelect : function($selectedLabels){},
@@ -10701,7 +10834,8 @@ $.fn.dropdown.settings = {
10701
10834
  icon : 'icon', // optional icon name
10702
10835
  iconClass : 'iconClass', // optional individual class for icon (for example to use flag instead)
10703
10836
  class : 'class', // optional individual class for item/header
10704
- divider : 'divider' // optional divider append for group headers
10837
+ divider : 'divider', // optional divider append for group headers
10838
+ actionable : 'actionable' // optional actionable item
10705
10839
  },
10706
10840
 
10707
10841
  keys : {
@@ -10773,7 +10907,8 @@ $.fn.dropdown.settings = {
10773
10907
  header : 'header',
10774
10908
  divider : 'divider',
10775
10909
  groupIcon : '',
10776
- unfilterable : 'unfilterable'
10910
+ unfilterable : 'unfilterable',
10911
+ actionable : 'actionable'
10777
10912
  }
10778
10913
 
10779
10914
  };
@@ -10848,6 +10983,9 @@ $.fn.dropdown.settings.templates = {
10848
10983
  maybeText = (option[fields.text])
10849
10984
  ? ' data-text="' + deQuote(option[fields.text],true) + '"'
10850
10985
  : '',
10986
+ maybeActionable = (option[fields.actionable])
10987
+ ? className.actionable+' '
10988
+ : '',
10851
10989
  maybeDisabled = (option[fields.disabled])
10852
10990
  ? className.disabled+' '
10853
10991
  : '',
@@ -10856,7 +10994,7 @@ $.fn.dropdown.settings.templates = {
10856
10994
  : '',
10857
10995
  hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
10858
10996
  ;
10859
- html += '<div class="'+ maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
10997
+ html += '<div class="'+ maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
10860
10998
  if (isMenu) {
10861
10999
  html += '<i class="'+ (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
10862
11000
  }
@@ -10926,7 +11064,7 @@ $.fn.dropdown.settings.templates = {
10926
11064
  })( jQuery, window, document );
10927
11065
 
10928
11066
  /*!
10929
- * # Fomantic-UI 2.9.0-beta.2 - Embed
11067
+ * # Fomantic-UI 2.9.0-beta.202 - Embed
10930
11068
  * http://github.com/fomantic/Fomantic-UI/
10931
11069
  *
10932
11070
  *
@@ -11636,7 +11774,7 @@ $.fn.embed.settings = {
11636
11774
  })( jQuery, window, document );
11637
11775
 
11638
11776
  /*!
11639
- * # Fomantic-UI 2.9.0-beta.2 - Modal
11777
+ * # Fomantic-UI 2.9.0-beta.202 - Modal
11640
11778
  * http://github.com/fomantic/Fomantic-UI/
11641
11779
  *
11642
11780
  *
@@ -11703,7 +11841,8 @@ $.fn.modal = function(parameters) {
11703
11841
 
11704
11842
  $module = $(this),
11705
11843
  $context = $(settings.context),
11706
- $close = $module.find(selector.close),
11844
+ $closeIcon = $module.find(selector.closeIcon),
11845
+ $inputs,
11707
11846
 
11708
11847
  $allModals,
11709
11848
  $otherModals,
@@ -11729,6 +11868,7 @@ $.fn.modal = function(parameters) {
11729
11868
  module = {
11730
11869
 
11731
11870
  initialize: function() {
11871
+ module.create.id();
11732
11872
  if(!$module.hasClass('modal')) {
11733
11873
  module.create.modal();
11734
11874
  if(!$.isFunction(settings.onHidden)) {
@@ -11753,15 +11893,17 @@ $.fn.modal = function(parameters) {
11753
11893
  $actions.empty();
11754
11894
  }
11755
11895
  settings.actions.forEach(function (el) {
11756
- var icon = el[fields.icon] ? '<i class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
11896
+ var icon = el[fields.icon] ? '<i '+(el[fields.text] ? 'aria-hidden="true"' : '')+' class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
11757
11897
  text = module.helpers.escape(el[fields.text] || '', settings.preserveHTML),
11758
11898
  cls = module.helpers.deQuote(el[fields.class] || ''),
11759
11899
  click = el[fields.click] && $.isFunction(el[fields.click]) ? el[fields.click] : function () {};
11760
11900
  $actions.append($('<button/>', {
11761
11901
  html: icon + text,
11902
+ 'aria-label': $('<div>'+(el[fields.text] || el[fields.icon] || '')+'</div>').text(),
11762
11903
  class: className.button + ' ' + cls,
11763
11904
  click: function () {
11764
- if (click.call(element, $module) === false) {
11905
+ var button = $(this);
11906
+ if (button.is(selector.approve) || button.is(selector.deny) || click.call(element, $module) === false) {
11765
11907
  return;
11766
11908
  }
11767
11909
  module.hide();
@@ -11772,7 +11914,6 @@ $.fn.modal = function(parameters) {
11772
11914
  module.cache = {};
11773
11915
  module.verbose('Initializing dimmer', $context);
11774
11916
 
11775
- module.create.id();
11776
11917
  module.create.dimmer();
11777
11918
 
11778
11919
  if ( settings.allowMultiple ) {
@@ -11782,11 +11923,9 @@ $.fn.modal = function(parameters) {
11782
11923
  $module.addClass('top aligned');
11783
11924
  }
11784
11925
  module.refreshModals();
11785
-
11926
+ module.refreshInputs();
11786
11927
  module.bind.events();
11787
- if(settings.observeChanges) {
11788
- module.observeChanges();
11789
- }
11928
+ module.observeChanges();
11790
11929
  module.instantiate();
11791
11930
  if(settings.autoShow){
11792
11931
  module.show();
@@ -11803,16 +11942,20 @@ $.fn.modal = function(parameters) {
11803
11942
 
11804
11943
  create: {
11805
11944
  modal: function() {
11806
- $module = $('<div/>', {class: className.modal});
11945
+ $module = $('<div/>', {class: className.modal, role: 'dialog', 'aria-modal': true});
11807
11946
  if (settings.closeIcon) {
11808
- $close = $('<i/>', {class: className.close})
11809
- $module.append($close);
11947
+ $closeIcon = $('<i/>', {class: className.close, role: 'button', tabindex: 0, 'aria-label': settings.text.close})
11948
+ $module.append($closeIcon);
11810
11949
  }
11811
11950
  if (settings.title !== '') {
11812
- $('<div/>', {class: className.title}).appendTo($module);
11951
+ var titleId = '_' + module.get.id() + 'title';
11952
+ $module.attr('aria-labelledby', titleId);
11953
+ $('<div/>', {class: className.title, id: titleId}).appendTo($module);
11813
11954
  }
11814
11955
  if (settings.content !== '') {
11815
- $('<div/>', {class: className.content}).appendTo($module);
11956
+ var descId = '_' + module.get.id() + 'desc';
11957
+ $module.attr('aria-describedby', descId);
11958
+ $('<div/>', {class: className.content, id: descId}).appendTo($module);
11816
11959
  }
11817
11960
  if (module.has.configActions()) {
11818
11961
  $('<div/>', {class: className.actions}).appendTo($module);
@@ -11848,8 +11991,8 @@ $.fn.modal = function(parameters) {
11848
11991
  module.verbose('Creating unique id for element', id);
11849
11992
  },
11850
11993
  innerDimmer: function() {
11851
- if ( $module.find(selector.dimmer).length == 0 ) {
11852
- $module.prepend('<div class="ui inverted dimmer"></div>');
11994
+ if ( $module.find(selector.dimmer).length === 0 ) {
11995
+ $('<div/>', {class: className.innerDimmer}).prependTo($module);
11853
11996
  }
11854
11997
  }
11855
11998
  },
@@ -11865,15 +12008,21 @@ $.fn.modal = function(parameters) {
11865
12008
  ;
11866
12009
  $window.off(elementEventNamespace);
11867
12010
  $dimmer.off(elementEventNamespace);
11868
- $close.off(eventNamespace);
12011
+ $closeIcon.off(elementEventNamespace);
12012
+ if($inputs) {
12013
+ $inputs.off(elementEventNamespace);
12014
+ }
11869
12015
  $context.dimmer('destroy');
11870
12016
  },
11871
12017
 
11872
12018
  observeChanges: function() {
11873
12019
  if('MutationObserver' in window) {
11874
12020
  observer = new MutationObserver(function(mutations) {
11875
- module.debug('DOM tree modified, refreshing');
11876
- module.refresh();
12021
+ if(settings.observeChanges) {
12022
+ module.debug('DOM tree modified, refreshing');
12023
+ module.refresh();
12024
+ }
12025
+ module.refreshInputs();
11877
12026
  });
11878
12027
  observer.observe(element, {
11879
12028
  childList : true,
@@ -11898,6 +12047,23 @@ $.fn.modal = function(parameters) {
11898
12047
  $allModals = $otherModals.add($module);
11899
12048
  },
11900
12049
 
12050
+ refreshInputs: function(){
12051
+ if($inputs){
12052
+ $inputs
12053
+ .off('keydown' + elementEventNamespace)
12054
+ ;
12055
+ }
12056
+ $inputs = $module.find('[tabindex], :input').filter(':visible').filter(function() {
12057
+ return $(this).closest('.disabled').length === 0;
12058
+ });
12059
+ $inputs.first()
12060
+ .on('keydown' + elementEventNamespace, module.event.inputKeyDown.first)
12061
+ ;
12062
+ $inputs.last()
12063
+ .on('keydown' + elementEventNamespace, module.event.inputKeyDown.last)
12064
+ ;
12065
+ },
12066
+
11901
12067
  attachEvents: function(selector, event) {
11902
12068
  var
11903
12069
  $toggle = $(selector)
@@ -11926,6 +12092,9 @@ $.fn.modal = function(parameters) {
11926
12092
  .on('click' + eventNamespace, selector.approve, module.event.approve)
11927
12093
  .on('click' + eventNamespace, selector.deny, module.event.deny)
11928
12094
  ;
12095
+ $closeIcon
12096
+ .on('keyup' + elementEventNamespace, module.event.closeKeyUp)
12097
+ ;
11929
12098
  $window
11930
12099
  .on('resize' + elementEventNamespace, module.event.resize)
11931
12100
  ;
@@ -11944,7 +12113,7 @@ $.fn.modal = function(parameters) {
11944
12113
 
11945
12114
  get: {
11946
12115
  id: function() {
11947
- return (Math.random().toString(16) + '000000000').substr(2, 8);
12116
+ return id;
11948
12117
  },
11949
12118
  element: function() {
11950
12119
  return $module;
@@ -11983,10 +12152,38 @@ $.fn.modal = function(parameters) {
11983
12152
  close: function() {
11984
12153
  module.hide();
11985
12154
  },
12155
+ closeKeyUp: function(event){
12156
+ var
12157
+ keyCode = event.which
12158
+ ;
12159
+ if ((keyCode === settings.keys.enter || keyCode === settings.keys.space) && $module.hasClass(className.front)) {
12160
+ module.hide();
12161
+ }
12162
+ },
12163
+ inputKeyDown: {
12164
+ first: function(event) {
12165
+ var
12166
+ keyCode = event.which
12167
+ ;
12168
+ if (keyCode === settings.keys.tab && event.shiftKey) {
12169
+ $inputs.last().focus();
12170
+ event.preventDefault();
12171
+ }
12172
+ },
12173
+ last: function(event) {
12174
+ var
12175
+ keyCode = event.which
12176
+ ;
12177
+ if (keyCode === settings.keys.tab && !event.shiftKey) {
12178
+ $inputs.first().focus();
12179
+ event.preventDefault();
12180
+ }
12181
+ }
12182
+ },
11986
12183
  mousedown: function(event) {
11987
12184
  var
11988
12185
  $target = $(event.target),
11989
- isRtl = module.is.rtl();
12186
+ isRtl = module.is.rtl()
11990
12187
  ;
11991
12188
  initialMouseDownInModal = ($target.closest(selector.modal).length > 0);
11992
12189
  if(initialMouseDownInModal) {
@@ -12034,10 +12231,9 @@ $.fn.modal = function(parameters) {
12034
12231
  },
12035
12232
  keyboard: function(event) {
12036
12233
  var
12037
- keyCode = event.which,
12038
- escapeKey = 27
12234
+ keyCode = event.which
12039
12235
  ;
12040
- if(keyCode == escapeKey) {
12236
+ if(keyCode === settings.keys.escape) {
12041
12237
  if(settings.closable) {
12042
12238
  module.debug('Escape key pressed hiding modal');
12043
12239
  if ( $module.hasClass(className.front) ) {
@@ -12352,7 +12548,7 @@ $.fn.modal = function(parameters) {
12352
12548
  $module
12353
12549
  .off('mousedown' + elementEventNamespace)
12354
12550
  ;
12355
- }
12551
+ }
12356
12552
  $dimmer
12357
12553
  .off('mousedown' + elementEventNamespace)
12358
12554
  ;
@@ -12537,13 +12733,10 @@ $.fn.modal = function(parameters) {
12537
12733
  set: {
12538
12734
  autofocus: function() {
12539
12735
  var
12540
- $inputs = $module.find('[tabindex], :input').filter(':visible').filter(function() {
12541
- return $(this).closest('.disabled').length === 0;
12542
- }),
12543
12736
  $autofocus = $inputs.filter('[autofocus]'),
12544
12737
  $input = ($autofocus.length > 0)
12545
12738
  ? $autofocus.first()
12546
- : $inputs.first()
12739
+ : ($inputs.length > 1 ? $inputs.filter(':not(i.close)') : $inputs).first()
12547
12740
  ;
12548
12741
  if($input.length > 0) {
12549
12742
  $input.focus();
@@ -12625,7 +12818,7 @@ $.fn.modal = function(parameters) {
12625
12818
  ? $(document).scrollTop() + settings.padding
12626
12819
  : $(document).scrollTop() + (module.cache.contextHeight - module.cache.height - settings.padding),
12627
12820
  marginLeft: -(module.cache.width / 2)
12628
- })
12821
+ })
12629
12822
  ;
12630
12823
  } else {
12631
12824
  $module
@@ -12634,7 +12827,7 @@ $.fn.modal = function(parameters) {
12634
12827
  ? -(module.cache.height / 2)
12635
12828
  : settings.padding / 2,
12636
12829
  marginLeft: -(module.cache.width / 2)
12637
- })
12830
+ })
12638
12831
  ;
12639
12832
  }
12640
12833
  module.verbose('Setting modal offset for legacy mode');
@@ -12960,11 +13153,19 @@ $.fn.modal.settings = {
12960
13153
  // called after deny selector match
12961
13154
  onDeny : function(){ return true; },
12962
13155
 
13156
+ keys : {
13157
+ space : 32,
13158
+ enter : 13,
13159
+ escape : 27,
13160
+ tab : 9,
13161
+ },
13162
+
12963
13163
  selector : {
12964
13164
  title : '> .header',
12965
13165
  content : '> .content',
12966
13166
  actions : '> .actions',
12967
13167
  close : '> .close',
13168
+ closeIcon: '> .close',
12968
13169
  approve : '.actions .positive, .actions .approve, .actions .ok',
12969
13170
  deny : '.actions .negative, .actions .deny, .actions .cancel',
12970
13171
  modal : '.ui.modal',
@@ -12996,11 +13197,13 @@ $.fn.modal.settings = {
12996
13197
  template : 'ui tiny modal',
12997
13198
  ok : 'positive',
12998
13199
  cancel : 'negative',
12999
- prompt : 'ui fluid input'
13200
+ prompt : 'ui fluid input',
13201
+ innerDimmer: 'ui inverted dimmer'
13000
13202
  },
13001
13203
  text: {
13002
13204
  ok : 'Ok',
13003
- cancel: 'Cancel'
13205
+ cancel: 'Cancel',
13206
+ close : 'Close'
13004
13207
  }
13005
13208
  };
13006
13209
 
@@ -13026,33 +13229,39 @@ $.fn.modal.settings.templates = {
13026
13229
  },
13027
13230
  alert: function () {
13028
13231
  var settings = this.get.settings(),
13029
- args = settings.templates.getArguments(arguments)
13232
+ args = settings.templates.getArguments(arguments),
13233
+ approveFn = args.handler
13030
13234
  ;
13031
13235
  return {
13032
13236
  title : args.title,
13033
13237
  content: args.content,
13238
+ onApprove: approveFn,
13034
13239
  actions: [{
13035
13240
  text : settings.text.ok,
13036
13241
  class: settings.className.ok,
13037
- click: args.handler
13242
+ click: approveFn
13038
13243
  }]
13039
13244
  }
13040
13245
  },
13041
13246
  confirm: function () {
13042
13247
  var settings = this.get.settings(),
13043
- args = settings.templates.getArguments(arguments)
13248
+ args = settings.templates.getArguments(arguments),
13249
+ approveFn = function(){args.handler(true)},
13250
+ denyFn = function(){args.handler(false)}
13044
13251
  ;
13045
13252
  return {
13046
13253
  title : args.title,
13047
13254
  content: args.content,
13255
+ onApprove: approveFn,
13256
+ onDeny: denyFn,
13048
13257
  actions: [{
13049
13258
  text : settings.text.ok,
13050
13259
  class: settings.className.ok,
13051
- click: function(){args.handler(true)}
13260
+ click: approveFn
13052
13261
  },{
13053
13262
  text: settings.text.cancel,
13054
13263
  class: settings.className.cancel,
13055
- click: function(){args.handler(false)}
13264
+ click: denyFn
13056
13265
  }]
13057
13266
  }
13058
13267
  },
@@ -13060,7 +13269,14 @@ $.fn.modal.settings.templates = {
13060
13269
  var $this = this,
13061
13270
  settings = this.get.settings(),
13062
13271
  args = settings.templates.getArguments(arguments),
13063
- input = $($.parseHTML(args.content)).filter('.ui.input')
13272
+ input = $($.parseHTML(args.content)).filter('.ui.input'),
13273
+ approveFn = function(){
13274
+ var settings = $this.get.settings(),
13275
+ inputField = $this.get.element().find(settings.selector.prompt)[0]
13276
+ ;
13277
+ args.handler($(inputField).val());
13278
+ },
13279
+ denyFn = function(){args.handler(null)}
13064
13280
  ;
13065
13281
  if (input.length === 0) {
13066
13282
  args.content += '<p><div class="'+settings.className.prompt+'"><input placeholder="'+this.helpers.deQuote(args.placeholder || '')+'" type="text" value="'+this.helpers.deQuote(args.defaultValue || '')+'"></div></p>';
@@ -13068,19 +13284,16 @@ $.fn.modal.settings.templates = {
13068
13284
  return {
13069
13285
  title : args.title,
13070
13286
  content: args.content,
13287
+ onApprove: approveFn,
13288
+ onDeny: denyFn,
13071
13289
  actions: [{
13072
13290
  text: settings.text.ok,
13073
13291
  class: settings.className.ok,
13074
- click: function(){
13075
- var settings = $this.get.settings(),
13076
- inputField = $this.get.element().find(settings.selector.prompt)[0]
13077
- ;
13078
- args.handler($(inputField).val());
13079
- }
13292
+ click: approveFn
13080
13293
  },{
13081
13294
  text: settings.text.cancel,
13082
13295
  class: settings.className.cancel,
13083
- click: function(){args.handler(null)}
13296
+ click: denyFn
13084
13297
  }]
13085
13298
  }
13086
13299
  }
@@ -13089,7 +13302,7 @@ $.fn.modal.settings.templates = {
13089
13302
  })( jQuery, window, document );
13090
13303
 
13091
13304
  /*!
13092
- * # Fomantic-UI 2.9.0-beta.2 - Nag
13305
+ * # Fomantic-UI 2.9.0-beta.202 - Nag
13093
13306
  * http://github.com/fomantic/Fomantic-UI/
13094
13307
  *
13095
13308
  *
@@ -13648,7 +13861,7 @@ $.extend( $.easing, {
13648
13861
  })( jQuery, window, document );
13649
13862
 
13650
13863
  /*!
13651
- * # Fomantic-UI 2.9.0-beta.2 - Popup
13864
+ * # Fomantic-UI 2.9.0-beta.202 - Popup
13652
13865
  * http://github.com/fomantic/Fomantic-UI/
13653
13866
  *
13654
13867
  *
@@ -15190,7 +15403,7 @@ $.fn.popup.settings = {
15190
15403
  })( jQuery, window, document );
15191
15404
 
15192
15405
  /*!
15193
- * # Fomantic-UI 2.9.0-beta.2 - Progress
15406
+ * # Fomantic-UI 2.9.0-beta.202 - Progress
15194
15407
  * http://github.com/fomantic/Fomantic-UI/
15195
15408
  *
15196
15409
  *
@@ -15284,7 +15497,7 @@ $.fn.progress = function(parameters) {
15284
15497
  *
15285
15498
  * @param min A minimum value within multiple values
15286
15499
  * @param total A total amount of multiple values
15287
- * @returns {number} A precison. Could be 1, 10, 100, ... 1e+10.
15500
+ * @returns {number} A precision. Could be 1, 10, 100, ... 1e+10.
15288
15501
  */
15289
15502
  derivePrecision: function(min, total) {
15290
15503
  var precisionPower = 0
@@ -15798,6 +16011,9 @@ $.fn.progress = function(parameters) {
15798
16011
  }
15799
16012
  else {
15800
16013
  module.remove.active();
16014
+ module.remove.warning();
16015
+ module.remove.error();
16016
+ module.remove.success();
15801
16017
  module.set.label(settings.text.active);
15802
16018
  }
15803
16019
  },
@@ -16182,7 +16398,7 @@ $.fn.progress.settings = {
16182
16398
  nonNumeric : 'Progress value is non numeric',
16183
16399
  tooHigh : 'Value specified is above 100%',
16184
16400
  tooLow : 'Value specified is below 0%',
16185
- sumExceedsTotal : 'Sum of multple values exceed total',
16401
+ sumExceedsTotal : 'Sum of multiple values exceed total',
16186
16402
  },
16187
16403
 
16188
16404
  regExp: {
@@ -16224,7 +16440,7 @@ $.fn.progress.settings = {
16224
16440
  })( jQuery, window, document );
16225
16441
 
16226
16442
  /*!
16227
- * # Fomantic-UI 2.9.0-beta.2 - Slider
16443
+ * # Fomantic-UI 2.9.0-beta.202 - Slider
16228
16444
  * http://github.com/fomantic/Fomantic-UI/
16229
16445
  *
16230
16446
  *
@@ -17563,7 +17779,7 @@ $.fn.slider.settings = {
17563
17779
  })( jQuery, window, document );
17564
17780
 
17565
17781
  /*!
17566
- * # Fomantic-UI 2.9.0-beta.2 - Rating
17782
+ * # Fomantic-UI 2.9.0-beta.202 - Rating
17567
17783
  * http://github.com/fomantic/Fomantic-UI/
17568
17784
  *
17569
17785
  *
@@ -18118,7 +18334,7 @@ $.fn.rating.settings = {
18118
18334
  })( jQuery, window, document );
18119
18335
 
18120
18336
  /*!
18121
- * # Fomantic-UI 2.9.0-beta.2 - Search
18337
+ * # Fomantic-UI 2.9.0-beta.202 - Search
18122
18338
  * http://github.com/fomantic/Fomantic-UI/
18123
18339
  *
18124
18340
  *
@@ -19686,7 +19902,7 @@ $.fn.search.settings = {
19686
19902
  })( jQuery, window, document );
19687
19903
 
19688
19904
  /*!
19689
- * # Fomantic-UI 2.9.0-beta.2 - Shape
19905
+ * # Fomantic-UI 2.9.0-beta.202 - Shape
19690
19906
  * http://github.com/fomantic/Fomantic-UI/
19691
19907
  *
19692
19908
  *
@@ -20535,7 +20751,7 @@ $.fn.shape.settings = {
20535
20751
  })( jQuery, window, document );
20536
20752
 
20537
20753
  /*!
20538
- * # Fomantic-UI 2.9.0-beta.2 - Sidebar
20754
+ * # Fomantic-UI 2.9.0-beta.202 - Sidebar
20539
20755
  * http://github.com/fomantic/Fomantic-UI/
20540
20756
  *
20541
20757
  *
@@ -21572,7 +21788,7 @@ $.fn.sidebar.settings = {
21572
21788
  })( jQuery, window, document );
21573
21789
 
21574
21790
  /*!
21575
- * # Fomantic-UI 2.9.0-beta.2 - Sticky
21791
+ * # Fomantic-UI 2.9.0-beta.202 - Sticky
21576
21792
  * http://github.com/fomantic/Fomantic-UI/
21577
21793
  *
21578
21794
  *
@@ -22511,7 +22727,7 @@ $.fn.sticky.settings = {
22511
22727
 
22512
22728
  error : {
22513
22729
  container : 'Sticky element must be inside a relative container',
22514
- visible : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.',
22730
+ visible : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to suppress this warning in production.',
22515
22731
  method : 'The method you called is not defined.',
22516
22732
  invalidContext : 'Context specified does not exist',
22517
22733
  elementSize : 'Sticky element is larger than its container, cannot create sticky.'
@@ -22530,7 +22746,7 @@ $.fn.sticky.settings = {
22530
22746
  })( jQuery, window, document );
22531
22747
 
22532
22748
  /*!
22533
- * # Fomantic-UI 2.9.0-beta.2 - Tab
22749
+ * # Fomantic-UI 2.9.0-beta.202 - Tab
22534
22750
  * http://github.com/fomantic/Fomantic-UI/
22535
22751
  *
22536
22752
  *
@@ -22631,10 +22847,18 @@ $.fn.tab = function(parameters) {
22631
22847
  initializedHistory = true;
22632
22848
  }
22633
22849
 
22634
- if(settings.autoTabActivation && instance === undefined && module.determine.activeTab() == null) {
22635
- module.debug('No active tab detected, setting first tab active', module.get.initialPath());
22636
- module.changeTab(settings.autoTabActivation === true ? module.get.initialPath() : settings.autoTabActivation);
22637
- };
22850
+ var activeTab = module.determine.activeTab();
22851
+ if(settings.autoTabActivation && instance === undefined && activeTab == null) {
22852
+ activeTab = settings.autoTabActivation === true ? module.get.initialPath() : settings.autoTabActivation;
22853
+ module.debug('No active tab detected, setting tab active', activeTab);
22854
+ module.changeTab(activeTab);
22855
+ }
22856
+ if(activeTab != null && settings.history) {
22857
+ var autoUpdate = $.address.autoUpdate();
22858
+ $.address.autoUpdate(false);
22859
+ $.address.value(activeTab);
22860
+ $.address.autoUpdate(autoUpdate);
22861
+ }
22638
22862
 
22639
22863
  module.instantiate();
22640
22864
  },
@@ -22734,6 +22958,7 @@ $.fn.tab = function(parameters) {
22734
22958
  .history(true)
22735
22959
  .state(settings.path)
22736
22960
  ;
22961
+ $(window).trigger('popstate');
22737
22962
  }
22738
22963
  else {
22739
22964
  module.error(error.path);
@@ -22901,6 +23126,10 @@ $.fn.tab = function(parameters) {
22901
23126
  module.verbose('Tab parameters found', nextPathArray);
22902
23127
  }
22903
23128
  }
23129
+ if (settings.onBeforeChange.call(element, currentPath) === false) {
23130
+ module.debug('onBeforeChange returned false, cancelling tab change', $tab);
23131
+ return false;
23132
+ }
22904
23133
  if(isLastTab && remoteContent) {
22905
23134
  if(!shouldIgnoreLoad) {
22906
23135
  module.activate.navigation(currentPath);
@@ -22937,6 +23166,10 @@ $.fn.tab = function(parameters) {
22937
23166
  // if anchor exists use parent tab
22938
23167
  if($anchor && $anchor.length > 0 && currentPath) {
22939
23168
  module.debug('Anchor link used, opening parent tab', $tab, $anchor);
23169
+ if (settings.onBeforeChange.call(element, currentPath) === false) {
23170
+ module.debug('onBeforeChange returned false, cancelling tab change', $tab);
23171
+ return false;
23172
+ }
22940
23173
  if( !$tab.hasClass(className.active) ) {
22941
23174
  setTimeout(function() {
22942
23175
  module.scrollTo($anchor);
@@ -23490,6 +23723,7 @@ $.fn.tab.settings = {
23490
23723
  onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load
23491
23724
  onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible
23492
23725
  onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content
23726
+ onBeforeChange: function(tabPath) {}, // called before a tab is about to be changed. Returning false will cancel the tab change
23493
23727
 
23494
23728
  templates : {
23495
23729
  determineTitle: function(tabArray) {} // returns page title for path
@@ -23532,7 +23766,7 @@ $.fn.tab.settings = {
23532
23766
  })( jQuery, window, document );
23533
23767
 
23534
23768
  /*!
23535
- * # Fomantic-UI 2.9.0-beta.2 - Toast
23769
+ * # Fomantic-UI 2.9.0-beta.202 - Toast
23536
23770
  * http://github.com/fomantic/Fomantic-UI/
23537
23771
  *
23538
23772
  *
@@ -23602,12 +23836,14 @@ $.fn.toast = function(parameters) {
23602
23836
  element = this,
23603
23837
  instance = isToastComponent ? $module.data(moduleNamespace) : undefined,
23604
23838
 
23839
+ id,
23605
23840
  module
23606
23841
  ;
23607
23842
  module = {
23608
23843
 
23609
23844
  initialize: function() {
23610
23845
  module.verbose('Initializing element');
23846
+ module.create.id();
23611
23847
  if (!module.has.container()) {
23612
23848
  module.create.container();
23613
23849
  }
@@ -23657,17 +23893,22 @@ $.fn.toast = function(parameters) {
23657
23893
  },
23658
23894
 
23659
23895
  show: function(callback) {
23660
- callback = callback || function(){};
23661
- module.debug('Showing toast');
23662
23896
  if(settings.onShow.call($toastBox, element) === false) {
23663
23897
  module.debug('onShow callback returned false, cancelling toast animation');
23664
23898
  return;
23665
23899
  }
23900
+ callback = callback || function(){};
23901
+ module.debug('Showing toast');
23666
23902
  module.animate.show(callback);
23667
23903
  },
23668
23904
 
23669
23905
  close: function(callback) {
23906
+ if(settings.onHide.call($toastBox, element) === false) {
23907
+ module.debug('onHide callback returned false, cancelling toast animation');
23908
+ return;
23909
+ }
23670
23910
  callback = callback || function(){};
23911
+ module.debug('Closing toast');
23671
23912
  module.remove.visible();
23672
23913
  module.unbind.events();
23673
23914
  module.animate.close(callback);
@@ -23679,12 +23920,16 @@ $.fn.toast = function(parameters) {
23679
23920
  module.verbose('Creating container');
23680
23921
  $context.append($('<div/>',{class: settings.position + ' ' + className.container + ' ' +(settings.horizontal ? className.horizontal : '')}));
23681
23922
  },
23923
+ id: function() {
23924
+ id = (Math.random().toString(16) + '000000000').substr(2, 8);
23925
+ module.verbose('Creating unique id for element', id);
23926
+ },
23682
23927
  toast: function() {
23683
23928
  $toastBox = $('<div/>', {class: className.box});
23684
23929
  var iconClass = module.get.iconClass();
23685
23930
  if (!isToastComponent) {
23686
23931
  module.verbose('Creating toast');
23687
- $toast = $('<div/>');
23932
+ $toast = $('<div/>', {role: 'alert'});
23688
23933
  var $content = $('<div/>', {class: className.content});
23689
23934
  if (iconClass !== '') {
23690
23935
  $toast.append($('<i/>', {class: iconClass + ' ' + className.icon}));
@@ -23697,13 +23942,21 @@ $.fn.toast = function(parameters) {
23697
23942
  }));
23698
23943
  }
23699
23944
  if (settings.title !== '') {
23945
+ var titleId = '_' + module.get.id() + 'title';
23946
+ $toast.attr('aria-labelledby', titleId);
23700
23947
  $content.append($('<div/>', {
23701
23948
  class: className.title,
23702
- text: settings.title
23949
+ id: titleId,
23950
+ html: module.helpers.escape(settings.title, settings.preserveHTML)
23703
23951
  }));
23704
23952
  }
23705
-
23706
- $content.append($('<div/>', {class: className.message, html: module.helpers.escape(settings.message, settings.preserveHTML)}));
23953
+ var descId = '_' + module.get.id() + 'desc';
23954
+ $toast.attr('aria-describedby', descId);
23955
+ $content.append($('<div/>', {
23956
+ class: className.message,
23957
+ id: descId,
23958
+ html: module.helpers.escape(settings.message, settings.preserveHTML)
23959
+ }));
23707
23960
 
23708
23961
  $toast
23709
23962
  .addClass(settings.class + ' ' + className.toast)
@@ -23711,7 +23964,7 @@ $.fn.toast = function(parameters) {
23711
23964
  ;
23712
23965
  $toast.css('opacity', settings.opacity);
23713
23966
  if (settings.closeIcon) {
23714
- $close = $('<i/>', {class: className.close + ' ' + (typeof settings.closeIcon === 'string' ? settings.closeIcon : '')});
23967
+ $close = $('<i/>', {class: className.close + ' ' + (typeof settings.closeIcon === 'string' ? settings.closeIcon : ''), role: 'button', tabindex: 0, 'aria-label': settings.text.close});
23715
23968
  if($close.hasClass(className.left)) {
23716
23969
  $toast.prepend($close);
23717
23970
  } else {
@@ -23754,15 +24007,17 @@ $.fn.toast = function(parameters) {
23754
24007
  }
23755
24008
  }
23756
24009
  settings.actions.forEach(function (el) {
23757
- var icon = el[fields.icon] ? '<i class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
24010
+ var icon = el[fields.icon] ? '<i '+(el[fields.text] ? 'aria-hidden="true"' : '')+' class="' + module.helpers.deQuote(el[fields.icon]) + ' icon"></i>' : '',
23758
24011
  text = module.helpers.escape(el[fields.text] || '', settings.preserveHTML),
23759
24012
  cls = module.helpers.deQuote(el[fields.class] || ''),
23760
24013
  click = el[fields.click] && $.isFunction(el[fields.click]) ? el[fields.click] : function () {};
23761
24014
  $actions.append($('<button/>', {
23762
24015
  html: icon + text,
24016
+ 'aria-label': $('<div>'+(el[fields.text] || el[fields.icon] || '')+'</div>').text(),
23763
24017
  class: className.button + ' ' + cls,
23764
24018
  click: function () {
23765
- if (click.call(element, $module) === false) {
24019
+ var button = $(this);
24020
+ if (button.is(selector.approve) || button.is(selector.deny) || click.call(element, $module) === false) {
23766
24021
  return;
23767
24022
  }
23768
24023
  module.close();
@@ -23862,13 +24117,12 @@ $.fn.toast = function(parameters) {
23862
24117
  bind: {
23863
24118
  events: function() {
23864
24119
  module.debug('Binding events to toast');
23865
- if(settings.closeOnClick || settings.closeIcon) {
23866
- (settings.closeIcon ? $close : $toast)
23867
- .on('click' + eventNamespace, module.event.click)
23868
- ;
24120
+ if(settings.closeIcon) {
24121
+ $close.on('click' + eventNamespace, module.event.close);
23869
24122
  }
24123
+ $toast.on('click' + eventNamespace, module.event.click);
23870
24124
  if($animationObject) {
23871
- $animationObject.on('animationend' + eventNamespace, module.close);
24125
+ $animationObject.on('animationend' + eventNamespace, module.event.close);
23872
24126
  }
23873
24127
  $toastBox
23874
24128
  .on('click' + eventNamespace, selector.approve, module.event.approve)
@@ -23880,11 +24134,10 @@ $.fn.toast = function(parameters) {
23880
24134
  unbind: {
23881
24135
  events: function() {
23882
24136
  module.debug('Unbinding events to toast');
23883
- if(settings.closeOnClick || settings.closeIcon) {
23884
- (settings.closeIcon ? $close : $toast)
23885
- .off('click' + eventNamespace)
23886
- ;
24137
+ if(settings.closeIcon) {
24138
+ $close.off('click' + eventNamespace);
23887
24139
  }
24140
+ $toast.off('click' + eventNamespace);
23888
24141
  if($animationObject) {
23889
24142
  $animationObject.off('animationend' + eventNamespace);
23890
24143
  }
@@ -23916,11 +24169,6 @@ $.fn.toast = function(parameters) {
23916
24169
  },
23917
24170
  close: function(callback) {
23918
24171
  callback = $.isFunction(callback) ? callback : function(){};
23919
- module.debug('Closing toast');
23920
- if(settings.onHide.call($toastBox, element) === false) {
23921
- module.debug('onHide callback returned false, cancelling toast animation');
23922
- return;
23923
- }
23924
24172
  if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {
23925
24173
  $toastBox
23926
24174
  .transition({
@@ -23976,7 +24224,7 @@ $.fn.toast = function(parameters) {
23976
24224
  has: {
23977
24225
  container: function() {
23978
24226
  module.verbose('Determining if there is already a container');
23979
- return ($context.find(module.helpers.toClass(settings.position) + selector.container + (settings.horizontal ? module.helpers.toClass(className.horizontal) : '')).length > 0);
24227
+ return ($context.find(module.helpers.toClass(settings.position) + selector.container + (settings.horizontal ? module.helpers.toClass(className.horizontal) : ':not('+module.helpers.toClass(className.horizontal)+')')).length > 0);
23980
24228
  },
23981
24229
  toast: function(){
23982
24230
  return !!module.get.toast();
@@ -23990,8 +24238,11 @@ $.fn.toast = function(parameters) {
23990
24238
  },
23991
24239
 
23992
24240
  get: {
24241
+ id: function() {
24242
+ return id;
24243
+ },
23993
24244
  container: function() {
23994
- return ($context.find(module.helpers.toClass(settings.position) + selector.container)[0]);
24245
+ return ($context.find(module.helpers.toClass(settings.position) + selector.container + (settings.horizontal ? module.helpers.toClass(className.horizontal) : ':not('+module.helpers.toClass(className.horizontal)+')'))[0]);
23995
24246
  },
23996
24247
  toastBox: function() {
23997
24248
  return $toastBox || null;
@@ -24023,9 +24274,15 @@ $.fn.toast = function(parameters) {
24023
24274
  },
24024
24275
 
24025
24276
  event: {
24277
+ close: function(){
24278
+ module.close();
24279
+ },
24026
24280
  click: function(event) {
24027
- if($(event.target).closest('a').length === 0) {
24028
- settings.onClick.call($toastBox, element);
24281
+ if($(event.target).closest(selector.clickable).length === 0) {
24282
+ if(settings.onClick.call($toastBox, element) === false || !settings.closeOnClick) {
24283
+ module.verbose('Click callback returned false or close denied by setting cancelling close');
24284
+ return;
24285
+ }
24029
24286
  module.close();
24030
24287
  }
24031
24288
  },
@@ -24366,6 +24623,10 @@ $.fn.toast.settings = {
24366
24623
  unclickable : 'unclickable'
24367
24624
  },
24368
24625
 
24626
+ text: {
24627
+ close : 'Close'
24628
+ },
24629
+
24369
24630
  icons : {
24370
24631
  info : 'info',
24371
24632
  success : 'checkmark',
@@ -24382,6 +24643,7 @@ $.fn.toast.settings = {
24382
24643
  image : '> img.image, > .image > img',
24383
24644
  icon : '> i.icon',
24384
24645
  input : 'input:not([type="hidden"]), textarea, select, button, .ui.button, ui.dropdown',
24646
+ clickable : 'a, details, .ui.accordion',
24385
24647
  approve : '.actions .positive, .actions .approve, .actions .ok',
24386
24648
  deny : '.actions .negative, .actions .deny, .actions .cancel'
24387
24649
  },
@@ -24425,7 +24687,7 @@ $.extend( $.easing, {
24425
24687
  })( jQuery, window, document );
24426
24688
 
24427
24689
  /*!
24428
- * # Fomantic-UI 2.9.0-beta.2 - Transition
24690
+ * # Fomantic-UI 2.9.0-beta.202 - Transition
24429
24691
  * http://github.com/fomantic/Fomantic-UI/
24430
24692
  *
24431
24693
  *
@@ -25523,7 +25785,7 @@ $.fn.transition.settings = {
25523
25785
 
25524
25786
  // possible errors
25525
25787
  error: {
25526
- noAnimation : 'Element is no longer attached to DOM. Unable to animate. Use silent setting to surpress this warning in production.',
25788
+ noAnimation : 'Element is no longer attached to DOM. Unable to animate. Use silent setting to suppress this warning in production.',
25527
25789
  repeated : 'That animation is already occurring, cancelling repeated animation',
25528
25790
  method : 'The method you called is not defined',
25529
25791
  support : 'This browser does not support CSS animations'
@@ -25535,7 +25797,7 @@ $.fn.transition.settings = {
25535
25797
  })( jQuery, window, document );
25536
25798
 
25537
25799
  /*!
25538
- * # Fomantic-UI 2.9.0-beta.2 - API
25800
+ * # Fomantic-UI 2.9.0-beta.202 - API
25539
25801
  * http://github.com/fomantic/Fomantic-UI/
25540
25802
  *
25541
25803
  *
@@ -25610,6 +25872,7 @@ $.api = $.fn.api = function(parameters) {
25610
25872
  url,
25611
25873
  data,
25612
25874
  requestStartTime,
25875
+ originalData,
25613
25876
 
25614
25877
  // standard module
25615
25878
  element = this,
@@ -25622,6 +25885,7 @@ $.api = $.fn.api = function(parameters) {
25622
25885
 
25623
25886
  initialize: function() {
25624
25887
  if(!methodInvoked) {
25888
+ originalData = settings.data;
25625
25889
  module.bind.events();
25626
25890
  }
25627
25891
  module.instantiate();
@@ -25668,7 +25932,7 @@ $.api = $.fn.api = function(parameters) {
25668
25932
  response = JSON.parse(response);
25669
25933
  }
25670
25934
  catch(e) {
25671
- // isnt json string
25935
+ // isn't json string
25672
25936
  }
25673
25937
  }
25674
25938
  return response;
@@ -25684,8 +25948,8 @@ $.api = $.fn.api = function(parameters) {
25684
25948
  module.error(error.noStorage);
25685
25949
  return;
25686
25950
  }
25687
- response = sessionStorage.getItem(url);
25688
- module.debug('Using cached response', url, response);
25951
+ response = sessionStorage.getItem(url + module.get.normalizedData());
25952
+ module.debug('Using cached response', url, settings.data, response);
25689
25953
  response = module.decode.json(response);
25690
25954
  return response;
25691
25955
  }
@@ -25703,8 +25967,8 @@ $.api = $.fn.api = function(parameters) {
25703
25967
  if( $.isPlainObject(response) ) {
25704
25968
  response = JSON.stringify(response);
25705
25969
  }
25706
- sessionStorage.setItem(url, response);
25707
- module.verbose('Storing cached response for url', url, response);
25970
+ sessionStorage.setItem(url + module.get.normalizedData(), response);
25971
+ module.verbose('Storing cached response for url', url, settings.data, response);
25708
25972
  }
25709
25973
  },
25710
25974
 
@@ -25733,7 +25997,7 @@ $.api = $.fn.api = function(parameters) {
25733
25997
 
25734
25998
  // Add form content
25735
25999
  if(settings.serializeForm) {
25736
- settings.data = module.add.formData(settings.data);
26000
+ settings.data = module.add.formData(originalData || settings.data);
25737
26001
  }
25738
26002
 
25739
26003
  // call beforesend and get any settings changes
@@ -25870,10 +26134,6 @@ $.api = $.fn.api = function(parameters) {
25870
26134
  cancelled: function() {
25871
26135
  return (module.cancelled || false);
25872
26136
  },
25873
- succesful: function() {
25874
- module.verbose('This behavior will be deleted due to typo. Use "was successful" instead.');
25875
- return module.was.successful();
25876
- },
25877
26137
  successful: function() {
25878
26138
  return (module.request && module.request.state() == 'resolved');
25879
26139
  },
@@ -25965,25 +26225,29 @@ $.api = $.fn.api = function(parameters) {
25965
26225
  },
25966
26226
  formData: function(data) {
25967
26227
  var
25968
- canSerialize = ($.fn.serializeObject !== undefined),
25969
- formData = (canSerialize)
25970
- ? $form.serializeObject()
25971
- : $form.serialize(),
26228
+ formData = {},
25972
26229
  hasOtherData
25973
26230
  ;
25974
- data = data || settings.data;
26231
+ data = data || originalData || settings.data;
25975
26232
  hasOtherData = $.isPlainObject(data);
25976
26233
 
25977
- if(hasOtherData) {
25978
- if(canSerialize) {
25979
- module.debug('Extending existing data with form data', data, formData);
25980
- data = $.extend(true, {}, data, formData);
25981
- }
25982
- else {
25983
- module.error(error.missingSerialize);
25984
- module.debug('Cant extend data. Replacing data with form data', data, formData);
25985
- data = formData;
26234
+ $.each($form.serializeArray(), function (i, element) {
26235
+ var node = formData[element.name];
26236
+
26237
+ if ('undefined' !== typeof node && node !== null) {
26238
+ if (Array.isArray(node)) {
26239
+ node.push(element.value);
26240
+ } else {
26241
+ formData[element.name] = [node, element.value];
26242
+ }
26243
+ } else {
26244
+ formData[element.name] = element.value;
25986
26245
  }
26246
+ });
26247
+
26248
+ if(hasOtherData) {
26249
+ module.debug('Extending existing data with form data', data, formData);
26250
+ data = $.extend(true, {}, data, formData);
25987
26251
  }
25988
26252
  else {
25989
26253
  module.debug('Adding form data', formData);
@@ -26234,6 +26498,9 @@ $.api = $.fn.api = function(parameters) {
26234
26498
  },
26235
26499
 
26236
26500
  get: {
26501
+ normalizedData: function(){
26502
+ return typeof settings.data === "string" ? settings.data : JSON.stringify(settings.data, Object.keys(settings.data).sort());
26503
+ },
26237
26504
  responseFromXHR: function(xhr) {
26238
26505
  return $.isPlainObject(xhr)
26239
26506
  ? (module.is.expectingJSON())
@@ -26677,7 +26944,6 @@ $.api.settings = {
26677
26944
  legacyParameters : 'You are using legacy API success callback names',
26678
26945
  method : 'The method you called is not defined',
26679
26946
  missingAction : 'API action used but no url was defined',
26680
- missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object',
26681
26947
  missingURL : 'No URL specified for api event',
26682
26948
  noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.',
26683
26949
  noStorage : 'Caching responses locally requires session storage',
@@ -26713,7 +26979,7 @@ $.api.settings = {
26713
26979
  })( jQuery, window, document );
26714
26980
 
26715
26981
  /*!
26716
- * # Fomantic-UI 2.9.0-beta.2 - State
26982
+ * # Fomantic-UI 2.9.0-beta.202 - State
26717
26983
  * http://github.com/fomantic/Fomantic-UI/
26718
26984
  *
26719
26985
  *
@@ -27425,7 +27691,7 @@ $.fn.state.settings = {
27425
27691
  })( jQuery, window, document );
27426
27692
 
27427
27693
  /*!
27428
- * # Fomantic-UI 2.9.0-beta.2 - Visibility
27694
+ * # Fomantic-UI 2.9.0-beta.202 - Visibility
27429
27695
  * http://github.com/fomantic/Fomantic-UI/
27430
27696
  *
27431
27697
  *
@@ -28663,7 +28929,7 @@ $.fn.visibility.settings = {
28663
28929
  // callback should only occur one time
28664
28930
  once : true,
28665
28931
 
28666
- // callback should fire continuously whe evaluates to true
28932
+ // callback should fire continuously when evaluates to true
28667
28933
  continuous : false,
28668
28934
 
28669
28935
  // offset to use with scroll top