fomantic-ui 2.9.0-beta.277 → 2.9.0-beta.278

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 (152) hide show
  1. package/dist/components/accordion.css +1 -1
  2. package/dist/components/accordion.js +1 -1
  3. package/dist/components/accordion.min.css +1 -1
  4. package/dist/components/accordion.min.js +1 -1
  5. package/dist/components/ad.css +1 -1
  6. package/dist/components/ad.min.css +1 -1
  7. package/dist/components/api.js +1 -1
  8. package/dist/components/api.min.js +1 -1
  9. package/dist/components/breadcrumb.css +1 -1
  10. package/dist/components/breadcrumb.min.css +1 -1
  11. package/dist/components/button.css +1 -1
  12. package/dist/components/button.min.css +1 -1
  13. package/dist/components/calendar.css +1 -1
  14. package/dist/components/calendar.js +78 -63
  15. package/dist/components/calendar.min.css +1 -1
  16. package/dist/components/calendar.min.js +2 -2
  17. package/dist/components/card.css +1 -1
  18. package/dist/components/card.min.css +1 -1
  19. package/dist/components/checkbox.css +1 -1
  20. package/dist/components/checkbox.js +1 -1
  21. package/dist/components/checkbox.min.css +1 -1
  22. package/dist/components/checkbox.min.js +1 -1
  23. package/dist/components/comment.css +1 -1
  24. package/dist/components/comment.min.css +1 -1
  25. package/dist/components/container.css +1 -1
  26. package/dist/components/container.min.css +1 -1
  27. package/dist/components/dimmer.css +1 -1
  28. package/dist/components/dimmer.js +1 -1
  29. package/dist/components/dimmer.min.css +1 -1
  30. package/dist/components/dimmer.min.js +1 -1
  31. package/dist/components/divider.css +1 -1
  32. package/dist/components/divider.min.css +1 -1
  33. package/dist/components/dropdown.css +1 -1
  34. package/dist/components/dropdown.js +32 -13
  35. package/dist/components/dropdown.min.css +1 -1
  36. package/dist/components/dropdown.min.js +2 -2
  37. package/dist/components/embed.css +1 -1
  38. package/dist/components/embed.js +1 -1
  39. package/dist/components/embed.min.css +1 -1
  40. package/dist/components/embed.min.js +1 -1
  41. package/dist/components/feed.css +1 -1
  42. package/dist/components/feed.min.css +1 -1
  43. package/dist/components/flag.css +1 -1
  44. package/dist/components/flag.min.css +1 -1
  45. package/dist/components/form.css +1 -1
  46. package/dist/components/form.js +1 -1
  47. package/dist/components/form.min.css +1 -1
  48. package/dist/components/form.min.js +1 -1
  49. package/dist/components/grid.css +1 -1
  50. package/dist/components/grid.min.css +1 -1
  51. package/dist/components/header.css +1 -1
  52. package/dist/components/header.min.css +1 -1
  53. package/dist/components/icon.css +1 -1
  54. package/dist/components/icon.min.css +1 -1
  55. package/dist/components/image.css +1 -1
  56. package/dist/components/image.min.css +1 -1
  57. package/dist/components/input.css +1 -1
  58. package/dist/components/input.min.css +1 -1
  59. package/dist/components/item.css +1 -1
  60. package/dist/components/item.min.css +1 -1
  61. package/dist/components/label.css +1 -1
  62. package/dist/components/label.min.css +1 -1
  63. package/dist/components/list.css +1 -1
  64. package/dist/components/list.min.css +1 -1
  65. package/dist/components/loader.css +1 -1
  66. package/dist/components/loader.min.css +1 -1
  67. package/dist/components/message.css +1 -1
  68. package/dist/components/message.min.css +1 -1
  69. package/dist/components/modal.css +1 -1
  70. package/dist/components/modal.js +1 -1
  71. package/dist/components/modal.min.css +1 -1
  72. package/dist/components/modal.min.js +1 -1
  73. package/dist/components/nag.css +1 -1
  74. package/dist/components/nag.js +1 -1
  75. package/dist/components/nag.min.css +1 -1
  76. package/dist/components/nag.min.js +1 -1
  77. package/dist/components/placeholder.css +1 -1
  78. package/dist/components/placeholder.min.css +1 -1
  79. package/dist/components/popup.css +1 -1
  80. package/dist/components/popup.js +1 -1
  81. package/dist/components/popup.min.css +1 -1
  82. package/dist/components/popup.min.js +1 -1
  83. package/dist/components/progress.css +1 -1
  84. package/dist/components/progress.js +1 -1
  85. package/dist/components/progress.min.css +1 -1
  86. package/dist/components/progress.min.js +1 -1
  87. package/dist/components/rail.css +1 -1
  88. package/dist/components/rail.min.css +1 -1
  89. package/dist/components/rating.css +1 -1
  90. package/dist/components/rating.js +1 -1
  91. package/dist/components/rating.min.css +1 -1
  92. package/dist/components/rating.min.js +1 -1
  93. package/dist/components/reset.css +1 -1
  94. package/dist/components/reset.min.css +1 -1
  95. package/dist/components/reveal.css +1 -1
  96. package/dist/components/reveal.min.css +1 -1
  97. package/dist/components/search.css +1 -1
  98. package/dist/components/search.js +1 -1
  99. package/dist/components/search.min.css +1 -1
  100. package/dist/components/search.min.js +1 -1
  101. package/dist/components/segment.css +1 -1
  102. package/dist/components/segment.min.css +1 -1
  103. package/dist/components/shape.css +1 -1
  104. package/dist/components/shape.js +1 -1
  105. package/dist/components/shape.min.css +1 -1
  106. package/dist/components/shape.min.js +1 -1
  107. package/dist/components/sidebar.css +1 -1
  108. package/dist/components/sidebar.js +1 -1
  109. package/dist/components/sidebar.min.css +1 -1
  110. package/dist/components/sidebar.min.js +1 -1
  111. package/dist/components/site.css +1 -1
  112. package/dist/components/site.js +1 -1
  113. package/dist/components/site.min.css +1 -1
  114. package/dist/components/site.min.js +1 -1
  115. package/dist/components/slider.js +1 -1
  116. package/dist/components/slider.min.js +1 -1
  117. package/dist/components/state.js +1 -1
  118. package/dist/components/state.min.js +1 -1
  119. package/dist/components/statistic.css +1 -1
  120. package/dist/components/statistic.min.css +1 -1
  121. package/dist/components/step.css +1 -1
  122. package/dist/components/step.min.css +1 -1
  123. package/dist/components/sticky.css +1 -1
  124. package/dist/components/sticky.js +1 -1
  125. package/dist/components/sticky.min.css +1 -1
  126. package/dist/components/sticky.min.js +1 -1
  127. package/dist/components/tab.css +1 -1
  128. package/dist/components/tab.js +1 -1
  129. package/dist/components/tab.min.css +1 -1
  130. package/dist/components/tab.min.js +1 -1
  131. package/dist/components/table.css +1 -1
  132. package/dist/components/table.min.css +1 -1
  133. package/dist/components/text.css +1 -1
  134. package/dist/components/text.min.css +1 -1
  135. package/dist/components/toast.css +1 -1
  136. package/dist/components/toast.js +1 -1
  137. package/dist/components/toast.min.css +1 -1
  138. package/dist/components/toast.min.js +1 -1
  139. package/dist/components/transition.css +1 -1
  140. package/dist/components/transition.js +1 -1
  141. package/dist/components/transition.min.css +1 -1
  142. package/dist/components/transition.min.js +1 -1
  143. package/dist/components/visibility.js +1 -1
  144. package/dist/components/visibility.min.js +1 -1
  145. package/dist/semantic.css +49 -49
  146. package/dist/semantic.js +133 -99
  147. package/dist/semantic.min.css +1 -1
  148. package/dist/semantic.min.js +2 -2
  149. package/package.json +2 -2
  150. package/src/definitions/modules/calendar.js +77 -62
  151. package/src/definitions/modules/dropdown.js +31 -12
  152. package/tasks/config/project/install.js +4 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fomantic-ui",
3
- "version": "2.9.0-beta.277+03890ca",
3
+ "version": "2.9.0-beta.278+4d5303c",
4
4
  "description": "Fomantic empowers designers and developers by creating a shared vocabulary for UI.",
5
5
  "keywords": [
6
6
  "fomantic-ui",
@@ -74,7 +74,7 @@
74
74
  },
75
75
  "devDependencies": {
76
76
  "all-contributors-cli": "^6.7.0",
77
- "auto-changelog": "^1.15.0",
77
+ "auto-changelog": "^2.4.0",
78
78
  "node-fetch": "^2.6.0",
79
79
  "semver": "^7.3.5"
80
80
  },
@@ -322,7 +322,7 @@ $.fn.calendar = function(parameters) {
322
322
  var headerDate = isYear || isMonth ? new Date(year, 0, 1) :
323
323
  isDay ? new Date(year, month, 1) : new Date(year, month, day, hour, minute);
324
324
  var headerText = $('<span/>').addClass(className.link).appendTo(cell);
325
- headerText.text(formatter.header(headerDate, mode, settings));
325
+ headerText.text(module.helper.dateFormat(formatter[mode+'Header'], headerDate));
326
326
  var newMode = isMonth ? (settings.disableYear ? 'day' : 'year') :
327
327
  isDay ? (settings.disableMonth ? 'year' : 'month') : 'day';
328
328
  headerText.data(metadata.mode, newMode);
@@ -370,7 +370,7 @@ $.fn.calendar = function(parameters) {
370
370
  isHour ? new Date(year, month, day, i) : new Date(year, month, day, hour, i * settings.minTimeGap);
371
371
  var cellText = isYear ? i :
372
372
  isMonth ? settings.text.monthsShort[i] : isDay ? cellDate.getDate() :
373
- formatter.time(cellDate, settings, true);
373
+ module.helper.dateFormat(formatter.cellTime,cellDate);
374
374
  cell = $('<td/>').addClass(className.cell).appendTo(row);
375
375
  cell.text(cellText);
376
376
  cell.data(metadata.date, cellDate);
@@ -651,7 +651,7 @@ $.fn.calendar = function(parameters) {
651
651
  $container.removeClass(className.active);
652
652
  if (settings.formatInput) {
653
653
  var date = module.get.date();
654
- var text = formatter.datetime(date, settings);
654
+ var text = module.helper.dateFormat(formatter[settings.type], date);
655
655
  $input.val(text);
656
656
  }
657
657
  if(selectionComplete){
@@ -722,6 +722,9 @@ $.fn.calendar = function(parameters) {
722
722
  return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1;
723
723
  }();
724
724
  },
725
+ formattedDate: function(format, date) {
726
+ return module.helper.dateFormat(format || formatter[settings.type], date || module.get.date());
727
+ },
725
728
  date: function () {
726
729
  return module.helper.sanitiseDate($module.data(metadata.date)) || null;
727
730
  },
@@ -815,7 +818,7 @@ $.fn.calendar = function(parameters) {
815
818
  date = module.helper.dateInRange(date);
816
819
 
817
820
  var mode = module.get.mode();
818
- var text = formatter.datetime(date, settings);
821
+ var text = module.helper.dateFormat(formatter[settings.type],date);
819
822
 
820
823
  if (fireChange && settings.onBeforeChange.call(element, date, text, mode) === false) {
821
824
  return false;
@@ -986,6 +989,60 @@ $.fn.calendar = function(parameters) {
986
989
  },
987
990
 
988
991
  helper: {
992
+ dateFormat: function(format,date) {
993
+ if (!(date instanceof Date)) {
994
+ return '';
995
+ }
996
+ if(typeof format === 'function') {
997
+ return format.call(module, date, settings);
998
+ }
999
+
1000
+ var D = date.getDate(),
1001
+ M = date.getMonth(),
1002
+ Y = date.getFullYear(),
1003
+ d = date.getDay(),
1004
+ H = date.getHours(),
1005
+ m = date.getMinutes(),
1006
+ s = date.getSeconds(),
1007
+ w = module.get.weekOfYear(Y,M,D+1-settings.firstDayOfWeek),
1008
+ h = H % 12 || 12,
1009
+ a = H < 12 ? settings.text.am.toLowerCase() : settings.text.pm.toLowerCase(),
1010
+ tokens = {
1011
+ D: D,
1012
+ DD: ('0'+D).slice(-2),
1013
+ M: M + 1,
1014
+ MM: ('0'+(M+1)).slice(-2),
1015
+ MMM: settings.text.monthsShort[M],
1016
+ MMMM: settings.text.months[M],
1017
+ Y: Y,
1018
+ YY: String(Y).slice(2),
1019
+ YYYY: Y,
1020
+ d: d,
1021
+ dd: settings.text.dayNamesShort[d].slice(0,2),
1022
+ ddd: settings.text.dayNamesShort[d],
1023
+ dddd: settings.text.dayNames[d],
1024
+ h: h,
1025
+ hh: ('0'+h).slice(-2),
1026
+ H: H,
1027
+ HH: ('0'+H).slice(-2),
1028
+ m: m,
1029
+ mm: ('0'+m).slice(-2),
1030
+ s: s,
1031
+ ss: ('0'+s).slice(-2),
1032
+ a: a,
1033
+ A: a.toUpperCase(),
1034
+ S: ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D % 100 - D % 10 !== 10) * D % 10],
1035
+ w: w,
1036
+ ww: ('0'+w).slice(-2)
1037
+ }
1038
+ ;
1039
+ return format.replace(settings.regExp.token, function (match) {
1040
+ if (match in tokens) {
1041
+ return tokens[match];
1042
+ }
1043
+ return match.slice(1, match.length - 1);
1044
+ });
1045
+ },
989
1046
  isDisabled: function(date, mode) {
990
1047
  return (mode === 'day' || mode === 'month' || mode === 'year' || mode === 'hour') && (((mode === 'day' && settings.disabledDaysOfWeek.indexOf(date.getDay()) !== -1) || settings.disabledDates.some(function(d){
991
1048
  if(typeof d === 'string') {
@@ -1436,7 +1493,7 @@ $.fn.calendar.settings = {
1436
1493
  constantHeight : true, // add rows to shorter months to keep day calendar height consistent (6 rows)
1437
1494
  today : false, // show a 'today/now' button at the bottom of the calendar
1438
1495
  closable : true, // close the popup after selecting a date/time
1439
- monthFirst : true, // month before day when parsing/converting date from/to text
1496
+ monthFirst : true, // month before day when parsing date from text
1440
1497
  touchReadonly : true, // set input to readonly on touch devices
1441
1498
  inline : false, // create the calendar inline instead of inside a popup
1442
1499
  on : null, // when to show the popup (defaults to 'focus' for input, 'click' for others)
@@ -1444,7 +1501,6 @@ $.fn.calendar.settings = {
1444
1501
  startMode : false, // display mode to start in, can be 'year', 'month', 'day', 'hour', 'minute' (false = 'day')
1445
1502
  minDate : null, // minimum date/time that can be selected, dates/times before are disabled
1446
1503
  maxDate : null, // maximum date/time that can be selected, dates/times after are disabled
1447
- ampm : true, // show am/pm in time mode
1448
1504
  disableYear : false, // disable year selection mode
1449
1505
  disableMonth : false, // disable month selection mode
1450
1506
  disableMinute : false, // disable minute selection mode
@@ -1454,7 +1510,7 @@ $.fn.calendar.settings = {
1454
1510
  multiMonth : 1, // show multiple months when in 'day' mode
1455
1511
  monthOffset : 0, // position current month by offset when multimonth > 1
1456
1512
  minTimeGap : 5,
1457
- showWeekNumbers : null, // show Number of Week at the very first column of a dayView
1513
+ showWeekNumbers : false, // show Number of Week at the very first column of a dayView
1458
1514
  disabledHours : [], // specific hour(s) which won't be selectable and contain additional information.
1459
1515
  disabledDates : [], // specific day(s) which won't be selectable and contain additional information.
1460
1516
  disabledDaysOfWeek : [], // day(s) which won't be selectable(s) (0 = Sunday)
@@ -1474,6 +1530,8 @@ $.fn.calendar.settings = {
1474
1530
 
1475
1531
  text: {
1476
1532
  days: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
1533
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
1534
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
1477
1535
  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
1478
1536
  monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
1479
1537
  today: 'Today',
@@ -1484,67 +1542,23 @@ $.fn.calendar.settings = {
1484
1542
  },
1485
1543
 
1486
1544
  formatter: {
1487
- header: function (date, mode, settings) {
1488
- return mode === 'year' ? settings.formatter.yearHeader(date, settings) :
1489
- mode === 'month' ? settings.formatter.monthHeader(date, settings) :
1490
- mode === 'day' ? settings.formatter.dayHeader(date, settings) :
1491
- mode === 'hour' ? settings.formatter.hourHeader(date, settings) :
1492
- settings.formatter.minuteHeader(date, settings);
1493
- },
1494
1545
  yearHeader: function (date, settings) {
1495
1546
  var decadeYear = Math.ceil(date.getFullYear() / 10) * 10;
1496
1547
  return (decadeYear - 9) + ' - ' + (decadeYear + 2);
1497
1548
  },
1498
- monthHeader: function (date, settings) {
1499
- return date.getFullYear();
1500
- },
1501
- dayHeader: function (date, settings) {
1502
- var month = settings.text.months[date.getMonth()];
1503
- var year = date.getFullYear();
1504
- return month + ' ' + year;
1505
- },
1506
- hourHeader: function (date, settings) {
1507
- return settings.formatter.date(date, settings);
1508
- },
1509
- minuteHeader: function (date, settings) {
1510
- return settings.formatter.date(date, settings);
1511
- },
1549
+ monthHeader: 'YYYY',
1550
+ dayHeader: 'MMMM YYYY',
1551
+ hourHeader: 'MMMM D, YYYY',
1552
+ minuteHeader: 'MMMM D, YYYY',
1512
1553
  dayColumnHeader: function (day, settings) {
1513
1554
  return settings.text.days[day];
1514
1555
  },
1515
- datetime: function (date, settings) {
1516
- if (!date) {
1517
- return '';
1518
- }
1519
- var day = settings.type === 'time' ? '' : settings.formatter.date(date, settings);
1520
- var time = settings.type.indexOf('time') < 0 ? '' : settings.formatter.time(date, settings, false);
1521
- var separator = settings.type === 'datetime' ? ' ' : '';
1522
- return day + separator + time;
1523
- },
1524
- date: function (date, settings) {
1525
- if (!date) {
1526
- return '';
1527
- }
1528
- var day = date.getDate();
1529
- var month = settings.text.months[date.getMonth()];
1530
- var year = date.getFullYear();
1531
- return settings.type === 'year' ? year :
1532
- settings.type === 'month' ? month + ' ' + year :
1533
- (settings.monthFirst ? month + ' ' + day : day + ' ' + month) + ', ' + year;
1534
- },
1535
- time: function (date, settings, forCalendar) {
1536
- if (!date) {
1537
- return '';
1538
- }
1539
- var hour = date.getHours();
1540
- var minute = date.getMinutes();
1541
- var ampm = '';
1542
- if (settings.ampm) {
1543
- ampm = ' ' + (hour < 12 ? settings.text.am : settings.text.pm);
1544
- hour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
1545
- }
1546
- return hour + ':' + (minute < 10 ? '0' : '') + minute + ampm;
1547
- },
1556
+ datetime: 'MMMM D, YYYY h:mm A',
1557
+ date: 'MMMM D, YYYY',
1558
+ time: 'h:mm A',
1559
+ cellTime: 'h:mm A',
1560
+ month: 'MMMM YYYY',
1561
+ year: 'YYYY',
1548
1562
  today: function (settings) {
1549
1563
  return settings.type === 'date' ? settings.text.today : settings.text.now;
1550
1564
  },
@@ -1813,7 +1827,8 @@ $.fn.calendar.settings = {
1813
1827
 
1814
1828
  regExp: {
1815
1829
  dateWords: /[^A-Za-z\u00C0-\u024F]+/g,
1816
- dateNumbers: /[^\d:]+/g
1830
+ dateNumbers: /[^\d:]+/g,
1831
+ token: /d{1,4}|D{1,2}|M{1,4}|YY(?:YY)?|([Hhmsw])\1?|[SAaY]|"[^"]*"|'[^']*'/g
1817
1832
  },
1818
1833
 
1819
1834
  error: {
@@ -1053,7 +1053,7 @@ $.fn.dropdown = function(parameters) {
1053
1053
  menuConfig[fields.values] = values;
1054
1054
  module.setup.menu(menuConfig);
1055
1055
  $.each(values, function(index, item) {
1056
- if(item.selected == true) {
1056
+ if(item.selected === true) {
1057
1057
  module.debug('Setting initial selection to', item[fields.value]);
1058
1058
  module.set.selected(item[fields.value]);
1059
1059
  if(!module.is.multiple()) {
@@ -1399,7 +1399,7 @@ $.fn.dropdown = function(parameters) {
1399
1399
  module.remove.userAddition();
1400
1400
  }
1401
1401
  module.remove.searchTerm();
1402
- if(!module.is.focusedOnSearch() && !(skipRefocus == true)) {
1402
+ if(!module.is.focusedOnSearch() && skipRefocus !== true) {
1403
1403
  module.focusSearch(true);
1404
1404
  }
1405
1405
  }
@@ -2651,7 +2651,7 @@ $.fn.dropdown = function(parameters) {
2651
2651
  }
2652
2652
  },
2653
2653
  direction: function($menu) {
2654
- if(settings.direction == 'auto') {
2654
+ if(settings.direction === 'auto') {
2655
2655
  // reset position, remove upward if it's base menu
2656
2656
  if (!$menu) {
2657
2657
  module.remove.upward();
@@ -2670,7 +2670,7 @@ $.fn.dropdown = function(parameters) {
2670
2670
  module.set.leftward($menu);
2671
2671
  }
2672
2672
  }
2673
- else if(settings.direction == 'upward') {
2673
+ else if(settings.direction === 'upward') {
2674
2674
  module.set.upward($menu);
2675
2675
  }
2676
2676
  },
@@ -2683,6 +2683,11 @@ $.fn.dropdown = function(parameters) {
2683
2683
  $element.addClass(className.leftward);
2684
2684
  },
2685
2685
  value: function(value, text, $selected, preventChangeTrigger) {
2686
+ if(typeof text === 'boolean') {
2687
+ preventChangeTrigger = text;
2688
+ $selected = undefined;
2689
+ text = undefined;
2690
+ }
2686
2691
  if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
2687
2692
  $input.removeClass(className.noselection);
2688
2693
  } else {
@@ -2746,12 +2751,21 @@ $.fn.dropdown = function(parameters) {
2746
2751
  visible: function() {
2747
2752
  $module.addClass(className.visible);
2748
2753
  },
2749
- exactly: function(value, $selectedItem) {
2754
+ exactly: function(value, $selectedItem, preventChangeTrigger) {
2755
+ if(typeof $selectedItem === 'boolean') {
2756
+ preventChangeTrigger = $selectedItem;
2757
+ $selectedItem = undefined;
2758
+ }
2750
2759
  module.debug('Setting selected to exact values');
2751
2760
  module.clear();
2752
- module.set.selected(value, $selectedItem);
2761
+ module.set.selected(value, $selectedItem, preventChangeTrigger);
2753
2762
  },
2754
2763
  selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
2764
+ if(typeof $selectedItem === 'boolean') {
2765
+ keepSearchTerm = preventChangeTrigger;
2766
+ preventChangeTrigger = $selectedItem;
2767
+ $selectedItem = undefined;
2768
+ }
2755
2769
  var
2756
2770
  isMultiple = module.is.multiple()
2757
2771
  ;
@@ -2785,7 +2799,7 @@ $.fn.dropdown = function(parameters) {
2785
2799
  isActive = $selected.hasClass(className.active),
2786
2800
  isActionable = $selected.hasClass(className.actionable),
2787
2801
  isUserValue = $selected.hasClass(className.addition),
2788
- shouldAnimate = (isMultiple && $selectedItem.length == 1)
2802
+ shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
2789
2803
  ;
2790
2804
  if(isActionable){
2791
2805
  if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
@@ -2799,14 +2813,14 @@ $.fn.dropdown = function(parameters) {
2799
2813
  module.save.remoteData(selectedText, selectedValue);
2800
2814
  }
2801
2815
  if(settings.useLabels) {
2802
- module.add.value(selectedValue, selectedText, $selected);
2816
+ module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
2803
2817
  module.add.label(selectedValue, selectedText, shouldAnimate);
2804
2818
  module.set.activeItem($selected);
2805
2819
  module.filterActive();
2806
2820
  module.select.nextAvailable($selectedItem);
2807
2821
  }
2808
2822
  else {
2809
- module.add.value(selectedValue, selectedText, $selected);
2823
+ module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
2810
2824
  module.set.text(module.add.variables(message.count));
2811
2825
  module.set.activeItem($selected);
2812
2826
  }
@@ -2995,7 +3009,12 @@ $.fn.dropdown = function(parameters) {
2995
3009
  }
2996
3010
  return message;
2997
3011
  },
2998
- value: function(addedValue, addedText, $selectedItem) {
3012
+ value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
3013
+ if(typeof addedText === 'boolean') {
3014
+ preventChangeTrigger = addedText;
3015
+ $selectedItem = undefined;
3016
+ addedText = undefined;
3017
+ }
2999
3018
  var
3000
3019
  currentValue = module.get.values(true),
3001
3020
  newValue
@@ -3010,7 +3029,7 @@ $.fn.dropdown = function(parameters) {
3010
3029
  }
3011
3030
  // extend current array
3012
3031
  if(Array.isArray(currentValue)) {
3013
- newValue = $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
3032
+ newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
3014
3033
  newValue = module.get.uniqueArray(newValue);
3015
3034
  }
3016
3035
  else {
@@ -3034,7 +3053,7 @@ $.fn.dropdown = function(parameters) {
3034
3053
  else {
3035
3054
  settings.onAdd.call(element, addedValue, addedText, $selectedItem);
3036
3055
  }
3037
- module.set.value(newValue, addedText, $selectedItem);
3056
+ module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
3038
3057
  module.check.maxSelections();
3039
3058
  },
3040
3059
  },
@@ -140,16 +140,12 @@ module.exports = {
140
140
  folder = pathArray[pathArray.length - 2],
141
141
  nextDirectory = path.join(directory, path.sep, '..')
142
142
  ;
143
- if( folder == 'bower_components') {
144
- moduleFolders++;
145
- }
146
- else if(folder == 'node_modules') {
143
+ if(['bower_components', 'node_modules', 'composer'].includes(folder)) {
147
144
  moduleFolders++;
145
+ } else if(folder === '.pnpm') {
146
+ moduleFolders--;
148
147
  }
149
- else if(folder == 'composer') {
150
- moduleFolders++;
151
- }
152
- if(path.resolve(directory) == path.resolve(nextDirectory)) {
148
+ if(path.resolve(directory) === path.resolve(nextDirectory)) {
153
149
  return (moduleFolders > 1);
154
150
  }
155
151
  // recurse downward