fomantic-ui 2.9.0-beta.276 → 2.9.0-beta.279

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 (155) hide show
  1. package/.all-contributorsrc +9 -0
  2. package/CONTRIBUTORS.md +1 -0
  3. package/dist/components/accordion.css +1 -1
  4. package/dist/components/accordion.js +1 -1
  5. package/dist/components/accordion.min.css +1 -1
  6. package/dist/components/accordion.min.js +1 -1
  7. package/dist/components/ad.css +1 -1
  8. package/dist/components/ad.min.css +1 -1
  9. package/dist/components/api.js +1 -1
  10. package/dist/components/api.min.js +1 -1
  11. package/dist/components/breadcrumb.css +1 -1
  12. package/dist/components/breadcrumb.min.css +1 -1
  13. package/dist/components/button.css +1 -1
  14. package/dist/components/button.min.css +1 -1
  15. package/dist/components/calendar.css +1 -1
  16. package/dist/components/calendar.js +78 -63
  17. package/dist/components/calendar.min.css +1 -1
  18. package/dist/components/calendar.min.js +2 -2
  19. package/dist/components/card.css +1 -1
  20. package/dist/components/card.min.css +1 -1
  21. package/dist/components/checkbox.css +1 -1
  22. package/dist/components/checkbox.js +1 -1
  23. package/dist/components/checkbox.min.css +1 -1
  24. package/dist/components/checkbox.min.js +1 -1
  25. package/dist/components/comment.css +1 -1
  26. package/dist/components/comment.min.css +1 -1
  27. package/dist/components/container.css +1 -1
  28. package/dist/components/container.min.css +1 -1
  29. package/dist/components/dimmer.css +1 -1
  30. package/dist/components/dimmer.js +1 -1
  31. package/dist/components/dimmer.min.css +1 -1
  32. package/dist/components/dimmer.min.js +1 -1
  33. package/dist/components/divider.css +1 -1
  34. package/dist/components/divider.min.css +1 -1
  35. package/dist/components/dropdown.css +1 -1
  36. package/dist/components/dropdown.js +32 -13
  37. package/dist/components/dropdown.min.css +1 -1
  38. package/dist/components/dropdown.min.js +2 -2
  39. package/dist/components/embed.css +1 -1
  40. package/dist/components/embed.js +1 -1
  41. package/dist/components/embed.min.css +1 -1
  42. package/dist/components/embed.min.js +1 -1
  43. package/dist/components/feed.css +1 -1
  44. package/dist/components/feed.min.css +1 -1
  45. package/dist/components/flag.css +1 -1
  46. package/dist/components/flag.min.css +1 -1
  47. package/dist/components/form.css +1 -1
  48. package/dist/components/form.js +1 -1
  49. package/dist/components/form.min.css +1 -1
  50. package/dist/components/form.min.js +1 -1
  51. package/dist/components/grid.css +1 -1
  52. package/dist/components/grid.min.css +1 -1
  53. package/dist/components/header.css +1 -1
  54. package/dist/components/header.min.css +1 -1
  55. package/dist/components/icon.css +1 -1
  56. package/dist/components/icon.min.css +1 -1
  57. package/dist/components/image.css +1 -1
  58. package/dist/components/image.min.css +1 -1
  59. package/dist/components/input.css +1 -1
  60. package/dist/components/input.min.css +1 -1
  61. package/dist/components/item.css +1 -1
  62. package/dist/components/item.min.css +1 -1
  63. package/dist/components/label.css +1 -1
  64. package/dist/components/label.min.css +1 -1
  65. package/dist/components/list.css +1 -1
  66. package/dist/components/list.min.css +1 -1
  67. package/dist/components/loader.css +1 -1
  68. package/dist/components/loader.min.css +1 -1
  69. package/dist/components/message.css +1 -1
  70. package/dist/components/message.min.css +1 -1
  71. package/dist/components/modal.css +1 -1
  72. package/dist/components/modal.js +1 -1
  73. package/dist/components/modal.min.css +1 -1
  74. package/dist/components/modal.min.js +1 -1
  75. package/dist/components/nag.css +1 -1
  76. package/dist/components/nag.js +1 -1
  77. package/dist/components/nag.min.css +1 -1
  78. package/dist/components/nag.min.js +1 -1
  79. package/dist/components/placeholder.css +1 -1
  80. package/dist/components/placeholder.min.css +1 -1
  81. package/dist/components/popup.css +1 -1
  82. package/dist/components/popup.js +1 -1
  83. package/dist/components/popup.min.css +1 -1
  84. package/dist/components/popup.min.js +1 -1
  85. package/dist/components/progress.css +1 -1
  86. package/dist/components/progress.js +1 -1
  87. package/dist/components/progress.min.css +1 -1
  88. package/dist/components/progress.min.js +1 -1
  89. package/dist/components/rail.css +1 -1
  90. package/dist/components/rail.min.css +1 -1
  91. package/dist/components/rating.css +1 -1
  92. package/dist/components/rating.js +1 -1
  93. package/dist/components/rating.min.css +1 -1
  94. package/dist/components/rating.min.js +1 -1
  95. package/dist/components/reset.css +1 -1
  96. package/dist/components/reset.min.css +1 -1
  97. package/dist/components/reveal.css +1 -1
  98. package/dist/components/reveal.min.css +1 -1
  99. package/dist/components/search.css +1 -1
  100. package/dist/components/search.js +1 -1
  101. package/dist/components/search.min.css +1 -1
  102. package/dist/components/search.min.js +1 -1
  103. package/dist/components/segment.css +1 -1
  104. package/dist/components/segment.min.css +1 -1
  105. package/dist/components/shape.css +1 -1
  106. package/dist/components/shape.js +1 -1
  107. package/dist/components/shape.min.css +1 -1
  108. package/dist/components/shape.min.js +1 -1
  109. package/dist/components/sidebar.css +1 -1
  110. package/dist/components/sidebar.js +1 -1
  111. package/dist/components/sidebar.min.css +1 -1
  112. package/dist/components/sidebar.min.js +1 -1
  113. package/dist/components/site.css +1 -1
  114. package/dist/components/site.js +1 -1
  115. package/dist/components/site.min.css +1 -1
  116. package/dist/components/site.min.js +1 -1
  117. package/dist/components/slider.js +68 -51
  118. package/dist/components/slider.min.js +2 -2
  119. package/dist/components/state.js +1 -1
  120. package/dist/components/state.min.js +1 -1
  121. package/dist/components/statistic.css +1 -1
  122. package/dist/components/statistic.min.css +1 -1
  123. package/dist/components/step.css +1 -1
  124. package/dist/components/step.min.css +1 -1
  125. package/dist/components/sticky.css +1 -1
  126. package/dist/components/sticky.js +1 -1
  127. package/dist/components/sticky.min.css +1 -1
  128. package/dist/components/sticky.min.js +1 -1
  129. package/dist/components/tab.css +1 -1
  130. package/dist/components/tab.js +1 -1
  131. package/dist/components/tab.min.css +1 -1
  132. package/dist/components/tab.min.js +1 -1
  133. package/dist/components/table.css +1 -1
  134. package/dist/components/table.min.css +1 -1
  135. package/dist/components/text.css +1 -1
  136. package/dist/components/text.min.css +1 -1
  137. package/dist/components/toast.css +1 -1
  138. package/dist/components/toast.js +1 -1
  139. package/dist/components/toast.min.css +1 -1
  140. package/dist/components/toast.min.js +1 -1
  141. package/dist/components/transition.css +1 -1
  142. package/dist/components/transition.js +1 -1
  143. package/dist/components/transition.min.css +1 -1
  144. package/dist/components/transition.min.js +1 -1
  145. package/dist/components/visibility.js +1 -1
  146. package/dist/components/visibility.min.js +1 -1
  147. package/dist/semantic.css +49 -49
  148. package/dist/semantic.js +200 -149
  149. package/dist/semantic.min.css +1 -1
  150. package/dist/semantic.min.js +2 -2
  151. package/package.json +2 -2
  152. package/src/definitions/modules/calendar.js +77 -62
  153. package/src/definitions/modules/dropdown.js +31 -12
  154. package/src/definitions/modules/slider.js +67 -50
  155. package/tasks/config/project/install.js +4 -8
package/dist/semantic.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * # Fomantic UI - 2.9.0-beta.276+0e4d021
2
+ * # Fomantic UI - 2.9.0-beta.279+1f0733d
3
3
  * https://github.com/fomantic/Fomantic-UI
4
4
  * http://fomantic-ui.com/
5
5
  *
@@ -9,7 +9,7 @@
9
9
  *
10
10
  */
11
11
  /*!
12
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Site
12
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - 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.276+0e4d021 - Form Validation
506
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Form Validation
507
507
  * http://github.com/fomantic/Fomantic-UI/
508
508
  *
509
509
  *
@@ -2584,7 +2584,7 @@ $.fn.form.settings = {
2584
2584
  })( jQuery, window, document );
2585
2585
 
2586
2586
  /*!
2587
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Accordion
2587
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Accordion
2588
2588
  * http://github.com/fomantic/Fomantic-UI/
2589
2589
  *
2590
2590
  *
@@ -3206,7 +3206,7 @@ $.extend( $.easing, {
3206
3206
 
3207
3207
 
3208
3208
  /*!
3209
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Calendar
3209
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Calendar
3210
3210
  * http://github.com/fomantic/Fomantic-UI/
3211
3211
  *
3212
3212
  *
@@ -3529,7 +3529,7 @@ $.fn.calendar = function(parameters) {
3529
3529
  var headerDate = isYear || isMonth ? new Date(year, 0, 1) :
3530
3530
  isDay ? new Date(year, month, 1) : new Date(year, month, day, hour, minute);
3531
3531
  var headerText = $('<span/>').addClass(className.link).appendTo(cell);
3532
- headerText.text(formatter.header(headerDate, mode, settings));
3532
+ headerText.text(module.helper.dateFormat(formatter[mode+'Header'], headerDate));
3533
3533
  var newMode = isMonth ? (settings.disableYear ? 'day' : 'year') :
3534
3534
  isDay ? (settings.disableMonth ? 'year' : 'month') : 'day';
3535
3535
  headerText.data(metadata.mode, newMode);
@@ -3577,7 +3577,7 @@ $.fn.calendar = function(parameters) {
3577
3577
  isHour ? new Date(year, month, day, i) : new Date(year, month, day, hour, i * settings.minTimeGap);
3578
3578
  var cellText = isYear ? i :
3579
3579
  isMonth ? settings.text.monthsShort[i] : isDay ? cellDate.getDate() :
3580
- formatter.time(cellDate, settings, true);
3580
+ module.helper.dateFormat(formatter.cellTime,cellDate);
3581
3581
  cell = $('<td/>').addClass(className.cell).appendTo(row);
3582
3582
  cell.text(cellText);
3583
3583
  cell.data(metadata.date, cellDate);
@@ -3858,7 +3858,7 @@ $.fn.calendar = function(parameters) {
3858
3858
  $container.removeClass(className.active);
3859
3859
  if (settings.formatInput) {
3860
3860
  var date = module.get.date();
3861
- var text = formatter.datetime(date, settings);
3861
+ var text = module.helper.dateFormat(formatter[settings.type], date);
3862
3862
  $input.val(text);
3863
3863
  }
3864
3864
  if(selectionComplete){
@@ -3929,6 +3929,9 @@ $.fn.calendar = function(parameters) {
3929
3929
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
3930
3930
  }();
3931
3931
  },
3932
+ formattedDate: function(format, date) {
3933
+ return module.helper.dateFormat(format || formatter[settings.type], date || module.get.date());
3934
+ },
3932
3935
  date: function () {
3933
3936
  return module.helper.sanitiseDate($module.data(metadata.date)) || null;
3934
3937
  },
@@ -4022,7 +4025,7 @@ $.fn.calendar = function(parameters) {
4022
4025
  date = module.helper.dateInRange(date);
4023
4026
 
4024
4027
  var mode = module.get.mode();
4025
- var text = formatter.datetime(date, settings);
4028
+ var text = module.helper.dateFormat(formatter[settings.type],date);
4026
4029
 
4027
4030
  if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
4028
4031
  return false;
@@ -4193,6 +4196,60 @@ $.fn.calendar = function(parameters) {
4193
4196
  },
4194
4197
 
4195
4198
  helper: {
4199
+ dateFormat: function(format,date) {
4200
+ if (!(date instanceof Date)) {
4201
+ return '';
4202
+ }
4203
+ if(typeof format === 'function') {
4204
+ return format.call(module, date, settings);
4205
+ }
4206
+
4207
+ var D = date.getDate(),
4208
+ M = date.getMonth(),
4209
+ Y = date.getFullYear(),
4210
+ d = date.getDay(),
4211
+ H = date.getHours(),
4212
+ m = date.getMinutes(),
4213
+ s = date.getSeconds(),
4214
+ w = module.get.weekOfYear(Y,M,D+1-settings.firstDayOfWeek),
4215
+ h = H % 12 || 12,
4216
+ a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase(),
4217
+ tokens = {
4218
+ D: D,
4219
+ DD: ('0'+D).slice(-2),
4220
+ M: M + 1,
4221
+ MM: ('0'+(M+1)).slice(-2),
4222
+ MMM: settings.text.monthsShort[M],
4223
+ MMMM: settings.text.months[M],
4224
+ Y: Y,
4225
+ YY: String(Y).slice(2),
4226
+ YYYY: Y,
4227
+ d: d,
4228
+ dd: settings.text.dayNamesShort[d].slice(0,2),
4229
+ ddd: settings.text.dayNamesShort[d],
4230
+ dddd: settings.text.dayNames[d],
4231
+ h: h,
4232
+ hh: ('0'+h).slice(-2),
4233
+ H: H,
4234
+ HH: ('0'+H).slice(-2),
4235
+ m: m,
4236
+ mm: ('0'+m).slice(-2),
4237
+ s: s,
4238
+ ss: ('0'+s).slice(-2),
4239
+ a: a,
4240
+ A: a.toUpperCase(),
4241
+ S: ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D % 100 - D % 10 !== 10) * D % 10],
4242
+ w: w,
4243
+ ww: ('0'+w).slice(-2)
4244
+ }
4245
+ ;
4246
+ return format.replace(settings.regExp.token, function (match) {
4247
+ if (match in tokens) {
4248
+ return tokens[match];
4249
+ }
4250
+ return match.slice(1, match.length - 1);
4251
+ });
4252
+ },
4196
4253
  isDisabled: function(date, mode) {
4197
4254
  return (mode === 'day' || mode === 'month' || mode === 'year' || mode === 'hour') && (((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
4198
4255
  if(typeof d === 'string') {
@@ -4643,7 +4700,7 @@ $.fn.calendar.settings = {
4643
4700
  constantHeight : true, // add rows to shorter months to keep day calendar height consistent (6 rows)
4644
4701
  today : false, // show a 'today/now' button at the bottom of the calendar
4645
4702
  closable : true, // close the popup after selecting a date/time
4646
- monthFirst : true, // month before day when parsing/converting date from/to text
4703
+ monthFirst : true, // month before day when parsing date from text
4647
4704
  touchReadonly : true, // set input to readonly on touch devices
4648
4705
  inline : false, // create the calendar inline instead of inside a popup
4649
4706
  on : null, // when to show the popup (defaults to 'focus' for input, 'click' for others)
@@ -4651,7 +4708,6 @@ $.fn.calendar.settings = {
4651
4708
  startMode : false, // display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day')
4652
4709
  minDate : null, // minimum date/time that can be selected, dates/times before are disabled
4653
4710
  maxDate : null, // maximum date/time that can be selected, dates/times after are disabled
4654
- ampm : true, // show am/pm in time mode
4655
4711
  disableYear : false, // disable year selection mode
4656
4712
  disableMonth : false, // disable month selection mode
4657
4713
  disableMinute : false, // disable minute selection mode
@@ -4661,7 +4717,7 @@ $.fn.calendar.settings = {
4661
4717
  multiMonth : 1, // show multiple months when in 'day' mode
4662
4718
  monthOffset : 0, // position current month by offset when multimonth > 1
4663
4719
  minTimeGap : 5,
4664
- showWeekNumbers : null, // show Number of Week at the very first column of a dayView
4720
+ showWeekNumbers : false, // show Number of Week at the very first column of a dayView
4665
4721
  disabledHours : [], // specific hour(s) which won't be selectable and contain additional information.
4666
4722
  disabledDates : [], // specific day(s) which won't be selectable and contain additional information.
4667
4723
  disabledDaysOfWeek : [], // day(s) which won't be selectable(s) (0 = Sunday)
@@ -4681,6 +4737,8 @@ $.fn.calendar.settings = {
4681
4737
 
4682
4738
  text: {
4683
4739
  days: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
4740
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
4741
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
4684
4742
  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
4685
4743
  monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
4686
4744
  today: 'Today',
@@ -4691,67 +4749,23 @@ $.fn.calendar.settings = {
4691
4749
  },
4692
4750
 
4693
4751
  formatter: {
4694
- header: function (date, mode, settings) {
4695
- return mode === 'year' ? settings.formatter.yearHeader(date, settings) :
4696
- mode === 'month' ? settings.formatter.monthHeader(date, settings) :
4697
- mode === 'day' ? settings.formatter.dayHeader(date, settings) :
4698
- mode === 'hour' ? settings.formatter.hourHeader(date, settings) :
4699
- settings.formatter.minuteHeader(date, settings);
4700
- },
4701
4752
  yearHeader: function (date, settings) {
4702
4753
  var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
4703
4754
  return (decadeYear - 9) + ' - ' + (decadeYear + 2);
4704
4755
  },
4705
- monthHeader: function (date, settings) {
4706
- return date.getFullYear();
4707
- },
4708
- dayHeader: function (date, settings) {
4709
- var month = settings.text.months[date.getMonth()];
4710
- var year = date.getFullYear();
4711
- return month + ' ' + year;
4712
- },
4713
- hourHeader: function (date, settings) {
4714
- return settings.formatter.date(date, settings);
4715
- },
4716
- minuteHeader: function (date, settings) {
4717
- return settings.formatter.date(date, settings);
4718
- },
4756
+ monthHeader: 'YYYY',
4757
+ dayHeader: 'MMMM YYYY',
4758
+ hourHeader: 'MMMM D, YYYY',
4759
+ minuteHeader: 'MMMM D, YYYY',
4719
4760
  dayColumnHeader: function (day, settings) {
4720
4761
  return settings.text.days[day];
4721
4762
  },
4722
- datetime: function (date, settings) {
4723
- if (!date) {
4724
- return '';
4725
- }
4726
- var day = settings.type === 'time' ? '' : settings.formatter.date(date, settings);
4727
- var time = settings.type.indexOf('time') < 0 ? '' : settings.formatter.time(date, settings, false);
4728
- var separator = settings.type === 'datetime' ? ' ' : '';
4729
- return day + separator + time;
4730
- },
4731
- date: function (date, settings) {
4732
- if (!date) {
4733
- return '';
4734
- }
4735
- var day = date.getDate();
4736
- var month = settings.text.months[date.getMonth()];
4737
- var year = date.getFullYear();
4738
- return settings.type === 'year' ? year :
4739
- settings.type === 'month' ? month + ' ' + year :
4740
- (settings.monthFirst ? month + ' ' + day : day + ' ' + month) + ', ' + year;
4741
- },
4742
- time: function (date, settings, forCalendar) {
4743
- if (!date) {
4744
- return '';
4745
- }
4746
- var hour = date.getHours();
4747
- var minute = date.getMinutes();
4748
- var ampm = '';
4749
- if (settings.ampm) {
4750
- ampm = ' ' + (hour < 12 ? settings.text.am : settings.text.pm);
4751
- hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
4752
- }
4753
- return hour + ':' + (minute < 10 ? '0' : '') + minute + ampm;
4754
- },
4763
+ datetime: 'MMMM D, YYYY h:mm A',
4764
+ date: 'MMMM D, YYYY',
4765
+ time: 'h:mm A',
4766
+ cellTime: 'h:mm A',
4767
+ month: 'MMMM YYYY',
4768
+ year: 'YYYY',
4755
4769
  today: function (settings) {
4756
4770
  return settings.type === 'date' ? settings.text.today : settings.text.now;
4757
4771
  },
@@ -5020,7 +5034,8 @@ $.fn.calendar.settings = {
5020
5034
 
5021
5035
  regExp: {
5022
5036
  dateWords: /[^A-Za-z\u00C0-\u024F]+/g,
5023
- dateNumbers: /[^\d:]+/g
5037
+ dateNumbers: /[^\d:]+/g,
5038
+ token: /d{1,4}|D{1,2}|M{1,4}|YY(?:YY)?|([Hhmsw])\1?|[SAaY]|"[^"]*"|'[^']*'/g
5024
5039
  },
5025
5040
 
5026
5041
  error: {
@@ -5080,7 +5095,7 @@ $.fn.calendar.settings = {
5080
5095
  })(jQuery, window, document);
5081
5096
 
5082
5097
  /*!
5083
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Checkbox
5098
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Checkbox
5084
5099
  * http://github.com/fomantic/Fomantic-UI/
5085
5100
  *
5086
5101
  *
@@ -5963,7 +5978,7 @@ $.fn.checkbox.settings = {
5963
5978
  })( jQuery, window, document );
5964
5979
 
5965
5980
  /*!
5966
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Dimmer
5981
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Dimmer
5967
5982
  * http://github.com/fomantic/Fomantic-UI/
5968
5983
  *
5969
5984
  *
@@ -6726,7 +6741,7 @@ $.fn.dimmer.settings = {
6726
6741
  })( jQuery, window, document );
6727
6742
 
6728
6743
  /*!
6729
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Dropdown
6744
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Dropdown
6730
6745
  * http://github.com/fomantic/Fomantic-UI/
6731
6746
  *
6732
6747
  *
@@ -7780,7 +7795,7 @@ $.fn.dropdown = function(parameters) {
7780
7795
  menuConfig[fields.values] = values;
7781
7796
  module.setup.menu(menuConfig);
7782
7797
  $.each(values, function(index, item) {
7783
- if(item.selected == true) {
7798
+ if(item.selected === true) {
7784
7799
  module.debug('Setting initial selection to', item[fields.value]);
7785
7800
  module.set.selected(item[fields.value]);
7786
7801
  if(!module.is.multiple()) {
@@ -8126,7 +8141,7 @@ $.fn.dropdown = function(parameters) {
8126
8141
  module.remove.userAddition();
8127
8142
  }
8128
8143
  module.remove.searchTerm();
8129
- if(!module.is.focusedOnSearch() && !(skipRefocus == true)) {
8144
+ if(!module.is.focusedOnSearch() && skipRefocus !== true) {
8130
8145
  module.focusSearch(true);
8131
8146
  }
8132
8147
  }
@@ -9378,7 +9393,7 @@ $.fn.dropdown = function(parameters) {
9378
9393
  }
9379
9394
  },
9380
9395
  direction: function($menu) {
9381
- if(settings.direction == 'auto') {
9396
+ if(settings.direction === 'auto') {
9382
9397
  // reset position, remove upward if it's base menu
9383
9398
  if (!$menu) {
9384
9399
  module.remove.upward();
@@ -9397,7 +9412,7 @@ $.fn.dropdown = function(parameters) {
9397
9412
  module.set.leftward($menu);
9398
9413
  }
9399
9414
  }
9400
- else if(settings.direction == 'upward') {
9415
+ else if(settings.direction === 'upward') {
9401
9416
  module.set.upward($menu);
9402
9417
  }
9403
9418
  },
@@ -9410,6 +9425,11 @@ $.fn.dropdown = function(parameters) {
9410
9425
  $element.addClass(className.leftward);
9411
9426
  },
9412
9427
  value: function(value, text, $selected, preventChangeTrigger) {
9428
+ if(typeof text === 'boolean') {
9429
+ preventChangeTrigger = text;
9430
+ $selected = undefined;
9431
+ text = undefined;
9432
+ }
9413
9433
  if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
9414
9434
  $input.removeClass(className.noselection);
9415
9435
  } else {
@@ -9473,12 +9493,21 @@ $.fn.dropdown = function(parameters) {
9473
9493
  visible: function() {
9474
9494
  $module.addClass(className.visible);
9475
9495
  },
9476
- exactly: function(value, $selectedItem) {
9496
+ exactly: function(value, $selectedItem, preventChangeTrigger) {
9497
+ if(typeof $selectedItem === 'boolean') {
9498
+ preventChangeTrigger = $selectedItem;
9499
+ $selectedItem = undefined;
9500
+ }
9477
9501
  module.debug('Setting selected to exact values');
9478
9502
  module.clear();
9479
- module.set.selected(value, $selectedItem);
9503
+ module.set.selected(value, $selectedItem, preventChangeTrigger);
9480
9504
  },
9481
9505
  selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
9506
+ if(typeof $selectedItem === 'boolean') {
9507
+ keepSearchTerm = preventChangeTrigger;
9508
+ preventChangeTrigger = $selectedItem;
9509
+ $selectedItem = undefined;
9510
+ }
9482
9511
  var
9483
9512
  isMultiple = module.is.multiple()
9484
9513
  ;
@@ -9512,7 +9541,7 @@ $.fn.dropdown = function(parameters) {
9512
9541
  isActive = $selected.hasClass(className.active),
9513
9542
  isActionable = $selected.hasClass(className.actionable),
9514
9543
  isUserValue = $selected.hasClass(className.addition),
9515
- shouldAnimate = (isMultiple && $selectedItem.length == 1)
9544
+ shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
9516
9545
  ;
9517
9546
  if(isActionable){
9518
9547
  if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
@@ -9526,14 +9555,14 @@ $.fn.dropdown = function(parameters) {
9526
9555
  module.save.remoteData(selectedText, selectedValue);
9527
9556
  }
9528
9557
  if(settings.useLabels) {
9529
- module.add.value(selectedValue, selectedText, $selected);
9558
+ module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
9530
9559
  module.add.label(selectedValue, selectedText, shouldAnimate);
9531
9560
  module.set.activeItem($selected);
9532
9561
  module.filterActive();
9533
9562
  module.select.nextAvailable($selectedItem);
9534
9563
  }
9535
9564
  else {
9536
- module.add.value(selectedValue, selectedText, $selected);
9565
+ module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
9537
9566
  module.set.text(module.add.variables(message.count));
9538
9567
  module.set.activeItem($selected);
9539
9568
  }
@@ -9722,7 +9751,12 @@ $.fn.dropdown = function(parameters) {
9722
9751
  }
9723
9752
  return message;
9724
9753
  },
9725
- value: function(addedValue, addedText, $selectedItem) {
9754
+ value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
9755
+ if(typeof addedText === 'boolean') {
9756
+ preventChangeTrigger = addedText;
9757
+ $selectedItem = undefined;
9758
+ addedText = undefined;
9759
+ }
9726
9760
  var
9727
9761
  currentValue = module.get.values(true),
9728
9762
  newValue
@@ -9737,7 +9771,7 @@ $.fn.dropdown = function(parameters) {
9737
9771
  }
9738
9772
  // extend current array
9739
9773
  if(Array.isArray(currentValue)) {
9740
- newValue = $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
9774
+ newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
9741
9775
  newValue = module.get.uniqueArray(newValue);
9742
9776
  }
9743
9777
  else {
@@ -9761,7 +9795,7 @@ $.fn.dropdown = function(parameters) {
9761
9795
  else {
9762
9796
  settings.onAdd.call(element, addedValue, addedText, $selectedItem);
9763
9797
  }
9764
- module.set.value(newValue, addedText, $selectedItem);
9798
+ module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
9765
9799
  module.check.maxSelections();
9766
9800
  },
9767
9801
  },
@@ -11084,7 +11118,7 @@ $.fn.dropdown.settings.templates = {
11084
11118
  })( jQuery, window, document );
11085
11119
 
11086
11120
  /*!
11087
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Embed
11121
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Embed
11088
11122
  * http://github.com/fomantic/Fomantic-UI/
11089
11123
  *
11090
11124
  *
@@ -11794,7 +11828,7 @@ $.fn.embed.settings = {
11794
11828
  })( jQuery, window, document );
11795
11829
 
11796
11830
  /*!
11797
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Modal
11831
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Modal
11798
11832
  * http://github.com/fomantic/Fomantic-UI/
11799
11833
  *
11800
11834
  *
@@ -13325,7 +13359,7 @@ $.fn.modal.settings.templates = {
13325
13359
  })( jQuery, window, document );
13326
13360
 
13327
13361
  /*!
13328
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Nag
13362
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Nag
13329
13363
  * http://github.com/fomantic/Fomantic-UI/
13330
13364
  *
13331
13365
  *
@@ -13884,7 +13918,7 @@ $.extend( $.easing, {
13884
13918
  })( jQuery, window, document );
13885
13919
 
13886
13920
  /*!
13887
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Popup
13921
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Popup
13888
13922
  * http://github.com/fomantic/Fomantic-UI/
13889
13923
  *
13890
13924
  *
@@ -15426,7 +15460,7 @@ $.fn.popup.settings = {
15426
15460
  })( jQuery, window, document );
15427
15461
 
15428
15462
  /*!
15429
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Progress
15463
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Progress
15430
15464
  * http://github.com/fomantic/Fomantic-UI/
15431
15465
  *
15432
15466
  *
@@ -16463,7 +16497,7 @@ $.fn.progress.settings = {
16463
16497
  })( jQuery, window, document );
16464
16498
 
16465
16499
  /*!
16466
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Slider
16500
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Slider
16467
16501
  * http://github.com/fomantic/Fomantic-UI/
16468
16502
  *
16469
16503
  *
@@ -16534,6 +16568,7 @@ $.fn.slider = function(parameters) {
16534
16568
 
16535
16569
  $module = $(this),
16536
16570
  $currThumb,
16571
+ touchIdentifier,
16537
16572
  $thumb,
16538
16573
  $secondThumb,
16539
16574
  $track,
@@ -16550,7 +16585,6 @@ $.fn.slider = function(parameters) {
16550
16585
  secondPos,
16551
16586
  offset,
16552
16587
  precision,
16553
- isTouch,
16554
16588
  gapRatio = 1,
16555
16589
  previousValue,
16556
16590
 
@@ -16568,7 +16602,6 @@ $.fn.slider = function(parameters) {
16568
16602
  currentRange += 1;
16569
16603
  documentEventID = currentRange;
16570
16604
 
16571
- isTouch = module.setup.testOutTouch();
16572
16605
  module.setup.layout();
16573
16606
  module.setup.labels();
16574
16607
 
@@ -16639,14 +16672,6 @@ $.fn.slider = function(parameters) {
16639
16672
  }
16640
16673
  }
16641
16674
  },
16642
- testOutTouch: function() {
16643
- try {
16644
- document.createEvent('TouchEvent');
16645
- return true;
16646
- } catch (e) {
16647
- return false;
16648
- }
16649
- },
16650
16675
  customLabel: function() {
16651
16676
  var
16652
16677
  $children = $labels.find('.label'),
@@ -16700,9 +16725,6 @@ $.fn.slider = function(parameters) {
16700
16725
  module.bind.globalKeyboardEvents();
16701
16726
  module.bind.keyboardEvents();
16702
16727
  module.bind.mouseEvents();
16703
- if(module.is.touch()) {
16704
- module.bind.touchEvents();
16705
- }
16706
16728
  if (settings.autoAdjustLabels) {
16707
16729
  module.bind.windowEvents();
16708
16730
  }
@@ -16715,7 +16737,7 @@ $.fn.slider = function(parameters) {
16715
16737
  $(document).on('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
16716
16738
  },
16717
16739
  mouseEvents: function() {
16718
- module.verbose('Binding mouse events');
16740
+ module.verbose('Binding mouse and touch events');
16719
16741
  $module.find('.track, .thumb, .inner').on('mousedown' + eventNamespace, function(event) {
16720
16742
  event.stopImmediatePropagation();
16721
16743
  event.preventDefault();
@@ -16728,27 +16750,20 @@ $.fn.slider = function(parameters) {
16728
16750
  $module.on('mouseleave' + eventNamespace, function(event) {
16729
16751
  isHover = false;
16730
16752
  });
16731
- },
16732
- touchEvents: function() {
16733
- module.verbose('Binding touch events');
16734
- $module.find('.track, .thumb, .inner').on('touchstart' + eventNamespace, function(event) {
16735
- event.stopImmediatePropagation();
16736
- event.preventDefault();
16737
- module.event.down(event);
16738
- });
16739
- $module.on('touchstart' + eventNamespace, module.event.down);
16753
+ // All touch events are invoked on the element where the touch *started*. Thus, we can bind them all
16754
+ // on the thumb(s) and don't need to worry about interference with other components, i.e. no dynamic binding
16755
+ // and unbinding required.
16756
+ $module.find('.thumb')
16757
+ .on('touchstart' + eventNamespace, module.event.touchDown)
16758
+ .on('touchmove' + eventNamespace, module.event.move)
16759
+ .on('touchend' + eventNamespace, module.event.up)
16760
+ .on('touchcancel' + eventNamespace, module.event.touchCancel);
16740
16761
  },
16741
16762
  slidingEvents: function() {
16742
16763
  // these don't need the identifier because we only ever want one of them to be registered with document
16743
16764
  module.verbose('Binding page wide events while handle is being draged');
16744
- if(module.is.touch()) {
16745
- $(document).on('touchmove' + eventNamespace, module.event.move);
16746
- $(document).on('touchend' + eventNamespace, module.event.up);
16747
- }
16748
- else {
16749
- $(document).on('mousemove' + eventNamespace, module.event.move);
16750
- $(document).on('mouseup' + eventNamespace, module.event.up);
16751
- }
16765
+ $(document).on('mousemove' + eventNamespace, module.event.move);
16766
+ $(document).on('mouseup' + eventNamespace, module.event.up);
16752
16767
  },
16753
16768
  windowEvents: function() {
16754
16769
  $window.on('resize' + eventNamespace, module.event.resize);
@@ -16758,24 +16773,22 @@ $.fn.slider = function(parameters) {
16758
16773
  unbind: {
16759
16774
  events: function() {
16760
16775
  $module.find('.track, .thumb, .inner').off('mousedown' + eventNamespace);
16761
- $module.find('.track, .thumb, .inner').off('touchstart' + eventNamespace);
16762
16776
  $module.off('mousedown' + eventNamespace);
16763
16777
  $module.off('mouseenter' + eventNamespace);
16764
16778
  $module.off('mouseleave' + eventNamespace);
16765
- $module.off('touchstart' + eventNamespace);
16779
+ $module.find('.thumb')
16780
+ .off('touchstart' + eventNamespace)
16781
+ .off('touchmove' + eventNamespace)
16782
+ .off('touchend' + eventNamespace)
16783
+ .off('touchcancel' + eventNamespace);
16766
16784
  $module.off('keydown' + eventNamespace);
16767
16785
  $module.off('focusout' + eventNamespace);
16768
16786
  $(document).off('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
16769
16787
  $window.off('resize' + eventNamespace);
16770
16788
  },
16771
16789
  slidingEvents: function() {
16772
- if(module.is.touch()) {
16773
- $(document).off('touchmove' + eventNamespace);
16774
- $(document).off('touchend' + eventNamespace);
16775
- } else {
16776
- $(document).off('mousemove' + eventNamespace);
16777
- $(document).off('mouseup' + eventNamespace);
16778
- }
16790
+ $(document).off('mousemove' + eventNamespace);
16791
+ $(document).off('mouseup' + eventNamespace);
16779
16792
  },
16780
16793
  },
16781
16794
 
@@ -16805,10 +16818,31 @@ $.fn.slider = function(parameters) {
16805
16818
  module.bind.slidingEvents();
16806
16819
  }
16807
16820
  },
16821
+ touchDown: function(event) {
16822
+ event.preventDefault(); // disable mouse emulation and touch-scrolling
16823
+ event.stopImmediatePropagation();
16824
+ if(touchIdentifier !== undefined) {
16825
+ // ignore multiple touches on the same slider --
16826
+ // we cannot handle changing both thumbs at once due to shared state
16827
+ return;
16828
+ }
16829
+ $currThumb = $(event.target);
16830
+ var touchEvent = event.touches ? event : event.originalEvent;
16831
+ touchIdentifier = touchEvent.targetTouches[0].identifier;
16832
+ if(previousValue === undefined) {
16833
+ previousValue = module.get.currentThumbValue();
16834
+ }
16835
+ },
16808
16836
  move: function(event) {
16809
- event.preventDefault();
16837
+ if(event.type == 'mousemove') {
16838
+ event.preventDefault(); // prevent text selection etc.
16839
+ }
16840
+ if(module.is.disabled()) {
16841
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
16842
+ return;
16843
+ }
16810
16844
  var value = module.determine.valueFromEvent(event);
16811
- if($currThumb === undefined) {
16845
+ if(event.type == 'mousemove' && $currThumb === undefined) {
16812
16846
  var
16813
16847
  eventPos = module.determine.eventPos(event),
16814
16848
  newPos = module.determine.pos(eventPos)
@@ -16845,13 +16879,26 @@ $.fn.slider = function(parameters) {
16845
16879
  },
16846
16880
  up: function(event) {
16847
16881
  event.preventDefault();
16882
+ if(module.is.disabled()) {
16883
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
16884
+ return;
16885
+ }
16848
16886
  var value = module.determine.valueFromEvent(event);
16849
16887
  module.set.value(value);
16850
16888
  module.unbind.slidingEvents();
16889
+ touchIdentifier = undefined;
16851
16890
  if (previousValue !== undefined) {
16852
16891
  previousValue = undefined;
16853
16892
  }
16854
16893
  },
16894
+ touchCancel: function(event) {
16895
+ event.preventDefault();
16896
+ touchIdentifier = undefined;
16897
+ if (previousValue !== undefined) {
16898
+ module.update.value(previousValue);
16899
+ previousValue = undefined;
16900
+ }
16901
+ },
16855
16902
  keydown: function(event, first) {
16856
16903
  if(settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
16857
16904
  $currThumb = undefined;
@@ -16964,9 +17011,6 @@ $.fn.slider = function(parameters) {
16964
17011
  },
16965
17012
  smooth: function() {
16966
17013
  return settings.smooth || $module.hasClass(settings.className.smooth);
16967
- },
16968
- touch: function() {
16969
- return isTouch;
16970
17014
  }
16971
17015
  },
16972
17016
 
@@ -17230,12 +17274,19 @@ $.fn.slider = function(parameters) {
17230
17274
  return value;
17231
17275
  },
17232
17276
  eventPos: function(event) {
17233
- if(module.is.touch()) {
17277
+ if(event.type === "touchmove" || event.type === "touchend") {
17278
+ var
17279
+ touchEvent = event.touches ? event : event.originalEvent,
17280
+ touch = touchEvent.changedTouches[0]; // fall back to first touch if correct touch not found
17281
+ for(var i=0; i < touchEvent.touches.length; i++) {
17282
+ if(touchEvent.touches[i].identifier === touchIdentifier) {
17283
+ touch = touchEvent.touches[i];
17284
+ break;
17285
+ }
17286
+ }
17234
17287
  var
17235
- touchEvent = event.changedTouches ? event : event.originalEvent,
17236
- touches = touchEvent.changedTouches[0] ? touchEvent.changedTouches : touchEvent.touches,
17237
- touchY = touches[0].pageY,
17238
- touchX = touches[0].pageX
17288
+ touchY = touch.pageY,
17289
+ touchX = touch.pageX
17239
17290
  ;
17240
17291
  return module.is.vertical() ? touchY : touchX;
17241
17292
  }
@@ -17802,7 +17853,7 @@ $.fn.slider.settings = {
17802
17853
  })( jQuery, window, document );
17803
17854
 
17804
17855
  /*!
17805
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Rating
17856
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Rating
17806
17857
  * http://github.com/fomantic/Fomantic-UI/
17807
17858
  *
17808
17859
  *
@@ -18357,7 +18408,7 @@ $.fn.rating.settings = {
18357
18408
  })( jQuery, window, document );
18358
18409
 
18359
18410
  /*!
18360
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Search
18411
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Search
18361
18412
  * http://github.com/fomantic/Fomantic-UI/
18362
18413
  *
18363
18414
  *
@@ -19925,7 +19976,7 @@ $.fn.search.settings = {
19925
19976
  })( jQuery, window, document );
19926
19977
 
19927
19978
  /*!
19928
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Shape
19979
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Shape
19929
19980
  * http://github.com/fomantic/Fomantic-UI/
19930
19981
  *
19931
19982
  *
@@ -20774,7 +20825,7 @@ $.fn.shape.settings = {
20774
20825
  })( jQuery, window, document );
20775
20826
 
20776
20827
  /*!
20777
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Sidebar
20828
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Sidebar
20778
20829
  * http://github.com/fomantic/Fomantic-UI/
20779
20830
  *
20780
20831
  *
@@ -21813,7 +21864,7 @@ $.fn.sidebar.settings = {
21813
21864
  })( jQuery, window, document );
21814
21865
 
21815
21866
  /*!
21816
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Sticky
21867
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Sticky
21817
21868
  * http://github.com/fomantic/Fomantic-UI/
21818
21869
  *
21819
21870
  *
@@ -22771,7 +22822,7 @@ $.fn.sticky.settings = {
22771
22822
  })( jQuery, window, document );
22772
22823
 
22773
22824
  /*!
22774
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Tab
22825
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Tab
22775
22826
  * http://github.com/fomantic/Fomantic-UI/
22776
22827
  *
22777
22828
  *
@@ -23791,7 +23842,7 @@ $.fn.tab.settings = {
23791
23842
  })( jQuery, window, document );
23792
23843
 
23793
23844
  /*!
23794
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Toast
23845
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Toast
23795
23846
  * http://github.com/fomantic/Fomantic-UI/
23796
23847
  *
23797
23848
  *
@@ -24712,7 +24763,7 @@ $.extend( $.easing, {
24712
24763
  })( jQuery, window, document );
24713
24764
 
24714
24765
  /*!
24715
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Transition
24766
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Transition
24716
24767
  * http://github.com/fomantic/Fomantic-UI/
24717
24768
  *
24718
24769
  *
@@ -25827,7 +25878,7 @@ $.fn.transition.settings = {
25827
25878
  })( jQuery, window, document );
25828
25879
 
25829
25880
  /*!
25830
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - API
25881
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - API
25831
25882
  * http://github.com/fomantic/Fomantic-UI/
25832
25883
  *
25833
25884
  *
@@ -27064,7 +27115,7 @@ $.api.settings = {
27064
27115
  })( jQuery, window, document );
27065
27116
 
27066
27117
  /*!
27067
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - State
27118
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - State
27068
27119
  * http://github.com/fomantic/Fomantic-UI/
27069
27120
  *
27070
27121
  *
@@ -27776,7 +27827,7 @@ $.fn.state.settings = {
27776
27827
  })( jQuery, window, document );
27777
27828
 
27778
27829
  /*!
27779
- * # Fomantic-UI 2.9.0-beta.276+0e4d021 - Visibility
27830
+ * # Fomantic-UI 2.9.0-beta.279+1f0733d - Visibility
27780
27831
  * http://github.com/fomantic/Fomantic-UI/
27781
27832
  *
27782
27833
  *