fomantic-ui 2.10.0-beta.6 → 2.10.0-beta.8

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 (227) hide show
  1. package/.eslintrc.js +0 -10
  2. package/README.md +4 -5
  3. package/changelog-setup.js +64 -70
  4. package/dist/components/accordion.css +1 -1
  5. package/dist/components/accordion.js +94 -131
  6. package/dist/components/accordion.min.css +1 -1
  7. package/dist/components/accordion.min.js +2 -2
  8. package/dist/components/ad.css +1 -1
  9. package/dist/components/ad.min.css +1 -1
  10. package/dist/components/api.js +152 -205
  11. package/dist/components/api.min.js +2 -2
  12. package/dist/components/breadcrumb.css +1 -1
  13. package/dist/components/breadcrumb.min.css +1 -1
  14. package/dist/components/button.css +1 -1
  15. package/dist/components/button.min.css +1 -1
  16. package/dist/components/calendar.css +1 -1
  17. package/dist/components/calendar.js +305 -341
  18. package/dist/components/calendar.min.css +1 -1
  19. package/dist/components/calendar.min.js +2 -2
  20. package/dist/components/card.css +1 -1
  21. package/dist/components/card.min.css +1 -1
  22. package/dist/components/checkbox.css +1 -1
  23. package/dist/components/checkbox.js +76 -116
  24. package/dist/components/checkbox.min.css +1 -1
  25. package/dist/components/checkbox.min.js +2 -2
  26. package/dist/components/comment.css +1 -1
  27. package/dist/components/comment.min.css +1 -1
  28. package/dist/components/container.css +1 -1
  29. package/dist/components/container.min.css +1 -1
  30. package/dist/components/dimmer.css +1 -1
  31. package/dist/components/dimmer.js +58 -91
  32. package/dist/components/dimmer.min.css +1 -1
  33. package/dist/components/dimmer.min.js +2 -2
  34. package/dist/components/divider.css +1 -1
  35. package/dist/components/divider.min.css +1 -1
  36. package/dist/components/dropdown.css +1 -1
  37. package/dist/components/dropdown.js +674 -977
  38. package/dist/components/dropdown.min.css +1 -1
  39. package/dist/components/dropdown.min.js +2 -2
  40. package/dist/components/embed.css +1 -1
  41. package/dist/components/embed.js +80 -127
  42. package/dist/components/embed.min.css +1 -1
  43. package/dist/components/embed.min.js +2 -2
  44. package/dist/components/emoji.css +1 -1
  45. package/dist/components/emoji.min.css +1 -1
  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 +192 -274
  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 +325 -429
  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/menu.css +1 -1
  77. package/dist/components/menu.min.css +1 -1
  78. package/dist/components/message.css +1 -1
  79. package/dist/components/message.min.css +1 -1
  80. package/dist/components/modal.css +1 -1
  81. package/dist/components/modal.js +221 -313
  82. package/dist/components/modal.min.css +1 -1
  83. package/dist/components/modal.min.js +2 -2
  84. package/dist/components/nag.css +1 -1
  85. package/dist/components/nag.js +67 -97
  86. package/dist/components/nag.min.css +1 -1
  87. package/dist/components/nag.min.js +2 -2
  88. package/dist/components/placeholder.css +1 -1
  89. package/dist/components/placeholder.min.css +1 -1
  90. package/dist/components/popup.css +1 -1
  91. package/dist/components/popup.js +185 -254
  92. package/dist/components/popup.min.css +1 -1
  93. package/dist/components/popup.min.js +2 -2
  94. package/dist/components/progress.css +1 -1
  95. package/dist/components/progress.js +103 -138
  96. package/dist/components/progress.min.css +1 -1
  97. package/dist/components/progress.min.js +2 -2
  98. package/dist/components/rail.css +1 -1
  99. package/dist/components/rail.min.css +1 -1
  100. package/dist/components/rating.css +1 -1
  101. package/dist/components/rating.js +89 -139
  102. package/dist/components/rating.min.css +1 -1
  103. package/dist/components/rating.min.js +2 -2
  104. package/dist/components/reset.css +1 -1
  105. package/dist/components/reset.min.css +1 -1
  106. package/dist/components/reveal.css +1 -1
  107. package/dist/components/reveal.min.css +1 -1
  108. package/dist/components/search.css +1 -1
  109. package/dist/components/search.js +253 -352
  110. package/dist/components/search.min.css +1 -1
  111. package/dist/components/search.min.js +2 -2
  112. package/dist/components/segment.css +1 -1
  113. package/dist/components/segment.min.css +1 -1
  114. package/dist/components/shape.css +1 -1
  115. package/dist/components/shape.js +157 -223
  116. package/dist/components/shape.min.css +1 -1
  117. package/dist/components/shape.min.js +2 -2
  118. package/dist/components/sidebar.css +1 -1
  119. package/dist/components/sidebar.js +122 -163
  120. package/dist/components/sidebar.min.css +1 -1
  121. package/dist/components/sidebar.min.js +2 -2
  122. package/dist/components/site.css +1 -1
  123. package/dist/components/site.js +38 -57
  124. package/dist/components/site.min.css +1 -1
  125. package/dist/components/site.min.js +2 -2
  126. package/dist/components/slider.css +1 -1
  127. package/dist/components/slider.js +242 -325
  128. package/dist/components/slider.min.css +1 -1
  129. package/dist/components/slider.min.js +2 -2
  130. package/dist/components/state.js +68 -98
  131. package/dist/components/state.min.js +2 -2
  132. package/dist/components/statistic.css +1 -1
  133. package/dist/components/statistic.min.css +1 -1
  134. package/dist/components/step.css +1 -1
  135. package/dist/components/step.min.css +1 -1
  136. package/dist/components/sticky.css +1 -1
  137. package/dist/components/sticky.js +116 -159
  138. package/dist/components/sticky.min.css +1 -1
  139. package/dist/components/sticky.min.js +2 -2
  140. package/dist/components/tab.css +1 -1
  141. package/dist/components/tab.js +168 -233
  142. package/dist/components/tab.min.css +1 -1
  143. package/dist/components/tab.min.js +2 -2
  144. package/dist/components/table.css +1 -1
  145. package/dist/components/table.min.css +1 -1
  146. package/dist/components/text.css +1 -1
  147. package/dist/components/text.min.css +1 -1
  148. package/dist/components/toast.css +1 -1
  149. package/dist/components/toast.js +99 -132
  150. package/dist/components/toast.min.css +1 -1
  151. package/dist/components/toast.min.js +2 -2
  152. package/dist/components/transition.css +1 -1
  153. package/dist/components/transition.js +86 -141
  154. package/dist/components/transition.min.css +1 -1
  155. package/dist/components/transition.min.js +2 -2
  156. package/dist/components/visibility.js +134 -210
  157. package/dist/components/visibility.min.js +2 -2
  158. package/dist/semantic.css +53 -53
  159. package/dist/semantic.js +4100 -5721
  160. package/dist/semantic.min.css +1 -1
  161. package/dist/semantic.min.js +2 -2
  162. package/examples/assets/show-examples.js +2 -4
  163. package/gulpfile.js +5 -7
  164. package/package.json +1 -1
  165. package/scripts/nightly-version.js +7 -10
  166. package/src/definitions/behaviors/api.js +151 -204
  167. package/src/definitions/behaviors/form.js +324 -428
  168. package/src/definitions/behaviors/state.js +67 -97
  169. package/src/definitions/behaviors/visibility.js +133 -209
  170. package/src/definitions/globals/site.js +37 -56
  171. package/src/definitions/modules/accordion.js +93 -130
  172. package/src/definitions/modules/calendar.js +304 -340
  173. package/src/definitions/modules/checkbox.js +75 -115
  174. package/src/definitions/modules/dimmer.js +57 -90
  175. package/src/definitions/modules/dropdown.js +673 -976
  176. package/src/definitions/modules/embed.js +79 -126
  177. package/src/definitions/modules/flyout.js +191 -273
  178. package/src/definitions/modules/modal.js +220 -312
  179. package/src/definitions/modules/nag.js +66 -96
  180. package/src/definitions/modules/popup.js +184 -253
  181. package/src/definitions/modules/progress.js +102 -137
  182. package/src/definitions/modules/rating.js +88 -138
  183. package/src/definitions/modules/search.js +252 -351
  184. package/src/definitions/modules/shape.js +156 -222
  185. package/src/definitions/modules/sidebar.js +121 -162
  186. package/src/definitions/modules/slider.js +241 -324
  187. package/src/definitions/modules/sticky.js +115 -158
  188. package/src/definitions/modules/tab.js +167 -232
  189. package/src/definitions/modules/toast.js +98 -131
  190. package/src/definitions/modules/transition.js +85 -140
  191. package/tasks/admin/components/create.js +88 -108
  192. package/tasks/admin/components/init.js +26 -32
  193. package/tasks/admin/components/update.js +46 -53
  194. package/tasks/admin/distributions/create.js +71 -101
  195. package/tasks/admin/distributions/init.js +27 -33
  196. package/tasks/admin/distributions/update.js +45 -52
  197. package/tasks/admin/register.js +11 -15
  198. package/tasks/build/assets.js +14 -18
  199. package/tasks/build/css.js +54 -63
  200. package/tasks/build/javascript.js +45 -53
  201. package/tasks/build.js +4 -6
  202. package/tasks/check-install.js +5 -7
  203. package/tasks/clean.js +2 -4
  204. package/tasks/collections/admin.js +13 -15
  205. package/tasks/collections/build.js +6 -8
  206. package/tasks/collections/docs.js +2 -4
  207. package/tasks/collections/install.js +2 -4
  208. package/tasks/collections/rtl.js +2 -4
  209. package/tasks/collections/various.js +2 -4
  210. package/tasks/config/admin/github.js +7 -9
  211. package/tasks/config/admin/templates/css-package.js +1 -3
  212. package/tasks/config/admin/templates/less-package.js +1 -3
  213. package/tasks/config/npm/gulpfile.js +4 -6
  214. package/tasks/config/project/config.js +22 -30
  215. package/tasks/config/project/install.js +56 -70
  216. package/tasks/config/project/release.js +6 -8
  217. package/tasks/config/tasks.js +8 -12
  218. package/tasks/config/user.js +13 -17
  219. package/tasks/docs/build.js +26 -31
  220. package/tasks/docs/metadata.js +24 -30
  221. package/tasks/docs/serve.js +20 -26
  222. package/tasks/install.js +71 -98
  223. package/tasks/rtl/build.js +2 -4
  224. package/tasks/rtl/watch.js +2 -4
  225. package/tasks/watch.js +9 -11
  226. package/test/meteor/fonts.js +1 -2
  227. package/test/modules/module.spec.js +16 -18
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.10.0-beta.6+42a411a - Dropdown
2
+ * # Fomantic-UI 2.10.0-beta.8+62e258f - Dropdown
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -20,91 +20,87 @@
20
20
  : globalThis;
21
21
 
22
22
  $.fn.dropdown = function (parameters) {
23
- var
24
- $allModules = $(this),
25
- $document = $(document),
26
-
27
- time = Date.now(),
28
- performance = [],
29
-
30
- query = arguments[0],
31
- methodInvoked = typeof query === 'string',
32
- queryArguments = [].slice.call(arguments, 1),
33
- contextCheck = function (context, win) {
34
- var $context;
35
- if ([window, document].indexOf(context) >= 0) {
36
- $context = $(context);
37
- } else {
38
- $context = $(win.document).find(context);
39
- if ($context.length === 0) {
40
- $context = win.frameElement ? contextCheck(context, win.parent) : window;
41
- }
23
+ let $allModules = $(this);
24
+ let $document = $(document);
25
+
26
+ let time = Date.now();
27
+ let performance = [];
28
+
29
+ let query = arguments[0];
30
+ let methodInvoked = typeof query === 'string';
31
+ let queryArguments = [].slice.call(arguments, 1);
32
+ let contextCheck = function (context, win) {
33
+ let $context;
34
+ if ([window, document].indexOf(context) >= 0) {
35
+ $context = $(context);
36
+ } else {
37
+ $context = $(win.document).find(context);
38
+ if ($context.length === 0) {
39
+ $context = win.frameElement ? contextCheck(context, win.parent) : window;
42
40
  }
41
+ }
43
42
 
44
- return $context;
45
- },
46
- returnedValue
47
- ;
43
+ return $context;
44
+ };
45
+ let returnedValue;
48
46
 
49
47
  $allModules.each(function (elementIndex) {
50
- var
51
- settings = $.isPlainObject(parameters)
52
- ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
53
- : $.extend({}, $.fn.dropdown.settings),
54
-
55
- className = settings.className,
56
- message = settings.message,
57
- fields = settings.fields,
58
- keys = settings.keys,
59
- metadata = settings.metadata,
60
- namespace = settings.namespace,
61
- regExp = settings.regExp,
62
- selector = settings.selector,
63
- error = settings.error,
64
- templates = settings.templates,
65
-
66
- eventNamespace = '.' + namespace,
67
- moduleNamespace = 'module-' + namespace,
68
-
69
- $module = $(this),
70
- $context = contextCheck(settings.context, window),
71
- $text = $module.find(selector.text),
72
- $search = $module.find(selector.search),
73
- $sizer = $module.find(selector.sizer),
74
- $input = $module.find(selector.input),
75
- $icon = $module.find(selector.icon),
76
- $clear = $module.find(selector.clearIcon),
77
-
78
- $combo = $module.prev().find(selector.text).length > 0
79
- ? $module.prev().find(selector.text)
80
- : $module.prev(),
81
-
82
- $menu = $module.children(selector.menu),
83
- $item = $menu.find(selector.item),
84
- $divider = settings.hideDividers
85
- ? $item.parent().children(selector.divider)
86
- : $(),
87
-
88
- activated = false,
89
- itemActivated = false,
90
- internalChange = false,
91
- iconClicked = false,
92
- element = this,
93
- focused = false,
94
- instance = $module.data(moduleNamespace),
95
-
96
- selectActionActive,
97
- initialLoad,
98
- pageLostFocus,
99
- willRefocus,
100
- elementNamespace,
101
- id,
102
- selectObserver,
103
- menuObserver,
104
- classObserver,
105
- module,
106
- tempDisableApiCache = false
107
- ;
48
+ let settings = $.isPlainObject(parameters)
49
+ ? $.extend(true, {}, $.fn.dropdown.settings, parameters)
50
+ : $.extend({}, $.fn.dropdown.settings);
51
+
52
+ let className = settings.className;
53
+ let message = settings.message;
54
+ let fields = settings.fields;
55
+ let keys = settings.keys;
56
+ let metadata = settings.metadata;
57
+ let namespace = settings.namespace;
58
+ let regExp = settings.regExp;
59
+ let selector = settings.selector;
60
+ let error = settings.error;
61
+ let templates = settings.templates;
62
+
63
+ let eventNamespace = '.' + namespace;
64
+ let moduleNamespace = 'module-' + namespace;
65
+
66
+ let $module = $(this);
67
+ let $context = contextCheck(settings.context, window);
68
+ let $text = $module.find(selector.text);
69
+ let $search = $module.find(selector.search);
70
+ let $sizer = $module.find(selector.sizer);
71
+ let $input = $module.find(selector.input);
72
+ let $icon = $module.find(selector.icon);
73
+ let $clear = $module.find(selector.clearIcon);
74
+
75
+ let $combo = $module.prev().find(selector.text).length > 0
76
+ ? $module.prev().find(selector.text)
77
+ : $module.prev();
78
+
79
+ let $menu = $module.children(selector.menu);
80
+ let $item = $menu.find(selector.item);
81
+ let $divider = settings.hideDividers
82
+ ? $item.parent().children(selector.divider)
83
+ : $();
84
+
85
+ let activated = false;
86
+ let itemActivated = false;
87
+ let internalChange = false;
88
+ let iconClicked = false;
89
+ let element = this;
90
+ let focused = false;
91
+ let instance = $module.data(moduleNamespace);
92
+
93
+ let selectActionActive;
94
+ let initialLoad;
95
+ let pageLostFocus;
96
+ let willRefocus;
97
+ let elementNamespace;
98
+ let id;
99
+ let selectObserver;
100
+ let menuObserver;
101
+ let classObserver;
102
+ let module;
103
+ let tempDisableApiCache = false;
108
104
 
109
105
  module = {
110
106
 
@@ -142,8 +138,7 @@
142
138
  module.verbose('Storing instance of dropdown', module);
143
139
  instance = module;
144
140
  $module
145
- .data(moduleNamespace, module)
146
- ;
141
+ .data(moduleNamespace, module);
147
142
  },
148
143
 
149
144
  destroy: function () {
@@ -154,14 +149,11 @@
154
149
  $menu.removeClass(className.visible).addClass(className.hidden);
155
150
  $module
156
151
  .off(eventNamespace)
157
- .removeData(moduleNamespace)
158
- ;
152
+ .removeData(moduleNamespace);
159
153
  $menu
160
- .off(eventNamespace)
161
- ;
154
+ .off(eventNamespace);
162
155
  $document
163
- .off(elementNamespace)
164
- ;
156
+ .off(elementNamespace);
165
157
  module.disconnect.menuObserver();
166
158
  module.disconnect.selectObserver();
167
159
  module.disconnect.classObserver();
@@ -230,11 +222,9 @@
230
222
  module.verbose('Creating unique id for element', id);
231
223
  },
232
224
  userChoice: function (values) {
233
- var
234
- $userChoices,
235
- $userChoice,
236
- html
237
- ;
225
+ let $userChoices;
226
+ let $userChoice;
227
+ let html;
238
228
  values = values || module.get.userValues();
239
229
  if (!values) {
240
230
  return false;
@@ -250,8 +240,7 @@
250
240
  .attr('data-' + metadata.value, value)
251
241
  .attr('data-' + metadata.text, value)
252
242
  .addClass(className.addition)
253
- .addClass(className.item)
254
- ;
243
+ .addClass(className.item);
255
244
  if (settings.hideAdditions) {
256
245
  $userChoice.addClass(className.hidden);
257
246
  }
@@ -265,9 +254,7 @@
265
254
  return $userChoices;
266
255
  },
267
256
  userLabels: function (value) {
268
- var
269
- userValues = module.get.userValues()
270
- ;
257
+ let userValues = module.get.userValues();
271
258
  if (userValues) {
272
259
  module.debug('Adding user labels', userValues);
273
260
  $.each(userValues, function (index, value) {
@@ -279,14 +266,12 @@
279
266
  menu: function () {
280
267
  $menu = $('<div />')
281
268
  .addClass(className.menu)
282
- .appendTo($module)
283
- ;
269
+ .appendTo($module);
284
270
  },
285
271
  sizer: function () {
286
272
  $sizer = $('<span />')
287
273
  .addClass(className.sizer)
288
- .insertAfter($search)
289
- ;
274
+ .insertAfter($search);
290
275
  },
291
276
  },
292
277
 
@@ -312,16 +297,13 @@
312
297
  .not(selector.unselectable)
313
298
  .not(selector.addition + selector.hidden)
314
299
  .eq(0)
315
- .addClass(className.selected)
316
- ;
300
+ .addClass(className.selected);
317
301
  },
318
302
  nextAvailable: function ($selected) {
319
303
  $selected = $selected.eq(0);
320
- var
321
- $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),
322
- $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),
323
- hasNext = $nextAvailable.length > 0
324
- ;
304
+ let $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0);
305
+ let $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0);
306
+ let hasNext = $nextAvailable.length > 0;
325
307
  if (hasNext) {
326
308
  module.verbose('Moving selection to', $nextAvailable);
327
309
  $nextAvailable.addClass(className.selected);
@@ -334,20 +316,17 @@
334
316
 
335
317
  setup: {
336
318
  api: function () {
337
- var
338
- apiSettings = {
339
- debug: settings.debug,
340
- urlData: {
341
- value: module.get.value(),
342
- query: module.get.query(),
343
- },
344
- on: false,
345
- }
346
- ;
319
+ let apiSettings = {
320
+ debug: settings.debug,
321
+ urlData: {
322
+ value: module.get.value(),
323
+ query: module.get.query(),
324
+ },
325
+ on: false,
326
+ };
347
327
  module.verbose('First request, initializing API');
348
328
  $module
349
- .api(apiSettings)
350
- ;
329
+ .api(apiSettings);
351
330
  },
352
331
  layout: function () {
353
332
  if ($module.is('select')) {
@@ -361,18 +340,14 @@
361
340
  module.verbose('Adding clear icon');
362
341
  $clear = $('<i />')
363
342
  .addClass('remove icon')
364
- .insertAfter($icon)
365
- ;
343
+ .insertAfter($icon);
366
344
  }
367
345
  if (module.is.search() && !module.has.search()) {
368
346
  module.verbose('Adding search input');
369
- var
370
- labelNode = $module.prev('label')
371
- ;
347
+ let labelNode = $module.prev('label');
372
348
  $search = $('<input />')
373
349
  .addClass(className.search)
374
- .prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off')
375
- ;
350
+ .prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off');
376
351
  if (labelNode.length > 0) {
377
352
  if (!labelNode.attr('id')) {
378
353
  labelNode.attr('id', '_' + module.get.id() + '_formLabel');
@@ -389,9 +364,7 @@
389
364
  }
390
365
  },
391
366
  select: function () {
392
- var
393
- selectValues = module.get.selectValues()
394
- ;
367
+ let selectValues = module.get.selectValues();
395
368
  module.debug('Dropdown initialized on a select', selectValues);
396
369
  if ($module.is('select')) {
397
370
  $input = $module;
@@ -412,8 +385,7 @@
412
385
  .addClass(className.selection)
413
386
  .addClass(className.dropdown)
414
387
  .html(templates.dropdown(selectValues, settings))
415
- .insertBefore($input)
416
- ;
388
+ .insertBefore($input);
417
389
  if ($input.hasClass(className.multiple) && $input.prop('multiple') === false) {
418
390
  module.error(error.missingMultiple);
419
391
  $input.prop('multiple', true);
@@ -435,8 +407,7 @@
435
407
  .prop('required', false)
436
408
  .removeAttr('class')
437
409
  .detach()
438
- .prependTo($module)
439
- ;
410
+ .prependTo($module);
440
411
  }
441
412
  module.refresh();
442
413
  },
@@ -455,10 +426,8 @@
455
426
  module.setup.returnedObject();
456
427
  },
457
428
  returnedObject: function () {
458
- var
459
- $firstModules = $allModules.slice(0, elementIndex),
460
- $lastModules = $allModules.slice(elementIndex + 1)
461
- ;
429
+ let $firstModules = $allModules.slice(0, elementIndex);
430
+ let $lastModules = $allModules.slice(elementIndex + 1);
462
431
  // adjust all modules to use the correct reference
463
432
  $allModules = $firstModules.add($module).add($lastModules);
464
433
  },
@@ -492,21 +461,18 @@
492
461
  module.verbose('Refreshing cached metadata');
493
462
  $item
494
463
  .removeData(metadata.text)
495
- .removeData(metadata.value)
496
- ;
464
+ .removeData(metadata.value);
497
465
  },
498
466
 
499
467
  clearData: function () {
500
468
  module.verbose('Clearing metadata');
501
469
  $item
502
470
  .removeData(metadata.text)
503
- .removeData(metadata.value)
504
- ;
471
+ .removeData(metadata.value);
505
472
  $module
506
473
  .removeData(metadata.defaultText)
507
474
  .removeData(metadata.defaultValue)
508
- .removeData(metadata.placeholderText)
509
- ;
475
+ .removeData(metadata.placeholderText);
510
476
  },
511
477
 
512
478
  clearItems: function () {
@@ -573,11 +539,11 @@
573
539
  });
574
540
  // Hide submenus explicitly. On some browsers (esp. mobile), they will not automatically receive a
575
541
  // mouseleave event
576
- var $subMenu = $module.find(selector.menu);
542
+ let $subMenu = $module.find(selector.menu);
577
543
  if ($subMenu.length > 0) {
578
544
  module.verbose('Hiding sub-menu', $subMenu);
579
545
  $subMenu.each(function () {
580
- var $sub = $(this);
546
+ let $sub = $(this);
581
547
  if (!module.is.animating($sub)) {
582
548
  module.animate.hide(false, $sub);
583
549
  }
@@ -596,8 +562,7 @@
596
562
  $allModules
597
563
  .not($module)
598
564
  .has(selector.menu + '.' + className.visible)
599
- .dropdown('hide')
600
- ;
565
+ .dropdown('hide');
601
566
  },
602
567
 
603
568
  hideMenu: function () {
@@ -608,9 +573,7 @@
608
573
  },
609
574
 
610
575
  hideSubMenus: function () {
611
- var
612
- $subMenus = $menu.children(selector.item).find(selector.menu)
613
- ;
576
+ let $subMenus = $menu.children(selector.item).find(selector.menu);
614
577
  module.verbose('Hiding sub menus', $subMenus);
615
578
  $subMenus.transition('hide');
616
579
  },
@@ -624,28 +587,23 @@
624
587
  keyboardEvents: function () {
625
588
  module.verbose('Binding keyboard events');
626
589
  $module
627
- .on('keydown' + eventNamespace, module.event.keydown)
628
- ;
590
+ .on('keydown' + eventNamespace, module.event.keydown);
629
591
  if (module.has.search()) {
630
592
  $module
631
- .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input)
632
- ;
593
+ .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input);
633
594
  }
634
595
  if (module.is.multiple()) {
635
596
  $document
636
- .on('keydown' + elementNamespace, module.event.document.keydown)
637
- ;
597
+ .on('keydown' + elementNamespace, module.event.document.keydown);
638
598
  }
639
599
  },
640
600
  inputEvents: function () {
641
601
  module.verbose('Binding input change events');
642
602
  $module
643
- .on('change' + eventNamespace, selector.input, module.event.change)
644
- ;
603
+ .on('change' + eventNamespace, selector.input, module.event.change);
645
604
  if (module.is.multiple() && module.is.searchSelection()) {
646
605
  $module
647
- .on('paste' + eventNamespace, selector.search, module.event.paste)
648
- ;
606
+ .on('paste' + eventNamespace, selector.search, module.event.paste);
649
607
  }
650
608
  },
651
609
  mouseEvents: function () {
@@ -653,8 +611,7 @@
653
611
  if (module.is.multiple()) {
654
612
  $module
655
613
  .on('click' + eventNamespace, selector.label, module.event.label.click)
656
- .on('click' + eventNamespace, selector.remove, module.event.remove.click)
657
- ;
614
+ .on('click' + eventNamespace, selector.remove, module.event.remove.click);
658
615
  }
659
616
  if (module.is.searchSelection()) {
660
617
  $module
@@ -667,60 +624,50 @@
667
624
  .on('focus' + eventNamespace, selector.search, module.event.search.focus)
668
625
  .on('click' + eventNamespace, selector.search, module.event.search.focus)
669
626
  .on('blur' + eventNamespace, selector.search, module.event.search.blur)
670
- .on('click' + eventNamespace, selector.text, module.event.text.focus)
671
- ;
627
+ .on('click' + eventNamespace, selector.text, module.event.text.focus);
672
628
  if (module.is.multiple()) {
673
629
  $module
674
630
  .on('click' + eventNamespace, module.event.click)
675
- .on('click' + eventNamespace, module.event.search.focus)
676
- ;
631
+ .on('click' + eventNamespace, module.event.search.focus);
677
632
  }
678
633
  } else {
679
634
  if (settings.on === 'click') {
680
635
  $module
681
636
  .on('click' + eventNamespace, selector.icon, module.event.icon.click)
682
- .on('click' + eventNamespace, module.event.test.toggle)
683
- ;
637
+ .on('click' + eventNamespace, module.event.test.toggle);
684
638
  } else if (settings.on === 'hover') {
685
639
  $module
686
640
  .on('mouseenter' + eventNamespace, module.delay.show)
687
641
  .on('mouseleave' + eventNamespace, module.delay.hide)
688
642
  .on('touchstart' + eventNamespace, module.event.test.toggle)
689
- .on('touchstart' + eventNamespace, selector.icon, module.event.icon.click)
690
- ;
643
+ .on('touchstart' + eventNamespace, selector.icon, module.event.icon.click);
691
644
  } else {
692
645
  $module
693
- .on(settings.on + eventNamespace, module.toggle)
694
- ;
646
+ .on(settings.on + eventNamespace, module.toggle);
695
647
  }
696
648
  $module
697
649
  .on('mousedown' + eventNamespace, module.event.mousedown)
698
650
  .on('mouseup' + eventNamespace, module.event.mouseup)
699
651
  .on('focus' + eventNamespace, module.event.focus)
700
- .on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
701
- ;
652
+ .on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click);
702
653
  if (module.has.menuSearch()) {
703
654
  $module
704
- .on('blur' + eventNamespace, selector.search, module.event.search.blur)
705
- ;
655
+ .on('blur' + eventNamespace, selector.search, module.event.search.blur);
706
656
  } else {
707
657
  $module
708
- .on('blur' + eventNamespace, module.event.blur)
709
- ;
658
+ .on('blur' + eventNamespace, module.event.blur);
710
659
  }
711
660
  }
712
661
  $menu
713
662
  .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
714
663
  .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
715
664
  .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
716
- .on('click' + eventNamespace, selector.item, module.event.item.click)
717
- ;
665
+ .on('click' + eventNamespace, selector.item, module.event.item.click);
718
666
  },
719
667
  intent: function () {
720
668
  module.verbose('Binding hide intent event to document');
721
669
  $document
722
- .on('click' + elementNamespace, module.event.test.hide)
723
- ;
670
+ .on('click' + elementNamespace, module.event.test.hide);
724
671
  },
725
672
  },
726
673
 
@@ -728,52 +675,49 @@
728
675
  intent: function () {
729
676
  module.verbose('Removing hide intent event from document');
730
677
  $document
731
- .off('click' + elementNamespace)
732
- ;
678
+ .off('click' + elementNamespace);
733
679
  },
734
680
  },
735
681
 
736
682
  filter: function (query) {
737
- var
738
- searchTerm = query !== undefined
739
- ? query
740
- : module.get.query(),
741
- afterFiltered = function () {
742
- if (module.is.multiple()) {
743
- module.filterActive();
744
- }
745
- if (query || (!query && module.get.activeItem().length === 0)) {
746
- module.select.firstUnfiltered();
747
- }
748
- if (module.has.allResultsFiltered()) {
749
- if (settings.onNoResults.call(element, searchTerm)) {
750
- if (settings.allowAdditions) {
751
- if (settings.hideAdditions) {
752
- module.verbose('User addition with no menu, setting empty style');
753
- module.set.empty();
754
- module.hideMenu();
755
- }
756
- } else {
757
- module.verbose('All items filtered, showing message', searchTerm);
758
- module.add.message(message.noResults);
683
+ let searchTerm = query !== undefined
684
+ ? query
685
+ : module.get.query();
686
+ let afterFiltered = function () {
687
+ if (module.is.multiple()) {
688
+ module.filterActive();
689
+ }
690
+ if (query || (!query && module.get.activeItem().length === 0)) {
691
+ module.select.firstUnfiltered();
692
+ }
693
+ if (module.has.allResultsFiltered()) {
694
+ if (settings.onNoResults.call(element, searchTerm)) {
695
+ if (settings.allowAdditions) {
696
+ if (settings.hideAdditions) {
697
+ module.verbose('User addition with no menu, setting empty style');
698
+ module.set.empty();
699
+ module.hideMenu();
759
700
  }
760
701
  } else {
761
- module.verbose('All items filtered, hiding dropdown', searchTerm);
762
- module.set.empty();
763
- module.hideMenu();
702
+ module.verbose('All items filtered, showing message', searchTerm);
703
+ module.add.message(message.noResults);
764
704
  }
765
705
  } else {
766
- module.remove.empty();
767
- module.remove.message();
768
- }
769
- if (settings.allowAdditions) {
770
- module.add.userSuggestion(module.escape.htmlEntities(query));
771
- }
772
- if (module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() && !module.is.empty()) {
773
- module.show();
706
+ module.verbose('All items filtered, hiding dropdown', searchTerm);
707
+ module.set.empty();
708
+ module.hideMenu();
774
709
  }
710
+ } else {
711
+ module.remove.empty();
712
+ module.remove.message();
713
+ }
714
+ if (settings.allowAdditions) {
715
+ module.add.userSuggestion(module.escape.htmlEntities(query));
775
716
  }
776
- ;
717
+ if (module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() && !module.is.empty()) {
718
+ module.show();
719
+ }
720
+ };
777
721
  if (settings.useLabels && module.has.maxSelections()) {
778
722
  module.show();
779
723
 
@@ -785,15 +729,14 @@
785
729
  if (settings.filterRemoteData) {
786
730
  module.filterItems(searchTerm);
787
731
  }
788
- var preSelected = $input.val();
732
+ let preSelected = $input.val();
789
733
  if (!Array.isArray(preSelected)) {
790
734
  preSelected = preSelected && preSelected !== '' ? preSelected.split(settings.delimiter) : [];
791
735
  }
792
736
  if (module.is.multiple()) {
793
737
  $.each(preSelected, function (index, value) {
794
- $item.filter('[data-' + metadata.value + '="' + value + '"]')
795
- .addClass(className.filtered)
796
- ;
738
+ $item.filter('[data-' + metadata.value + '="' + CSS.escape(value) + '"]')
739
+ .addClass(className.filtered);
797
740
  });
798
741
  }
799
742
  module.focusSearch(true);
@@ -812,88 +755,81 @@
812
755
  if (!Array.isArray(callbackParameters)) {
813
756
  callbackParameters = [callbackParameters];
814
757
  }
815
- var
816
- apiSettings = {
817
- errorDuration: false,
818
- cache: 'local',
819
- throttle: settings.throttle,
820
- urlData: {
821
- query: query,
822
- },
758
+ let apiSettings = {
759
+ errorDuration: false,
760
+ cache: 'local',
761
+ throttle: settings.throttle,
762
+ urlData: {
763
+ query: query,
823
764
  },
824
- apiCallbacks = {
825
- onError: function (errorMessage, $module, xhr) {
826
- module.add.message(message.serverError);
827
- iconClicked = false;
828
- focused = false;
829
- callback.apply(null, callbackParameters);
830
- if (typeof settings.apiSettings.onError === 'function') {
831
- settings.apiSettings.onError.call(this, errorMessage, $module, xhr);
832
- }
833
- },
834
- onFailure: function (response, $module, xhr) {
835
- module.add.message(message.serverError);
836
- iconClicked = false;
837
- focused = false;
838
- callback.apply(null, callbackParameters);
839
- if (typeof settings.apiSettings.onFailure === 'function') {
840
- settings.apiSettings.onFailure.call(this, response, $module, xhr);
841
- }
842
- },
843
- onSuccess: function (response, $module, xhr) {
844
- var
845
- values = response[fields.remoteValues]
846
- ;
847
- if (!Array.isArray(values)) {
848
- values = [];
849
- }
850
- module.remove.message();
851
- var menuConfig = {};
852
- menuConfig[fields.values] = values;
853
- module.setup.menu(menuConfig);
765
+ };
766
+ let apiCallbacks = {
767
+ onError: function (errorMessage, $module, xhr) {
768
+ module.add.message(message.serverError);
769
+ iconClicked = false;
770
+ focused = false;
771
+ callback.apply(null, callbackParameters);
772
+ if (typeof settings.apiSettings.onError === 'function') {
773
+ settings.apiSettings.onError.call(this, errorMessage, $module, xhr);
774
+ }
775
+ },
776
+ onFailure: function (response, $module, xhr) {
777
+ module.add.message(message.serverError);
778
+ iconClicked = false;
779
+ focused = false;
780
+ callback.apply(null, callbackParameters);
781
+ if (typeof settings.apiSettings.onFailure === 'function') {
782
+ settings.apiSettings.onFailure.call(this, response, $module, xhr);
783
+ }
784
+ },
785
+ onSuccess: function (response, $module, xhr) {
786
+ let values = response[fields.remoteValues];
787
+ if (!Array.isArray(values)) {
788
+ values = [];
789
+ }
790
+ module.remove.message();
791
+ let menuConfig = {};
792
+ menuConfig[fields.values] = values;
793
+ module.setup.menu(menuConfig);
854
794
 
855
- if (values.length === 0 && !settings.allowAdditions) {
856
- module.add.message(message.noResults);
857
- } else {
858
- var value = module.is.multiple() ? module.get.values() : module.get.value();
859
- if (value !== '') {
860
- module.verbose('Value(s) present after click icon, select value(s) in items');
861
- module.set.selected(value, null, true, true);
862
- }
863
- }
864
- iconClicked = false;
865
- focused = false;
866
- callback.apply(null, callbackParameters);
867
- if (typeof settings.apiSettings.onSuccess === 'function') {
868
- settings.apiSettings.onSuccess.call(this, response, $module, xhr);
795
+ if (values.length === 0 && !settings.allowAdditions) {
796
+ module.add.message(message.noResults);
797
+ } else {
798
+ let value = module.is.multiple() ? module.get.values() : module.get.value();
799
+ if (value !== '') {
800
+ module.verbose('Value(s) present after click icon, select value(s) in items');
801
+ module.set.selected(value, null, true, true);
869
802
  }
870
- },
871
- }
872
- ;
803
+ }
804
+ iconClicked = false;
805
+ focused = false;
806
+ callback.apply(null, callbackParameters);
807
+ if (typeof settings.apiSettings.onSuccess === 'function') {
808
+ settings.apiSettings.onSuccess.call(this, response, $module, xhr);
809
+ }
810
+ },
811
+ };
873
812
  if (!$module.api('get request')) {
874
813
  module.setup.api();
875
814
  }
876
815
  apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings, apiCallbacks, tempDisableApiCache ? { cache: false } : {});
877
816
  $module
878
817
  .api('setting', apiSettings)
879
- .api('query')
880
- ;
818
+ .api('query');
881
819
  tempDisableApiCache = false;
882
820
  },
883
821
 
884
822
  filterItems: function (query) {
885
- var
886
- searchTerm = module.remove.diacritics(
887
- query !== undefined
888
- ? query
889
- : module.get.query()
890
- ),
891
- results = null,
892
- escapedTerm = module.escape.string(searchTerm),
893
- regExpIgnore = settings.ignoreSearchCase ? 'i' : '',
894
- regExpFlags = regExpIgnore + 'gm',
895
- beginsWithRegExp = new RegExp('^' + escapedTerm, regExpFlags)
896
- ;
823
+ let searchTerm = module.remove.diacritics(
824
+ query !== undefined
825
+ ? query
826
+ : module.get.query()
827
+ );
828
+ let results = null;
829
+ let escapedTerm = module.escape.string(searchTerm);
830
+ let regExpIgnore = settings.ignoreSearchCase ? 'i' : '';
831
+ let regExpFlags = regExpIgnore + 'gm';
832
+ let beginsWithRegExp = new RegExp('^' + escapedTerm, regExpFlags);
897
833
  module.remove.filteredItem();
898
834
  // avoid loop if we're matching nothing
899
835
  if (module.has.query()) {
@@ -902,11 +838,9 @@
902
838
  module.verbose('Searching for matching values', searchTerm);
903
839
  $item
904
840
  .each(function () {
905
- var
906
- $choice = $(this),
907
- text,
908
- value
909
- ;
841
+ let $choice = $(this);
842
+ let text;
843
+ let value;
910
844
  if ($choice.hasClass(className.unfilterable)) {
911
845
  results.push(this);
912
846
 
@@ -934,32 +868,28 @@
934
868
  return true;
935
869
  }
936
870
  }
937
- })
938
- ;
871
+ });
939
872
  }
940
873
  module.debug('Showing only matched items', searchTerm);
941
874
  if (results) {
942
875
  $item
943
876
  .not(results)
944
- .addClass(className.filtered)
945
- ;
877
+ .addClass(className.filtered);
946
878
  if (settings.highlightMatches && (settings.match === 'both' || settings.match === 'text')) {
947
- var querySplit = query.split(''),
948
- diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '',
949
- htmlReg = '(?![^<]*>)',
950
- markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore),
951
- markedReplacer = function () {
952
- var args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) {
953
- return i & 1 ? x : '<mark>' + x + '</mark>'; // eslint-disable-line no-bitwise
954
- });
879
+ let querySplit = query.split('');
880
+ let diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '';
881
+ let htmlReg = '(?![^<]*>)';
882
+ let markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore);
883
+ let markedReplacer = function () {
884
+ let args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) {
885
+ return i & 1 ? x : '<mark>' + x + '</mark>'; // eslint-disable-line no-bitwise
886
+ });
955
887
 
956
- return args.join('');
957
- }
958
- ;
888
+ return args.join('');
889
+ };
959
890
  $.each(results, function (index, result) {
960
- var $result = $(result),
961
- markedHTML = module.get.choiceText($result, true)
962
- ;
891
+ let $result = $(result);
892
+ let markedHTML = module.get.choiceText($result, true);
963
893
  if (settings.ignoreDiacritics) {
964
894
  markedHTML = markedHTML.normalize('NFD');
965
895
  }
@@ -970,19 +900,17 @@
970
900
 
971
901
  if (!module.has.query()) {
972
902
  $divider
973
- .removeClass(className.hidden)
974
- ;
903
+ .removeClass(className.hidden);
975
904
  } else if (settings.hideDividers === true) {
976
905
  $divider
977
- .addClass(className.hidden)
978
- ;
906
+ .addClass(className.hidden);
979
907
  } else if (settings.hideDividers === 'empty') {
980
908
  $divider
981
909
  .removeClass(className.hidden)
982
910
  .filter(function () {
983
911
  // First find the last divider in this divider group
984
912
  // Dividers which are direct siblings are considered a group
985
- var $lastDivider = $(this).nextUntil(selector.item);
913
+ let $lastDivider = $(this).nextUntil(selector.item);
986
914
 
987
915
  return ($lastDivider.length > 0 ? $lastDivider : $(this))
988
916
  // Count all non-filtered items until the next divider (or end of the dropdown)
@@ -991,16 +919,13 @@
991
919
  // Hide divider if no items are found
992
920
  .length === 0;
993
921
  })
994
- .addClass(className.hidden)
995
- ;
922
+ .addClass(className.hidden);
996
923
  }
997
924
  },
998
925
 
999
926
  fuzzySearch: function (query, term) {
1000
- var
1001
- termLength = term.length,
1002
- queryLength = query.length
1003
- ;
927
+ let termLength = term.length;
928
+ let queryLength = query.length;
1004
929
  if (settings.ignoreSearchCase) {
1005
930
  query = query.toLowerCase();
1006
931
  term = term.toLowerCase();
@@ -1011,11 +936,9 @@
1011
936
  if (queryLength === termLength) {
1012
937
  return query === term;
1013
938
  }
1014
- for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
1015
- var
1016
- continueSearch = false,
1017
- queryCharacter = query.charCodeAt(characterIndex)
1018
- ;
939
+ for (let characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
940
+ let continueSearch = false;
941
+ let queryCharacter = query.charCodeAt(characterIndex);
1019
942
  while (nextCharacterIndex < termLength) {
1020
943
  if (term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
1021
944
  continueSearch = true;
@@ -1040,8 +963,7 @@
1040
963
  filterActive: function () {
1041
964
  if (settings.useLabels) {
1042
965
  $item.filter('.' + className.active)
1043
- .addClass(className.filtered)
1044
- ;
966
+ .addClass(className.filtered);
1045
967
  }
1046
968
  },
1047
969
 
@@ -1064,14 +986,12 @@
1064
986
  },
1065
987
 
1066
988
  forceSelection: function () {
1067
- var
1068
- $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
1069
- $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),
1070
- $selectedItem = $currentlySelected.length > 0
1071
- ? $currentlySelected
1072
- : $activeItem,
1073
- hasSelected = $selectedItem.length > 0
1074
- ;
989
+ let $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0);
990
+ let $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0);
991
+ let $selectedItem = $currentlySelected.length > 0
992
+ ? $currentlySelected
993
+ : $activeItem;
994
+ let hasSelected = $selectedItem.length > 0;
1075
995
  if (settings.allowAdditions || (hasSelected && !module.is.multiple())) {
1076
996
  module.debug('Forcing partial selection to selected item', $selectedItem);
1077
997
  module.event.item.click.call($selectedItem, {}, true);
@@ -1086,7 +1006,7 @@
1086
1006
  module.clear();
1087
1007
  }
1088
1008
  module.debug('Creating dropdown with specified values', values);
1089
- var menuConfig = {};
1009
+ let menuConfig = {};
1090
1010
  menuConfig[fields.values] = values;
1091
1011
  module.setup.menu(menuConfig);
1092
1012
  $.each(values, function (index, item) {
@@ -1104,13 +1024,11 @@
1104
1024
  $input.html('');
1105
1025
  $input.append('<option disabled selected value></option>');
1106
1026
  $.each(values, function (index, item) {
1107
- var
1108
- value = settings.templates.escape(item[fields.value]),
1109
- name = settings.templates.escape(
1110
- item[fields.name] || '',
1111
- settings
1112
- )
1113
- ;
1027
+ let value = settings.templates.escape(item[fields.value]);
1028
+ let name = settings.templates.escape(
1029
+ item[fields.name] || '',
1030
+ settings
1031
+ );
1114
1032
  $input.append('<option value="' + value + '"' + (item.selected === true ? ' selected' : '') + '>' + name + '</option>');
1115
1033
  });
1116
1034
  module.observe.select();
@@ -1120,11 +1038,9 @@
1120
1038
 
1121
1039
  event: {
1122
1040
  paste: function (event) {
1123
- var
1124
- pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
1125
- tokens = pasteValue.split(settings.delimiter),
1126
- notFoundTokens = []
1127
- ;
1041
+ let pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text');
1042
+ let tokens = pasteValue.split(settings.delimiter);
1043
+ let notFoundTokens = [];
1128
1044
  tokens.forEach(function (value) {
1129
1045
  if (module.set.selected(module.escape.htmlEntities(value.trim()), null, false, true) === false) {
1130
1046
  notFoundTokens.push(value.trim());
@@ -1132,13 +1048,12 @@
1132
1048
  });
1133
1049
  event.preventDefault();
1134
1050
  if (notFoundTokens.length > 0) {
1135
- var searchEl = $search[0],
1136
- startPos = searchEl.selectionStart,
1137
- endPos = searchEl.selectionEnd,
1138
- orgText = searchEl.value,
1139
- pasteText = notFoundTokens.join(settings.delimiter),
1140
- newEndPos = startPos + pasteText.length
1141
- ;
1051
+ let searchEl = $search[0];
1052
+ let startPos = searchEl.selectionStart;
1053
+ let endPos = searchEl.selectionEnd;
1054
+ let orgText = searchEl.value;
1055
+ let pasteText = notFoundTokens.join(settings.delimiter);
1056
+ let newEndPos = startPos + pasteText.length;
1142
1057
  $search.val(orgText.slice(0, startPos) + pasteText + orgText.slice(endPos));
1143
1058
  searchEl.selectionStart = newEndPos;
1144
1059
  searchEl.selectionEnd = newEndPos;
@@ -1182,9 +1097,7 @@
1182
1097
  }
1183
1098
  },
1184
1099
  click: function (event) {
1185
- var
1186
- $target = $(event.target)
1187
- ;
1100
+ let $target = $(event.target);
1188
1101
  // focus search
1189
1102
  if ($target.is($module)) {
1190
1103
  if (!module.is.focusedOnSearch()) {
@@ -1268,16 +1181,14 @@
1268
1181
  },
1269
1182
  label: {
1270
1183
  click: function (event) {
1271
- var
1272
- $label = $(this),
1273
- $labels = $module.find(selector.label),
1274
- $activeLabels = $labels.filter('.' + className.active),
1275
- $nextActive = $label.nextAll('.' + className.active),
1276
- $prevActive = $label.prevAll('.' + className.active),
1277
- $range = $nextActive.length > 0
1278
- ? $label.nextUntil($nextActive).add($activeLabels).add($label)
1279
- : $label.prevUntil($prevActive).add($activeLabels).add($label)
1280
- ;
1184
+ let $label = $(this);
1185
+ let $labels = $module.find(selector.label);
1186
+ let $activeLabels = $labels.filter('.' + className.active);
1187
+ let $nextActive = $label.nextAll('.' + className.active);
1188
+ let $prevActive = $label.prevAll('.' + className.active);
1189
+ let $range = $nextActive.length > 0
1190
+ ? $label.nextUntil($nextActive).add($activeLabels).add($label)
1191
+ : $label.prevUntil($prevActive).add($activeLabels).add($label);
1281
1192
  if (event.shiftKey) {
1282
1193
  $activeLabels.removeClass(className.active);
1283
1194
  $range.addClass(className.active);
@@ -1293,9 +1204,7 @@
1293
1204
  },
1294
1205
  remove: {
1295
1206
  click: function (event) {
1296
- var
1297
- $label = $(this).parent()
1298
- ;
1207
+ let $label = $(this).parent();
1299
1208
  if ($label.hasClass(className.active)) {
1300
1209
  // remove all selected labels
1301
1210
  module.remove.activeLabels();
@@ -1308,11 +1217,9 @@
1308
1217
  },
1309
1218
  test: {
1310
1219
  toggle: function (event) {
1311
- var
1312
- toggleBehavior = module.is.multiple()
1313
- ? module.show
1314
- : module.toggle
1315
- ;
1220
+ let toggleBehavior = module.is.multiple()
1221
+ ? module.show
1222
+ : module.toggle;
1316
1223
  if (module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) {
1317
1224
  return;
1318
1225
  }
@@ -1356,18 +1263,16 @@
1356
1263
  },
1357
1264
  menu: {
1358
1265
  mutation: function (mutations) {
1359
- var
1360
- mutation = mutations[0],
1361
- $addedNode = mutation.addedNodes
1362
- ? $(mutation.addedNodes[0])
1363
- : $(false),
1364
- $removedNode = mutation.removedNodes
1365
- ? $(mutation.removedNodes[0])
1366
- : $(false),
1367
- $changedNodes = $addedNode.add($removedNode),
1368
- isUserAddition = $changedNodes.is(selector.addition) || $changedNodes.closest(selector.addition).length > 0,
1369
- isMessage = $changedNodes.is(selector.message) || $changedNodes.closest(selector.message).length > 0
1370
- ;
1266
+ let mutation = mutations[0];
1267
+ let $addedNode = mutation.addedNodes
1268
+ ? $(mutation.addedNodes[0])
1269
+ : $(false);
1270
+ let $removedNode = mutation.removedNodes
1271
+ ? $(mutation.removedNodes[0])
1272
+ : $(false);
1273
+ let $changedNodes = $addedNode.add($removedNode);
1274
+ let isUserAddition = $changedNodes.is(selector.addition) || $changedNodes.closest(selector.addition).length > 0;
1275
+ let isMessage = $changedNodes.is(selector.message) || $changedNodes.closest(selector.message).length > 0;
1371
1276
  if (isUserAddition || isMessage) {
1372
1277
  module.debug('Updating item selector cache');
1373
1278
  module.refreshItems();
@@ -1385,14 +1290,12 @@
1385
1290
  },
1386
1291
  item: {
1387
1292
  mouseenter: function (event) {
1388
- var
1389
- $target = $(event.target),
1390
- $item = $(this),
1391
- $subMenu = $item.children(selector.menu),
1392
- $otherMenus = $item.siblings(selector.item).children(selector.menu),
1393
- hasSubMenu = $subMenu.length > 0,
1394
- isBubbledEvent = $subMenu.find($target).length > 0
1395
- ;
1293
+ let $target = $(event.target);
1294
+ let $item = $(this);
1295
+ let $subMenu = $item.children(selector.menu);
1296
+ let $otherMenus = $item.siblings(selector.item).children(selector.menu);
1297
+ let hasSubMenu = $subMenu.length > 0;
1298
+ let isBubbledEvent = $subMenu.find($target).length > 0;
1396
1299
  if (!isBubbledEvent && hasSubMenu) {
1397
1300
  clearTimeout(module.itemTimer);
1398
1301
  module.itemTimer = setTimeout(function () {
@@ -1406,9 +1309,7 @@
1406
1309
  }
1407
1310
  },
1408
1311
  mouseleave: function (event) {
1409
- var
1410
- $subMenu = $(this).find(selector.menu)
1411
- ;
1312
+ let $subMenu = $(this).find(selector.menu);
1412
1313
  if ($subMenu.length > 0) {
1413
1314
  clearTimeout(module.itemTimer);
1414
1315
  module.itemTimer = setTimeout(function () {
@@ -1420,17 +1321,15 @@
1420
1321
  }
1421
1322
  },
1422
1323
  click: function (event, skipRefocus) {
1423
- var
1424
- $choice = $(this),
1425
- $target = event
1426
- ? $(event.target || '')
1427
- : $(''),
1428
- $subMenu = $choice.find(selector.menu),
1429
- text = module.get.choiceText($choice),
1430
- value = module.get.choiceValue($choice, text),
1431
- hasSubMenu = $subMenu.length > 0,
1432
- isBubbledEvent = $subMenu.find($target).length > 0
1433
- ;
1324
+ let $choice = $(this);
1325
+ let $target = event
1326
+ ? $(event.target || '')
1327
+ : $('');
1328
+ let $subMenu = $choice.find(selector.menu);
1329
+ let text = module.get.choiceText($choice);
1330
+ let value = module.get.choiceValue($choice, text);
1331
+ let hasSubMenu = $subMenu.length > 0;
1332
+ let isBubbledEvent = $subMenu.find($target).length > 0;
1434
1333
  if (document.activeElement.tagName.toLowerCase() !== 'input') {
1435
1334
  $(document.activeElement).trigger('blur');
1436
1335
  }
@@ -1464,27 +1363,23 @@
1464
1363
  document: {
1465
1364
  // label selection should occur even when the element has no focus
1466
1365
  keydown: function (event) {
1467
- var
1468
- pressedKey = event.which,
1469
- isShortcutKey = module.is.inObject(pressedKey, keys)
1470
- ;
1366
+ let pressedKey = event.which;
1367
+ let isShortcutKey = module.is.inObject(pressedKey, keys);
1471
1368
  if (isShortcutKey) {
1472
- var
1473
- $label = $module.find(selector.label),
1474
- $activeLabel = $label.filter('.' + className.active),
1475
- activeValue = $activeLabel.data(metadata.value),
1476
- labelIndex = $label.index($activeLabel),
1477
- labelCount = $label.length,
1478
- hasActiveLabel = $activeLabel.length > 0,
1479
- hasMultipleActive = $activeLabel.length > 1,
1480
- isFirstLabel = labelIndex === 0,
1481
- isLastLabel = labelIndex + 1 === labelCount,
1482
- isSearch = module.is.searchSelection(),
1483
- isFocusedOnSearch = module.is.focusedOnSearch(),
1484
- isFocused = module.is.focused(),
1485
- caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0,
1486
- isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0
1487
- ;
1369
+ let $label = $module.find(selector.label);
1370
+ let $activeLabel = $label.filter('.' + className.active);
1371
+ let activeValue = $activeLabel.data(metadata.value);
1372
+ let labelIndex = $label.index($activeLabel);
1373
+ let labelCount = $label.length;
1374
+ let hasActiveLabel = $activeLabel.length > 0;
1375
+ let hasMultipleActive = $activeLabel.length > 1;
1376
+ let isFirstLabel = labelIndex === 0;
1377
+ let isLastLabel = labelIndex + 1 === labelCount;
1378
+ let isSearch = module.is.searchSelection();
1379
+ let isFocusedOnSearch = module.is.focusedOnSearch();
1380
+ let isFocused = module.is.focused();
1381
+ let caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0;
1382
+ let isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0;
1488
1383
  if (isSearch && !hasActiveLabel && !isFocusedOnSearch) {
1489
1384
  return;
1490
1385
  }
@@ -1507,8 +1402,7 @@
1507
1402
  } else {
1508
1403
  $activeLabel.prev(selector.siblingLabel)
1509
1404
  .addClass(className.active)
1510
- .end()
1511
- ;
1405
+ .end();
1512
1406
  }
1513
1407
  event.preventDefault();
1514
1408
  }
@@ -1583,31 +1477,27 @@
1583
1477
  },
1584
1478
 
1585
1479
  keydown: function (event) {
1586
- var
1587
- pressedKey = event.which,
1588
- isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter
1589
- ;
1480
+ let pressedKey = event.which;
1481
+ let isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter;
1590
1482
  if (isShortcutKey) {
1591
- var
1592
- $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
1593
- $activeItem = $menu.children('.' + className.active).eq(0),
1594
- $selectedItem = $currentlySelected.length > 0
1595
- ? $currentlySelected
1596
- : $activeItem,
1597
- $visibleItems = $selectedItem.length > 0
1598
- ? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
1599
- : $menu.children(':not(.' + className.filtered + ')'),
1600
- $subMenu = $selectedItem.children(selector.menu),
1601
- $parentMenu = $selectedItem.closest(selector.menu),
1602
- inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0,
1603
- hasSubMenu = $subMenu.length > 0,
1604
- hasSelectedItem = $selectedItem.length > 0,
1605
- selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0,
1606
- delimiterPressed = event.key === settings.delimiter && module.is.multiple(),
1607
- isAdditionWithoutMenu = settings.allowAdditions && (pressedKey === keys.enter || delimiterPressed),
1608
- $nextItem,
1609
- isSubMenuItem
1610
- ;
1483
+ let $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0);
1484
+ let $activeItem = $menu.children('.' + className.active).eq(0);
1485
+ let $selectedItem = $currentlySelected.length > 0
1486
+ ? $currentlySelected
1487
+ : $activeItem;
1488
+ let $visibleItems = $selectedItem.length > 0
1489
+ ? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
1490
+ : $menu.children(':not(.' + className.filtered + ')');
1491
+ let $subMenu = $selectedItem.children(selector.menu);
1492
+ let $parentMenu = $selectedItem.closest(selector.menu);
1493
+ let inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0;
1494
+ let hasSubMenu = $subMenu.length > 0;
1495
+ let hasSelectedItem = $selectedItem.length > 0;
1496
+ let selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0;
1497
+ let delimiterPressed = event.key === settings.delimiter && module.is.multiple();
1498
+ let isAdditionWithoutMenu = settings.allowAdditions && (pressedKey === keys.enter || delimiterPressed);
1499
+ let $nextItem;
1500
+ let isSubMenuItem;
1611
1501
  // allow selection with the menu closed
1612
1502
  if (isAdditionWithoutMenu) {
1613
1503
  if (selectedIsSelectable && settings.hideAdditions) {
@@ -1653,12 +1543,10 @@
1653
1543
  module.verbose('Left key pressed, closing sub-menu');
1654
1544
  module.animate.hide(false, $parentMenu);
1655
1545
  $selectedItem
1656
- .removeClass(className.selected)
1657
- ;
1546
+ .removeClass(className.selected);
1658
1547
  $parentMenu
1659
1548
  .closest(selector.item)
1660
- .addClass(className.selected)
1661
- ;
1549
+ .addClass(className.selected);
1662
1550
  event.preventDefault();
1663
1551
  }
1664
1552
  }
@@ -1669,12 +1557,10 @@
1669
1557
  module.verbose('Right key pressed, opening sub-menu');
1670
1558
  module.animate.show(false, $subMenu);
1671
1559
  $selectedItem
1672
- .removeClass(className.selected)
1673
- ;
1560
+ .removeClass(className.selected);
1674
1561
  $subMenu
1675
1562
  .find(selector.item).eq(0)
1676
- .addClass(className.selected)
1677
- ;
1563
+ .addClass(className.selected);
1678
1564
  event.preventDefault();
1679
1565
  }
1680
1566
  }
@@ -1694,11 +1580,9 @@
1694
1580
 
1695
1581
  module.verbose('Up key pressed, changing active item');
1696
1582
  $selectedItem
1697
- .removeClass(className.selected)
1698
- ;
1583
+ .removeClass(className.selected);
1699
1584
  $nextItem
1700
- .addClass(className.selected)
1701
- ;
1585
+ .addClass(className.selected);
1702
1586
  module.set.scrollPosition($nextItem);
1703
1587
  if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1704
1588
  module.set.selectedItem($nextItem);
@@ -1721,11 +1605,9 @@
1721
1605
 
1722
1606
  module.verbose('Down key pressed, changing active item');
1723
1607
  $item
1724
- .removeClass(className.selected)
1725
- ;
1608
+ .removeClass(className.selected);
1726
1609
  $nextItem
1727
- .addClass(className.selected)
1728
- ;
1610
+ .addClass(className.selected);
1729
1611
  module.set.scrollPosition($nextItem);
1730
1612
  if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
1731
1613
  module.set.selectedItem($nextItem);
@@ -1757,6 +1639,7 @@
1757
1639
  }
1758
1640
  // down arrow (open menu)
1759
1641
  if (pressedKey === keys.downArrow && !module.is.visible()) {
1642
+ focused = true;
1760
1643
  module.verbose('Down key pressed, showing dropdown');
1761
1644
  module.show();
1762
1645
  event.preventDefault();
@@ -1772,11 +1655,9 @@
1772
1655
 
1773
1656
  trigger: {
1774
1657
  change: function () {
1775
- var
1776
- inputElement = $input[0]
1777
- ;
1658
+ let inputElement = $input[0];
1778
1659
  if (inputElement) {
1779
- var events = document.createEvent('HTMLEvents');
1660
+ let events = document.createEvent('HTMLEvents');
1780
1661
  module.verbose('Triggering native change event');
1781
1662
  events.initEvent('change', true, false);
1782
1663
  inputElement.dispatchEvent(events);
@@ -1800,11 +1681,9 @@
1800
1681
  selectActionActive = false;
1801
1682
  },
1802
1683
  eventInModule: function (event, callback) {
1803
- var
1804
- $target = $(event.target),
1805
- inDocument = $target.closest(document.documentElement).length > 0,
1806
- inModule = $target.closest($module).length > 0
1807
- ;
1684
+ let $target = $(event.target);
1685
+ let inDocument = $target.closest(document.documentElement).length > 0;
1686
+ let inModule = $target.closest($module).length > 0;
1808
1687
  callback = isFunction(callback)
1809
1688
  ? callback
1810
1689
  : function () {};
@@ -1820,13 +1699,11 @@
1820
1699
  return false;
1821
1700
  },
1822
1701
  eventOnElement: function (event, callback) {
1823
- var
1824
- $target = $(event.target),
1825
- $label = $target.closest(selector.siblingLabel),
1826
- inVisibleDOM = document.body.contains(event.target),
1827
- notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels),
1828
- notInMenu = $target.closest($menu).length === 0
1829
- ;
1702
+ let $target = $(event.target);
1703
+ let $label = $target.closest(selector.siblingLabel);
1704
+ let inVisibleDOM = document.body.contains(event.target);
1705
+ let notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels);
1706
+ let notInMenu = $target.closest($menu).length === 0;
1830
1707
  callback = isFunction(callback)
1831
1708
  ? callback
1832
1709
  : function () {};
@@ -1919,10 +1796,8 @@
1919
1796
  return Math.ceil($sizer.width() + 1);
1920
1797
  },
1921
1798
  selectionCount: function () {
1922
- var
1923
- values = module.get.values(),
1924
- count
1925
- ;
1799
+ let values = module.get.values();
1800
+ let count;
1926
1801
  count = module.is.multiple()
1927
1802
  ? (Array.isArray(values) ? values.length : 0)
1928
1803
  : (module.get.value() !== '' ? 1 : 0);
@@ -1935,9 +1810,7 @@
1935
1810
  : settings.transition;
1936
1811
  },
1937
1812
  userValues: function () {
1938
- var
1939
- values = module.get.values(true)
1940
- ;
1813
+ let values = module.get.values(true);
1941
1814
  if (!values) {
1942
1815
  return false;
1943
1816
  }
@@ -1955,11 +1828,9 @@
1955
1828
  });
1956
1829
  },
1957
1830
  caretPosition: function (returnEndPos) {
1958
- var
1959
- input = $search[0],
1960
- range,
1961
- rangeLength
1962
- ;
1831
+ let input = $search[0];
1832
+ let range;
1833
+ let rangeLength;
1963
1834
  if (returnEndPos && 'selectionEnd' in input) {
1964
1835
  return input.selectionEnd;
1965
1836
  }
@@ -1979,12 +1850,10 @@
1979
1850
  }
1980
1851
  },
1981
1852
  value: function () {
1982
- var
1983
- value = $input.length > 0
1984
- ? $input.val()
1985
- : $module.data(metadata.value),
1986
- isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === ''
1987
- ;
1853
+ let value = $input.length > 0
1854
+ ? $input.val()
1855
+ : $module.data(metadata.value);
1856
+ let isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === '';
1988
1857
 
1989
1858
  // prevents the placeholder element from being selected when multiple
1990
1859
  return value === undefined || isEmptyMultiselect
@@ -1992,9 +1861,7 @@
1992
1861
  : value;
1993
1862
  },
1994
1863
  values: function (raw) {
1995
- var
1996
- value = module.get.value()
1997
- ;
1864
+ let value = module.get.value();
1998
1865
  if (value === '') {
1999
1866
  return '';
2000
1867
  }
@@ -2008,18 +1875,14 @@
2008
1875
  : value;
2009
1876
  },
2010
1877
  remoteValues: function () {
2011
- var
2012
- values = module.get.values(),
2013
- remoteValues = false
2014
- ;
1878
+ let values = module.get.values();
1879
+ let remoteValues = false;
2015
1880
  if (values) {
2016
1881
  if (typeof values === 'string') {
2017
1882
  values = [values];
2018
1883
  }
2019
1884
  $.each(values, function (index, value) {
2020
- var
2021
- name = module.read.remoteData(value)
2022
- ;
1885
+ let name = module.read.remoteData(value);
2023
1886
  module.verbose('Restoring value from session data', name, value);
2024
1887
  if (name) {
2025
1888
  if (!remoteValues) {
@@ -2068,9 +1931,7 @@
2068
1931
  : String(choiceText));
2069
1932
  },
2070
1933
  inputEvent: function () {
2071
- var
2072
- input = $search[0]
2073
- ;
1934
+ let input = $search[0];
2074
1935
  if (input) {
2075
1936
  return input.oninput !== undefined
2076
1937
  ? 'input'
@@ -2082,26 +1943,22 @@
2082
1943
  return false;
2083
1944
  },
2084
1945
  selectValues: function () {
2085
- var
2086
- select = {},
2087
- oldGroup = [],
2088
- values = []
2089
- ;
1946
+ let select = {};
1947
+ let oldGroup = [];
1948
+ let values = [];
2090
1949
  $module
2091
1950
  .find('option')
2092
1951
  .each(function () {
2093
- var
2094
- $option = $(this),
2095
- name = $option.html(),
2096
- disabled = $option.attr('disabled'),
2097
- value = $option.attr('value') !== undefined
2098
- ? $option.attr('value')
2099
- : name,
2100
- text = $option.data(metadata.text) !== undefined
2101
- ? $option.data(metadata.text)
2102
- : name,
2103
- group = $option.parent('optgroup')
2104
- ;
1952
+ let $option = $(this);
1953
+ let name = $option.html();
1954
+ let disabled = $option.attr('disabled');
1955
+ let value = $option.attr('value') !== undefined
1956
+ ? $option.attr('value')
1957
+ : name;
1958
+ let text = $option.data(metadata.text) !== undefined
1959
+ ? $option.data(metadata.text)
1960
+ : name;
1961
+ let group = $option.parent('optgroup');
2105
1962
  if (settings.placeholder === 'auto' && value === '') {
2106
1963
  select.placeholder = name;
2107
1964
  } else {
@@ -2120,8 +1977,7 @@
2120
1977
  disabled: disabled,
2121
1978
  });
2122
1979
  }
2123
- })
2124
- ;
1980
+ });
2125
1981
  if (settings.placeholder && settings.placeholder !== 'auto') {
2126
1982
  module.debug('Setting placeholder value to', settings.placeholder);
2127
1983
  select.placeholder = settings.placeholder;
@@ -2151,20 +2007,16 @@
2151
2007
  return $item.filter('.' + className.active);
2152
2008
  },
2153
2009
  selectedItem: function () {
2154
- var
2155
- $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)
2156
- ;
2010
+ let $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected);
2157
2011
 
2158
2012
  return $selectedItem.length > 0
2159
2013
  ? $selectedItem
2160
2014
  : $item.eq(0);
2161
2015
  },
2162
2016
  itemWithAdditions: function (value) {
2163
- var
2164
- $items = module.get.item(value),
2165
- $userItems = module.create.userChoice(value),
2166
- hasUserItems = $userItems && $userItems.length > 0
2167
- ;
2017
+ let $items = module.get.item(value);
2018
+ let $userItems = module.create.userChoice(value);
2019
+ let hasUserItems = $userItems && $userItems.length > 0;
2168
2020
  if (hasUserItems) {
2169
2021
  $items = $items.length > 0
2170
2022
  ? $items.add($userItems)
@@ -2174,11 +2026,9 @@
2174
2026
  return $items;
2175
2027
  },
2176
2028
  item: function (value, strict) {
2177
- var
2178
- $selectedItem = false,
2179
- shouldSearch,
2180
- isMultiple
2181
- ;
2029
+ let $selectedItem = false;
2030
+ let shouldSearch;
2031
+ let isMultiple;
2182
2032
  value = value !== undefined
2183
2033
  ? value
2184
2034
  : (module.get.values() !== undefined
@@ -2194,11 +2044,9 @@
2194
2044
  if (shouldSearch) {
2195
2045
  $item
2196
2046
  .each(function () {
2197
- var
2198
- $choice = $(this),
2199
- optionText = module.get.choiceText($choice),
2200
- optionValue = module.get.choiceValue($choice, optionText)
2201
- ;
2047
+ let $choice = $(this);
2048
+ let optionText = module.get.choiceText($choice);
2049
+ let optionValue = module.get.choiceValue($choice, optionText);
2202
2050
  // safe early exit
2203
2051
  if (optionValue === null || optionValue === undefined) {
2204
2052
  return;
@@ -2228,8 +2076,7 @@
2228
2076
  return true;
2229
2077
  }
2230
2078
  }
2231
- })
2232
- ;
2079
+ });
2233
2080
  }
2234
2081
 
2235
2082
  return $selectedItem;
@@ -2279,10 +2126,8 @@
2279
2126
  module.restore.defaultValue();
2280
2127
  },
2281
2128
  defaultText: function () {
2282
- var
2283
- defaultText = module.get.defaultText(),
2284
- placeholderText = module.get.placeholderText
2285
- ;
2129
+ let defaultText = module.get.defaultText();
2130
+ let placeholderText = module.get.placeholderText;
2286
2131
  if (defaultText === placeholderText) {
2287
2132
  module.debug('Restoring default placeholder text', defaultText);
2288
2133
  module.set.placeholderText(defaultText);
@@ -2295,9 +2140,7 @@
2295
2140
  module.set.placeholderText();
2296
2141
  },
2297
2142
  defaultValue: function () {
2298
- var
2299
- defaultValue = module.get.defaultValue()
2300
- ;
2143
+ let defaultValue = module.get.defaultValue();
2301
2144
  if (defaultValue !== undefined) {
2302
2145
  module.debug('Restoring default value', defaultValue);
2303
2146
  if (defaultValue !== '') {
@@ -2337,7 +2180,7 @@
2337
2180
  } else {
2338
2181
  module.set.selected();
2339
2182
  }
2340
- var value = module.get.value();
2183
+ let value = module.get.value();
2341
2184
  if (value && value !== '' && !(Array.isArray(value) && value.length === 0)) {
2342
2185
  $input.removeClass(className.noselection);
2343
2186
  } else {
@@ -2346,9 +2189,7 @@
2346
2189
  module.remove.initialLoad();
2347
2190
  },
2348
2191
  remoteValues: function () {
2349
- var
2350
- values = module.get.remoteValues()
2351
- ;
2192
+ let values = module.get.remoteValues();
2352
2193
  module.debug('Recreating selected from session data', values);
2353
2194
  if (values) {
2354
2195
  if (module.is.single()) {
@@ -2366,9 +2207,7 @@
2366
2207
 
2367
2208
  read: {
2368
2209
  remoteData: function (value) {
2369
- var
2370
- name
2371
- ;
2210
+ let name;
2372
2211
  if (window.Storage === undefined) {
2373
2212
  module.error(error.noStorage);
2374
2213
 
@@ -2389,23 +2228,17 @@
2389
2228
  module.save.defaultValue();
2390
2229
  },
2391
2230
  defaultValue: function () {
2392
- var
2393
- value = module.get.value()
2394
- ;
2231
+ let value = module.get.value();
2395
2232
  module.verbose('Saving default value as', value);
2396
2233
  $module.data(metadata.defaultValue, value);
2397
2234
  },
2398
2235
  defaultText: function () {
2399
- var
2400
- text = module.get.text()
2401
- ;
2236
+ let text = module.get.text();
2402
2237
  module.verbose('Saving default text as', text);
2403
2238
  $module.data(metadata.defaultText, text);
2404
2239
  },
2405
2240
  placeholderText: function () {
2406
- var
2407
- text
2408
- ;
2241
+ let text;
2409
2242
  if (settings.placeholder !== false && $text.hasClass(className.placeholder)) {
2410
2243
  text = module.get.text();
2411
2244
  module.verbose('Saving placeholder text as', text);
@@ -2445,21 +2278,19 @@
2445
2278
  },
2446
2279
 
2447
2280
  scrollPage: function (direction, $selectedItem) {
2448
- var
2449
- $currentItem = $selectedItem || module.get.selectedItem(),
2450
- $menu = $currentItem.closest(selector.menu),
2451
- menuHeight = $menu.outerHeight(),
2452
- currentScroll = $menu.scrollTop(),
2453
- itemHeight = $item.eq(0).outerHeight(),
2454
- itemsPerPage = Math.floor(menuHeight / itemHeight),
2455
- newScroll = direction === 'up'
2456
- ? currentScroll - (itemHeight * itemsPerPage)
2457
- : currentScroll + (itemHeight * itemsPerPage),
2458
- $selectableItem = $item.not(selector.unselectable),
2459
- isWithinRange,
2460
- $nextSelectedItem,
2461
- elementIndex
2462
- ;
2281
+ let $currentItem = $selectedItem || module.get.selectedItem();
2282
+ let $menu = $currentItem.closest(selector.menu);
2283
+ let menuHeight = $menu.outerHeight();
2284
+ let currentScroll = $menu.scrollTop();
2285
+ let itemHeight = $item.eq(0).outerHeight();
2286
+ let itemsPerPage = Math.floor(menuHeight / itemHeight);
2287
+ let newScroll = direction === 'up'
2288
+ ? currentScroll - (itemHeight * itemsPerPage)
2289
+ : currentScroll + (itemHeight * itemsPerPage);
2290
+ let $selectableItem = $item.not(selector.unselectable);
2291
+ let isWithinRange;
2292
+ let $nextSelectedItem;
2293
+ let elementIndex;
2463
2294
  elementIndex = direction === 'up'
2464
2295
  ? $selectableItem.index($currentItem) - itemsPerPage
2465
2296
  : $selectableItem.index($currentItem) + itemsPerPage;
@@ -2474,33 +2305,28 @@
2474
2305
  if ($nextSelectedItem.length > 0) {
2475
2306
  module.debug('Scrolling page', direction, $nextSelectedItem);
2476
2307
  $currentItem
2477
- .removeClass(className.selected)
2478
- ;
2308
+ .removeClass(className.selected);
2479
2309
  $nextSelectedItem
2480
- .addClass(className.selected)
2481
- ;
2310
+ .addClass(className.selected);
2482
2311
  if (settings.selectOnKeydown && module.is.single() && !$nextSelectedItem.hasClass(className.actionable)) {
2483
2312
  module.set.selectedItem($nextSelectedItem);
2484
2313
  }
2485
2314
  $menu
2486
- .scrollTop(newScroll)
2487
- ;
2315
+ .scrollTop(newScroll);
2488
2316
  }
2489
2317
  },
2490
2318
 
2491
2319
  set: {
2492
2320
  filtered: function () {
2493
- var
2494
- isMultiple = module.is.multiple(),
2495
- isSearch = module.is.searchSelection(),
2496
- isSearchMultiple = isMultiple && isSearch,
2497
- searchValue = isSearch
2498
- ? module.get.query()
2499
- : '',
2500
- hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0,
2501
- searchWidth = module.get.searchWidth(),
2502
- valueIsSet = searchValue !== ''
2503
- ;
2321
+ let isMultiple = module.is.multiple();
2322
+ let isSearch = module.is.searchSelection();
2323
+ let isSearchMultiple = isMultiple && isSearch;
2324
+ let searchValue = isSearch
2325
+ ? module.get.query()
2326
+ : '';
2327
+ let hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0;
2328
+ let searchWidth = module.get.searchWidth();
2329
+ let valueIsSet = searchValue !== '';
2504
2330
  if (isMultiple && hasSearchValue) {
2505
2331
  module.verbose('Adjusting input width', searchWidth);
2506
2332
  $search.css('width', searchWidth + 'px');
@@ -2529,21 +2355,17 @@
2529
2355
  if (module.is.searchSelection()) {
2530
2356
  module.debug('Added tabindex to searchable dropdown');
2531
2357
  $search
2532
- .val('')
2533
- ;
2358
+ .val('');
2534
2359
  module.check.disabled();
2535
2360
  $menu
2536
- .attr('tabindex', -1)
2537
- ;
2361
+ .attr('tabindex', -1);
2538
2362
  } else {
2539
2363
  module.debug('Added tabindex to dropdown');
2540
2364
  if ($module.attr('tabindex') === undefined) {
2541
2365
  $module
2542
- .attr('tabindex', $input.attr('tabindex') || 0)
2543
- ;
2366
+ .attr('tabindex', $input.attr('tabindex') || 0);
2544
2367
  $menu
2545
- .attr('tabindex', -1)
2546
- ;
2368
+ .attr('tabindex', -1);
2547
2369
  }
2548
2370
  }
2549
2371
  $input.removeAttr('tabindex');
@@ -2560,24 +2382,20 @@
2560
2382
  }
2561
2383
  },
2562
2384
  partialSearch: function (text) {
2563
- var
2564
- length = module.get.query().length
2565
- ;
2385
+ let length = module.get.query().length;
2566
2386
  $search.val(text.slice(0, length));
2567
2387
  },
2568
2388
  scrollPosition: function ($item, forceScroll) {
2569
- var
2570
- edgeTolerance = 5,
2571
- $menu,
2572
- hasActive,
2573
- offset,
2574
- itemOffset,
2575
- menuOffset,
2576
- menuScroll,
2577
- menuHeight,
2578
- abovePage,
2579
- belowPage
2580
- ;
2389
+ let edgeTolerance = 5;
2390
+ let $menu;
2391
+ let hasActive;
2392
+ let offset;
2393
+ let itemOffset;
2394
+ let menuOffset;
2395
+ let menuScroll;
2396
+ let menuHeight;
2397
+ let abovePage;
2398
+ let belowPage;
2581
2399
 
2582
2400
  $item = $item || module.get.selectedItem();
2583
2401
  $menu = $item.closest(selector.menu);
@@ -2622,8 +2440,7 @@
2622
2440
  }
2623
2441
  module.debug('Changing text', text, $text);
2624
2442
  $text
2625
- .removeClass(className.filtered)
2626
- ;
2443
+ .removeClass(className.filtered);
2627
2444
  if (settings.preserveHTML) {
2628
2445
  $text.html(text);
2629
2446
  } else {
@@ -2632,11 +2449,9 @@
2632
2449
  }
2633
2450
  },
2634
2451
  selectedItem: function ($item) {
2635
- var
2636
- value = module.get.choiceValue($item),
2637
- searchText = module.get.choiceText($item, false),
2638
- text = module.get.choiceText($item)
2639
- ;
2452
+ let value = module.get.choiceValue($item);
2453
+ let searchText = module.get.choiceText($item, false);
2454
+ let text = module.get.choiceText($item);
2640
2455
  module.debug('Setting user selection to item', $item);
2641
2456
  module.remove.activeItem();
2642
2457
  module.set.partialSearch(searchText);
@@ -2645,12 +2460,10 @@
2645
2460
  module.set.text(text);
2646
2461
  },
2647
2462
  selectedLetter: function (letter) {
2648
- var
2649
- $selectedItem = $item.filter('.' + className.selected),
2650
- alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),
2651
- $nextValue = false,
2652
- $nextItem
2653
- ;
2463
+ let $selectedItem = $item.filter('.' + className.selected);
2464
+ let alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter);
2465
+ let $nextValue = false;
2466
+ let $nextItem;
2654
2467
  // check next of the same letter
2655
2468
  if (alreadySelectedLetter) {
2656
2469
  $nextItem = $selectedItem.nextAll($item).eq(0);
@@ -2667,8 +2480,7 @@
2667
2480
 
2668
2481
  return false;
2669
2482
  }
2670
- })
2671
- ;
2483
+ });
2672
2484
  }
2673
2485
  // set the next value
2674
2486
  if ($nextValue) {
@@ -2704,11 +2516,11 @@
2704
2516
  }
2705
2517
  },
2706
2518
  upward: function ($currentMenu) {
2707
- var $element = $currentMenu || $module;
2519
+ let $element = $currentMenu || $module;
2708
2520
  $element.addClass(className.upward);
2709
2521
  },
2710
2522
  leftward: function ($currentMenu) {
2711
- var $element = $currentMenu || $menu;
2523
+ let $element = $currentMenu || $menu;
2712
2524
  $element.addClass(className.leftward);
2713
2525
  },
2714
2526
  value: function (value, text, $selected, preventChangeTrigger) {
@@ -2722,14 +2534,12 @@
2722
2534
  } else {
2723
2535
  $input.addClass(className.noselection);
2724
2536
  }
2725
- var
2726
- escapedValue = module.escape.value(value),
2727
- hasInput = $input.length > 0,
2728
- currentValue = module.get.values(),
2729
- stringValue = value !== undefined
2730
- ? String(value)
2731
- : value
2732
- ;
2537
+ let escapedValue = module.escape.value(value);
2538
+ let hasInput = $input.length > 0;
2539
+ let currentValue = module.get.values();
2540
+ let stringValue = value !== undefined
2541
+ ? String(value)
2542
+ : value;
2733
2543
  if (hasInput) {
2734
2544
  if (!settings.allowReselection && stringValue == currentValue) {
2735
2545
  module.verbose('Skipping value update already same value', value, currentValue);
@@ -2745,8 +2555,7 @@
2745
2555
  module.debug('Updating input value', escapedValue, currentValue);
2746
2556
  internalChange = true;
2747
2557
  $input
2748
- .val(escapedValue)
2749
- ;
2558
+ .val(escapedValue);
2750
2559
  if (settings.fireOnInit === false && module.is.initialLoad()) {
2751
2560
  module.debug('Input native change event ignored on initial load');
2752
2561
  } else if (preventChangeTrigger !== true) {
@@ -2767,8 +2576,7 @@
2767
2576
  },
2768
2577
  active: function () {
2769
2578
  $module
2770
- .addClass(className.active)
2771
- ;
2579
+ .addClass(className.active);
2772
2580
  },
2773
2581
  multiple: function () {
2774
2582
  $module.addClass(className.multiple);
@@ -2791,9 +2599,7 @@
2791
2599
  preventChangeTrigger = $selectedItem;
2792
2600
  $selectedItem = undefined;
2793
2601
  }
2794
- var
2795
- isMultiple = module.is.multiple()
2796
- ;
2602
+ let isMultiple = module.is.multiple();
2797
2603
  $selectedItem = settings.allowAdditions
2798
2604
  ? $selectedItem || module.get.itemWithAdditions(value)
2799
2605
  : $selectedItem || module.get.item(value);
@@ -2821,17 +2627,15 @@
2821
2627
  // select each item
2822
2628
  $selectedItem
2823
2629
  .each(function () {
2824
- var
2825
- $selected = $(this),
2826
- selectedText = module.get.choiceText($selected),
2827
- selectedValue = module.get.choiceValue($selected, selectedText),
2828
-
2829
- isFiltered = $selected.hasClass(className.filtered),
2830
- isActive = $selected.hasClass(className.active),
2831
- isActionable = $selected.hasClass(className.actionable),
2832
- isUserValue = $selected.hasClass(className.addition),
2833
- shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1
2834
- ;
2630
+ let $selected = $(this);
2631
+ let selectedText = module.get.choiceText($selected);
2632
+ let selectedValue = module.get.choiceValue($selected, selectedText);
2633
+
2634
+ let isFiltered = $selected.hasClass(className.filtered);
2635
+ let isActive = $selected.hasClass(className.active);
2636
+ let isActionable = $selected.hasClass(className.actionable);
2637
+ let isUserValue = $selected.hasClass(className.addition);
2638
+ let shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1;
2835
2639
  if (isActionable) {
2836
2640
  if ((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
2837
2641
  module.save.remoteData(selectedText, selectedValue);
@@ -2867,11 +2671,9 @@
2867
2671
  module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
2868
2672
  $selected
2869
2673
  .addClass(className.active)
2870
- .addClass(className.selected)
2871
- ;
2674
+ .addClass(className.selected);
2872
2675
  }
2873
- })
2874
- ;
2676
+ });
2875
2677
  if (!keepSearchTerm) {
2876
2678
  module.remove.searchTerm();
2877
2679
  }
@@ -2884,21 +2686,18 @@
2884
2686
 
2885
2687
  add: {
2886
2688
  label: function (value, text, shouldAnimate) {
2887
- var
2888
- $next = module.is.searchSelection()
2889
- ? $search
2890
- : $text,
2891
- escapedValue = module.escape.value(value),
2892
- $label
2893
- ;
2689
+ let $next = module.is.searchSelection()
2690
+ ? $search
2691
+ : $text;
2692
+ let escapedValue = module.escape.value(value);
2693
+ let $label;
2894
2694
  if (settings.ignoreCase) {
2895
2695
  escapedValue = escapedValue.toLowerCase();
2896
2696
  }
2897
2697
  $label = $('<a />')
2898
2698
  .addClass(className.label)
2899
2699
  .attr('data-' + metadata.value, escapedValue)
2900
- .html(templates.label(escapedValue, text, settings))
2901
- ;
2700
+ .html(templates.label(escapedValue, text, settings));
2902
2701
  $label = settings.onLabelCreate.call($label, escapedValue, text);
2903
2702
 
2904
2703
  if (module.has.label(value)) {
@@ -2920,38 +2719,30 @@
2920
2719
  verbose: settings.verbose,
2921
2720
  silent: settings.silent,
2922
2721
  duration: settings.label.duration,
2923
- })
2924
- ;
2722
+ });
2925
2723
  } else {
2926
2724
  module.debug('Adding selection label', $label);
2927
2725
  $label
2928
- .insertBefore($next)
2929
- ;
2726
+ .insertBefore($next);
2930
2727
  }
2931
2728
  },
2932
2729
  message: function (message) {
2933
- var
2934
- $message = $menu.children(selector.message),
2935
- html = settings.templates.message(module.add.variables(message))
2936
- ;
2730
+ let $message = $menu.children(selector.message);
2731
+ let html = settings.templates.message(module.add.variables(message));
2937
2732
  if ($message.length > 0) {
2938
2733
  $message
2939
- .html(html)
2940
- ;
2734
+ .html(html);
2941
2735
  } else {
2942
2736
  $('<div/>')
2943
2737
  .html(html)
2944
2738
  .addClass(className.message)
2945
- .appendTo($menu)
2946
- ;
2739
+ .appendTo($menu);
2947
2740
  }
2948
2741
  },
2949
2742
  optionValue: function (value) {
2950
- var
2951
- escapedValue = module.escape.value(value),
2952
- $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
2953
- hasOption = $option.length > 0
2954
- ;
2743
+ let escapedValue = module.escape.value(value);
2744
+ let $option = $input.find('option[value="' + CSS.escape(escapedValue) + '"]');
2745
+ let hasOption = $option.length > 0;
2955
2746
  if (hasOption) {
2956
2747
  return;
2957
2748
  }
@@ -2965,19 +2756,16 @@
2965
2756
  .prop('value', escapedValue)
2966
2757
  .addClass(className.addition)
2967
2758
  .text(value)
2968
- .appendTo($input)
2969
- ;
2759
+ .appendTo($input);
2970
2760
  module.verbose('Adding user addition as an <option>', value);
2971
2761
  module.observe.select();
2972
2762
  },
2973
2763
  userSuggestion: function (value) {
2974
- var
2975
- $addition = $menu.children(selector.addition),
2976
- $existingItem = module.get.item(value),
2977
- alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length > 0,
2978
- hasUserSuggestion = $addition.length > 0,
2979
- html
2980
- ;
2764
+ let $addition = $menu.children(selector.addition);
2765
+ let $existingItem = module.get.item(value);
2766
+ let alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length > 0;
2767
+ let hasUserSuggestion = $addition.length > 0;
2768
+ let html;
2981
2769
  if (settings.useLabels && module.has.maxSelections()) {
2982
2770
  return;
2983
2771
  }
@@ -2992,38 +2780,32 @@
2992
2780
  .data(metadata.text, value)
2993
2781
  .attr('data-' + metadata.value, value)
2994
2782
  .attr('data-' + metadata.text, value)
2995
- .removeClass(className.filtered)
2996
- ;
2783
+ .removeClass(className.filtered);
2997
2784
  if (!settings.hideAdditions) {
2998
2785
  html = settings.templates.addition(module.add.variables(message.addResult, value));
2999
2786
  $addition
3000
- .html(html)
3001
- ;
2787
+ .html(html);
3002
2788
  }
3003
2789
  module.verbose('Replacing user suggestion with new value', $addition);
3004
2790
  } else {
3005
2791
  $addition = module.create.userChoice(value);
3006
2792
  $addition
3007
- .prependTo($menu)
3008
- ;
2793
+ .prependTo($menu);
3009
2794
  module.verbose('Adding item choice to menu corresponding with user choice addition', $addition);
3010
2795
  }
3011
2796
  if (!settings.hideAdditions || module.is.allFiltered()) {
3012
2797
  $addition
3013
2798
  .addClass(className.selected)
3014
2799
  .siblings()
3015
- .removeClass(className.selected)
3016
- ;
2800
+ .removeClass(className.selected);
3017
2801
  }
3018
2802
  module.refreshItems();
3019
2803
  },
3020
2804
  variables: function (message, term) {
3021
- var
3022
- hasCount = message.search('{count}') !== -1,
3023
- hasMaxCount = message.search('{maxCount}') !== -1,
3024
- hasTerm = message.search('{term}') !== -1,
3025
- query
3026
- ;
2805
+ let hasCount = message.search('{count}') !== -1;
2806
+ let hasMaxCount = message.search('{maxCount}') !== -1;
2807
+ let hasTerm = message.search('{term}') !== -1;
2808
+ let query;
3027
2809
  module.verbose('Adding templated variables to message', message);
3028
2810
  if (hasCount) {
3029
2811
  message = message.replace('{count}', module.get.selectionCount());
@@ -3044,10 +2826,8 @@
3044
2826
  $selectedItem = undefined;
3045
2827
  addedText = undefined;
3046
2828
  }
3047
- var
3048
- currentValue = module.get.values(true),
3049
- newValue
3050
- ;
2829
+ let currentValue = module.get.values(true);
2830
+ let newValue;
3051
2831
  if (module.has.value(addedValue)) {
3052
2832
  module.debug('Value already selected');
3053
2833
 
@@ -3103,11 +2883,11 @@
3103
2883
  initialLoad = false;
3104
2884
  },
3105
2885
  upward: function ($currentMenu) {
3106
- var $element = $currentMenu || $module;
2886
+ let $element = $currentMenu || $module;
3107
2887
  $element.removeClass(className.upward);
3108
2888
  },
3109
2889
  leftward: function ($currentMenu) {
3110
- var $element = $currentMenu || $menu;
2890
+ let $element = $currentMenu || $menu;
3111
2891
  $element.removeClass(className.leftward);
3112
2892
  },
3113
2893
  visible: function () {
@@ -3119,7 +2899,7 @@
3119
2899
  filteredItem: function () {
3120
2900
  if (settings.highlightMatches) {
3121
2901
  $.each($item, function (index, item) {
3122
- var $markItem = $(item);
2902
+ let $markItem = $(item);
3123
2903
  $markItem.html($markItem.html().replace(/<\/?mark>/g, ''));
3124
2904
  });
3125
2905
  }
@@ -3137,11 +2917,9 @@
3137
2917
  module.remove.empty();
3138
2918
  },
3139
2919
  optionValue: function (value) {
3140
- var
3141
- escapedValue = module.escape.value(value),
3142
- $option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
3143
- hasOption = $option.length > 0
3144
- ;
2920
+ let escapedValue = module.escape.value(value);
2921
+ let $option = $input.find('option[value="' + CSS.escape(escapedValue) + '"]');
2922
+ let hasOption = $option.length > 0;
3145
2923
  if (!hasOption || !$option.hasClass(className.addition)) {
3146
2924
  return;
3147
2925
  }
@@ -3176,11 +2954,9 @@
3176
2954
 
3177
2955
  $selectedItem
3178
2956
  .each(function () {
3179
- var
3180
- $selected = $(this),
3181
- selectedText = module.get.choiceText($selected),
3182
- selectedValue = module.get.choiceValue($selected, selectedText)
3183
- ;
2957
+ let $selected = $(this);
2958
+ let selectedText = module.get.choiceText($selected);
2959
+ let selectedValue = module.get.choiceValue($selected, selectedText);
3184
2960
  if (module.is.multiple()) {
3185
2961
  if (settings.useLabels) {
3186
2962
  module.remove.value(selectedValue, selectedText, $selected, preventChangeTrigger);
@@ -3198,22 +2974,18 @@
3198
2974
  }
3199
2975
  $selected
3200
2976
  .removeClass(className.filtered)
3201
- .removeClass(className.active)
3202
- ;
2977
+ .removeClass(className.active);
3203
2978
  if (settings.useLabels) {
3204
2979
  $selected.removeClass(className.selected);
3205
2980
  }
3206
- })
3207
- ;
2981
+ });
3208
2982
  },
3209
2983
  selectedItem: function () {
3210
2984
  $item.removeClass(className.selected);
3211
2985
  },
3212
2986
  value: function (removedValue, removedText, $removedItem, preventChangeTrigger) {
3213
- var
3214
- values = module.get.values(true),
3215
- newValue
3216
- ;
2987
+ let values = module.get.values(true);
2988
+ let newValue;
3217
2989
  if (module.has.selectInput()) {
3218
2990
  module.verbose('Input is <select> removing selected option', removedValue);
3219
2991
  newValue = module.remove.arrayValue(removedValue, values);
@@ -3243,11 +3015,9 @@
3243
3015
  return values;
3244
3016
  },
3245
3017
  label: function (value, shouldAnimate) {
3246
- var
3247
- escapedValue = module.escape.value(value),
3248
- $labels = $module.find(selector.label),
3249
- $removedLabel = $labels.filter('[data-' + metadata.value + '="' + module.escape.string(settings.ignoreCase ? escapedValue.toLowerCase() : escapedValue) + '"]')
3250
- ;
3018
+ let escapedValue = module.escape.value(value);
3019
+ let $labels = $module.find(selector.label);
3020
+ let $removedLabel = $labels.filter('[data-' + metadata.value + '="' + CSS.escape(settings.ignoreCase ? escapedValue.toLowerCase() : escapedValue) + '"]');
3251
3021
  module.verbose('Removing label', $removedLabel);
3252
3022
  $removedLabel.remove();
3253
3023
  },
@@ -3261,14 +3031,12 @@
3261
3031
  module.verbose('Removing labels', $labels);
3262
3032
  $labels
3263
3033
  .each(function () {
3264
- var
3265
- $label = $(this),
3266
- value = $label.data(metadata.value),
3267
- stringValue = value !== undefined
3268
- ? String(value)
3269
- : value,
3270
- isUserValue = module.is.userValue(stringValue)
3271
- ;
3034
+ let $label = $(this);
3035
+ let value = $label.data(metadata.value);
3036
+ let stringValue = value !== undefined
3037
+ ? String(value)
3038
+ : value;
3039
+ let isUserValue = module.is.userValue(stringValue);
3272
3040
  if (settings.onLabelRemove.call($label, value) === false) {
3273
3041
  module.debug('Label remove callback cancelled removal');
3274
3042
 
@@ -3282,26 +3050,21 @@
3282
3050
  // selected will also remove label
3283
3051
  module.remove.selected(stringValue, false, preventChangeTrigger);
3284
3052
  }
3285
- })
3286
- ;
3053
+ });
3287
3054
  },
3288
3055
  tabbable: function () {
3289
3056
  if (module.is.searchSelection()) {
3290
3057
  module.debug('Searchable dropdown initialized');
3291
3058
  $search
3292
- .removeAttr('tabindex')
3293
- ;
3059
+ .removeAttr('tabindex');
3294
3060
  $menu
3295
- .removeAttr('tabindex')
3296
- ;
3061
+ .removeAttr('tabindex');
3297
3062
  } else {
3298
3063
  module.debug('Simple selection dropdown initialized');
3299
3064
  $module
3300
- .removeAttr('tabindex')
3301
- ;
3065
+ .removeAttr('tabindex');
3302
3066
  $menu
3303
- .removeAttr('tabindex')
3304
- ;
3067
+ .removeAttr('tabindex');
3305
3068
  }
3306
3069
  },
3307
3070
  diacritics: function (text) {
@@ -3338,10 +3101,8 @@
3338
3101
  return true;
3339
3102
  },
3340
3103
  firstLetter: function ($item, letter) {
3341
- var
3342
- text,
3343
- firstLetter
3344
- ;
3104
+ let text;
3105
+ let firstLetter;
3345
3106
  if (!$item || $item.length === 0 || typeof letter !== 'string') {
3346
3107
  return false;
3347
3108
  }
@@ -3367,23 +3128,19 @@
3367
3128
  return $menu.children(selector.message).length > 0;
3368
3129
  },
3369
3130
  label: function (value) {
3370
- var
3371
- escapedValue = module.escape.value(value),
3372
- $labels = $module.find(selector.label)
3373
- ;
3131
+ let escapedValue = module.escape.value(value);
3132
+ let $labels = $module.find(selector.label);
3374
3133
  if (settings.ignoreCase) {
3375
3134
  escapedValue = escapedValue.toLowerCase();
3376
3135
  }
3377
3136
 
3378
- return $labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0;
3137
+ return $labels.filter('[data-' + metadata.value + '="' + CSS.escape(escapedValue) + '"]').length > 0;
3379
3138
  },
3380
3139
  maxSelections: function () {
3381
3140
  return settings.maxSelections && module.get.selectionCount() >= settings.maxSelections;
3382
3141
  },
3383
3142
  allResultsFiltered: function () {
3384
- var
3385
- $normalResults = $item.not(selector.addition)
3386
- ;
3143
+ let $normalResults = $item.not(selector.addition);
3387
3144
 
3388
3145
  return $normalResults.filter(selector.unselectable).length === $normalResults.length;
3389
3146
  },
@@ -3399,20 +3156,16 @@
3399
3156
  : module.has.valueMatchingCase(value);
3400
3157
  },
3401
3158
  valueMatchingCase: function (value) {
3402
- var
3403
- values = module.get.values(true),
3404
- hasValue = Array.isArray(values)
3405
- ? values && ($.inArray(value, values) !== -1)
3406
- : values == value
3407
- ;
3159
+ let values = module.get.values(true);
3160
+ let hasValue = Array.isArray(values)
3161
+ ? values && ($.inArray(value, values) !== -1)
3162
+ : values == value;
3408
3163
 
3409
3164
  return !!hasValue;
3410
3165
  },
3411
3166
  valueIgnoringCase: function (value) {
3412
- var
3413
- values = module.get.values(true),
3414
- hasValue = false
3415
- ;
3167
+ let values = module.get.values(true);
3168
+ let hasValue = false;
3416
3169
  if (!Array.isArray(values)) {
3417
3170
  values = [values];
3418
3171
  }
@@ -3459,12 +3212,12 @@
3459
3212
  : $menu.transition && $menu.transition('is animating');
3460
3213
  },
3461
3214
  leftward: function ($subMenu) {
3462
- var $selectedMenu = $subMenu || $menu;
3215
+ let $selectedMenu = $subMenu || $menu;
3463
3216
 
3464
3217
  return $selectedMenu.hasClass(className.leftward);
3465
3218
  },
3466
3219
  clearable: function () {
3467
- var hasClearableClass = $module.hasClass(className.clearable);
3220
+ let hasClearableClass = $module.hasClass(className.clearable);
3468
3221
  if (!hasClearableClass && settings.clearable) {
3469
3222
  $module.addClass(className.clearable);
3470
3223
  }
@@ -3490,9 +3243,7 @@
3490
3243
  return initialLoad;
3491
3244
  },
3492
3245
  inObject: function (needle, object) {
3493
- var
3494
- found = false
3495
- ;
3246
+ let found = false;
3496
3247
  $.each(object, function (index, property) {
3497
3248
  if (property == needle) {
3498
3249
  found = true;
@@ -3516,9 +3267,7 @@
3516
3267
  return !module.is.multiple();
3517
3268
  },
3518
3269
  selectMutation: function (mutations) {
3519
- var
3520
- selectChanged = false
3521
- ;
3270
+ let selectChanged = false;
3522
3271
  $.each(mutations, function (index, mutation) {
3523
3272
  if ($(mutation.target).is('option, optgroup') || $(mutation.addedNodes).is('select') || ($(mutation.target).is('select') && mutation.type !== 'attributes')) {
3524
3273
  selectChanged = true;
@@ -3542,7 +3291,7 @@
3542
3291
  return $.inArray(value, module.get.userValues()) !== -1;
3543
3292
  },
3544
3293
  upward: function ($menu) {
3545
- var $element = $menu || $module;
3294
+ let $element = $menu || $module;
3546
3295
 
3547
3296
  return $element.hasClass(className.upward);
3548
3297
  },
@@ -3552,20 +3301,16 @@
3552
3301
  : $menu.hasClass(className.visible);
3553
3302
  },
3554
3303
  verticallyScrollableContext: function () {
3555
- var
3556
- overflowY = $context[0] !== window
3557
- ? $context.css('overflow-y')
3558
- : false
3559
- ;
3304
+ let overflowY = $context[0] !== window
3305
+ ? $context.css('overflow-y')
3306
+ : false;
3560
3307
 
3561
3308
  return overflowY === 'auto' || overflowY === 'scroll';
3562
3309
  },
3563
3310
  horizontallyScrollableContext: function () {
3564
- var
3565
- overflowX = $context[0] !== window
3566
- ? $context.css('overflow-X')
3567
- : false
3568
- ;
3311
+ let overflowX = $context[0] !== window
3312
+ ? $context.css('overflow-X')
3313
+ : false;
3569
3314
 
3570
3315
  return overflowX === 'auto' || overflowX === 'scroll';
3571
3316
  },
@@ -3580,15 +3325,12 @@
3580
3325
  );
3581
3326
  },
3582
3327
  openDownward: function ($subMenu) {
3583
- var
3584
- $currentMenu = $subMenu || $menu,
3585
- canOpenDownward,
3586
- onScreen,
3587
- calculations
3588
- ;
3328
+ let $currentMenu = $subMenu || $menu;
3329
+ let canOpenDownward;
3330
+ let onScreen;
3331
+ let calculations;
3589
3332
  $currentMenu
3590
- .addClass(className.loading)
3591
- ;
3333
+ .addClass(className.loading);
3592
3334
  calculations = {
3593
3335
  context: {
3594
3336
  offset: $context[0] === window
@@ -3627,15 +3369,12 @@
3627
3369
  return canOpenDownward;
3628
3370
  },
3629
3371
  openRightward: function ($subMenu) {
3630
- var
3631
- $currentMenu = $subMenu || $menu,
3632
- canOpenRightward = true,
3633
- isOffscreenRight = false,
3634
- calculations
3635
- ;
3372
+ let $currentMenu = $subMenu || $menu;
3373
+ let canOpenRightward = true;
3374
+ let isOffscreenRight = false;
3375
+ let calculations;
3636
3376
  $currentMenu
3637
- .addClass(className.loading)
3638
- ;
3377
+ .addClass(className.loading);
3639
3378
  calculations = {
3640
3379
  context: {
3641
3380
  offset: $context[0] === window
@@ -3682,17 +3421,15 @@
3682
3421
 
3683
3422
  animate: {
3684
3423
  show: function (callback, $subMenu) {
3685
- var
3686
- $currentMenu = $subMenu || $menu,
3687
- start = $subMenu
3688
- ? function () {}
3689
- : function () {
3690
- module.hideSubMenus();
3691
- module.hideOthers();
3692
- module.set.active();
3693
- },
3694
- transition
3695
- ;
3424
+ let $currentMenu = $subMenu || $menu;
3425
+ let start = $subMenu
3426
+ ? function () {}
3427
+ : function () {
3428
+ module.hideSubMenus();
3429
+ module.hideOthers();
3430
+ module.set.active();
3431
+ };
3432
+ let transition;
3696
3433
  callback = isFunction(callback)
3697
3434
  ? callback
3698
3435
  : function () {};
@@ -3723,22 +3460,19 @@
3723
3460
  onComplete: function () {
3724
3461
  callback.call(element);
3725
3462
  },
3726
- })
3727
- ;
3463
+ });
3728
3464
  }
3729
3465
  }
3730
3466
  },
3731
3467
  hide: function (callback, $subMenu) {
3732
- var
3733
- $currentMenu = $subMenu || $menu,
3734
- start = $subMenu
3735
- ? function () {}
3736
- : function () {
3737
- module.unbind.intent();
3738
- module.remove.active();
3739
- },
3740
- transition = settings.transition.hideMethod || module.get.transition($subMenu)
3741
- ;
3468
+ let $currentMenu = $subMenu || $menu;
3469
+ let start = $subMenu
3470
+ ? function () {}
3471
+ : function () {
3472
+ module.unbind.intent();
3473
+ module.remove.active();
3474
+ };
3475
+ let transition = settings.transition.hideMethod || module.get.transition($subMenu);
3742
3476
  callback = isFunction(callback)
3743
3477
  ? callback
3744
3478
  : function () {};
@@ -3765,8 +3499,7 @@
3765
3499
  onComplete: function () {
3766
3500
  callback.call(element);
3767
3501
  },
3768
- })
3769
- ;
3502
+ });
3770
3503
  } else {
3771
3504
  module.error(error.transition);
3772
3505
  }
@@ -3807,13 +3540,11 @@
3807
3540
 
3808
3541
  escape: {
3809
3542
  value: function (value) {
3810
- var
3811
- multipleValues = Array.isArray(value),
3812
- stringValue = typeof value === 'string',
3813
- isUnparsable = !stringValue && !multipleValues,
3814
- hasQuotes = stringValue && value.search(regExp.quote) !== -1,
3815
- values = []
3816
- ;
3543
+ let multipleValues = Array.isArray(value);
3544
+ let stringValue = typeof value === 'string';
3545
+ let isUnparsable = !stringValue && !multipleValues;
3546
+ let hasQuotes = stringValue && value.search(regExp.quote) !== -1;
3547
+ let values = [];
3817
3548
  if (isUnparsable || !hasQuotes) {
3818
3549
  return value;
3819
3550
  }
@@ -3835,25 +3566,19 @@
3835
3566
  },
3836
3567
  htmlEntities: function (string, forceAmpersand) {
3837
3568
  forceAmpersand = typeof forceAmpersand === 'number' ? false : forceAmpersand;
3838
- var
3839
- badChars = /["'<>]/g,
3840
- shouldEscape = /["&'<>]/,
3841
- escape = {
3842
- '<': '&lt;',
3843
- '>': '&gt;',
3844
- '"': '&quot;',
3845
- "'": '&apos;',
3846
- },
3847
- escapedChar = function (chr) {
3848
- return escape[chr];
3849
- }
3850
- ;
3851
- if (shouldEscape.test(string)) {
3852
- string = string.replace(forceAmpersand ? /&/g : /&(?![\d#a-z]{1,12};)/gi, '&amp;');
3853
- string = string.replace(badChars, escapedChar);
3854
- }
3855
3569
 
3856
- return string;
3570
+ const badChars = forceAmpersand
3571
+ ? /["&'<>]/g
3572
+ : /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
3573
+ const escape = {
3574
+ '"': '&quot;',
3575
+ '&': '&amp;',
3576
+ "'": '&apos;',
3577
+ '<': '&lt;',
3578
+ '>': '&gt;',
3579
+ };
3580
+
3581
+ return string.replace(badChars, (chr) => escape[chr]);
3857
3582
  },
3858
3583
  },
3859
3584
 
@@ -3908,11 +3633,9 @@
3908
3633
  },
3909
3634
  performance: {
3910
3635
  log: function (message) {
3911
- var
3912
- currentTime,
3913
- executionTime,
3914
- previousTime
3915
- ;
3636
+ let currentTime;
3637
+ let executionTime;
3638
+ let previousTime;
3916
3639
  if (settings.performance) {
3917
3640
  currentTime = Date.now();
3918
3641
  previousTime = time || currentTime;
@@ -3931,10 +3654,8 @@
3931
3654
  }, 500);
3932
3655
  },
3933
3656
  display: function () {
3934
- var
3935
- title = settings.name + ':',
3936
- totalTime = 0
3937
- ;
3657
+ let title = settings.name + ':';
3658
+ let totalTime = 0;
3938
3659
  time = false;
3939
3660
  clearTimeout(module.performance.timer);
3940
3661
  $.each(performance, function (index, data) {
@@ -3956,22 +3677,19 @@
3956
3677
  },
3957
3678
  },
3958
3679
  invoke: function (query, passedArguments, context) {
3959
- var
3960
- object = instance,
3961
- maxDepth,
3962
- found,
3963
- response
3964
- ;
3680
+ let object = instance;
3681
+ let maxDepth;
3682
+ let found;
3683
+ let response;
3965
3684
  passedArguments = passedArguments || queryArguments;
3966
3685
  context = context || element;
3967
3686
  if (typeof query === 'string' && object !== undefined) {
3968
3687
  query = query.split(/[ .]/);
3969
3688
  maxDepth = query.length - 1;
3970
3689
  $.each(query, function (depth, value) {
3971
- var camelCaseValue = depth !== maxDepth
3690
+ let camelCaseValue = depth !== maxDepth
3972
3691
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
3973
- : query
3974
- ;
3692
+ : query;
3975
3693
  if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
3976
3694
  object = object[camelCaseValue];
3977
3695
  } else if (object[camelCaseValue] !== undefined) {
@@ -4263,34 +3981,24 @@
4263
3981
  if (settings !== undefined && settings.preserveHTML) {
4264
3982
  return string;
4265
3983
  }
4266
- var
4267
- badChars = /["'<>]/g,
4268
- shouldEscape = /["&'<>]/,
4269
- escape = {
4270
- '<': '&lt;',
4271
- '>': '&gt;',
4272
- '"': '&quot;',
4273
- "'": '&apos;',
4274
- },
4275
- escapedChar = function (chr) {
4276
- return escape[chr];
4277
- }
4278
- ;
4279
- if (shouldEscape.test(string)) {
4280
- string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&amp;');
4281
- string = string.replace(badChars, escapedChar);
4282
- }
4283
3984
 
4284
- return string;
3985
+ const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
3986
+ const escape = {
3987
+ '"': '&quot;',
3988
+ '&': '&amp;',
3989
+ "'": '&apos;',
3990
+ '<': '&lt;',
3991
+ '>': '&gt;',
3992
+ };
3993
+
3994
+ return string.replace(badChars, (chr) => escape[chr]);
4285
3995
  },
4286
3996
  // generates dropdown from select values
4287
3997
  dropdown: function (select, settings) {
4288
- var
4289
- placeholder = select.placeholder || false,
4290
- html = '',
4291
- className = settings.className,
4292
- escape = settings.templates.escape
4293
- ;
3998
+ let placeholder = select.placeholder || false;
3999
+ let html = '';
4000
+ let className = settings.className;
4001
+ let escape = settings.templates.escape;
4294
4002
  html += '<i class="dropdown icon"></i>';
4295
4003
  html += placeholder
4296
4004
  ? '<div class="default text">' + escape(placeholder, settings) + '</div>'
@@ -4304,24 +4012,19 @@
4304
4012
 
4305
4013
  // generates just menu from select
4306
4014
  menu: function (response, settings) {
4307
- var
4308
- fields = settings.fields,
4309
- values = response[fields.values] || [],
4310
- html = '',
4311
- className = settings.className,
4312
- escape = settings.templates.escape
4313
- ;
4015
+ let fields = settings.fields;
4016
+ let values = response[fields.values] || [];
4017
+ let html = '';
4018
+ let className = settings.className;
4019
+ let escape = settings.templates.escape;
4314
4020
  $.each(values, function (index, option) {
4315
- var
4316
- itemType = option[fields.type] || 'item',
4317
- isMenu = itemType.indexOf('menu') !== -1,
4318
- maybeData = '',
4319
- dataObject = option[fields.data]
4320
- ;
4021
+ let itemType = option[fields.type] || 'item';
4022
+ let isMenu = itemType.indexOf('menu') !== -1;
4023
+ let maybeData = '';
4024
+ let dataObject = option[fields.data];
4321
4025
  if (dataObject) {
4322
- var dataKey,
4323
- dataKeyEscaped
4324
- ;
4026
+ let dataKey;
4027
+ let dataKeyEscaped;
4325
4028
  for (dataKey in dataObject) {
4326
4029
  dataKeyEscaped = String(dataKey).replace(/\W/g, '');
4327
4030
  if (Object.prototype.hasOwnProperty.call(dataObject, dataKey) && ['text', 'value'].indexOf(dataKeyEscaped.toLowerCase()) === -1) {
@@ -4330,21 +4033,19 @@
4330
4033
  }
4331
4034
  }
4332
4035
  if (itemType === 'item' || isMenu) {
4333
- var
4334
- maybeText = option[fields.text]
4335
- ? ' data-text="' + escape(option[fields.text]) + '"'
4336
- : '',
4337
- maybeActionable = option[fields.actionable]
4338
- ? className.actionable + ' '
4339
- : '',
4340
- maybeDisabled = option[fields.disabled]
4341
- ? className.disabled + ' '
4342
- : '',
4343
- maybeDescriptionVertical = option[fields.descriptionVertical]
4344
- ? className.descriptionVertical + ' '
4345
- : '',
4346
- hasDescription = escape(option[fields.description] || '', settings) !== ''
4347
- ;
4036
+ let maybeText = option[fields.text]
4037
+ ? ' data-text="' + escape(option[fields.text]) + '"'
4038
+ : '';
4039
+ let maybeActionable = option[fields.actionable]
4040
+ ? className.actionable + ' '
4041
+ : '';
4042
+ let maybeDisabled = option[fields.disabled]
4043
+ ? className.disabled + ' '
4044
+ : '';
4045
+ let maybeDescriptionVertical = option[fields.descriptionVertical]
4046
+ ? className.descriptionVertical + ' '
4047
+ : '';
4048
+ let hasDescription = escape(option[fields.description] || '', settings) !== '';
4348
4049
  html += '<div class="' + escape(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + escape(option[fields.value]) + '"' + maybeText + maybeData + '>';
4349
4050
  if (isMenu) {
4350
4051
  html += '<i class="' + (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
@@ -4373,10 +4074,8 @@
4373
4074
  }
4374
4075
  html += '</div>';
4375
4076
  } else if (itemType === 'header') {
4376
- var
4377
- groupName = option[fields.name] || '',
4378
- groupIcon = option[fields.icon] || className.groupIcon
4379
- ;
4077
+ let groupName = option[fields.name] || '';
4078
+ let groupIcon = option[fields.icon] || className.groupIcon;
4380
4079
  if (groupName !== '' || groupIcon !== '') {
4381
4080
  html += '<div class="' + escape(option[fields.class] || className.header) + '">';
4382
4081
  if (groupIcon !== '') {
@@ -4396,10 +4095,8 @@
4396
4095
 
4397
4096
  // generates label for multiselect
4398
4097
  label: function (value, text, settings) {
4399
- var
4400
- className = settings.className,
4401
- escape = settings.templates.escape
4402
- ;
4098
+ let className = settings.className;
4099
+ let escape = settings.templates.escape;
4403
4100
 
4404
4101
  return escape(text, settings) + '<i class="' + escape(className.delete) + ' icon"></i>';
4405
4102
  },