@searchspring/snap-controller 0.42.3 → 0.43.1
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/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +31 -18
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +3 -7
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +5 -18
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +31 -18
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +4 -8
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +6 -19
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA0B/B,aAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA6D3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;uBA8DpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkH9B;CACF"}
|
|
@@ -105,7 +105,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
105
105
|
_this.track = {
|
|
106
106
|
// TODO: add in future when autocomplete supports result click tracking
|
|
107
107
|
product: {
|
|
108
|
-
click: function (
|
|
108
|
+
click: function () {
|
|
109
109
|
_this.log.warn('product.click tracking is not currently supported in this controller type');
|
|
110
110
|
},
|
|
111
111
|
},
|
|
@@ -287,8 +287,8 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
287
287
|
_this.setFocused(e.target);
|
|
288
288
|
}
|
|
289
289
|
var value = e.target.value;
|
|
290
|
-
// prevent search when value is unchanged
|
|
291
|
-
if (_this.store.state.input == value && _this.store.loaded) {
|
|
290
|
+
// prevent search when value is unchanged or empty
|
|
291
|
+
if (((!_this.store.state.input && !value) || _this.store.state.input == value) && _this.store.loaded) {
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
294
|
_this.store.state.input = value;
|
|
@@ -298,23 +298,32 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
298
298
|
input.value = value;
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
|
+
// TODO cancel any current requests?
|
|
301
302
|
clearTimeout(_this.handlers.input.timeoutDelay);
|
|
303
|
+
var trendingResultsEnabled = ((_c = _this.store.trending) === null || _c === void 0 ? void 0 : _c.length) && ((_e = (_d = _this.config.settings) === null || _d === void 0 ? void 0 : _d.trending) === null || _e === void 0 ? void 0 : _e.showResults);
|
|
304
|
+
var historyResultsEnabled = ((_f = _this.store.history) === null || _f === void 0 ? void 0 : _f.length) && ((_h = (_g = _this.config.settings) === null || _g === void 0 ? void 0 : _g.history) === null || _h === void 0 ? void 0 : _h.showResults);
|
|
302
305
|
if (!value) {
|
|
303
|
-
//
|
|
306
|
+
// there is no input value - reset state of store and UrlManager
|
|
304
307
|
_this.store.reset();
|
|
305
308
|
_this.urlManager.reset().go();
|
|
306
|
-
|
|
309
|
+
// show results for trending or history (if configured) - trending has priority
|
|
310
|
+
if (trendingResultsEnabled) {
|
|
307
311
|
_this.store.trending[0].preview();
|
|
308
312
|
}
|
|
309
|
-
else if (
|
|
313
|
+
else if (historyResultsEnabled) {
|
|
310
314
|
_this.store.history[0].preview();
|
|
311
315
|
}
|
|
312
316
|
}
|
|
313
317
|
else {
|
|
318
|
+
// new query in the input - trigger a new search via UrlManager
|
|
314
319
|
_this.store.resetTerms();
|
|
315
320
|
_this.handlers.input.timeoutDelay = setTimeout(function () {
|
|
316
321
|
_this.store.state.locks.terms.unlock();
|
|
317
322
|
_this.store.state.locks.facets.unlock();
|
|
323
|
+
// must reset query to ensure funcitonality when trending/history term is equal to the typed term
|
|
324
|
+
if (trendingResultsEnabled || historyResultsEnabled) {
|
|
325
|
+
_this.urlManager.set({ query: '' }).go();
|
|
326
|
+
}
|
|
318
327
|
_this.urlManager.set({ query: _this.store.state.input }).go();
|
|
319
328
|
}, exports.INPUT_DELAY);
|
|
320
329
|
}
|
|
@@ -370,7 +379,12 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
370
379
|
return __generator(this, function (_d) {
|
|
371
380
|
switch (_d.label) {
|
|
372
381
|
case 0:
|
|
382
|
+
// if urlManager has no query, there will be no need to get params and no query
|
|
383
|
+
if (!this.urlManager.state.query) {
|
|
384
|
+
return [2 /*return*/];
|
|
385
|
+
}
|
|
373
386
|
params = this.params;
|
|
387
|
+
// if params have no query do not search
|
|
374
388
|
if (!((_c = (_b = params === null || params === void 0 ? void 0 : params.search) === null || _b === void 0 ? void 0 : _b.query) === null || _c === void 0 ? void 0 : _c.string)) {
|
|
375
389
|
return [2 /*return*/];
|
|
376
390
|
}
|
|
@@ -403,13 +417,9 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
403
417
|
return [4 /*yield*/, this.client.autocomplete(params)];
|
|
404
418
|
case 6:
|
|
405
419
|
_a = _d.sent(), meta = _a[0], response = _a[1];
|
|
406
|
-
// @ts-ignore
|
|
420
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
407
421
|
if (!response.meta) {
|
|
408
|
-
|
|
409
|
-
* MockClient will overwrite the client search() method and use
|
|
410
|
-
* SearchData to return mock data which already contains meta data
|
|
411
|
-
*/
|
|
412
|
-
// @ts-ignore
|
|
422
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
413
423
|
response.meta = meta;
|
|
414
424
|
}
|
|
415
425
|
searchProfile.stop();
|
|
@@ -442,7 +452,6 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
442
452
|
afterSearchProfile.stop();
|
|
443
453
|
this.log.profile(afterSearchProfile);
|
|
444
454
|
// update the store
|
|
445
|
-
// @ts-ignore
|
|
446
455
|
this.store.update(response);
|
|
447
456
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
448
457
|
_d.label = 11;
|
|
@@ -727,6 +736,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
727
736
|
else if (form) {
|
|
728
737
|
form.addEventListener('submit', _this.handlers.input.formSubmit);
|
|
729
738
|
formActionUrl = form.action || '';
|
|
739
|
+
// serializeForm will include additional form element in our urlManager as globals
|
|
730
740
|
if ((_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.serializeForm) {
|
|
731
741
|
bindFormParameters(form, _this.handlers.input.formElementChange, function (elem) {
|
|
732
742
|
return elem != input;
|
|
@@ -744,10 +754,12 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
744
754
|
return __assign(__assign({}, translatorConfig), { urlRoot: formActionUrl });
|
|
745
755
|
}));
|
|
746
756
|
}
|
|
747
|
-
if
|
|
757
|
+
// if the input is currently focused, trigger setFocues which will eventually trigger keyup - but not if loading
|
|
758
|
+
if (document.activeElement === input && !_this.store.loading) {
|
|
748
759
|
_this.setFocused(input);
|
|
749
760
|
}
|
|
750
761
|
});
|
|
762
|
+
// get trending terms - this is at the bottom because urlManager changes need to be in place before creating the store
|
|
751
763
|
if (((_b = (_a = this.config.settings) === null || _a === void 0 ? void 0 : _a.trending) === null || _b === void 0 ? void 0 : _b.limit) && ((_d = (_c = this.config.settings) === null || _c === void 0 ? void 0 : _c.trending) === null || _d === void 0 ? void 0 : _d.limit) > 0 && !((_e = this.store.trending) === null || _e === void 0 ? void 0 : _e.length)) {
|
|
752
764
|
this.searchTrending();
|
|
753
765
|
}
|
|
@@ -781,7 +793,7 @@ function timeout(time) {
|
|
|
781
793
|
});
|
|
782
794
|
}
|
|
783
795
|
// for grabbing other parameters from the form and using them in UrlManager
|
|
784
|
-
var
|
|
796
|
+
var INPUT_TYPE_BLOCKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
|
|
785
797
|
function getFormParameters(form, filterFn) {
|
|
786
798
|
var parameters = {};
|
|
787
799
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
@@ -790,7 +802,7 @@ function getFormParameters(form, filterFn) {
|
|
|
790
802
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
791
803
|
continue;
|
|
792
804
|
}
|
|
793
|
-
if (elem.name && !
|
|
805
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
794
806
|
if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
|
|
795
807
|
parameters[elem.name] = elem.value;
|
|
796
808
|
}
|
|
@@ -799,6 +811,7 @@ function getFormParameters(form, filterFn) {
|
|
|
799
811
|
}
|
|
800
812
|
return parameters;
|
|
801
813
|
}
|
|
814
|
+
// this picks up changes to the form
|
|
802
815
|
function bindFormParameters(form, fn, filterFn) {
|
|
803
816
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
804
817
|
for (var i = form.elements.length - 1; i >= 0; i--) {
|
|
@@ -806,7 +819,7 @@ function bindFormParameters(form, fn, filterFn) {
|
|
|
806
819
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
807
820
|
continue;
|
|
808
821
|
}
|
|
809
|
-
if (elem.name && !
|
|
822
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
810
823
|
elem.addEventListener('change', fn);
|
|
811
824
|
}
|
|
812
825
|
}
|
|
@@ -816,7 +829,7 @@ function unbindFormParameters(form, fn) {
|
|
|
816
829
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
817
830
|
for (var i = form.elements.length - 1; i >= 0; i--) {
|
|
818
831
|
var elem = form.elements[i];
|
|
819
|
-
if (elem.name && !
|
|
832
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
820
833
|
elem.removeEventListener('change', fn);
|
|
821
834
|
}
|
|
822
835
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
|
|
@@ -170,13 +170,9 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
170
170
|
return [4 /*yield*/, this.client.finder(params)];
|
|
171
171
|
case 8:
|
|
172
172
|
_a = _b.sent(), meta = _a[0], response = _a[1];
|
|
173
|
-
// @ts-ignore
|
|
173
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
174
174
|
if (!response.meta) {
|
|
175
|
-
|
|
176
|
-
* MockClient will overwrite the client search() method and use
|
|
177
|
-
* SearchData to return mock data which already contains meta data
|
|
178
|
-
*/
|
|
179
|
-
// @ts-ignore
|
|
175
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
180
176
|
response.meta = meta;
|
|
181
177
|
}
|
|
182
178
|
searchProfile.stop();
|
|
@@ -209,7 +205,7 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
209
205
|
afterSearchProfile.stop();
|
|
210
206
|
this.log.profile(afterSearchProfile);
|
|
211
207
|
// update the store
|
|
212
|
-
// @ts-ignore
|
|
208
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
213
209
|
this.store.update(response);
|
|
214
210
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
215
211
|
_b.label = 13;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAqI3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
|
|
@@ -80,7 +80,6 @@ var AbstractController_1 = require("../Abstract/AbstractController");
|
|
|
80
80
|
var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
|
|
81
81
|
var getParams_1 = require("../utils/getParams");
|
|
82
82
|
var types_1 = require("../types");
|
|
83
|
-
var HEIGHT_CHECK_INTERVAL = 50;
|
|
84
83
|
var API_LIMIT = 500;
|
|
85
84
|
var defaultConfig = {
|
|
86
85
|
id: 'search',
|
|
@@ -244,11 +243,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
244
243
|
// set the response results with results from backfill responses
|
|
245
244
|
response_1.results = backfillResults_1;
|
|
246
245
|
if (!response_1.meta) {
|
|
247
|
-
|
|
248
|
-
* MockClient will overwrite the client search() method and use
|
|
249
|
-
* SearchData to return mock data which already contains meta data
|
|
250
|
-
*/
|
|
251
|
-
// @ts-ignore
|
|
246
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
252
247
|
response_1.meta = meta_1;
|
|
253
248
|
}
|
|
254
249
|
return [3 /*break*/, 14];
|
|
@@ -256,13 +251,9 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
256
251
|
case 13:
|
|
257
252
|
// infinite with no backfills.
|
|
258
253
|
_b = _x.sent(), meta_1 = _b[0], response_1 = _b[1];
|
|
259
|
-
// @ts-ignore
|
|
254
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
260
255
|
if (!response_1.meta) {
|
|
261
|
-
|
|
262
|
-
* MockClient will overwrite the client search() method and use
|
|
263
|
-
* SearchData to return mock data which already contains meta data
|
|
264
|
-
*/
|
|
265
|
-
// @ts-ignore
|
|
256
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
266
257
|
response_1.meta = meta_1;
|
|
267
258
|
}
|
|
268
259
|
//append new results to previous results
|
|
@@ -273,13 +264,9 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
273
264
|
case 16:
|
|
274
265
|
//standard.
|
|
275
266
|
_c = _x.sent(), meta_1 = _c[0], response_1 = _c[1];
|
|
276
|
-
// @ts-ignore
|
|
267
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
277
268
|
if (!response_1.meta) {
|
|
278
|
-
|
|
279
|
-
* MockClient will overwrite the client search() method and use
|
|
280
|
-
* SearchData to return mock data which already contains meta data
|
|
281
|
-
*/
|
|
282
|
-
// @ts-ignore
|
|
269
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
283
270
|
response_1.meta = meta_1;
|
|
284
271
|
}
|
|
285
272
|
_x.label = 17;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA0B/B,aAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA6D3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;uBA8DpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkH9B;CACF"}
|
|
@@ -35,7 +35,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
35
35
|
this.track = {
|
|
36
36
|
// TODO: add in future when autocomplete supports result click tracking
|
|
37
37
|
product: {
|
|
38
|
-
click: (
|
|
38
|
+
click: () => {
|
|
39
39
|
this.log.warn('product.click tracking is not currently supported in this controller type');
|
|
40
40
|
},
|
|
41
41
|
},
|
|
@@ -173,8 +173,8 @@ export class AutocompleteController extends AbstractController {
|
|
|
173
173
|
this.setFocused(e.target);
|
|
174
174
|
}
|
|
175
175
|
const value = e.target.value;
|
|
176
|
-
// prevent search when value is unchanged
|
|
177
|
-
if (this.store.state.input == value && this.store.loaded) {
|
|
176
|
+
// prevent search when value is unchanged or empty
|
|
177
|
+
if (((!this.store.state.input && !value) || this.store.state.input == value) && this.store.loaded) {
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
this.store.state.input = value;
|
|
@@ -184,23 +184,32 @@ export class AutocompleteController extends AbstractController {
|
|
|
184
184
|
input.value = value;
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
|
+
// TODO cancel any current requests?
|
|
187
188
|
clearTimeout(this.handlers.input.timeoutDelay);
|
|
189
|
+
const trendingResultsEnabled = this.store.trending?.length && this.config.settings?.trending?.showResults;
|
|
190
|
+
const historyResultsEnabled = this.store.history?.length && this.config.settings?.history?.showResults;
|
|
188
191
|
if (!value) {
|
|
189
|
-
//
|
|
192
|
+
// there is no input value - reset state of store and UrlManager
|
|
190
193
|
this.store.reset();
|
|
191
194
|
this.urlManager.reset().go();
|
|
192
|
-
|
|
195
|
+
// show results for trending or history (if configured) - trending has priority
|
|
196
|
+
if (trendingResultsEnabled) {
|
|
193
197
|
this.store.trending[0].preview();
|
|
194
198
|
}
|
|
195
|
-
else if (
|
|
199
|
+
else if (historyResultsEnabled) {
|
|
196
200
|
this.store.history[0].preview();
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
203
|
else {
|
|
204
|
+
// new query in the input - trigger a new search via UrlManager
|
|
200
205
|
this.store.resetTerms();
|
|
201
206
|
this.handlers.input.timeoutDelay = setTimeout(() => {
|
|
202
207
|
this.store.state.locks.terms.unlock();
|
|
203
208
|
this.store.state.locks.facets.unlock();
|
|
209
|
+
// must reset query to ensure funcitonality when trending/history term is equal to the typed term
|
|
210
|
+
if (trendingResultsEnabled || historyResultsEnabled) {
|
|
211
|
+
this.urlManager.set({ query: '' }).go();
|
|
212
|
+
}
|
|
204
213
|
this.urlManager.set({ query: this.store.state.input }).go();
|
|
205
214
|
}, INPUT_DELAY);
|
|
206
215
|
}
|
|
@@ -242,7 +251,12 @@ export class AutocompleteController extends AbstractController {
|
|
|
242
251
|
this.store.updateTrendingTerms(terms);
|
|
243
252
|
};
|
|
244
253
|
this.search = async () => {
|
|
254
|
+
// if urlManager has no query, there will be no need to get params and no query
|
|
255
|
+
if (!this.urlManager.state.query) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
245
258
|
const params = this.params;
|
|
259
|
+
// if params have no query do not search
|
|
246
260
|
if (!params?.search?.query?.string) {
|
|
247
261
|
return;
|
|
248
262
|
}
|
|
@@ -265,13 +279,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
265
279
|
}
|
|
266
280
|
const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
267
281
|
const [meta, response] = await this.client.autocomplete(params);
|
|
268
|
-
// @ts-ignore
|
|
282
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
269
283
|
if (!response.meta) {
|
|
270
|
-
|
|
271
|
-
* MockClient will overwrite the client search() method and use
|
|
272
|
-
* SearchData to return mock data which already contains meta data
|
|
273
|
-
*/
|
|
274
|
-
// @ts-ignore
|
|
284
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
275
285
|
response.meta = meta;
|
|
276
286
|
}
|
|
277
287
|
searchProfile.stop();
|
|
@@ -298,7 +308,6 @@ export class AutocompleteController extends AbstractController {
|
|
|
298
308
|
afterSearchProfile.stop();
|
|
299
309
|
this.log.profile(afterSearchProfile);
|
|
300
310
|
// update the store
|
|
301
|
-
// @ts-ignore
|
|
302
311
|
this.store.update(response);
|
|
303
312
|
const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
304
313
|
try {
|
|
@@ -508,6 +517,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
508
517
|
else if (form) {
|
|
509
518
|
form.addEventListener('submit', this.handlers.input.formSubmit);
|
|
510
519
|
formActionUrl = form.action || '';
|
|
520
|
+
// serializeForm will include additional form element in our urlManager as globals
|
|
511
521
|
if (this.config.settings?.serializeForm) {
|
|
512
522
|
bindFormParameters(form, this.handlers.input.formElementChange, function (elem) {
|
|
513
523
|
return elem != input;
|
|
@@ -528,10 +538,12 @@ export class AutocompleteController extends AbstractController {
|
|
|
528
538
|
};
|
|
529
539
|
}));
|
|
530
540
|
}
|
|
531
|
-
if
|
|
541
|
+
// if the input is currently focused, trigger setFocues which will eventually trigger keyup - but not if loading
|
|
542
|
+
if (document.activeElement === input && !this.store.loading) {
|
|
532
543
|
this.setFocused(input);
|
|
533
544
|
}
|
|
534
545
|
});
|
|
546
|
+
// get trending terms - this is at the bottom because urlManager changes need to be in place before creating the store
|
|
535
547
|
if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
|
|
536
548
|
this.searchTrending();
|
|
537
549
|
}
|
|
@@ -554,7 +566,7 @@ async function timeout(time) {
|
|
|
554
566
|
});
|
|
555
567
|
}
|
|
556
568
|
// for grabbing other parameters from the form and using them in UrlManager
|
|
557
|
-
const
|
|
569
|
+
const INPUT_TYPE_BLOCKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
|
|
558
570
|
function getFormParameters(form, filterFn) {
|
|
559
571
|
const parameters = {};
|
|
560
572
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
@@ -563,7 +575,7 @@ function getFormParameters(form, filterFn) {
|
|
|
563
575
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
564
576
|
continue;
|
|
565
577
|
}
|
|
566
|
-
if (elem.name && !
|
|
578
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
567
579
|
if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
|
|
568
580
|
parameters[elem.name] = elem.value;
|
|
569
581
|
}
|
|
@@ -572,6 +584,7 @@ function getFormParameters(form, filterFn) {
|
|
|
572
584
|
}
|
|
573
585
|
return parameters;
|
|
574
586
|
}
|
|
587
|
+
// this picks up changes to the form
|
|
575
588
|
function bindFormParameters(form, fn, filterFn) {
|
|
576
589
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
577
590
|
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
@@ -579,7 +592,7 @@ function bindFormParameters(form, fn, filterFn) {
|
|
|
579
592
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
580
593
|
continue;
|
|
581
594
|
}
|
|
582
|
-
if (elem.name && !
|
|
595
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
583
596
|
elem.addEventListener('change', fn);
|
|
584
597
|
}
|
|
585
598
|
}
|
|
@@ -589,7 +602,7 @@ function unbindFormParameters(form, fn) {
|
|
|
589
602
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
590
603
|
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
591
604
|
const elem = form.elements[i];
|
|
592
|
-
if (elem.name && !
|
|
605
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
593
606
|
elem.removeEventListener('change', fn);
|
|
594
607
|
}
|
|
595
608
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
|
|
@@ -70,13 +70,9 @@ export class FinderController extends AbstractController {
|
|
|
70
70
|
}
|
|
71
71
|
const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
72
72
|
const [meta, response] = await this.client.finder(params);
|
|
73
|
-
// @ts-ignore
|
|
73
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
74
74
|
if (!response.meta) {
|
|
75
|
-
|
|
76
|
-
* MockClient will overwrite the client search() method and use
|
|
77
|
-
* SearchData to return mock data which already contains meta data
|
|
78
|
-
*/
|
|
79
|
-
// @ts-ignore
|
|
75
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
80
76
|
response.meta = meta;
|
|
81
77
|
}
|
|
82
78
|
searchProfile.stop();
|
|
@@ -103,7 +99,7 @@ export class FinderController extends AbstractController {
|
|
|
103
99
|
afterSearchProfile.stop();
|
|
104
100
|
this.log.profile(afterSearchProfile);
|
|
105
101
|
// update the store
|
|
106
|
-
// @ts-ignore
|
|
102
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
107
103
|
this.store.update(response);
|
|
108
104
|
const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
109
105
|
try {
|
|
@@ -189,7 +185,7 @@ export class FinderController extends AbstractController {
|
|
|
189
185
|
const userId = this.tracker.getUserId();
|
|
190
186
|
const sessionId = this.tracker.getContext().sessionId;
|
|
191
187
|
const pageLoadId = this.tracker.getContext().pageLoadId;
|
|
192
|
-
|
|
188
|
+
const tracking = {};
|
|
193
189
|
if (userId) {
|
|
194
190
|
tracking.userId = userId;
|
|
195
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAqI3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
|
|
@@ -3,7 +3,6 @@ import { AbstractController } from '../Abstract/AbstractController';
|
|
|
3
3
|
import { StorageStore, StorageType, ErrorType } from '@searchspring/snap-store-mobx';
|
|
4
4
|
import { getSearchParams } from '../utils/getParams';
|
|
5
5
|
import { ControllerTypes } from '../types';
|
|
6
|
-
const HEIGHT_CHECK_INTERVAL = 50;
|
|
7
6
|
const API_LIMIT = 500;
|
|
8
7
|
const defaultConfig = {
|
|
9
8
|
id: 'search',
|
|
@@ -126,7 +125,7 @@ export class SearchController extends AbstractController {
|
|
|
126
125
|
// infinite backfill results
|
|
127
126
|
if (backfills && backfills.length) {
|
|
128
127
|
// array to hold all results from backfill responses
|
|
129
|
-
|
|
128
|
+
const backfillResults = [];
|
|
130
129
|
const backfillResponses = await Promise.all(backfills);
|
|
131
130
|
backfillResponses.map(([metaBackfill, responseBackfill]) => {
|
|
132
131
|
if (!meta) {
|
|
@@ -147,24 +146,16 @@ export class SearchController extends AbstractController {
|
|
|
147
146
|
// set the response results with results from backfill responses
|
|
148
147
|
response.results = backfillResults;
|
|
149
148
|
if (!response.meta) {
|
|
150
|
-
|
|
151
|
-
* MockClient will overwrite the client search() method and use
|
|
152
|
-
* SearchData to return mock data which already contains meta data
|
|
153
|
-
*/
|
|
154
|
-
// @ts-ignore
|
|
149
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
155
150
|
response.meta = meta;
|
|
156
151
|
}
|
|
157
152
|
}
|
|
158
153
|
else {
|
|
159
154
|
// infinite with no backfills.
|
|
160
155
|
[meta, response] = await this.client.search(params);
|
|
161
|
-
// @ts-ignore
|
|
156
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
162
157
|
if (!response.meta) {
|
|
163
|
-
|
|
164
|
-
* MockClient will overwrite the client search() method and use
|
|
165
|
-
* SearchData to return mock data which already contains meta data
|
|
166
|
-
*/
|
|
167
|
-
// @ts-ignore
|
|
158
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
168
159
|
response.meta = meta;
|
|
169
160
|
}
|
|
170
161
|
//append new results to previous results
|
|
@@ -174,13 +165,9 @@ export class SearchController extends AbstractController {
|
|
|
174
165
|
else {
|
|
175
166
|
//standard.
|
|
176
167
|
[meta, response] = await this.client.search(params);
|
|
177
|
-
// @ts-ignore
|
|
168
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
178
169
|
if (!response.meta) {
|
|
179
|
-
|
|
180
|
-
* MockClient will overwrite the client search() method and use
|
|
181
|
-
* SearchData to return mock data which already contains meta data
|
|
182
|
-
*/
|
|
183
|
-
// @ts-ignore
|
|
170
|
+
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
184
171
|
response.meta = meta;
|
|
185
172
|
}
|
|
186
173
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.1",
|
|
4
4
|
"description": "Snap Controllers",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,21 +20,21 @@
|
|
|
20
20
|
"test:watch": "jest --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@searchspring/snap-toolbox": "^0.
|
|
24
|
-
"deepmerge": "4.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.43.1",
|
|
24
|
+
"deepmerge": "4.3.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@searchspring/snap-client": "^0.
|
|
28
|
-
"@searchspring/snap-event-manager": "^0.
|
|
29
|
-
"@searchspring/snap-logger": "^0.
|
|
30
|
-
"@searchspring/snap-profiler": "^0.
|
|
31
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
32
|
-
"@searchspring/snap-tracker": "^0.
|
|
33
|
-
"@searchspring/snap-url-manager": "^0.
|
|
27
|
+
"@searchspring/snap-client": "^0.43.1",
|
|
28
|
+
"@searchspring/snap-event-manager": "^0.43.1",
|
|
29
|
+
"@searchspring/snap-logger": "^0.43.1",
|
|
30
|
+
"@searchspring/snap-profiler": "^0.43.1",
|
|
31
|
+
"@searchspring/snap-store-mobx": "^0.43.1",
|
|
32
|
+
"@searchspring/snap-tracker": "^0.43.1",
|
|
33
|
+
"@searchspring/snap-url-manager": "^0.43.1"
|
|
34
34
|
},
|
|
35
35
|
"sideEffects": false,
|
|
36
36
|
"files": [
|
|
37
37
|
"dist/**/*"
|
|
38
38
|
],
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "45b2fd3657b3d4dddf4256657d18baa4be0647f8"
|
|
40
40
|
}
|