fomantic-ui 2.9.1-beta.23 → 2.9.1-beta.25

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 (216) hide show
  1. package/.eslint/eqeqeq-rule.js +18 -0
  2. package/.eslint/index.js +26 -0
  3. package/.eslint/no-extra-parens-rule.js +17 -0
  4. package/.eslint/package.json +11 -0
  5. package/.eslintrc.js +7 -13
  6. package/dist/components/accordion.css +1 -1
  7. package/dist/components/accordion.js +24 -24
  8. package/dist/components/accordion.min.css +1 -1
  9. package/dist/components/accordion.min.js +2 -2
  10. package/dist/components/ad.css +1 -1
  11. package/dist/components/ad.min.css +1 -1
  12. package/dist/components/api.js +58 -58
  13. package/dist/components/api.min.js +2 -2
  14. package/dist/components/breadcrumb.css +1 -1
  15. package/dist/components/breadcrumb.min.css +1 -1
  16. package/dist/components/button.css +1 -1
  17. package/dist/components/button.min.css +1 -1
  18. package/dist/components/calendar.css +1 -1
  19. package/dist/components/calendar.js +84 -72
  20. package/dist/components/calendar.min.css +1 -1
  21. package/dist/components/calendar.min.js +2 -2
  22. package/dist/components/card.css +1 -1
  23. package/dist/components/card.min.css +1 -1
  24. package/dist/components/checkbox.css +1 -1
  25. package/dist/components/checkbox.js +17 -17
  26. package/dist/components/checkbox.min.css +1 -1
  27. package/dist/components/checkbox.min.js +2 -2
  28. package/dist/components/comment.css +1 -1
  29. package/dist/components/comment.min.css +1 -1
  30. package/dist/components/container.css +1 -1
  31. package/dist/components/container.min.css +1 -1
  32. package/dist/components/dimmer.css +1 -1
  33. package/dist/components/dimmer.js +18 -18
  34. package/dist/components/dimmer.min.css +1 -1
  35. package/dist/components/dimmer.min.js +2 -2
  36. package/dist/components/divider.css +1 -1
  37. package/dist/components/divider.min.css +1 -1
  38. package/dist/components/dropdown.css +1 -1
  39. package/dist/components/dropdown.js +264 -254
  40. package/dist/components/dropdown.min.css +1 -1
  41. package/dist/components/dropdown.min.js +2 -2
  42. package/dist/components/embed.css +1 -1
  43. package/dist/components/embed.js +19 -19
  44. package/dist/components/embed.min.css +1 -1
  45. package/dist/components/embed.min.js +2 -2
  46. package/dist/components/feed.css +1 -1
  47. package/dist/components/feed.min.css +1 -1
  48. package/dist/components/flag.css +1 -1
  49. package/dist/components/flag.min.css +1 -1
  50. package/dist/components/flyout.css +1 -1
  51. package/dist/components/flyout.js +29 -25
  52. package/dist/components/flyout.min.css +1 -1
  53. package/dist/components/flyout.min.js +2 -2
  54. package/dist/components/form.css +1 -1
  55. package/dist/components/form.js +158 -141
  56. package/dist/components/form.min.css +1 -1
  57. package/dist/components/form.min.js +2 -2
  58. package/dist/components/grid.css +1 -1
  59. package/dist/components/grid.min.css +1 -1
  60. package/dist/components/header.css +1 -1
  61. package/dist/components/header.min.css +1 -1
  62. package/dist/components/icon.css +1 -1
  63. package/dist/components/icon.min.css +1 -1
  64. package/dist/components/image.css +1 -1
  65. package/dist/components/image.min.css +1 -1
  66. package/dist/components/input.css +1 -1
  67. package/dist/components/input.min.css +1 -1
  68. package/dist/components/item.css +1 -1
  69. package/dist/components/item.min.css +1 -1
  70. package/dist/components/label.css +1 -1
  71. package/dist/components/label.min.css +1 -1
  72. package/dist/components/list.css +1 -1
  73. package/dist/components/list.min.css +1 -1
  74. package/dist/components/loader.css +1 -1
  75. package/dist/components/loader.min.css +1 -1
  76. package/dist/components/message.css +1 -1
  77. package/dist/components/message.min.css +1 -1
  78. package/dist/components/modal.css +1 -1
  79. package/dist/components/modal.js +32 -28
  80. package/dist/components/modal.min.css +1 -1
  81. package/dist/components/modal.min.js +2 -2
  82. package/dist/components/nag.css +1 -1
  83. package/dist/components/nag.js +10 -10
  84. package/dist/components/nag.min.css +1 -1
  85. package/dist/components/nag.min.js +2 -2
  86. package/dist/components/placeholder.css +1 -1
  87. package/dist/components/placeholder.min.css +1 -1
  88. package/dist/components/popup.css +1 -1
  89. package/dist/components/popup.js +79 -71
  90. package/dist/components/popup.min.css +1 -1
  91. package/dist/components/popup.min.js +2 -2
  92. package/dist/components/progress.css +1 -1
  93. package/dist/components/progress.js +40 -42
  94. package/dist/components/progress.min.css +1 -1
  95. package/dist/components/progress.min.js +2 -2
  96. package/dist/components/rail.css +1 -1
  97. package/dist/components/rail.min.css +1 -1
  98. package/dist/components/rating.css +1 -1
  99. package/dist/components/rating.js +13 -13
  100. package/dist/components/rating.min.css +1 -1
  101. package/dist/components/rating.min.js +2 -2
  102. package/dist/components/reset.css +1 -1
  103. package/dist/components/reset.min.css +1 -1
  104. package/dist/components/reveal.css +1 -1
  105. package/dist/components/reveal.min.css +1 -1
  106. package/dist/components/search.css +1 -1
  107. package/dist/components/search.js +42 -42
  108. package/dist/components/search.min.css +1 -1
  109. package/dist/components/search.min.js +2 -2
  110. package/dist/components/segment.css +1 -1
  111. package/dist/components/segment.min.css +1 -1
  112. package/dist/components/shape.css +1 -1
  113. package/dist/components/shape.js +36 -36
  114. package/dist/components/shape.min.css +1 -1
  115. package/dist/components/shape.min.js +2 -2
  116. package/dist/components/sidebar.css +1 -1
  117. package/dist/components/sidebar.js +29 -29
  118. package/dist/components/sidebar.min.css +1 -1
  119. package/dist/components/sidebar.min.js +2 -2
  120. package/dist/components/site.css +1 -1
  121. package/dist/components/site.js +16 -16
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.js +79 -58
  125. package/dist/components/slider.min.js +2 -2
  126. package/dist/components/state.js +14 -14
  127. package/dist/components/state.min.js +2 -2
  128. package/dist/components/statistic.css +1 -1
  129. package/dist/components/statistic.min.css +1 -1
  130. package/dist/components/step.css +1 -1
  131. package/dist/components/step.min.css +1 -1
  132. package/dist/components/sticky.css +1 -1
  133. package/dist/components/sticky.js +25 -25
  134. package/dist/components/sticky.min.css +1 -1
  135. package/dist/components/sticky.min.js +2 -2
  136. package/dist/components/tab.css +1 -1
  137. package/dist/components/tab.js +34 -34
  138. package/dist/components/tab.min.css +1 -1
  139. package/dist/components/tab.min.js +2 -2
  140. package/dist/components/table.css +1 -1
  141. package/dist/components/table.min.css +1 -1
  142. package/dist/components/text.css +1 -1
  143. package/dist/components/text.min.css +1 -1
  144. package/dist/components/toast.css +1 -1
  145. package/dist/components/toast.js +43 -19
  146. package/dist/components/toast.min.css +1 -1
  147. package/dist/components/toast.min.js +2 -2
  148. package/dist/components/transition.css +1 -1
  149. package/dist/components/transition.js +26 -26
  150. package/dist/components/transition.min.css +1 -1
  151. package/dist/components/transition.min.js +2 -2
  152. package/dist/components/visibility.js +29 -29
  153. package/dist/components/visibility.min.js +2 -2
  154. package/dist/semantic.css +50 -50
  155. package/dist/semantic.js +1218 -1120
  156. package/dist/semantic.min.css +1 -1
  157. package/dist/semantic.min.js +2 -2
  158. package/gulpfile.js +1 -1
  159. package/package.json +2 -1
  160. package/scripts/nightly-version.js +3 -1
  161. package/src/definitions/behaviors/api.js +57 -57
  162. package/src/definitions/behaviors/form.js +157 -140
  163. package/src/definitions/behaviors/state.js +13 -13
  164. package/src/definitions/behaviors/visibility.js +28 -28
  165. package/src/definitions/globals/site.js +15 -15
  166. package/src/definitions/modules/accordion.js +23 -23
  167. package/src/definitions/modules/calendar.js +83 -71
  168. package/src/definitions/modules/checkbox.js +16 -16
  169. package/src/definitions/modules/dimmer.js +17 -17
  170. package/src/definitions/modules/dropdown.js +263 -253
  171. package/src/definitions/modules/embed.js +18 -18
  172. package/src/definitions/modules/flyout.js +28 -24
  173. package/src/definitions/modules/modal.js +31 -27
  174. package/src/definitions/modules/nag.js +9 -9
  175. package/src/definitions/modules/popup.js +78 -70
  176. package/src/definitions/modules/progress.js +39 -41
  177. package/src/definitions/modules/rating.js +12 -12
  178. package/src/definitions/modules/search.js +41 -41
  179. package/src/definitions/modules/shape.js +35 -35
  180. package/src/definitions/modules/sidebar.js +28 -28
  181. package/src/definitions/modules/slider.js +78 -57
  182. package/src/definitions/modules/sticky.js +24 -24
  183. package/src/definitions/modules/tab.js +33 -33
  184. package/src/definitions/modules/toast.js +42 -18
  185. package/src/definitions/modules/transition.js +25 -25
  186. package/tasks/admin/components/create.js +1 -1
  187. package/tasks/admin/components/init.js +2 -2
  188. package/tasks/admin/components/update.js +4 -4
  189. package/tasks/admin/distributions/create.js +6 -7
  190. package/tasks/admin/distributions/init.js +2 -2
  191. package/tasks/admin/distributions/update.js +4 -4
  192. package/tasks/admin/publish.js +1 -3
  193. package/tasks/admin/register.js +5 -5
  194. package/tasks/admin/release.js +1 -3
  195. package/tasks/build/assets.js +1 -1
  196. package/tasks/build.js +1 -1
  197. package/tasks/check-install.js +1 -1
  198. package/tasks/clean.js +1 -1
  199. package/tasks/collections/admin.js +1 -1
  200. package/tasks/collections/rtl.js +1 -1
  201. package/tasks/config/admin/github.js +3 -4
  202. package/tasks/config/npm/gulpfile.js +1 -1
  203. package/tasks/config/project/config.js +10 -8
  204. package/tasks/config/project/install.js +14 -14
  205. package/tasks/config/project/release.js +3 -2
  206. package/tasks/config/tasks.js +4 -4
  207. package/tasks/config/user.js +5 -3
  208. package/tasks/docs/build.js +1 -1
  209. package/tasks/docs/metadata.js +2 -2
  210. package/tasks/docs/serve.js +2 -1
  211. package/tasks/install.js +3 -3
  212. package/tasks/rtl/build.js +1 -3
  213. package/tasks/rtl/watch.js +1 -3
  214. package/tasks/version.js +1 -3
  215. package/tasks/watch.js +1 -1
  216. package/test/modules/module.spec.js +1 -1
@@ -15,7 +15,7 @@
15
15
  return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
16
  }
17
17
 
18
- window = (window !== undefined && window.Math === Math)
18
+ window = window !== undefined && window.Math === Math
19
19
  ? window
20
20
  : globalThis;
21
21
 
@@ -30,14 +30,14 @@
30
30
  performance = [],
31
31
 
32
32
  query = arguments[0],
33
- methodInvoked = (typeof query === 'string'),
33
+ methodInvoked = typeof query === 'string',
34
34
  queryArguments = [].slice.call(arguments, 1),
35
35
  returnedValue
36
36
  ;
37
37
 
38
38
  $allModules.each(function (elementIndex) {
39
39
  var
40
- settings = ($.isPlainObject(parameters))
40
+ settings = $.isPlainObject(parameters)
41
41
  ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
42
42
  : $.extend({}, $.fn.dropdown.settings),
43
43
 
@@ -64,13 +64,15 @@
64
64
  $icon = $module.find(selector.icon),
65
65
  $clear = $module.find(selector.clearIcon),
66
66
 
67
- $combo = ($module.prev().find(selector.text).length > 0)
67
+ $combo = $module.prev().find(selector.text).length > 0
68
68
  ? $module.prev().find(selector.text)
69
69
  : $module.prev(),
70
70
 
71
71
  $menu = $module.children(selector.menu),
72
72
  $item = $menu.find(selector.item),
73
- $divider = settings.hideDividers ? $item.parent().children(selector.divider) : $(),
73
+ $divider = settings.hideDividers
74
+ ? $item.parent().children(selector.divider)
75
+ : $(),
74
76
 
75
77
  activated = false,
76
78
  itemActivated = false,
@@ -243,7 +245,7 @@
243
245
  if (settings.hideAdditions) {
244
246
  $userChoice.addClass(className.hidden);
245
247
  }
246
- $userChoices = ($userChoices === undefined)
248
+ $userChoices = $userChoices === undefined
247
249
  ? $userChoice
248
250
  : $userChoices.add($userChoice);
249
251
  module.verbose('Creating user choices for value', value, $userChoice);
@@ -279,7 +281,7 @@
279
281
  },
280
282
 
281
283
  search: function (query) {
282
- query = (query !== undefined)
284
+ query = query !== undefined
283
285
  ? query
284
286
  : module.get.query();
285
287
  module.verbose('Searching for query', query);
@@ -308,7 +310,7 @@
308
310
  var
309
311
  $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),
310
312
  $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),
311
- hasNext = ($nextAvailable.length > 0)
313
+ hasNext = $nextAvailable.length > 0
312
314
  ;
313
315
  if (hasNext) {
314
316
  module.verbose('Moving selection to', $nextAvailable);
@@ -468,7 +470,7 @@
468
470
  $search = $module.find(selector.search);
469
471
  $input = $module.find(selector.input);
470
472
  $icon = $module.find(selector.icon);
471
- $combo = ($module.prev().find(selector.text).length > 0)
473
+ $combo = $module.prev().find(selector.text).length > 0
472
474
  ? $module.prev().find(selector.text)
473
475
  : $module.prev();
474
476
  $menu = $module.children(selector.menu);
@@ -661,12 +663,12 @@
661
663
  ;
662
664
  }
663
665
  } else {
664
- if (settings.on == 'click') {
666
+ if (settings.on === 'click') {
665
667
  $module
666
668
  .on('click' + eventNamespace, selector.icon, module.event.icon.click)
667
669
  .on('click' + eventNamespace, module.event.test.toggle)
668
670
  ;
669
- } else if (settings.on == 'hover') {
671
+ } else if (settings.on === 'hover') {
670
672
  $module
671
673
  .on('mouseenter' + eventNamespace, module.delay.show)
672
674
  .on('mouseleave' + eventNamespace, module.delay.hide)
@@ -720,7 +722,7 @@
720
722
 
721
723
  filter: function (query) {
722
724
  var
723
- searchTerm = (query !== undefined)
725
+ searchTerm = query !== undefined
724
726
  ? query
725
727
  : module.get.query(),
726
728
  afterFiltered = function () {
@@ -959,13 +961,13 @@
959
961
  termLength = term.length,
960
962
  queryLength = query.length
961
963
  ;
962
- query = (settings.ignoreSearchCase ? query.toLowerCase() : query);
963
- term = (settings.ignoreSearchCase ? term.toLowerCase() : term);
964
+ query = settings.ignoreSearchCase ? query.toLowerCase() : query;
965
+ term = settings.ignoreSearchCase ? term.toLowerCase() : term;
964
966
  if (queryLength > termLength) {
965
967
  return false;
966
968
  }
967
969
  if (queryLength === termLength) {
968
- return (query === term);
970
+ return query === term;
969
971
  }
970
972
  for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
971
973
  var
@@ -988,8 +990,8 @@
988
990
  return true;
989
991
  },
990
992
  exactSearch: function (query, term) {
991
- query = (settings.ignoreSearchCase ? query.toLowerCase() : query);
992
- term = (settings.ignoreSearchCase ? term.toLowerCase() : term);
993
+ query = settings.ignoreSearchCase ? query.toLowerCase() : query;
994
+ term = settings.ignoreSearchCase ? term.toLowerCase() : term;
993
995
 
994
996
  return term.indexOf(query) > -1;
995
997
  },
@@ -1023,10 +1025,10 @@
1023
1025
  var
1024
1026
  $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
1025
1027
  $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),
1026
- $selectedItem = ($currentlySelected.length > 0)
1028
+ $selectedItem = $currentlySelected.length > 0
1027
1029
  ? $currentlySelected
1028
1030
  : $activeItem,
1029
- hasSelected = ($selectedItem.length > 0)
1031
+ hasSelected = $selectedItem.length > 0
1030
1032
  ;
1031
1033
  if (settings.allowAdditions || (hasSelected && !module.is.multiple())) {
1032
1034
  module.debug('Forcing partial selection to selected item', $selectedItem);
@@ -1098,7 +1100,7 @@
1098
1100
  }
1099
1101
  },
1100
1102
  blur: function (event) {
1101
- pageLostFocus = (document.activeElement === this);
1103
+ pageLostFocus = document.activeElement === this;
1102
1104
  if (!activated && !pageLostFocus) {
1103
1105
  module.remove.activeLabel();
1104
1106
  module.hide();
@@ -1146,7 +1148,7 @@
1146
1148
  }
1147
1149
  },
1148
1150
  blur: function (event) {
1149
- pageLostFocus = (document.activeElement === this);
1151
+ pageLostFocus = document.activeElement === this;
1150
1152
  if (module.is.searchSelection(true) && !willRefocus) {
1151
1153
  if (!itemActivated && !pageLostFocus) {
1152
1154
  if (settings.forceSelection) {
@@ -1210,7 +1212,7 @@
1210
1212
  $activeLabels = $labels.filter('.' + className.active),
1211
1213
  $nextActive = $label.nextAll('.' + className.active),
1212
1214
  $prevActive = $label.prevAll('.' + className.active),
1213
- $range = ($nextActive.length > 0)
1215
+ $range = $nextActive.length > 0
1214
1216
  ? $label.nextUntil($nextActive).add($activeLabels).add($label)
1215
1217
  : $label.prevUntil($prevActive).add($activeLabels).add($label)
1216
1218
  ;
@@ -1245,7 +1247,7 @@
1245
1247
  test: {
1246
1248
  toggle: function (event) {
1247
1249
  var
1248
- toggleBehavior = (module.is.multiple())
1250
+ toggleBehavior = module.is.multiple()
1249
1251
  ? module.show
1250
1252
  : module.toggle
1251
1253
  ;
@@ -1326,8 +1328,8 @@
1326
1328
  $item = $(this),
1327
1329
  $subMenu = $item.children(selector.menu),
1328
1330
  $otherMenus = $item.siblings(selector.item).children(selector.menu),
1329
- hasSubMenu = ($subMenu.length > 0),
1330
- isBubbledEvent = ($subMenu.find($target).length > 0)
1331
+ hasSubMenu = $subMenu.length > 0,
1332
+ isBubbledEvent = $subMenu.find($target).length > 0
1331
1333
  ;
1332
1334
  if (!isBubbledEvent && hasSubMenu) {
1333
1335
  clearTimeout(module.itemTimer);
@@ -1358,14 +1360,14 @@
1358
1360
  click: function (event, skipRefocus) {
1359
1361
  var
1360
1362
  $choice = $(this),
1361
- $target = (event)
1363
+ $target = event
1362
1364
  ? $(event.target)
1363
1365
  : $(''),
1364
1366
  $subMenu = $choice.find(selector.menu),
1365
1367
  text = module.get.choiceText($choice),
1366
1368
  value = module.get.choiceValue($choice, text),
1367
- hasSubMenu = ($subMenu.length > 0),
1368
- isBubbledEvent = ($subMenu.find($target).length > 0)
1369
+ hasSubMenu = $subMenu.length > 0,
1370
+ isBubbledEvent = $subMenu.find($target).length > 0
1369
1371
  ;
1370
1372
  // prevents IE11 bug where menu receives focus even though `tabindex=-1`
1371
1373
  if (document.activeElement.tagName.toLowerCase() !== 'input') {
@@ -1408,96 +1410,108 @@
1408
1410
  activeValue = $activeLabel.data(metadata.value),
1409
1411
  labelIndex = $label.index($activeLabel),
1410
1412
  labelCount = $label.length,
1411
- hasActiveLabel = ($activeLabel.length > 0),
1412
- hasMultipleActive = ($activeLabel.length > 1),
1413
- isFirstLabel = (labelIndex === 0),
1414
- isLastLabel = (labelIndex + 1 == labelCount),
1413
+ hasActiveLabel = $activeLabel.length > 0,
1414
+ hasMultipleActive = $activeLabel.length > 1,
1415
+ isFirstLabel = labelIndex === 0,
1416
+ isLastLabel = labelIndex + 1 === labelCount,
1415
1417
  isSearch = module.is.searchSelection(),
1416
1418
  isFocusedOnSearch = module.is.focusedOnSearch(),
1417
1419
  isFocused = module.is.focused(),
1418
- caretAtStart = (isFocusedOnSearch && module.get.caretPosition(false) === 0),
1419
- isSelectedSearch = (caretAtStart && module.get.caretPosition(true) !== 0)
1420
+ caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0,
1421
+ isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0
1420
1422
  ;
1421
1423
  if (isSearch && !hasActiveLabel && !isFocusedOnSearch) {
1422
1424
  return;
1423
1425
  }
1424
1426
 
1425
- if (pressedKey == keys.leftArrow) {
1426
- // activate previous label
1427
- if ((isFocused || caretAtStart) && !hasActiveLabel) {
1428
- module.verbose('Selecting previous label');
1429
- $label.last().addClass(className.active);
1430
- } else if (hasActiveLabel) {
1431
- if (!event.shiftKey) {
1427
+ switch (pressedKey) {
1428
+ case keys.leftArrow: {
1429
+ // activate previous label
1430
+ if ((isFocused || caretAtStart) && !hasActiveLabel) {
1432
1431
  module.verbose('Selecting previous label');
1433
- $label.removeClass(className.active);
1434
- } else {
1435
- module.verbose('Adding previous label to selection');
1436
- }
1437
- if (isFirstLabel && !hasMultipleActive) {
1438
- $activeLabel.addClass(className.active);
1439
- } else {
1440
- $activeLabel.prev(selector.siblingLabel)
1441
- .addClass(className.active)
1442
- .end()
1443
- ;
1432
+ $label.last().addClass(className.active);
1433
+ } else if (hasActiveLabel) {
1434
+ if (!event.shiftKey) {
1435
+ module.verbose('Selecting previous label');
1436
+ $label.removeClass(className.active);
1437
+ } else {
1438
+ module.verbose('Adding previous label to selection');
1439
+ }
1440
+ if (isFirstLabel && !hasMultipleActive) {
1441
+ $activeLabel.addClass(className.active);
1442
+ } else {
1443
+ $activeLabel.prev(selector.siblingLabel)
1444
+ .addClass(className.active)
1445
+ .end()
1446
+ ;
1447
+ }
1448
+ event.preventDefault();
1444
1449
  }
1445
- event.preventDefault();
1446
- }
1447
- } else if (pressedKey == keys.rightArrow) {
1448
- // activate first label
1449
- if (isFocused && !hasActiveLabel) {
1450
- $label.first().addClass(className.active);
1450
+
1451
+ break;
1451
1452
  }
1452
- // activate next label
1453
- if (hasActiveLabel) {
1454
- if (!event.shiftKey) {
1455
- module.verbose('Selecting next label');
1456
- $label.removeClass(className.active);
1457
- } else {
1458
- module.verbose('Adding next label to selection');
1453
+ case keys.rightArrow: {
1454
+ // activate first label
1455
+ if (isFocused && !hasActiveLabel) {
1456
+ $label.first().addClass(className.active);
1459
1457
  }
1460
- if (isLastLabel) {
1461
- if (isSearch) {
1462
- if (!isFocusedOnSearch) {
1463
- module.focusSearch();
1458
+ // activate next label
1459
+ if (hasActiveLabel) {
1460
+ if (!event.shiftKey) {
1461
+ module.verbose('Selecting next label');
1462
+ $label.removeClass(className.active);
1463
+ } else {
1464
+ module.verbose('Adding next label to selection');
1465
+ }
1466
+ if (isLastLabel) {
1467
+ if (isSearch) {
1468
+ if (!isFocusedOnSearch) {
1469
+ module.focusSearch();
1470
+ } else {
1471
+ $label.removeClass(className.active);
1472
+ }
1473
+ } else if (hasMultipleActive) {
1474
+ $activeLabel.next(selector.siblingLabel).addClass(className.active);
1464
1475
  } else {
1465
- $label.removeClass(className.active);
1476
+ $activeLabel.addClass(className.active);
1466
1477
  }
1467
- } else if (hasMultipleActive) {
1468
- $activeLabel.next(selector.siblingLabel).addClass(className.active);
1469
1478
  } else {
1470
- $activeLabel.addClass(className.active);
1479
+ $activeLabel.next(selector.siblingLabel).addClass(className.active);
1471
1480
  }
1472
- } else {
1473
- $activeLabel.next(selector.siblingLabel).addClass(className.active);
1481
+ event.preventDefault();
1474
1482
  }
1475
- event.preventDefault();
1483
+
1484
+ break;
1476
1485
  }
1477
- } else if (pressedKey == keys.deleteKey || pressedKey == keys.backspace) {
1478
- if (hasActiveLabel) {
1479
- module.verbose('Removing active labels');
1480
- if (isLastLabel) {
1481
- if (isSearch && !isFocusedOnSearch) {
1482
- module.focusSearch();
1486
+ case keys.deleteKey:
1487
+ case keys.backspace: {
1488
+ if (hasActiveLabel) {
1489
+ module.verbose('Removing active labels');
1490
+ if (isLastLabel) {
1491
+ if (isSearch && !isFocusedOnSearch) {
1492
+ module.focusSearch();
1493
+ }
1494
+ }
1495
+ $activeLabel.last().next(selector.siblingLabel).addClass(className.active);
1496
+ module.remove.activeLabels($activeLabel);
1497
+ if (!module.is.visible()) {
1498
+ module.show();
1499
+ }
1500
+ event.preventDefault();
1501
+ } else if (caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey === keys.backspace) {
1502
+ module.verbose('Removing last label on input backspace');
1503
+ $activeLabel = $label.last().addClass(className.active);
1504
+ module.remove.activeLabels($activeLabel);
1505
+ if (!module.is.visible()) {
1506
+ module.show();
1483
1507
  }
1484
1508
  }
1485
- $activeLabel.last().next(selector.siblingLabel).addClass(className.active);
1486
- module.remove.activeLabels($activeLabel);
1487
- if (!module.is.visible()) {
1488
- module.show();
1489
- }
1490
- event.preventDefault();
1491
- } else if (caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey == keys.backspace) {
1492
- module.verbose('Removing last label on input backspace');
1493
- $activeLabel = $label.last().addClass(className.active);
1494
- module.remove.activeLabels($activeLabel);
1495
- if (!module.is.visible()) {
1496
- module.show();
1497
- }
1509
+
1510
+ break;
1511
+ }
1512
+ default: {
1513
+ $activeLabel.removeClass(className.active);
1498
1514
  }
1499
- } else {
1500
- $activeLabel.removeClass(className.active);
1501
1515
  }
1502
1516
  }
1503
1517
  },
@@ -1512,20 +1526,20 @@
1512
1526
  var
1513
1527
  $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
1514
1528
  $activeItem = $menu.children('.' + className.active).eq(0),
1515
- $selectedItem = ($currentlySelected.length > 0)
1529
+ $selectedItem = $currentlySelected.length > 0
1516
1530
  ? $currentlySelected
1517
1531
  : $activeItem,
1518
- $visibleItems = ($selectedItem.length > 0)
1532
+ $visibleItems = $selectedItem.length > 0
1519
1533
  ? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
1520
1534
  : $menu.children(':not(.' + className.filtered + ')'),
1521
1535
  $subMenu = $selectedItem.children(selector.menu),
1522
1536
  $parentMenu = $selectedItem.closest(selector.menu),
1523
- inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),
1524
- hasSubMenu = ($subMenu.length > 0),
1525
- hasSelectedItem = ($selectedItem.length > 0),
1526
- selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
1527
- delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
1528
- isAdditionWithoutMenu = settings.allowAdditions && (pressedKey == keys.enter || delimiterPressed),
1537
+ inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0,
1538
+ hasSubMenu = $subMenu.length > 0,
1539
+ hasSelectedItem = $selectedItem.length > 0,
1540
+ selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0,
1541
+ delimiterPressed = event.key === settings.delimiter && module.is.multiple(),
1542
+ isAdditionWithoutMenu = settings.allowAdditions && (pressedKey === keys.enter || delimiterPressed),
1529
1543
  $nextItem,
1530
1544
  isSubMenuItem
1531
1545
  ;
@@ -1546,8 +1560,8 @@
1546
1560
  // visible menu keyboard shortcuts
1547
1561
  if (module.is.visible()) {
1548
1562
  // enter (select or open sub-menu)
1549
- if (pressedKey == keys.enter || delimiterPressed) {
1550
- if (pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {
1563
+ if (pressedKey === keys.enter || delimiterPressed) {
1564
+ if (pressedKey === keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {
1551
1565
  module.verbose('Pressed enter on unselectable category, opening sub menu');
1552
1566
  pressedKey = keys.rightArrow;
1553
1567
  } else if (selectedIsSelectable) {
@@ -1565,8 +1579,8 @@
1565
1579
 
1566
1580
  // sub-menu actions
1567
1581
  if (hasSelectedItem) {
1568
- if (pressedKey == keys.leftArrow) {
1569
- isSubMenuItem = ($parentMenu[0] !== $menu[0]);
1582
+ if (pressedKey === keys.leftArrow) {
1583
+ isSubMenuItem = $parentMenu[0] !== $menu[0];
1570
1584
 
1571
1585
  if (isSubMenuItem) {
1572
1586
  module.verbose('Left key pressed, closing sub-menu');
@@ -1583,7 +1597,7 @@
1583
1597
  }
1584
1598
 
1585
1599
  // right arrow (show sub-menu)
1586
- if (pressedKey == keys.rightArrow) {
1600
+ if (pressedKey === keys.rightArrow) {
1587
1601
  if (hasSubMenu) {
1588
1602
  module.verbose('Right key pressed, opening sub-menu');
1589
1603
  module.animate.show(false, $subMenu);
@@ -1600,8 +1614,8 @@
1600
1614
  }
1601
1615
 
1602
1616
  // up arrow (traverse menu up)
1603
- if (pressedKey == keys.upArrow) {
1604
- $nextItem = (hasSelectedItem && inVisibleMenu)
1617
+ if (pressedKey === keys.upArrow) {
1618
+ $nextItem = hasSelectedItem && inVisibleMenu
1605
1619
  ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
1606
1620
  : $item.eq(0);
1607
1621
  if ($visibleItems.index($nextItem) < 0) {
@@ -1627,8 +1641,8 @@
1627
1641
  }
1628
1642
 
1629
1643
  // down arrow (traverse menu down)
1630
- if (pressedKey == keys.downArrow) {
1631
- $nextItem = (hasSelectedItem && inVisibleMenu)
1644
+ if (pressedKey === keys.downArrow) {
1645
+ $nextItem = hasSelectedItem && inVisibleMenu
1632
1646
  ? $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
1633
1647
  : $item.eq(0);
1634
1648
  if ($nextItem.length === 0) {
@@ -1654,28 +1668,28 @@
1654
1668
  }
1655
1669
 
1656
1670
  // page down (show next page)
1657
- if (pressedKey == keys.pageUp) {
1671
+ if (pressedKey === keys.pageUp) {
1658
1672
  module.scrollPage('up');
1659
1673
  event.preventDefault();
1660
1674
  }
1661
- if (pressedKey == keys.pageDown) {
1675
+ if (pressedKey === keys.pageDown) {
1662
1676
  module.scrollPage('down');
1663
1677
  event.preventDefault();
1664
1678
  }
1665
1679
 
1666
1680
  // escape (close menu)
1667
- if (pressedKey == keys.escape) {
1681
+ if (pressedKey === keys.escape) {
1668
1682
  module.verbose('Escape key pressed, closing dropdown');
1669
1683
  module.hide();
1670
1684
  event.stopPropagation();
1671
1685
  }
1672
1686
  } else {
1673
1687
  // delimiter key
1674
- if (pressedKey == keys.enter || delimiterPressed) {
1688
+ if (pressedKey === keys.enter || delimiterPressed) {
1675
1689
  event.preventDefault();
1676
1690
  }
1677
1691
  // down arrow (open menu)
1678
- if (pressedKey == keys.downArrow && !module.is.visible()) {
1692
+ if (pressedKey === keys.downArrow && !module.is.visible()) {
1679
1693
  module.verbose('Down key pressed, showing dropdown');
1680
1694
  module.show();
1681
1695
  event.preventDefault();
@@ -1721,8 +1735,8 @@
1721
1735
  eventInModule: function (event, callback) {
1722
1736
  var
1723
1737
  $target = $(event.target),
1724
- inDocument = ($target.closest(document.documentElement).length > 0),
1725
- inModule = ($target.closest($module).length > 0)
1738
+ inDocument = $target.closest(document.documentElement).length > 0,
1739
+ inModule = $target.closest($module).length > 0
1726
1740
  ;
1727
1741
  callback = isFunction(callback)
1728
1742
  ? callback
@@ -1743,8 +1757,8 @@
1743
1757
  $target = $(event.target),
1744
1758
  $label = $target.closest(selector.siblingLabel),
1745
1759
  inVisibleDOM = document.body.contains(event.target),
1746
- notOnLabel = ($module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels)),
1747
- notInMenu = ($target.closest($menu).length === 0)
1760
+ notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels),
1761
+ notInMenu = $target.closest($menu).length === 0
1748
1762
  ;
1749
1763
  callback = isFunction(callback)
1750
1764
  ? callback
@@ -1767,7 +1781,7 @@
1767
1781
  nothing: function () {},
1768
1782
 
1769
1783
  activate: function (text, value, element) {
1770
- value = (value !== undefined)
1784
+ value = value !== undefined
1771
1785
  ? value
1772
1786
  : text;
1773
1787
  if (module.can.activate($(element))) {
@@ -1779,7 +1793,7 @@
1779
1793
  },
1780
1794
 
1781
1795
  select: function (text, value, element) {
1782
- value = (value !== undefined)
1796
+ value = value !== undefined
1783
1797
  ? value
1784
1798
  : text;
1785
1799
  if (module.can.activate($(element))) {
@@ -1791,7 +1805,7 @@
1791
1805
  },
1792
1806
 
1793
1807
  combo: function (text, value, element) {
1794
- value = (value !== undefined)
1808
+ value = value !== undefined
1795
1809
  ? value
1796
1810
  : text;
1797
1811
  module.set.selected(value, $(element));
@@ -1816,7 +1830,7 @@
1816
1830
  return $module.data(metadata.defaultValue);
1817
1831
  },
1818
1832
  placeholderText: function () {
1819
- if (settings.placeholder != 'auto' && typeof settings.placeholder === 'string') {
1833
+ if (settings.placeholder !== 'auto' && typeof settings.placeholder === 'string') {
1820
1834
  return settings.placeholder;
1821
1835
  }
1822
1836
 
@@ -1829,7 +1843,7 @@
1829
1843
  return String($search.val()).trim();
1830
1844
  },
1831
1845
  searchWidth: function (value) {
1832
- value = (value !== undefined)
1846
+ value = value !== undefined
1833
1847
  ? value
1834
1848
  : $search.val();
1835
1849
  $sizer.text(value);
@@ -1842,21 +1856,15 @@
1842
1856
  values = module.get.values(),
1843
1857
  count
1844
1858
  ;
1845
- count = (module.is.multiple())
1846
- ? Array.isArray(values)
1847
- ? values.length
1848
- : 0
1849
- : (module.get.value() !== '')
1850
- ? 1
1851
- : 0;
1859
+ count = module.is.multiple()
1860
+ ? (Array.isArray(values) ? values.length : 0)
1861
+ : (module.get.value() !== '' ? 1 : 0);
1852
1862
 
1853
1863
  return count;
1854
1864
  },
1855
1865
  transition: function ($subMenu) {
1856
- return (settings.transition === 'auto')
1857
- ? module.is.upward($subMenu)
1858
- ? 'slide up'
1859
- : 'slide down'
1866
+ return settings.transition === 'auto'
1867
+ ? (module.is.upward($subMenu) ? 'slide up' : 'slide down')
1860
1868
  : settings.transition;
1861
1869
  },
1862
1870
  userValues: function () {
@@ -1871,7 +1879,7 @@
1871
1879
  : [values];
1872
1880
 
1873
1881
  return $.grep(values, function (value) {
1874
- return (module.get.item(value) === false);
1882
+ return module.get.item(value) === false;
1875
1883
  });
1876
1884
  },
1877
1885
  uniqueArray: function (array) {
@@ -1905,14 +1913,14 @@
1905
1913
  },
1906
1914
  value: function () {
1907
1915
  var
1908
- value = ($input.length > 0)
1916
+ value = $input.length > 0
1909
1917
  ? $input.val()
1910
1918
  : $module.data(metadata.value),
1911
- isEmptyMultiselect = (Array.isArray(value) && value.length === 1 && value[0] === '')
1919
+ isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === ''
1912
1920
  ;
1913
1921
 
1914
1922
  // prevents placeholder element from being selected when multiple
1915
- return (value === undefined || isEmptyMultiselect)
1923
+ return value === undefined || isEmptyMultiselect
1916
1924
  ? ''
1917
1925
  : value;
1918
1926
  },
@@ -1924,10 +1932,12 @@
1924
1932
  return '';
1925
1933
  }
1926
1934
 
1927
- return (!module.has.selectInput() && module.is.multiple())
1928
- ? (typeof value === 'string') // delimited string
1929
- ? (raw ? value : module.escape.htmlEntities(value)).split(settings.delimiter)
1930
- : ''
1935
+ return !module.has.selectInput() && module.is.multiple()
1936
+ ? (typeof value === 'string' // delimited string
1937
+ ? (raw
1938
+ ? value
1939
+ : module.escape.htmlEntities(value)).split(settings.delimiter)
1940
+ : '')
1931
1941
  : value;
1932
1942
  },
1933
1943
  remoteValues: function () {
@@ -1956,7 +1966,7 @@
1956
1966
  return remoteValues;
1957
1967
  },
1958
1968
  choiceText: function ($choice, preserveHTML) {
1959
- preserveHTML = (preserveHTML !== undefined)
1969
+ preserveHTML = preserveHTML !== undefined
1960
1970
  ? preserveHTML
1961
1971
  : settings.preserveHTML;
1962
1972
  if ($choice) {
@@ -1967,11 +1977,11 @@
1967
1977
  $choice.find(selector.menuIcon).remove();
1968
1978
  }
1969
1979
 
1970
- return ($choice.data(metadata.text) !== undefined)
1980
+ return $choice.data(metadata.text) !== undefined
1971
1981
  ? $choice.data(metadata.text)
1972
- : (preserveHTML)
1982
+ : (preserveHTML
1973
1983
  ? $choice.html() && $choice.html().trim()
1974
- : $choice.text() && $choice.text().trim();
1984
+ : $choice.text() && $choice.text().trim());
1975
1985
  }
1976
1986
  },
1977
1987
  choiceValue: function ($choice, choiceText) {
@@ -1980,26 +1990,26 @@
1980
1990
  return false;
1981
1991
  }
1982
1992
 
1983
- return ($choice.data(metadata.value) !== undefined)
1993
+ return $choice.data(metadata.value) !== undefined
1984
1994
  ? String($choice.data(metadata.value))
1985
- : (typeof choiceText === 'string')
1995
+ : (typeof choiceText === 'string'
1986
1996
  ? String(
1987
1997
  settings.ignoreSearchCase
1988
1998
  ? choiceText.toLowerCase()
1989
1999
  : choiceText
1990
2000
  ).trim()
1991
- : String(choiceText);
2001
+ : String(choiceText));
1992
2002
  },
1993
2003
  inputEvent: function () {
1994
2004
  var
1995
2005
  input = $search[0]
1996
2006
  ;
1997
2007
  if (input) {
1998
- return (input.oninput !== undefined)
2008
+ return input.oninput !== undefined
1999
2009
  ? 'input'
2000
- : (input.onpropertychange !== undefined)
2010
+ : (input.onpropertychange !== undefined
2001
2011
  ? 'propertychange'
2002
- : 'keyup';
2012
+ : 'keyup');
2003
2013
  }
2004
2014
 
2005
2015
  return false;
@@ -2017,10 +2027,10 @@
2017
2027
  $option = $(this),
2018
2028
  name = $option.html(),
2019
2029
  disabled = $option.attr('disabled'),
2020
- value = ($option.attr('value') !== undefined)
2030
+ value = $option.attr('value') !== undefined
2021
2031
  ? $option.attr('value')
2022
2032
  : name,
2023
- text = ($option.data(metadata.text) !== undefined)
2033
+ text = $option.data(metadata.text) !== undefined
2024
2034
  ? $option.data(metadata.text)
2025
2035
  : name,
2026
2036
  group = $option.parent('optgroup')
@@ -2056,7 +2066,7 @@
2056
2066
  });
2057
2067
  } else if (settings.sortSelect === 'natural') {
2058
2068
  values.sort(function (a, b) {
2059
- return (a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
2069
+ return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
2060
2070
  });
2061
2071
  } else if (isFunction(settings.sortSelect)) {
2062
2072
  values.sort(settings.sortSelect);
@@ -2078,7 +2088,7 @@
2078
2088
  $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)
2079
2089
  ;
2080
2090
 
2081
- return ($selectedItem.length > 0)
2091
+ return $selectedItem.length > 0
2082
2092
  ? $selectedItem
2083
2093
  : $item.eq(0);
2084
2094
  },
@@ -2086,10 +2096,10 @@
2086
2096
  var
2087
2097
  $items = module.get.item(value),
2088
2098
  $userItems = module.create.userChoice(value),
2089
- hasUserItems = ($userItems && $userItems.length > 0)
2099
+ hasUserItems = $userItems && $userItems.length > 0
2090
2100
  ;
2091
2101
  if (hasUserItems) {
2092
- $items = ($items.length > 0)
2102
+ $items = $items.length > 0
2093
2103
  ? $items.add($userItems)
2094
2104
  : $userItems;
2095
2105
  }
@@ -2102,16 +2112,16 @@
2102
2112
  shouldSearch,
2103
2113
  isMultiple
2104
2114
  ;
2105
- value = (value !== undefined)
2115
+ value = value !== undefined
2106
2116
  ? value
2107
- : (module.get.values() !== undefined)
2117
+ : (module.get.values() !== undefined
2108
2118
  ? module.get.values()
2109
- : module.get.text();
2110
- isMultiple = (module.is.multiple() && Array.isArray(value));
2111
- shouldSearch = (isMultiple)
2112
- ? (value.length > 0)
2113
- : (value !== undefined && value !== null);
2114
- strict = (value === '' || value === false || value === true)
2119
+ : module.get.text());
2120
+ isMultiple = module.is.multiple() && Array.isArray(value);
2121
+ shouldSearch = isMultiple
2122
+ ? value.length > 0
2123
+ : value !== undefined && value !== null;
2124
+ strict = value === '' || value === false || value === true
2115
2125
  ? true
2116
2126
  : strict || false;
2117
2127
  if (shouldSearch) {
@@ -2128,7 +2138,7 @@
2128
2138
  }
2129
2139
  if (isMultiple) {
2130
2140
  if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(String)) !== -1) {
2131
- $selectedItem = ($selectedItem)
2141
+ $selectedItem = $selectedItem
2132
2142
  ? $selectedItem.add($choice)
2133
2143
  : $choice;
2134
2144
  }
@@ -2165,7 +2175,7 @@
2165
2175
  check: {
2166
2176
  maxSelections: function (selectionCount) {
2167
2177
  if (settings.maxSelections) {
2168
- selectionCount = (selectionCount !== undefined)
2178
+ selectionCount = selectionCount !== undefined
2169
2179
  ? selectionCount
2170
2180
  : module.get.selectionCount();
2171
2181
  if (selectionCount >= settings.maxSelections) {
@@ -2299,7 +2309,7 @@
2299
2309
  }
2300
2310
  name = sessionStorage.getItem(value + elementNamespace);
2301
2311
 
2302
- return (name !== undefined)
2312
+ return name !== undefined
2303
2313
  ? name
2304
2314
  : false;
2305
2315
  },
@@ -2370,7 +2380,7 @@
2370
2380
  currentScroll = $menu.scrollTop(),
2371
2381
  itemHeight = $item.eq(0).outerHeight(),
2372
2382
  itemsPerPage = Math.floor(menuHeight / itemHeight),
2373
- newScroll = (direction == 'up')
2383
+ newScroll = direction === 'up'
2374
2384
  ? currentScroll - (itemHeight * itemsPerPage)
2375
2385
  : currentScroll + (itemHeight * itemsPerPage),
2376
2386
  $selectableItem = $item.not(selector.unselectable),
@@ -2378,17 +2388,17 @@
2378
2388
  $nextSelectedItem,
2379
2389
  elementIndex
2380
2390
  ;
2381
- elementIndex = (direction == 'up')
2391
+ elementIndex = direction === 'up'
2382
2392
  ? $selectableItem.index($currentItem) - itemsPerPage
2383
2393
  : $selectableItem.index($currentItem) + itemsPerPage;
2384
- isWithinRange = (direction == 'up')
2385
- ? (elementIndex >= 0)
2386
- : (elementIndex < $selectableItem.length);
2387
- $nextSelectedItem = (isWithinRange)
2394
+ isWithinRange = direction === 'up'
2395
+ ? elementIndex >= 0
2396
+ : elementIndex < $selectableItem.length;
2397
+ $nextSelectedItem = isWithinRange
2388
2398
  ? $selectableItem.eq(elementIndex)
2389
- : (direction == 'up')
2399
+ : (direction === 'up'
2390
2400
  ? $selectableItem.first()
2391
- : $selectableItem.last();
2401
+ : $selectableItem.last());
2392
2402
  if ($nextSelectedItem.length > 0) {
2393
2403
  module.debug('Scrolling page', direction, $nextSelectedItem);
2394
2404
  $currentItem
@@ -2411,11 +2421,11 @@
2411
2421
  var
2412
2422
  isMultiple = module.is.multiple(),
2413
2423
  isSearch = module.is.searchSelection(),
2414
- isSearchMultiple = (isMultiple && isSearch),
2415
- searchValue = (isSearch)
2424
+ isSearchMultiple = isMultiple && isSearch,
2425
+ searchValue = isSearch
2416
2426
  ? module.get.query()
2417
2427
  : '',
2418
- hasSearchValue = (typeof searchValue === 'string' && searchValue.length > 0),
2428
+ hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0,
2419
2429
  searchWidth = module.get.searchWidth(),
2420
2430
  valueIsSet = searchValue !== ''
2421
2431
  ;
@@ -2499,8 +2509,8 @@
2499
2509
 
2500
2510
  $item = $item || module.get.selectedItem();
2501
2511
  $menu = $item.closest(selector.menu);
2502
- hasActive = ($item && $item.length > 0);
2503
- forceScroll = (forceScroll !== undefined)
2512
+ hasActive = $item && $item.length > 0;
2513
+ forceScroll = forceScroll !== undefined
2504
2514
  ? forceScroll
2505
2515
  : false;
2506
2516
  if (module.get.activeItem().length === 0) {
@@ -2517,7 +2527,7 @@
2517
2527
  if (!forceScroll) {
2518
2528
  menuHeight = $menu.height();
2519
2529
  belowPage = menuScroll + menuHeight < (offset + edgeTolerance);
2520
- abovePage = ((offset - edgeTolerance) < menuScroll);
2530
+ abovePage = (offset - edgeTolerance) < menuScroll;
2521
2531
  }
2522
2532
  module.debug('Scrolling to active item', offset);
2523
2533
  if (forceScroll || abovePage || belowPage) {
@@ -2642,9 +2652,9 @@
2642
2652
  }
2643
2653
  var
2644
2654
  escapedValue = module.escape.value(value),
2645
- hasInput = ($input.length > 0),
2655
+ hasInput = $input.length > 0,
2646
2656
  currentValue = module.get.values(),
2647
- stringValue = (value !== undefined)
2657
+ stringValue = value !== undefined
2648
2658
  ? String(value)
2649
2659
  : value
2650
2660
  ;
@@ -2712,7 +2722,7 @@
2712
2722
  var
2713
2723
  isMultiple = module.is.multiple()
2714
2724
  ;
2715
- $selectedItem = (settings.allowAdditions)
2725
+ $selectedItem = settings.allowAdditions
2716
2726
  ? $selectedItem || module.get.itemWithAdditions(value)
2717
2727
  : $selectedItem || module.get.item(value);
2718
2728
  if (!$selectedItem) {
@@ -2740,7 +2750,7 @@
2740
2750
  isActive = $selected.hasClass(className.active),
2741
2751
  isActionable = $selected.hasClass(className.actionable),
2742
2752
  isUserValue = $selected.hasClass(className.addition),
2743
- shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
2753
+ shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1
2744
2754
  ;
2745
2755
  if (isActionable) {
2746
2756
  if ((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
@@ -2860,7 +2870,7 @@
2860
2870
  var
2861
2871
  escapedValue = module.escape.value(value),
2862
2872
  $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
2863
- hasOption = ($option.length > 0)
2873
+ hasOption = $option.length > 0
2864
2874
  ;
2865
2875
  if (hasOption) {
2866
2876
  return;
@@ -2929,9 +2939,9 @@
2929
2939
  },
2930
2940
  variables: function (message, term) {
2931
2941
  var
2932
- hasCount = (message.search('{count}') !== -1),
2933
- hasMaxCount = (message.search('{maxCount}') !== -1),
2934
- hasTerm = (message.search('{term}') !== -1),
2942
+ hasCount = message.search('{count}') !== -1,
2943
+ hasMaxCount = message.search('{maxCount}') !== -1,
2944
+ hasTerm = message.search('{term}') !== -1,
2935
2945
  query
2936
2946
  ;
2937
2947
  module.verbose('Adding templated variables to message', message);
@@ -3044,7 +3054,7 @@
3044
3054
  var
3045
3055
  escapedValue = module.escape.value(value),
3046
3056
  $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
3047
- hasOption = ($option.length > 0)
3057
+ hasOption = $option.length > 0
3048
3058
  ;
3049
3059
  if (!hasOption || !$option.hasClass(className.addition)) {
3050
3060
  return;
@@ -3070,7 +3080,7 @@
3070
3080
  $item.filter(selector.addition).remove();
3071
3081
  },
3072
3082
  selected: function (value, $selectedItem, preventChangeTrigger) {
3073
- $selectedItem = (settings.allowAdditions)
3083
+ $selectedItem = settings.allowAdditions
3074
3084
  ? $selectedItem || module.get.itemWithAdditions(value)
3075
3085
  : $selectedItem || module.get.item(value);
3076
3086
 
@@ -3140,7 +3150,7 @@
3140
3150
  values = [values];
3141
3151
  }
3142
3152
  values = $.grep(values, function (value) {
3143
- return (removedValue != value);
3153
+ return removedValue != value;
3144
3154
  });
3145
3155
  module.verbose('Removed value from delimited string', removedValue, values);
3146
3156
 
@@ -3168,7 +3178,7 @@
3168
3178
  var
3169
3179
  $label = $(this),
3170
3180
  value = $label.data(metadata.value),
3171
- stringValue = (value !== undefined)
3181
+ stringValue = value !== undefined
3172
3182
  ? String(value)
3173
3183
  : value,
3174
3184
  isUserValue = module.is.userValue(stringValue)
@@ -3215,27 +3225,27 @@
3215
3225
 
3216
3226
  has: {
3217
3227
  menuSearch: function () {
3218
- return (module.has.search() && $search.closest($menu).length > 0);
3228
+ return module.has.search() && $search.closest($menu).length > 0;
3219
3229
  },
3220
3230
  clearItem: function () {
3221
- return ($clear.length > 0);
3231
+ return $clear.length > 0;
3222
3232
  },
3223
3233
  search: function () {
3224
- return ($search.length > 0);
3234
+ return $search.length > 0;
3225
3235
  },
3226
3236
  sizer: function () {
3227
- return ($sizer.length > 0);
3237
+ return $sizer.length > 0;
3228
3238
  },
3229
3239
  selectInput: function () {
3230
- return ($input.is('select'));
3240
+ return $input.is('select');
3231
3241
  },
3232
3242
  minCharacters: function (searchTerm) {
3233
3243
  if (settings.minCharacters && !iconClicked) {
3234
- searchTerm = (searchTerm !== undefined)
3244
+ searchTerm = searchTerm !== undefined
3235
3245
  ? String(searchTerm)
3236
3246
  : String(module.get.query());
3237
3247
 
3238
- return (searchTerm.length >= settings.minCharacters);
3248
+ return searchTerm.length >= settings.minCharacters;
3239
3249
  }
3240
3250
  iconClicked = false;
3241
3251
 
@@ -3253,22 +3263,22 @@
3253
3263
  letter = letter.toLowerCase();
3254
3264
  firstLetter = String(text).charAt(0).toLowerCase();
3255
3265
 
3256
- return (letter == firstLetter);
3266
+ return letter == firstLetter;
3257
3267
  },
3258
3268
  input: function () {
3259
- return ($input.length > 0);
3269
+ return $input.length > 0;
3260
3270
  },
3261
3271
  items: function () {
3262
- return ($item.length > 0);
3272
+ return $item.length > 0;
3263
3273
  },
3264
3274
  menu: function () {
3265
- return ($menu.length > 0);
3275
+ return $menu.length > 0;
3266
3276
  },
3267
3277
  subMenu: function ($currentMenu) {
3268
3278
  return ($currentMenu || $menu).find(selector.menu).length > 0;
3269
3279
  },
3270
3280
  message: function () {
3271
- return ($menu.children(selector.message).length > 0);
3281
+ return $menu.children(selector.message).length > 0;
3272
3282
  },
3273
3283
  label: function (value) {
3274
3284
  var
@@ -3279,26 +3289,26 @@
3279
3289
  escapedValue = escapedValue.toLowerCase();
3280
3290
  }
3281
3291
 
3282
- return ($labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0);
3292
+ return $labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0;
3283
3293
  },
3284
3294
  maxSelections: function () {
3285
- return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections);
3295
+ return settings.maxSelections && module.get.selectionCount() >= settings.maxSelections;
3286
3296
  },
3287
3297
  allResultsFiltered: function () {
3288
3298
  var
3289
3299
  $normalResults = $item.not(selector.addition)
3290
3300
  ;
3291
3301
 
3292
- return ($normalResults.filter(selector.unselectable).length === $normalResults.length);
3302
+ return $normalResults.filter(selector.unselectable).length === $normalResults.length;
3293
3303
  },
3294
3304
  userSuggestion: function () {
3295
- return ($menu.children(selector.addition).length > 0);
3305
+ return $menu.children(selector.addition).length > 0;
3296
3306
  },
3297
3307
  query: function () {
3298
- return (module.get.query() !== '');
3308
+ return module.get.query() !== '';
3299
3309
  },
3300
3310
  value: function (value) {
3301
- return (settings.ignoreCase)
3311
+ return settings.ignoreCase
3302
3312
  ? module.has.valueIgnoringCase(value)
3303
3313
  : module.has.valueMatchingCase(value);
3304
3314
  },
@@ -3307,10 +3317,10 @@
3307
3317
  values = module.get.values(true),
3308
3318
  hasValue = Array.isArray(values)
3309
3319
  ? values && ($.inArray(value, values) !== -1)
3310
- : (values == value)
3320
+ : values == value
3311
3321
  ;
3312
3322
 
3313
- return !!(hasValue);
3323
+ return !!hasValue;
3314
3324
  },
3315
3325
  valueIgnoringCase: function (value) {
3316
3326
  var
@@ -3321,7 +3331,7 @@
3321
3331
  values = [values];
3322
3332
  }
3323
3333
  $.each(values, function (index, existingValue) {
3324
- if (String(value).toLowerCase() == String(existingValue).toLowerCase()) {
3334
+ if (String(value).toLowerCase() === String(existingValue).toLowerCase()) {
3325
3335
  hasValue = true;
3326
3336
 
3327
3337
  return false;
@@ -3358,10 +3368,10 @@
3358
3368
  return !!window.chrome && !window.StyleMedia;
3359
3369
  },
3360
3370
  alreadySetup: function () {
3361
- return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
3371
+ return $module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0;
3362
3372
  },
3363
3373
  animating: function ($subMenu) {
3364
- return ($subMenu)
3374
+ return $subMenu
3365
3375
  ? $subMenu.transition && $subMenu.transition('is animating')
3366
3376
  : $menu.transition && $menu.transition('is animating');
3367
3377
  },
@@ -3371,19 +3381,19 @@
3371
3381
  return $selectedMenu.hasClass(className.leftward);
3372
3382
  },
3373
3383
  clearable: function () {
3374
- return ($module.hasClass(className.clearable) || settings.clearable);
3384
+ return $module.hasClass(className.clearable) || settings.clearable;
3375
3385
  },
3376
3386
  disabled: function () {
3377
3387
  return $module.hasClass(className.disabled);
3378
3388
  },
3379
3389
  focused: function () {
3380
- return (document.activeElement === $module[0]);
3390
+ return document.activeElement === $module[0];
3381
3391
  },
3382
3392
  focusedOnSearch: function () {
3383
- return (document.activeElement === $search[0]);
3393
+ return document.activeElement === $search[0];
3384
3394
  },
3385
3395
  allFiltered: function () {
3386
- return ((module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered());
3396
+ return (module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered();
3387
3397
  },
3388
3398
  hidden: function ($subMenu) {
3389
3399
  return !module.is.visible($subMenu);
@@ -3435,13 +3445,13 @@
3435
3445
  return $module.hasClass(className.search);
3436
3446
  },
3437
3447
  searchSelection: function (deep) {
3438
- return (module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1);
3448
+ return module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1;
3439
3449
  },
3440
3450
  selection: function () {
3441
3451
  return $module.hasClass(className.selection);
3442
3452
  },
3443
3453
  userValue: function (value) {
3444
- return ($.inArray(value, module.get.userValues()) !== -1);
3454
+ return $.inArray(value, module.get.userValues()) !== -1;
3445
3455
  },
3446
3456
  upward: function ($menu) {
3447
3457
  var $element = $menu || $module;
@@ -3449,27 +3459,27 @@
3449
3459
  return $element.hasClass(className.upward);
3450
3460
  },
3451
3461
  visible: function ($subMenu) {
3452
- return ($subMenu)
3462
+ return $subMenu
3453
3463
  ? $subMenu.hasClass(className.visible)
3454
3464
  : $menu.hasClass(className.visible);
3455
3465
  },
3456
3466
  verticallyScrollableContext: function () {
3457
3467
  var
3458
- overflowY = ($context[0] !== window)
3468
+ overflowY = $context[0] !== window
3459
3469
  ? $context.css('overflow-y')
3460
3470
  : false
3461
3471
  ;
3462
3472
 
3463
- return (overflowY == 'auto' || overflowY == 'scroll');
3473
+ return overflowY === 'auto' || overflowY === 'scroll';
3464
3474
  },
3465
3475
  horizontallyScrollableContext: function () {
3466
3476
  var
3467
- overflowX = ($context[0] !== window)
3477
+ overflowX = $context[0] !== window
3468
3478
  ? $context.css('overflow-X')
3469
3479
  : false
3470
3480
  ;
3471
3481
 
3472
- return (overflowX == 'auto' || overflowX == 'scroll');
3482
+ return overflowX === 'auto' || overflowX === 'scroll';
3473
3483
  },
3474
3484
  },
3475
3485
 
@@ -3493,7 +3503,7 @@
3493
3503
  ;
3494
3504
  calculations = {
3495
3505
  context: {
3496
- offset: ($context[0] === window)
3506
+ offset: $context[0] === window
3497
3507
  ? { top: 0, left: 0 }
3498
3508
  : $context.offset(),
3499
3509
  scrollTop: $context.scrollTop(),
@@ -3511,7 +3521,7 @@
3511
3521
  calculations.menu.height += $currentMenu.find(selector.menu).first().outerHeight();
3512
3522
  }
3513
3523
  onScreen = {
3514
- above: (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
3524
+ above: calculations.context.scrollTop <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
3515
3525
  below: (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height,
3516
3526
  };
3517
3527
  if (onScreen.below) {
@@ -3540,7 +3550,7 @@
3540
3550
  ;
3541
3551
  calculations = {
3542
3552
  context: {
3543
- offset: ($context[0] === window)
3553
+ offset: $context[0] === window
3544
3554
  ? { top: 0, left: 0 }
3545
3555
  : $context.offset(),
3546
3556
  scrollLeft: $context.scrollLeft(),
@@ -3554,7 +3564,7 @@
3554
3564
  if (module.is.horizontallyScrollableContext()) {
3555
3565
  calculations.menu.offset.left += calculations.context.scrollLeft;
3556
3566
  }
3557
- isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
3567
+ isOffscreenRight = calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width;
3558
3568
  if (isOffscreenRight) {
3559
3569
  module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
3560
3570
  canOpenRightward = false;
@@ -3578,7 +3588,7 @@
3578
3588
  show: function (callback, $subMenu) {
3579
3589
  var
3580
3590
  $currentMenu = $subMenu || $menu,
3581
- start = ($subMenu)
3591
+ start = $subMenu
3582
3592
  ? function () {}
3583
3593
  : function () {
3584
3594
  module.hideSubMenus();
@@ -3627,7 +3637,7 @@
3627
3637
  hide: function (callback, $subMenu) {
3628
3638
  var
3629
3639
  $currentMenu = $subMenu || $menu,
3630
- start = ($subMenu)
3640
+ start = $subMenu
3631
3641
  ? function () {}
3632
3642
  : function () {
3633
3643
  module.unbind.intent();
@@ -3701,9 +3711,9 @@
3701
3711
  value: function (value) {
3702
3712
  var
3703
3713
  multipleValues = Array.isArray(value),
3704
- stringValue = (typeof value === 'string'),
3705
- isUnparsable = (!stringValue && !multipleValues),
3706
- hasQuotes = (stringValue && value.search(regExp.quote) !== -1),
3714
+ stringValue = typeof value === 'string',
3715
+ isUnparsable = !stringValue && !multipleValues,
3716
+ hasQuotes = stringValue && value.search(regExp.quote) !== -1,
3707
3717
  values = []
3708
3718
  ;
3709
3719
  if (isUnparsable || !hasQuotes) {
@@ -3862,17 +3872,17 @@
3862
3872
  query = query.split(/[ .]/);
3863
3873
  maxDepth = query.length - 1;
3864
3874
  $.each(query, function (depth, value) {
3865
- var camelCaseValue = (depth != maxDepth)
3875
+ var camelCaseValue = depth !== maxDepth
3866
3876
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
3867
3877
  : query
3868
3878
  ;
3869
- if ($.isPlainObject(object[camelCaseValue]) && (depth != maxDepth)) {
3879
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
3870
3880
  object = object[camelCaseValue];
3871
3881
  } else if (object[camelCaseValue] !== undefined) {
3872
3882
  found = object[camelCaseValue];
3873
3883
 
3874
3884
  return false;
3875
- } else if ($.isPlainObject(object[value]) && (depth != maxDepth)) {
3885
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
3876
3886
  object = object[value];
3877
3887
  } else if (object[value] !== undefined) {
3878
3888
  found = object[value];
@@ -3915,7 +3925,7 @@
3915
3925
  }
3916
3926
  });
3917
3927
 
3918
- return (returnedValue !== undefined)
3928
+ return returnedValue !== undefined
3919
3929
  ? returnedValue
3920
3930
  : $allModules;
3921
3931
  };
@@ -4215,19 +4225,19 @@
4215
4225
 
4216
4226
  if (itemType === 'item' || isMenu) {
4217
4227
  var
4218
- maybeText = (option[fields.text])
4228
+ maybeText = option[fields.text]
4219
4229
  ? ' data-text="' + deQuote(option[fields.text], true) + '"'
4220
4230
  : '',
4221
- maybeActionable = (option[fields.actionable])
4231
+ maybeActionable = option[fields.actionable]
4222
4232
  ? className.actionable + ' '
4223
4233
  : '',
4224
- maybeDisabled = (option[fields.disabled])
4234
+ maybeDisabled = option[fields.disabled]
4225
4235
  ? className.disabled + ' '
4226
4236
  : '',
4227
- maybeDescriptionVertical = (option[fields.descriptionVertical])
4237
+ maybeDescriptionVertical = option[fields.descriptionVertical]
4228
4238
  ? className.descriptionVertical + ' '
4229
4239
  : '',
4230
- hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
4240
+ hasDescription = escape(option[fields.description] || '', preserveHTML) !== ''
4231
4241
  ;
4232
4242
  html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + deQuote(option[fields.value], true) + '"' + maybeText + '>';
4233
4243
  if (isMenu) {
@@ -4241,7 +4251,7 @@
4241
4251
  }
4242
4252
  if (hasDescription) {
4243
4253
  html += '<span class="' + deQuote(className.description) + '">' + escape(option[fields.description] || '', preserveHTML) + '</span>';
4244
- html += (!isMenu) ? '<span class="' + deQuote(className.text) + '">' : '';
4254
+ html += !isMenu ? '<span class="' + deQuote(className.text) + '">' : '';
4245
4255
  }
4246
4256
  if (isMenu) {
4247
4257
  html += '<span class="' + deQuote(className.text) + '">';