@salla.sa/twilight-components 2.14.350 → 2.14.352

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.
Files changed (157) hide show
  1. package/dist/cjs/{Helper-B5NunIdR.js → Helper-DHRnzcFm.js} +14 -0
  2. package/dist/cjs/{filepond-qUaAgMcd.js → filepond-XtsZ6xtH.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-poster-DUgrMVOZ.js → filepond-plugin-file-poster-Bj84Ypvg.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-size-C14LEY_l.js → filepond-plugin-file-validate-size-aYfb4yYH.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-type-AbHwQAHY.js → filepond-plugin-file-validate-type-CJsd6rXl.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-edit-5ydXOhOa.js → filepond-plugin-image-edit-DRlBSg36.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-exif-orientation-D0oIUOy-.js → filepond-plugin-image-exif-orientation-SY8c6DzI.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-preview-Bf_VUYwr.js → filepond-plugin-image-preview-iqhJmUmU.js} +1 -1
  9. package/dist/cjs/{index-DKEcPhG9.js → index-C7-280f4.js} +1 -1
  10. package/dist/cjs/{index-BRdJtc1o.js → index-Z-cyrNSM.js} +2 -2
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/salla-accordion_62.cjs.entry.js +25 -36
  13. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  15. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  16. package/dist/cjs/salla-cart-item-offers.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
  21. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  22. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-loyalty-program.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-notifications.cjs.entry.js +2 -2
  29. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-orders.cjs.entry.js +2 -2
  36. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-review-card.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-reviews-page.cjs.entry.js +2 -2
  40. package/dist/cjs/salla-reviews.cjs.entry.js +2 -2
  41. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  47. package/dist/cjs/twilight.cjs.js +1 -1
  48. package/dist/cjs/{vanilla-picker-CYHmsxIw.js → vanilla-picker-Dq7F5bE1.js} +1 -1
  49. package/dist/collection/Helpers/Helper.js +14 -0
  50. package/dist/collection/components/salla-products-list/salla-products-list.js +9 -22
  51. package/dist/collection/components/salla-products-slider/salla-products-slider.js +9 -7
  52. package/dist/components/Helper.js +14 -0
  53. package/dist/components/index.js +2 -2
  54. package/dist/components/salla-products-list2.js +7 -20
  55. package/dist/components/salla-products-slider2.js +7 -5
  56. package/dist/esm/{Helper-Bt5Zv9cl.js → Helper-B5RLi6Xo.js} +14 -0
  57. package/dist/esm/{filepond-DDOVDszb.js → filepond-Dg4ZKM-u.js} +1 -1
  58. package/dist/esm/{filepond-plugin-file-poster-DK5QZAmf.js → filepond-plugin-file-poster-BUIjdsnA.js} +1 -1
  59. package/dist/esm/{filepond-plugin-file-validate-size-BoUr1T-f.js → filepond-plugin-file-validate-size-DgZMMqmi.js} +1 -1
  60. package/dist/esm/{filepond-plugin-file-validate-type-USfq-Egq.js → filepond-plugin-file-validate-type-DA9tDSFr.js} +1 -1
  61. package/dist/esm/{filepond-plugin-image-edit-BzsOppMe.js → filepond-plugin-image-edit-dotdnN4Z.js} +1 -1
  62. package/dist/esm/{filepond-plugin-image-exif-orientation-D2x3fkHF.js → filepond-plugin-image-exif-orientation-oSI8aLU-.js} +1 -1
  63. package/dist/esm/{filepond-plugin-image-preview-CAbtIGaT.js → filepond-plugin-image-preview-DEefQK61.js} +1 -1
  64. package/dist/esm/{index-unlRcuKr.js → index-B7E8Tmgi.js} +1 -1
  65. package/dist/esm/{index-CkAdPgup.js → index-D2-TtAhI.js} +2 -2
  66. package/dist/esm/loader.js +2 -2
  67. package/dist/esm/salla-accordion_62.entry.js +25 -36
  68. package/dist/esm/salla-advertisement.entry.js +1 -1
  69. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  70. package/dist/esm/salla-apps-icons.entry.js +1 -1
  71. package/dist/esm/salla-cart-item-offers.entry.js +1 -1
  72. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  73. package/dist/esm/salla-contacts.entry.js +1 -1
  74. package/dist/esm/salla-custom-fields.entry.js +1 -1
  75. package/dist/esm/salla-filters-widget.entry.js +2 -2
  76. package/dist/esm/salla-filters.entry.js +2 -2
  77. package/dist/esm/salla-hook.entry.js +1 -1
  78. package/dist/esm/salla-installment.entry.js +1 -1
  79. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  80. package/dist/esm/salla-loyalty-program.entry.js +1 -1
  81. package/dist/esm/salla-metadata.entry.js +1 -1
  82. package/dist/esm/salla-notification-item.entry.js +1 -1
  83. package/dist/esm/salla-notifications.entry.js +2 -2
  84. package/dist/esm/salla-offer.entry.js +1 -1
  85. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  86. package/dist/esm/salla-order-details-options.entry.js +1 -1
  87. package/dist/esm/salla-order-details.entry.js +1 -1
  88. package/dist/esm/salla-order-summary.entry.js +1 -1
  89. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  90. package/dist/esm/salla-orders.entry.js +2 -2
  91. package/dist/esm/salla-payments.entry.js +1 -1
  92. package/dist/esm/salla-price-range.entry.js +1 -1
  93. package/dist/esm/salla-review-card.entry.js +1 -1
  94. package/dist/esm/salla-reviews-page.entry.js +2 -2
  95. package/dist/esm/salla-reviews.entry.js +2 -2
  96. package/dist/esm/salla-social.entry.js +1 -1
  97. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  98. package/dist/esm/salla-tooltip.entry.js +1 -1
  99. package/dist/esm/salla-trust-badges.entry.js +1 -1
  100. package/dist/esm/salla-verify.entry.js +1 -1
  101. package/dist/esm/salla-wallet.entry.js +1 -1
  102. package/dist/esm/twilight.js +2 -2
  103. package/dist/esm/{vanilla-picker-7Rdeecyw.js → vanilla-picker-DkUGzUrx.js} +1 -1
  104. package/dist/twilight/{p-aa32cabd.entry.js → p-01bccbf2.entry.js} +1 -1
  105. package/dist/twilight/{p-815175b1.entry.js → p-0effc34b.entry.js} +1 -1
  106. package/dist/twilight/{p-843a8d82.entry.js → p-22d83528.entry.js} +1 -1
  107. package/dist/twilight/{p-9b1184eb.entry.js → p-2aa0a4e2.entry.js} +1 -1
  108. package/dist/twilight/{p-478033b6.entry.js → p-30403778.entry.js} +1 -1
  109. package/dist/twilight/{p-0eb554c0.entry.js → p-3a74b551.entry.js} +1 -1
  110. package/dist/twilight/{p-6c0dd774.entry.js → p-4a594c06.entry.js} +1 -1
  111. package/dist/twilight/p-4e416704.entry.js +4 -0
  112. package/dist/twilight/{p-57bf3aff.entry.js → p-5dbf4cec.entry.js} +1 -1
  113. package/dist/twilight/{p-c4f190b2.entry.js → p-67c327a8.entry.js} +1 -1
  114. package/dist/twilight/{p-b6cddbff.entry.js → p-6b0a03f6.entry.js} +1 -1
  115. package/dist/twilight/{p-a4b3ddc4.entry.js → p-6c2807c8.entry.js} +1 -1
  116. package/dist/twilight/{p-c5ac1d40.entry.js → p-6ce3f119.entry.js} +1 -1
  117. package/dist/twilight/{p-b9648b3c.entry.js → p-6d886b96.entry.js} +1 -1
  118. package/dist/twilight/{p-b8872e5f.entry.js → p-7b3ca138.entry.js} +1 -1
  119. package/dist/twilight/{p-bd0fda0b.entry.js → p-81df7a2e.entry.js} +1 -1
  120. package/dist/twilight/{p-7c33b8f3.entry.js → p-8e7fa4a9.entry.js} +1 -1
  121. package/dist/twilight/{p-0587a19b.entry.js → p-933881d3.entry.js} +1 -1
  122. package/dist/twilight/{p-4bb743c7.entry.js → p-9b8f5399.entry.js} +1 -1
  123. package/dist/twilight/{p-affbe255.entry.js → p-9d35196f.entry.js} +1 -1
  124. package/dist/twilight/{p-1d2131a2.entry.js → p-9fa5ffcf.entry.js} +1 -1
  125. package/dist/twilight/{p-BY-pqCWB.js → p-B0ba6Gec.js} +2 -2
  126. package/dist/twilight/{p-BgVF6sgk.js → p-C2bMx7q5.js} +1 -1
  127. package/dist/twilight/{p-De1xuTRp.js → p-Cmkcwiop.js} +1 -1
  128. package/dist/twilight/{p-BHSXg2s-.js → p-Czq4p9Qp.js} +1 -1
  129. package/dist/twilight/{p-CkAdPgup.js → p-D2-TtAhI.js} +1 -1
  130. package/dist/twilight/{p-DGD3SzSN.js → p-DJ557xys.js} +1 -1
  131. package/dist/twilight/{p-Ciq2A6DK.js → p-DPqkW1aD.js} +2 -2
  132. package/dist/twilight/p-DgNC8L6e.js +4 -0
  133. package/dist/twilight/{p-BXAV6QCo.js → p-DhcC83-2.js} +1 -1
  134. package/dist/twilight/{p-BCXFmuAu.js → p-_JhF_Kvb.js} +1 -1
  135. package/dist/twilight/{p-100f7787.entry.js → p-a42d626d.entry.js} +1 -1
  136. package/dist/twilight/{p-17618bb7.entry.js → p-a858523c.entry.js} +1 -1
  137. package/dist/twilight/{p-d72fc67d.entry.js → p-b1af2aca.entry.js} +1 -1
  138. package/dist/twilight/{p-25e36e28.entry.js → p-b208650b.entry.js} +1 -1
  139. package/dist/twilight/{p-0162ae20.entry.js → p-b9d0212c.entry.js} +1 -1
  140. package/dist/twilight/{p-8565cac6.entry.js → p-cf66ab4d.entry.js} +1 -1
  141. package/dist/twilight/{p-50e1eb99.entry.js → p-d4faa0f6.entry.js} +1 -1
  142. package/dist/twilight/{p-b5b851dc.entry.js → p-db526796.entry.js} +1 -1
  143. package/dist/twilight/{p-b8e7613a.entry.js → p-e26cc25b.entry.js} +1 -1
  144. package/dist/twilight/{p-abcf3b2d.entry.js → p-e5c01983.entry.js} +1 -1
  145. package/dist/twilight/{p-c18da320.entry.js → p-e73c28a8.entry.js} +1 -1
  146. package/dist/twilight/{p-a61b0f9c.entry.js → p-ed60a726.entry.js} +1 -1
  147. package/dist/twilight/{p-50098fb9.entry.js → p-f6ffc708.entry.js} +1 -1
  148. package/dist/twilight/{p-e5dc45dc.entry.js → p-fea62668.entry.js} +1 -1
  149. package/dist/twilight/{p-DhexS4-2.js → p-q-O0srMP.js} +1 -1
  150. package/dist/twilight/twilight.esm.js +1 -1
  151. package/dist/types/Helpers/Helper.d.ts +2 -0
  152. package/dist/types/components/salla-products-list/salla-products-list.d.ts +1 -1
  153. package/dist/types/components/salla-products-slider/salla-products-slider.d.ts +1 -1
  154. package/dist/types/components.d.ts +4 -4
  155. package/package.json +5 -5
  156. package/dist/twilight/p-82f05641.entry.js +0 -4
  157. package/dist/twilight/p-Dljb4XCt.js +0 -4
@@ -197,19 +197,6 @@ export class SallaProductsList {
197
197
  //as a request they don't want to let the user to open the product details
198
198
  //todo:: find a better way to handle this request
199
199
  this.getSource() === 'landing-page' && (product.url = '');
200
- try {
201
- // Add source query param to product URL for tracking in Product Viewed event
202
- if (this.source && product.url && !product.url.includes('s-product-source=')) {
203
- const [urlWithoutFragment, fragment] = product.url.split('#');
204
- const separator = urlWithoutFragment.includes('?') ? '&' : '?';
205
- const pageSlug = salla.config?.get('page.slug') || 'unknown';
206
- const sourceValue = `${pageSlug}.${this.source}`;
207
- product.url = `${urlWithoutFragment}${separator}s-product-source=${sourceValue}${fragment ? '#' + fragment : ''}`;
208
- }
209
- }
210
- catch (error) {
211
- Salla.log('Error with source');
212
- }
213
200
  const customComponentTag = this.hasCustomComponent ? this.productCardComponent : 'salla-product-card';
214
201
  const productCard = document.createElement(customComponentTag);
215
202
  productCard.product = product;
@@ -217,15 +204,15 @@ export class SallaProductsList {
217
204
  this.applyHorizontalCardStyles(productCard);
218
205
  // Attach click event listener to save the current products snapshot
219
206
  productCard.addEventListener('click', (event) => {
220
- if (!this.hasInfiniteScroll) {
221
- return;
222
- }
223
207
  const target = event.target;
224
208
  // Check if the clicked element is an anchor or inside an anchor
225
209
  const anchor = target.closest('a');
226
210
  if (anchor) {
227
- this.takeStateSnapshot();
228
- sessionStorage.setItem(this.lastViewedProductKey, product.id);
211
+ Helper.saveProductSource(this.getSource());
212
+ if (this.hasInfiniteScroll) {
213
+ this.takeStateSnapshot();
214
+ sessionStorage.setItem(this.lastViewedProductKey, product.id);
215
+ }
229
216
  }
230
217
  });
231
218
  return productCard;
@@ -555,7 +542,7 @@ export class SallaProductsList {
555
542
  }
556
543
  getInitialData() {
557
544
  this.loading();
558
- return salla.product.api.fetch({ source: this.getSource(), source_value: this.getSourceValue(), limit: this.limit }).then(async (response) => {
545
+ return salla.product.api.fetch({ source: Helper.getApiSource(this.getSource()), source_value: this.getSourceValue(), limit: this.limit }).then(async (response) => {
559
546
  if (!response.data.length) {
560
547
  this.showPlaceholder = true;
561
548
  this.placeholderLoader && this.placeholderLoader.remove();
@@ -581,7 +568,7 @@ export class SallaProductsList {
581
568
  .then(() => {
582
569
  this.hasCustomComponent = !!customElements.get(this.productCardComponent);
583
570
  this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());
584
- this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page'].includes(this.getSource()) && !this.limit;
571
+ this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page', 'recently'].includes(this.getSource()) && !this.limit;
585
572
  let searchParams = new URLSearchParams(window.location.search);
586
573
  try {
587
574
  this.sortBy = this.sortBy || searchParams.get('sort') || searchParams.get('by');
@@ -773,8 +760,8 @@ export class SallaProductsList {
773
760
  "attribute": "source",
774
761
  "mutable": true,
775
762
  "complexType": {
776
- "original": "'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales' | 'wishlist' | 'top-rated' | 'reorder'",
777
- "resolved": "\"brands\" | \"categories\" | \"json\" | \"landing-page\" | \"latest\" | \"offers\" | \"related\" | \"reorder\" | \"sales\" | \"search\" | \"selected\" | \"tags\" | \"top-rated\" | \"wishlist\"",
763
+ "original": "'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales' | 'wishlist' | 'top-rated' | 'reorder' | 'recently'",
764
+ "resolved": "\"brands\" | \"categories\" | \"json\" | \"landing-page\" | \"latest\" | \"offers\" | \"recently\" | \"related\" | \"reorder\" | \"sales\" | \"search\" | \"selected\" | \"tags\" | \"top-rated\" | \"wishlist\"",
778
765
  "references": {}
779
766
  },
780
767
  "required": false,
@@ -42,7 +42,7 @@ export class SallaProductsSlider {
42
42
  this.isReady = false;
43
43
  return;
44
44
  }
45
- return salla.product.api.fetch({ source: this.getSource(), source_value: this.getSourceValue(), limit: this.limit })
45
+ return salla.product.api.fetch({ source: Helper.getApiSource(this.getSource()), source_value: this.getSourceValue(), limit: this.limit })
46
46
  .then(response => Helper.injectExtraFieldsToResponse(response))
47
47
  .then(response => {
48
48
  this.productsData = response.data;
@@ -72,18 +72,20 @@ export class SallaProductsSlider {
72
72
  getItemHTML(product) {
73
73
  //as a request they don't want to let the user to open the product details
74
74
  //todo:: find a better way to handle this request
75
- this.getSource() === 'landing-page' && (product.url = '');
75
+ const isLandingPage = this.getSource() === 'landing-page';
76
+ isLandingPage && (product.url = '');
77
+ const handleClick = isLandingPage ? undefined : () => Helper.saveProductSource(this.getSource());
76
78
  if (this.hasCustomComponent && this.productCardComponent.toLowerCase() == 'custom-salla-product-card') {
77
- return h("div", { class: "s-products-slider-card" }, h("custom-salla-product-card", { product: product, source: this.getSource(), "source-value": this.getSourceValue() }));
79
+ return h("div", { class: "s-products-slider-card", onClick: handleClick }, h("custom-salla-product-card", { product: product, source: this.getSource(), "source-value": this.getSourceValue() }));
78
80
  }
79
81
  if (this.hasCustomComponent) {
80
82
  const customElem = document.createElement(this.productCardComponent);
81
83
  customElem.setAttribute('product', JSON.stringify(product));
82
84
  customElem.setAttribute('source', this.getSource());
83
85
  customElem.setAttribute('source-value', this.getSourceValue());
84
- return h("div", { class: "s-products-slider-card", innerHTML: customElem.outerHTML });
86
+ return h("div", { class: "s-products-slider-card", onClick: handleClick, innerHTML: customElem.outerHTML });
85
87
  }
86
- return h("div", { class: "s-products-slider-card" }, h("salla-product-card", { "show-quantity": this.getSource() == 'landing-page', "hide-add-btn": this.getSource() == 'landing-page', "shadow-on-hover": true, product: product }));
88
+ return h("div", { class: "s-products-slider-card", onClick: handleClick }, h("salla-product-card", { "show-quantity": isLandingPage, "hide-add-btn": isLandingPage, "shadow-on-hover": true, product: product }));
87
89
  }
88
90
  canRender() {
89
91
  return this.sourceValueIsValid && this.isReady;
@@ -237,8 +239,8 @@ export class SallaProductsSlider {
237
239
  "attribute": "source",
238
240
  "mutable": true,
239
241
  "complexType": {
240
- "original": "'categories' | 'latest' | 'related' | 'brands' | 'json' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'wishlist' | 'top-rated'",
241
- "resolved": "\"brands\" | \"categories\" | \"json\" | \"landing-page\" | \"latest\" | \"offers\" | \"related\" | \"selected\" | \"tags\" | \"top-rated\" | \"wishlist\"",
242
+ "original": "'categories' | 'latest' | 'related' | 'brands' | 'json' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'wishlist' | 'top-rated' | 'recently'",
243
+ "resolved": "\"brands\" | \"categories\" | \"json\" | \"landing-page\" | \"latest\" | \"offers\" | \"recently\" | \"related\" | \"selected\" | \"tags\" | \"top-rated\" | \"wishlist\"",
242
244
  "references": {}
243
245
  },
244
246
  "required": false,
@@ -51,6 +51,10 @@ class Helper {
51
51
  'components.most_sales_products': 'sales', //temporary, delete it after two days from now
52
52
  }[source || salla.config.get('page.slug')] || source || 'latest';
53
53
  }
54
+ getApiSource(source) {
55
+ const apiSourceMap = { 'recently': 'selected' };
56
+ return apiSourceMap[source] || source;
57
+ }
54
58
  getPageTitleForSource(source) {
55
59
  source = {
56
60
  'brands': 'common.titles.brands',
@@ -177,6 +181,16 @@ class Helper {
177
181
  productsIncludes() {
178
182
  return this.includes?.filter(field => field != 'metadata');
179
183
  }
184
+ saveProductSource(source) {
185
+ if (!source)
186
+ return;
187
+ try {
188
+ sessionStorage.setItem('s-viewed-source', source);
189
+ }
190
+ catch (error) {
191
+ salla.logger.warn('Error saving product source to session storage');
192
+ }
193
+ }
180
194
  parseJson(includes) {
181
195
  if (typeof includes !== 'string') {
182
196
  return includes;