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

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 (345) hide show
  1. package/.eslintrc.js +6 -23
  2. package/.github/workflows/ci.yml +9 -9
  3. package/.github/workflows/depsreview.yml +1 -1
  4. package/.github/workflows/nightly.yml +7 -5
  5. package/.github/workflows/release.yml +2 -2
  6. package/.stylelintrc.js +1 -15
  7. package/CHANGELOG.md +5289 -2325
  8. package/README.md +8 -4
  9. package/changelog-setup.js +32 -10
  10. package/changelog-template.hbs +256 -251
  11. package/dist/components/accordion.css +1 -1
  12. package/dist/components/accordion.js +62 -73
  13. package/dist/components/accordion.min.css +1 -1
  14. package/dist/components/accordion.min.js +3 -3
  15. package/dist/components/ad.css +1 -1
  16. package/dist/components/ad.min.css +1 -1
  17. package/dist/components/api.js +101 -161
  18. package/dist/components/api.min.js +3 -3
  19. package/dist/components/breadcrumb.css +1 -1
  20. package/dist/components/breadcrumb.min.css +1 -1
  21. package/dist/components/button.css +5 -6
  22. package/dist/components/button.min.css +2 -2
  23. package/dist/components/calendar.css +3 -3
  24. package/dist/components/calendar.js +283 -332
  25. package/dist/components/calendar.min.css +2 -2
  26. package/dist/components/calendar.min.js +3 -3
  27. package/dist/components/card.css +1 -1
  28. package/dist/components/card.min.css +1 -1
  29. package/dist/components/checkbox.css +1 -1
  30. package/dist/components/checkbox.js +58 -79
  31. package/dist/components/checkbox.min.css +1 -1
  32. package/dist/components/checkbox.min.js +3 -3
  33. package/dist/components/comment.css +1 -1
  34. package/dist/components/comment.min.css +1 -1
  35. package/dist/components/container.css +1 -1
  36. package/dist/components/container.min.css +1 -1
  37. package/dist/components/dimmer.css +2 -2
  38. package/dist/components/dimmer.js +39 -52
  39. package/dist/components/dimmer.min.css +2 -2
  40. package/dist/components/dimmer.min.js +3 -3
  41. package/dist/components/divider.css +1 -1
  42. package/dist/components/divider.min.css +1 -1
  43. package/dist/components/dropdown.css +21 -35
  44. package/dist/components/dropdown.js +435 -531
  45. package/dist/components/dropdown.min.css +2 -2
  46. package/dist/components/dropdown.min.js +3 -3
  47. package/dist/components/embed.css +1 -1
  48. package/dist/components/embed.js +55 -68
  49. package/dist/components/embed.min.css +1 -1
  50. package/dist/components/embed.min.js +3 -3
  51. package/dist/components/emoji.css +3809 -7617
  52. package/dist/components/emoji.min.css +2 -2
  53. package/dist/components/feed.css +1 -1
  54. package/dist/components/feed.min.css +1 -1
  55. package/dist/components/flag.css +1 -1
  56. package/dist/components/flag.min.css +1 -1
  57. package/dist/components/flyout.css +1 -1
  58. package/dist/components/flyout.js +149 -168
  59. package/dist/components/flyout.min.css +1 -1
  60. package/dist/components/flyout.min.js +3 -3
  61. package/dist/components/form.css +3 -5
  62. package/dist/components/form.js +249 -269
  63. package/dist/components/form.min.css +2 -2
  64. package/dist/components/form.min.js +3 -3
  65. package/dist/components/grid.css +2 -2
  66. package/dist/components/grid.min.css +2 -2
  67. package/dist/components/header.css +6 -6
  68. package/dist/components/header.min.css +2 -2
  69. package/dist/components/icon.css +10 -37
  70. package/dist/components/icon.min.css +2 -2
  71. package/dist/components/image.css +1 -1
  72. package/dist/components/image.min.css +1 -1
  73. package/dist/components/input.css +284 -12
  74. package/dist/components/input.min.css +2 -2
  75. package/dist/components/item.css +1 -1
  76. package/dist/components/item.min.css +1 -1
  77. package/dist/components/label.css +6 -14
  78. package/dist/components/label.min.css +2 -2
  79. package/dist/components/list.css +3 -3
  80. package/dist/components/list.min.css +2 -2
  81. package/dist/components/loader.css +53 -53
  82. package/dist/components/loader.min.css +2 -2
  83. package/dist/components/menu.css +45 -60
  84. package/dist/components/menu.min.css +2 -2
  85. package/dist/components/message.css +2 -2
  86. package/dist/components/message.min.css +2 -2
  87. package/dist/components/modal.css +5 -5
  88. package/dist/components/modal.js +161 -170
  89. package/dist/components/modal.min.css +2 -2
  90. package/dist/components/modal.min.js +3 -3
  91. package/dist/components/nag.css +1 -1
  92. package/dist/components/nag.js +74 -88
  93. package/dist/components/nag.min.css +1 -1
  94. package/dist/components/nag.min.js +3 -3
  95. package/dist/components/placeholder.css +2 -2
  96. package/dist/components/placeholder.min.css +2 -2
  97. package/dist/components/popup.css +19 -73
  98. package/dist/components/popup.js +105 -138
  99. package/dist/components/popup.min.css +2 -2
  100. package/dist/components/popup.min.js +3 -3
  101. package/dist/components/progress.css +4 -13
  102. package/dist/components/progress.js +75 -97
  103. package/dist/components/progress.min.css +2 -2
  104. package/dist/components/progress.min.js +3 -3
  105. package/dist/components/rail.css +1 -1
  106. package/dist/components/rail.min.css +1 -1
  107. package/dist/components/rating.css +1 -1
  108. package/dist/components/rating.js +49 -61
  109. package/dist/components/rating.min.css +1 -1
  110. package/dist/components/rating.min.js +3 -3
  111. package/dist/components/reset.css +48 -208
  112. package/dist/components/reset.min.css +2 -2
  113. package/dist/components/reveal.css +2 -5
  114. package/dist/components/reveal.min.css +2 -2
  115. package/dist/components/search.css +2 -3
  116. package/dist/components/search.js +178 -198
  117. package/dist/components/search.min.css +2 -2
  118. package/dist/components/search.min.js +3 -3
  119. package/dist/components/segment.css +6 -6
  120. package/dist/components/segment.min.css +2 -2
  121. package/dist/components/shape.css +1 -1
  122. package/dist/components/shape.js +59 -69
  123. package/dist/components/shape.min.css +1 -1
  124. package/dist/components/shape.min.js +3 -3
  125. package/dist/components/sidebar.css +1 -1
  126. package/dist/components/sidebar.js +81 -101
  127. package/dist/components/sidebar.min.css +1 -1
  128. package/dist/components/sidebar.min.js +3 -3
  129. package/dist/components/site.css +1 -1
  130. package/dist/components/site.js +37 -58
  131. package/dist/components/site.min.css +1 -1
  132. package/dist/components/site.min.js +3 -3
  133. package/dist/components/slider.css +1 -1
  134. package/dist/components/slider.js +169 -183
  135. package/dist/components/slider.min.css +1 -1
  136. package/dist/components/slider.min.js +3 -3
  137. package/dist/components/state.js +45 -59
  138. package/dist/components/state.min.js +3 -3
  139. package/dist/components/statistic.css +1 -1
  140. package/dist/components/statistic.min.css +1 -1
  141. package/dist/components/step.css +4 -4
  142. package/dist/components/step.min.css +2 -2
  143. package/dist/components/sticky.css +1 -1
  144. package/dist/components/sticky.js +95 -117
  145. package/dist/components/sticky.min.css +1 -1
  146. package/dist/components/sticky.min.js +3 -3
  147. package/dist/components/tab.css +1 -1
  148. package/dist/components/tab.js +83 -115
  149. package/dist/components/tab.min.css +1 -1
  150. package/dist/components/tab.min.js +3 -3
  151. package/dist/components/table.css +8 -8
  152. package/dist/components/table.min.css +2 -2
  153. package/dist/components/text.css +1 -1
  154. package/dist/components/text.min.css +1 -1
  155. package/dist/components/toast.css +1 -1
  156. package/dist/components/toast.js +64 -74
  157. package/dist/components/toast.min.css +1 -1
  158. package/dist/components/toast.min.js +3 -3
  159. package/dist/components/transition.css +1 -1
  160. package/dist/components/transition.js +61 -85
  161. package/dist/components/transition.min.css +1 -1
  162. package/dist/components/transition.min.js +3 -3
  163. package/dist/components/visibility.js +120 -140
  164. package/dist/components/visibility.min.js +3 -3
  165. package/dist/semantic.css +4480 -8222
  166. package/dist/semantic.js +2886 -3485
  167. package/dist/semantic.min.css +3 -3
  168. package/dist/semantic.min.js +3 -3
  169. package/examples/attached.html +1 -1
  170. package/examples/components/menu.html +1 -1
  171. package/package.json +8 -5
  172. package/scripts/nightly-version.js +4 -4
  173. package/src/definitions/behaviors/api.js +100 -160
  174. package/src/definitions/behaviors/form.js +248 -268
  175. package/src/definitions/behaviors/state.js +44 -58
  176. package/src/definitions/behaviors/visibility.js +119 -139
  177. package/src/definitions/collections/breadcrumb.less +0 -1
  178. package/src/definitions/collections/form.less +3 -9
  179. package/src/definitions/collections/grid.less +1 -2
  180. package/src/definitions/collections/menu.less +106 -117
  181. package/src/definitions/collections/message.less +1 -2
  182. package/src/definitions/collections/table.less +7 -8
  183. package/src/definitions/elements/button.less +4 -6
  184. package/src/definitions/elements/container.less +0 -1
  185. package/src/definitions/elements/divider.less +1 -2
  186. package/src/definitions/elements/emoji.less +1 -1
  187. package/src/definitions/elements/flag.less +1 -1
  188. package/src/definitions/elements/header.less +4 -5
  189. package/src/definitions/elements/icon.less +10 -37
  190. package/src/definitions/elements/image.less +0 -1
  191. package/src/definitions/elements/input.less +4 -7
  192. package/src/definitions/elements/label.less +5 -14
  193. package/src/definitions/elements/list.less +2 -3
  194. package/src/definitions/elements/loader.less +10 -11
  195. package/src/definitions/elements/placeholder.less +1 -2
  196. package/src/definitions/elements/rail.less +0 -1
  197. package/src/definitions/elements/reveal.less +1 -5
  198. package/src/definitions/elements/segment.less +5 -6
  199. package/src/definitions/elements/step.less +3 -4
  200. package/src/definitions/elements/text.less +0 -1
  201. package/src/definitions/globals/reset.less +0 -1
  202. package/src/definitions/globals/site.js +36 -57
  203. package/src/definitions/globals/site.less +0 -1
  204. package/src/definitions/modules/accordion.js +61 -72
  205. package/src/definitions/modules/accordion.less +0 -1
  206. package/src/definitions/modules/calendar.js +282 -331
  207. package/src/definitions/modules/calendar.less +2 -3
  208. package/src/definitions/modules/checkbox.js +57 -78
  209. package/src/definitions/modules/checkbox.less +0 -1
  210. package/src/definitions/modules/dimmer.js +38 -51
  211. package/src/definitions/modules/dimmer.less +1 -2
  212. package/src/definitions/modules/dropdown.js +434 -530
  213. package/src/definitions/modules/dropdown.less +27 -38
  214. package/src/definitions/modules/embed.js +54 -67
  215. package/src/definitions/modules/embed.less +0 -1
  216. package/src/definitions/modules/flyout.js +148 -167
  217. package/src/definitions/modules/flyout.less +0 -1
  218. package/src/definitions/modules/modal.js +160 -169
  219. package/src/definitions/modules/modal.less +3 -4
  220. package/src/definitions/modules/nag.js +73 -87
  221. package/src/definitions/modules/nag.less +0 -1
  222. package/src/definitions/modules/popup.js +104 -137
  223. package/src/definitions/modules/popup.less +18 -73
  224. package/src/definitions/modules/progress.js +74 -96
  225. package/src/definitions/modules/progress.less +3 -13
  226. package/src/definitions/modules/rating.js +48 -60
  227. package/src/definitions/modules/rating.less +0 -1
  228. package/src/definitions/modules/search.js +177 -197
  229. package/src/definitions/modules/search.less +2 -4
  230. package/src/definitions/modules/shape.js +58 -68
  231. package/src/definitions/modules/shape.less +0 -1
  232. package/src/definitions/modules/sidebar.js +80 -100
  233. package/src/definitions/modules/sidebar.less +0 -1
  234. package/src/definitions/modules/slider.js +168 -182
  235. package/src/definitions/modules/slider.less +0 -1
  236. package/src/definitions/modules/sticky.js +94 -116
  237. package/src/definitions/modules/sticky.less +0 -1
  238. package/src/definitions/modules/tab.js +82 -114
  239. package/src/definitions/modules/tab.less +0 -1
  240. package/src/definitions/modules/toast.js +63 -73
  241. package/src/definitions/modules/toast.less +0 -1
  242. package/src/definitions/modules/transition.js +60 -84
  243. package/src/definitions/modules/transition.less +1 -2
  244. package/src/definitions/views/ad.less +0 -1
  245. package/src/definitions/views/card.less +0 -1
  246. package/src/definitions/views/comment.less +0 -1
  247. package/src/definitions/views/feed.less +0 -1
  248. package/src/definitions/views/item.less +0 -1
  249. package/src/definitions/views/statistic.less +0 -1
  250. package/src/semantic.less +1 -1
  251. package/src/themes/amazon/elements/button.overrides +1 -1
  252. package/src/themes/amazon/elements/button.variables +5 -6
  253. package/src/themes/amazon/globals/site.variables +2 -3
  254. package/src/themes/bookish/elements/header.variables +2 -2
  255. package/src/themes/bootstrap3/elements/button.variables +4 -5
  256. package/src/themes/chubby/collections/menu.variables +1 -1
  257. package/src/themes/chubby/elements/button.overrides +4 -4
  258. package/src/themes/chubby/modules/accordion.overrides +1 -1
  259. package/src/themes/chubby/views/comment.overrides +2 -2
  260. package/src/themes/chubby/views/comment.variables +2 -2
  261. package/src/themes/classic/collections/table.variables +2 -2
  262. package/src/themes/classic/elements/button.variables +11 -11
  263. package/src/themes/classic/modules/progress.variables +2 -2
  264. package/src/themes/classic/views/card.variables +2 -2
  265. package/src/themes/default/collections/form.variables +2 -3
  266. package/src/themes/default/collections/menu.variables +28 -28
  267. package/src/themes/default/collections/message.variables +1 -1
  268. package/src/themes/default/collections/table.variables +4 -4
  269. package/src/themes/default/elements/button.variables +9 -10
  270. package/src/themes/default/elements/divider.variables +1 -1
  271. package/src/themes/default/elements/icon.variables +2 -2
  272. package/src/themes/default/elements/image.variables +1 -1
  273. package/src/themes/default/elements/input.variables +2 -2
  274. package/src/themes/default/elements/label.variables +4 -4
  275. package/src/themes/default/elements/list.variables +1 -1
  276. package/src/themes/default/elements/placeholder.variables +6 -6
  277. package/src/themes/default/elements/segment.variables +8 -8
  278. package/src/themes/default/globals/reset.overrides +45 -201
  279. package/src/themes/default/globals/site.variables +50 -50
  280. package/src/themes/default/globals/variation.variables +3 -2
  281. package/src/themes/default/modules/accordion.variables +0 -1
  282. package/src/themes/default/modules/checkbox.variables +1 -1
  283. package/src/themes/default/modules/dimmer.variables +12 -12
  284. package/src/themes/default/modules/dropdown.variables +17 -16
  285. package/src/themes/default/modules/embed.variables +2 -2
  286. package/src/themes/default/modules/flyout.variables +3 -3
  287. package/src/themes/default/modules/modal.variables +14 -14
  288. package/src/themes/default/modules/nag.variables +1 -1
  289. package/src/themes/default/modules/rating.variables +1 -1
  290. package/src/themes/default/modules/search.variables +1 -1
  291. package/src/themes/default/modules/shape.variables +1 -1
  292. package/src/themes/default/modules/sidebar.variables +2 -2
  293. package/src/themes/default/modules/toast.variables +4 -4
  294. package/src/themes/default/views/card.variables +6 -7
  295. package/src/themes/default/views/feed.variables +4 -4
  296. package/src/themes/default/views/item.variables +2 -3
  297. package/src/themes/flat/collections/form.variables +1 -1
  298. package/src/themes/flat/globals/site.variables +9 -9
  299. package/src/themes/github/collections/form.overrides +3 -3
  300. package/src/themes/github/collections/form.variables +3 -3
  301. package/src/themes/github/collections/menu.overrides +1 -1
  302. package/src/themes/github/collections/menu.variables +10 -10
  303. package/src/themes/github/collections/message.variables +6 -6
  304. package/src/themes/github/elements/button.variables +17 -17
  305. package/src/themes/github/elements/input.variables +3 -3
  306. package/src/themes/github/elements/segment.variables +2 -2
  307. package/src/themes/github/elements/step.overrides +4 -4
  308. package/src/themes/github/elements/step.variables +3 -3
  309. package/src/themes/github/globals/site.variables +2 -2
  310. package/src/themes/github/modules/dropdown.variables +1 -3
  311. package/src/themes/gmail/collections/message.variables +2 -2
  312. package/src/themes/material/collections/menu.variables +1 -1
  313. package/src/themes/material/elements/button.overrides +4 -4
  314. package/src/themes/material/elements/button.variables +5 -5
  315. package/src/themes/material/modules/dropdown.variables +1 -1
  316. package/src/themes/material/modules/modal.variables +1 -1
  317. package/src/themes/raised/elements/button.variables +1 -1
  318. package/src/themes/round/elements/button.variables +12 -12
  319. package/src/themes/striped/modules/progress.overrides +3 -3
  320. package/src/themes/timeline/views/feed.variables +2 -2
  321. package/src/themes/twitter/elements/button.overrides +1 -1
  322. package/src/themes/twitter/elements/button.variables +4 -5
  323. package/tasks/admin/components/create.js +12 -15
  324. package/tasks/admin/components/init.js +11 -12
  325. package/tasks/admin/components/update.js +19 -20
  326. package/tasks/admin/distributions/create.js +30 -51
  327. package/tasks/admin/distributions/init.js +11 -12
  328. package/tasks/admin/distributions/update.js +18 -19
  329. package/tasks/admin/register.js +7 -7
  330. package/tasks/build/assets.js +1 -1
  331. package/tasks/build/css.js +5 -5
  332. package/tasks/build/javascript.js +1 -1
  333. package/tasks/config/admin/github.js +1 -1
  334. package/tasks/config/admin/templates/css-package.js +1 -1
  335. package/tasks/config/admin/templates/less-package.js +1 -1
  336. package/tasks/config/project/config.js +10 -10
  337. package/tasks/config/project/install.js +12 -12
  338. package/tasks/config/project/release.js +6 -12
  339. package/tasks/config/tasks.js +15 -11
  340. package/tasks/config/user.js +1 -4
  341. package/tasks/docs/metadata.js +18 -20
  342. package/tasks/install.js +14 -12
  343. package/test/meteor/assets.js +4 -4
  344. package/test/meteor/fonts.js +10 -11
  345. package/test/modules/module.spec.js +18 -18
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * # Fomantic-UI 2.10.0-beta.8+62e258f - Search
2
+ * # Fomantic-UI 2.10.0-beta.81+4f706c2 - Search
3
3
  * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
@@ -19,48 +19,46 @@
19
19
  ? window
20
20
  : globalThis;
21
21
 
22
- $.fn.search = function (parameters) {
23
- let $allModules = $(this);
22
+ $.fn.search = function (...args) {
23
+ const $allModules = $(this);
24
24
 
25
25
  let time = Date.now();
26
26
  let performance = [];
27
27
 
28
- let query = arguments[0];
29
- let methodInvoked = typeof query === 'string';
30
- let queryArguments = [].slice.call(arguments, 1);
28
+ const parameters = args[0];
29
+ const methodInvoked = typeof parameters === 'string';
30
+ const queryArguments = args.slice(1);
31
31
  let returnedValue;
32
32
  $allModules.each(function () {
33
- let settings = $.isPlainObject(parameters)
33
+ const settings = $.isPlainObject(parameters)
34
34
  ? $.extend(true, {}, $.fn.search.settings, parameters)
35
35
  : $.extend({}, $.fn.search.settings);
36
36
 
37
- let className = settings.className;
38
- let metadata = settings.metadata;
39
- let regExp = settings.regExp;
40
- let fields = settings.fields;
41
- let selector = settings.selector;
42
- let error = settings.error;
43
- let namespace = settings.namespace;
37
+ const className = settings.className;
38
+ const metadata = settings.metadata;
39
+ const regExp = settings.regExp;
40
+ const fields = settings.fields;
41
+ const selector = settings.selector;
42
+ const error = settings.error;
43
+ const namespace = settings.namespace;
44
44
 
45
- let eventNamespace = '.' + namespace;
46
- let moduleNamespace = namespace + '-module';
45
+ const eventNamespace = '.' + namespace;
46
+ const moduleNamespace = namespace + '-module';
47
47
 
48
- let $module = $(this);
48
+ const $module = $(this);
49
49
  let $prompt = $module.find(selector.prompt);
50
50
  let $searchButton = $module.find(selector.searchButton);
51
51
  let $results = $module.find(selector.results);
52
52
  let $result = $module.find(selector.result);
53
53
  let $category = $module.find(selector.category);
54
54
 
55
- let element = this;
55
+ const element = this;
56
56
  let instance = $module.data(moduleNamespace);
57
57
 
58
58
  let disabledBubbled = false;
59
59
  let resultsDismissed = false;
60
60
 
61
- let module;
62
-
63
- module = {
61
+ const module = {
64
62
 
65
63
  initialize: function () {
66
64
  module.verbose('Initializing module');
@@ -158,8 +156,8 @@
158
156
  }
159
157
  },
160
158
  blur: function (event) {
161
- let pageLostFocus = document.activeElement === this;
162
- let callback = function () {
159
+ const pageLostFocus = document.activeElement === this;
160
+ const callback = function () {
163
161
  module.cancel.query();
164
162
  module.remove.focus();
165
163
  module.timer = setTimeout(function () {
@@ -204,27 +202,23 @@
204
202
  },
205
203
  click: function (event) {
206
204
  module.debug('Search result selected');
207
- let $result = $(this);
208
- let $title = $result.find(selector.title).eq(0);
209
- let $link = $result.is('a[href]')
210
- ? $result
211
- : $result.find('a[href]').eq(0);
212
- let href = $link.attr('href') || false;
213
- let target = $link.attr('target') || false;
205
+ const $result = $(this);
206
+ const $title = $result.find(selector.title).eq(0);
207
+ const $link = $result.is('a[href]') ? $result : $();
208
+ const href = $link.attr('href') || false;
209
+ const target = $link.attr('target') || false;
214
210
  // title is used for result lookup
215
- let value = $title.length > 0
211
+ const value = $title.length > 0
216
212
  ? $title.text()
217
213
  : false;
218
- let results = module.get.results();
219
- let result = $result.data(metadata.result) || module.get.result(value, results);
220
- let oldValue = module.get.value();
221
- if (isFunction(settings.onSelect)) {
222
- if (settings.onSelect.call(element, result, results) === false) {
223
- module.debug('Custom onSelect callback cancelled default select action');
224
- disabledBubbled = true;
225
-
226
- return;
227
- }
214
+ const results = module.get.results();
215
+ const result = $result.data(metadata.result) || module.get.result(value, results);
216
+ const oldValue = module.get.value();
217
+ if (isFunction(settings.onSelect) && settings.onSelect.call(element, result, results) === false) {
218
+ module.debug('Custom onSelect callback cancelled default select action');
219
+ disabledBubbled = true;
220
+
221
+ return;
228
222
  }
229
223
  module.hideResults();
230
224
  if (value && module.get.value() === oldValue) {
@@ -243,18 +237,14 @@
243
237
  },
244
238
  },
245
239
  ensureVisible: function ($el) {
246
- let elTop;
247
- let elBottom;
248
- let resultsScrollTop;
249
- let resultsHeight;
250
240
  if ($el.length === 0) {
251
241
  return;
252
242
  }
253
- elTop = $el.position().top;
254
- elBottom = elTop + $el.outerHeight(true);
243
+ const elTop = $el.position().top;
244
+ const elBottom = elTop + $el.outerHeight(true);
255
245
 
256
- resultsScrollTop = $results.scrollTop();
257
- resultsHeight = $results.height();
246
+ const resultsScrollTop = $results.scrollTop();
247
+ const resultsHeight = $results.height();
258
248
 
259
249
  if (elTop < 0) {
260
250
  $results.scrollTop(resultsScrollTop + elTop);
@@ -264,15 +254,15 @@
264
254
  },
265
255
  handleKeyboard: function (event) {
266
256
  // force selector refresh
267
- let $result = $module.find(selector.result);
268
- let $category = $module.find(selector.category);
269
- let $activeResult = $result.filter('.' + className.active);
270
- let currentIndex = $result.index($activeResult);
271
- let resultSize = $result.length;
272
- let hasActiveResult = $activeResult.length > 0;
273
-
274
- let keyCode = event.which;
275
- let keys = {
257
+ const $result = $module.find(selector.result);
258
+ const $category = $module.find(selector.category);
259
+ const $activeResult = $result.filter('.' + className.active);
260
+ const currentIndex = $result.index($activeResult);
261
+ const resultSize = $result.length;
262
+ const hasActiveResult = $activeResult.length > 0;
263
+
264
+ const keyCode = event.which;
265
+ const keys = {
276
266
  backspace: 8,
277
267
  enter: 13,
278
268
  escape: 27,
@@ -331,20 +321,17 @@
331
321
  module.ensureVisible($result.eq(newIndex));
332
322
  event.preventDefault();
333
323
  }
334
- } else {
335
- // query shortcuts
336
- if (keyCode === keys.enter) {
337
- module.verbose('Enter key pressed, executing query');
338
- module.query();
339
- module.set.buttonPressed();
340
- $prompt.one('keyup', module.remove.buttonFocus);
341
- }
324
+ } else if (keyCode === keys.enter) {
325
+ module.verbose('Enter key pressed, executing query');
326
+ module.query();
327
+ module.set.buttonPressed();
328
+ $prompt.one('keyup', module.remove.buttonFocus);
342
329
  }
343
330
  },
344
331
 
345
332
  setup: {
346
333
  api: function (searchTerm, callback) {
347
- let apiSettings = {
334
+ const apiSettings = {
348
335
  debug: settings.debug,
349
336
  on: false,
350
337
  cache: settings.cache,
@@ -353,7 +340,7 @@
353
340
  query: searchTerm,
354
341
  },
355
342
  };
356
- let apiCallbacks = {
343
+ const apiCallbacks = {
357
344
  onSuccess: function (response, $module, xhr) {
358
345
  module.parse.response.call(element, response, searchTerm);
359
346
  callback();
@@ -412,8 +399,8 @@
412
399
  if (!event.target) {
413
400
  return;
414
401
  }
415
- let $target = $(event.target);
416
- let isInDOM = $.contains(document.documentElement, event.target);
402
+ const $target = $(event.target);
403
+ const isInDOM = document.documentElement.contains(event.target);
417
404
 
418
405
  return isInDOM && $target.closest(selector.message).length > 0;
419
406
  },
@@ -436,8 +423,8 @@
436
423
  }
437
424
  },
438
425
  inputEvent: function () {
439
- let prompt = $prompt[0];
440
- let inputEvent = prompt !== undefined && prompt.oninput !== undefined
426
+ const prompt = $prompt[0];
427
+ const inputEvent = prompt !== undefined && prompt.oninput !== undefined
441
428
  ? 'input'
442
429
  : (prompt !== undefined && prompt.onpropertychange !== undefined
443
430
  ? 'propertychange'
@@ -451,14 +438,8 @@
451
438
  results: function () {
452
439
  return $module.data(metadata.results);
453
440
  },
454
- result: function (value, results) {
441
+ result: function (value = module.get.value(), results = module.get.results()) {
455
442
  let result = false;
456
- value = value !== undefined
457
- ? value
458
- : module.get.value();
459
- results = results !== undefined
460
- ? results
461
- : module.get.results();
462
443
  if (settings.type === 'category') {
463
444
  module.debug('Finding result that matches', value);
464
445
  $.each(results, function (index, category) {
@@ -498,8 +479,7 @@
498
479
  $prompt
499
480
  .val(value);
500
481
  },
501
- type: function (type) {
502
- type = type || settings.type;
482
+ type: function (type = settings.type) {
503
483
  if (className[type]) {
504
484
  $module.addClass(className[type]);
505
485
  }
@@ -524,13 +504,12 @@
524
504
  },
525
505
  },
526
506
 
527
- query: function (callback) {
507
+ query: function (callback = function () {}) {
528
508
  callback = isFunction(callback)
529
509
  ? callback
530
510
  : function () {};
531
- let searchTerm = module.get.value();
532
- let cache = module.read.cache(searchTerm);
533
- callback = callback || function () {};
511
+ const searchTerm = module.get.value();
512
+ const cache = module.read.cache(searchTerm);
534
513
  if (module.has.minimumCharacters()) {
535
514
  if (cache) {
536
515
  module.debug('Reading result from cache', searchTerm);
@@ -560,7 +539,6 @@
560
539
  search: {
561
540
  local: function (searchTerm) {
562
541
  let results = module.search.object(searchTerm, settings.source);
563
- let searchHTML;
564
542
  module.set.loading();
565
543
  module.save.results(results);
566
544
  module.debug('Returned full local search results', results);
@@ -571,7 +549,7 @@
571
549
  if (settings.type === 'category') {
572
550
  results = module.create.categoryResults(results);
573
551
  }
574
- searchHTML = module.generateResults({
552
+ const searchHTML = module.generateResults({
575
553
  results: results,
576
554
  });
577
555
  module.remove.loading();
@@ -593,27 +571,23 @@
593
571
  $module
594
572
  .api('query');
595
573
  },
596
- object: function (searchTerm, source, searchFields) {
574
+ object: function (searchTerm, source = settings.source, searchFields = settings.searchFields) {
597
575
  searchTerm = module.remove.diacritics(String(searchTerm));
598
- let results = [];
599
- let exactResults = [];
600
- let fuzzyResults = [];
601
- let searchExp = searchTerm.replace(regExp.escape, '\\$&');
602
- let matchRegExp = new RegExp(regExp.beginsWith + searchExp, settings.ignoreSearchCase ? 'i' : '');
576
+ const results = [];
577
+ const exactResults = [];
578
+ const fuzzyResults = [];
579
+ const searchExp = searchTerm.replace(regExp.escape, '\\$&');
580
+ const matchRegExp = new RegExp(regExp.beginsWith + searchExp, settings.ignoreSearchCase ? 'i' : '');
603
581
 
604
582
  // avoid duplicates when pushing results
605
- let addResult = function (array, result) {
606
- let notResult = $.inArray(result, results) === -1;
607
- let notFuzzyResult = $.inArray(result, fuzzyResults) === -1;
608
- let notExactResults = $.inArray(result, exactResults) === -1;
583
+ const addResult = function (array, result) {
584
+ const notResult = !results.includes(result);
585
+ const notFuzzyResult = !fuzzyResults.includes(result);
586
+ const notExactResults = !exactResults.includes(result);
609
587
  if (notResult && notFuzzyResult && notExactResults) {
610
588
  array.push(result);
611
589
  }
612
590
  };
613
- source = source || settings.source;
614
- searchFields = searchFields !== undefined
615
- ? searchFields
616
- : settings.searchFields;
617
591
 
618
592
  // search fields should be an array to loop correctly
619
593
  if (!Array.isArray(searchFields)) {
@@ -627,11 +601,11 @@
627
601
  return [];
628
602
  }
629
603
  // iterate through search fields looking for matches
630
- let lastSearchFieldIndex = searchFields.length - 1;
604
+ const lastSearchFieldIndex = searchFields.length - 1;
631
605
  $.each(source, function (label, content) {
632
- let concatenatedContent = [];
606
+ const concatenatedContent = [];
633
607
  $.each(searchFields, function (index, field) {
634
- let fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number';
608
+ const fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number';
635
609
  if (fieldExists) {
636
610
  let text;
637
611
  text = typeof content[field] === 'string'
@@ -661,10 +635,8 @@
661
635
  }
662
636
  });
663
637
  });
664
- $.merge(exactResults, fuzzyResults);
665
- $.merge(results, exactResults);
666
638
 
667
- return results;
639
+ return [...results, ...exactResults, ...fuzzyResults];
668
640
  },
669
641
  },
670
642
  exactSearch: function (query, term) {
@@ -673,15 +645,13 @@
673
645
  term = term.toLowerCase();
674
646
  }
675
647
 
676
- return term.indexOf(query) > -1;
648
+ return term.includes(query);
677
649
  },
678
650
  wordSearch: function (query, term, matchAll) {
679
- let allWords = query.split(/\s+/);
680
- let w;
681
- let wL = allWords.length;
651
+ const allWords = query.split(/\s+/);
682
652
  let found = false;
683
- for (w = 0; w < wL; w++) {
684
- found = module.exactSearch(allWords[w], term);
653
+ for (const w of allWords) {
654
+ found = module.exactSearch(w, term);
685
655
  if ((!found && matchAll) || (found && !matchAll)) {
686
656
  break;
687
657
  }
@@ -690,8 +660,8 @@
690
660
  return found;
691
661
  },
692
662
  fuzzySearch: function (query, term) {
693
- let termLength = term.length;
694
- let queryLength = query.length;
663
+ const termLength = term.length;
664
+ const queryLength = query.length;
695
665
  if (typeof query !== 'string') {
696
666
  return false;
697
667
  }
@@ -707,9 +677,9 @@
707
677
  }
708
678
  for (let characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
709
679
  let continueSearch = false;
710
- let queryCharacter = query.charCodeAt(characterIndex);
680
+ const queryCharacter = query.codePointAt(characterIndex);
711
681
  while (nextCharacterIndex < termLength) {
712
- if (term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
682
+ if (term.codePointAt(nextCharacterIndex++) === queryCharacter) {
713
683
  continueSearch = true;
714
684
 
715
685
  break;
@@ -727,22 +697,20 @@
727
697
  parse: {
728
698
  response: function (response, searchTerm) {
729
699
  if (Array.isArray(response)) {
730
- let o = {};
700
+ const o = {};
731
701
  o[fields.results] = response;
732
702
  response = o;
733
703
  }
734
- let searchHTML = module.generateResults(response);
704
+ const searchHTML = module.generateResults(response);
735
705
  module.verbose('Parsing server response', response);
736
- if (response !== undefined) {
737
- if (searchTerm !== undefined && response[fields.results] !== undefined) {
738
- module.addResults(searchHTML);
739
- module.inject.id(response[fields.results]);
740
- module.write.cache(searchTerm, {
741
- html: searchHTML,
742
- results: response[fields.results],
743
- });
744
- module.save.results(response[fields.results]);
745
- }
706
+ if (response !== undefined && searchTerm !== undefined && response[fields.results] !== undefined) {
707
+ module.addResults(searchHTML);
708
+ module.inject.id(response[fields.results]);
709
+ module.write.cache(searchTerm, {
710
+ html: searchHTML,
711
+ results: response[fields.results],
712
+ });
713
+ module.save.results(response[fields.results]);
746
714
  }
747
715
  },
748
716
  },
@@ -757,8 +725,8 @@
757
725
 
758
726
  has: {
759
727
  minimumCharacters: function () {
760
- let searchTerm = module.get.value();
761
- let numCharacters = searchTerm.length;
728
+ const searchTerm = module.get.value();
729
+ const numCharacters = searchTerm.length;
762
730
 
763
731
  return numCharacters >= settings.minCharacters;
764
732
  },
@@ -766,7 +734,7 @@
766
734
  if ($results.length === 0) {
767
735
  return false;
768
736
  }
769
- let html = $results.html();
737
+ const html = $results.html();
770
738
 
771
739
  return html !== '';
772
740
  },
@@ -774,7 +742,7 @@
774
742
 
775
743
  clear: {
776
744
  cache: function (value) {
777
- let cache = $module.data(metadata.cache);
745
+ const cache = $module.data(metadata.cache);
778
746
  if (!value) {
779
747
  module.debug('Clearing cache', value);
780
748
  $module.removeData(metadata.cache);
@@ -791,7 +759,7 @@
791
759
 
792
760
  read: {
793
761
  cache: function (name) {
794
- let cache = $module.data(metadata.cache);
762
+ const cache = $module.data(metadata.cache);
795
763
  if (settings.cache) {
796
764
  module.verbose('Checking cache for generated html for query', name);
797
765
 
@@ -806,7 +774,7 @@
806
774
 
807
775
  create: {
808
776
  categoryResults: function (results) {
809
- let categoryResults = {};
777
+ const categoryResults = {};
810
778
  $.each(results, function (index, result) {
811
779
  if (!result.category) {
812
780
  return;
@@ -825,12 +793,12 @@
825
793
  return categoryResults;
826
794
  },
827
795
  id: function (resultIndex, categoryIndex) {
828
- let resultID = resultIndex + 1; // not zero indexed
796
+ const resultID = resultIndex + 1; // not zero indexed
829
797
  let letterID;
830
798
  let id;
831
799
  if (categoryIndex !== undefined) {
832
800
  // start char code for "A"
833
- letterID = String.fromCharCode(97 + categoryIndex);
801
+ letterID = String.fromCodePoint(97 + categoryIndex);
834
802
  id = letterID + resultID;
835
803
  module.verbose('Creating category result id', id);
836
804
  } else {
@@ -852,7 +820,7 @@
852
820
  inject: {
853
821
  result: function (result, resultIndex, categoryIndex) {
854
822
  module.verbose('Injecting result into results');
855
- let $selectedResult = categoryIndex !== undefined
823
+ const $selectedResult = categoryIndex !== undefined
856
824
  ? $results
857
825
  .children().eq(categoryIndex)
858
826
  .children(selector.results)
@@ -909,7 +877,7 @@
909
877
 
910
878
  write: {
911
879
  cache: function (name, value) {
912
- let cache = $module.data(metadata.cache) !== undefined
880
+ const cache = $module.data(metadata.cache) !== undefined
913
881
  ? $module.data(metadata.cache)
914
882
  : {};
915
883
  if (settings.cache) {
@@ -922,12 +890,10 @@
922
890
  },
923
891
 
924
892
  addResults: function (html) {
925
- if (isFunction(settings.onResultsAdd)) {
926
- if (settings.onResultsAdd.call($results, html) === false) {
927
- module.debug('onResultsAdd callback cancelled default action');
893
+ if (isFunction(settings.onResultsAdd) && settings.onResultsAdd.call($results, html) === false) {
894
+ module.debug('onResultsAdd callback cancelled default action');
928
895
 
929
- return false;
930
- }
896
+ return false;
931
897
  }
932
898
  if (html) {
933
899
  $results
@@ -962,7 +928,7 @@
962
928
  silent: settings.silent,
963
929
  duration: settings.duration,
964
930
  onShow: function () {
965
- let $firstResult = $module.find(selector.result).eq(0);
931
+ const $firstResult = $module.find(selector.result).eq(0);
966
932
  module.ensureVisible($firstResult);
967
933
  },
968
934
  onComplete: function () {
@@ -1010,9 +976,9 @@
1010
976
 
1011
977
  generateResults: function (response) {
1012
978
  module.debug('Generating html from response', response);
1013
- let template = settings.templates[settings.type];
1014
- let isProperObject = $.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results]);
1015
- let isProperArray = Array.isArray(response[fields.results]) && response[fields.results].length > 0;
979
+ const template = settings.templates[settings.type];
980
+ const isProperObject = $.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results]);
981
+ const isProperArray = Array.isArray(response[fields.results]) && response[fields.results].length > 0;
1016
982
  let html = '';
1017
983
  if (isProperObject || isProperArray) {
1018
984
  if (settings.maxResults > 0) {
@@ -1025,14 +991,14 @@
1025
991
  }
1026
992
  }
1027
993
  if (settings.highlightMatches) {
1028
- let results = response[fields.results];
1029
- let regExpIgnore = settings.ignoreSearchCase ? 'i' : '';
1030
- let querySplit = module.get.value().split('');
1031
- let diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '';
1032
- let htmlReg = '(?![^<]*>)';
1033
- let markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore);
1034
- let markedReplacer = function () {
1035
- let args = [].slice.call(arguments, 1, querySplit.length * 2).map(function (x, i) {
994
+ const results = response[fields.results];
995
+ const regExpIgnore = settings.ignoreSearchCase ? 'i' : '';
996
+ const querySplit = [...module.get.value()];
997
+ const diacriticReg = settings.ignoreDiacritics ? '[\u0300-\u036F]?' : '';
998
+ const htmlReg = '(?![^<]*>)';
999
+ const markedRegExp = new RegExp(htmlReg + '(' + querySplit.join(diacriticReg + ')(.*?)' + htmlReg + '(') + diacriticReg + ')', regExpIgnore);
1000
+ const markedReplacer = function (...args) {
1001
+ args = args.slice(1, querySplit.length * 2).map(function (x, i) {
1036
1002
  return i & 1 ? x : '<mark>' + x + '</mark>'; // eslint-disable-line no-bitwise
1037
1003
  });
1038
1004
 
@@ -1040,7 +1006,7 @@
1040
1006
  };
1041
1007
  $.each(results, function (label, content) {
1042
1008
  $.each(settings.searchFields, function (index, field) {
1043
- let fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number';
1009
+ const fieldExists = typeof content[field] === 'string' || typeof content[field] === 'number';
1044
1010
  if (fieldExists) {
1045
1011
  let markedHTML = typeof content[field] === 'string'
1046
1012
  ? content[field]
@@ -1067,8 +1033,7 @@
1067
1033
  return html;
1068
1034
  },
1069
1035
 
1070
- displayMessage: function (text, type, header) {
1071
- type = type || 'standard';
1036
+ displayMessage: function (text, type = 'standard', header = false) {
1072
1037
  module.debug('Displaying message', text, type, header);
1073
1038
  module.addResults(settings.templates.message(text, type, header));
1074
1039
 
@@ -1093,30 +1058,30 @@
1093
1058
  return module[name];
1094
1059
  }
1095
1060
  },
1096
- debug: function () {
1061
+ debug: function (...args) {
1097
1062
  if (!settings.silent && settings.debug) {
1098
1063
  if (settings.performance) {
1099
- module.performance.log(arguments);
1064
+ module.performance.log(args);
1100
1065
  } else {
1101
1066
  module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
1102
- module.debug.apply(console, arguments);
1067
+ module.debug.apply(console, args);
1103
1068
  }
1104
1069
  }
1105
1070
  },
1106
- verbose: function () {
1071
+ verbose: function (...args) {
1107
1072
  if (!settings.silent && settings.verbose && settings.debug) {
1108
1073
  if (settings.performance) {
1109
- module.performance.log(arguments);
1074
+ module.performance.log(args);
1110
1075
  } else {
1111
1076
  module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
1112
- module.verbose.apply(console, arguments);
1077
+ module.verbose.apply(console, args);
1113
1078
  }
1114
1079
  }
1115
1080
  },
1116
- error: function () {
1081
+ error: function (...args) {
1117
1082
  if (!settings.silent) {
1118
1083
  module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
1119
- module.error.apply(console, arguments);
1084
+ module.error.apply(console, args);
1120
1085
  }
1121
1086
  },
1122
1087
  performance: {
@@ -1131,7 +1096,7 @@
1131
1096
  time = currentTime;
1132
1097
  performance.push({
1133
1098
  Name: message[0],
1134
- Arguments: [].slice.call(message, 1) || '',
1099
+ Arguments: message.slice(1),
1135
1100
  Element: element,
1136
1101
  'Execution Time': executionTime,
1137
1102
  });
@@ -1155,30 +1120,22 @@
1155
1120
  }
1156
1121
  if (performance.length > 0) {
1157
1122
  console.groupCollapsed(title);
1158
- if (console.table) {
1159
- console.table(performance);
1160
- } else {
1161
- $.each(performance, function (index, data) {
1162
- console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
1163
- });
1164
- }
1123
+ console.table(performance);
1165
1124
  console.groupEnd();
1166
1125
  }
1167
1126
  performance = [];
1168
1127
  },
1169
1128
  },
1170
- invoke: function (query, passedArguments, context) {
1129
+ invoke: function (query, passedArguments = queryArguments, context = element) {
1171
1130
  let object = instance;
1172
1131
  let maxDepth;
1173
1132
  let found;
1174
1133
  let response;
1175
- passedArguments = passedArguments || queryArguments;
1176
- context = context || element;
1177
1134
  if (typeof query === 'string' && object !== undefined) {
1178
1135
  query = query.split(/[ .]/);
1179
1136
  maxDepth = query.length - 1;
1180
1137
  $.each(query, function (depth, value) {
1181
- let camelCaseValue = depth !== maxDepth
1138
+ const camelCaseValue = depth !== maxDepth
1182
1139
  ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1183
1140
  : query;
1184
1141
  if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
@@ -1220,7 +1177,7 @@
1220
1177
  if (instance === undefined) {
1221
1178
  module.initialize();
1222
1179
  }
1223
- module.invoke(query);
1180
+ module.invoke(parameters);
1224
1181
  } else {
1225
1182
  if (instance !== undefined) {
1226
1183
  instance.invoke('destroy');
@@ -1366,6 +1323,8 @@
1366
1323
  results: 'results', // array of results (standard)
1367
1324
  title: 'title', // result title
1368
1325
  url: 'url', // result url
1326
+ id: 'id', // HTML 'id' attribute
1327
+ class: 'class', // Class specific to each result to add to the HTML 'class' attribute.
1369
1328
  action: 'action', // "view more" object name
1370
1329
  actionText: 'text', // "view more" text
1371
1330
  actionURL: 'url', // "view more" url
@@ -1388,8 +1347,7 @@
1388
1347
  return string;
1389
1348
  }
1390
1349
 
1391
- const badChars = /["'<>]|&(?![\d#A-Za-z]{1,12};)/g;
1392
- const escape = {
1350
+ const escapeMap = {
1393
1351
  '"': '&quot;',
1394
1352
  '&': '&amp;',
1395
1353
  "'": '&apos;',
@@ -1397,7 +1355,7 @@
1397
1355
  '>': '&gt;',
1398
1356
  };
1399
1357
 
1400
- string = string.replace(badChars, (chr) => escape[chr]);
1358
+ string = String(string).replace(/["&'<>]/g, (chr) => escapeMap[chr]);
1401
1359
 
1402
1360
  // FUI controlled HTML is still allowed
1403
1361
  string = string.replace(/&lt;(\/)*mark&gt;/g, '<$1mark>');
@@ -1421,8 +1379,8 @@
1421
1379
  },
1422
1380
  category: function (response, settings) {
1423
1381
  let html = '';
1424
- let fields = settings.fields;
1425
- let escape = settings.templates.escape;
1382
+ const fields = settings.fields;
1383
+ const escape = settings.templates.escape;
1426
1384
  if (response[fields.categoryResults] !== undefined) {
1427
1385
  // each category
1428
1386
  $.each(response[fields.categoryResults], function (index, category) {
@@ -1437,12 +1395,21 @@
1437
1395
  html += '<div class="results">';
1438
1396
  $.each(category.results, function (index, result) {
1439
1397
  html += result[fields.url]
1440
- ? '<a class="result" href="' + result[fields.url].replace(/"/g, '') + '">'
1441
- : '<a class="result">';
1398
+ ? '<a href="' + result[fields.url].replaceAll('"', '') + '" '
1399
+ : '<div ';
1400
+
1401
+ html += result[fields.id] !== undefined
1402
+ ? ' id="' + result[fields.id].replaceAll('"', '') + '" '
1403
+ : '';
1404
+
1405
+ html += result[fields.class] !== undefined
1406
+ ? ' class="result ' + result[fields.class].replaceAll('"', '') + '">'
1407
+ : ' class="result">';
1408
+
1442
1409
  if (result[fields.image] !== undefined) {
1443
1410
  html += ''
1444
1411
  + '<div class="image">'
1445
- + ' <img src="' + result[fields.image].replace(/"/g, '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replace(/"/g, '') + '"' : '') + '>'
1412
+ + ' <img src="' + result[fields.image].replaceAll('"', '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replaceAll('"', '') + '"' : '') + '>'
1446
1413
  + '</div>';
1447
1414
  }
1448
1415
  html += '<div class="content">';
@@ -1457,7 +1424,9 @@
1457
1424
  }
1458
1425
  html += ''
1459
1426
  + '</div>';
1460
- html += '</a>';
1427
+ html += result[fields.url]
1428
+ ? '</a>'
1429
+ : '</div>';
1461
1430
  });
1462
1431
  html += '</div>';
1463
1432
  html += ''
@@ -1471,7 +1440,7 @@
1471
1440
  + escape(response[fields.action][fields.actionText], settings)
1472
1441
  + '</div>'
1473
1442
  : ''
1474
- + '<a href="' + response[fields.action][fields.actionURL].replace(/"/g, '') + '" class="action">'
1443
+ + '<a href="' + response[fields.action][fields.actionURL].replaceAll('"', '') + '" class="action">'
1475
1444
  + escape(response[fields.action][fields.actionText], settings)
1476
1445
  + '</a>';
1477
1446
  }
@@ -1483,18 +1452,27 @@
1483
1452
  },
1484
1453
  standard: function (response, settings) {
1485
1454
  let html = '';
1486
- let fields = settings.fields;
1487
- let escape = settings.templates.escape;
1455
+ const fields = settings.fields;
1456
+ const escape = settings.templates.escape;
1488
1457
  if (response[fields.results] !== undefined) {
1489
1458
  // each result
1490
1459
  $.each(response[fields.results], function (index, result) {
1491
1460
  html += result[fields.url]
1492
- ? '<a class="result" href="' + result[fields.url].replace(/"/g, '') + '">'
1493
- : '<a class="result">';
1461
+ ? '<a href="' + result[fields.url].replaceAll('"', '') + '" '
1462
+ : '<div ';
1463
+
1464
+ html += result[fields.id] !== undefined
1465
+ ? 'id="' + result[fields.id].replaceAll('"', '') + '" '
1466
+ : '';
1467
+
1468
+ html += result[fields.class] !== undefined
1469
+ ? 'class="result ' + result[fields.class].replaceAll('"', '') + '">'
1470
+ : 'class="result">';
1471
+
1494
1472
  if (result[fields.image] !== undefined) {
1495
1473
  html += ''
1496
1474
  + '<div class="image">'
1497
- + ' <img src="' + result[fields.image].replace(/"/g, '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replace(/"/g, '') + '"' : '') + '>'
1475
+ + ' <img src="' + result[fields.image].replaceAll('"', '') + '"' + (result[fields.alt] ? ' alt="' + result[fields.alt].replaceAll('"', '') + '"' : '') + '>'
1498
1476
  + '</div>';
1499
1477
  }
1500
1478
  html += '<div class="content">';
@@ -1509,7 +1487,9 @@
1509
1487
  }
1510
1488
  html += ''
1511
1489
  + '</div>';
1512
- html += '</a>';
1490
+ html += result[fields.url]
1491
+ ? '</a>'
1492
+ : '</div>';
1513
1493
  });
1514
1494
  if (response[fields.action]) {
1515
1495
  html += fields.actionURL === false
@@ -1518,7 +1498,7 @@
1518
1498
  + escape(response[fields.action][fields.actionText], settings)
1519
1499
  + '</div>'
1520
1500
  : ''
1521
- + '<a href="' + response[fields.action][fields.actionURL].replace(/"/g, '') + '" class="action">'
1501
+ + '<a href="' + response[fields.action][fields.actionURL].replaceAll('"', '') + '" class="action">'
1522
1502
  + escape(response[fields.action][fields.actionText], settings)
1523
1503
  + '</a>';
1524
1504
  }
@@ -1533,7 +1513,7 @@
1533
1513
 
1534
1514
  $.extend($.easing, {
1535
1515
  easeOutExpo: function (x) {
1536
- return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);
1516
+ return x === 1 ? 1 : 1 - 2 ** (-10 * x);
1537
1517
  },
1538
1518
  });
1539
1519
  })(jQuery, window, document);