@salla.sa/twilight-components 2.14.466 → 2.14.468

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 (361) hide show
  1. package/dist/cjs/{filepond-ChLzVjJY.js → filepond-C1SAyrFq.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-CsFmGjnc.js → filepond-plugin-file-poster-DAhQ7rGa.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-CHsUG4Ey.js → filepond-plugin-file-validate-size-qfwxpApK.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-BcOZG5x6.js → filepond-plugin-file-validate-type-BbYanfPf.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-Cq0bUS7X.js → filepond-plugin-image-edit-lWdFhMNt.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-D6e7ezt-.js → filepond-plugin-image-exif-orientation-C2wUYBSb.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-B0fvWDqM.js → filepond-plugin-image-preview-B1ukjrjT.js} +1 -1
  8. package/dist/cjs/{functions-DQkYfvtq.js → functions-DCSgyun2.js} +1 -1
  9. package/dist/cjs/{index-DTSWXcbN.js → index-CXr_39D8.js} +9 -5
  10. package/dist/cjs/{index-MaPhQdOr.js → index-D3oJJZKW.js} +1 -1
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/cjs/{mail-Bgvt2hc9.js → mail-C9D8MHae.js} +2 -2
  13. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-accordion_6.cjs.entry.js +1 -1
  15. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +29 -84
  16. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  21. package/dist/cjs/salla-booking-field_7.cjs.entry.js +11 -11
  22. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +91 -7
  23. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-comment-form_8.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-contacts.cjs.entry.js +3 -3
  29. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-gifting.cjs.entry.js +63 -28
  38. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-login-modal.cjs.entry.js +32 -2
  44. package/dist/cjs/salla-loyalty-banner.cjs.entry.js +2 -2
  45. package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +4 -4
  46. package/dist/cjs/salla-loyalty-panel.cjs.entry.js +3 -3
  47. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
  51. package/dist/cjs/salla-loyalty-reward.cjs.entry.js +2 -2
  52. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-map.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-product-card_2.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-products-list.cjs.entry.js +259 -64
  82. package/dist/cjs/salla-progress-bar.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-quick-order.cjs.entry.js +3 -3
  84. package/dist/cjs/salla-rating-modal.cjs.entry.js +3 -3
  85. package/dist/cjs/salla-reward-action_4.cjs.entry.js +3 -3
  86. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-slider.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-social-share.cjs.entry.js +252 -32
  91. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-tab-content_3.cjs.entry.js +4 -4
  93. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-tooltip.cjs.entry.js +2 -2
  95. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-user-settings.cjs.entry.js +2 -2
  99. package/dist/cjs/salla-verify.cjs.entry.js +3 -3
  100. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +329 -0
  102. package/dist/cjs/{tracked-promise-ePwPYqjc.js → tracked-promise-BsYRgTGD.js} +1 -1
  103. package/dist/cjs/twilight.cjs.js +2 -2
  104. package/dist/cjs/{vanilla-picker-l24zONcP.js → vanilla-picker-DkdzTjSC.js} +1 -1
  105. package/dist/collection/collection-manifest.json +2 -1
  106. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.js +90 -6
  107. package/dist/collection/components/salla-gifting/salla-gifting.js +69 -29
  108. package/dist/collection/components/salla-login-modal/salla-login-modal.js +31 -1
  109. package/dist/collection/components/salla-product-options/salla-product-options.css +0 -3
  110. package/dist/collection/components/salla-product-options/salla-product-options.js +28 -84
  111. package/dist/collection/components/salla-products-list/salla-products-list.css +76 -0
  112. package/dist/collection/components/salla-products-list/salla-products-list.js +387 -65
  113. package/dist/collection/components/salla-social-share/salla-social-share.css +161 -0
  114. package/dist/collection/components/salla-social-share/salla-social-share.js +316 -50
  115. package/dist/collection/components/salla-tabs/salla-tab-content.js +1 -1
  116. package/dist/collection/components/salla-tabs/salla-tab-header.js +1 -1
  117. package/dist/collection/components/salla-tabs/salla-tabs.js +1 -1
  118. package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -1
  119. package/dist/collection/components/salla-tooltip/salla-tooltip.js +1 -1
  120. package/dist/collection/components/salla-user-settings/salla-user-settings.js +1 -1
  121. package/dist/collection/components/salla-wishlist-actions/salla-wishlist-actions.css +65 -0
  122. package/dist/collection/components/salla-wishlist-actions/salla-wishlist-actions.js +432 -0
  123. package/dist/components/index.js +5 -5
  124. package/dist/components/salla-bullet-delivery.js +90 -6
  125. package/dist/components/salla-gifting.js +63 -27
  126. package/dist/components/salla-login-modal2.js +31 -1
  127. package/dist/components/salla-product-options2.js +28 -84
  128. package/dist/components/salla-products-list2.js +266 -64
  129. package/dist/components/salla-social-share.js +1 -189
  130. package/dist/components/salla-social-share2.js +420 -0
  131. package/dist/components/salla-tab-content2.js +1 -1
  132. package/dist/components/salla-tab-header2.js +1 -1
  133. package/dist/components/salla-tabs2.js +1 -1
  134. package/dist/components/salla-tel-input2.js +1 -1
  135. package/dist/components/salla-tooltip2.js +1 -1
  136. package/dist/components/salla-user-settings.js +1 -1
  137. package/dist/components/salla-wishlist-actions.d.ts +11 -0
  138. package/dist/components/salla-wishlist-actions.js +375 -0
  139. package/dist/esm/{filepond-C8Bwo-02.js → filepond-C4pZr9nR.js} +1 -1
  140. package/dist/esm/{filepond-plugin-file-poster-Bx3Pf2Jt.js → filepond-plugin-file-poster-CXpAGxT4.js} +1 -1
  141. package/dist/esm/{filepond-plugin-file-validate-size-B855u7Nl.js → filepond-plugin-file-validate-size-Dk4M6ge1.js} +1 -1
  142. package/dist/esm/{filepond-plugin-file-validate-type-Bi5ftj6I.js → filepond-plugin-file-validate-type-DD7qvRsg.js} +1 -1
  143. package/dist/esm/{filepond-plugin-image-edit-BDsvflVi.js → filepond-plugin-image-edit-DMllAEkg.js} +1 -1
  144. package/dist/esm/{filepond-plugin-image-exif-orientation-CIBvl9lW.js → filepond-plugin-image-exif-orientation-BRCbcu_E.js} +1 -1
  145. package/dist/esm/{filepond-plugin-image-preview-iKOdvH4g.js → filepond-plugin-image-preview-DgeylrwN.js} +1 -1
  146. package/dist/esm/{functions-Bc7BItqP.js → functions-DrS7by6t.js} +1 -1
  147. package/dist/esm/{index-TDIoPT-F.js → index-9SnsJoYO.js} +1 -1
  148. package/dist/esm/{index-B4SEH_Fg.js → index-D2yBy7Jh.js} +9 -5
  149. package/dist/esm/loader.js +3 -3
  150. package/dist/esm/{mail-DLNIOD9t.js → mail-DzAIgzdz.js} +2 -2
  151. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  152. package/dist/esm/salla-accordion_6.entry.js +1 -1
  153. package/dist/esm/salla-add-product-button_5.entry.js +29 -84
  154. package/dist/esm/salla-advertisement.entry.js +1 -1
  155. package/dist/esm/salla-alert_2.entry.js +1 -1
  156. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  157. package/dist/esm/salla-apps-icons.entry.js +1 -1
  158. package/dist/esm/salla-badge.entry.js +1 -1
  159. package/dist/esm/salla-booking-field_7.entry.js +11 -11
  160. package/dist/esm/salla-bullet-delivery_2.entry.js +91 -7
  161. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  162. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  163. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  164. package/dist/esm/salla-comment-form_8.entry.js +1 -1
  165. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  166. package/dist/esm/salla-contacts.entry.js +3 -3
  167. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  168. package/dist/esm/salla-count-down.entry.js +1 -1
  169. package/dist/esm/salla-custom-fields.entry.js +1 -1
  170. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  171. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  172. package/dist/esm/salla-filters-widget.entry.js +1 -1
  173. package/dist/esm/salla-filters.entry.js +1 -1
  174. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  175. package/dist/esm/salla-gifting.entry.js +63 -28
  176. package/dist/esm/salla-hook.entry.js +1 -1
  177. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  178. package/dist/esm/salla-installment.entry.js +1 -1
  179. package/dist/esm/salla-list-tile.entry.js +1 -1
  180. package/dist/esm/salla-localization-modal.entry.js +1 -1
  181. package/dist/esm/salla-login-modal.entry.js +32 -2
  182. package/dist/esm/salla-loyalty-banner.entry.js +2 -2
  183. package/dist/esm/salla-loyalty-hero_2.entry.js +4 -4
  184. package/dist/esm/salla-loyalty-panel.entry.js +3 -3
  185. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  186. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  187. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  188. package/dist/esm/salla-loyalty-program.entry.js +3 -3
  189. package/dist/esm/salla-loyalty-reward.entry.js +2 -2
  190. package/dist/esm/salla-loyalty.entry.js +1 -1
  191. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  192. package/dist/esm/salla-map.entry.js +1 -1
  193. package/dist/esm/salla-menu.entry.js +1 -1
  194. package/dist/esm/salla-metadata.entry.js +1 -1
  195. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  196. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  197. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  198. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  199. package/dist/esm/salla-notification-item.entry.js +1 -1
  200. package/dist/esm/salla-notifications.entry.js +1 -1
  201. package/dist/esm/salla-offer-modal.entry.js +1 -1
  202. package/dist/esm/salla-offer.entry.js +1 -1
  203. package/dist/esm/salla-order-branch.entry.js +1 -1
  204. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  205. package/dist/esm/salla-order-details-options.entry.js +1 -1
  206. package/dist/esm/salla-order-details.entry.js +1 -1
  207. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  208. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  209. package/dist/esm/salla-order-edit.entry.js +1 -1
  210. package/dist/esm/salla-order-summary.entry.js +1 -1
  211. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  212. package/dist/esm/salla-orders.entry.js +1 -1
  213. package/dist/esm/salla-payments.entry.js +1 -1
  214. package/dist/esm/salla-placeholder.entry.js +1 -1
  215. package/dist/esm/salla-price-range.entry.js +1 -1
  216. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  217. package/dist/esm/salla-product-card_2.entry.js +1 -1
  218. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  219. package/dist/esm/salla-products-list.entry.js +259 -64
  220. package/dist/esm/salla-progress-bar.entry.js +1 -1
  221. package/dist/esm/salla-quick-order.entry.js +3 -3
  222. package/dist/esm/salla-rating-modal.entry.js +3 -3
  223. package/dist/esm/salla-reward-action_4.entry.js +3 -3
  224. package/dist/esm/salla-scopes.entry.js +1 -1
  225. package/dist/esm/salla-search.entry.js +1 -1
  226. package/dist/esm/salla-skeleton.entry.js +1 -1
  227. package/dist/esm/salla-slider.entry.js +1 -1
  228. package/dist/esm/salla-social-share.entry.js +252 -32
  229. package/dist/esm/salla-social.entry.js +1 -1
  230. package/dist/esm/salla-tab-content_3.entry.js +4 -4
  231. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  232. package/dist/esm/salla-tooltip.entry.js +2 -2
  233. package/dist/esm/salla-trust-badges.entry.js +1 -1
  234. package/dist/esm/salla-user-menu.entry.js +1 -1
  235. package/dist/esm/salla-user-profile.entry.js +1 -1
  236. package/dist/esm/salla-user-settings.entry.js +2 -2
  237. package/dist/esm/salla-verify.entry.js +3 -3
  238. package/dist/esm/salla-wallet.entry.js +1 -1
  239. package/dist/esm/salla-wishlist-actions.entry.js +327 -0
  240. package/dist/esm/{tracked-promise-DJMfgq3q.js → tracked-promise-CTcAqNfZ.js} +1 -1
  241. package/dist/esm/twilight.js +3 -3
  242. package/dist/esm/{vanilla-picker-BZ3Kpnm6.js → vanilla-picker-DfeK45Yv.js} +1 -1
  243. package/dist/twilight/{p-7a144cce.entry.js → p-07af3286.entry.js} +1 -1
  244. package/dist/twilight/{p-08fa3250.entry.js → p-08337b2b.entry.js} +1 -1
  245. package/dist/twilight/{p-c4a2f0c4.entry.js → p-08771dff.entry.js} +1 -1
  246. package/dist/twilight/{p-63b6ff19.entry.js → p-0e1bab4f.entry.js} +1 -1
  247. package/dist/twilight/{p-a94c8805.entry.js → p-0eadca17.entry.js} +1 -1
  248. package/dist/twilight/{p-92ecbfb3.entry.js → p-12ccc1ab.entry.js} +1 -1
  249. package/dist/twilight/{p-d1be0cf0.entry.js → p-1574176e.entry.js} +1 -1
  250. package/dist/twilight/{p-b1c9125f.entry.js → p-17015f9c.entry.js} +1 -1
  251. package/dist/twilight/{p-f4326883.entry.js → p-1920b702.entry.js} +1 -1
  252. package/dist/twilight/{p-65cc4abf.entry.js → p-1a1cebfa.entry.js} +1 -1
  253. package/dist/twilight/{p-b22966df.entry.js → p-1a844fda.entry.js} +1 -1
  254. package/dist/twilight/{p-1beccaa5.entry.js → p-1b7ebf47.entry.js} +1 -1
  255. package/dist/twilight/{p-999abe04.entry.js → p-223d7ceb.entry.js} +1 -1
  256. package/dist/twilight/{p-b99ecd2c.entry.js → p-255f5d2a.entry.js} +1 -1
  257. package/dist/twilight/{p-077c5ae5.entry.js → p-266f57de.entry.js} +1 -1
  258. package/dist/twilight/p-28bdf8ec.entry.js +4 -0
  259. package/dist/twilight/{p-089507be.entry.js → p-2c7086ec.entry.js} +1 -1
  260. package/dist/twilight/{p-fe6a634f.entry.js → p-2c7f524a.entry.js} +1 -1
  261. package/dist/twilight/{p-ac91aa4f.entry.js → p-30ea9a82.entry.js} +1 -1
  262. package/dist/twilight/{p-0beaf6f8.entry.js → p-313d38cd.entry.js} +1 -1
  263. package/dist/twilight/{p-70658c1a.entry.js → p-315ce27b.entry.js} +1 -1
  264. package/dist/twilight/p-378d45e2.entry.js +4 -0
  265. package/dist/twilight/{p-96489529.entry.js → p-3c2fe8cd.entry.js} +1 -1
  266. package/dist/twilight/{p-3b416cdd.entry.js → p-3d1e7982.entry.js} +1 -1
  267. package/dist/twilight/{p-7e0bfa67.entry.js → p-3d7c0ac6.entry.js} +1 -1
  268. package/dist/twilight/{p-3e9fb046.entry.js → p-3d8d289e.entry.js} +1 -1
  269. package/dist/twilight/{p-c5b5162c.entry.js → p-4144c908.entry.js} +1 -1
  270. package/dist/twilight/{p-f4a5521e.entry.js → p-453a7bb2.entry.js} +1 -1
  271. package/dist/twilight/{p-7a238d37.entry.js → p-4c457ba5.entry.js} +1 -1
  272. package/dist/twilight/{p-d33fe4fe.entry.js → p-4d3bcacd.entry.js} +1 -1
  273. package/dist/twilight/{p-53c1a65f.entry.js → p-4dedb514.entry.js} +1 -1
  274. package/dist/twilight/{p-eebe55bd.entry.js → p-50dfec0a.entry.js} +1 -1
  275. package/dist/twilight/{p-72627a5b.entry.js → p-53f83426.entry.js} +1 -1
  276. package/dist/twilight/{p-20bed966.entry.js → p-54e9ac89.entry.js} +1 -1
  277. package/dist/twilight/{p-20b24e22.entry.js → p-571b8e00.entry.js} +1 -1
  278. package/dist/twilight/{p-7e0f8832.entry.js → p-5a5057a8.entry.js} +1 -1
  279. package/dist/twilight/{p-5817d5db.entry.js → p-5a9b94f8.entry.js} +1 -1
  280. package/dist/twilight/{p-ac2979bf.entry.js → p-5c1c520a.entry.js} +1 -1
  281. package/dist/twilight/{p-649cca57.entry.js → p-5d06fe77.entry.js} +1 -1
  282. package/dist/twilight/{p-eb7e08dd.entry.js → p-5e433652.entry.js} +1 -1
  283. package/dist/twilight/{p-c605f897.entry.js → p-6046666d.entry.js} +1 -1
  284. package/dist/twilight/{p-ace778dd.entry.js → p-67e23040.entry.js} +1 -1
  285. package/dist/twilight/{p-0c721c37.entry.js → p-6c777951.entry.js} +1 -1
  286. package/dist/twilight/{p-aaf77847.entry.js → p-749dbf27.entry.js} +1 -1
  287. package/dist/twilight/p-7bd464f3.entry.js +4 -0
  288. package/dist/twilight/{p-88a26183.entry.js → p-7ffc1711.entry.js} +1 -1
  289. package/dist/twilight/{p-173638ad.entry.js → p-83b6c374.entry.js} +1 -1
  290. package/dist/twilight/{p-83f3fe92.entry.js → p-8b5d26d3.entry.js} +1 -1
  291. package/dist/twilight/{p-46efd843.entry.js → p-9a0514dd.entry.js} +1 -1
  292. package/dist/twilight/{p-a8a43d8f.entry.js → p-9ba953ab.entry.js} +1 -1
  293. package/dist/twilight/{p-BhwNzoAX.js → p-BGpAIcg-.js} +1 -1
  294. package/dist/twilight/{p-DqcHIrMk.js → p-BHkz1ssL.js} +1 -1
  295. package/dist/twilight/{p-DCiLQw-U.js → p-BZhp8a87.js} +1 -1
  296. package/dist/twilight/{p-1GhsZ-y0.js → p-Bo1nXenO.js} +1 -1
  297. package/dist/twilight/{p-B8tpOftS.js → p-BojnM4VS.js} +1 -1
  298. package/dist/twilight/{p-CzKuXgcx.js → p-CBU9I-zy.js} +1 -1
  299. package/dist/twilight/{p-BPrbqbi4.js → p-CGd7EQZr.js} +1 -1
  300. package/dist/twilight/p-D01LipFK.js +9 -0
  301. package/dist/twilight/{p-B4SEH_Fg.js → p-D2yBy7Jh.js} +2 -2
  302. package/dist/twilight/{p-Bol9M57m.js → p-DSgSJMud.js} +2 -2
  303. package/dist/twilight/{p-DLNIOD9t.js → p-DzAIgzdz.js} +1 -1
  304. package/dist/twilight/{p-26ff2da1.entry.js → p-a0d88c4d.entry.js} +1 -1
  305. package/dist/twilight/{p-7f8b4a78.entry.js → p-a2b53a52.entry.js} +1 -1
  306. package/dist/twilight/{p-c360bc76.entry.js → p-a3e1fafc.entry.js} +1 -1
  307. package/dist/twilight/{p-204b9c34.entry.js → p-a463d567.entry.js} +1 -1
  308. package/dist/twilight/{p-39e531f4.entry.js → p-a6a9e398.entry.js} +1 -1
  309. package/dist/twilight/{p-5a8e7bb9.entry.js → p-a79f60e6.entry.js} +1 -1
  310. package/dist/twilight/{p-36528e88.entry.js → p-aadfd70e.entry.js} +1 -1
  311. package/dist/twilight/{p-7dc4a6ce.entry.js → p-ad0a27e2.entry.js} +1 -1
  312. package/dist/twilight/{p-2a1c12f9.entry.js → p-ae8bd2e7.entry.js} +1 -1
  313. package/dist/twilight/{p-50b92803.entry.js → p-af121bbf.entry.js} +1 -1
  314. package/dist/twilight/p-b0f28806.entry.js +4 -0
  315. package/dist/twilight/{p-7c46d055.entry.js → p-b3f6b725.entry.js} +1 -1
  316. package/dist/twilight/{p-e0e8b5ee.entry.js → p-b7e720e8.entry.js} +1 -1
  317. package/dist/twilight/{p-19748525.entry.js → p-b80016c8.entry.js} +1 -1
  318. package/dist/twilight/{p-19afb593.entry.js → p-c0f40eea.entry.js} +1 -1
  319. package/dist/twilight/p-c4bc10c1.entry.js +4 -0
  320. package/dist/twilight/{p-6bf44c4f.entry.js → p-c637b6bb.entry.js} +1 -1
  321. package/dist/twilight/{p-afb4ffe9.entry.js → p-c6e18746.entry.js} +1 -1
  322. package/dist/twilight/{p-a0433089.entry.js → p-cb855cb3.entry.js} +1 -1
  323. package/dist/twilight/{p-88c110ae.entry.js → p-cbc44b3e.entry.js} +1 -1
  324. package/dist/twilight/{p-d98c3e96.entry.js → p-cbf547f0.entry.js} +1 -1
  325. package/dist/twilight/{p-78cc1984.entry.js → p-cebad615.entry.js} +1 -1
  326. package/dist/twilight/{p-0abda719.entry.js → p-cfd910a8.entry.js} +1 -1
  327. package/dist/twilight/{p-a366dff0.entry.js → p-d0a8b9be.entry.js} +1 -1
  328. package/dist/twilight/{p-921b23fc.entry.js → p-d0cae7da.entry.js} +1 -1
  329. package/dist/twilight/{p-47df8f81.entry.js → p-d861eea6.entry.js} +1 -1
  330. package/dist/twilight/p-daa9c0b3.entry.js +4 -0
  331. package/dist/twilight/{p-7310af57.entry.js → p-db43fa93.entry.js} +1 -1
  332. package/dist/twilight/{p-83beb2f7.entry.js → p-e06a7e19.entry.js} +1 -1
  333. package/dist/twilight/{p-6fb05a50.entry.js → p-e34f68e0.entry.js} +1 -1
  334. package/dist/twilight/{p-5647ab30.entry.js → p-e4cac2a9.entry.js} +1 -1
  335. package/dist/twilight/{p-9f817867.entry.js → p-e5de1833.entry.js} +1 -1
  336. package/dist/twilight/{p-61bbcb2e.entry.js → p-e80ee5b0.entry.js} +2 -2
  337. package/dist/twilight/{p-42523f08.entry.js → p-e8ffc069.entry.js} +1 -1
  338. package/dist/twilight/{p-1027f1df.entry.js → p-ee8c7a5a.entry.js} +1 -1
  339. package/dist/twilight/{p-6667d7e9.entry.js → p-f0dedf42.entry.js} +1 -1
  340. package/dist/twilight/{p-fc2c74e3.entry.js → p-f3a01895.entry.js} +1 -1
  341. package/dist/twilight/{p-e0bafef7.entry.js → p-fb56a444.entry.js} +1 -1
  342. package/dist/twilight/{p-02dac67d.entry.js → p-fe1bced4.entry.js} +1 -1
  343. package/dist/twilight/{p-Cip0ZIcP.js → p-paiaALkJ.js} +1 -1
  344. package/dist/twilight/{p-BNurXH-d.js → p-xz8gqXL9.js} +1 -1
  345. package/dist/twilight/twilight.esm.js +1 -1
  346. package/dist/types/components/salla-bullet-delivery/salla-bullet-delivery.d.ts +16 -0
  347. package/dist/types/components/salla-gifting/gift-schema.d.ts +4 -0
  348. package/dist/types/components/salla-gifting/salla-gifting.d.ts +4 -1
  349. package/dist/types/components/salla-login-modal/salla-login-modal.d.ts +2 -0
  350. package/dist/types/components/salla-product-options/salla-product-options.d.ts +0 -11
  351. package/dist/types/components/salla-products-list/salla-products-list.d.ts +60 -6
  352. package/dist/types/components/salla-social-share/salla-social-share.d.ts +39 -2
  353. package/dist/types/components/salla-wishlist-actions/salla-wishlist-actions.d.ts +93 -0
  354. package/dist/types/components.d.ts +172 -18
  355. package/package.json +5 -5
  356. package/dist/twilight/p-6020ddec.entry.js +0 -4
  357. package/dist/twilight/p-645254eb.entry.js +0 -4
  358. package/dist/twilight/p-99a57ad1.entry.js +0 -4
  359. package/dist/twilight/p-BnjD0Cne.js +0 -9
  360. package/dist/twilight/p-b3456579.entry.js +0 -4
  361. package/dist/twilight/p-d19c0be3.entry.js +0 -4
@@ -3,17 +3,18 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DTSWXcbN.js');
6
+ var index = require('./index-CXr_39D8.js');
7
7
  var anime_es = require('./anime.es-BqW8JHZi.js');
8
8
  var shoppingBag = require('./shopping-bag-C1gvTVHr.js');
9
9
  var Helper = require('./Helper-CgGR9Qf8.js');
10
10
 
11
- const sallaProductsListCss = "";
11
+ const sallaProductsListCss = ".s-products-list-selectable-item{position:relative;border-radius:0.5rem;transition:box-shadow 0.15s ease-in-out}.s-products-list-item-selected{box-shadow:0 0 0 2px var(--color-primary)}.s-products-list-select-control{position:absolute;top:10px;inset-inline-start:10px;z-index:5;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.s-products-list-select-checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:22px;height:22px;margin:0;cursor:pointer;color:var(--color-primary);border:1px solid rgba(0, 0, 0, 0.15);border-radius:6px;background-color:#fff;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out}.s-products-list-select-checkbox:hover{border-color:var(--color-primary)}.s-products-list-select-checkbox:focus,.s-products-list-select-checkbox:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2), 0 0 0 3px color-mix(in srgb, var(--color-primary) 30%, transparent)}.s-products-list-select-checkbox:checked,.s-products-list-select-checkbox:checked:hover,.s-products-list-select-checkbox:checked:focus{background-color:var(--color-primary);border-color:var(--color-primary)}.s-products-list-select-checkbox:checked::after{content:\"\";position:absolute;top:50%;left:50%;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:translate(-50%, -60%) rotate(45deg)}.s-products-list-row-cards .s-products-list-select-control{top:50%;inset-inline-start:14px;transform:translateY(-50%)}.s-products-list-row-cards .s-products-list-selectable-item>:not(.s-products-list-select-control){padding-inline-start:2.75rem}";
12
12
 
13
13
  const SallaProductsList = class {
14
14
  constructor(hostRef) {
15
15
  index.registerInstance(this, hostRef);
16
16
  this.productsFetched = index.createEvent(this, "productsFetched");
17
+ this.selectionChanged = index.createEvent(this, "selectionChanged");
17
18
  /**
18
19
  * Autoload next page when scroll
19
20
  */
@@ -28,6 +29,18 @@ const SallaProductsList = class {
28
29
  * <salla-products-list product-card-component="my-custom-card-style2" ...
29
30
  */
30
31
  this.productCardComponent = 'custom-salla-product-card';
32
+ /**
33
+ * Enables multi-selection of products. When enabled, a checkbox overlay is
34
+ * rendered on top of each product card and the selected products are exposed
35
+ * via the `selectionChanged` event, the `salla-products-list::selection.changed`
36
+ * global event and the `getSelected()` method.
37
+ *
38
+ * This is source-agnostic (works for any `source`) and defaults to `false`.
39
+ * On the wishlist page the `salla-wishlist-actions` panel turns it on at
40
+ * runtime (when the customer chooses "share specific items"), so no theme
41
+ * markup changes are required.
42
+ */
43
+ this.selectable = false;
31
44
  // State
32
45
  this.page = 1;
33
46
  this.placeholderText = salla.lang.get('pages.categories.no_products');
@@ -35,10 +48,12 @@ const SallaProductsList = class {
35
48
  this.failedLoadMore = salla.lang.get('common.elements.failed_to_load_more');
36
49
  this.currentPage = salla.config.get('page');
37
50
  this.filtersSnapshot = [];
38
- this.lastViewedProductKey = "lastViewedProductId";
39
- this.filtersKey = "filters";
40
- this.infiniteScrollStateKey = "infiniteScrollState";
41
- this.prevCategoryIdKey = "prevCategoryId";
51
+ /** Map of selected products keyed by product id (preserves selection across pagination). */
52
+ this.selectedProducts = new Map();
53
+ this.lastViewedProductKey = 'lastViewedProductId';
54
+ this.filtersKey = 'filters';
55
+ this.infiniteScrollStateKey = 'infiniteScrollState';
56
+ this.prevCategoryIdKey = 'prevCategoryId';
42
57
  this.isProcessing = false; // Tracks if we are processing data
43
58
  this.scrollTimeout = null;
44
59
  this.boundScrollToLastViewedProduct = () => this.scrollToLastViewedProduct();
@@ -47,7 +62,44 @@ const SallaProductsList = class {
47
62
  'product.index.latest': 'latest',
48
63
  'product.index.offers': 'offers',
49
64
  'product.index.search': 'search',
50
- 'product.index.sales': 'sales'
65
+ 'product.index.sales': 'sales',
66
+ };
67
+ this.onWishlistItemRemoved = (_response, productId) => {
68
+ if (this.getSource() !== 'wishlist' || !this.wrapper) {
69
+ return;
70
+ }
71
+ const normalizedId = String(productId);
72
+ const cardTag = this.hasCustomComponent ? this.productCardComponent : 'salla-product-card';
73
+ for (const child of Array.from(this.wrapper.children)) {
74
+ const listItem = child;
75
+ const card = child.querySelector(cardTag);
76
+ const id = listItem.product?.id ?? card?.product?.id;
77
+ if (id != null && String(id) === normalizedId) {
78
+ child.remove();
79
+ break;
80
+ }
81
+ }
82
+ // Theme may remove the card first and leave an empty selectable shell.
83
+ for (const child of Array.from(this.wrapper.children)) {
84
+ if (!child.classList.contains('s-products-list-selectable-item')) {
85
+ continue;
86
+ }
87
+ const listItem = child;
88
+ if (listItem.product?.id != null &&
89
+ String(listItem.product.id) === normalizedId &&
90
+ !child.querySelector(cardTag)) {
91
+ child.remove();
92
+ break;
93
+ }
94
+ }
95
+ if (this.selectable) {
96
+ for (const id of Array.from(this.selectedProducts.keys())) {
97
+ if (String(id) === normalizedId) {
98
+ this.selectedProducts.delete(id);
99
+ }
100
+ }
101
+ this.emitSelection();
102
+ }
51
103
  };
52
104
  //TODO:: check why `this.includes` not working!!
53
105
  this.includes = Helper.Helper.parseJson(this.includes || this.host.getAttribute('includes'));
@@ -64,15 +116,17 @@ const SallaProductsList = class {
64
116
  }
65
117
  connectedCallback() {
66
118
  //Override browser scroll restoration default behaviour
67
- if ("scrollRestoration" in history)
68
- history.scrollRestoration = "manual";
119
+ if ('scrollRestoration' in history)
120
+ history.scrollRestoration = 'manual';
69
121
  // required for scroll restoration case when the component loads before DOM content is completed (slow internet bandwidth /low device specs)
70
122
  window.addEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
71
123
  salla.event.on('salla-filters::changed', filters => this.setFilters(filters));
124
+ salla.event.on('wishlist::removed', this.onWishlistItemRemoved);
72
125
  }
73
126
  disconnectedCallback() {
74
127
  window.removeEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
75
128
  window.removeEventListener('scroll', this.boundHandleScroll);
129
+ salla.event.off('wishlist::removed', this.onWishlistItemRemoved);
76
130
  }
77
131
  /**
78
132
  * Set parsed filters data from URI
@@ -85,7 +139,9 @@ const SallaProductsList = class {
85
139
  window.scrollTo({ top: 0, behavior: 'smooth' });
86
140
  // Create a deep copy of the filters object to avoid mutating the original object
87
141
  this.parsedFilters = JSON.parse(JSON.stringify(filters));
88
- if (this.currentPage?.slug == "product.index" && this.parsedFilters && this.parsedFilters.category_id) {
142
+ if (this.currentPage?.slug == 'product.index' &&
143
+ this.parsedFilters &&
144
+ this.parsedFilters.category_id) {
89
145
  this.currentCategoryIdFilter = [this.parsedFilters.category_id];
90
146
  }
91
147
  return this.reload();
@@ -173,12 +229,12 @@ const SallaProductsList = class {
173
229
  }
174
230
  this.nextPage += '&filterable=1';
175
231
  for (const [key, value] of Object.entries(this.parsedFilters || {})) {
176
- if (["string", "number"].includes(typeof value)) {
232
+ if (['string', 'number'].includes(typeof value)) {
177
233
  // @ts-ignore
178
234
  this.nextPage += `&filters[${encodeURIComponent(key)}]=${encodeURIComponent(value)}`;
179
235
  }
180
236
  else if (Array.isArray(value)) {
181
- value.forEach(item => this.nextPage += `&filters[${encodeURIComponent(key)}][]=${encodeURIComponent(item)}`);
237
+ value.forEach(item => (this.nextPage += `&filters[${encodeURIComponent(key)}][]=${encodeURIComponent(item)}`));
182
238
  }
183
239
  else if (typeof value === 'object') {
184
240
  for (const [k, v] of Object.entries(value)) {
@@ -232,7 +288,9 @@ const SallaProductsList = class {
232
288
  //as a request they don't want to let the user to open the product details
233
289
  //todo:: find a better way to handle this request
234
290
  this.getSource() === 'landing-page' && (product.url = '');
235
- const customComponentTag = this.hasCustomComponent ? this.productCardComponent : 'salla-product-card';
291
+ const customComponentTag = this.hasCustomComponent
292
+ ? this.productCardComponent
293
+ : 'salla-product-card';
236
294
  const productCard = document.createElement(customComponentTag);
237
295
  productCard.product = product;
238
296
  // Apply compact layout if requested - set both property and attribute for compatibility
@@ -243,7 +301,7 @@ const SallaProductsList = class {
243
301
  this.applyLandingPageStyles(productCard);
244
302
  this.applyHorizontalCardStyles(productCard);
245
303
  // Attach click event listener to save the current products snapshot
246
- productCard.addEventListener('click', (event) => {
304
+ productCard.addEventListener('click', event => {
247
305
  const target = event.target;
248
306
  // Check if the clicked element is an anchor or inside an anchor
249
307
  const anchor = target.closest('a');
@@ -255,8 +313,69 @@ const SallaProductsList = class {
255
313
  }
256
314
  }
257
315
  });
316
+ if (this.selectable) {
317
+ return this.wrapSelectableItem(productCard, product);
318
+ }
258
319
  return productCard;
259
320
  }
321
+ /**
322
+ * Wrap a product card with a selection control. The wrapper mirrors `product`
323
+ * so the scroll-restoration snapshot logic (which reads `child.product`) keeps
324
+ * working, and the card keeps its id for `scrollToLastViewedProduct`.
325
+ */
326
+ wrapSelectableItem(productCard, product) {
327
+ const container = document.createElement('div');
328
+ container.className = 's-products-list-selectable-item';
329
+ container.product = product;
330
+ const isSelected = this.selectedProducts.has(product.id);
331
+ if (isSelected) {
332
+ container.classList.add('s-products-list-item-selected');
333
+ }
334
+ const control = document.createElement('label');
335
+ control.className = 's-products-list-select-control';
336
+ control.setAttribute('aria-label', salla.lang.get('common.elements.select', 'تحديد'));
337
+ const checkbox = document.createElement('input');
338
+ checkbox.type = 'checkbox';
339
+ checkbox.className = 's-products-list-select-checkbox';
340
+ checkbox.checked = isSelected;
341
+ checkbox.addEventListener('change', () => this.toggleSelection(product, container, checkbox.checked));
342
+ control.appendChild(checkbox);
343
+ container.appendChild(control);
344
+ container.appendChild(productCard);
345
+ return container;
346
+ }
347
+ toggleSelection(product, container, checked) {
348
+ if (checked) {
349
+ this.selectedProducts.set(product.id, product);
350
+ container?.classList.add('s-products-list-item-selected');
351
+ }
352
+ else {
353
+ this.selectedProducts.delete(product.id);
354
+ container?.classList.remove('s-products-list-item-selected');
355
+ }
356
+ this.emitSelection();
357
+ }
358
+ emitSelection() {
359
+ const products = Array.from(this.selectedProducts.values());
360
+ const ids = Array.from(this.selectedProducts.keys());
361
+ const detail = { ids, products, count: ids.length };
362
+ this.selectionChanged.emit(detail);
363
+ salla.event.emit('salla-products-list::selection.changed', detail);
364
+ }
365
+ /**
366
+ * Re-render the list when selection mode is toggled at runtime (e.g. enabled
367
+ * by the wishlist actions panel after the list already loaded).
368
+ */
369
+ onSelectableChanged(newValue, oldValue) {
370
+ if (newValue === oldValue || !this.isReady || !this.wrapper) {
371
+ return;
372
+ }
373
+ if (!newValue) {
374
+ this.selectedProducts.clear();
375
+ this.emitSelection();
376
+ }
377
+ this.reload();
378
+ }
260
379
  applyLandingPageStyles(productCard) {
261
380
  if (this.getSource() === 'landing-page' && !this.hasCustomComponent) {
262
381
  productCard.toggleAttribute('hide-add-btn', true);
@@ -274,7 +393,7 @@ const SallaProductsList = class {
274
393
  }
275
394
  waitForResizing(element) {
276
395
  let timeout = null;
277
- return new Promise((resolve) => {
396
+ return new Promise(resolve => {
278
397
  const resizeObserver = new ResizeObserver(() => {
279
398
  clearTimeout(timeout);
280
399
  timeout = setTimeout(() => {
@@ -287,7 +406,7 @@ const SallaProductsList = class {
287
406
  }
288
407
  waitForLayoutStable(element) {
289
408
  let timeout = null;
290
- return new Promise((resolve) => {
409
+ return new Promise(resolve => {
291
410
  const observer = new MutationObserver(() => {
292
411
  clearTimeout(timeout);
293
412
  timeout = setTimeout(() => {
@@ -307,15 +426,14 @@ const SallaProductsList = class {
307
426
  // Wait for DOM mutations and layout shifts to stabilize
308
427
  return await Promise.allSettled([
309
428
  this.waitForResizing(element),
310
- this.waitForLayoutStable(element)
429
+ this.waitForLayoutStable(element),
311
430
  ]);
312
431
  }
313
432
  scrollToLastViewedProduct() {
314
433
  const lastViewedProductId = sessionStorage.getItem(this.lastViewedProductKey);
315
434
  if (!lastViewedProductId || salla.url.is_page('product.single'))
316
435
  return;
317
- this.isElementLoaded(`[id*="${lastViewedProductId}"]`)
318
- .then(() => {
436
+ this.isElementLoaded(`[id*="${lastViewedProductId}"]`).then(() => {
319
437
  const productCard = this.wrapper?.querySelector(`[id*="${lastViewedProductId}"]`);
320
438
  if (!productCard)
321
439
  return;
@@ -323,8 +441,12 @@ const SallaProductsList = class {
323
441
  const scrollToProductCard = () => {
324
442
  // calculations is located here for last second changes in the ui (ie. sticky header height)
325
443
  productCard.scrollIntoView({ block: 'start', behavior: 'instant' });
326
- const headerSelector = matchMedia('(max-width: 1024px)').matches ? "header .inner" : "ul.main-menu";
327
- const headerHeight = window?.header_is_sticky ? (document.querySelector(headerSelector)?.getBoundingClientRect()?.height ?? 56) : 0;
444
+ const headerSelector = matchMedia('(max-width: 1024px)').matches
445
+ ? 'header .inner'
446
+ : 'ul.main-menu';
447
+ const headerHeight = window?.header_is_sticky
448
+ ? (document.querySelector(headerSelector)?.getBoundingClientRect()?.height ?? 56)
449
+ : 0;
328
450
  const cardsListRowGap = parseInt(getComputedStyle(this.wrapper).rowGap) ?? 16;
329
451
  const productCardOffset = headerHeight + cardsListRowGap;
330
452
  scrollBy({ top: productCardOffset * -1, behavior: 'instant' });
@@ -332,7 +454,7 @@ const SallaProductsList = class {
332
454
  //start scrolling to the product card position
333
455
  requestAnimationFrame(scrollToProductCard);
334
456
  const productImages = productCard.querySelectorAll('img.lazy');
335
- productImages.forEach((image) => {
457
+ productImages.forEach(image => {
336
458
  const productImage = image;
337
459
  const handleImageEvent = () => {
338
460
  requestAnimationFrame(scrollToProductCard);
@@ -349,16 +471,15 @@ const SallaProductsList = class {
349
471
  });
350
472
  }
351
473
  isElementLoaded(selector) {
352
- return new Promise((resolve => {
474
+ return new Promise(resolve => {
353
475
  const interval = setInterval(() => {
354
476
  if (document.querySelector(selector)) {
355
477
  clearInterval(interval);
356
478
  return resolve(document.querySelector(selector));
357
479
  }
358
480
  }, 50);
359
- }));
481
+ });
360
482
  }
361
- ;
362
483
  takeStateSnapshot() {
363
484
  const currentPageData = [];
364
485
  // Classic for-loop for performance
@@ -369,7 +490,7 @@ const SallaProductsList = class {
369
490
  const scrollState = {
370
491
  pageIndex: Math.max((this.infiniteScroll?.pageIndex ?? 1) - 1, 1),
371
492
  nextPage: this.nextPage,
372
- currentPageData
493
+ currentPageData,
373
494
  };
374
495
  if (this.isFilterable()) {
375
496
  const existingFilters = sessionStorage.getItem(this.filtersKey);
@@ -416,9 +537,8 @@ const SallaProductsList = class {
416
537
  const isDifferentCategory = currentPageSlug
417
538
  ? prevCategory !== currentPageSlug // Compare slugs for special pages
418
539
  : prevCategory !== String(currentPageId); // Compare IDs otherwise
419
- if ((prevCategory && isDifferentCategory && !isHomepage && !isProductPage)
420
- ||
421
- (isHomepage && !this.hasInfiniteScroll)) {
540
+ if ((prevCategory && isDifferentCategory && !isHomepage && !isProductPage) ||
541
+ (isHomepage && !this.hasInfiniteScroll)) {
422
542
  this.removeScrollRestorationSession();
423
543
  this.switchToNormalBehavior = true;
424
544
  return false;
@@ -462,7 +582,9 @@ const SallaProductsList = class {
462
582
  return ['json', 'selected', 'related', 'landing-page', 'recently'].includes(this.getSource());
463
583
  }
464
584
  getSourceValue() {
465
- return this.currentCategoryIdFilter ? this.currentCategoryIdFilter : Helper.Helper.getProductsSourceValue(this.source, this.sourceValue);
585
+ return this.currentCategoryIdFilter
586
+ ? this.currentCategoryIdFilter
587
+ : Helper.Helper.getProductsSourceValue(this.source, this.sourceValue);
466
588
  }
467
589
  logFetchError(errorPhase, error, fetchPath, http, response) {
468
590
  try {
@@ -473,7 +595,9 @@ const SallaProductsList = class {
473
595
  source: this.getSource(),
474
596
  sourceValue: typeof sourceValue === 'string' && sourceValue.length > 200
475
597
  ? `${sourceValue.slice(0, 200)}…`
476
- : Array.isArray(sourceValue) ? { length: sourceValue.length } : sourceValue,
598
+ : Array.isArray(sourceValue)
599
+ ? { length: sourceValue.length }
600
+ : sourceValue,
477
601
  pageIndex: this.infiniteScroll?.pageIndex,
478
602
  fetchPath,
479
603
  httpStatus: http?.status,
@@ -490,7 +614,9 @@ const SallaProductsList = class {
490
614
  : {}),
491
615
  });
492
616
  }
493
- catch { /* analytics */ }
617
+ catch {
618
+ /* analytics */
619
+ }
494
620
  }
495
621
  appendDataLayer(data) {
496
622
  if (typeof dataLayer !== 'object' || !Array.isArray(dataLayer)) {
@@ -498,29 +624,29 @@ const SallaProductsList = class {
498
624
  return;
499
625
  }
500
626
  dataLayer.push({
501
- "event": "impressions",
502
- "ecommerce": {
503
- "currencyCode": salla.config.currency().code,
627
+ event: 'impressions',
628
+ ecommerce: {
629
+ currencyCode: salla.config.currency().code,
504
630
  // "event_id":"", // todo
505
- "impressions": data.map((product, index) => {
631
+ impressions: data.map((product, index) => {
506
632
  return {
507
- "id": product.id,
508
- "name": product.name,
509
- "price": product.price,
510
- "brand": product.brand?.name || '',
511
- "quantity": product.quantity,
633
+ id: product.id,
634
+ name: product.name,
635
+ price: product.price,
636
+ brand: product.brand?.name || '',
637
+ quantity: product.quantity,
512
638
  // "variant": "",
513
- "categories": [
639
+ categories: [
514
640
  {
515
- "name": product.category?.name || salla.config.get('page.title'),
516
- "id": salla.config.get('page.id')
517
- }
641
+ name: product.category?.name || salla.config.get('page.title'),
642
+ id: salla.config.get('page.id'),
643
+ },
518
644
  ],
519
- "category": product.category?.name || salla.config.get('page.title'),
520
- 'position': index + 1
645
+ category: product.category?.name || salla.config.get('page.title'),
646
+ position: index + 1,
521
647
  };
522
- })
523
- }
648
+ }),
649
+ },
524
650
  });
525
651
  }
526
652
  initiateInfiniteScroll() {
@@ -533,7 +659,7 @@ const SallaProductsList = class {
533
659
  history: false,
534
660
  nextPage: this.nextPage,
535
661
  scrollThreshold: shouldApplyManualLoad ? false : this.autoload ? 100 : false,
536
- loadOnScroll: shouldApplyManualLoad ? false : this.autoload
662
+ loadOnScroll: shouldApplyManualLoad ? false : this.autoload,
537
663
  }, true);
538
664
  this.infiniteScroll.pageIndex = this.page;
539
665
  this.infiniteScroll?.on('request', () => {
@@ -644,11 +770,13 @@ const SallaProductsList = class {
644
770
  }
645
771
  getInitialData() {
646
772
  this.loading();
647
- return salla.api.withoutNotifier(() => salla.product.api.fetch({
773
+ return salla.api.withoutNotifier(() => salla.product.api
774
+ .fetch({
648
775
  source: Helper.Helper.getApiSource(this.getSource()),
649
776
  source_value: this.getSourceValue(),
650
- limit: this.limit
651
- }).then(async (response) => {
777
+ limit: this.limit,
778
+ })
779
+ .then(async (response) => {
652
780
  if (!response.data.length) {
653
781
  this.showPlaceholder = true;
654
782
  this.placeholderLoader && this.placeholderLoader.remove();
@@ -672,9 +800,65 @@ const SallaProductsList = class {
672
800
  async loadMore() {
673
801
  this.infiniteScroll?.loadNextPage();
674
802
  }
803
+ /**
804
+ * Get the currently selected products.
805
+ */
806
+ async getSelected() {
807
+ return {
808
+ ids: Array.from(this.selectedProducts.keys()),
809
+ products: Array.from(this.selectedProducts.values()),
810
+ };
811
+ }
812
+ /**
813
+ * Get all products currently rendered in the list (works whether selection
814
+ * is enabled or not). Useful to gather ids for "share all".
815
+ */
816
+ async getLoadedProducts() {
817
+ const products = [];
818
+ if (!this.wrapper) {
819
+ return products;
820
+ }
821
+ for (let i = 0; i < this.wrapper.children.length; i++) {
822
+ const item = this.wrapper.children[i];
823
+ item?.product && products.push(item.product);
824
+ }
825
+ return products;
826
+ }
827
+ /**
828
+ * Select all currently rendered products.
829
+ */
830
+ async selectAll() {
831
+ if (!this.selectable || !this.wrapper) {
832
+ return;
833
+ }
834
+ for (let i = 0; i < this.wrapper.children.length; i++) {
835
+ const item = this.wrapper.children[i];
836
+ if (item?.product) {
837
+ this.selectedProducts.set(item.product.id, item.product);
838
+ item.classList.add('s-products-list-item-selected');
839
+ const checkbox = item.querySelector('.s-products-list-select-checkbox');
840
+ checkbox && (checkbox.checked = true);
841
+ }
842
+ }
843
+ this.emitSelection();
844
+ }
845
+ /**
846
+ * Clear the current selection.
847
+ */
848
+ async clearSelection() {
849
+ this.selectedProducts.clear();
850
+ if (this.wrapper) {
851
+ this.wrapper
852
+ .querySelectorAll('.s-products-list-select-checkbox')
853
+ .forEach((checkbox) => (checkbox.checked = false));
854
+ this.wrapper
855
+ .querySelectorAll('.s-products-list-item-selected')
856
+ .forEach(item => item.classList.remove('s-products-list-item-selected'));
857
+ }
858
+ this.emitSelection();
859
+ }
675
860
  componentWillLoad() {
676
- return salla.onReady()
677
- .then(async () => {
861
+ return salla.onReady().then(async () => {
678
862
  this.hasCustomComponent = !!customElements.get(this.productCardComponent);
679
863
  this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());
680
864
  this.hasInfiniteScroll = !this.isAuxiliaryProductsListSource() && !this.limit;
@@ -754,15 +938,16 @@ const SallaProductsList = class {
754
938
  });
755
939
  }
756
940
  else {
757
- console.error("No response received after getInitialData.");
941
+ console.error('No response received after getInitialData.');
758
942
  }
759
943
  })
760
944
  .catch(error => {
761
- console.error("Error during initial data fetch:", error);
945
+ console.error('Error during initial data fetch:', error);
762
946
  });
763
947
  }
764
948
  else {
765
- this.firstPageResponse && (await this.handleResponse(this.firstPageResponse, false)).forEach(card => this.wrapper.append(card));
949
+ this.firstPageResponse &&
950
+ (await this.handleResponse(this.firstPageResponse, false)).forEach(card => this.wrapper.append(card));
766
951
  }
767
952
  }
768
953
  canRender() {
@@ -773,16 +958,18 @@ const SallaProductsList = class {
773
958
  return '';
774
959
  }
775
960
  if (this.showPlaceholder) {
776
- return index.h("div", { class: "s-products-list-placeholder" }, index.h("span", { innerHTML: shoppingBag.ShoppingBag }), index.h("p", null, this.placeholderText));
961
+ return (index.h("div", { class: "s-products-list-placeholder" }, index.h("span", { innerHTML: shoppingBag.ShoppingBag }), index.h("p", null, this.placeholderText)));
777
962
  }
778
963
  return (index.h(index.Host, { class: "s-products-list" }, index.h("div", { class: {
779
- "s-products-list-wrapper": true,
964
+ 's-products-list-wrapper': true,
780
965
  's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,
781
966
  's-products-list-vertical-cards': !this.horizontalCards && !this.rowCards && !this.filtersResults,
782
967
  's-products-list-row-cards': this.rowCards,
783
968
  's-products-list-compact-cards': this.compactCards,
784
969
  's-products-list-filters-results': this.filtersResults,
785
- }, ref: wrapper => this.wrapper = wrapper }), index.h("div", { class: "s-infinite-scroll-status", ref: status => this.status = status }, index.h("p", { class: "s-infinite-scroll-last infinite-scroll-last s-hidden" }, this.endOfText), index.h("p", { class: "s-infinite-scroll-error infinite-scroll-error s-hidden" }, this.failedLoadMore)), this.autoload && index.h("div", { class: "s-products-list-loading-wrapper", style: { "display": "none" }, ref: loader => this.loader = loader }, index.h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" })), this.hasInfiniteScroll && this.nextPage && !this.autoload ? (index.h("div", { class: "s-infinite-scroll-wrapper", style: { "display": "none" }, ref: loadMoreWrapper => this.loadMoreWrapper = loadMoreWrapper }, index.h("button", { onClick: () => this.loadMore(), class: "s-infinite-scroll-btn s-button-btn s-button-primary" }, index.h("span", { class: "s-button-text s-infinite-scroll-btn-text" }, this.loadMoreText ? this.loadMoreText : salla.lang.get('common.elements.load_more')), index.h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader", ref: btnLoader => this.btnLoader = btnLoader, style: { "display": "none" } })))) : ""));
970
+ }, ref: wrapper => (this.wrapper = wrapper) }), index.h("div", { class: "s-infinite-scroll-status", ref: status => (this.status = status) }, index.h("p", { class: "s-infinite-scroll-last infinite-scroll-last s-hidden" }, this.endOfText), index.h("p", { class: "s-infinite-scroll-error infinite-scroll-error s-hidden" }, this.failedLoadMore)), this.autoload && (index.h("div", { class: "s-products-list-loading-wrapper", style: { display: 'none' }, ref: loader => (this.loader = loader) }, index.h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" }))), this.hasInfiniteScroll && this.nextPage && !this.autoload ? (index.h("div", { class: "s-infinite-scroll-wrapper", style: { display: 'none' }, ref: loadMoreWrapper => (this.loadMoreWrapper = loadMoreWrapper) }, index.h("button", { onClick: () => this.loadMore(), class: "s-infinite-scroll-btn s-button-btn s-button-primary" }, index.h("span", { class: "s-button-text s-infinite-scroll-btn-text" }, this.loadMoreText
971
+ ? this.loadMoreText
972
+ : salla.lang.get('common.elements.load_more')), index.h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader", ref: btnLoader => (this.btnLoader = btnLoader), style: { display: 'none' } })))) : ('')));
786
973
  }
787
974
  init() {
788
975
  this.initiateInfiniteScroll();
@@ -799,14 +986,19 @@ const SallaProductsList = class {
799
986
  let title = Helper.Helper.getPageTitleForSource(source);
800
987
  try {
801
988
  if (this.getSource() === 'search') {
802
- title = salla.lang.get('common.elements.search_about', { 'word': this.getSourceValue() });
989
+ title = salla.lang.get('common.elements.search_about', { word: this.getSourceValue() });
803
990
  }
804
991
  else if (!title) {
805
992
  let catId = this.parsedFilters.category_id || this.getSourceValue()[0];
806
993
  // get the first filter that its key is category_id, then get the value when filter.value.*.key==catId
807
- title = response.filters?.find(filter => filter.key === 'category_id')?.values?.find(cat => cat.key === catId)?.value ?? '';
994
+ title =
995
+ response.filters
996
+ ?.find(filter => filter.key === 'category_id')
997
+ ?.values?.find(cat => cat.key === catId)?.value ?? '';
808
998
  }
809
- title += (title ? ' - ' : '') + salla.lang.choice('blocks.header.products_count', response.data?.length);
999
+ title +=
1000
+ (title ? ' - ' : '') +
1001
+ salla.lang.choice('blocks.header.products_count', response.data?.length);
810
1002
  if (response.data.length === 15) {
811
1003
  title = title.replace(response.data.length, salla.lang.get('common.elements.more_than') + ' ' + response.data.length);
812
1004
  }
@@ -845,6 +1037,9 @@ const SallaProductsList = class {
845
1037
  return productCardsView;
846
1038
  }
847
1039
  get host() { return index.getElement(this); }
1040
+ static get watchers() { return {
1041
+ "selectable": ["onSelectableChanged"]
1042
+ }; }
848
1043
  };
849
1044
  SallaProductsList.style = sallaProductsListCss;
850
1045
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DTSWXcbN.js');
6
+ var index = require('./index-CXr_39D8.js');
7
7
 
8
8
  const sallaProgressBarCss = "";
9
9
 
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DTSWXcbN.js');
6
+ var index = require('./index-CXr_39D8.js');
7
7
  var iphoneX = require('./iphone-x-qC21wCLj.js');
8
- var mail = require('./mail-Bgvt2hc9.js');
8
+ var mail = require('./mail-C9D8MHae.js');
9
9
  var cancel = require('./cancel-B5SbMYEk.js');
10
10
 
11
11
  var CelebrationIcon = `<!-- Generated by IcoMoon.io -->
@@ -212,7 +212,7 @@ const SallaQuickOrder = class {
212
212
  ? this.confirmPayButtonTitle : this.expanded ? index.h("i", { innerHTML: cancel.SICancel }) : this.confirmPayButtonTitle)), index.h("form", { onSubmit: (e) => this.submit(e), class: 's-quick-order-expandable ' + (this.expanded ? 's-quick-order-shown' : '') }, Salla.config.isGuest() &&
213
213
  [
214
214
  index.h("div", { class: "s-form-group" }, index.h("span", { innerHTML: PortraitIcon }), index.h("input", { type: "text", required: true, class: "s-form-control s-quick-order-phone-field", name: 'name', placeholder: this.userNameLabel, ref: el => (this.nameInput = el) })),
215
- index.h("div", { class: "s-quick-order-flex-input" }, index.h("div", { class: "s-form-group" }, index.h("span", { innerHTML: iphoneX.SIiPhoneX }), index.h("salla-tel-input", { ref: el => (this.phoneInput = el) })), index.h("div", { class: "s-form-group" }, index.h("span", { innerHTML: mail.SIMail }), index.h("input", { type: "email", class: "s-form-control s-quick-order-email-field", name: 'email', required: this.isEmailRequired, placeholder: this.placeHolderEmail + ' ' + (this.isEmailRequired ? '' : this.emailOptional), ref: el => (this.emailInput = el) }))),
215
+ index.h("div", { class: "s-quick-order-flex-input" }, index.h("div", { class: "s-form-group" }, index.h("span", { innerHTML: iphoneX.SIiPhoneX }), index.h("salla-tel-input", { ref: el => (this.phoneInput = el) })), index.h("div", { class: "s-form-group" }, index.h("span", { innerHTML: mail.email }), index.h("input", { type: "email", class: "s-form-control s-quick-order-email-field", name: 'email', required: this.isEmailRequired, placeholder: this.placeHolderEmail + ' ' + (this.isEmailRequired ? '' : this.emailOptional), ref: el => (this.emailInput = el) }))),
216
216
  ], this.isTermsRequired && (index.h("label", { htmlFor: "terms", class: "s-quick-order-terms" }, index.h("input", { type: "checkbox", required: true, name: 'terms', id: 'terms', ref: el => (this.termsInput = el), onChange: () => (this.termsChecked = this.termsInput.checked), class: "s-checkbox" }), index.h("span", { class: "s-form-label" }, " ", index.h("div", { innerHTML: this.formatAgreementText(this.agreementText, 150) }, this.agreementText.length > 150 && (index.h("salla-button", { shape: "link", onClick: () => this.agreementModal.open() }, this.agreementShowText))), " "))), index.h("salla-button", { type: "submit", color: this.getBtnColor(), width: "wide", ref: el => (this.submitBtn = el) }, this.payButtonTitle)), index.h("salla-modal", { "modal-title": this.agreementModalHead, ref: modal => (this.agreementModal = modal) }, index.h("article", { innerHTML: this.agreementText })))));
217
217
  }
218
218
  componentDidLoad() {
@@ -3,13 +3,13 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-DTSWXcbN.js');
6
+ var index = require('./index-CXr_39D8.js');
7
7
  var star = require('./star-DGcH7Yso.js');
8
8
  var checkCircle2 = require('./check-circle2-BDvlT4_n.js');
9
9
  var Helper = require('./Helper-CgGR9Qf8.js');
10
10
  var image = require('./image-BoZ6Hums.js');
11
11
  var whatsapp2 = require('./whatsapp2-BdMd5Gx1.js');
12
- var mail = require('./mail-Bgvt2hc9.js');
12
+ var mail = require('./mail-C9D8MHae.js');
13
13
  var anime_es = require('./anime.es-BqW8JHZi.js');
14
14
 
15
15
  var ShippingFast = `<!-- Generated by IcoMoon.io -->
@@ -436,7 +436,7 @@ const SallaRatingModal = class {
436
436
  ? index.h("div", { class: "rating-outer-form s-rating-modal-step-wrap s-rating-modal-step s-rating-modal-hidden", "data-type": "shipping" }, index.h("input", { type: "hidden", name: "shipping_company_id", value: this.order.shipping.company.id }), this.order.shipping.company.logo
437
437
  ? index.h("div", { class: "s-rating-modal-rounded-icon" }, index.h("img", { src: this.order.shipping.company.logo, class: "s-rating-modal-shipping-logo", alt: this.order.shipping.company.name }))
438
438
  : index.h("span", { class: "s-rating-modal-icon", innerHTML: ShippingFast }), index.h("div", { class: "s-rating-modal-title" }, " ", `${salla.lang.get('pages.rating.rate_shipping')} ${this.order.shipping.company.name}`), index.h("div", { class: "s-rating-modal-stars-company" }, index.h("salla-rating-stars", { withLabel: true, size: "large" })), index.h("textarea", { name: "comment", class: "s-rating-modal-comment", placeholder: salla.lang.get('pages.rating.write_shipping_rate') }), index.h("small", { class: "s-rating-modal-validation-msg" }))
439
- : '', index.h("div", { class: "s-rating-modal-thanks s-rating-modal-hidden", ref: el => this.thanksTab = el }, index.h("span", { class: "s-rating-modal-icon", innerHTML: checkCircle2.CheckCircle2 }), index.h("h3", { class: "s-rating-modal-thanks-title" }, salla.lang.get('pages.rating.thanks')), index.h("div", { class: "s-rating-modal-thanks-msg", innerHTML: this.order.thanks_message }), index.h("time", { class: "s-rating-modal-thanks-time", ref: el => this.thanksTime = el }))), this.allowContactSupport && this.showContactWidget && (salla.config.get('store.contacts.whatsapp') || salla.config.get('store.contacts.email')) ? index.h("div", { class: "s-rating-modal-contact" }, index.h("p", null, this.contactUsLabel), index.h("div", { class: "s-rating-modal-contact-icons" }, salla.config.get('store.contacts.whatsapp') && index.h("span", { onClick: () => this.handleSendWhatsApp(), innerHTML: whatsapp2.WhatsappIcon }), salla.config.get('store.contacts.email') && index.h("span", { onClick: () => this.handleSendEmail(), innerHTML: mail.SIMail }))) : '', index.h("div", { class: "s-rating-modal-footer" }, index.h("button", { ref: el => this.backBtn = el, onClick: () => this.previousTab(), class: "s-rating-modal-btn s-rating-modal-unvisiable" }, salla.lang.get('common.elements.back')), this.stepsCount > 1 ? index.h("ul", { class: "s-rating-modal-dots" }, [0, 1, 2].slice(0, this.stepsCount).map((v) => index.h("li", { key: v, class: 's-rating-modal-bg-gray s-rating-modal-step-dot' }))) : '', index.h("salla-button", { "loader-position": 'center', ref: el => this.nextBtn = el, onClick: () => this.submit() }, salla.lang.get('common.elements.next')))]
439
+ : '', index.h("div", { class: "s-rating-modal-thanks s-rating-modal-hidden", ref: el => this.thanksTab = el }, index.h("span", { class: "s-rating-modal-icon", innerHTML: checkCircle2.CheckCircle2 }), index.h("h3", { class: "s-rating-modal-thanks-title" }, salla.lang.get('pages.rating.thanks')), index.h("div", { class: "s-rating-modal-thanks-msg", innerHTML: this.order.thanks_message }), index.h("time", { class: "s-rating-modal-thanks-time", ref: el => this.thanksTime = el }))), this.allowContactSupport && this.showContactWidget && (salla.config.get('store.contacts.whatsapp') || salla.config.get('store.contacts.email')) ? index.h("div", { class: "s-rating-modal-contact" }, index.h("p", null, this.contactUsLabel), index.h("div", { class: "s-rating-modal-contact-icons" }, salla.config.get('store.contacts.whatsapp') && index.h("span", { onClick: () => this.handleSendWhatsApp(), innerHTML: whatsapp2.WhatsappIcon }), salla.config.get('store.contacts.email') && index.h("span", { onClick: () => this.handleSendEmail(), innerHTML: mail.email }))) : '', index.h("div", { class: "s-rating-modal-footer" }, index.h("button", { ref: el => this.backBtn = el, onClick: () => this.previousTab(), class: "s-rating-modal-btn s-rating-modal-unvisiable" }, salla.lang.get('common.elements.back')), this.stepsCount > 1 ? index.h("ul", { class: "s-rating-modal-dots" }, [0, 1, 2].slice(0, this.stepsCount).map((v) => index.h("li", { key: v, class: 's-rating-modal-bg-gray s-rating-modal-step-dot' }))) : '', index.h("salla-button", { "loader-position": 'center', ref: el => this.nextBtn = el, onClick: () => this.submit() }, salla.lang.get('common.elements.next')))]
440
440
  : index.h("salla-placeholder", { alignment: "center" }))));
441
441
  }
442
442
  }