fomantic-ui 2.9.1-beta.22 → 2.9.1-beta.24

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 (256) hide show
  1. package/.eslint/index.js +23 -0
  2. package/.eslint/no-extra-parens-rule.js +17 -0
  3. package/.eslint/package.json +11 -0
  4. package/.eslintrc.js +13 -70
  5. package/.stylelintrc.js +5 -7
  6. package/dist/components/accordion.css +1 -1
  7. package/dist/components/accordion.js +26 -26
  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 +95 -94
  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 +3 -3
  19. package/dist/components/calendar.js +181 -151
  20. package/dist/components/calendar.min.css +2 -2
  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 +14 -14
  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 +23 -25
  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 +252 -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 +27 -33
  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 +2 -2
  51. package/dist/components/flyout.js +50 -44
  52. package/dist/components/flyout.min.css +1 -1
  53. package/dist/components/flyout.min.js +2 -2
  54. package/dist/components/form.css +2 -2
  55. package/dist/components/form.js +187 -163
  56. package/dist/components/form.min.css +2 -2
  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 +49 -45
  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 +22 -20
  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 +71 -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 +46 -46
  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 +15 -15
  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 +69 -74
  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 +39 -39
  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 +39 -37
  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 +22 -21
  122. package/dist/components/site.min.css +1 -1
  123. package/dist/components/site.min.js +2 -2
  124. package/dist/components/slider.js +69 -64
  125. package/dist/components/slider.min.js +2 -2
  126. package/dist/components/state.js +15 -15
  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 +55 -57
  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 +57 -30
  146. package/dist/components/toast.min.css +1 -1
  147. package/dist/components/toast.min.js +2 -2
  148. package/dist/components/transition.css +7 -7
  149. package/dist/components/transition.js +45 -39
  150. package/dist/components/transition.min.css +1 -1
  151. package/dist/components/transition.min.js +2 -2
  152. package/dist/components/visibility.js +25 -25
  153. package/dist/components/visibility.min.js +2 -2
  154. package/dist/semantic.css +60 -60
  155. package/dist/semantic.js +1518 -1427
  156. package/dist/semantic.min.css +2 -2
  157. package/dist/semantic.min.js +2 -2
  158. package/examples/responsive.html +1 -1
  159. package/gulpfile.js +1 -1
  160. package/package.json +2 -1
  161. package/scripts/nightly-version.js +6 -4
  162. package/src/definitions/behaviors/api.js +94 -93
  163. package/src/definitions/behaviors/form.js +186 -162
  164. package/src/definitions/behaviors/state.js +14 -14
  165. package/src/definitions/behaviors/visibility.js +24 -24
  166. package/src/definitions/collections/menu.less +2 -2
  167. package/src/definitions/elements/button.less +2 -2
  168. package/src/definitions/elements/loader.less +4 -4
  169. package/src/definitions/elements/step.less +1 -1
  170. package/src/definitions/globals/site.js +21 -20
  171. package/src/definitions/modules/accordion.js +25 -25
  172. package/src/definitions/modules/calendar.js +180 -150
  173. package/src/definitions/modules/calendar.less +2 -2
  174. package/src/definitions/modules/checkbox.js +13 -13
  175. package/src/definitions/modules/dimmer.js +22 -24
  176. package/src/definitions/modules/dimmer.less +10 -10
  177. package/src/definitions/modules/dropdown.js +251 -253
  178. package/src/definitions/modules/embed.js +26 -32
  179. package/src/definitions/modules/flyout.js +49 -43
  180. package/src/definitions/modules/flyout.less +1 -1
  181. package/src/definitions/modules/modal.js +48 -44
  182. package/src/definitions/modules/nag.js +21 -19
  183. package/src/definitions/modules/popup.js +70 -70
  184. package/src/definitions/modules/progress.js +45 -45
  185. package/src/definitions/modules/rating.js +14 -14
  186. package/src/definitions/modules/search.js +68 -73
  187. package/src/definitions/modules/shape.js +38 -38
  188. package/src/definitions/modules/sidebar.js +38 -36
  189. package/src/definitions/modules/slider.js +68 -63
  190. package/src/definitions/modules/sticky.js +24 -24
  191. package/src/definitions/modules/tab.js +54 -56
  192. package/src/definitions/modules/toast.js +56 -29
  193. package/src/definitions/modules/transition.js +44 -38
  194. package/src/themes/amazon/elements/button.overrides +7 -7
  195. package/src/themes/default/collections/form.variables +1 -1
  196. package/src/themes/default/elements/reveal.variables +1 -1
  197. package/src/themes/default/globals/site.variables +1 -1
  198. package/src/themes/default/modules/dimmer.variables +6 -6
  199. package/src/themes/default/modules/modal.variables +1 -1
  200. package/src/themes/default/modules/slider.variables +4 -4
  201. package/src/themes/default/modules/toast.variables +2 -2
  202. package/src/themes/default/modules/transition.overrides +12 -12
  203. package/src/themes/flat/collections/form.overrides +2 -2
  204. package/src/themes/flat/globals/site.variables +1 -1
  205. package/src/themes/github/collections/form.overrides +2 -2
  206. package/src/themes/github/collections/menu.variables +1 -1
  207. package/src/themes/github/collections/message.overrides +3 -3
  208. package/src/themes/github/elements/input.overrides +2 -2
  209. package/src/themes/timeline/views/feed.overrides +3 -3
  210. package/src/themes/twitter/elements/button.overrides +2 -2
  211. package/tasks/README.md +1 -3
  212. package/tasks/admin/components/create.js +9 -16
  213. package/tasks/admin/components/init.js +7 -7
  214. package/tasks/admin/components/update.js +10 -10
  215. package/tasks/admin/distributions/create.js +16 -18
  216. package/tasks/admin/distributions/init.js +7 -7
  217. package/tasks/admin/distributions/update.js +10 -10
  218. package/tasks/admin/publish.js +1 -3
  219. package/tasks/admin/register.js +6 -6
  220. package/tasks/admin/release.js +1 -3
  221. package/tasks/build/assets.js +2 -2
  222. package/tasks/build/css.js +8 -3
  223. package/tasks/build/javascript.js +3 -1
  224. package/tasks/build.js +1 -1
  225. package/tasks/check-install.js +1 -1
  226. package/tasks/clean.js +1 -1
  227. package/tasks/collections/README.md +3 -5
  228. package/tasks/collections/admin.js +1 -1
  229. package/tasks/collections/docs.js +1 -1
  230. package/tasks/collections/install.js +1 -1
  231. package/tasks/collections/rtl.js +1 -1
  232. package/tasks/collections/various.js +1 -1
  233. package/tasks/config/admin/github.js +6 -8
  234. package/tasks/config/admin/templates/css-package.js +1 -1
  235. package/tasks/config/admin/templates/less-package.js +1 -1
  236. package/tasks/config/npm/gulpfile.js +7 -7
  237. package/tasks/config/project/config.js +14 -19
  238. package/tasks/config/project/install.js +35 -34
  239. package/tasks/config/project/release.js +15 -16
  240. package/tasks/config/tasks.js +18 -20
  241. package/tasks/config/user.js +5 -3
  242. package/tasks/docs/build.js +5 -3
  243. package/tasks/docs/metadata.js +7 -8
  244. package/tasks/docs/serve.js +6 -3
  245. package/tasks/install.js +39 -39
  246. package/tasks/rtl/build.js +1 -3
  247. package/tasks/rtl/watch.js +1 -3
  248. package/tasks/version.js +1 -3
  249. package/tasks/watch.js +1 -1
  250. package/test/.eslintrc.js +0 -4
  251. package/test/meteor/assets.js +1 -1
  252. package/test/modules/module.spec.js +15 -15
  253. package/test/modules/popup.spec.js +1 -1
  254. package/test/modules/search.spec.js +1 -1
  255. package/test/modules/tab.spec.js +1 -1
  256. package/test/modules/transition.spec.js +1 -1
@@ -15,7 +15,7 @@
15
15
  return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
16
  }
17
17
 
18
- window = (typeof window != 'undefined' && window.Math == Math)
18
+ window = window !== undefined && window.Math === Math
19
19
  ? window
20
20
  : globalThis;
21
21
 
@@ -26,18 +26,18 @@
26
26
 
27
27
  moduleSelector = $allModules.selector || '',
28
28
 
29
- time = new Date().getTime(),
29
+ time = Date.now(),
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);
@@ -361,7 +363,7 @@
361
363
  .addClass(className.search)
362
364
  .prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off')
363
365
  ;
364
- if (labelNode.length) {
366
+ if (labelNode.length > 0) {
365
367
  if (!labelNode.attr('id')) {
366
368
  labelNode.attr('id', '_' + module.get.id() + '_formLabel');
367
369
  }
@@ -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);
@@ -720,14 +722,14 @@
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 () {
727
729
  if (module.is.multiple()) {
728
730
  module.filterActive();
729
731
  }
730
- if (query || (!query && module.get.activeItem().length == 0)) {
732
+ if (query || (!query && module.get.activeItem().length === 0)) {
731
733
  module.select.firstUnfiltered();
732
734
  }
733
735
  if (module.has.allResultsFiltered()) {
@@ -942,7 +944,7 @@
942
944
  // Dividers which are direct siblings are considered a group
943
945
  var $lastDivider = $(this).nextUntil(selector.item);
944
946
 
945
- return ($lastDivider.length ? $lastDivider : $(this))
947
+ return ($lastDivider.length > 0 ? $lastDivider : $(this))
946
948
  // Count all non-filtered items until the next divider (or end of the dropdown)
947
949
  .nextUntil(selector.divider)
948
950
  .filter(selector.item + ':not(.' + className.filtered + ')')
@@ -959,32 +961,37 @@
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
- search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
972
+ for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
971
973
  var
974
+ continueSearch = false,
972
975
  queryCharacter = query.charCodeAt(characterIndex)
973
976
  ;
974
977
  while (nextCharacterIndex < termLength) {
975
978
  if (term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
976
- continue search;
979
+ continueSearch = true;
980
+
981
+ break;
977
982
  }
978
983
  }
979
984
 
980
- return false;
985
+ if (!continueSearch) {
986
+ return false;
987
+ }
981
988
  }
982
989
 
983
990
  return true;
984
991
  },
985
992
  exactSearch: function (query, term) {
986
- query = (settings.ignoreSearchCase ? query.toLowerCase() : query);
987
- term = (settings.ignoreSearchCase ? term.toLowerCase() : term);
993
+ query = settings.ignoreSearchCase ? query.toLowerCase() : query;
994
+ term = settings.ignoreSearchCase ? term.toLowerCase() : term;
988
995
 
989
996
  return term.indexOf(query) > -1;
990
997
  },
@@ -1018,10 +1025,10 @@
1018
1025
  var
1019
1026
  $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
1020
1027
  $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),
1021
- $selectedItem = ($currentlySelected.length > 0)
1028
+ $selectedItem = $currentlySelected.length > 0
1022
1029
  ? $currentlySelected
1023
1030
  : $activeItem,
1024
- hasSelected = ($selectedItem.length > 0)
1031
+ hasSelected = $selectedItem.length > 0
1025
1032
  ;
1026
1033
  if (settings.allowAdditions || (hasSelected && !module.is.multiple())) {
1027
1034
  module.debug('Forcing partial selection to selected item', $selectedItem);
@@ -1093,7 +1100,7 @@
1093
1100
  }
1094
1101
  },
1095
1102
  blur: function (event) {
1096
- pageLostFocus = (document.activeElement === this);
1103
+ pageLostFocus = document.activeElement === this;
1097
1104
  if (!activated && !pageLostFocus) {
1098
1105
  module.remove.activeLabel();
1099
1106
  module.hide();
@@ -1141,7 +1148,7 @@
1141
1148
  }
1142
1149
  },
1143
1150
  blur: function (event) {
1144
- pageLostFocus = (document.activeElement === this);
1151
+ pageLostFocus = document.activeElement === this;
1145
1152
  if (module.is.searchSelection(true) && !willRefocus) {
1146
1153
  if (!itemActivated && !pageLostFocus) {
1147
1154
  if (settings.forceSelection) {
@@ -1205,7 +1212,7 @@
1205
1212
  $activeLabels = $labels.filter('.' + className.active),
1206
1213
  $nextActive = $label.nextAll('.' + className.active),
1207
1214
  $prevActive = $label.prevAll('.' + className.active),
1208
- $range = ($nextActive.length > 0)
1215
+ $range = $nextActive.length > 0
1209
1216
  ? $label.nextUntil($nextActive).add($activeLabels).add($label)
1210
1217
  : $label.prevUntil($prevActive).add($activeLabels).add($label)
1211
1218
  ;
@@ -1240,7 +1247,7 @@
1240
1247
  test: {
1241
1248
  toggle: function (event) {
1242
1249
  var
1243
- toggleBehavior = (module.is.multiple())
1250
+ toggleBehavior = module.is.multiple()
1244
1251
  ? module.show
1245
1252
  : module.toggle
1246
1253
  ;
@@ -1321,8 +1328,8 @@
1321
1328
  $item = $(this),
1322
1329
  $subMenu = $item.children(selector.menu),
1323
1330
  $otherMenus = $item.siblings(selector.item).children(selector.menu),
1324
- hasSubMenu = ($subMenu.length > 0),
1325
- isBubbledEvent = ($subMenu.find($target).length > 0)
1331
+ hasSubMenu = $subMenu.length > 0,
1332
+ isBubbledEvent = $subMenu.find($target).length > 0
1326
1333
  ;
1327
1334
  if (!isBubbledEvent && hasSubMenu) {
1328
1335
  clearTimeout(module.itemTimer);
@@ -1353,14 +1360,14 @@
1353
1360
  click: function (event, skipRefocus) {
1354
1361
  var
1355
1362
  $choice = $(this),
1356
- $target = (event)
1363
+ $target = event
1357
1364
  ? $(event.target)
1358
1365
  : $(''),
1359
1366
  $subMenu = $choice.find(selector.menu),
1360
1367
  text = module.get.choiceText($choice),
1361
1368
  value = module.get.choiceValue($choice, text),
1362
- hasSubMenu = ($subMenu.length > 0),
1363
- isBubbledEvent = ($subMenu.find($target).length > 0)
1369
+ hasSubMenu = $subMenu.length > 0,
1370
+ isBubbledEvent = $subMenu.find($target).length > 0
1364
1371
  ;
1365
1372
  // prevents IE11 bug where menu receives focus even though `tabindex=-1`
1366
1373
  if (document.activeElement.tagName.toLowerCase() !== 'input') {
@@ -1403,15 +1410,15 @@
1403
1410
  activeValue = $activeLabel.data(metadata.value),
1404
1411
  labelIndex = $label.index($activeLabel),
1405
1412
  labelCount = $label.length,
1406
- hasActiveLabel = ($activeLabel.length > 0),
1407
- hasMultipleActive = ($activeLabel.length > 1),
1408
- isFirstLabel = (labelIndex === 0),
1409
- isLastLabel = (labelIndex + 1 == labelCount),
1413
+ hasActiveLabel = $activeLabel.length > 0,
1414
+ hasMultipleActive = $activeLabel.length > 1,
1415
+ isFirstLabel = labelIndex === 0,
1416
+ isLastLabel = labelIndex + 1 == labelCount,
1410
1417
  isSearch = module.is.searchSelection(),
1411
1418
  isFocusedOnSearch = module.is.focusedOnSearch(),
1412
1419
  isFocused = module.is.focused(),
1413
- caretAtStart = (isFocusedOnSearch && module.get.caretPosition(false) === 0),
1414
- isSelectedSearch = (caretAtStart && module.get.caretPosition(true) !== 0)
1420
+ caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0,
1421
+ isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0
1415
1422
  ;
1416
1423
  if (isSearch && !hasActiveLabel && !isFocusedOnSearch) {
1417
1424
  return;
@@ -1507,19 +1514,19 @@
1507
1514
  var
1508
1515
  $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
1509
1516
  $activeItem = $menu.children('.' + className.active).eq(0),
1510
- $selectedItem = ($currentlySelected.length > 0)
1517
+ $selectedItem = $currentlySelected.length > 0
1511
1518
  ? $currentlySelected
1512
1519
  : $activeItem,
1513
- $visibleItems = ($selectedItem.length > 0)
1520
+ $visibleItems = $selectedItem.length > 0
1514
1521
  ? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
1515
1522
  : $menu.children(':not(.' + className.filtered + ')'),
1516
1523
  $subMenu = $selectedItem.children(selector.menu),
1517
1524
  $parentMenu = $selectedItem.closest(selector.menu),
1518
- inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),
1519
- hasSubMenu = ($subMenu.length > 0),
1520
- hasSelectedItem = ($selectedItem.length > 0),
1521
- selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
1522
- delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
1525
+ inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0,
1526
+ hasSubMenu = $subMenu.length > 0,
1527
+ hasSelectedItem = $selectedItem.length > 0,
1528
+ selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0,
1529
+ delimiterPressed = event.key === settings.delimiter && module.is.multiple(),
1523
1530
  isAdditionWithoutMenu = settings.allowAdditions && (pressedKey == keys.enter || delimiterPressed),
1524
1531
  $nextItem,
1525
1532
  isSubMenuItem
@@ -1561,7 +1568,7 @@
1561
1568
  // sub-menu actions
1562
1569
  if (hasSelectedItem) {
1563
1570
  if (pressedKey == keys.leftArrow) {
1564
- isSubMenuItem = ($parentMenu[0] !== $menu[0]);
1571
+ isSubMenuItem = $parentMenu[0] !== $menu[0];
1565
1572
 
1566
1573
  if (isSubMenuItem) {
1567
1574
  module.verbose('Left key pressed, closing sub-menu');
@@ -1596,7 +1603,7 @@
1596
1603
 
1597
1604
  // up arrow (traverse menu up)
1598
1605
  if (pressedKey == keys.upArrow) {
1599
- $nextItem = (hasSelectedItem && inVisibleMenu)
1606
+ $nextItem = hasSelectedItem && inVisibleMenu
1600
1607
  ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
1601
1608
  : $item.eq(0);
1602
1609
  if ($visibleItems.index($nextItem) < 0) {
@@ -1604,25 +1611,26 @@
1604
1611
  event.preventDefault();
1605
1612
 
1606
1613
  return;
1607
- } else {
1608
- module.verbose('Up key pressed, changing active item');
1609
- $selectedItem
1610
- .removeClass(className.selected)
1611
- ;
1612
- $nextItem
1613
- .addClass(className.selected)
1614
- ;
1615
- module.set.scrollPosition($nextItem);
1616
- if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1617
- module.set.selectedItem($nextItem);
1618
- }
1619
1614
  }
1615
+
1616
+ module.verbose('Up key pressed, changing active item');
1617
+ $selectedItem
1618
+ .removeClass(className.selected)
1619
+ ;
1620
+ $nextItem
1621
+ .addClass(className.selected)
1622
+ ;
1623
+ module.set.scrollPosition($nextItem);
1624
+ if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1625
+ module.set.selectedItem($nextItem);
1626
+ }
1627
+
1620
1628
  event.preventDefault();
1621
1629
  }
1622
1630
 
1623
1631
  // down arrow (traverse menu down)
1624
1632
  if (pressedKey == keys.downArrow) {
1625
- $nextItem = (hasSelectedItem && inVisibleMenu)
1633
+ $nextItem = hasSelectedItem && inVisibleMenu
1626
1634
  ? $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
1627
1635
  : $item.eq(0);
1628
1636
  if ($nextItem.length === 0) {
@@ -1630,19 +1638,20 @@
1630
1638
  event.preventDefault();
1631
1639
 
1632
1640
  return;
1633
- } else {
1634
- module.verbose('Down key pressed, changing active item');
1635
- $item
1636
- .removeClass(className.selected)
1637
- ;
1638
- $nextItem
1639
- .addClass(className.selected)
1640
- ;
1641
- module.set.scrollPosition($nextItem);
1642
- if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1643
- module.set.selectedItem($nextItem);
1644
- }
1645
1641
  }
1642
+
1643
+ module.verbose('Down key pressed, changing active item');
1644
+ $item
1645
+ .removeClass(className.selected)
1646
+ ;
1647
+ $nextItem
1648
+ .addClass(className.selected)
1649
+ ;
1650
+ module.set.scrollPosition($nextItem);
1651
+ if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1652
+ module.set.selectedItem($nextItem);
1653
+ }
1654
+
1646
1655
  event.preventDefault();
1647
1656
  }
1648
1657
 
@@ -1714,8 +1723,8 @@
1714
1723
  eventInModule: function (event, callback) {
1715
1724
  var
1716
1725
  $target = $(event.target),
1717
- inDocument = ($target.closest(document.documentElement).length > 0),
1718
- inModule = ($target.closest($module).length > 0)
1726
+ inDocument = $target.closest(document.documentElement).length > 0,
1727
+ inModule = $target.closest($module).length > 0
1719
1728
  ;
1720
1729
  callback = isFunction(callback)
1721
1730
  ? callback
@@ -1725,19 +1734,19 @@
1725
1734
  callback();
1726
1735
 
1727
1736
  return true;
1728
- } else {
1729
- module.verbose('Event occurred in dropdown, canceling callback');
1730
-
1731
- return false;
1732
1737
  }
1738
+
1739
+ module.verbose('Event occurred in dropdown, canceling callback');
1740
+
1741
+ return false;
1733
1742
  },
1734
1743
  eventOnElement: function (event, callback) {
1735
1744
  var
1736
1745
  $target = $(event.target),
1737
1746
  $label = $target.closest(selector.siblingLabel),
1738
1747
  inVisibleDOM = document.body.contains(event.target),
1739
- notOnLabel = ($module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels)),
1740
- notInMenu = ($target.closest($menu).length === 0)
1748
+ notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels),
1749
+ notInMenu = $target.closest($menu).length === 0
1741
1750
  ;
1742
1751
  callback = isFunction(callback)
1743
1752
  ? callback
@@ -1747,11 +1756,11 @@
1747
1756
  callback();
1748
1757
 
1749
1758
  return true;
1750
- } else {
1751
- module.verbose('Event occurred in dropdown menu, canceling callback');
1752
-
1753
- return false;
1754
1759
  }
1760
+
1761
+ module.verbose('Event occurred in dropdown menu, canceling callback');
1762
+
1763
+ return false;
1755
1764
  },
1756
1765
  },
1757
1766
 
@@ -1760,7 +1769,7 @@
1760
1769
  nothing: function () {},
1761
1770
 
1762
1771
  activate: function (text, value, element) {
1763
- value = (value !== undefined)
1772
+ value = value !== undefined
1764
1773
  ? value
1765
1774
  : text;
1766
1775
  if (module.can.activate($(element))) {
@@ -1772,7 +1781,7 @@
1772
1781
  },
1773
1782
 
1774
1783
  select: function (text, value, element) {
1775
- value = (value !== undefined)
1784
+ value = value !== undefined
1776
1785
  ? value
1777
1786
  : text;
1778
1787
  if (module.can.activate($(element))) {
@@ -1784,7 +1793,7 @@
1784
1793
  },
1785
1794
 
1786
1795
  combo: function (text, value, element) {
1787
- value = (value !== undefined)
1796
+ value = value !== undefined
1788
1797
  ? value
1789
1798
  : text;
1790
1799
  module.set.selected(value, $(element));
@@ -1809,7 +1818,7 @@
1809
1818
  return $module.data(metadata.defaultValue);
1810
1819
  },
1811
1820
  placeholderText: function () {
1812
- if (settings.placeholder != 'auto' && typeof settings.placeholder == 'string') {
1821
+ if (settings.placeholder != 'auto' && typeof settings.placeholder === 'string') {
1813
1822
  return settings.placeholder;
1814
1823
  }
1815
1824
 
@@ -1822,7 +1831,7 @@
1822
1831
  return String($search.val()).trim();
1823
1832
  },
1824
1833
  searchWidth: function (value) {
1825
- value = (value !== undefined)
1834
+ value = value !== undefined
1826
1835
  ? value
1827
1836
  : $search.val();
1828
1837
  $sizer.text(value);
@@ -1835,21 +1844,15 @@
1835
1844
  values = module.get.values(),
1836
1845
  count
1837
1846
  ;
1838
- count = (module.is.multiple())
1839
- ? Array.isArray(values)
1840
- ? values.length
1841
- : 0
1842
- : (module.get.value() !== '')
1843
- ? 1
1844
- : 0;
1847
+ count = module.is.multiple()
1848
+ ? (Array.isArray(values) ? values.length : 0)
1849
+ : (module.get.value() !== '' ? 1 : 0);
1845
1850
 
1846
1851
  return count;
1847
1852
  },
1848
1853
  transition: function ($subMenu) {
1849
- return (settings.transition === 'auto')
1850
- ? module.is.upward($subMenu)
1851
- ? 'slide up'
1852
- : 'slide down'
1854
+ return settings.transition === 'auto'
1855
+ ? (module.is.upward($subMenu) ? 'slide up' : 'slide down')
1853
1856
  : settings.transition;
1854
1857
  },
1855
1858
  userValues: function () {
@@ -1864,7 +1867,7 @@
1864
1867
  : [values];
1865
1868
 
1866
1869
  return $.grep(values, function (value) {
1867
- return (module.get.item(value) === false);
1870
+ return module.get.item(value) === false;
1868
1871
  });
1869
1872
  },
1870
1873
  uniqueArray: function (array) {
@@ -1880,7 +1883,8 @@
1880
1883
  ;
1881
1884
  if (returnEndPos && 'selectionEnd' in input) {
1882
1885
  return input.selectionEnd;
1883
- } else if (!returnEndPos && 'selectionStart' in input) {
1886
+ }
1887
+ if (!returnEndPos && 'selectionStart' in input) {
1884
1888
  return input.selectionStart;
1885
1889
  }
1886
1890
  if (document.selection) {
@@ -1897,14 +1901,14 @@
1897
1901
  },
1898
1902
  value: function () {
1899
1903
  var
1900
- value = ($input.length > 0)
1904
+ value = $input.length > 0
1901
1905
  ? $input.val()
1902
1906
  : $module.data(metadata.value),
1903
- isEmptyMultiselect = (Array.isArray(value) && value.length === 1 && value[0] === '')
1907
+ isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === ''
1904
1908
  ;
1905
1909
 
1906
1910
  // prevents placeholder element from being selected when multiple
1907
- return (value === undefined || isEmptyMultiselect)
1911
+ return value === undefined || isEmptyMultiselect
1908
1912
  ? ''
1909
1913
  : value;
1910
1914
  },
@@ -1916,10 +1920,12 @@
1916
1920
  return '';
1917
1921
  }
1918
1922
 
1919
- return (!module.has.selectInput() && module.is.multiple())
1920
- ? (typeof value == 'string') // delimited string
1921
- ? (raw ? value : module.escape.htmlEntities(value)).split(settings.delimiter)
1922
- : ''
1923
+ return !module.has.selectInput() && module.is.multiple()
1924
+ ? (typeof value === 'string' // delimited string
1925
+ ? (raw
1926
+ ? value
1927
+ : module.escape.htmlEntities(value)).split(settings.delimiter)
1928
+ : '')
1923
1929
  : value;
1924
1930
  },
1925
1931
  remoteValues: function () {
@@ -1928,7 +1934,7 @@
1928
1934
  remoteValues = false
1929
1935
  ;
1930
1936
  if (values) {
1931
- if (typeof values == 'string') {
1937
+ if (typeof values === 'string') {
1932
1938
  values = [values];
1933
1939
  }
1934
1940
  $.each(values, function (index, value) {
@@ -1948,7 +1954,7 @@
1948
1954
  return remoteValues;
1949
1955
  },
1950
1956
  choiceText: function ($choice, preserveHTML) {
1951
- preserveHTML = (preserveHTML !== undefined)
1957
+ preserveHTML = preserveHTML !== undefined
1952
1958
  ? preserveHTML
1953
1959
  : settings.preserveHTML;
1954
1960
  if ($choice) {
@@ -1959,11 +1965,11 @@
1959
1965
  $choice.find(selector.menuIcon).remove();
1960
1966
  }
1961
1967
 
1962
- return ($choice.data(metadata.text) !== undefined)
1968
+ return $choice.data(metadata.text) !== undefined
1963
1969
  ? $choice.data(metadata.text)
1964
- : (preserveHTML)
1970
+ : (preserveHTML
1965
1971
  ? $choice.html() && $choice.html().trim()
1966
- : $choice.text() && $choice.text().trim();
1972
+ : $choice.text() && $choice.text().trim());
1967
1973
  }
1968
1974
  },
1969
1975
  choiceValue: function ($choice, choiceText) {
@@ -1972,26 +1978,26 @@
1972
1978
  return false;
1973
1979
  }
1974
1980
 
1975
- return ($choice.data(metadata.value) !== undefined)
1981
+ return $choice.data(metadata.value) !== undefined
1976
1982
  ? String($choice.data(metadata.value))
1977
- : (typeof choiceText === 'string')
1983
+ : (typeof choiceText === 'string'
1978
1984
  ? String(
1979
1985
  settings.ignoreSearchCase
1980
1986
  ? choiceText.toLowerCase()
1981
1987
  : choiceText
1982
1988
  ).trim()
1983
- : String(choiceText);
1989
+ : String(choiceText));
1984
1990
  },
1985
1991
  inputEvent: function () {
1986
1992
  var
1987
1993
  input = $search[0]
1988
1994
  ;
1989
1995
  if (input) {
1990
- return (input.oninput !== undefined)
1996
+ return input.oninput !== undefined
1991
1997
  ? 'input'
1992
- : (input.onpropertychange !== undefined)
1998
+ : (input.onpropertychange !== undefined
1993
1999
  ? 'propertychange'
1994
- : 'keyup';
2000
+ : 'keyup');
1995
2001
  }
1996
2002
 
1997
2003
  return false;
@@ -2009,10 +2015,10 @@
2009
2015
  $option = $(this),
2010
2016
  name = $option.html(),
2011
2017
  disabled = $option.attr('disabled'),
2012
- value = ($option.attr('value') !== undefined)
2018
+ value = $option.attr('value') !== undefined
2013
2019
  ? $option.attr('value')
2014
2020
  : name,
2015
- text = ($option.data(metadata.text) !== undefined)
2021
+ text = $option.data(metadata.text) !== undefined
2016
2022
  ? $option.data(metadata.text)
2017
2023
  : name,
2018
2024
  group = $option.parent('optgroup')
@@ -2048,7 +2054,7 @@
2048
2054
  });
2049
2055
  } else if (settings.sortSelect === 'natural') {
2050
2056
  values.sort(function (a, b) {
2051
- return (a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
2057
+ return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
2052
2058
  });
2053
2059
  } else if (isFunction(settings.sortSelect)) {
2054
2060
  values.sort(settings.sortSelect);
@@ -2070,7 +2076,7 @@
2070
2076
  $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)
2071
2077
  ;
2072
2078
 
2073
- return ($selectedItem.length > 0)
2079
+ return $selectedItem.length > 0
2074
2080
  ? $selectedItem
2075
2081
  : $item.eq(0);
2076
2082
  },
@@ -2078,10 +2084,10 @@
2078
2084
  var
2079
2085
  $items = module.get.item(value),
2080
2086
  $userItems = module.create.userChoice(value),
2081
- hasUserItems = ($userItems && $userItems.length > 0)
2087
+ hasUserItems = $userItems && $userItems.length > 0
2082
2088
  ;
2083
2089
  if (hasUserItems) {
2084
- $items = ($items.length > 0)
2090
+ $items = $items.length > 0
2085
2091
  ? $items.add($userItems)
2086
2092
  : $userItems;
2087
2093
  }
@@ -2094,16 +2100,16 @@
2094
2100
  shouldSearch,
2095
2101
  isMultiple
2096
2102
  ;
2097
- value = (value !== undefined)
2103
+ value = value !== undefined
2098
2104
  ? value
2099
- : (module.get.values() !== undefined)
2105
+ : (module.get.values() !== undefined
2100
2106
  ? module.get.values()
2101
- : module.get.text();
2102
- isMultiple = (module.is.multiple() && Array.isArray(value));
2103
- shouldSearch = (isMultiple)
2104
- ? (value.length > 0)
2105
- : (value !== undefined && value !== null);
2106
- strict = (value === '' || value === false || value === true)
2107
+ : module.get.text());
2108
+ isMultiple = module.is.multiple() && Array.isArray(value);
2109
+ shouldSearch = isMultiple
2110
+ ? value.length > 0
2111
+ : value !== undefined && value !== null;
2112
+ strict = value === '' || value === false || value === true
2107
2113
  ? true
2108
2114
  : strict || false;
2109
2115
  if (shouldSearch) {
@@ -2119,10 +2125,8 @@
2119
2125
  return;
2120
2126
  }
2121
2127
  if (isMultiple) {
2122
- if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(function (v) {
2123
- return String(v);
2124
- })) !== -1) {
2125
- $selectedItem = ($selectedItem)
2128
+ if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(String)) !== -1) {
2129
+ $selectedItem = $selectedItem
2126
2130
  ? $selectedItem.add($choice)
2127
2131
  : $choice;
2128
2132
  }
@@ -2159,7 +2163,7 @@
2159
2163
  check: {
2160
2164
  maxSelections: function (selectionCount) {
2161
2165
  if (settings.maxSelections) {
2162
- selectionCount = (selectionCount !== undefined)
2166
+ selectionCount = selectionCount !== undefined
2163
2167
  ? selectionCount
2164
2168
  : module.get.selectionCount();
2165
2169
  if (selectionCount >= settings.maxSelections) {
@@ -2170,16 +2174,16 @@
2170
2174
  }
2171
2175
 
2172
2176
  return true;
2173
- } else {
2174
- module.verbose('No longer at maximum selection count');
2175
- module.remove.message();
2176
- module.remove.filteredItem();
2177
- if (module.is.searchSelection()) {
2178
- module.filterItems();
2179
- }
2177
+ }
2180
2178
 
2181
- return false;
2179
+ module.verbose('No longer at maximum selection count');
2180
+ module.remove.message();
2181
+ module.remove.filteredItem();
2182
+ if (module.is.searchSelection()) {
2183
+ module.filterItems();
2182
2184
  }
2185
+
2186
+ return false;
2183
2187
  }
2184
2188
 
2185
2189
  return true;
@@ -2293,7 +2297,7 @@
2293
2297
  }
2294
2298
  name = sessionStorage.getItem(value + elementNamespace);
2295
2299
 
2296
- return (name !== undefined)
2300
+ return name !== undefined
2297
2301
  ? name
2298
2302
  : false;
2299
2303
  },
@@ -2364,7 +2368,7 @@
2364
2368
  currentScroll = $menu.scrollTop(),
2365
2369
  itemHeight = $item.eq(0).outerHeight(),
2366
2370
  itemsPerPage = Math.floor(menuHeight / itemHeight),
2367
- newScroll = (direction == 'up')
2371
+ newScroll = direction == 'up'
2368
2372
  ? currentScroll - (itemHeight * itemsPerPage)
2369
2373
  : currentScroll + (itemHeight * itemsPerPage),
2370
2374
  $selectableItem = $item.not(selector.unselectable),
@@ -2372,17 +2376,17 @@
2372
2376
  $nextSelectedItem,
2373
2377
  elementIndex
2374
2378
  ;
2375
- elementIndex = (direction == 'up')
2379
+ elementIndex = direction == 'up'
2376
2380
  ? $selectableItem.index($currentItem) - itemsPerPage
2377
2381
  : $selectableItem.index($currentItem) + itemsPerPage;
2378
- isWithinRange = (direction == 'up')
2379
- ? (elementIndex >= 0)
2380
- : (elementIndex < $selectableItem.length);
2381
- $nextSelectedItem = (isWithinRange)
2382
+ isWithinRange = direction == 'up'
2383
+ ? elementIndex >= 0
2384
+ : elementIndex < $selectableItem.length;
2385
+ $nextSelectedItem = isWithinRange
2382
2386
  ? $selectableItem.eq(elementIndex)
2383
- : (direction == 'up')
2387
+ : (direction == 'up'
2384
2388
  ? $selectableItem.first()
2385
- : $selectableItem.last();
2389
+ : $selectableItem.last());
2386
2390
  if ($nextSelectedItem.length > 0) {
2387
2391
  module.debug('Scrolling page', direction, $nextSelectedItem);
2388
2392
  $currentItem
@@ -2405,11 +2409,11 @@
2405
2409
  var
2406
2410
  isMultiple = module.is.multiple(),
2407
2411
  isSearch = module.is.searchSelection(),
2408
- isSearchMultiple = (isMultiple && isSearch),
2409
- searchValue = (isSearch)
2412
+ isSearchMultiple = isMultiple && isSearch,
2413
+ searchValue = isSearch
2410
2414
  ? module.get.query()
2411
2415
  : '',
2412
- hasSearchValue = (typeof searchValue === 'string' && searchValue.length > 0),
2416
+ hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0,
2413
2417
  searchWidth = module.get.searchWidth(),
2414
2418
  valueIsSet = searchValue !== ''
2415
2419
  ;
@@ -2493,8 +2497,8 @@
2493
2497
 
2494
2498
  $item = $item || module.get.selectedItem();
2495
2499
  $menu = $item.closest(selector.menu);
2496
- hasActive = ($item && $item.length > 0);
2497
- forceScroll = (forceScroll !== undefined)
2500
+ hasActive = $item && $item.length > 0;
2501
+ forceScroll = forceScroll !== undefined
2498
2502
  ? forceScroll
2499
2503
  : false;
2500
2504
  if (module.get.activeItem().length === 0) {
@@ -2511,7 +2515,7 @@
2511
2515
  if (!forceScroll) {
2512
2516
  menuHeight = $menu.height();
2513
2517
  belowPage = menuScroll + menuHeight < (offset + edgeTolerance);
2514
- abovePage = ((offset - edgeTolerance) < menuScroll);
2518
+ abovePage = (offset - edgeTolerance) < menuScroll;
2515
2519
  }
2516
2520
  module.debug('Scrolling to active item', offset);
2517
2521
  if (forceScroll || abovePage || belowPage) {
@@ -2636,9 +2640,9 @@
2636
2640
  }
2637
2641
  var
2638
2642
  escapedValue = module.escape.value(value),
2639
- hasInput = ($input.length > 0),
2643
+ hasInput = $input.length > 0,
2640
2644
  currentValue = module.get.values(),
2641
- stringValue = (value !== undefined)
2645
+ stringValue = value !== undefined
2642
2646
  ? String(value)
2643
2647
  : value
2644
2648
  ;
@@ -2706,7 +2710,7 @@
2706
2710
  var
2707
2711
  isMultiple = module.is.multiple()
2708
2712
  ;
2709
- $selectedItem = (settings.allowAdditions)
2713
+ $selectedItem = settings.allowAdditions
2710
2714
  ? $selectedItem || module.get.itemWithAdditions(value)
2711
2715
  : $selectedItem || module.get.item(value);
2712
2716
  if (!$selectedItem) {
@@ -2734,7 +2738,7 @@
2734
2738
  isActive = $selected.hasClass(className.active),
2735
2739
  isActionable = $selected.hasClass(className.actionable),
2736
2740
  isUserValue = $selected.hasClass(className.addition),
2737
- shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
2741
+ shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1
2738
2742
  ;
2739
2743
  if (isActionable) {
2740
2744
  if ((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
@@ -2854,7 +2858,7 @@
2854
2858
  var
2855
2859
  escapedValue = module.escape.value(value),
2856
2860
  $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
2857
- hasOption = ($option.length > 0)
2861
+ hasOption = $option.length > 0
2858
2862
  ;
2859
2863
  if (hasOption) {
2860
2864
  return;
@@ -2878,7 +2882,7 @@
2878
2882
  var
2879
2883
  $addition = $menu.children(selector.addition),
2880
2884
  $existingItem = module.get.item(value),
2881
- alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length,
2885
+ alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length > 0,
2882
2886
  hasUserSuggestion = $addition.length > 0,
2883
2887
  html
2884
2888
  ;
@@ -2923,9 +2927,9 @@
2923
2927
  },
2924
2928
  variables: function (message, term) {
2925
2929
  var
2926
- hasCount = (message.search('{count}') !== -1),
2927
- hasMaxCount = (message.search('{maxCount}') !== -1),
2928
- hasTerm = (message.search('{term}') !== -1),
2930
+ hasCount = message.search('{count}') !== -1,
2931
+ hasMaxCount = message.search('{maxCount}') !== -1,
2932
+ hasTerm = message.search('{term}') !== -1,
2929
2933
  query
2930
2934
  ;
2931
2935
  module.verbose('Adding templated variables to message', message);
@@ -3038,7 +3042,7 @@
3038
3042
  var
3039
3043
  escapedValue = module.escape.value(value),
3040
3044
  $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
3041
- hasOption = ($option.length > 0)
3045
+ hasOption = $option.length > 0
3042
3046
  ;
3043
3047
  if (!hasOption || !$option.hasClass(className.addition)) {
3044
3048
  return;
@@ -3064,7 +3068,7 @@
3064
3068
  $item.filter(selector.addition).remove();
3065
3069
  },
3066
3070
  selected: function (value, $selectedItem, preventChangeTrigger) {
3067
- $selectedItem = (settings.allowAdditions)
3071
+ $selectedItem = settings.allowAdditions
3068
3072
  ? $selectedItem || module.get.itemWithAdditions(value)
3069
3073
  : $selectedItem || module.get.item(value);
3070
3074
 
@@ -3134,7 +3138,7 @@
3134
3138
  values = [values];
3135
3139
  }
3136
3140
  values = $.grep(values, function (value) {
3137
- return (removedValue != value);
3141
+ return removedValue != value;
3138
3142
  });
3139
3143
  module.verbose('Removed value from delimited string', removedValue, values);
3140
3144
 
@@ -3162,7 +3166,7 @@
3162
3166
  var
3163
3167
  $label = $(this),
3164
3168
  value = $label.data(metadata.value),
3165
- stringValue = (value !== undefined)
3169
+ stringValue = value !== undefined
3166
3170
  ? String(value)
3167
3171
  : value,
3168
3172
  isUserValue = module.is.userValue(stringValue)
@@ -3203,33 +3207,33 @@
3203
3207
  }
3204
3208
  },
3205
3209
  diacritics: function (text) {
3206
- return settings.ignoreDiacritics ? text.normalize('NFD').replace(/[\u0300-\u036f]/g, '') : text;
3210
+ return settings.ignoreDiacritics ? text.normalize('NFD').replace(/[\u0300-\u036F]/g, '') : text;
3207
3211
  },
3208
3212
  },
3209
3213
 
3210
3214
  has: {
3211
3215
  menuSearch: function () {
3212
- return (module.has.search() && $search.closest($menu).length > 0);
3216
+ return module.has.search() && $search.closest($menu).length > 0;
3213
3217
  },
3214
3218
  clearItem: function () {
3215
- return ($clear.length > 0);
3219
+ return $clear.length > 0;
3216
3220
  },
3217
3221
  search: function () {
3218
- return ($search.length > 0);
3222
+ return $search.length > 0;
3219
3223
  },
3220
3224
  sizer: function () {
3221
- return ($sizer.length > 0);
3225
+ return $sizer.length > 0;
3222
3226
  },
3223
3227
  selectInput: function () {
3224
- return ($input.is('select'));
3228
+ return $input.is('select');
3225
3229
  },
3226
3230
  minCharacters: function (searchTerm) {
3227
3231
  if (settings.minCharacters && !iconClicked) {
3228
- searchTerm = (searchTerm !== undefined)
3232
+ searchTerm = searchTerm !== undefined
3229
3233
  ? String(searchTerm)
3230
3234
  : String(module.get.query());
3231
3235
 
3232
- return (searchTerm.length >= settings.minCharacters);
3236
+ return searchTerm.length >= settings.minCharacters;
3233
3237
  }
3234
3238
  iconClicked = false;
3235
3239
 
@@ -3247,22 +3251,22 @@
3247
3251
  letter = letter.toLowerCase();
3248
3252
  firstLetter = String(text).charAt(0).toLowerCase();
3249
3253
 
3250
- return (letter == firstLetter);
3254
+ return letter == firstLetter;
3251
3255
  },
3252
3256
  input: function () {
3253
- return ($input.length > 0);
3257
+ return $input.length > 0;
3254
3258
  },
3255
3259
  items: function () {
3256
- return ($item.length > 0);
3260
+ return $item.length > 0;
3257
3261
  },
3258
3262
  menu: function () {
3259
- return ($menu.length > 0);
3263
+ return $menu.length > 0;
3260
3264
  },
3261
3265
  subMenu: function ($currentMenu) {
3262
3266
  return ($currentMenu || $menu).find(selector.menu).length > 0;
3263
3267
  },
3264
3268
  message: function () {
3265
- return ($menu.children(selector.message).length !== 0);
3269
+ return $menu.children(selector.message).length > 0;
3266
3270
  },
3267
3271
  label: function (value) {
3268
3272
  var
@@ -3273,26 +3277,26 @@
3273
3277
  escapedValue = escapedValue.toLowerCase();
3274
3278
  }
3275
3279
 
3276
- return ($labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0);
3280
+ return $labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0;
3277
3281
  },
3278
3282
  maxSelections: function () {
3279
- return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections);
3283
+ return settings.maxSelections && module.get.selectionCount() >= settings.maxSelections;
3280
3284
  },
3281
3285
  allResultsFiltered: function () {
3282
3286
  var
3283
3287
  $normalResults = $item.not(selector.addition)
3284
3288
  ;
3285
3289
 
3286
- return ($normalResults.filter(selector.unselectable).length === $normalResults.length);
3290
+ return $normalResults.filter(selector.unselectable).length === $normalResults.length;
3287
3291
  },
3288
3292
  userSuggestion: function () {
3289
- return ($menu.children(selector.addition).length > 0);
3293
+ return $menu.children(selector.addition).length > 0;
3290
3294
  },
3291
3295
  query: function () {
3292
- return (module.get.query() !== '');
3296
+ return module.get.query() !== '';
3293
3297
  },
3294
3298
  value: function (value) {
3295
- return (settings.ignoreCase)
3299
+ return settings.ignoreCase
3296
3300
  ? module.has.valueIgnoringCase(value)
3297
3301
  : module.has.valueMatchingCase(value);
3298
3302
  },
@@ -3301,12 +3305,10 @@
3301
3305
  values = module.get.values(true),
3302
3306
  hasValue = Array.isArray(values)
3303
3307
  ? values && ($.inArray(value, values) !== -1)
3304
- : (values == value)
3308
+ : values == value
3305
3309
  ;
3306
3310
 
3307
- return (hasValue)
3308
- ? true
3309
- : false;
3311
+ return !!hasValue;
3310
3312
  },
3311
3313
  valueIgnoringCase: function (value) {
3312
3314
  var
@@ -3354,10 +3356,10 @@
3354
3356
  return !!window.chrome && !window.StyleMedia;
3355
3357
  },
3356
3358
  alreadySetup: function () {
3357
- return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
3359
+ return $module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0;
3358
3360
  },
3359
3361
  animating: function ($subMenu) {
3360
- return ($subMenu)
3362
+ return $subMenu
3361
3363
  ? $subMenu.transition && $subMenu.transition('is animating')
3362
3364
  : $menu.transition && $menu.transition('is animating');
3363
3365
  },
@@ -3367,19 +3369,19 @@
3367
3369
  return $selectedMenu.hasClass(className.leftward);
3368
3370
  },
3369
3371
  clearable: function () {
3370
- return ($module.hasClass(className.clearable) || settings.clearable);
3372
+ return $module.hasClass(className.clearable) || settings.clearable;
3371
3373
  },
3372
3374
  disabled: function () {
3373
3375
  return $module.hasClass(className.disabled);
3374
3376
  },
3375
3377
  focused: function () {
3376
- return (document.activeElement === $module[0]);
3378
+ return document.activeElement === $module[0];
3377
3379
  },
3378
3380
  focusedOnSearch: function () {
3379
- return (document.activeElement === $search[0]);
3381
+ return document.activeElement === $search[0];
3380
3382
  },
3381
3383
  allFiltered: function () {
3382
- return ((module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered());
3384
+ return (module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered();
3383
3385
  },
3384
3386
  hidden: function ($subMenu) {
3385
3387
  return !module.is.visible($subMenu);
@@ -3431,13 +3433,13 @@
3431
3433
  return $module.hasClass(className.search);
3432
3434
  },
3433
3435
  searchSelection: function (deep) {
3434
- return (module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1);
3436
+ return module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1;
3435
3437
  },
3436
3438
  selection: function () {
3437
3439
  return $module.hasClass(className.selection);
3438
3440
  },
3439
3441
  userValue: function (value) {
3440
- return ($.inArray(value, module.get.userValues()) !== -1);
3442
+ return $.inArray(value, module.get.userValues()) !== -1;
3441
3443
  },
3442
3444
  upward: function ($menu) {
3443
3445
  var $element = $menu || $module;
@@ -3445,27 +3447,27 @@
3445
3447
  return $element.hasClass(className.upward);
3446
3448
  },
3447
3449
  visible: function ($subMenu) {
3448
- return ($subMenu)
3450
+ return $subMenu
3449
3451
  ? $subMenu.hasClass(className.visible)
3450
3452
  : $menu.hasClass(className.visible);
3451
3453
  },
3452
3454
  verticallyScrollableContext: function () {
3453
3455
  var
3454
- overflowY = ($context[0] !== window)
3456
+ overflowY = $context[0] !== window
3455
3457
  ? $context.css('overflow-y')
3456
3458
  : false
3457
3459
  ;
3458
3460
 
3459
- return (overflowY == 'auto' || overflowY == 'scroll');
3461
+ return overflowY == 'auto' || overflowY == 'scroll';
3460
3462
  },
3461
3463
  horizontallyScrollableContext: function () {
3462
3464
  var
3463
- overflowX = ($context[0] !== window)
3465
+ overflowX = $context[0] !== window
3464
3466
  ? $context.css('overflow-X')
3465
3467
  : false
3466
3468
  ;
3467
3469
 
3468
- return (overflowX == 'auto' || overflowX == 'scroll');
3470
+ return overflowX == 'auto' || overflowX == 'scroll';
3469
3471
  },
3470
3472
  },
3471
3473
 
@@ -3489,7 +3491,7 @@
3489
3491
  ;
3490
3492
  calculations = {
3491
3493
  context: {
3492
- offset: ($context[0] === window)
3494
+ offset: $context[0] === window
3493
3495
  ? { top: 0, left: 0 }
3494
3496
  : $context.offset(),
3495
3497
  scrollTop: $context.scrollTop(),
@@ -3507,7 +3509,7 @@
3507
3509
  calculations.menu.height += $currentMenu.find(selector.menu).first().outerHeight();
3508
3510
  }
3509
3511
  onScreen = {
3510
- above: (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
3512
+ above: calculations.context.scrollTop <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
3511
3513
  below: (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height,
3512
3514
  };
3513
3515
  if (onScreen.below) {
@@ -3536,7 +3538,7 @@
3536
3538
  ;
3537
3539
  calculations = {
3538
3540
  context: {
3539
- offset: ($context[0] === window)
3541
+ offset: $context[0] === window
3540
3542
  ? { top: 0, left: 0 }
3541
3543
  : $context.offset(),
3542
3544
  scrollLeft: $context.scrollLeft(),
@@ -3550,7 +3552,7 @@
3550
3552
  if (module.is.horizontallyScrollableContext()) {
3551
3553
  calculations.menu.offset.left += calculations.context.scrollLeft;
3552
3554
  }
3553
- isOffscreenRight = (calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);
3555
+ isOffscreenRight = calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width;
3554
3556
  if (isOffscreenRight) {
3555
3557
  module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
3556
3558
  canOpenRightward = false;
@@ -3574,7 +3576,7 @@
3574
3576
  show: function (callback, $subMenu) {
3575
3577
  var
3576
3578
  $currentMenu = $subMenu || $menu,
3577
- start = ($subMenu)
3579
+ start = $subMenu
3578
3580
  ? function () {}
3579
3581
  : function () {
3580
3582
  module.hideSubMenus();
@@ -3623,7 +3625,7 @@
3623
3625
  hide: function (callback, $subMenu) {
3624
3626
  var
3625
3627
  $currentMenu = $subMenu || $menu,
3626
- start = ($subMenu)
3628
+ start = $subMenu
3627
3629
  ? function () {}
3628
3630
  : function () {
3629
3631
  module.unbind.intent();
@@ -3697,9 +3699,9 @@
3697
3699
  value: function (value) {
3698
3700
  var
3699
3701
  multipleValues = Array.isArray(value),
3700
- stringValue = (typeof value === 'string'),
3701
- isUnparsable = (!stringValue && !multipleValues),
3702
- hasQuotes = (stringValue && value.search(regExp.quote) !== -1),
3702
+ stringValue = typeof value === 'string',
3703
+ isUnparsable = !stringValue && !multipleValues,
3704
+ hasQuotes = stringValue && value.search(regExp.quote) !== -1,
3703
3705
  values = []
3704
3706
  ;
3705
3707
  if (isUnparsable || !hasQuotes) {
@@ -3723,8 +3725,8 @@
3723
3725
  },
3724
3726
  htmlEntities: function (string) {
3725
3727
  var
3726
- badChars = /[<>"'`]/g,
3727
- shouldEscape = /[&<>"'`]/,
3728
+ badChars = /["'<>`]/g,
3729
+ shouldEscape = /["&'<>`]/,
3728
3730
  escape = {
3729
3731
  '<': '&lt;',
3730
3732
  '>': '&gt;',
@@ -3737,7 +3739,7 @@
3737
3739
  }
3738
3740
  ;
3739
3741
  if (shouldEscape.test(string)) {
3740
- string = string.replace(/&(?![a-z0-9#]{1,12};)/gi, '&amp;');
3742
+ string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&amp;');
3741
3743
 
3742
3744
  return string.replace(badChars, escapedChar);
3743
3745
  }
@@ -3803,7 +3805,7 @@
3803
3805
  previousTime
3804
3806
  ;
3805
3807
  if (settings.performance) {
3806
- currentTime = new Date().getTime();
3808
+ currentTime = Date.now();
3807
3809
  previousTime = time || currentTime;
3808
3810
  executionTime = currentTime - previousTime;
3809
3811
  time = currentTime;
@@ -3854,11 +3856,11 @@
3854
3856
  ;
3855
3857
  passedArguments = passedArguments || queryArguments;
3856
3858
  context = context || element;
3857
- if (typeof query == 'string' && object !== undefined) {
3858
- query = query.split(/[\. ]/);
3859
+ if (typeof query === 'string' && object !== undefined) {
3860
+ query = query.split(/[ .]/);
3859
3861
  maxDepth = query.length - 1;
3860
3862
  $.each(query, function (depth, value) {
3861
- var camelCaseValue = (depth != maxDepth)
3863
+ var camelCaseValue = depth != maxDepth
3862
3864
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
3863
3865
  : query
3864
3866
  ;
@@ -3911,7 +3913,7 @@
3911
3913
  }
3912
3914
  });
3913
3915
 
3914
- return (returnedValue !== undefined)
3916
+ return returnedValue !== undefined
3915
3917
  ? returnedValue
3916
3918
  : $allModules;
3917
3919
  };
@@ -4039,7 +4041,7 @@
4039
4041
  },
4040
4042
 
4041
4043
  regExp: {
4042
- escape: /[-[\]{}()*+?.,\\^$|#\s:=@]/g,
4044
+ escape: /[\s#$()*+,.:=?@[\\\]^{|}-]/g,
4043
4045
  quote: /"/g,
4044
4046
  },
4045
4047
 
@@ -4155,8 +4157,8 @@
4155
4157
  return string;
4156
4158
  }
4157
4159
  var
4158
- badChars = /[<>"'`]/g,
4159
- shouldEscape = /[&<>"'`]/,
4160
+ badChars = /["'<>`]/g,
4161
+ shouldEscape = /["&'<>`]/,
4160
4162
  escape = {
4161
4163
  '<': '&lt;',
4162
4164
  '>': '&gt;',
@@ -4169,7 +4171,7 @@
4169
4171
  }
4170
4172
  ;
4171
4173
  if (shouldEscape.test(string)) {
4172
- string = string.replace(/&(?![a-z0-9#]{1,12};)/gi, '&amp;');
4174
+ string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&amp;');
4173
4175
 
4174
4176
  return string.replace(badChars, escapedChar);
4175
4177
  }
@@ -4185,11 +4187,9 @@
4185
4187
  deQuote = $.fn.dropdown.settings.templates.deQuote
4186
4188
  ;
4187
4189
  html += '<i class="dropdown icon"></i>';
4188
- if (placeholder) {
4189
- html += '<div class="default text">' + escape(placeholder, preserveHTML) + '</div>';
4190
- } else {
4191
- html += '<div class="text"></div>';
4192
- }
4190
+ html += placeholder
4191
+ ? '<div class="default text">' + escape(placeholder, preserveHTML) + '</div>'
4192
+ : '<div class="text"></div>';
4193
4193
  html += '<div class="' + deQuote(className.menu) + '">';
4194
4194
  html += $.fn.dropdown.settings.templates.menu(select, fields, preserveHTML, className);
4195
4195
  html += '</div>';
@@ -4207,41 +4207,39 @@
4207
4207
  ;
4208
4208
  $.each(values, function (index, option) {
4209
4209
  var
4210
- itemType = (option[fields.type])
4211
- ? option[fields.type]
4212
- : 'item',
4210
+ itemType = option[fields.type] || 'item',
4213
4211
  isMenu = itemType.indexOf('menu') !== -1
4214
4212
  ;
4215
4213
 
4216
4214
  if (itemType === 'item' || isMenu) {
4217
4215
  var
4218
- maybeText = (option[fields.text])
4216
+ maybeText = option[fields.text]
4219
4217
  ? ' data-text="' + deQuote(option[fields.text], true) + '"'
4220
4218
  : '',
4221
- maybeActionable = (option[fields.actionable])
4219
+ maybeActionable = option[fields.actionable]
4222
4220
  ? className.actionable + ' '
4223
4221
  : '',
4224
- maybeDisabled = (option[fields.disabled])
4222
+ maybeDisabled = option[fields.disabled]
4225
4223
  ? className.disabled + ' '
4226
4224
  : '',
4227
- maybeDescriptionVertical = (option[fields.descriptionVertical])
4225
+ maybeDescriptionVertical = option[fields.descriptionVertical]
4228
4226
  ? className.descriptionVertical + ' '
4229
4227
  : '',
4230
- hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
4228
+ hasDescription = escape(option[fields.description] || '', preserveHTML) != ''
4231
4229
  ;
4232
- html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? option[fields.class] : className.item)) + '" data-value="' + deQuote(option[fields.value], true) + '"' + maybeText + '>';
4230
+ html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + deQuote(option[fields.value], true) + '"' + maybeText + '>';
4233
4231
  if (isMenu) {
4234
4232
  html += '<i class="' + (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
4235
4233
  }
4236
4234
  if (option[fields.image]) {
4237
- html += '<img class="' + deQuote(option[fields.imageClass] ? option[fields.imageClass] : className.image) + '" src="' + deQuote(option[fields.image]) + '">';
4235
+ html += '<img class="' + deQuote(option[fields.imageClass] || className.image) + '" src="' + deQuote(option[fields.image]) + '">';
4238
4236
  }
4239
4237
  if (option[fields.icon]) {
4240
- html += '<i class="' + deQuote(option[fields.icon] + ' ' + (option[fields.iconClass] ? option[fields.iconClass] : className.icon)) + '"></i>';
4238
+ html += '<i class="' + deQuote(option[fields.icon] + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
4241
4239
  }
4242
4240
  if (hasDescription) {
4243
4241
  html += '<span class="' + deQuote(className.description) + '">' + escape(option[fields.description] || '', preserveHTML) + '</span>';
4244
- html += (!isMenu) ? '<span class="' + deQuote(className.text) + '">' : '';
4242
+ html += !isMenu ? '<span class="' + deQuote(className.text) + '">' : '';
4245
4243
  }
4246
4244
  if (isMenu) {
4247
4245
  html += '<span class="' + deQuote(className.text) + '">';
@@ -4259,12 +4257,12 @@
4259
4257
  } else if (itemType === 'header') {
4260
4258
  var
4261
4259
  groupName = escape(option[fields.name] || '', preserveHTML),
4262
- groupIcon = deQuote(option[fields.icon] ? option[fields.icon] : className.groupIcon)
4260
+ groupIcon = deQuote(option[fields.icon] || className.groupIcon)
4263
4261
  ;
4264
4262
  if (groupName !== '' || groupIcon !== '') {
4265
- html += '<div class="' + deQuote(option[fields.class] ? option[fields.class] : className.header) + '">';
4263
+ html += '<div class="' + deQuote(option[fields.class] || className.header) + '">';
4266
4264
  if (groupIcon !== '') {
4267
- html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass] ? option[fields.iconClass] : className.icon)) + '"></i>';
4265
+ html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
4268
4266
  }
4269
4267
  html += groupName;
4270
4268
  html += '</div>';