@searchspring/snap-controller 0.31.0 → 0.34.0
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/Abstract/AbstractController.d.ts +1 -0
- package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/cjs/Abstract/AbstractController.js +38 -0
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts +1 -0
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +91 -7
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +16 -0
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +2 -1
- package/dist/cjs/Search/SearchController.d.ts +1 -0
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +45 -26
- package/dist/esm/Abstract/AbstractController.d.ts +1 -0
- package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/esm/Abstract/AbstractController.js +37 -0
- package/dist/esm/Autocomplete/AutocompleteController.d.ts +1 -0
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +89 -5
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +16 -0
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +2 -1
- package/dist/esm/Search/SearchController.d.ts +1 -0
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +21 -2
- package/package.json +10 -10
|
@@ -25,6 +25,7 @@ export declare abstract class AbstractController {
|
|
|
25
25
|
};
|
|
26
26
|
protected _initialized: boolean;
|
|
27
27
|
get initialized(): boolean;
|
|
28
|
+
handleError: (err: unknown) => void;
|
|
28
29
|
constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
29
30
|
createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
|
|
30
31
|
addTargeter(target: DomTargeter): DomTargeter | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO,KAAG,IAAI,CA0CvC;gBAGD,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2DxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
|
|
@@ -51,9 +51,46 @@ var AbstractController = /** @class */ (function () {
|
|
|
51
51
|
function AbstractController(config, _a, context) {
|
|
52
52
|
var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
|
|
53
53
|
if (context === void 0) { context = {}; }
|
|
54
|
+
var _this = this;
|
|
54
55
|
this.type = 'abstract';
|
|
55
56
|
this.targeters = {};
|
|
56
57
|
this._initialized = false;
|
|
58
|
+
this.handleError = function (err) {
|
|
59
|
+
var event;
|
|
60
|
+
if (err instanceof ErrorEvent) {
|
|
61
|
+
event = err;
|
|
62
|
+
}
|
|
63
|
+
else if (err instanceof Error) {
|
|
64
|
+
event = new ErrorEvent('error', {
|
|
65
|
+
error: err,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (typeof err === 'string') {
|
|
69
|
+
event = new ErrorEvent('error', {
|
|
70
|
+
error: new Error(err),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else if (typeof err === 'object' && Object.keys(err).length) {
|
|
74
|
+
try {
|
|
75
|
+
event = new ErrorEvent('error', {
|
|
76
|
+
error: new Error(JSON.stringify(err)),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (e) { }
|
|
80
|
+
}
|
|
81
|
+
if (event) {
|
|
82
|
+
var filename = event.filename, colno = event.colno, lineno = event.lineno, stack = event.error.stack, message = event.message, timeStamp = event.timeStamp;
|
|
83
|
+
var beaconPayload = {
|
|
84
|
+
filename: filename || "".concat(_this.id, " (").concat(_this.type.charAt(0).toUpperCase() + _this.type.slice(1), "Controller)"),
|
|
85
|
+
stack: stack,
|
|
86
|
+
message: message,
|
|
87
|
+
colno: colno,
|
|
88
|
+
lineno: lineno,
|
|
89
|
+
errortimestamp: timeStamp,
|
|
90
|
+
};
|
|
91
|
+
_this.tracker.track.error(beaconPayload);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
57
94
|
if (typeof config != 'object' || typeof config.id != 'string' || !config.id.match(/^[a-zA-Z0-9_-]*$/)) {
|
|
58
95
|
throw new Error("Invalid config passed to controller. The \"id\" attribute must be an alphanumeric string.");
|
|
59
96
|
}
|
|
@@ -156,6 +193,7 @@ var AbstractController = /** @class */ (function () {
|
|
|
156
193
|
err_2 = _a.sent();
|
|
157
194
|
if (err_2) {
|
|
158
195
|
console.error(err_2);
|
|
196
|
+
this.handleError(err_2);
|
|
159
197
|
}
|
|
160
198
|
return [3 /*break*/, 7];
|
|
161
199
|
case 7:
|
|
@@ -27,6 +27,7 @@ export declare class AutocompleteController extends AbstractController {
|
|
|
27
27
|
escKey: (e: KeyboardEvent) => void;
|
|
28
28
|
focus: (e: FocusEvent) => void;
|
|
29
29
|
formSubmit: (e: React.FormEvent<HTMLInputElement>) => Promise<void>;
|
|
30
|
+
formElementChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
30
31
|
keyUp: (e: KeyboardEvent) => void;
|
|
31
32
|
timeoutDelay: NodeJS.Timeout | undefined;
|
|
32
33
|
};
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAqB/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;IAoD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBA6CpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA0ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwE3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAuBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
|
|
@@ -84,6 +84,7 @@ var defaultConfig = {
|
|
|
84
84
|
settings: {
|
|
85
85
|
initializeFromUrl: true,
|
|
86
86
|
syncInputs: true,
|
|
87
|
+
serializeForm: false,
|
|
87
88
|
facets: {
|
|
88
89
|
trim: true,
|
|
89
90
|
pinFiltered: true,
|
|
@@ -239,6 +240,25 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
239
240
|
}
|
|
240
241
|
});
|
|
241
242
|
}); },
|
|
243
|
+
formElementChange: function (e) {
|
|
244
|
+
var _a, _b, _c, _d, _e;
|
|
245
|
+
var input = e.target;
|
|
246
|
+
var form = input === null || input === void 0 ? void 0 : input.form;
|
|
247
|
+
var searchInput = form === null || form === void 0 ? void 0 : form.querySelector("input[".concat(INPUT_ATTRIBUTE, "]"));
|
|
248
|
+
if (form && searchInput && ((_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.serializeForm)) {
|
|
249
|
+
// get other form parameters (except the input)
|
|
250
|
+
var formParameters = getFormParameters(form, function (elem) {
|
|
251
|
+
return elem != searchInput;
|
|
252
|
+
});
|
|
253
|
+
// set parameters as globals
|
|
254
|
+
_this.store.setService('urlManager', _this.store.services.urlManager.reset().withGlobals(formParameters));
|
|
255
|
+
_this.store.reset();
|
|
256
|
+
// rebuild trending terms with new UrlManager settings
|
|
257
|
+
if (((_c = (_b = _this.config.settings) === null || _b === void 0 ? void 0 : _b.trending) === null || _c === void 0 ? void 0 : _c.limit) && ((_e = (_d = _this.config.settings) === null || _d === void 0 ? void 0 : _d.trending) === null || _e === void 0 ? void 0 : _e.limit) > 0) {
|
|
258
|
+
_this.searchTrending();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
},
|
|
242
262
|
keyUp: function (e) {
|
|
243
263
|
var _a, _b, _c, _d, _e;
|
|
244
264
|
// ignore enter and escape keys
|
|
@@ -453,6 +473,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
453
473
|
break;
|
|
454
474
|
}
|
|
455
475
|
this.store.loading = false;
|
|
476
|
+
this.handleError(err_6);
|
|
456
477
|
}
|
|
457
478
|
return [3 /*break*/, 16];
|
|
458
479
|
case 16: return [2 /*return*/];
|
|
@@ -525,10 +546,19 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
525
546
|
var urlState = this.urlManager.state;
|
|
526
547
|
var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(urlState)), this.config.globals);
|
|
527
548
|
var userId = this.tracker.getUserId();
|
|
549
|
+
var sessionId = this.tracker.getContext().sessionId;
|
|
550
|
+
var pageLoadId = this.tracker.getContext().pageLoadId;
|
|
551
|
+
params.tracking = params.tracking || {};
|
|
552
|
+
params.tracking.domain = window.location.href;
|
|
528
553
|
if (userId) {
|
|
529
|
-
params.tracking = params.tracking || {};
|
|
530
554
|
params.tracking.userId = userId;
|
|
531
555
|
}
|
|
556
|
+
if (sessionId) {
|
|
557
|
+
params.tracking.sessionId = sessionId;
|
|
558
|
+
}
|
|
559
|
+
if (pageLoadId) {
|
|
560
|
+
params.tracking.pageLoadId = pageLoadId;
|
|
561
|
+
}
|
|
532
562
|
if (!((_b = (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.personalization) === null || _b === void 0 ? void 0 : _b.disabled)) {
|
|
533
563
|
var cartItems = this.tracker.cookies.cart.get();
|
|
534
564
|
if (cartItems.length) {
|
|
@@ -618,12 +648,14 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
618
648
|
var _this = this;
|
|
619
649
|
var inputs = document.querySelectorAll("input[".concat(INPUT_ATTRIBUTE, "]"));
|
|
620
650
|
inputs === null || inputs === void 0 ? void 0 : inputs.forEach(function (input) {
|
|
621
|
-
var _a;
|
|
622
651
|
input.removeEventListener('keyup', _this.handlers.input.keyUp);
|
|
623
652
|
input.removeEventListener('keydown', _this.handlers.input.enterKey);
|
|
624
653
|
input.removeEventListener('keydown', _this.handlers.input.escKey);
|
|
625
654
|
input.removeEventListener('focus', _this.handlers.input.focus);
|
|
626
|
-
(
|
|
655
|
+
if (input.form) {
|
|
656
|
+
input.form.removeEventListener('submit', _this.handlers.input.formSubmit);
|
|
657
|
+
unbindFormParameters(input.form, _this.handlers.input.formElementChange);
|
|
658
|
+
}
|
|
627
659
|
});
|
|
628
660
|
document.removeEventListener('click', this.handlers.document.click);
|
|
629
661
|
};
|
|
@@ -644,7 +676,7 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
644
676
|
this.unbind();
|
|
645
677
|
inputs = document.querySelectorAll(this.config.selector);
|
|
646
678
|
inputs.forEach(function (input) {
|
|
647
|
-
var _a, _b;
|
|
679
|
+
var _a, _b, _c;
|
|
648
680
|
input.setAttribute('spellcheck', 'false');
|
|
649
681
|
input.setAttribute('autocomplete', 'off');
|
|
650
682
|
input.setAttribute(INPUT_ATTRIBUTE, '');
|
|
@@ -657,16 +689,26 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
657
689
|
var form = input.form;
|
|
658
690
|
var formActionUrl;
|
|
659
691
|
if (_this.config.action) {
|
|
660
|
-
formActionUrl = _this.config.action;
|
|
661
692
|
input.addEventListener('keydown', _this.handlers.input.enterKey);
|
|
693
|
+
formActionUrl = _this.config.action;
|
|
662
694
|
}
|
|
663
695
|
else if (form) {
|
|
664
|
-
formActionUrl = form.action;
|
|
665
696
|
form.addEventListener('submit', _this.handlers.input.formSubmit);
|
|
697
|
+
formActionUrl = form.action || '';
|
|
698
|
+
if ((_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.serializeForm) {
|
|
699
|
+
bindFormParameters(form, _this.handlers.input.formElementChange, function (elem) {
|
|
700
|
+
return elem != input;
|
|
701
|
+
});
|
|
702
|
+
var formParameters = getFormParameters(form, function (elem) {
|
|
703
|
+
return elem != input;
|
|
704
|
+
});
|
|
705
|
+
// set parameters as globals
|
|
706
|
+
_this.store.setService('urlManager', _this.urlManager.reset().withGlobals(formParameters));
|
|
707
|
+
}
|
|
666
708
|
}
|
|
667
709
|
// set the root URL on urlManager
|
|
668
710
|
if (formActionUrl) {
|
|
669
|
-
_this.store.setService('urlManager', _this.urlManager.withConfig(function (translatorConfig) {
|
|
711
|
+
_this.store.setService('urlManager', _this.store.services.urlManager.withConfig(function (translatorConfig) {
|
|
670
712
|
return __assign(__assign({}, translatorConfig), { urlRoot: formActionUrl });
|
|
671
713
|
}));
|
|
672
714
|
}
|
|
@@ -702,3 +744,45 @@ function timeout(time) {
|
|
|
702
744
|
});
|
|
703
745
|
});
|
|
704
746
|
}
|
|
747
|
+
// for grabbing other parameters from the form and using them in UrlManager
|
|
748
|
+
var INPUT_TYPE_BLACKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
|
|
749
|
+
function getFormParameters(form, filterFn) {
|
|
750
|
+
var parameters = {};
|
|
751
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
752
|
+
for (var i = form.elements.length - 1; i >= 0; i--) {
|
|
753
|
+
var elem = form.elements[i];
|
|
754
|
+
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
755
|
+
continue;
|
|
756
|
+
}
|
|
757
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
758
|
+
if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
|
|
759
|
+
parameters[elem.name] = elem.value;
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
return parameters;
|
|
765
|
+
}
|
|
766
|
+
function bindFormParameters(form, fn, filterFn) {
|
|
767
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
768
|
+
for (var i = form.elements.length - 1; i >= 0; i--) {
|
|
769
|
+
var elem = form.elements[i];
|
|
770
|
+
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
771
|
+
continue;
|
|
772
|
+
}
|
|
773
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
774
|
+
elem.addEventListener('change', fn);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
function unbindFormParameters(form, fn) {
|
|
780
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
781
|
+
for (var i = form.elements.length - 1; i >= 0; i--) {
|
|
782
|
+
var elem = form.elements[i];
|
|
783
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
784
|
+
elem.removeEventListener('change', fn);
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
@@ -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,
|
|
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,CAqH9B;CACF"}
|
|
@@ -264,6 +264,7 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
264
264
|
break;
|
|
265
265
|
}
|
|
266
266
|
this.store.loading = false;
|
|
267
|
+
this.handleError(err_5);
|
|
267
268
|
}
|
|
268
269
|
return [3 /*break*/, 18];
|
|
269
270
|
case 18: return [2 /*return*/];
|
|
@@ -322,12 +323,27 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
322
323
|
Object.defineProperty(FinderController.prototype, "params", {
|
|
323
324
|
get: function () {
|
|
324
325
|
var urlState = this.urlManager.state;
|
|
326
|
+
var userId = this.tracker.getUserId();
|
|
327
|
+
var sessionId = this.tracker.getContext().sessionId;
|
|
328
|
+
var pageLoadId = this.tracker.getContext().pageLoadId;
|
|
329
|
+
var tracking = {};
|
|
330
|
+
if (userId) {
|
|
331
|
+
tracking.userId = userId;
|
|
332
|
+
}
|
|
333
|
+
if (sessionId) {
|
|
334
|
+
tracking.sessionId = sessionId;
|
|
335
|
+
}
|
|
336
|
+
if (pageLoadId) {
|
|
337
|
+
tracking.pageLoadId = pageLoadId;
|
|
338
|
+
}
|
|
339
|
+
tracking.domain = window.location.href;
|
|
325
340
|
// get only the finder fields and disable auto drill down
|
|
326
341
|
var defaultParams = {
|
|
327
342
|
facets: {
|
|
328
343
|
include: this.config.fields.map(function (fieldConfig) { return fieldConfig.field; }),
|
|
329
344
|
autoDrillDown: false,
|
|
330
345
|
},
|
|
346
|
+
tracking: tracking,
|
|
331
347
|
};
|
|
332
348
|
var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(urlState)), (0, deepmerge_1.default)(defaultParams, this.config.globals));
|
|
333
349
|
return params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,CAuB1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAsG9B;CACF"}
|
|
@@ -383,6 +383,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
383
383
|
break;
|
|
384
384
|
}
|
|
385
385
|
this.store.loading = false;
|
|
386
|
+
this.handleError(err_4);
|
|
386
387
|
}
|
|
387
388
|
return [3 /*break*/, 18];
|
|
388
389
|
case 18: return [2 /*return*/];
|
|
@@ -428,7 +429,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
428
429
|
get: function () {
|
|
429
430
|
var _a, _b;
|
|
430
431
|
var params = __assign({ tag: this.config.tag, batched: this.config.batched, branch: this.config.branch || 'production', order: (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.order }, this.config.globals);
|
|
431
|
-
var shopperId = this.tracker.
|
|
432
|
+
var shopperId = this.tracker.getContext().shopperId;
|
|
432
433
|
var cart = this.tracker.cookies.cart.get();
|
|
433
434
|
var lastViewed = this.tracker.cookies.viewed.get();
|
|
434
435
|
if (shopperId) {
|
|
@@ -15,6 +15,7 @@ export declare class SearchController extends AbstractController {
|
|
|
15
15
|
store: SearchStore;
|
|
16
16
|
config: SearchControllerConfig;
|
|
17
17
|
storage: StorageStore;
|
|
18
|
+
private previousResults;
|
|
18
19
|
constructor(config: SearchControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
19
20
|
track: SearchTrackMethods;
|
|
20
21
|
get params(): SearchRequestModel;
|
|
@@ -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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;
|
|
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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;IAuG3B,KAAK,EAAE,kBAAkB,CAwCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA8J9B;CACF"}
|
|
@@ -104,6 +104,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
104
104
|
var _b, _c, _d;
|
|
105
105
|
_this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
|
|
106
106
|
_this.type = types_1.ControllerTypes.search;
|
|
107
|
+
_this.previousResults = [];
|
|
107
108
|
_this.track = {
|
|
108
109
|
product: {
|
|
109
110
|
click: function (e, result) {
|
|
@@ -114,6 +115,10 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
114
115
|
var paramsObj = JSON.parse(stringyParams);
|
|
115
116
|
if ((_b = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _b === void 0 ? void 0 : _b.redirectResponse) {
|
|
116
117
|
(_c = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _c === void 0 ? true : delete _c.redirectResponse;
|
|
118
|
+
if ((paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) && Object.keys(paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search).length === 0) {
|
|
119
|
+
// if redirectResponse was the only key, also delete the empty search object
|
|
120
|
+
delete paramsObj.search;
|
|
121
|
+
}
|
|
117
122
|
}
|
|
118
123
|
if (paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.personalization) {
|
|
119
124
|
paramsObj === null || paramsObj === void 0 ? true : delete paramsObj.personalization;
|
|
@@ -139,32 +144,32 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
139
144
|
};
|
|
140
145
|
_this.search = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
141
146
|
var params, err_1, stringyParams, prevStringyParams, preventBackfill, dontBackfill, searchProfile, _a, meta, response, previousResults_1, backfills, page, backfillParams, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
|
|
142
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
143
|
-
return __generator(this, function (
|
|
144
|
-
switch (
|
|
147
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
148
|
+
return __generator(this, function (_m) {
|
|
149
|
+
switch (_m.label) {
|
|
145
150
|
case 0:
|
|
146
151
|
if (!!this.initialized) return [3 /*break*/, 2];
|
|
147
152
|
return [4 /*yield*/, this.init()];
|
|
148
153
|
case 1:
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
_m.sent();
|
|
155
|
+
_m.label = 2;
|
|
151
156
|
case 2:
|
|
152
157
|
params = this.params;
|
|
153
|
-
|
|
158
|
+
_m.label = 3;
|
|
154
159
|
case 3:
|
|
155
|
-
|
|
156
|
-
|
|
160
|
+
_m.trys.push([3, 20, , 21]);
|
|
161
|
+
_m.label = 4;
|
|
157
162
|
case 4:
|
|
158
|
-
|
|
163
|
+
_m.trys.push([4, 6, , 7]);
|
|
159
164
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
160
165
|
controller: this,
|
|
161
166
|
request: params,
|
|
162
167
|
})];
|
|
163
168
|
case 5:
|
|
164
|
-
|
|
169
|
+
_m.sent();
|
|
165
170
|
return [3 /*break*/, 7];
|
|
166
171
|
case 6:
|
|
167
|
-
err_1 =
|
|
172
|
+
err_1 = _m.sent();
|
|
168
173
|
if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
|
|
169
174
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
170
175
|
return [2 /*return*/];
|
|
@@ -193,7 +198,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
193
198
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
194
199
|
return [4 /*yield*/, this.client.search(params)];
|
|
195
200
|
case 8:
|
|
196
|
-
_a =
|
|
201
|
+
_a = _m.sent(), meta = _a[0], response = _a[1];
|
|
197
202
|
// @ts-ignore
|
|
198
203
|
if (!response.meta) {
|
|
199
204
|
/**
|
|
@@ -204,7 +209,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
204
209
|
response.meta = meta;
|
|
205
210
|
}
|
|
206
211
|
if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1)) return [3 /*break*/, 11];
|
|
207
|
-
previousResults_1 =
|
|
212
|
+
previousResults_1 = this.previousResults;
|
|
208
213
|
if (!(((_j = this.config.settings) === null || _j === void 0 ? void 0 : _j.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
|
|
209
214
|
backfills = [];
|
|
210
215
|
for (page = 1; page < ((_k = params.pagination) === null || _k === void 0 ? void 0 : _k.page); page++) {
|
|
@@ -213,32 +218,32 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
213
218
|
}
|
|
214
219
|
return [4 /*yield*/, Promise.all(backfills)];
|
|
215
220
|
case 9:
|
|
216
|
-
backfillResponses =
|
|
221
|
+
backfillResponses = _m.sent();
|
|
217
222
|
backfillResponses.map(function (_a) {
|
|
218
223
|
var meta = _a[0], data = _a[1];
|
|
219
224
|
previousResults_1 = previousResults_1.concat(data.results);
|
|
220
225
|
});
|
|
221
|
-
|
|
226
|
+
_m.label = 10;
|
|
222
227
|
case 10:
|
|
223
228
|
response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
|
|
224
|
-
|
|
229
|
+
_m.label = 11;
|
|
225
230
|
case 11:
|
|
226
231
|
searchProfile.stop();
|
|
227
232
|
this.log.profile(searchProfile);
|
|
228
233
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
229
|
-
|
|
234
|
+
_m.label = 12;
|
|
230
235
|
case 12:
|
|
231
|
-
|
|
236
|
+
_m.trys.push([12, 14, , 15]);
|
|
232
237
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
233
238
|
controller: this,
|
|
234
239
|
request: params,
|
|
235
240
|
response: response,
|
|
236
241
|
})];
|
|
237
242
|
case 13:
|
|
238
|
-
|
|
243
|
+
_m.sent();
|
|
239
244
|
return [3 /*break*/, 15];
|
|
240
245
|
case 14:
|
|
241
|
-
err_2 =
|
|
246
|
+
err_2 = _m.sent();
|
|
242
247
|
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
243
248
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
244
249
|
afterSearchProfile.stop();
|
|
@@ -252,23 +257,25 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
252
257
|
case 15:
|
|
253
258
|
afterSearchProfile.stop();
|
|
254
259
|
this.log.profile(afterSearchProfile);
|
|
260
|
+
if ((_l = this.config.settings) === null || _l === void 0 ? void 0 : _l.infinite) {
|
|
261
|
+
this.previousResults = JSON.parse(JSON.stringify(response.results));
|
|
262
|
+
}
|
|
255
263
|
// update the store
|
|
256
|
-
// @ts-ignore
|
|
257
264
|
this.store.update(response);
|
|
258
265
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
259
|
-
|
|
266
|
+
_m.label = 16;
|
|
260
267
|
case 16:
|
|
261
|
-
|
|
268
|
+
_m.trys.push([16, 18, , 19]);
|
|
262
269
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
263
270
|
controller: this,
|
|
264
271
|
request: params,
|
|
265
272
|
response: response,
|
|
266
273
|
})];
|
|
267
274
|
case 17:
|
|
268
|
-
|
|
275
|
+
_m.sent();
|
|
269
276
|
return [3 /*break*/, 19];
|
|
270
277
|
case 18:
|
|
271
|
-
err_3 =
|
|
278
|
+
err_3 = _m.sent();
|
|
272
279
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
273
280
|
this.log.warn("'afterStore' middleware cancelled");
|
|
274
281
|
afterStoreProfile.stop();
|
|
@@ -284,7 +291,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
284
291
|
this.log.profile(afterStoreProfile);
|
|
285
292
|
return [3 /*break*/, 21];
|
|
286
293
|
case 20:
|
|
287
|
-
err_4 =
|
|
294
|
+
err_4 = _m.sent();
|
|
288
295
|
if (err_4) {
|
|
289
296
|
switch (err_4) {
|
|
290
297
|
case 429:
|
|
@@ -308,6 +315,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
308
315
|
break;
|
|
309
316
|
}
|
|
310
317
|
this.store.loading = false;
|
|
318
|
+
this.handleError(err_4);
|
|
311
319
|
}
|
|
312
320
|
return [3 /*break*/, 21];
|
|
313
321
|
case 21: return [2 /*return*/];
|
|
@@ -389,6 +397,9 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
389
397
|
if ((_a = requestParams === null || requestParams === void 0 ? void 0 : requestParams.search) === null || _a === void 0 ? void 0 : _a.redirectResponse) {
|
|
390
398
|
delete requestParams.search.redirectResponse;
|
|
391
399
|
}
|
|
400
|
+
if (requestParams.tracking.pageLoadId) {
|
|
401
|
+
delete requestParams.tracking.pageLoadId;
|
|
402
|
+
}
|
|
392
403
|
stringyParams = JSON.stringify(requestParams);
|
|
393
404
|
if ((_c = (_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) === null || _c === void 0 ? void 0 : _c.restorePosition) {
|
|
394
405
|
scrollMap_1 = this.storage.get('scrollMap') || {};
|
|
@@ -431,6 +442,14 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
431
442
|
if (userId) {
|
|
432
443
|
params.tracking.userId = userId;
|
|
433
444
|
}
|
|
445
|
+
var sessionId = this.tracker.getContext().sessionId;
|
|
446
|
+
if (sessionId) {
|
|
447
|
+
params.tracking.sessionId = sessionId;
|
|
448
|
+
}
|
|
449
|
+
var pageId = this.tracker.getContext().pageLoadId;
|
|
450
|
+
if (pageId) {
|
|
451
|
+
params.tracking.pageLoadId = pageId;
|
|
452
|
+
}
|
|
434
453
|
if (!((_d = (_c = this.config.globals) === null || _c === void 0 ? void 0 : _c.personalization) === null || _d === void 0 ? void 0 : _d.disabled)) {
|
|
435
454
|
var cartItems = this.tracker.cookies.cart.get();
|
|
436
455
|
if (cartItems.length) {
|
|
@@ -25,6 +25,7 @@ export declare abstract class AbstractController {
|
|
|
25
25
|
};
|
|
26
26
|
protected _initialized: boolean;
|
|
27
27
|
get initialized(): boolean;
|
|
28
|
+
handleError: (err: unknown) => void;
|
|
28
29
|
constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
29
30
|
createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
|
|
30
31
|
addTargeter(target: DomTargeter): DomTargeter | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO,KAAG,IAAI,CA0CvC;gBAGD,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2DxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
|
|
@@ -4,6 +4,42 @@ export class AbstractController {
|
|
|
4
4
|
this.type = 'abstract';
|
|
5
5
|
this.targeters = {};
|
|
6
6
|
this._initialized = false;
|
|
7
|
+
this.handleError = (err) => {
|
|
8
|
+
let event;
|
|
9
|
+
if (err instanceof ErrorEvent) {
|
|
10
|
+
event = err;
|
|
11
|
+
}
|
|
12
|
+
else if (err instanceof Error) {
|
|
13
|
+
event = new ErrorEvent('error', {
|
|
14
|
+
error: err,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else if (typeof err === 'string') {
|
|
18
|
+
event = new ErrorEvent('error', {
|
|
19
|
+
error: new Error(err),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else if (typeof err === 'object' && Object.keys(err).length) {
|
|
23
|
+
try {
|
|
24
|
+
event = new ErrorEvent('error', {
|
|
25
|
+
error: new Error(JSON.stringify(err)),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (e) { }
|
|
29
|
+
}
|
|
30
|
+
if (event) {
|
|
31
|
+
const { filename, colno, lineno, error: { stack }, message, timeStamp, } = event;
|
|
32
|
+
const beaconPayload = {
|
|
33
|
+
filename: filename || `${this.id} (${this.type.charAt(0).toUpperCase() + this.type.slice(1)}Controller)`,
|
|
34
|
+
stack,
|
|
35
|
+
message,
|
|
36
|
+
colno,
|
|
37
|
+
lineno,
|
|
38
|
+
errortimestamp: timeStamp,
|
|
39
|
+
};
|
|
40
|
+
this.tracker.track.error(beaconPayload);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
7
43
|
if (typeof config != 'object' || typeof config.id != 'string' || !config.id.match(/^[a-zA-Z0-9_-]*$/)) {
|
|
8
44
|
throw new Error(`Invalid config passed to controller. The "id" attribute must be an alphanumeric string.`);
|
|
9
45
|
}
|
|
@@ -87,6 +123,7 @@ export class AbstractController {
|
|
|
87
123
|
catch (err) {
|
|
88
124
|
if (err) {
|
|
89
125
|
console.error(err);
|
|
126
|
+
this.handleError(err);
|
|
90
127
|
}
|
|
91
128
|
}
|
|
92
129
|
if (!this._initialized) {
|
|
@@ -27,6 +27,7 @@ export declare class AutocompleteController extends AbstractController {
|
|
|
27
27
|
escKey: (e: KeyboardEvent) => void;
|
|
28
28
|
focus: (e: FocusEvent) => void;
|
|
29
29
|
formSubmit: (e: React.FormEvent<HTMLInputElement>) => Promise<void>;
|
|
30
|
+
formElementChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
30
31
|
keyUp: (e: KeyboardEvent) => void;
|
|
31
32
|
timeoutDelay: NodeJS.Timeout | undefined;
|
|
32
33
|
};
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAqB/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;IAoD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBA6CpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA0ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwE3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAuBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
|
|
@@ -16,6 +16,7 @@ const defaultConfig = {
|
|
|
16
16
|
settings: {
|
|
17
17
|
initializeFromUrl: true,
|
|
18
18
|
syncInputs: true,
|
|
19
|
+
serializeForm: false,
|
|
19
20
|
facets: {
|
|
20
21
|
trim: true,
|
|
21
22
|
pinFiltered: true,
|
|
@@ -127,6 +128,24 @@ export class AutocompleteController extends AbstractController {
|
|
|
127
128
|
}
|
|
128
129
|
form.submit();
|
|
129
130
|
},
|
|
131
|
+
formElementChange: (e) => {
|
|
132
|
+
const input = e.target;
|
|
133
|
+
const form = input?.form;
|
|
134
|
+
const searchInput = form?.querySelector(`input[${INPUT_ATTRIBUTE}]`);
|
|
135
|
+
if (form && searchInput && this.config.settings?.serializeForm) {
|
|
136
|
+
// get other form parameters (except the input)
|
|
137
|
+
const formParameters = getFormParameters(form, function (elem) {
|
|
138
|
+
return elem != searchInput;
|
|
139
|
+
});
|
|
140
|
+
// set parameters as globals
|
|
141
|
+
this.store.setService('urlManager', this.store.services.urlManager.reset().withGlobals(formParameters));
|
|
142
|
+
this.store.reset();
|
|
143
|
+
// rebuild trending terms with new UrlManager settings
|
|
144
|
+
if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0) {
|
|
145
|
+
this.searchTrending();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
130
149
|
keyUp: (e) => {
|
|
131
150
|
// ignore enter and escape keys
|
|
132
151
|
if (e?.keyCode == KEY_ENTER || e?.keyCode == KEY_ESCAPE)
|
|
@@ -303,6 +322,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
303
322
|
break;
|
|
304
323
|
}
|
|
305
324
|
this.store.loading = false;
|
|
325
|
+
this.handleError(err);
|
|
306
326
|
}
|
|
307
327
|
}
|
|
308
328
|
};
|
|
@@ -347,10 +367,19 @@ export class AutocompleteController extends AbstractController {
|
|
|
347
367
|
const urlState = this.urlManager.state;
|
|
348
368
|
const params = deepmerge({ ...getSearchParams(urlState) }, this.config.globals);
|
|
349
369
|
const userId = this.tracker.getUserId();
|
|
370
|
+
const sessionId = this.tracker.getContext().sessionId;
|
|
371
|
+
const pageLoadId = this.tracker.getContext().pageLoadId;
|
|
372
|
+
params.tracking = params.tracking || {};
|
|
373
|
+
params.tracking.domain = window.location.href;
|
|
350
374
|
if (userId) {
|
|
351
|
-
params.tracking = params.tracking || {};
|
|
352
375
|
params.tracking.userId = userId;
|
|
353
376
|
}
|
|
377
|
+
if (sessionId) {
|
|
378
|
+
params.tracking.sessionId = sessionId;
|
|
379
|
+
}
|
|
380
|
+
if (pageLoadId) {
|
|
381
|
+
params.tracking.pageLoadId = pageLoadId;
|
|
382
|
+
}
|
|
354
383
|
if (!this.config.globals?.personalization?.disabled) {
|
|
355
384
|
const cartItems = this.tracker.cookies.cart.get();
|
|
356
385
|
if (cartItems.length) {
|
|
@@ -423,7 +452,10 @@ export class AutocompleteController extends AbstractController {
|
|
|
423
452
|
input.removeEventListener('keydown', this.handlers.input.enterKey);
|
|
424
453
|
input.removeEventListener('keydown', this.handlers.input.escKey);
|
|
425
454
|
input.removeEventListener('focus', this.handlers.input.focus);
|
|
426
|
-
input.form
|
|
455
|
+
if (input.form) {
|
|
456
|
+
input.form.removeEventListener('submit', this.handlers.input.formSubmit);
|
|
457
|
+
unbindFormParameters(input.form, this.handlers.input.formElementChange);
|
|
458
|
+
}
|
|
427
459
|
});
|
|
428
460
|
document.removeEventListener('click', this.handlers.document.click);
|
|
429
461
|
}
|
|
@@ -446,16 +478,26 @@ export class AutocompleteController extends AbstractController {
|
|
|
446
478
|
const form = input.form;
|
|
447
479
|
let formActionUrl;
|
|
448
480
|
if (this.config.action) {
|
|
449
|
-
formActionUrl = this.config.action;
|
|
450
481
|
input.addEventListener('keydown', this.handlers.input.enterKey);
|
|
482
|
+
formActionUrl = this.config.action;
|
|
451
483
|
}
|
|
452
484
|
else if (form) {
|
|
453
|
-
formActionUrl = form.action;
|
|
454
485
|
form.addEventListener('submit', this.handlers.input.formSubmit);
|
|
486
|
+
formActionUrl = form.action || '';
|
|
487
|
+
if (this.config.settings?.serializeForm) {
|
|
488
|
+
bindFormParameters(form, this.handlers.input.formElementChange, function (elem) {
|
|
489
|
+
return elem != input;
|
|
490
|
+
});
|
|
491
|
+
const formParameters = getFormParameters(form, function (elem) {
|
|
492
|
+
return elem != input;
|
|
493
|
+
});
|
|
494
|
+
// set parameters as globals
|
|
495
|
+
this.store.setService('urlManager', this.urlManager.reset().withGlobals(formParameters));
|
|
496
|
+
}
|
|
455
497
|
}
|
|
456
498
|
// set the root URL on urlManager
|
|
457
499
|
if (formActionUrl) {
|
|
458
|
-
this.store.setService('urlManager', this.urlManager.withConfig((translatorConfig) => {
|
|
500
|
+
this.store.setService('urlManager', this.store.services.urlManager.withConfig((translatorConfig) => {
|
|
459
501
|
return {
|
|
460
502
|
...translatorConfig,
|
|
461
503
|
urlRoot: formActionUrl,
|
|
@@ -484,3 +526,45 @@ async function timeout(time) {
|
|
|
484
526
|
window.setTimeout(resolve, time);
|
|
485
527
|
});
|
|
486
528
|
}
|
|
529
|
+
// for grabbing other parameters from the form and using them in UrlManager
|
|
530
|
+
const INPUT_TYPE_BLACKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
|
|
531
|
+
function getFormParameters(form, filterFn) {
|
|
532
|
+
const parameters = {};
|
|
533
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
534
|
+
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
535
|
+
const elem = form.elements[i];
|
|
536
|
+
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
540
|
+
if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
|
|
541
|
+
parameters[elem.name] = elem.value;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
return parameters;
|
|
547
|
+
}
|
|
548
|
+
function bindFormParameters(form, fn, filterFn) {
|
|
549
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
550
|
+
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
551
|
+
const elem = form.elements[i];
|
|
552
|
+
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
553
|
+
continue;
|
|
554
|
+
}
|
|
555
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
556
|
+
elem.addEventListener('change', fn);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
function unbindFormParameters(form, fn) {
|
|
562
|
+
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
563
|
+
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
564
|
+
const elem = form.elements[i];
|
|
565
|
+
if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
|
|
566
|
+
elem.removeEventListener('change', fn);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
@@ -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,
|
|
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,CAqH9B;CACF"}
|
|
@@ -151,6 +151,7 @@ export class FinderController extends AbstractController {
|
|
|
151
151
|
break;
|
|
152
152
|
}
|
|
153
153
|
this.store.loading = false;
|
|
154
|
+
this.handleError(err);
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
};
|
|
@@ -185,12 +186,27 @@ export class FinderController extends AbstractController {
|
|
|
185
186
|
}
|
|
186
187
|
get params() {
|
|
187
188
|
const urlState = this.urlManager.state;
|
|
189
|
+
const userId = this.tracker.getUserId();
|
|
190
|
+
const sessionId = this.tracker.getContext().sessionId;
|
|
191
|
+
const pageLoadId = this.tracker.getContext().pageLoadId;
|
|
192
|
+
let tracking = {};
|
|
193
|
+
if (userId) {
|
|
194
|
+
tracking.userId = userId;
|
|
195
|
+
}
|
|
196
|
+
if (sessionId) {
|
|
197
|
+
tracking.sessionId = sessionId;
|
|
198
|
+
}
|
|
199
|
+
if (pageLoadId) {
|
|
200
|
+
tracking.pageLoadId = pageLoadId;
|
|
201
|
+
}
|
|
202
|
+
tracking.domain = window.location.href;
|
|
188
203
|
// get only the finder fields and disable auto drill down
|
|
189
204
|
const defaultParams = {
|
|
190
205
|
facets: {
|
|
191
206
|
include: this.config.fields.map((fieldConfig) => fieldConfig.field),
|
|
192
207
|
autoDrillDown: false,
|
|
193
208
|
},
|
|
209
|
+
tracking: tracking,
|
|
194
210
|
};
|
|
195
211
|
const params = deepmerge({ ...getSearchParams(urlState) }, deepmerge(defaultParams, this.config.globals));
|
|
196
212
|
return params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,CAuB1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAsG9B;CACF"}
|
|
@@ -281,6 +281,7 @@ export class RecommendationController extends AbstractController {
|
|
|
281
281
|
break;
|
|
282
282
|
}
|
|
283
283
|
this.store.loading = false;
|
|
284
|
+
this.handleError(err);
|
|
284
285
|
}
|
|
285
286
|
}
|
|
286
287
|
};
|
|
@@ -311,7 +312,7 @@ export class RecommendationController extends AbstractController {
|
|
|
311
312
|
order: this.context?.options?.order,
|
|
312
313
|
...this.config.globals,
|
|
313
314
|
};
|
|
314
|
-
const shopperId = this.tracker.
|
|
315
|
+
const shopperId = this.tracker.getContext().shopperId;
|
|
315
316
|
const cart = this.tracker.cookies.cart.get();
|
|
316
317
|
const lastViewed = this.tracker.cookies.viewed.get();
|
|
317
318
|
if (shopperId) {
|
|
@@ -15,6 +15,7 @@ export declare class SearchController extends AbstractController {
|
|
|
15
15
|
store: SearchStore;
|
|
16
16
|
config: SearchControllerConfig;
|
|
17
17
|
storage: StorageStore;
|
|
18
|
+
private previousResults;
|
|
18
19
|
constructor(config: SearchControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
19
20
|
track: SearchTrackMethods;
|
|
20
21
|
get params(): SearchRequestModel;
|
|
@@ -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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;
|
|
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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;IAuG3B,KAAK,EAAE,kBAAkB,CAwCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA8J9B;CACF"}
|
|
@@ -23,6 +23,7 @@ export class SearchController extends AbstractController {
|
|
|
23
23
|
constructor(config, { client, store, urlManager, eventManager, profiler, logger, tracker }, context) {
|
|
24
24
|
super(config, { client, store, urlManager, eventManager, profiler, logger, tracker }, context);
|
|
25
25
|
this.type = ControllerTypes.search;
|
|
26
|
+
this.previousResults = [];
|
|
26
27
|
this.track = {
|
|
27
28
|
product: {
|
|
28
29
|
click: (e, result) => {
|
|
@@ -32,6 +33,10 @@ export class SearchController extends AbstractController {
|
|
|
32
33
|
const paramsObj = JSON.parse(stringyParams);
|
|
33
34
|
if (paramsObj?.search?.redirectResponse) {
|
|
34
35
|
delete paramsObj?.search?.redirectResponse;
|
|
36
|
+
if (paramsObj?.search && Object.keys(paramsObj?.search).length === 0) {
|
|
37
|
+
// if redirectResponse was the only key, also delete the empty search object
|
|
38
|
+
delete paramsObj.search;
|
|
39
|
+
}
|
|
35
40
|
}
|
|
36
41
|
if (paramsObj?.personalization) {
|
|
37
42
|
delete paramsObj?.personalization;
|
|
@@ -108,7 +113,7 @@ export class SearchController extends AbstractController {
|
|
|
108
113
|
// if params.page > 1 and infinite setting exists we should append results
|
|
109
114
|
if (this.config.settings?.infinite && params.pagination?.page > 1) {
|
|
110
115
|
// if no results fetch results...
|
|
111
|
-
let previousResults =
|
|
116
|
+
let previousResults = this.previousResults;
|
|
112
117
|
if (this.config.settings?.infinite.backfill && !previousResults.length) {
|
|
113
118
|
// figure out how many pages of results to backfill and wait on all responses
|
|
114
119
|
const backfills = [];
|
|
@@ -146,8 +151,10 @@ export class SearchController extends AbstractController {
|
|
|
146
151
|
}
|
|
147
152
|
afterSearchProfile.stop();
|
|
148
153
|
this.log.profile(afterSearchProfile);
|
|
154
|
+
if (this.config.settings?.infinite) {
|
|
155
|
+
this.previousResults = JSON.parse(JSON.stringify(response.results));
|
|
156
|
+
}
|
|
149
157
|
// update the store
|
|
150
|
-
// @ts-ignore
|
|
151
158
|
this.store.update(response);
|
|
152
159
|
const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
153
160
|
try {
|
|
@@ -195,6 +202,7 @@ export class SearchController extends AbstractController {
|
|
|
195
202
|
break;
|
|
196
203
|
}
|
|
197
204
|
this.store.loading = false;
|
|
205
|
+
this.handleError(err);
|
|
198
206
|
}
|
|
199
207
|
}
|
|
200
208
|
};
|
|
@@ -248,6 +256,9 @@ export class SearchController extends AbstractController {
|
|
|
248
256
|
if (requestParams?.search?.redirectResponse) {
|
|
249
257
|
delete requestParams.search.redirectResponse;
|
|
250
258
|
}
|
|
259
|
+
if (requestParams.tracking.pageLoadId) {
|
|
260
|
+
delete requestParams.tracking.pageLoadId;
|
|
261
|
+
}
|
|
251
262
|
const stringyParams = JSON.stringify(requestParams);
|
|
252
263
|
if (this.config.settings?.infinite?.restorePosition) {
|
|
253
264
|
// restore the scroll position saved previously
|
|
@@ -286,6 +297,14 @@ export class SearchController extends AbstractController {
|
|
|
286
297
|
if (userId) {
|
|
287
298
|
params.tracking.userId = userId;
|
|
288
299
|
}
|
|
300
|
+
const sessionId = this.tracker.getContext().sessionId;
|
|
301
|
+
if (sessionId) {
|
|
302
|
+
params.tracking.sessionId = sessionId;
|
|
303
|
+
}
|
|
304
|
+
const pageId = this.tracker.getContext().pageLoadId;
|
|
305
|
+
if (pageId) {
|
|
306
|
+
params.tracking.pageLoadId = pageId;
|
|
307
|
+
}
|
|
289
308
|
if (!this.config.globals?.personalization?.disabled) {
|
|
290
309
|
const cartItems = this.tracker.cookies.cart.get();
|
|
291
310
|
if (cartItems.length) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searchspring/snap-controller",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
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.
|
|
23
|
+
"@searchspring/snap-toolbox": "^0.34.0",
|
|
24
24
|
"deepmerge": "4.2.2"
|
|
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.34.0",
|
|
28
|
+
"@searchspring/snap-event-manager": "^0.34.0",
|
|
29
|
+
"@searchspring/snap-logger": "^0.34.0",
|
|
30
|
+
"@searchspring/snap-profiler": "^0.34.0",
|
|
31
|
+
"@searchspring/snap-store-mobx": "^0.34.0",
|
|
32
|
+
"@searchspring/snap-tracker": "^0.34.0",
|
|
33
|
+
"@searchspring/snap-url-manager": "^0.34.0"
|
|
34
34
|
},
|
|
35
35
|
"sideEffects": false,
|
|
36
36
|
"files": [
|
|
37
37
|
"dist/**/*"
|
|
38
38
|
],
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "ba20dc14f2c771f77e2ba840059500209e37e07d"
|
|
40
40
|
}
|