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.
- package/.eslintrc.js +6 -23
- package/.github/workflows/ci.yml +9 -9
- package/.github/workflows/depsreview.yml +1 -1
- package/.github/workflows/nightly.yml +7 -5
- package/.github/workflows/release.yml +2 -2
- package/.stylelintrc.js +1 -15
- package/CHANGELOG.md +5289 -2325
- package/README.md +8 -4
- package/changelog-setup.js +32 -10
- package/changelog-template.hbs +256 -251
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +62 -73
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +3 -3
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +101 -161
- package/dist/components/api.min.js +3 -3
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +5 -6
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +3 -3
- package/dist/components/calendar.js +283 -332
- package/dist/components/calendar.min.css +2 -2
- package/dist/components/calendar.min.js +3 -3
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +58 -79
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +3 -3
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +2 -2
- package/dist/components/dimmer.js +39 -52
- package/dist/components/dimmer.min.css +2 -2
- package/dist/components/dimmer.min.js +3 -3
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +21 -35
- package/dist/components/dropdown.js +435 -531
- package/dist/components/dropdown.min.css +2 -2
- package/dist/components/dropdown.min.js +3 -3
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +55 -68
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +3 -3
- package/dist/components/emoji.css +3809 -7617
- package/dist/components/emoji.min.css +2 -2
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +149 -168
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +3 -3
- package/dist/components/form.css +3 -5
- package/dist/components/form.js +249 -269
- package/dist/components/form.min.css +2 -2
- package/dist/components/form.min.js +3 -3
- package/dist/components/grid.css +2 -2
- package/dist/components/grid.min.css +2 -2
- package/dist/components/header.css +6 -6
- package/dist/components/header.min.css +2 -2
- package/dist/components/icon.css +10 -37
- package/dist/components/icon.min.css +2 -2
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +284 -12
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +6 -14
- package/dist/components/label.min.css +2 -2
- package/dist/components/list.css +3 -3
- package/dist/components/list.min.css +2 -2
- package/dist/components/loader.css +53 -53
- package/dist/components/loader.min.css +2 -2
- package/dist/components/menu.css +45 -60
- package/dist/components/menu.min.css +2 -2
- package/dist/components/message.css +2 -2
- package/dist/components/message.min.css +2 -2
- package/dist/components/modal.css +5 -5
- package/dist/components/modal.js +161 -170
- package/dist/components/modal.min.css +2 -2
- package/dist/components/modal.min.js +3 -3
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +74 -88
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +3 -3
- package/dist/components/placeholder.css +2 -2
- package/dist/components/placeholder.min.css +2 -2
- package/dist/components/popup.css +19 -73
- package/dist/components/popup.js +105 -138
- package/dist/components/popup.min.css +2 -2
- package/dist/components/popup.min.js +3 -3
- package/dist/components/progress.css +4 -13
- package/dist/components/progress.js +75 -97
- package/dist/components/progress.min.css +2 -2
- package/dist/components/progress.min.js +3 -3
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +49 -61
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +3 -3
- package/dist/components/reset.css +48 -208
- package/dist/components/reset.min.css +2 -2
- package/dist/components/reveal.css +2 -5
- package/dist/components/reveal.min.css +2 -2
- package/dist/components/search.css +2 -3
- package/dist/components/search.js +178 -198
- package/dist/components/search.min.css +2 -2
- package/dist/components/search.min.js +3 -3
- package/dist/components/segment.css +6 -6
- package/dist/components/segment.min.css +2 -2
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +59 -69
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +3 -3
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +81 -101
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +3 -3
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +37 -58
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +3 -3
- package/dist/components/slider.css +1 -1
- package/dist/components/slider.js +169 -183
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +3 -3
- package/dist/components/state.js +45 -59
- package/dist/components/state.min.js +3 -3
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +4 -4
- package/dist/components/step.min.css +2 -2
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +95 -117
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +3 -3
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +83 -115
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +3 -3
- package/dist/components/table.css +8 -8
- package/dist/components/table.min.css +2 -2
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +64 -74
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +3 -3
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +61 -85
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +3 -3
- package/dist/components/visibility.js +120 -140
- package/dist/components/visibility.min.js +3 -3
- package/dist/semantic.css +4480 -8222
- package/dist/semantic.js +2886 -3485
- package/dist/semantic.min.css +3 -3
- package/dist/semantic.min.js +3 -3
- package/examples/attached.html +1 -1
- package/examples/components/menu.html +1 -1
- package/package.json +8 -5
- package/scripts/nightly-version.js +4 -4
- package/src/definitions/behaviors/api.js +100 -160
- package/src/definitions/behaviors/form.js +248 -268
- package/src/definitions/behaviors/state.js +44 -58
- package/src/definitions/behaviors/visibility.js +119 -139
- package/src/definitions/collections/breadcrumb.less +0 -1
- package/src/definitions/collections/form.less +3 -9
- package/src/definitions/collections/grid.less +1 -2
- package/src/definitions/collections/menu.less +106 -117
- package/src/definitions/collections/message.less +1 -2
- package/src/definitions/collections/table.less +7 -8
- package/src/definitions/elements/button.less +4 -6
- package/src/definitions/elements/container.less +0 -1
- package/src/definitions/elements/divider.less +1 -2
- package/src/definitions/elements/emoji.less +1 -1
- package/src/definitions/elements/flag.less +1 -1
- package/src/definitions/elements/header.less +4 -5
- package/src/definitions/elements/icon.less +10 -37
- package/src/definitions/elements/image.less +0 -1
- package/src/definitions/elements/input.less +4 -7
- package/src/definitions/elements/label.less +5 -14
- package/src/definitions/elements/list.less +2 -3
- package/src/definitions/elements/loader.less +10 -11
- package/src/definitions/elements/placeholder.less +1 -2
- package/src/definitions/elements/rail.less +0 -1
- package/src/definitions/elements/reveal.less +1 -5
- package/src/definitions/elements/segment.less +5 -6
- package/src/definitions/elements/step.less +3 -4
- package/src/definitions/elements/text.less +0 -1
- package/src/definitions/globals/reset.less +0 -1
- package/src/definitions/globals/site.js +36 -57
- package/src/definitions/globals/site.less +0 -1
- package/src/definitions/modules/accordion.js +61 -72
- package/src/definitions/modules/accordion.less +0 -1
- package/src/definitions/modules/calendar.js +282 -331
- package/src/definitions/modules/calendar.less +2 -3
- package/src/definitions/modules/checkbox.js +57 -78
- package/src/definitions/modules/checkbox.less +0 -1
- package/src/definitions/modules/dimmer.js +38 -51
- package/src/definitions/modules/dimmer.less +1 -2
- package/src/definitions/modules/dropdown.js +434 -530
- package/src/definitions/modules/dropdown.less +27 -38
- package/src/definitions/modules/embed.js +54 -67
- package/src/definitions/modules/embed.less +0 -1
- package/src/definitions/modules/flyout.js +148 -167
- package/src/definitions/modules/flyout.less +0 -1
- package/src/definitions/modules/modal.js +160 -169
- package/src/definitions/modules/modal.less +3 -4
- package/src/definitions/modules/nag.js +73 -87
- package/src/definitions/modules/nag.less +0 -1
- package/src/definitions/modules/popup.js +104 -137
- package/src/definitions/modules/popup.less +18 -73
- package/src/definitions/modules/progress.js +74 -96
- package/src/definitions/modules/progress.less +3 -13
- package/src/definitions/modules/rating.js +48 -60
- package/src/definitions/modules/rating.less +0 -1
- package/src/definitions/modules/search.js +177 -197
- package/src/definitions/modules/search.less +2 -4
- package/src/definitions/modules/shape.js +58 -68
- package/src/definitions/modules/shape.less +0 -1
- package/src/definitions/modules/sidebar.js +80 -100
- package/src/definitions/modules/sidebar.less +0 -1
- package/src/definitions/modules/slider.js +168 -182
- package/src/definitions/modules/slider.less +0 -1
- package/src/definitions/modules/sticky.js +94 -116
- package/src/definitions/modules/sticky.less +0 -1
- package/src/definitions/modules/tab.js +82 -114
- package/src/definitions/modules/tab.less +0 -1
- package/src/definitions/modules/toast.js +63 -73
- package/src/definitions/modules/toast.less +0 -1
- package/src/definitions/modules/transition.js +60 -84
- package/src/definitions/modules/transition.less +1 -2
- package/src/definitions/views/ad.less +0 -1
- package/src/definitions/views/card.less +0 -1
- package/src/definitions/views/comment.less +0 -1
- package/src/definitions/views/feed.less +0 -1
- package/src/definitions/views/item.less +0 -1
- package/src/definitions/views/statistic.less +0 -1
- package/src/semantic.less +1 -1
- package/src/themes/amazon/elements/button.overrides +1 -1
- package/src/themes/amazon/elements/button.variables +5 -6
- package/src/themes/amazon/globals/site.variables +2 -3
- package/src/themes/bookish/elements/header.variables +2 -2
- package/src/themes/bootstrap3/elements/button.variables +4 -5
- package/src/themes/chubby/collections/menu.variables +1 -1
- package/src/themes/chubby/elements/button.overrides +4 -4
- package/src/themes/chubby/modules/accordion.overrides +1 -1
- package/src/themes/chubby/views/comment.overrides +2 -2
- package/src/themes/chubby/views/comment.variables +2 -2
- package/src/themes/classic/collections/table.variables +2 -2
- package/src/themes/classic/elements/button.variables +11 -11
- package/src/themes/classic/modules/progress.variables +2 -2
- package/src/themes/classic/views/card.variables +2 -2
- package/src/themes/default/collections/form.variables +2 -3
- package/src/themes/default/collections/menu.variables +28 -28
- package/src/themes/default/collections/message.variables +1 -1
- package/src/themes/default/collections/table.variables +4 -4
- package/src/themes/default/elements/button.variables +9 -10
- package/src/themes/default/elements/divider.variables +1 -1
- package/src/themes/default/elements/icon.variables +2 -2
- package/src/themes/default/elements/image.variables +1 -1
- package/src/themes/default/elements/input.variables +2 -2
- package/src/themes/default/elements/label.variables +4 -4
- package/src/themes/default/elements/list.variables +1 -1
- package/src/themes/default/elements/placeholder.variables +6 -6
- package/src/themes/default/elements/segment.variables +8 -8
- package/src/themes/default/globals/reset.overrides +45 -201
- package/src/themes/default/globals/site.variables +50 -50
- package/src/themes/default/globals/variation.variables +3 -2
- package/src/themes/default/modules/accordion.variables +0 -1
- package/src/themes/default/modules/checkbox.variables +1 -1
- package/src/themes/default/modules/dimmer.variables +12 -12
- package/src/themes/default/modules/dropdown.variables +17 -16
- package/src/themes/default/modules/embed.variables +2 -2
- package/src/themes/default/modules/flyout.variables +3 -3
- package/src/themes/default/modules/modal.variables +14 -14
- package/src/themes/default/modules/nag.variables +1 -1
- package/src/themes/default/modules/rating.variables +1 -1
- package/src/themes/default/modules/search.variables +1 -1
- package/src/themes/default/modules/shape.variables +1 -1
- package/src/themes/default/modules/sidebar.variables +2 -2
- package/src/themes/default/modules/toast.variables +4 -4
- package/src/themes/default/views/card.variables +6 -7
- package/src/themes/default/views/feed.variables +4 -4
- package/src/themes/default/views/item.variables +2 -3
- package/src/themes/flat/collections/form.variables +1 -1
- package/src/themes/flat/globals/site.variables +9 -9
- package/src/themes/github/collections/form.overrides +3 -3
- package/src/themes/github/collections/form.variables +3 -3
- package/src/themes/github/collections/menu.overrides +1 -1
- package/src/themes/github/collections/menu.variables +10 -10
- package/src/themes/github/collections/message.variables +6 -6
- package/src/themes/github/elements/button.variables +17 -17
- package/src/themes/github/elements/input.variables +3 -3
- package/src/themes/github/elements/segment.variables +2 -2
- package/src/themes/github/elements/step.overrides +4 -4
- package/src/themes/github/elements/step.variables +3 -3
- package/src/themes/github/globals/site.variables +2 -2
- package/src/themes/github/modules/dropdown.variables +1 -3
- package/src/themes/gmail/collections/message.variables +2 -2
- package/src/themes/material/collections/menu.variables +1 -1
- package/src/themes/material/elements/button.overrides +4 -4
- package/src/themes/material/elements/button.variables +5 -5
- package/src/themes/material/modules/dropdown.variables +1 -1
- package/src/themes/material/modules/modal.variables +1 -1
- package/src/themes/raised/elements/button.variables +1 -1
- package/src/themes/round/elements/button.variables +12 -12
- package/src/themes/striped/modules/progress.overrides +3 -3
- package/src/themes/timeline/views/feed.variables +2 -2
- package/src/themes/twitter/elements/button.overrides +1 -1
- package/src/themes/twitter/elements/button.variables +4 -5
- package/tasks/admin/components/create.js +12 -15
- package/tasks/admin/components/init.js +11 -12
- package/tasks/admin/components/update.js +19 -20
- package/tasks/admin/distributions/create.js +30 -51
- package/tasks/admin/distributions/init.js +11 -12
- package/tasks/admin/distributions/update.js +18 -19
- package/tasks/admin/register.js +7 -7
- package/tasks/build/assets.js +1 -1
- package/tasks/build/css.js +5 -5
- package/tasks/build/javascript.js +1 -1
- package/tasks/config/admin/github.js +1 -1
- package/tasks/config/admin/templates/css-package.js +1 -1
- package/tasks/config/admin/templates/less-package.js +1 -1
- package/tasks/config/project/config.js +10 -10
- package/tasks/config/project/install.js +12 -12
- package/tasks/config/project/release.js +6 -12
- package/tasks/config/tasks.js +15 -11
- package/tasks/config/user.js +1 -4
- package/tasks/docs/metadata.js +18 -20
- package/tasks/install.js +14 -12
- package/test/meteor/assets.js +4 -4
- package/test/meteor/fonts.js +10 -11
- package/test/modules/module.spec.js +18 -18
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* # Fomantic-UI 2.10.0-beta.
|
|
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 (
|
|
23
|
-
|
|
22
|
+
$.fn.search = function (...args) {
|
|
23
|
+
const $allModules = $(this);
|
|
24
24
|
|
|
25
25
|
let time = Date.now();
|
|
26
26
|
let performance = [];
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
33
|
+
const settings = $.isPlainObject(parameters)
|
|
34
34
|
? $.extend(true, {}, $.fn.search.settings, parameters)
|
|
35
35
|
: $.extend({}, $.fn.search.settings);
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
46
|
-
|
|
45
|
+
const eventNamespace = '.' + namespace;
|
|
46
|
+
const moduleNamespace = namespace + '-module';
|
|
47
47
|
|
|
48
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
162
|
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
211
|
+
const value = $title.length > 0
|
|
216
212
|
? $title.text()
|
|
217
213
|
: false;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (isFunction(settings.onSelect)) {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
416
|
-
|
|
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
|
-
|
|
440
|
-
|
|
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
|
-
|
|
532
|
-
|
|
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
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
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
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
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
|
-
|
|
604
|
+
const lastSearchFieldIndex = searchFields.length - 1;
|
|
631
605
|
$.each(source, function (label, content) {
|
|
632
|
-
|
|
606
|
+
const concatenatedContent = [];
|
|
633
607
|
$.each(searchFields, function (index, field) {
|
|
634
|
-
|
|
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.
|
|
648
|
+
return term.includes(query);
|
|
677
649
|
},
|
|
678
650
|
wordSearch: function (query, term, matchAll) {
|
|
679
|
-
|
|
680
|
-
let w;
|
|
681
|
-
let wL = allWords.length;
|
|
651
|
+
const allWords = query.split(/\s+/);
|
|
682
652
|
let found = false;
|
|
683
|
-
for (
|
|
684
|
-
found = module.exactSearch(
|
|
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
|
-
|
|
694
|
-
|
|
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
|
-
|
|
680
|
+
const queryCharacter = query.codePointAt(characterIndex);
|
|
711
681
|
while (nextCharacterIndex < termLength) {
|
|
712
|
-
if (term.
|
|
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
|
-
|
|
700
|
+
const o = {};
|
|
731
701
|
o[fields.results] = response;
|
|
732
702
|
response = o;
|
|
733
703
|
}
|
|
734
|
-
|
|
704
|
+
const searchHTML = module.generateResults(response);
|
|
735
705
|
module.verbose('Parsing server response', response);
|
|
736
|
-
if (response !== undefined) {
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
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
|
-
|
|
761
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
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
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
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
|
-
|
|
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(
|
|
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,
|
|
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(
|
|
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,
|
|
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,
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
1392
|
-
const escape = {
|
|
1350
|
+
const escapeMap = {
|
|
1393
1351
|
'"': '"',
|
|
1394
1352
|
'&': '&',
|
|
1395
1353
|
"'": ''',
|
|
@@ -1397,7 +1355,7 @@
|
|
|
1397
1355
|
'>': '>',
|
|
1398
1356
|
};
|
|
1399
1357
|
|
|
1400
|
-
string = string.replace(
|
|
1358
|
+
string = String(string).replace(/["&'<>]/g, (chr) => escapeMap[chr]);
|
|
1401
1359
|
|
|
1402
1360
|
// FUI controlled HTML is still allowed
|
|
1403
1361
|
string = string.replace(/<(\/)*mark>/g, '<$1mark>');
|
|
@@ -1421,8 +1379,8 @@
|
|
|
1421
1379
|
},
|
|
1422
1380
|
category: function (response, settings) {
|
|
1423
1381
|
let html = '';
|
|
1424
|
-
|
|
1425
|
-
|
|
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
|
|
1441
|
-
: '<
|
|
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].
|
|
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 +=
|
|
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].
|
|
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
|
-
|
|
1487
|
-
|
|
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
|
|
1493
|
-
: '<
|
|
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].
|
|
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 +=
|
|
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].
|
|
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 -
|
|
1516
|
+
return x === 1 ? 1 : 1 - 2 ** (-10 * x);
|
|
1537
1517
|
},
|
|
1538
1518
|
});
|
|
1539
1519
|
})(jQuery, window, document);
|