fomantic-ui-sass 2.8.1 → 2.8.5

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/app/assets/fonts/semantic-ui/brand-icons.eot +0 -0
  4. data/app/assets/fonts/semantic-ui/brand-icons.svg +175 -82
  5. data/app/assets/fonts/semantic-ui/brand-icons.ttf +0 -0
  6. data/app/assets/fonts/semantic-ui/brand-icons.woff +0 -0
  7. data/app/assets/fonts/semantic-ui/brand-icons.woff2 +0 -0
  8. data/app/assets/fonts/semantic-ui/icons.eot +0 -0
  9. data/app/assets/fonts/semantic-ui/icons.svg +177 -126
  10. data/app/assets/fonts/semantic-ui/icons.ttf +0 -0
  11. data/app/assets/fonts/semantic-ui/icons.woff +0 -0
  12. data/app/assets/fonts/semantic-ui/icons.woff2 +0 -0
  13. data/app/assets/fonts/semantic-ui/outline-icons.eot +0 -0
  14. data/app/assets/fonts/semantic-ui/outline-icons.svg +11 -11
  15. data/app/assets/fonts/semantic-ui/outline-icons.ttf +0 -0
  16. data/app/assets/fonts/semantic-ui/outline-icons.woff +0 -0
  17. data/app/assets/fonts/semantic-ui/outline-icons.woff2 +0 -0
  18. data/app/assets/javascripts/semantic-ui/calendar.js +103 -45
  19. data/app/assets/javascripts/semantic-ui/checkbox.js +1 -1
  20. data/app/assets/javascripts/semantic-ui/dropdown.js +45 -45
  21. data/app/assets/javascripts/semantic-ui/form.js +63 -27
  22. data/app/assets/javascripts/semantic-ui/modal.js +9 -1
  23. data/app/assets/javascripts/semantic-ui/popup.js +8 -7
  24. data/app/assets/javascripts/semantic-ui/search.js +29 -2
  25. data/app/assets/javascripts/semantic-ui/slider.js +6 -6
  26. data/app/assets/javascripts/semantic-ui/tab.js +3 -2
  27. data/app/assets/javascripts/semantic-ui/toast.js +11 -9
  28. data/app/assets/javascripts/semantic-ui/visibility.js +1 -1
  29. data/app/assets/stylesheets/semantic-ui/collections/_form.scss +63 -24
  30. data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +28 -28
  31. data/app/assets/stylesheets/semantic-ui/collections/_table.scss +36 -20
  32. data/app/assets/stylesheets/semantic-ui/elements/_button.scss +9 -3
  33. data/app/assets/stylesheets/semantic-ui/elements/_emoji.scss +6130 -6133
  34. data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +147 -18
  35. data/app/assets/stylesheets/semantic-ui/elements/_input.scss +44 -44
  36. data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +1 -1
  37. data/app/assets/stylesheets/semantic-ui/elements/_step.scss +7 -0
  38. data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +1 -0
  39. data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +9 -9
  40. data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +8 -8
  41. data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +10 -3
  42. data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +34 -7
  43. data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +32 -3
  44. data/app/assets/stylesheets/semantic-ui/modules/_search.scss +90 -0
  45. data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +1 -0
  46. data/fomantic-ui-sass.gemspec +2 -2
  47. data/lib/fomantic-ui-sass.rb +2 -2
  48. data/lib/fomantic/ui/sass/version.rb +2 -2
  49. data/spec/dummy/app/assets/config/manifest.js +0 -0
  50. metadata +11 -9
@@ -1,12 +1,12 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!--
3
- Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com
3
+ Font Awesome Free 5.12.0 by @fontawesome - https://fontawesome.com
4
4
  License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
5
5
  -->
6
6
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
7
7
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
8
8
  <metadata>
9
- Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019
9
+ Created by FontForge 20190801 at Tue Dec 10 16:09:21 2019
10
10
  By Robert Madole
11
11
  Copyright (c) Font Awesome
12
12
  </metadata>
@@ -22,7 +22,7 @@ Copyright (c) Font Awesome
22
22
  descent="-64"
23
23
  bbox="-0.0663408 -64.0662 640.01 448.1"
24
24
  underline-thickness="25"
25
- underline-position="-51"
25
+ underline-position="-50"
26
26
  unicode-range="U+0020-F5C8"
27
27
  />
28
28
  <missing-glyph />
@@ -435,14 +435,14 @@ c-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.08
435
435
  c-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8
436
436
  h131.552h0.0517578c7.44141 0 19.1074 -2.19238 26.041 -4.89355l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z" />
437
437
  <glyph glyph-name="hand-spock" unicode="&#xf259;"
438
- d="M21.0957 66.21c-26.9688 25.3818 -28.2471 67.7461 -2.87109 94.707c24.1982 25.7139 64.2881 28.2373 91.4824 5.72168l-31.04 136.509c-9.38379 41.2803 21.4336 81.0127 64.0713 81.8438c1.74414 28.9062 22.2656 54.4912 51.8818 61.2949
439
- c36.001 8.27539 72.0176 -14.2266 80.3037 -50.2959l21.6748 -131.99l16.9014 105.25c9.02344 36.0947 45.4473 57.7021 81.25 48.75c27.3066 -6.82715 45.7061 -29.1357 49.8496 -53.9922c43.2285 0.212891 75.6436 -40.1133 65.5439 -82.5244l-31.7295 -133.41
440
- c-0.938477 -3.94141 -1.41406 -7.99414 -1.41406 -12.0449v-36.8389v-0.00683594c0 -9.29102 -2.14355 -24.0596 -4.78516 -32.9668l-31.8145 -107.312c-4.02734 -13.585 -16.5107 -22.9043 -30.6807 -22.9043h-237.6c-7.00586 0 -16.8311 3.89648 -21.9316 8.69824z
441
- M53.1641 128.021c-7.17969 -7.62891 -6.81543 -19.6777 0.813477 -26.8574l124.487 -117.164h219.311l28.4199 95.8613c1.86133 6.27637 2.80469 12.7793 2.80469 19.3281v36.8389c0.000976562 6.48047 1.21973 16.8574 2.71973 23.1621l31.7549 133.407
442
- c5.83105 24.4893 -31.1445 33.25 -36.9658 8.80273l-26.9229 -113.105c-1.61523 -6.78711 -8.58887 -12.2949 -15.5645 -12.2949h-9.69434c-10.4072 0 -18.043 9.79199 -15.5225 19.8799l38.127 152.512c6.09766 24.376 -30.7607 33.6396 -36.8643 9.21777l-42.3721 -169.49
443
- c-1.67285 -6.68945 -8.62695 -12.1191 -15.5225 -12.1191h-13.2168v0c-7.0332 0 -14.0195 5.5625 -15.5938 12.417l-45.2207 196.828c-5.64453 24.5684 -42.6572 15.9609 -37.0342 -8.50781l41.6191 -181.153c2.30078 -10.0156 -5.31738 -19.583 -15.5938 -19.583h-8.60352
444
- h-0.000976562c-7.0498 0 -14.04 5.5791 -15.6025 12.4541l-30.3984 133.757c-5.55273 24.4395 -42.6504 16.1963 -37.0547 -8.4209l34.1299 -150.172c0.263672 -1.16309 0.397461 -2.35352 0.397461 -3.5459v-69.4795c0 -13.9941 -16.7754 -21.2432 -26.9658 -11.6523
445
- l-53.0117 49.8936c-7.61523 7.16699 -19.6377 6.85938 -26.8564 -0.8125z" />
438
+ d="M501.03 331.824c6.05762 -9.77832 10.9746 -27.0498 10.9746 -38.5518c0 -4.80664 -0.915039 -12.499 -2.04297 -17.1709l-57.623 -241.963c-12.748 -54.1729 -68.2627 -98.1387 -123.915 -98.1387h-0.345703h-107.455h-0.224609
439
+ c-33.8135 0 -81.2148 18.834 -105.807 42.041l-91.3652 85.9766c-12.8213 12.0469 -23.2266 36.1016 -23.2266 53.6943c0 16.1299 8.97266 38.7529 20.0273 50.499c5.31836 5.66406 29.875 29.3926 68.1152 21.8477l-24.3594 82.1973
440
+ c-1.68164 5.66406 -3.0459 15.0576 -3.0459 20.9668c0 37.5938 30.417 70.502 67.8955 73.4551c-0.204102 2.03125 -0.369141 5.33691 -0.369141 7.37891c0 31.627 24.8594 63.6895 55.4902 71.5684c43.248 10.9785 80.5645 -17.7012 89.6602 -53.0723l13.6836 -53.207
441
+ l4.64648 22.6602c6.76074 32.417 39.123 58.8115 72.2373 58.916c8.73438 0 56.625 -3.26953 70.7383 -54.0801c15.0664 0.710938 46.9199 -3.50977 66.3105 -35.0176zM463.271 287.219c7.86914 32.9844 -42.1211 45.2695 -50.0859 11.9219l-24.8008 -104.146
442
+ c-4.38867 -18.4141 -31.7783 -11.8926 -28.0557 6.2168l28.5479 139.166c7.39844 36.0703 -43.3076 45.0703 -50.1182 11.9629l-31.791 -154.971c-3.54883 -17.3086 -28.2832 -18.0469 -32.7109 -0.804688l-47.3262 184.035
443
+ c-8.43359 32.8105 -58.3691 20.2676 -49.8652 -12.8359l42.4414 -165.039c4.81641 -18.7207 -23.3711 -26.9121 -28.9648 -8.00781l-31.3438 105.779c-9.6875 32.6465 -59.1191 18.2578 -49.3867 -14.625l36.0137 -121.539
444
+ c5.61816 -18.9521 10.1777 -50.377 10.1777 -70.1436v-0.00878906c0 -6.54297 -8.05664 -10.9355 -13.4824 -5.82617l-51.123 48.1074c-24.7852 23.4082 -60.0527 -14.1875 -35.2793 -37.4902l91.3691 -85.9805c16.9629 -16.0068 49.6592 -28.998 72.9824 -28.998h0.154297
445
+ h107.455h0.216797c34.7402 0 69.3936 27.4443 77.3525 61.2598z" />
446
446
  <glyph glyph-name="hand-pointer" unicode="&#xf25a;" horiz-adv-x="448"
447
447
  d="M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -4.25 -0.775391 -11.0615 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286c-21.2588 0 -41.3682 10.4102 -53.791 27.8457
448
448
  l-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289
@@ -116,6 +116,7 @@ $.fn.calendar = function(parameters) {
116
116
  module.set.maxDate($module.data(metadata.maxDate));
117
117
  }
118
118
  module.setting('type', module.get.type());
119
+ module.setting('on', settings.on || ($input.length ? 'focus' : 'click'));
119
120
  },
120
121
  popup: function () {
121
122
  if (settings.inline) {
@@ -159,7 +160,7 @@ $.fn.calendar = function(parameters) {
159
160
  module.set.mode(settings.startMode);
160
161
  return settings.onShow.apply($container, arguments);
161
162
  };
162
- var on = settings.on || ($input.length ? 'focus' : 'click');
163
+ var on = module.setting('on');
163
164
  var options = $.extend({}, settings.popupOptions, {
164
165
  popup: $container,
165
166
  on: on,
@@ -202,33 +203,38 @@ $.fn.calendar = function(parameters) {
202
203
  calendar: function () {
203
204
  var i, r, c, p, row, cell, pageGrid;
204
205
 
205
- var mode = module.get.mode();
206
- var today = new Date();
207
- var date = module.get.date();
208
- var focusDate = module.get.focusDate();
209
- var display = focusDate || date || settings.initialDate || today;
210
- display = module.helper.dateInRange(display);
206
+ var
207
+ mode = module.get.mode(),
208
+ today = new Date(),
209
+ date = module.get.date(),
210
+ focusDate = module.get.focusDate(),
211
+ display = module.helper.dateInRange(focusDate || date || settings.initialDate || today)
212
+ ;
211
213
 
212
214
  if (!focusDate) {
213
215
  focusDate = display;
214
216
  module.set.focusDate(focusDate, false, false);
215
217
  }
216
218
 
217
- var isYear = mode === 'year';
218
- var isMonth = mode === 'month';
219
- var isDay = mode === 'day';
220
- var isHour = mode === 'hour';
221
- var isMinute = mode === 'minute';
222
- var isTimeOnly = settings.type === 'time';
219
+ var
220
+ isYear = mode === 'year',
221
+ isMonth = mode === 'month',
222
+ isDay = mode === 'day',
223
+ isHour = mode === 'hour',
224
+ isMinute = mode === 'minute',
225
+ isTimeOnly = settings.type === 'time'
226
+ ;
223
227
 
224
228
  var multiMonth = Math.max(settings.multiMonth, 1);
225
229
  var monthOffset = !isDay ? 0 : module.get.monthOffset();
226
230
 
227
- var minute = display.getMinutes();
228
- var hour = display.getHours();
229
- var day = display.getDate();
230
- var startMonth = display.getMonth() + monthOffset;
231
- var year = display.getFullYear();
231
+ var
232
+ minute = display.getMinutes(),
233
+ hour = display.getHours(),
234
+ day = display.getDate(),
235
+ startMonth = display.getMonth() + monthOffset,
236
+ year = display.getFullYear()
237
+ ;
232
238
 
233
239
  var columns = isDay ? settings.showWeekNumbers ? 8 : 7 : isHour ? 4 : timeGap['column'];
234
240
  var rows = isDay || isHour ? 6 : timeGap['row'];
@@ -254,17 +260,18 @@ $.fn.calendar = function(parameters) {
254
260
  rows = Math.ceil(requiredCells / 7);
255
261
  }
256
262
 
257
- var yearChange = isYear ? 10 : isMonth ? 1 : 0;
258
- var monthChange = isDay ? 1 : 0;
259
- var dayChange = isHour || isMinute ? 1 : 0;
260
- var prevNextDay = isHour || isMinute ? day : 1;
261
- var prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour);
262
- var nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour);
263
-
264
- var prevLast = isYear ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0) :
265
- isMonth ? new Date(year, 0, 0) : isDay ? new Date(year, month, 0) : new Date(year, month, day, -1);
266
- var nextFirst = isYear ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1) :
267
- isMonth ? new Date(year + 1, 0, 1) : isDay ? new Date(year, month + 1, 1) : new Date(year, month, day + 1);
263
+ var
264
+ yearChange = isYear ? 10 : isMonth ? 1 : 0,
265
+ monthChange = isDay ? 1 : 0,
266
+ dayChange = isHour || isMinute ? 1 : 0,
267
+ prevNextDay = isHour || isMinute ? day : 1,
268
+ prevDate = new Date(year - yearChange, month - monthChange, prevNextDay - dayChange, hour),
269
+ nextDate = new Date(year + yearChange, month + monthChange, prevNextDay + dayChange, hour),
270
+ prevLast = isYear ? new Date(Math.ceil(year / 10) * 10 - 9, 0, 0) :
271
+ isMonth ? new Date(year, 0, 0) : isDay ? new Date(year, month, 0) : new Date(year, month, day, -1),
272
+ nextFirst = isYear ? new Date(Math.ceil(year / 10) * 10 + 1, 0, 1) :
273
+ isMonth ? new Date(year + 1, 0, 1) : isDay ? new Date(year, month + 1, 1) : new Date(year, month, day + 1)
274
+ ;
268
275
 
269
276
  var tempMode = mode;
270
277
  if (isDay && settings.showWeekNumbers){
@@ -440,7 +447,6 @@ $.fn.calendar = function(parameters) {
440
447
  $input.on('input' + eventNamespace, module.event.inputChange);
441
448
  $input.on('focus' + eventNamespace, module.event.inputFocus);
442
449
  $input.on('blur' + eventNamespace, module.event.inputBlur);
443
- $input.on('click' + eventNamespace, module.event.inputClick);
444
450
  $input.on('keydown' + eventNamespace, module.event.keydown);
445
451
  } else {
446
452
  $container.on('keydown' + eventNamespace, module.event.keydown);
@@ -569,9 +575,6 @@ $.fn.calendar = function(parameters) {
569
575
  var text = formatter.datetime(date, settings);
570
576
  $input.val(text);
571
577
  }
572
- },
573
- inputClick: function () {
574
- module.popup('show');
575
578
  }
576
579
  },
577
580
 
@@ -796,10 +799,12 @@ $.fn.calendar = function(parameters) {
796
799
  var canceled = module.set.date(date) === false;
797
800
  if (!canceled && settings.closable) {
798
801
  module.popup('hide');
799
- //if this is a range calendar, show the end date calendar popup and focus the input
802
+ //if this is a range calendar, focus the container or input. This will open the popup from its event listeners.
800
803
  var endModule = module.get.calendarModule(settings.endCalendar);
801
804
  if (endModule) {
802
- endModule.popup('show');
805
+ if (endModule.setting('on') !== 'focus') {
806
+ endModule.popup('show');
807
+ }
803
808
  endModule.focus();
804
809
  }
805
810
  }
@@ -809,7 +814,7 @@ $.fn.calendar = function(parameters) {
809
814
  module.set.mode(newMode);
810
815
  if (mode === 'hour' || (mode === 'day' && module.get.date())) {
811
816
  //the user has chosen enough to consider a valid date/time has been chosen
812
- module.set.date(date);
817
+ module.set.date(date, true, false);
813
818
  } else {
814
819
  module.set.focusDate(date);
815
820
  }
@@ -845,15 +850,38 @@ $.fn.calendar = function(parameters) {
845
850
 
846
851
  helper: {
847
852
  isDisabled: function(date, mode) {
848
- return mode === 'day' && ((settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
853
+ return (mode === 'day' || mode === 'month' || mode === 'year') && ((settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
849
854
  if(typeof d === 'string') {
850
855
  d = module.helper.sanitiseDate(d);
851
856
  }
852
857
  if (d instanceof Date) {
853
858
  return module.helper.dateEqual(date, d, mode);
854
859
  }
855
- if (d !== null && typeof d === 'object' && d[metadata.date]) {
856
- return module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode);
860
+ if (d !== null && typeof d === 'object') {
861
+ if (d[metadata.year]) {
862
+ if (typeof d[metadata.year] === 'number') {
863
+ return date.getFullYear() == d[metadata.year];
864
+ } else if (Array.isArray(d[metadata.year])) {
865
+ return d[metadata.year].indexOf(date.getFullYear()) > -1;
866
+ }
867
+ } else if (d[metadata.month]) {
868
+ if (typeof d[metadata.month] === 'number') {
869
+ return date.getMonth() == d[metadata.month];
870
+ } else if (Array.isArray(d[metadata.month])) {
871
+ return d[metadata.month].indexOf(date.getMonth()) > -1;
872
+ } else if (d[metadata.month] instanceof Date) {
873
+ var sdate = module.helper.sanitiseDate(d[metadata.month]);
874
+ return (date.getMonth() == sdate.getMonth()) && (date.getFullYear() == sdate.getFullYear())
875
+ }
876
+ } else if (d[metadata.date] && mode === 'day') {
877
+ if (d[metadata.date] instanceof Date) {
878
+ return module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode);
879
+ } else if (Array.isArray(d[metadata.date])) {
880
+ return d[metadata.date].some(function(idate) {
881
+ return module.helper.dateEqual(date, idate, mode);
882
+ });
883
+ }
884
+ }
857
885
  }
858
886
  }));
859
887
  },
@@ -875,10 +903,9 @@ $.fn.calendar = function(parameters) {
875
903
  }
876
904
  },
877
905
  findDayAsObject: function(date, mode, dates) {
878
- if (mode === 'day') {
879
- var i = 0, il = dates.length;
906
+ if (mode === 'day' || mode === 'month' || mode === 'year') {
880
907
  var d;
881
- for (; i < il; i++) {
908
+ for (var i = 0; i < dates.length; i++) {
882
909
  d = dates[i];
883
910
  if(typeof d === 'string') {
884
911
  d = module.helper.sanitiseDate(d);
@@ -888,8 +915,37 @@ $.fn.calendar = function(parameters) {
888
915
  dateObject[metadata.date] = d;
889
916
  return dateObject;
890
917
  }
891
- else if (d !== null && typeof d === 'object' && d[metadata.date] && module.helper.dateEqual(date,module.helper.sanitiseDate(d[metadata.date]), mode) ) {
892
- return d;
918
+ else if (d !== null && typeof d === 'object') {
919
+ if (d[metadata.year]) {
920
+ if (typeof d[metadata.year] === 'number' && date.getFullYear() == d[metadata.year]) {
921
+ return d;
922
+ } else if (Array.isArray(d[metadata.year])) {
923
+ if (d[metadata.year].indexOf(date.getFullYear()) > -1) {
924
+ return d;
925
+ }
926
+ }
927
+ } else if (d[metadata.month]) {
928
+ if (typeof d[metadata.month] === 'number' && date.getMonth() == d[metadata.month]) {
929
+ return d;
930
+ } else if (Array.isArray(d[metadata.month])) {
931
+ if (d[metadata.month].indexOf(date.getMonth()) > -1) {
932
+ return d;
933
+ }
934
+ } else if (d[metadata.month] instanceof Date) {
935
+ var sdate = module.helper.sanitiseDate(d[metadata.month]);
936
+ if ((date.getMonth() == sdate.getMonth()) && (date.getFullYear() == sdate.getFullYear())) {
937
+ return d;
938
+ }
939
+ }
940
+ } else if (d[metadata.date] && mode === 'day') {
941
+ if (d[metadata.date] instanceof Date && module.helper.dateEqual(date, module.helper.sanitiseDate(d[metadata.date]), mode)) {
942
+ return d;
943
+ } else if (Array.isArray(d[metadata.date])) {
944
+ if(d[metadata.date].some(function(idate) { return module.helper.dateEqual(date, idate, mode); })) {
945
+ return d;
946
+ }
947
+ }
948
+ }
893
949
  }
894
950
  }
895
951
  }
@@ -1576,7 +1632,9 @@ $.fn.calendar.settings = {
1576
1632
  type: 'type',
1577
1633
  monthOffset: 'monthOffset',
1578
1634
  message: 'message',
1579
- class: 'class'
1635
+ class: 'class',
1636
+ month: 'month',
1637
+ year: 'year'
1580
1638
  },
1581
1639
 
1582
1640
  eventClass: 'blue'
@@ -175,7 +175,7 @@ $.fn.checkbox = function(parameters) {
175
175
  },
176
176
 
177
177
  preventDefaultOnInputTarget: function() {
178
- if(typeof event !== 'undefined' && $(event.target).is(selector.input)) {
178
+ if(typeof event !== 'undefined' && event !== null && $(event.target).is(selector.input)) {
179
179
  module.verbose('Preventing default check action after manual check action');
180
180
  event.preventDefault();
181
181
  }
@@ -31,6 +31,10 @@ $.fn.dropdown = function(parameters) {
31
31
  moduleSelector = $allModules.selector || '',
32
32
 
33
33
  hasTouch = ('ontouchstart' in document.documentElement),
34
+ clickEvent = hasTouch
35
+ ? 'touchstart'
36
+ : 'click',
37
+
34
38
  time = new Date().getTime(),
35
39
  performance = [],
36
40
 
@@ -113,7 +117,9 @@ $.fn.dropdown = function(parameters) {
113
117
  module.setup.layout();
114
118
 
115
119
  if(settings.values) {
120
+ module.set.initialLoad();
116
121
  module.change.values(settings.values);
122
+ module.remove.initialLoad();
117
123
  }
118
124
 
119
125
  module.refreshData();
@@ -537,6 +543,7 @@ $.fn.dropdown = function(parameters) {
537
543
  } else if( module.can.click() ) {
538
544
  module.unbind.intent();
539
545
  }
546
+ iconClicked = false;
540
547
  },
541
548
 
542
549
  hideOthers: function() {
@@ -565,27 +572,10 @@ $.fn.dropdown = function(parameters) {
565
572
 
566
573
  bind: {
567
574
  events: function() {
568
- if(hasTouch) {
569
- module.bind.touchEvents();
570
- }
571
575
  module.bind.keyboardEvents();
572
576
  module.bind.inputEvents();
573
577
  module.bind.mouseEvents();
574
578
  },
575
- touchEvents: function() {
576
- module.debug('Touch device detected binding additional touch events');
577
- if( module.is.searchSelection() ) {
578
- // do nothing special yet
579
- }
580
- else if( module.is.single() ) {
581
- $module
582
- .on('touchstart' + eventNamespace, module.event.test.toggle)
583
- ;
584
- }
585
- $menu
586
- .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
587
- ;
588
- },
589
579
  keyboardEvents: function() {
590
580
  module.verbose('Binding keyboard events');
591
581
  $module
@@ -612,8 +602,8 @@ $.fn.dropdown = function(parameters) {
612
602
  module.verbose('Binding mouse events');
613
603
  if(module.is.multiple()) {
614
604
  $module
615
- .on('click' + eventNamespace, selector.label, module.event.label.click)
616
- .on('click' + eventNamespace, selector.remove, module.event.remove.click)
605
+ .on(clickEvent + eventNamespace, selector.label, module.event.label.click)
606
+ .on(clickEvent + eventNamespace, selector.remove, module.event.remove.click)
617
607
  ;
618
608
  }
619
609
  if( module.is.searchSelection() ) {
@@ -622,24 +612,24 @@ $.fn.dropdown = function(parameters) {
622
612
  .on('mouseup' + eventNamespace, module.event.mouseup)
623
613
  .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
624
614
  .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
625
- .on('click' + eventNamespace, selector.icon, module.event.icon.click)
626
- .on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
615
+ .on(clickEvent + eventNamespace, selector.icon, module.event.icon.click)
616
+ .on(clickEvent + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
627
617
  .on('focus' + eventNamespace, selector.search, module.event.search.focus)
628
- .on('click' + eventNamespace, selector.search, module.event.search.focus)
618
+ .on(clickEvent + eventNamespace, selector.search, module.event.search.focus)
629
619
  .on('blur' + eventNamespace, selector.search, module.event.search.blur)
630
- .on('click' + eventNamespace, selector.text, module.event.text.focus)
620
+ .on(clickEvent + eventNamespace, selector.text, module.event.text.focus)
631
621
  ;
632
622
  if(module.is.multiple()) {
633
623
  $module
634
- .on('click' + eventNamespace, module.event.click)
624
+ .on(clickEvent + eventNamespace, module.event.click)
635
625
  ;
636
626
  }
637
627
  }
638
628
  else {
639
629
  if(settings.on == 'click') {
640
630
  $module
641
- .on('click' + eventNamespace, selector.icon, module.event.icon.click)
642
- .on('click' + eventNamespace, module.event.test.toggle)
631
+ .on(clickEvent + eventNamespace, selector.icon, module.event.icon.click)
632
+ .on(clickEvent + eventNamespace, module.event.test.toggle)
643
633
  ;
644
634
  }
645
635
  else if(settings.on == 'hover') {
@@ -657,7 +647,7 @@ $.fn.dropdown = function(parameters) {
657
647
  .on('mousedown' + eventNamespace, module.event.mousedown)
658
648
  .on('mouseup' + eventNamespace, module.event.mouseup)
659
649
  .on('focus' + eventNamespace, module.event.focus)
660
- .on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
650
+ .on(clickEvent + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
661
651
  ;
662
652
  if(module.has.menuSearch() ) {
663
653
  $module
@@ -671,7 +661,7 @@ $.fn.dropdown = function(parameters) {
671
661
  }
672
662
  }
673
663
  $menu
674
- .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
664
+ .on((hasTouch ? 'touchstart' : 'mouseenter') + eventNamespace, selector.item, module.event.item.mouseenter)
675
665
  .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
676
666
  .on('click' + eventNamespace, selector.item, module.event.item.click)
677
667
  ;
@@ -685,7 +675,7 @@ $.fn.dropdown = function(parameters) {
685
675
  ;
686
676
  }
687
677
  $document
688
- .on('click' + elementNamespace, module.event.test.hide)
678
+ .on(clickEvent + elementNamespace, module.event.test.hide)
689
679
  ;
690
680
  }
691
681
  },
@@ -700,7 +690,7 @@ $.fn.dropdown = function(parameters) {
700
690
  ;
701
691
  }
702
692
  $document
703
- .off('click' + elementNamespace)
693
+ .off(clickEvent + elementNamespace)
704
694
  ;
705
695
  }
706
696
  },
@@ -848,6 +838,10 @@ $.fn.dropdown = function(parameters) {
848
838
  text,
849
839
  value
850
840
  ;
841
+ if($choice.hasClass(className.unfilterable)) {
842
+ results.push(this);
843
+ return true;
844
+ }
851
845
  if(settings.match === 'both' || settings.match === 'text') {
852
846
  text = module.remove.diacritics(String(module.get.choiceText($choice, false)));
853
847
  if(text.search(beginsWithRegExp) !== -1) {
@@ -1017,7 +1011,7 @@ $.fn.dropdown = function(parameters) {
1017
1011
  var
1018
1012
  value = settings.templates.deQuote(item[fields.value]),
1019
1013
  name = settings.templates.escape(
1020
- item[fields.name] || item[fields.value],
1014
+ item[fields.name] || '',
1021
1015
  settings.preserveHTML
1022
1016
  )
1023
1017
  ;
@@ -1781,7 +1775,7 @@ $.fn.dropdown = function(parameters) {
1781
1775
  return $text.text();
1782
1776
  },
1783
1777
  query: function() {
1784
- return $.trim($search.val());
1778
+ return String($search.val()).trim();
1785
1779
  },
1786
1780
  searchWidth: function(value) {
1787
1781
  value = (value !== undefined)
@@ -1924,8 +1918,8 @@ $.fn.dropdown = function(parameters) {
1924
1918
  return ($choice.data(metadata.text) !== undefined)
1925
1919
  ? $choice.data(metadata.text)
1926
1920
  : (preserveHTML)
1927
- ? $.trim($choice.html())
1928
- : $.trim($choice.text())
1921
+ ? $choice.html().trim()
1922
+ : $choice.text().trim()
1929
1923
  ;
1930
1924
  }
1931
1925
  },
@@ -1937,11 +1931,11 @@ $.fn.dropdown = function(parameters) {
1937
1931
  return ($choice.data(metadata.value) !== undefined)
1938
1932
  ? String( $choice.data(metadata.value) )
1939
1933
  : (typeof choiceText === 'string')
1940
- ? $.trim(
1934
+ ? String(
1941
1935
  settings.ignoreSearchCase
1942
1936
  ? choiceText.toLowerCase()
1943
1937
  : choiceText
1944
- )
1938
+ ).trim()
1945
1939
  : String(choiceText)
1946
1940
  ;
1947
1941
  },
@@ -1975,6 +1969,9 @@ $.fn.dropdown = function(parameters) {
1975
1969
  value = ( $option.attr('value') !== undefined )
1976
1970
  ? $option.attr('value')
1977
1971
  : name,
1972
+ text = ( $option.data(metadata.text) !== undefined )
1973
+ ? $option.data(metadata.text)
1974
+ : name,
1978
1975
  group = $option.parent('optgroup')
1979
1976
  ;
1980
1977
  if(settings.placeholder === 'auto' && value === '') {
@@ -1992,6 +1989,7 @@ $.fn.dropdown = function(parameters) {
1992
1989
  select.values.push({
1993
1990
  name : name,
1994
1991
  value : value,
1992
+ text : text,
1995
1993
  disabled : disabled
1996
1994
  });
1997
1995
  }
@@ -2080,7 +2078,7 @@ $.fn.dropdown = function(parameters) {
2080
2078
  return;
2081
2079
  }
2082
2080
  if(isMultiple) {
2083
- if($.inArray( String(optionValue), value) !== -1) {
2081
+ if($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(function(v){return String(v);})) !== -1) {
2084
2082
  $selectedItem = ($selectedItem)
2085
2083
  ? $selectedItem.add($choice)
2086
2084
  : $choice
@@ -2099,7 +2097,7 @@ $.fn.dropdown = function(parameters) {
2099
2097
  optionValue = optionValue.toLowerCase();
2100
2098
  value = value.toLowerCase();
2101
2099
  }
2102
- if( String(optionValue) == String(value)) {
2100
+ if(module.escape.htmlEntities(String(optionValue)) === module.escape.htmlEntities(String(value))) {
2103
2101
  module.verbose('Found select item by value', optionValue, value);
2104
2102
  $selectedItem = $choice;
2105
2103
  return true;
@@ -3072,6 +3070,7 @@ $.fn.dropdown = function(parameters) {
3072
3070
  values = module.get.values(),
3073
3071
  newValue
3074
3072
  ;
3073
+ removedValue = module.escape.htmlEntities(removedValue);
3075
3074
  if( module.has.selectInput() ) {
3076
3075
  module.verbose('Input is <select> removing selected option', removedValue);
3077
3076
  newValue = module.remove.arrayValue(removedValue, values);
@@ -3661,10 +3660,9 @@ $.fn.dropdown = function(parameters) {
3661
3660
  },
3662
3661
  htmlEntities: function(string) {
3663
3662
  var
3664
- badChars = /[&<>"'`]/g,
3663
+ badChars = /[<>"'`]/g,
3665
3664
  shouldEscape = /[&<>"'`]/,
3666
3665
  escape = {
3667
- "&": "&amp;",
3668
3666
  "<": "&lt;",
3669
3667
  ">": "&gt;",
3670
3668
  '"': "&quot;",
@@ -3676,6 +3674,7 @@ $.fn.dropdown = function(parameters) {
3676
3674
  }
3677
3675
  ;
3678
3676
  if(shouldEscape.test(string)) {
3677
+ string = string.replace(/&(?![a-z0-9#]{1,6};)/, "&amp;");
3679
3678
  return string.replace(badChars, escapedChar);
3680
3679
  }
3681
3680
  return string;
@@ -4072,7 +4071,8 @@ $.fn.dropdown.settings = {
4072
4071
  delete : 'delete',
4073
4072
  header : 'header',
4074
4073
  divider : 'divider',
4075
- groupIcon : ''
4074
+ groupIcon : '',
4075
+ unfilterable : 'unfilterable'
4076
4076
  }
4077
4077
 
4078
4078
  };
@@ -4087,10 +4087,9 @@ $.fn.dropdown.settings.templates = {
4087
4087
  return string;
4088
4088
  }
4089
4089
  var
4090
- badChars = /[&<>"'`]/g,
4090
+ badChars = /[<>"'`]/g,
4091
4091
  shouldEscape = /[&<>"'`]/,
4092
4092
  escape = {
4093
- "&": "&amp;",
4094
4093
  "<": "&lt;",
4095
4094
  ">": "&gt;",
4096
4095
  '"': "&quot;",
@@ -4102,6 +4101,7 @@ $.fn.dropdown.settings.templates = {
4102
4101
  }
4103
4102
  ;
4104
4103
  if(shouldEscape.test(string)) {
4104
+ string = string.replace(/&(?![a-z0-9#]{1,6};)/, "&amp;");
4105
4105
  return string.replace(badChars, escapedChar);
4106
4106
  }
4107
4107
  return string;
@@ -4157,10 +4157,10 @@ $.fn.dropdown.settings.templates = {
4157
4157
  if(option[fields.icon]) {
4158
4158
  html += '<i class="'+deQuote(option[fields.icon])+' '+(option[fields.iconClass] ? deQuote(option[fields.iconClass]) : className.icon)+'"></i>';
4159
4159
  }
4160
- html += escape(option[fields.name] || option[fields.value],preserveHTML);
4160
+ html += escape(option[fields.name] || '', preserveHTML);
4161
4161
  html += '</div>';
4162
4162
  } else if (itemType === 'header') {
4163
- var groupName = escape(option[fields.name],preserveHTML),
4163
+ var groupName = escape(option[fields.name] || '', preserveHTML),
4164
4164
  groupIcon = option[fields.icon] ? deQuote(option[fields.icon]) : className.groupIcon
4165
4165
  ;
4166
4166
  if(groupName !== '' || groupIcon !== '') {