@salla.sa/twilight-components 2.14.467 → 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 (364) hide show
  1. package/dist/cjs/{filepond-Li5IcLEr.js → filepond-C1SAyrFq.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-CXgEvsrj.js → filepond-plugin-file-poster-DAhQ7rGa.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-DISjKBXN.js → filepond-plugin-file-validate-size-qfwxpApK.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-BeDqb2RU.js → filepond-plugin-file-validate-type-BbYanfPf.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-CTKgasCY.js → filepond-plugin-image-edit-lWdFhMNt.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-BqvyVbfM.js → filepond-plugin-image-exif-orientation-C2wUYBSb.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-DfX-wD-s.js → filepond-plugin-image-preview-B1ukjrjT.js} +1 -1
  8. package/dist/cjs/{functions-DXNacMtu.js → functions-DCSgyun2.js} +1 -1
  9. package/dist/cjs/{index-JuURs8Nc.js → index-CXr_39D8.js} +9 -5
  10. package/dist/cjs/{index-2n84VIdz.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-BdbqBT_O.js → tracked-promise-BsYRgTGD.js} +1 -1
  103. package/dist/cjs/twilight.cjs.js +2 -2
  104. package/dist/cjs/{vanilla-picker-Cj5ogibZ.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-Cpf2HNH9.js → filepond-C4pZr9nR.js} +1 -1
  140. package/dist/esm/{filepond-plugin-file-poster-CVurRtjC.js → filepond-plugin-file-poster-CXpAGxT4.js} +1 -1
  141. package/dist/esm/{filepond-plugin-file-validate-size-Dw2xFbfx.js → filepond-plugin-file-validate-size-Dk4M6ge1.js} +1 -1
  142. package/dist/esm/{filepond-plugin-file-validate-type-D6seJVa2.js → filepond-plugin-file-validate-type-DD7qvRsg.js} +1 -1
  143. package/dist/esm/{filepond-plugin-image-edit-CBikW78V.js → filepond-plugin-image-edit-DMllAEkg.js} +1 -1
  144. package/dist/esm/{filepond-plugin-image-exif-orientation-5yNhe9TO.js → filepond-plugin-image-exif-orientation-BRCbcu_E.js} +1 -1
  145. package/dist/esm/{filepond-plugin-image-preview-PlAAXB7f.js → filepond-plugin-image-preview-DgeylrwN.js} +1 -1
  146. package/dist/esm/{functions-Egzz8fEM.js → functions-DrS7by6t.js} +1 -1
  147. package/dist/esm/{index-Do4FV1UZ.js → index-9SnsJoYO.js} +1 -1
  148. package/dist/esm/{index-a4x9urdK.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-BX5clCDX.js → tracked-promise-CTcAqNfZ.js} +1 -1
  241. package/dist/esm/twilight.js +3 -3
  242. package/dist/esm/{vanilla-picker-DB0pDHa7.js → vanilla-picker-DfeK45Yv.js} +1 -1
  243. package/dist/twilight/{p-61b1fd3b.entry.js → p-07af3286.entry.js} +1 -1
  244. package/dist/twilight/{p-ee605cef.entry.js → p-08337b2b.entry.js} +1 -1
  245. package/dist/twilight/{p-74a61155.entry.js → p-08771dff.entry.js} +1 -1
  246. package/dist/twilight/{p-13a033fa.entry.js → p-0e1bab4f.entry.js} +1 -1
  247. package/dist/twilight/{p-b0bf7a5b.entry.js → p-0eadca17.entry.js} +1 -1
  248. package/dist/twilight/{p-92b02f3c.entry.js → p-12ccc1ab.entry.js} +1 -1
  249. package/dist/twilight/{p-52fe97c8.entry.js → p-1574176e.entry.js} +1 -1
  250. package/dist/twilight/{p-0957f323.entry.js → p-17015f9c.entry.js} +1 -1
  251. package/dist/twilight/{p-b8ab7da8.entry.js → p-1920b702.entry.js} +1 -1
  252. package/dist/twilight/{p-91363b7e.entry.js → p-1a1cebfa.entry.js} +1 -1
  253. package/dist/twilight/{p-1130d4b7.entry.js → p-1a844fda.entry.js} +1 -1
  254. package/dist/twilight/{p-42a0b54a.entry.js → p-1b7ebf47.entry.js} +1 -1
  255. package/dist/twilight/{p-e726123e.entry.js → p-223d7ceb.entry.js} +1 -1
  256. package/dist/twilight/{p-ff270706.entry.js → p-255f5d2a.entry.js} +1 -1
  257. package/dist/twilight/{p-0da78d4e.entry.js → p-266f57de.entry.js} +1 -1
  258. package/dist/twilight/p-28bdf8ec.entry.js +4 -0
  259. package/dist/twilight/{p-fbfacb11.entry.js → p-2c7086ec.entry.js} +1 -1
  260. package/dist/twilight/{p-d33203b7.entry.js → p-2c7f524a.entry.js} +1 -1
  261. package/dist/twilight/{p-c60c302f.entry.js → p-30ea9a82.entry.js} +1 -1
  262. package/dist/twilight/{p-b80adb19.entry.js → p-313d38cd.entry.js} +1 -1
  263. package/dist/twilight/{p-241bd42e.entry.js → p-315ce27b.entry.js} +1 -1
  264. package/dist/twilight/p-378d45e2.entry.js +4 -0
  265. package/dist/twilight/p-3c2fe8cd.entry.js +4 -0
  266. package/dist/twilight/{p-d905fbca.entry.js → p-3d1e7982.entry.js} +1 -1
  267. package/dist/twilight/{p-a068fff4.entry.js → p-3d7c0ac6.entry.js} +1 -1
  268. package/dist/twilight/{p-c0380d40.entry.js → p-3d8d289e.entry.js} +1 -1
  269. package/dist/twilight/{p-f6bb956c.entry.js → p-4144c908.entry.js} +1 -1
  270. package/dist/twilight/{p-5b365561.entry.js → p-453a7bb2.entry.js} +1 -1
  271. package/dist/twilight/{p-6d87b134.entry.js → p-4c457ba5.entry.js} +1 -1
  272. package/dist/twilight/{p-735fafef.entry.js → p-4d3bcacd.entry.js} +1 -1
  273. package/dist/twilight/{p-d9d4ea5b.entry.js → p-4dedb514.entry.js} +1 -1
  274. package/dist/twilight/{p-0b169d4e.entry.js → p-50dfec0a.entry.js} +1 -1
  275. package/dist/twilight/{p-1ce817c2.entry.js → p-53f83426.entry.js} +1 -1
  276. package/dist/twilight/{p-afcb0117.entry.js → p-54e9ac89.entry.js} +1 -1
  277. package/dist/twilight/{p-35ac1fc9.entry.js → p-571b8e00.entry.js} +1 -1
  278. package/dist/twilight/{p-9dc0fec4.entry.js → p-5a5057a8.entry.js} +1 -1
  279. package/dist/twilight/{p-ec073354.entry.js → p-5a9b94f8.entry.js} +1 -1
  280. package/dist/twilight/{p-9b639078.entry.js → p-5c1c520a.entry.js} +1 -1
  281. package/dist/twilight/{p-f170aff7.entry.js → p-5d06fe77.entry.js} +1 -1
  282. package/dist/twilight/{p-ec5ae058.entry.js → p-5e433652.entry.js} +1 -1
  283. package/dist/twilight/{p-b0ed6a9f.entry.js → p-6046666d.entry.js} +1 -1
  284. package/dist/twilight/{p-10e0936d.entry.js → p-67e23040.entry.js} +1 -1
  285. package/dist/twilight/{p-fa039238.entry.js → p-6c777951.entry.js} +1 -1
  286. package/dist/twilight/{p-53cbb271.entry.js → p-749dbf27.entry.js} +1 -1
  287. package/dist/twilight/p-7bd464f3.entry.js +4 -0
  288. package/dist/twilight/{p-c8fd03c0.entry.js → p-7ffc1711.entry.js} +1 -1
  289. package/dist/twilight/{p-89f11893.entry.js → p-83b6c374.entry.js} +1 -1
  290. package/dist/twilight/{p-bfbf8121.entry.js → p-8b5d26d3.entry.js} +1 -1
  291. package/dist/twilight/{p-92f3ea44.entry.js → p-9a0514dd.entry.js} +1 -1
  292. package/dist/twilight/{p-f5135cb5.entry.js → p-9ba953ab.entry.js} +1 -1
  293. package/dist/twilight/{p-BVqg7xd9.js → p-BGpAIcg-.js} +1 -1
  294. package/dist/twilight/{p-fCaOxwGH.js → p-BHkz1ssL.js} +1 -1
  295. package/dist/twilight/{p-CsMnvJkR.js → p-BZhp8a87.js} +1 -1
  296. package/dist/twilight/p-Bo1nXenO.js +4 -0
  297. package/dist/twilight/{p-D9ni3BuG.js → p-BojnM4VS.js} +1 -1
  298. package/dist/twilight/{p-B7KW0zhB.js → p-CBU9I-zy.js} +1 -1
  299. package/dist/twilight/{p-pOgjUtf9.js → p-CGd7EQZr.js} +1 -1
  300. package/dist/twilight/{p-EPfEwqOC.js → p-D01LipFK.js} +1 -1
  301. package/dist/twilight/{p-a4x9urdK.js → p-D2yBy7Jh.js} +2 -2
  302. package/dist/twilight/{p-DiWHgCMH.js → p-DSgSJMud.js} +1 -1
  303. package/dist/twilight/{p-DLNIOD9t.js → p-DzAIgzdz.js} +1 -1
  304. package/dist/twilight/{p-fe506679.entry.js → p-a0d88c4d.entry.js} +1 -1
  305. package/dist/twilight/{p-f684d7bf.entry.js → p-a2b53a52.entry.js} +1 -1
  306. package/dist/twilight/{p-78020271.entry.js → p-a3e1fafc.entry.js} +1 -1
  307. package/dist/twilight/{p-fdde8399.entry.js → p-a463d567.entry.js} +1 -1
  308. package/dist/twilight/{p-ba1199ba.entry.js → p-a6a9e398.entry.js} +1 -1
  309. package/dist/twilight/{p-0405f5e8.entry.js → p-a79f60e6.entry.js} +1 -1
  310. package/dist/twilight/{p-0bdf58a4.entry.js → p-aadfd70e.entry.js} +1 -1
  311. package/dist/twilight/{p-ad19661d.entry.js → p-ad0a27e2.entry.js} +1 -1
  312. package/dist/twilight/{p-e90d18b2.entry.js → p-ae8bd2e7.entry.js} +1 -1
  313. package/dist/twilight/{p-d17596ff.entry.js → p-af121bbf.entry.js} +1 -1
  314. package/dist/twilight/p-b0f28806.entry.js +4 -0
  315. package/dist/twilight/{p-0b1970c2.entry.js → p-b3f6b725.entry.js} +1 -1
  316. package/dist/twilight/{p-1a37b959.entry.js → p-b7e720e8.entry.js} +1 -1
  317. package/dist/twilight/{p-a53d5944.entry.js → p-b80016c8.entry.js} +1 -1
  318. package/dist/twilight/{p-635347c9.entry.js → p-c0f40eea.entry.js} +1 -1
  319. package/dist/twilight/p-c4bc10c1.entry.js +4 -0
  320. package/dist/twilight/p-c637b6bb.entry.js +4 -0
  321. package/dist/twilight/{p-127ee640.entry.js → p-c6e18746.entry.js} +1 -1
  322. package/dist/twilight/{p-5803c158.entry.js → p-cb855cb3.entry.js} +1 -1
  323. package/dist/twilight/{p-4d393389.entry.js → p-cbc44b3e.entry.js} +1 -1
  324. package/dist/twilight/{p-6d47892b.entry.js → p-cbf547f0.entry.js} +1 -1
  325. package/dist/twilight/{p-e27363dd.entry.js → p-cebad615.entry.js} +1 -1
  326. package/dist/twilight/{p-316135f8.entry.js → p-cfd910a8.entry.js} +1 -1
  327. package/dist/twilight/{p-d0340e11.entry.js → p-d0a8b9be.entry.js} +1 -1
  328. package/dist/twilight/{p-59f7f014.entry.js → p-d0cae7da.entry.js} +1 -1
  329. package/dist/twilight/{p-03d13b9f.entry.js → p-d861eea6.entry.js} +1 -1
  330. package/dist/twilight/p-daa9c0b3.entry.js +4 -0
  331. package/dist/twilight/{p-59f815bc.entry.js → p-db43fa93.entry.js} +1 -1
  332. package/dist/twilight/{p-e1205d19.entry.js → p-e06a7e19.entry.js} +1 -1
  333. package/dist/twilight/{p-0c748664.entry.js → p-e34f68e0.entry.js} +1 -1
  334. package/dist/twilight/{p-08b2c781.entry.js → p-e4cac2a9.entry.js} +1 -1
  335. package/dist/twilight/{p-056400a1.entry.js → p-e5de1833.entry.js} +1 -1
  336. package/dist/twilight/{p-fa1cc092.entry.js → p-e80ee5b0.entry.js} +6 -6
  337. package/dist/twilight/{p-16bcc5ab.entry.js → p-e8ffc069.entry.js} +1 -1
  338. package/dist/twilight/{p-2bcfb4f3.entry.js → p-ee8c7a5a.entry.js} +1 -1
  339. package/dist/twilight/p-f0dedf42.entry.js +4 -0
  340. package/dist/twilight/{p-37457147.entry.js → p-f3a01895.entry.js} +1 -1
  341. package/dist/twilight/{p-ef8fb222.entry.js → p-fb56a444.entry.js} +1 -1
  342. package/dist/twilight/{p-e8a82952.entry.js → p-fe1bced4.entry.js} +1 -1
  343. package/dist/twilight/{p-DSBkBAFI.js → p-paiaALkJ.js} +1 -1
  344. package/dist/twilight/{p-CkA6UKAD.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-234fdf72.entry.js +0 -4
  357. package/dist/twilight/p-3fbd88d0.entry.js +0 -4
  358. package/dist/twilight/p-7a1cfd65.entry.js +0 -4
  359. package/dist/twilight/p-865c602e.entry.js +0 -4
  360. package/dist/twilight/p-9df5c9a7.entry.js +0 -4
  361. package/dist/twilight/p-C4aFleDM.js +0 -4
  362. package/dist/twilight/p-e485d0b8.entry.js +0 -4
  363. package/dist/twilight/p-f5072671.entry.js +0 -4
  364. package/dist/twilight/p-fb7904e6.entry.js +0 -4
@@ -1,17 +1,18 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-a4x9urdK.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-D2yBy7Jh.js';
5
5
  import { a as anime } from './anime.es-CgtvEd63.js';
6
6
  import { S as ShoppingBag } from './shopping-bag-DiKTtDW5.js';
7
7
  import { H as Helper } from './Helper-BXj4f_Qj.js';
8
8
 
9
- const sallaProductsListCss = "";
9
+ 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}";
10
10
 
11
11
  const SallaProductsList = class {
12
12
  constructor(hostRef) {
13
13
  registerInstance(this, hostRef);
14
14
  this.productsFetched = createEvent(this, "productsFetched");
15
+ this.selectionChanged = createEvent(this, "selectionChanged");
15
16
  /**
16
17
  * Autoload next page when scroll
17
18
  */
@@ -26,6 +27,18 @@ const SallaProductsList = class {
26
27
  * <salla-products-list product-card-component="my-custom-card-style2" ...
27
28
  */
28
29
  this.productCardComponent = 'custom-salla-product-card';
30
+ /**
31
+ * Enables multi-selection of products. When enabled, a checkbox overlay is
32
+ * rendered on top of each product card and the selected products are exposed
33
+ * via the `selectionChanged` event, the `salla-products-list::selection.changed`
34
+ * global event and the `getSelected()` method.
35
+ *
36
+ * This is source-agnostic (works for any `source`) and defaults to `false`.
37
+ * On the wishlist page the `salla-wishlist-actions` panel turns it on at
38
+ * runtime (when the customer chooses "share specific items"), so no theme
39
+ * markup changes are required.
40
+ */
41
+ this.selectable = false;
29
42
  // State
30
43
  this.page = 1;
31
44
  this.placeholderText = salla.lang.get('pages.categories.no_products');
@@ -33,10 +46,12 @@ const SallaProductsList = class {
33
46
  this.failedLoadMore = salla.lang.get('common.elements.failed_to_load_more');
34
47
  this.currentPage = salla.config.get('page');
35
48
  this.filtersSnapshot = [];
36
- this.lastViewedProductKey = "lastViewedProductId";
37
- this.filtersKey = "filters";
38
- this.infiniteScrollStateKey = "infiniteScrollState";
39
- this.prevCategoryIdKey = "prevCategoryId";
49
+ /** Map of selected products keyed by product id (preserves selection across pagination). */
50
+ this.selectedProducts = new Map();
51
+ this.lastViewedProductKey = 'lastViewedProductId';
52
+ this.filtersKey = 'filters';
53
+ this.infiniteScrollStateKey = 'infiniteScrollState';
54
+ this.prevCategoryIdKey = 'prevCategoryId';
40
55
  this.isProcessing = false; // Tracks if we are processing data
41
56
  this.scrollTimeout = null;
42
57
  this.boundScrollToLastViewedProduct = () => this.scrollToLastViewedProduct();
@@ -45,7 +60,44 @@ const SallaProductsList = class {
45
60
  'product.index.latest': 'latest',
46
61
  'product.index.offers': 'offers',
47
62
  'product.index.search': 'search',
48
- 'product.index.sales': 'sales'
63
+ 'product.index.sales': 'sales',
64
+ };
65
+ this.onWishlistItemRemoved = (_response, productId) => {
66
+ if (this.getSource() !== 'wishlist' || !this.wrapper) {
67
+ return;
68
+ }
69
+ const normalizedId = String(productId);
70
+ const cardTag = this.hasCustomComponent ? this.productCardComponent : 'salla-product-card';
71
+ for (const child of Array.from(this.wrapper.children)) {
72
+ const listItem = child;
73
+ const card = child.querySelector(cardTag);
74
+ const id = listItem.product?.id ?? card?.product?.id;
75
+ if (id != null && String(id) === normalizedId) {
76
+ child.remove();
77
+ break;
78
+ }
79
+ }
80
+ // Theme may remove the card first and leave an empty selectable shell.
81
+ for (const child of Array.from(this.wrapper.children)) {
82
+ if (!child.classList.contains('s-products-list-selectable-item')) {
83
+ continue;
84
+ }
85
+ const listItem = child;
86
+ if (listItem.product?.id != null &&
87
+ String(listItem.product.id) === normalizedId &&
88
+ !child.querySelector(cardTag)) {
89
+ child.remove();
90
+ break;
91
+ }
92
+ }
93
+ if (this.selectable) {
94
+ for (const id of Array.from(this.selectedProducts.keys())) {
95
+ if (String(id) === normalizedId) {
96
+ this.selectedProducts.delete(id);
97
+ }
98
+ }
99
+ this.emitSelection();
100
+ }
49
101
  };
50
102
  //TODO:: check why `this.includes` not working!!
51
103
  this.includes = Helper.parseJson(this.includes || this.host.getAttribute('includes'));
@@ -62,15 +114,17 @@ const SallaProductsList = class {
62
114
  }
63
115
  connectedCallback() {
64
116
  //Override browser scroll restoration default behaviour
65
- if ("scrollRestoration" in history)
66
- history.scrollRestoration = "manual";
117
+ if ('scrollRestoration' in history)
118
+ history.scrollRestoration = 'manual';
67
119
  // required for scroll restoration case when the component loads before DOM content is completed (slow internet bandwidth /low device specs)
68
120
  window.addEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
69
121
  salla.event.on('salla-filters::changed', filters => this.setFilters(filters));
122
+ salla.event.on('wishlist::removed', this.onWishlistItemRemoved);
70
123
  }
71
124
  disconnectedCallback() {
72
125
  window.removeEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
73
126
  window.removeEventListener('scroll', this.boundHandleScroll);
127
+ salla.event.off('wishlist::removed', this.onWishlistItemRemoved);
74
128
  }
75
129
  /**
76
130
  * Set parsed filters data from URI
@@ -83,7 +137,9 @@ const SallaProductsList = class {
83
137
  window.scrollTo({ top: 0, behavior: 'smooth' });
84
138
  // Create a deep copy of the filters object to avoid mutating the original object
85
139
  this.parsedFilters = JSON.parse(JSON.stringify(filters));
86
- if (this.currentPage?.slug == "product.index" && this.parsedFilters && this.parsedFilters.category_id) {
140
+ if (this.currentPage?.slug == 'product.index' &&
141
+ this.parsedFilters &&
142
+ this.parsedFilters.category_id) {
87
143
  this.currentCategoryIdFilter = [this.parsedFilters.category_id];
88
144
  }
89
145
  return this.reload();
@@ -171,12 +227,12 @@ const SallaProductsList = class {
171
227
  }
172
228
  this.nextPage += '&filterable=1';
173
229
  for (const [key, value] of Object.entries(this.parsedFilters || {})) {
174
- if (["string", "number"].includes(typeof value)) {
230
+ if (['string', 'number'].includes(typeof value)) {
175
231
  // @ts-ignore
176
232
  this.nextPage += `&filters[${encodeURIComponent(key)}]=${encodeURIComponent(value)}`;
177
233
  }
178
234
  else if (Array.isArray(value)) {
179
- value.forEach(item => this.nextPage += `&filters[${encodeURIComponent(key)}][]=${encodeURIComponent(item)}`);
235
+ value.forEach(item => (this.nextPage += `&filters[${encodeURIComponent(key)}][]=${encodeURIComponent(item)}`));
180
236
  }
181
237
  else if (typeof value === 'object') {
182
238
  for (const [k, v] of Object.entries(value)) {
@@ -230,7 +286,9 @@ const SallaProductsList = class {
230
286
  //as a request they don't want to let the user to open the product details
231
287
  //todo:: find a better way to handle this request
232
288
  this.getSource() === 'landing-page' && (product.url = '');
233
- const customComponentTag = this.hasCustomComponent ? this.productCardComponent : 'salla-product-card';
289
+ const customComponentTag = this.hasCustomComponent
290
+ ? this.productCardComponent
291
+ : 'salla-product-card';
234
292
  const productCard = document.createElement(customComponentTag);
235
293
  productCard.product = product;
236
294
  // Apply compact layout if requested - set both property and attribute for compatibility
@@ -241,7 +299,7 @@ const SallaProductsList = class {
241
299
  this.applyLandingPageStyles(productCard);
242
300
  this.applyHorizontalCardStyles(productCard);
243
301
  // Attach click event listener to save the current products snapshot
244
- productCard.addEventListener('click', (event) => {
302
+ productCard.addEventListener('click', event => {
245
303
  const target = event.target;
246
304
  // Check if the clicked element is an anchor or inside an anchor
247
305
  const anchor = target.closest('a');
@@ -253,8 +311,69 @@ const SallaProductsList = class {
253
311
  }
254
312
  }
255
313
  });
314
+ if (this.selectable) {
315
+ return this.wrapSelectableItem(productCard, product);
316
+ }
256
317
  return productCard;
257
318
  }
319
+ /**
320
+ * Wrap a product card with a selection control. The wrapper mirrors `product`
321
+ * so the scroll-restoration snapshot logic (which reads `child.product`) keeps
322
+ * working, and the card keeps its id for `scrollToLastViewedProduct`.
323
+ */
324
+ wrapSelectableItem(productCard, product) {
325
+ const container = document.createElement('div');
326
+ container.className = 's-products-list-selectable-item';
327
+ container.product = product;
328
+ const isSelected = this.selectedProducts.has(product.id);
329
+ if (isSelected) {
330
+ container.classList.add('s-products-list-item-selected');
331
+ }
332
+ const control = document.createElement('label');
333
+ control.className = 's-products-list-select-control';
334
+ control.setAttribute('aria-label', salla.lang.get('common.elements.select', 'تحديد'));
335
+ const checkbox = document.createElement('input');
336
+ checkbox.type = 'checkbox';
337
+ checkbox.className = 's-products-list-select-checkbox';
338
+ checkbox.checked = isSelected;
339
+ checkbox.addEventListener('change', () => this.toggleSelection(product, container, checkbox.checked));
340
+ control.appendChild(checkbox);
341
+ container.appendChild(control);
342
+ container.appendChild(productCard);
343
+ return container;
344
+ }
345
+ toggleSelection(product, container, checked) {
346
+ if (checked) {
347
+ this.selectedProducts.set(product.id, product);
348
+ container?.classList.add('s-products-list-item-selected');
349
+ }
350
+ else {
351
+ this.selectedProducts.delete(product.id);
352
+ container?.classList.remove('s-products-list-item-selected');
353
+ }
354
+ this.emitSelection();
355
+ }
356
+ emitSelection() {
357
+ const products = Array.from(this.selectedProducts.values());
358
+ const ids = Array.from(this.selectedProducts.keys());
359
+ const detail = { ids, products, count: ids.length };
360
+ this.selectionChanged.emit(detail);
361
+ salla.event.emit('salla-products-list::selection.changed', detail);
362
+ }
363
+ /**
364
+ * Re-render the list when selection mode is toggled at runtime (e.g. enabled
365
+ * by the wishlist actions panel after the list already loaded).
366
+ */
367
+ onSelectableChanged(newValue, oldValue) {
368
+ if (newValue === oldValue || !this.isReady || !this.wrapper) {
369
+ return;
370
+ }
371
+ if (!newValue) {
372
+ this.selectedProducts.clear();
373
+ this.emitSelection();
374
+ }
375
+ this.reload();
376
+ }
258
377
  applyLandingPageStyles(productCard) {
259
378
  if (this.getSource() === 'landing-page' && !this.hasCustomComponent) {
260
379
  productCard.toggleAttribute('hide-add-btn', true);
@@ -272,7 +391,7 @@ const SallaProductsList = class {
272
391
  }
273
392
  waitForResizing(element) {
274
393
  let timeout = null;
275
- return new Promise((resolve) => {
394
+ return new Promise(resolve => {
276
395
  const resizeObserver = new ResizeObserver(() => {
277
396
  clearTimeout(timeout);
278
397
  timeout = setTimeout(() => {
@@ -285,7 +404,7 @@ const SallaProductsList = class {
285
404
  }
286
405
  waitForLayoutStable(element) {
287
406
  let timeout = null;
288
- return new Promise((resolve) => {
407
+ return new Promise(resolve => {
289
408
  const observer = new MutationObserver(() => {
290
409
  clearTimeout(timeout);
291
410
  timeout = setTimeout(() => {
@@ -305,15 +424,14 @@ const SallaProductsList = class {
305
424
  // Wait for DOM mutations and layout shifts to stabilize
306
425
  return await Promise.allSettled([
307
426
  this.waitForResizing(element),
308
- this.waitForLayoutStable(element)
427
+ this.waitForLayoutStable(element),
309
428
  ]);
310
429
  }
311
430
  scrollToLastViewedProduct() {
312
431
  const lastViewedProductId = sessionStorage.getItem(this.lastViewedProductKey);
313
432
  if (!lastViewedProductId || salla.url.is_page('product.single'))
314
433
  return;
315
- this.isElementLoaded(`[id*="${lastViewedProductId}"]`)
316
- .then(() => {
434
+ this.isElementLoaded(`[id*="${lastViewedProductId}"]`).then(() => {
317
435
  const productCard = this.wrapper?.querySelector(`[id*="${lastViewedProductId}"]`);
318
436
  if (!productCard)
319
437
  return;
@@ -321,8 +439,12 @@ const SallaProductsList = class {
321
439
  const scrollToProductCard = () => {
322
440
  // calculations is located here for last second changes in the ui (ie. sticky header height)
323
441
  productCard.scrollIntoView({ block: 'start', behavior: 'instant' });
324
- const headerSelector = matchMedia('(max-width: 1024px)').matches ? "header .inner" : "ul.main-menu";
325
- const headerHeight = window?.header_is_sticky ? (document.querySelector(headerSelector)?.getBoundingClientRect()?.height ?? 56) : 0;
442
+ const headerSelector = matchMedia('(max-width: 1024px)').matches
443
+ ? 'header .inner'
444
+ : 'ul.main-menu';
445
+ const headerHeight = window?.header_is_sticky
446
+ ? (document.querySelector(headerSelector)?.getBoundingClientRect()?.height ?? 56)
447
+ : 0;
326
448
  const cardsListRowGap = parseInt(getComputedStyle(this.wrapper).rowGap) ?? 16;
327
449
  const productCardOffset = headerHeight + cardsListRowGap;
328
450
  scrollBy({ top: productCardOffset * -1, behavior: 'instant' });
@@ -330,7 +452,7 @@ const SallaProductsList = class {
330
452
  //start scrolling to the product card position
331
453
  requestAnimationFrame(scrollToProductCard);
332
454
  const productImages = productCard.querySelectorAll('img.lazy');
333
- productImages.forEach((image) => {
455
+ productImages.forEach(image => {
334
456
  const productImage = image;
335
457
  const handleImageEvent = () => {
336
458
  requestAnimationFrame(scrollToProductCard);
@@ -347,16 +469,15 @@ const SallaProductsList = class {
347
469
  });
348
470
  }
349
471
  isElementLoaded(selector) {
350
- return new Promise((resolve => {
472
+ return new Promise(resolve => {
351
473
  const interval = setInterval(() => {
352
474
  if (document.querySelector(selector)) {
353
475
  clearInterval(interval);
354
476
  return resolve(document.querySelector(selector));
355
477
  }
356
478
  }, 50);
357
- }));
479
+ });
358
480
  }
359
- ;
360
481
  takeStateSnapshot() {
361
482
  const currentPageData = [];
362
483
  // Classic for-loop for performance
@@ -367,7 +488,7 @@ const SallaProductsList = class {
367
488
  const scrollState = {
368
489
  pageIndex: Math.max((this.infiniteScroll?.pageIndex ?? 1) - 1, 1),
369
490
  nextPage: this.nextPage,
370
- currentPageData
491
+ currentPageData,
371
492
  };
372
493
  if (this.isFilterable()) {
373
494
  const existingFilters = sessionStorage.getItem(this.filtersKey);
@@ -414,9 +535,8 @@ const SallaProductsList = class {
414
535
  const isDifferentCategory = currentPageSlug
415
536
  ? prevCategory !== currentPageSlug // Compare slugs for special pages
416
537
  : prevCategory !== String(currentPageId); // Compare IDs otherwise
417
- if ((prevCategory && isDifferentCategory && !isHomepage && !isProductPage)
418
- ||
419
- (isHomepage && !this.hasInfiniteScroll)) {
538
+ if ((prevCategory && isDifferentCategory && !isHomepage && !isProductPage) ||
539
+ (isHomepage && !this.hasInfiniteScroll)) {
420
540
  this.removeScrollRestorationSession();
421
541
  this.switchToNormalBehavior = true;
422
542
  return false;
@@ -460,7 +580,9 @@ const SallaProductsList = class {
460
580
  return ['json', 'selected', 'related', 'landing-page', 'recently'].includes(this.getSource());
461
581
  }
462
582
  getSourceValue() {
463
- return this.currentCategoryIdFilter ? this.currentCategoryIdFilter : Helper.getProductsSourceValue(this.source, this.sourceValue);
583
+ return this.currentCategoryIdFilter
584
+ ? this.currentCategoryIdFilter
585
+ : Helper.getProductsSourceValue(this.source, this.sourceValue);
464
586
  }
465
587
  logFetchError(errorPhase, error, fetchPath, http, response) {
466
588
  try {
@@ -471,7 +593,9 @@ const SallaProductsList = class {
471
593
  source: this.getSource(),
472
594
  sourceValue: typeof sourceValue === 'string' && sourceValue.length > 200
473
595
  ? `${sourceValue.slice(0, 200)}…`
474
- : Array.isArray(sourceValue) ? { length: sourceValue.length } : sourceValue,
596
+ : Array.isArray(sourceValue)
597
+ ? { length: sourceValue.length }
598
+ : sourceValue,
475
599
  pageIndex: this.infiniteScroll?.pageIndex,
476
600
  fetchPath,
477
601
  httpStatus: http?.status,
@@ -488,7 +612,9 @@ const SallaProductsList = class {
488
612
  : {}),
489
613
  });
490
614
  }
491
- catch { /* analytics */ }
615
+ catch {
616
+ /* analytics */
617
+ }
492
618
  }
493
619
  appendDataLayer(data) {
494
620
  if (typeof dataLayer !== 'object' || !Array.isArray(dataLayer)) {
@@ -496,29 +622,29 @@ const SallaProductsList = class {
496
622
  return;
497
623
  }
498
624
  dataLayer.push({
499
- "event": "impressions",
500
- "ecommerce": {
501
- "currencyCode": salla.config.currency().code,
625
+ event: 'impressions',
626
+ ecommerce: {
627
+ currencyCode: salla.config.currency().code,
502
628
  // "event_id":"", // todo
503
- "impressions": data.map((product, index) => {
629
+ impressions: data.map((product, index) => {
504
630
  return {
505
- "id": product.id,
506
- "name": product.name,
507
- "price": product.price,
508
- "brand": product.brand?.name || '',
509
- "quantity": product.quantity,
631
+ id: product.id,
632
+ name: product.name,
633
+ price: product.price,
634
+ brand: product.brand?.name || '',
635
+ quantity: product.quantity,
510
636
  // "variant": "",
511
- "categories": [
637
+ categories: [
512
638
  {
513
- "name": product.category?.name || salla.config.get('page.title'),
514
- "id": salla.config.get('page.id')
515
- }
639
+ name: product.category?.name || salla.config.get('page.title'),
640
+ id: salla.config.get('page.id'),
641
+ },
516
642
  ],
517
- "category": product.category?.name || salla.config.get('page.title'),
518
- 'position': index + 1
643
+ category: product.category?.name || salla.config.get('page.title'),
644
+ position: index + 1,
519
645
  };
520
- })
521
- }
646
+ }),
647
+ },
522
648
  });
523
649
  }
524
650
  initiateInfiniteScroll() {
@@ -531,7 +657,7 @@ const SallaProductsList = class {
531
657
  history: false,
532
658
  nextPage: this.nextPage,
533
659
  scrollThreshold: shouldApplyManualLoad ? false : this.autoload ? 100 : false,
534
- loadOnScroll: shouldApplyManualLoad ? false : this.autoload
660
+ loadOnScroll: shouldApplyManualLoad ? false : this.autoload,
535
661
  }, true);
536
662
  this.infiniteScroll.pageIndex = this.page;
537
663
  this.infiniteScroll?.on('request', () => {
@@ -642,11 +768,13 @@ const SallaProductsList = class {
642
768
  }
643
769
  getInitialData() {
644
770
  this.loading();
645
- return salla.api.withoutNotifier(() => salla.product.api.fetch({
771
+ return salla.api.withoutNotifier(() => salla.product.api
772
+ .fetch({
646
773
  source: Helper.getApiSource(this.getSource()),
647
774
  source_value: this.getSourceValue(),
648
- limit: this.limit
649
- }).then(async (response) => {
775
+ limit: this.limit,
776
+ })
777
+ .then(async (response) => {
650
778
  if (!response.data.length) {
651
779
  this.showPlaceholder = true;
652
780
  this.placeholderLoader && this.placeholderLoader.remove();
@@ -670,9 +798,65 @@ const SallaProductsList = class {
670
798
  async loadMore() {
671
799
  this.infiniteScroll?.loadNextPage();
672
800
  }
801
+ /**
802
+ * Get the currently selected products.
803
+ */
804
+ async getSelected() {
805
+ return {
806
+ ids: Array.from(this.selectedProducts.keys()),
807
+ products: Array.from(this.selectedProducts.values()),
808
+ };
809
+ }
810
+ /**
811
+ * Get all products currently rendered in the list (works whether selection
812
+ * is enabled or not). Useful to gather ids for "share all".
813
+ */
814
+ async getLoadedProducts() {
815
+ const products = [];
816
+ if (!this.wrapper) {
817
+ return products;
818
+ }
819
+ for (let i = 0; i < this.wrapper.children.length; i++) {
820
+ const item = this.wrapper.children[i];
821
+ item?.product && products.push(item.product);
822
+ }
823
+ return products;
824
+ }
825
+ /**
826
+ * Select all currently rendered products.
827
+ */
828
+ async selectAll() {
829
+ if (!this.selectable || !this.wrapper) {
830
+ return;
831
+ }
832
+ for (let i = 0; i < this.wrapper.children.length; i++) {
833
+ const item = this.wrapper.children[i];
834
+ if (item?.product) {
835
+ this.selectedProducts.set(item.product.id, item.product);
836
+ item.classList.add('s-products-list-item-selected');
837
+ const checkbox = item.querySelector('.s-products-list-select-checkbox');
838
+ checkbox && (checkbox.checked = true);
839
+ }
840
+ }
841
+ this.emitSelection();
842
+ }
843
+ /**
844
+ * Clear the current selection.
845
+ */
846
+ async clearSelection() {
847
+ this.selectedProducts.clear();
848
+ if (this.wrapper) {
849
+ this.wrapper
850
+ .querySelectorAll('.s-products-list-select-checkbox')
851
+ .forEach((checkbox) => (checkbox.checked = false));
852
+ this.wrapper
853
+ .querySelectorAll('.s-products-list-item-selected')
854
+ .forEach(item => item.classList.remove('s-products-list-item-selected'));
855
+ }
856
+ this.emitSelection();
857
+ }
673
858
  componentWillLoad() {
674
- return salla.onReady()
675
- .then(async () => {
859
+ return salla.onReady().then(async () => {
676
860
  this.hasCustomComponent = !!customElements.get(this.productCardComponent);
677
861
  this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());
678
862
  this.hasInfiniteScroll = !this.isAuxiliaryProductsListSource() && !this.limit;
@@ -752,15 +936,16 @@ const SallaProductsList = class {
752
936
  });
753
937
  }
754
938
  else {
755
- console.error("No response received after getInitialData.");
939
+ console.error('No response received after getInitialData.');
756
940
  }
757
941
  })
758
942
  .catch(error => {
759
- console.error("Error during initial data fetch:", error);
943
+ console.error('Error during initial data fetch:', error);
760
944
  });
761
945
  }
762
946
  else {
763
- this.firstPageResponse && (await this.handleResponse(this.firstPageResponse, false)).forEach(card => this.wrapper.append(card));
947
+ this.firstPageResponse &&
948
+ (await this.handleResponse(this.firstPageResponse, false)).forEach(card => this.wrapper.append(card));
764
949
  }
765
950
  }
766
951
  canRender() {
@@ -771,16 +956,18 @@ const SallaProductsList = class {
771
956
  return '';
772
957
  }
773
958
  if (this.showPlaceholder) {
774
- return h("div", { class: "s-products-list-placeholder" }, h("span", { innerHTML: ShoppingBag }), h("p", null, this.placeholderText));
959
+ return (h("div", { class: "s-products-list-placeholder" }, h("span", { innerHTML: ShoppingBag }), h("p", null, this.placeholderText)));
775
960
  }
776
961
  return (h(Host, { class: "s-products-list" }, h("div", { class: {
777
- "s-products-list-wrapper": true,
962
+ 's-products-list-wrapper': true,
778
963
  's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,
779
964
  's-products-list-vertical-cards': !this.horizontalCards && !this.rowCards && !this.filtersResults,
780
965
  's-products-list-row-cards': this.rowCards,
781
966
  's-products-list-compact-cards': this.compactCards,
782
967
  's-products-list-filters-results': this.filtersResults,
783
- }, ref: wrapper => this.wrapper = wrapper }), h("div", { class: "s-infinite-scroll-status", ref: status => this.status = status }, h("p", { class: "s-infinite-scroll-last infinite-scroll-last s-hidden" }, this.endOfText), h("p", { class: "s-infinite-scroll-error infinite-scroll-error s-hidden" }, this.failedLoadMore)), this.autoload && h("div", { class: "s-products-list-loading-wrapper", style: { "display": "none" }, ref: loader => this.loader = loader }, h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" })), this.hasInfiniteScroll && this.nextPage && !this.autoload ? (h("div", { class: "s-infinite-scroll-wrapper", style: { "display": "none" }, ref: loadMoreWrapper => this.loadMoreWrapper = loadMoreWrapper }, h("button", { onClick: () => this.loadMore(), class: "s-infinite-scroll-btn s-button-btn s-button-primary" }, h("span", { class: "s-button-text s-infinite-scroll-btn-text" }, this.loadMoreText ? this.loadMoreText : salla.lang.get('common.elements.load_more')), h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader", ref: btnLoader => this.btnLoader = btnLoader, style: { "display": "none" } })))) : ""));
968
+ }, ref: wrapper => (this.wrapper = wrapper) }), h("div", { class: "s-infinite-scroll-status", ref: status => (this.status = status) }, h("p", { class: "s-infinite-scroll-last infinite-scroll-last s-hidden" }, this.endOfText), h("p", { class: "s-infinite-scroll-error infinite-scroll-error s-hidden" }, this.failedLoadMore)), this.autoload && (h("div", { class: "s-products-list-loading-wrapper", style: { display: 'none' }, ref: loader => (this.loader = loader) }, h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" }))), this.hasInfiniteScroll && this.nextPage && !this.autoload ? (h("div", { class: "s-infinite-scroll-wrapper", style: { display: 'none' }, ref: loadMoreWrapper => (this.loadMoreWrapper = loadMoreWrapper) }, h("button", { onClick: () => this.loadMore(), class: "s-infinite-scroll-btn s-button-btn s-button-primary" }, h("span", { class: "s-button-text s-infinite-scroll-btn-text" }, this.loadMoreText
969
+ ? this.loadMoreText
970
+ : salla.lang.get('common.elements.load_more')), h("span", { class: "s-button-loader s-button-loader-center s-infinite-scroll-btn-loader", ref: btnLoader => (this.btnLoader = btnLoader), style: { display: 'none' } })))) : ('')));
784
971
  }
785
972
  init() {
786
973
  this.initiateInfiniteScroll();
@@ -797,14 +984,19 @@ const SallaProductsList = class {
797
984
  let title = Helper.getPageTitleForSource(source);
798
985
  try {
799
986
  if (this.getSource() === 'search') {
800
- title = salla.lang.get('common.elements.search_about', { 'word': this.getSourceValue() });
987
+ title = salla.lang.get('common.elements.search_about', { word: this.getSourceValue() });
801
988
  }
802
989
  else if (!title) {
803
990
  let catId = this.parsedFilters.category_id || this.getSourceValue()[0];
804
991
  // get the first filter that its key is category_id, then get the value when filter.value.*.key==catId
805
- title = response.filters?.find(filter => filter.key === 'category_id')?.values?.find(cat => cat.key === catId)?.value ?? '';
992
+ title =
993
+ response.filters
994
+ ?.find(filter => filter.key === 'category_id')
995
+ ?.values?.find(cat => cat.key === catId)?.value ?? '';
806
996
  }
807
- title += (title ? ' - ' : '') + salla.lang.choice('blocks.header.products_count', response.data?.length);
997
+ title +=
998
+ (title ? ' - ' : '') +
999
+ salla.lang.choice('blocks.header.products_count', response.data?.length);
808
1000
  if (response.data.length === 15) {
809
1001
  title = title.replace(response.data.length, salla.lang.get('common.elements.more_than') + ' ' + response.data.length);
810
1002
  }
@@ -843,6 +1035,9 @@ const SallaProductsList = class {
843
1035
  return productCardsView;
844
1036
  }
845
1037
  get host() { return getElement(this); }
1038
+ static get watchers() { return {
1039
+ "selectable": ["onSelectableChanged"]
1040
+ }; }
846
1041
  };
847
1042
  SallaProductsList.style = sallaProductsListCss;
848
1043
 
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { r as registerInstance, h } from './index-a4x9urdK.js';
4
+ import { r as registerInstance, h } from './index-D2yBy7Jh.js';
5
5
 
6
6
  const sallaProgressBarCss = "";
7
7
 
@@ -1,9 +1,9 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-a4x9urdK.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-D2yBy7Jh.js';
5
5
  import { S as SIiPhoneX } from './iphone-x-CciN5Q_x.js';
6
- import { S as SIMail } from './mail-DLNIOD9t.js';
6
+ import { e as email } from './mail-DzAIgzdz.js';
7
7
  import { S as SICancel } from './cancel-8Tsmrwno.js';
8
8
 
9
9
  var CelebrationIcon = `<!-- Generated by IcoMoon.io -->
@@ -210,7 +210,7 @@ const SallaQuickOrder = class {
210
210
  ? this.confirmPayButtonTitle : this.expanded ? h("i", { innerHTML: SICancel }) : this.confirmPayButtonTitle)), h("form", { onSubmit: (e) => this.submit(e), class: 's-quick-order-expandable ' + (this.expanded ? 's-quick-order-shown' : '') }, Salla.config.isGuest() &&
211
211
  [
212
212
  h("div", { class: "s-form-group" }, h("span", { innerHTML: PortraitIcon }), 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) })),
213
- h("div", { class: "s-quick-order-flex-input" }, h("div", { class: "s-form-group" }, h("span", { innerHTML: SIiPhoneX }), h("salla-tel-input", { ref: el => (this.phoneInput = el) })), h("div", { class: "s-form-group" }, h("span", { innerHTML: SIMail }), 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) }))),
213
+ h("div", { class: "s-quick-order-flex-input" }, h("div", { class: "s-form-group" }, h("span", { innerHTML: SIiPhoneX }), h("salla-tel-input", { ref: el => (this.phoneInput = el) })), h("div", { class: "s-form-group" }, h("span", { innerHTML: email }), 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) }))),
214
214
  ], this.isTermsRequired && (h("label", { htmlFor: "terms", class: "s-quick-order-terms" }, h("input", { type: "checkbox", required: true, name: 'terms', id: 'terms', ref: el => (this.termsInput = el), onChange: () => (this.termsChecked = this.termsInput.checked), class: "s-checkbox" }), h("span", { class: "s-form-label" }, " ", h("div", { innerHTML: this.formatAgreementText(this.agreementText, 150) }, this.agreementText.length > 150 && (h("salla-button", { shape: "link", onClick: () => this.agreementModal.open() }, this.agreementShowText))), " "))), h("salla-button", { type: "submit", color: this.getBtnColor(), width: "wide", ref: el => (this.submitBtn = el) }, this.payButtonTitle)), h("salla-modal", { "modal-title": this.agreementModalHead, ref: modal => (this.agreementModal = modal) }, h("article", { innerHTML: this.agreementText })))));
215
215
  }
216
216
  componentDidLoad() {
@@ -1,13 +1,13 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { r as registerInstance, h, H as Host, a as getElement } from './index-a4x9urdK.js';
4
+ import { r as registerInstance, h, H as Host, a as getElement } from './index-D2yBy7Jh.js';
5
5
  import { W as WishListIcon } from './star-ZT7ehBBk.js';
6
6
  import { C as CheckCircle2 } from './check-circle2-BV4kqbdL.js';
7
7
  import { H as Helper } from './Helper-BXj4f_Qj.js';
8
8
  import { I as ImageIcon } from './image-C-tzSDxw.js';
9
9
  import { W as WhatsappIcon } from './whatsapp2-CgR-T_ZS.js';
10
- import { S as SIMail } from './mail-DLNIOD9t.js';
10
+ import { e as email } from './mail-DzAIgzdz.js';
11
11
  import { a as anime } from './anime.es-CgtvEd63.js';
12
12
 
13
13
  var ShippingFast = `<!-- Generated by IcoMoon.io -->
@@ -434,7 +434,7 @@ const SallaRatingModal = class {
434
434
  ? h("div", { class: "rating-outer-form s-rating-modal-step-wrap s-rating-modal-step s-rating-modal-hidden", "data-type": "shipping" }, h("input", { type: "hidden", name: "shipping_company_id", value: this.order.shipping.company.id }), this.order.shipping.company.logo
435
435
  ? h("div", { class: "s-rating-modal-rounded-icon" }, h("img", { src: this.order.shipping.company.logo, class: "s-rating-modal-shipping-logo", alt: this.order.shipping.company.name }))
436
436
  : h("span", { class: "s-rating-modal-icon", innerHTML: ShippingFast }), h("div", { class: "s-rating-modal-title" }, " ", `${salla.lang.get('pages.rating.rate_shipping')} ${this.order.shipping.company.name}`), h("div", { class: "s-rating-modal-stars-company" }, h("salla-rating-stars", { withLabel: true, size: "large" })), h("textarea", { name: "comment", class: "s-rating-modal-comment", placeholder: salla.lang.get('pages.rating.write_shipping_rate') }), h("small", { class: "s-rating-modal-validation-msg" }))
437
- : '', h("div", { class: "s-rating-modal-thanks s-rating-modal-hidden", ref: el => this.thanksTab = el }, h("span", { class: "s-rating-modal-icon", innerHTML: CheckCircle2 }), h("h3", { class: "s-rating-modal-thanks-title" }, salla.lang.get('pages.rating.thanks')), h("div", { class: "s-rating-modal-thanks-msg", innerHTML: this.order.thanks_message }), 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')) ? h("div", { class: "s-rating-modal-contact" }, h("p", null, this.contactUsLabel), h("div", { class: "s-rating-modal-contact-icons" }, salla.config.get('store.contacts.whatsapp') && h("span", { onClick: () => this.handleSendWhatsApp(), innerHTML: WhatsappIcon }), salla.config.get('store.contacts.email') && h("span", { onClick: () => this.handleSendEmail(), innerHTML: SIMail }))) : '', h("div", { class: "s-rating-modal-footer" }, 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 ? h("ul", { class: "s-rating-modal-dots" }, [0, 1, 2].slice(0, this.stepsCount).map((v) => h("li", { key: v, class: 's-rating-modal-bg-gray s-rating-modal-step-dot' }))) : '', h("salla-button", { "loader-position": 'center', ref: el => this.nextBtn = el, onClick: () => this.submit() }, salla.lang.get('common.elements.next')))]
437
+ : '', h("div", { class: "s-rating-modal-thanks s-rating-modal-hidden", ref: el => this.thanksTab = el }, h("span", { class: "s-rating-modal-icon", innerHTML: CheckCircle2 }), h("h3", { class: "s-rating-modal-thanks-title" }, salla.lang.get('pages.rating.thanks')), h("div", { class: "s-rating-modal-thanks-msg", innerHTML: this.order.thanks_message }), 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')) ? h("div", { class: "s-rating-modal-contact" }, h("p", null, this.contactUsLabel), h("div", { class: "s-rating-modal-contact-icons" }, salla.config.get('store.contacts.whatsapp') && h("span", { onClick: () => this.handleSendWhatsApp(), innerHTML: WhatsappIcon }), salla.config.get('store.contacts.email') && h("span", { onClick: () => this.handleSendEmail(), innerHTML: email }))) : '', h("div", { class: "s-rating-modal-footer" }, 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 ? h("ul", { class: "s-rating-modal-dots" }, [0, 1, 2].slice(0, this.stepsCount).map((v) => h("li", { key: v, class: 's-rating-modal-bg-gray s-rating-modal-step-dot' }))) : '', h("salla-button", { "loader-position": 'center', ref: el => this.nextBtn = el, onClick: () => this.submit() }, salla.lang.get('common.elements.next')))]
438
438
  : h("salla-placeholder", { alignment: "center" }))));
439
439
  }
440
440
  }