@searchspring/snap-controller 0.30.2 → 0.31.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.
@@ -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;gBAGrB,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;IA0F3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
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;gBAGrB,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;IAmG3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -100,7 +100,9 @@ var SearchController = /** @class */ (function (_super) {
100
100
  __extends(SearchController, _super);
101
101
  function SearchController(config, _a, context) {
102
102
  var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
103
- var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
103
+ var _this = this;
104
+ var _b, _c, _d;
105
+ _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
104
106
  _this.type = types_1.ControllerTypes.search;
105
107
  _this.track = {
106
108
  product: {
@@ -314,6 +316,12 @@ var SearchController = /** @class */ (function (_super) {
314
316
  }); };
315
317
  // deep merge config with defaults
316
318
  _this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
319
+ if (((_b = _this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) && typeof _this.config.settings.infinite.restorePosition == 'undefined') {
320
+ _this.config.settings.infinite.restorePosition = true;
321
+ }
322
+ if ((window === null || window === void 0 ? void 0 : window.history) && ((_d = (_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.infinite) === null || _d === void 0 ? void 0 : _d.restorePosition)) {
323
+ window.history.scrollRestoration = 'manual';
324
+ }
317
325
  _this.store.setConfig(_this.config);
318
326
  _this.storage = new snap_store_mobx_1.StorageStore({
319
327
  type: snap_store_mobx_1.StorageType.SESSION,
@@ -365,12 +373,12 @@ var SearchController = /** @class */ (function (_super) {
365
373
  _this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
366
374
  var requestParams, stringyParams, scrollMap_1, scrollToPosition_1, checkCount_1, heightCheck_1;
367
375
  var _this = this;
368
- var _a, _b;
369
- return __generator(this, function (_c) {
370
- switch (_c.label) {
376
+ var _a, _b, _c;
377
+ return __generator(this, function (_d) {
378
+ switch (_d.label) {
371
379
  case 0: return [4 /*yield*/, next()];
372
380
  case 1:
373
- _c.sent();
381
+ _d.sent();
374
382
  search.controller.store.loading = false;
375
383
  // save last params
376
384
  this.storage.set('lastStringyParams', JSON.stringify(search.request));
@@ -382,7 +390,7 @@ var SearchController = /** @class */ (function (_super) {
382
390
  delete requestParams.search.redirectResponse;
383
391
  }
384
392
  stringyParams = JSON.stringify(requestParams);
385
- if (((_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) && window.scrollY === 0) {
393
+ if ((_c = (_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) === null || _c === void 0 ? void 0 : _c.restorePosition) {
386
394
  scrollMap_1 = this.storage.get('scrollMap') || {};
387
395
  scrollToPosition_1 = scrollMap_1[stringyParams];
388
396
  if (scrollToPosition_1) {
@@ -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;gBAGrB,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;IA0F3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
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;gBAGrB,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;IAmG3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -200,6 +200,12 @@ export class SearchController extends AbstractController {
200
200
  };
201
201
  // deep merge config with defaults
202
202
  this.config = deepmerge(defaultConfig, this.config);
203
+ if (this.config.settings?.infinite && typeof this.config.settings.infinite.restorePosition == 'undefined') {
204
+ this.config.settings.infinite.restorePosition = true;
205
+ }
206
+ if (window?.history && this.config.settings?.infinite?.restorePosition) {
207
+ window.history.scrollRestoration = 'manual';
208
+ }
203
209
  this.store.setConfig(this.config);
204
210
  this.storage = new StorageStore({
205
211
  type: StorageType.SESSION,
@@ -243,8 +249,8 @@ export class SearchController extends AbstractController {
243
249
  delete requestParams.search.redirectResponse;
244
250
  }
245
251
  const stringyParams = JSON.stringify(requestParams);
246
- if (this.config.settings?.infinite && window.scrollY === 0) {
247
- // browser didn't jump
252
+ if (this.config.settings?.infinite?.restorePosition) {
253
+ // restore the scroll position saved previously
248
254
  const scrollMap = this.storage.get('scrollMap') || {};
249
255
  // interval we ony need to keep checking until the page height > than our stored value
250
256
  const scrollToPosition = scrollMap[stringyParams];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-controller",
3
- "version": "0.30.2",
3
+ "version": "0.31.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.30.2",
23
+ "@searchspring/snap-toolbox": "^0.31.0",
24
24
  "deepmerge": "4.2.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@searchspring/snap-client": "^0.30.2",
28
- "@searchspring/snap-event-manager": "^0.30.2",
29
- "@searchspring/snap-logger": "^0.30.2",
30
- "@searchspring/snap-profiler": "^0.30.2",
31
- "@searchspring/snap-store-mobx": "^0.30.2",
32
- "@searchspring/snap-tracker": "^0.30.2",
33
- "@searchspring/snap-url-manager": "^0.30.2"
27
+ "@searchspring/snap-client": "^0.31.0",
28
+ "@searchspring/snap-event-manager": "^0.31.0",
29
+ "@searchspring/snap-logger": "^0.31.0",
30
+ "@searchspring/snap-profiler": "^0.31.0",
31
+ "@searchspring/snap-store-mobx": "^0.31.0",
32
+ "@searchspring/snap-tracker": "^0.31.0",
33
+ "@searchspring/snap-url-manager": "^0.31.0"
34
34
  },
35
35
  "sideEffects": false,
36
36
  "files": [
37
37
  "dist/**/*"
38
38
  ],
39
- "gitHead": "0d7dc2c374512e097827aa0f6f724d15a771fd5f"
39
+ "gitHead": "b09e1f5eb179f8ef167d264fab4dc5234ac9f83b"
40
40
  }