@searchspring/snap-tracker 0.24.0 → 0.26.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":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAe,MAAM,+BAA+B,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAOb,aAAa,EAEb,MAAM,SAAS,CAAC;AAkBjB,qBAAa,OAAO;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IA2GpD,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkQjB;IAEF,SAAS,QAAO,MAAM,CAiBpB;IAEF,YAAY,QAAO,MAAM,CAoBvB;IAEF,YAAY,QAAO,MAAM,CAOvB;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,kBAAmB,WAAW,EAAE,KAAG,IAAI,CAmB/C;CACF"}
1
+ {"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAe,MAAM,+BAA+B,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAOb,aAAa,EAEb,MAAM,SAAS,CAAC;AAmBjB,qBAAa,OAAO;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IAyIpD,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkQjB;IAEF,SAAS,QAAO,MAAM,CAiBpB;IAEF,YAAY,QAAO,MAAM,CAoBvB;IAEF,YAAY,QAAO,MAAM,CAOvB;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,kBAAmB,WAAW,EAAE,KAAG,IAAI,CAmB/C;CACF"}
@@ -43,6 +43,7 @@ var LOCALSTORAGE_BEACON_POOL_NAME = 'ssBeaconPool';
43
43
  var CART_PRODUCTS = 'ssCartProducts';
44
44
  var VIEWED_PRODUCTS = 'ssViewedProducts';
45
45
  var MAX_VIEWED_COUNT = 15;
46
+ var MAX_PARENT_LEVELS = 3;
46
47
  var defaultConfig = {
47
48
  id: 'track',
48
49
  };
@@ -493,10 +494,6 @@ var Tracker = /** @class */ (function () {
493
494
  }));
494
495
  });
495
496
  document.addEventListener('click', function (event) {
496
- var attributes = {};
497
- Object.values(event.target.attributes).forEach(function (attr) {
498
- attributes[attr.nodeName] = event.target.getAttribute(attr.nodeName);
499
- });
500
497
  var updateRecsControllers = function () {
501
498
  if (window.searchspring.controller) {
502
499
  Object.keys(window.searchspring.controller).forEach(function (name) {
@@ -508,6 +505,32 @@ var Tracker = /** @class */ (function () {
508
505
  });
509
506
  }
510
507
  };
508
+ var getClickAttributes = function (event) {
509
+ var attributeList = [
510
+ "ss-".concat(_this.config.id, "-cart-add"),
511
+ "ss-".concat(_this.config.id, "-cart-remove"),
512
+ "ss-".concat(_this.config.id, "-cart-clear"),
513
+ "ss-".concat(_this.config.id, "-cart-view"),
514
+ "ss-".concat(_this.config.id, "-intellisuggest"),
515
+ "ss-".concat(_this.config.id, "-intellisuggest-signature"),
516
+ "href",
517
+ ];
518
+ var attributes = {};
519
+ var levels = 0;
520
+ var elem = event && event.target;
521
+ while (Object.keys(attributes).length == 0 && elem && levels <= MAX_PARENT_LEVELS) {
522
+ Object.values(elem.attributes).forEach(function (attr) {
523
+ var attrName = attr.nodeName;
524
+ if (attributeList.indexOf(attrName) != -1) {
525
+ attributes[attrName] = elem.getAttribute(attrName);
526
+ }
527
+ });
528
+ elem = elem.parentElement;
529
+ levels++;
530
+ }
531
+ return attributes;
532
+ };
533
+ var attributes = getClickAttributes(event);
511
534
  if (attributes["ss-".concat(_this.config.id, "-cart-add")]) {
512
535
  // add skus to cart
513
536
  var skus = attributes["ss-".concat(_this.config.id, "-cart-add")].split(',');
@@ -525,6 +548,10 @@ var Tracker = /** @class */ (function () {
525
548
  _this.cookies.cart.clear();
526
549
  updateRecsControllers();
527
550
  }
551
+ else if ("ss-".concat(_this.config.id, "-cart-view") in attributes) {
552
+ // update recs
553
+ updateRecsControllers();
554
+ }
528
555
  else if (attributes["ss-".concat(_this.config.id, "-intellisuggest")] && attributes["ss-".concat(_this.config.id, "-intellisuggest-signature")]) {
529
556
  // product click
530
557
  var intellisuggestData = attributes["ss-".concat(_this.config.id, "-intellisuggest")];
@@ -1 +1 @@
1
- {"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAe,MAAM,+BAA+B,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAOb,aAAa,EAEb,MAAM,SAAS,CAAC;AAkBjB,qBAAa,OAAO;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IA2GpD,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkQjB;IAEF,SAAS,QAAO,MAAM,CAiBpB;IAEF,YAAY,QAAO,MAAM,CAoBvB;IAEF,YAAY,QAAO,MAAM,CAOvB;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,kBAAmB,WAAW,EAAE,KAAG,IAAI,CAmB/C;CACF"}
1
+ {"version":3,"file":"Tracker.d.ts","sourceRoot":"","sources":["../../src/Tracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAe,MAAM,+BAA+B,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,YAAY,EAIZ,aAAa,EAOb,aAAa,EAEb,MAAM,SAAS,CAAC;AAmBjB,qBAAa,OAAO;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,aAAa;IAyIpD,QAAQ,IAAI,IAAI;IAMvB,KAAK,EAAE,YAAY,CAkQjB;IAEF,SAAS,QAAO,MAAM,CAiBpB;IAEF,YAAY,QAAO,MAAM,CAoBvB;IAEF,YAAY,QAAO,MAAM,CAOvB;IAEF,aAAa,QAAO,IAAI,CAuCtB;IAEF,OAAO;;uBAEI,MAAM,EAAE;yBAOJ,MAAM,EAAE,KAAG,IAAI;yBAYf,MAAM,EAAE,KAAG,IAAI;4BAaZ,MAAM,EAAE,KAAG,IAAI;;;;uBAqBtB,MAAM,EAAE;;MAQjB;IAEF,UAAU,kBAAmB,WAAW,EAAE,KAAG,IAAI,CAmB/C;CACF"}
@@ -17,6 +17,7 @@ const LOCALSTORAGE_BEACON_POOL_NAME = 'ssBeaconPool';
17
17
  const CART_PRODUCTS = 'ssCartProducts';
18
18
  const VIEWED_PRODUCTS = 'ssViewedProducts';
19
19
  const MAX_VIEWED_COUNT = 15;
20
+ const MAX_PARENT_LEVELS = 3;
20
21
  const defaultConfig = {
21
22
  id: 'track',
22
23
  };
@@ -467,10 +468,6 @@ export class Tracker {
467
468
  }));
468
469
  });
469
470
  document.addEventListener('click', (event) => {
470
- const attributes = {};
471
- Object.values(event.target.attributes).forEach((attr) => {
472
- attributes[attr.nodeName] = event.target.getAttribute(attr.nodeName);
473
- });
474
471
  const updateRecsControllers = () => {
475
472
  if (window.searchspring.controller) {
476
473
  Object.keys(window.searchspring.controller).forEach((name) => {
@@ -481,6 +478,32 @@ export class Tracker {
481
478
  });
482
479
  }
483
480
  };
481
+ const getClickAttributes = (event) => {
482
+ const attributeList = [
483
+ `ss-${this.config.id}-cart-add`,
484
+ `ss-${this.config.id}-cart-remove`,
485
+ `ss-${this.config.id}-cart-clear`,
486
+ `ss-${this.config.id}-cart-view`,
487
+ `ss-${this.config.id}-intellisuggest`,
488
+ `ss-${this.config.id}-intellisuggest-signature`,
489
+ `href`,
490
+ ];
491
+ const attributes = {};
492
+ let levels = 0;
493
+ let elem = event && event.target;
494
+ while (Object.keys(attributes).length == 0 && elem && levels <= MAX_PARENT_LEVELS) {
495
+ Object.values(elem.attributes).forEach((attr) => {
496
+ var attrName = attr.nodeName;
497
+ if (attributeList.indexOf(attrName) != -1) {
498
+ attributes[attrName] = elem.getAttribute(attrName);
499
+ }
500
+ });
501
+ elem = elem.parentElement;
502
+ levels++;
503
+ }
504
+ return attributes;
505
+ };
506
+ const attributes = getClickAttributes(event);
484
507
  if (attributes[`ss-${this.config.id}-cart-add`]) {
485
508
  // add skus to cart
486
509
  const skus = attributes[`ss-${this.config.id}-cart-add`].split(',');
@@ -498,6 +521,10 @@ export class Tracker {
498
521
  this.cookies.cart.clear();
499
522
  updateRecsControllers();
500
523
  }
524
+ else if (`ss-${this.config.id}-cart-view` in attributes) {
525
+ // update recs
526
+ updateRecsControllers();
527
+ }
501
528
  else if (attributes[`ss-${this.config.id}-intellisuggest`] && attributes[`ss-${this.config.id}-intellisuggest-signature`]) {
502
529
  // product click
503
530
  const intellisuggestData = attributes[`ss-${this.config.id}-intellisuggest`];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-tracker",
3
- "version": "0.24.0",
3
+ "version": "0.26.0",
4
4
  "description": "Snap Tracker",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,8 +20,8 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-store-mobx": "^0.24.0",
24
- "@searchspring/snap-toolbox": "^0.24.0",
23
+ "@searchspring/snap-store-mobx": "^0.26.0",
24
+ "@searchspring/snap-toolbox": "^0.26.0",
25
25
  "deepmerge": "^4.2.2",
26
26
  "uuid": "^8.3.2"
27
27
  },
@@ -29,5 +29,5 @@
29
29
  "files": [
30
30
  "dist/**/*"
31
31
  ],
32
- "gitHead": "2aadf9555a7c409f6922a4ab72938d2ea0510faf"
32
+ "gitHead": "e2a217f1492486b497e6fe4be8102d3fb06c573c"
33
33
  }