@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
@@ -4810,6 +4810,8 @@ const sallaBulletDeliveryCss = "@supports (interpolate-size: allow-keywords) and
4810
4810
 
4811
4811
  const BRANCH_SEARCH_DEBOUNCE_MS = 1000;
4812
4812
  const GEOLOCATION_TIMEOUT = 10000;
4813
+ /** Final fallback center used only if `user.default_geo_location` is absent (Riyadh — matches checkout map-page). */
4814
+ const DEFAULT_MAP_CENTER = { lat: 24.7756042, lng: 46.7360729 };
4813
4815
  const DEBUG_KEY = 'salla-bullet-delivery-debug';
4814
4816
  const OVERRIDE_IP_KEY = 'salla-bullet-delivery-override-ip';
4815
4817
  function log(message, data) {
@@ -4862,6 +4864,8 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
4862
4864
  /** True after saved addresses have been loaded (lazy: only when address tab is shown). */
4863
4865
  this.savedAddressesLoaded = false;
4864
4866
  this.gmapRef = null;
4867
+ /** Guards against re-prompting for geolocation each time the map (re)initializes within one flow. */
4868
+ this.autoGeolocationTriggered = false;
4865
4869
  // Core state
4866
4870
  this.activeTab = "address";
4867
4871
  this.isLoggedIn = false;
@@ -5003,6 +5007,8 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5003
5007
  shortAddress: detail.place?.placeId ?? detail.place?.place_id ?? undefined,
5004
5008
  formattedAddress: detail.place?.formattedAddress ?? detail.place?.formatted_address ?? undefined,
5005
5009
  };
5010
+ // Bias autocomplete results toward the currently selected location.
5011
+ this.updateLocationBias();
5006
5012
  setTimeout(() => {
5007
5013
  const marker = this.gmapRef?.locationMarker;
5008
5014
  if (marker)
@@ -5014,6 +5020,25 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5014
5020
  if (this.gmapRef && typeof this.gmapRef.resize === 'function') {
5015
5021
  this.gmapRef.resize();
5016
5022
  }
5023
+ this.updateLocationBias();
5024
+ // Auto-locate the customer so the map never opens "empty" — matches checkout map-page
5025
+ // (getCurrentLocation(true) pans to the resolved position). Skip if a location is already set
5026
+ // (e.g. returning from the confirm step). Falls back silently to mapInitialCenter if denied.
5027
+ if (!this.autoGeolocationTriggered && !this.hasMapLocation() && this.gmapRef) {
5028
+ const getCurrentLocation = this.gmapRef.getCurrentLocation;
5029
+ if (typeof getCurrentLocation === 'function') {
5030
+ this.autoGeolocationTriggered = true;
5031
+ try {
5032
+ const result = getCurrentLocation.call(this.gmapRef, true);
5033
+ if (result && typeof result.catch === 'function') {
5034
+ result.catch((err) => log('Auto geolocation failed', err));
5035
+ }
5036
+ }
5037
+ catch (err) {
5038
+ log('Auto geolocation threw', err);
5039
+ }
5040
+ }
5041
+ }
5017
5042
  };
5018
5043
  /**
5019
5044
  * Submit add-address form: create address via API then switch back to list.
@@ -5137,6 +5162,9 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5137
5162
  get isRequired() {
5138
5163
  return !!Salla.config.get("store.settings.bullet_delivery.settings.is_required");
5139
5164
  }
5165
+ get isSupportsDelivery() {
5166
+ return !!Salla.config.get("store.settings.bullet_delivery.supports_delivery");
5167
+ }
5140
5168
  get isMobileApp() {
5141
5169
  return Salla.config.isMobileApp();
5142
5170
  }
@@ -5245,6 +5273,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5245
5273
  }
5246
5274
  resetState() {
5247
5275
  this.viewMode = "main";
5276
+ this.autoGeolocationTriggered = false;
5248
5277
  this.selectedCountry = null;
5249
5278
  this.selectedRegion = null;
5250
5279
  this.selectedCity = null;
@@ -5322,12 +5351,27 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5322
5351
  // only when it represents a valid session-style address.
5323
5352
  return hasSessionAddressIntent(intent);
5324
5353
  }
5354
+ /**
5355
+ * Whether the store still supports the delivery method captured in a stored
5356
+ * intent. Shared by the cart pill and the cart-submit gate so an unsupported
5357
+ * method (e.g. a remembered delivery address in a now pickup-only store) is
5358
+ * never treated as a valid/complete selection.
5359
+ */
5360
+ isIntentMethodSupported(intent) {
5361
+ if (intent.type === "branch")
5362
+ return this.supportsPickup;
5363
+ if (intent.type === "address")
5364
+ return this.isSupportsDelivery;
5365
+ return false;
5366
+ }
5325
5367
  hasCompleteIntentForLoggedInUser() {
5326
5368
  if (this.isGuestUser())
5327
5369
  return false;
5328
5370
  const intent = this.getStoredIntent();
5329
5371
  if (!intent)
5330
5372
  return false;
5373
+ if (!this.isIntentMethodSupported(intent))
5374
+ return false;
5331
5375
  if (intent.type === "address")
5332
5376
  return !!intent.address_id;
5333
5377
  if (intent.type === "branch")
@@ -5905,6 +5949,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5905
5949
  async handleAddNewAddress() {
5906
5950
  this.viewMode = "add-address";
5907
5951
  this.mapLocationData = null;
5952
+ this.autoGeolocationTriggered = false;
5908
5953
  this.fetchAddressToken();
5909
5954
  const intent = this.getStoredIntent();
5910
5955
  const sessionCountryId = getIntentCountryId(intent);
@@ -5927,6 +5972,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5927
5972
  this.mapLocationData = null;
5928
5973
  this.mapStep = 'map';
5929
5974
  this.addressDescription = '';
5975
+ this.autoGeolocationTriggered = false;
5930
5976
  }
5931
5977
  // ─── Map methods ───
5932
5978
  async fetchAddressToken() {
@@ -5951,6 +5997,15 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5951
5997
  this.loadingToken = false;
5952
5998
  }
5953
5999
  }
6000
+ /** Bias autocomplete toward the current selection (or the initial center) — mirrors checkout's map-page. */
6001
+ updateLocationBias() {
6002
+ if (!this.gmapRef)
6003
+ return;
6004
+ const center = this.hasMapLocation()
6005
+ ? { lat: this.mapLocationData.lat, lng: this.mapLocationData.lng }
6006
+ : this.mapInitialCenter;
6007
+ this.gmapRef.autocompleteLocationBias = { center, radius: 500000 };
6008
+ }
5954
6009
  hasMapLocation() {
5955
6010
  return this.mapLocationData?.lat != null && this.mapLocationData?.lng != null;
5956
6011
  }
@@ -5961,6 +6016,27 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
5961
6016
  get isMapModeAvailable() {
5962
6017
  return this.isMapSettingEnabled && !!salla.config.get('store.settings.keys.maps') && !!this.addressToken;
5963
6018
  }
6019
+ /** Center shown before geolocation resolves — the customer's IP-based default (falls back to Riyadh). */
6020
+ get mapInitialCenter() {
6021
+ const geo = salla.config.get('user.default_geo_location');
6022
+ // Coerce defensively: config may arrive as strings, blank/whitespace, NaN, or out-of-range
6023
+ // values. Reject blanks before coercion (Number('') === 0) and validate lat/lng ranges so we
6024
+ // never feed (0,0) or an invalid point to the map; otherwise fall back to the default center.
6025
+ const lat = this.toCoordinate(geo?.lat);
6026
+ const lng = this.toCoordinate(geo?.lng);
6027
+ const isValid = lat != null && lng != null &&
6028
+ lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
6029
+ return isValid ? { lat, lng } : DEFAULT_MAP_CENTER;
6030
+ }
6031
+ /** Parse a config coordinate to a finite number, treating blank/whitespace strings as missing. */
6032
+ toCoordinate(value) {
6033
+ if (typeof value === 'string' && value.trim() === '')
6034
+ return null;
6035
+ if (value == null)
6036
+ return null;
6037
+ const num = Number(value);
6038
+ return Number.isFinite(num) ? num : null;
6039
+ }
5964
6040
  // ─── End Map methods ───
5965
6041
  /**
5966
6042
  * Build address/location payload from guest-form state (same fields as add-address).
@@ -6531,10 +6607,10 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
6531
6607
  getCartViewConfig(intent) {
6532
6608
  if (!intent || !Salla.url.is_page("cart"))
6533
6609
  return null;
6610
+ if (!this.isIntentMethodSupported(intent))
6611
+ return null;
6534
6612
  const isBranch = intent.type === "branch";
6535
6613
  const isAddress = intent.type === "address";
6536
- if ((isBranch && !this.supportsPickup) || (!isBranch && !isAddress))
6537
- return null;
6538
6614
  return {
6539
6615
  title: isBranch
6540
6616
  ? Salla.lang.get("pages.checkout.pickup_option")
@@ -6584,13 +6660,15 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
6584
6660
  return wrapper;
6585
6661
  }
6586
6662
  renderTabs() {
6587
- // Show tabs only when pickup is supported; otherwise delivery-only view with no tabs
6663
+ // Show tabs only when pickup is supported; otherwise delivery-only view with no tabs.
6664
+ // The pickup tab is gated by this same `supportsPickup` check, while the delivery
6665
+ // tab is shown only when bullet delivery supports delivery (`isSupportsDelivery`).
6588
6666
  if (!this.supportsPickup)
6589
6667
  return null;
6590
- return (h$4("div", { class: "s-bullet-delivery-tabs" }, h$4("button", { type: "button", class: {
6668
+ return (h$4("div", { class: "s-bullet-delivery-tabs" }, this.isSupportsDelivery && (h$4("button", { type: "button", class: {
6591
6669
  "s-bullet-delivery-tab": true,
6592
6670
  "s-bullet-delivery-tab--active": this.activeTab === "address",
6593
- }, onClick: () => this.handleTabChange("address") }, h$4("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Location, "aria-hidden": "true" }), h$4("span", null, Salla.lang.get("mobile_app.strings.delivery"))), h$4("button", { type: "button", class: {
6671
+ }, onClick: () => this.handleTabChange("address") }, h$4("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Location, "aria-hidden": "true" }), h$4("span", null, Salla.lang.get("mobile_app.strings.delivery")))), h$4("button", { type: "button", class: {
6594
6672
  "s-bullet-delivery-tab": true,
6595
6673
  "s-bullet-delivery-tab--active": this.activeTab === "branch",
6596
6674
  }, onClick: () => this.handleTabChange("branch") }, h$4("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Store, "aria-hidden": "true" }), h$4("span", null, Salla.lang.get("mobile_app.strings.pickup")))));
@@ -6743,7 +6821,13 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
6743
6821
  }
6744
6822
  renderMapSection() {
6745
6823
  const isSA = isSaudiArabia(this.selectedCountry?.code ?? '');
6746
- return (h$4("div", { class: "s-bullet-delivery-map-container" }, h$4("gmap-map", { ref: (el) => (this.gmapRef = el), zoom: 16, "map-id": "DEMO_MAP_ID", "enable-autocomplete": true, "enable-geolocation": true, "show-location-marker": true, language: Salla.lang.getLocale?.() ?? document.documentElement.lang ?? 'ar', "geolocation-button-label": Salla.lang.get('pages.checkout.current_location'), "autocomplete-placeholder": Salla.lang.get('pages.checkout.search_for_address'), "autocomplete-hint": isSA ? Salla.lang.get('pages.checkout.short_address_format_validation') : undefined, "autocomplete-country": this.selectedCountry?.code?.toLowerCase(), "autocomplete-resolve": false, "autocomplete-auth-token": this.addressToken, "location-marker-background": "#4285F4", "location-marker-border-color": "#1967D2", "location-marker-glyph-color": "#FFFFFF", "location-marker-scale": 1.3, "onGmap-location-changed": this.handleMapLocationChanged, "onGmap-ready": this.handleMapReady })));
6824
+ const loc = this.mapLocationData;
6825
+ const hasLoc = loc?.lat != null && loc?.lng != null;
6826
+ // Resolve the center once (the getter reads salla.config) and reuse it for the marker so the
6827
+ // map never opens "empty": before a selection the marker sits on the IP/Riyadh default and is
6828
+ // dragged/replaced once auto-geolocation or the user picks a real position.
6829
+ const center = hasLoc ? { lat: loc.lat, lng: loc.lng } : this.mapInitialCenter;
6830
+ return (h$4("div", { class: "s-bullet-delivery-map-container" }, h$4("gmap-map", { ref: (el) => (this.gmapRef = el), center: center, zoom: 16, "min-zoom": 4, "max-zoom": 21, "map-id": "DEMO_MAP_ID", "enable-autocomplete": true, "enable-geolocation": true, "show-location-marker": true, "location-marker-position": hasLoc ? { lat: loc.lat, lng: loc.lng, accuracy: 50 } : { ...center, accuracy: 50 }, language: Salla.lang.getLocale?.() ?? document.documentElement.lang ?? 'ar', "geolocation-button-label": Salla.lang.get('pages.checkout.current_location'), "autocomplete-placeholder": Salla.lang.get('pages.checkout.search_for_address'), "autocomplete-hint": isSA ? Salla.lang.get('pages.checkout.short_address_format_validation') : undefined, "autocomplete-country": this.selectedCountry?.code?.toLowerCase(), "autocomplete-resolve": false, "autocomplete-auth-token": this.addressToken, "location-marker-background": "#4285F4", "location-marker-border-color": "#1967D2", "location-marker-glyph-color": "#FFFFFF", "location-marker-scale": 1.3, "onGmap-location-changed": this.handleMapLocationChanged, "onGmap-ready": this.handleMapReady })));
6747
6831
  }
6748
6832
  renderAddressConfirmation() {
6749
6833
  const address = this.mapLocationData?.formattedAddress ?? '';
@@ -38,7 +38,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
38
38
  super();
39
39
  this.__registerHost();
40
40
  this.defaultEvent = "gifting:open";
41
- this.selectImageForYourGift = salla.lang.get('blocks.buy_as_gift.select_image_or_upload');
41
+ this.selectImageForYourGift = salla.lang.get('blocks.buy_as_gift.select_image_for_your_gift');
42
42
  this.currentStep = 1;
43
43
  this.showCalendar = false;
44
44
  this.showGiftText = false;
@@ -74,6 +74,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
74
74
  this.timeZone = null;
75
75
  this.receiverCountryCode = salla.config.get('store.scope.countries')?.[0] || salla.config.get('store.store_country') || 'SA';
76
76
  this.hostId = `salla-gifting-${Math.random().toString(36).slice(2, 10)}`;
77
+ this.disableClass = this.gift?.show_image_upload ? '' : 'pointer-events-none';
77
78
  /**
78
79
  * The form selector to be used to get the form data
79
80
  */
@@ -199,6 +200,13 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
199
200
  salla.event.dispatch('login::open', { withoutReload: true });
200
201
  return;
201
202
  }
203
+ this.currentStep = 1;
204
+ this.parentClass = 'is-current-step-1';
205
+ this.step2Animated = false;
206
+ this.selectedText = undefined;
207
+ this.selectedGiftTextOption = undefined;
208
+ this.uploadedImage = undefined;
209
+ this.selectedImage = undefined;
202
210
  await this.modal.open();
203
211
  // Determine the appropriate method to call based on the `physicalProducts` flag
204
212
  const giftDetailsMethod = this.productId ? () => salla.product.getGiftProductDetails(this.productId) : () => salla.cart.getGiftCartDetails();
@@ -206,6 +214,20 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
206
214
  .then((response) => {
207
215
  this.gift = response.data;
208
216
  this.senderName = this.gift.sender_name;
217
+ this.disableClass = this.gift?.show_image_upload ? '' : 'pointer-events-none';
218
+ if (!this.gift.show_texts) {
219
+ this.selectedGiftTextOption = undefined;
220
+ this.selectedText = undefined;
221
+ }
222
+ if (!this.gift.show_images) {
223
+ this.selectedImage = undefined;
224
+ this.uploadedImage = undefined;
225
+ }
226
+ if (this.skipStep1()) {
227
+ this.currentStep = 2;
228
+ this.parentClass = 'is-current-step-2';
229
+ this.step2Animated = true;
230
+ }
209
231
  })
210
232
  .catch(e => {
211
233
  this.hasError = true;
@@ -213,6 +235,9 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
213
235
  })
214
236
  .finally(() => this.modal.stopLoading());
215
237
  }
238
+ skipStep1() {
239
+ return !!this.gift && !this.gift.show_images && !this.gift.show_texts;
240
+ }
216
241
  /**
217
242
  *
218
243
  * Hide / close the gifting modal window
@@ -267,21 +292,12 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
267
292
  *
268
293
  * Go to the step 2
269
294
  */
270
- async goToStep2() {
271
- if (!this.selectedGiftTextOption) {
272
- this.textSelect.classList.add('s-form-has-error');
273
- this.customTextArea.classList.remove('s-form-has-error');
295
+ async goToStep2(withValidation = true) {
296
+ if (!this.step1Elems)
274
297
  return;
275
- }
276
- else if (this.selectedGiftTextOption == 'custom' && !this.selectedText) {
277
- this.textSelect.classList.remove('s-form-has-error');
278
- this.customTextArea.classList.add('s-form-has-error');
298
+ if (withValidation && !this.validateStep1()) {
279
299
  return;
280
300
  }
281
- else {
282
- this.textSelect.classList.remove('s-form-has-error');
283
- this.customTextArea.classList.remove('s-form-has-error');
284
- }
285
301
  this.setWrapperHeight(2, 600, 0);
286
302
  let stepNextAnime = new anime.timeline();
287
303
  stepNextAnime.add({
@@ -314,6 +330,23 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
314
330
  this.currentStep = 2;
315
331
  this.parentClass = `is-current-step-${this.currentStep}`;
316
332
  }
333
+ validateStep1() {
334
+ if (!this.gift?.show_texts)
335
+ return true;
336
+ if (!this.selectedGiftTextOption) {
337
+ this.textSelect?.classList.add('s-form-has-error');
338
+ this.customTextArea?.classList.remove('s-form-has-error');
339
+ return false;
340
+ }
341
+ else if (this.selectedGiftTextOption == 'custom' && !this.selectedText) {
342
+ this.textSelect?.classList.remove('s-form-has-error');
343
+ this.customTextArea?.classList.add('s-form-has-error');
344
+ return false;
345
+ }
346
+ this.textSelect?.classList.remove('s-form-has-error');
347
+ this.customTextArea?.classList.remove('s-form-has-error');
348
+ return true;
349
+ }
317
350
  /**
318
351
  *
319
352
  * Go to the step 1
@@ -356,7 +389,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
356
389
  this.parentClass = `is-current-step-${this.currentStep}`;
357
390
  }
358
391
  getFilepondPlaceholder() {
359
- return `<div class="s-gifting-filepond-placeholder"><span class="s-gifting-filepond-placeholder-icon">${Images}</span><p class="s-gifting-filepond-placeholder-text">${this.selectImageOrUpload ? this.selectImageOrUpload : ''}</p></div>`;
392
+ return `<div class="s-gifting-filepond-placeholder"><span class="s-gifting-filepond-placeholder-icon">${Images}</span><p class="s-gifting-filepond-placeholder-text">${this.selectImageOrUpload && this.gift.show_image_upload ? this.selectImageOrUpload : this.selectImageForYourGift}</p></div>`;
360
393
  }
361
394
  setPreview(image) {
362
395
  this.uploader?.classList.add('has-bg');
@@ -366,7 +399,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
366
399
  bg.style.backgroundImage = "url('" + image.url + "')";
367
400
  this.uploader?.querySelector('.filepond--root')?.appendChild(bg);
368
401
  this.uploadedImage = image.url;
369
- if (!!this.gift && this.gift.gift_images.length) {
402
+ if (!!this.gift && this.gift.gift_images?.length) {
370
403
  this.setWrapperHeight(1, 150, 0);
371
404
  }
372
405
  }
@@ -379,7 +412,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
379
412
  }
380
413
  handleTextAreaChange(event) {
381
414
  this.selectedText = event.target.value;
382
- this.customTextArea.classList.remove('s-form-has-error');
415
+ this.customTextArea?.classList.remove('s-form-has-error');
383
416
  }
384
417
  clearError(key) {
385
418
  if (this.errors?.[key]) {
@@ -530,13 +563,13 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
530
563
  }
531
564
  handleUploadImage(img) {
532
565
  this.uploadedImage = img;
533
- if (!!this.gift && this.gift.gift_images.length) {
566
+ if (!!this.gift && this.gift.gift_images?.length) {
534
567
  this.setWrapperHeight(1, 150, 0);
535
568
  }
536
569
  }
537
570
  handleRemoveImage() {
538
571
  this.uploadedImage = '';
539
- if (!!this.gift && this.gift.gift_images.length) {
572
+ if (!!this.gift && this.gift.gift_images?.length) {
540
573
  this.setWrapperHeight(1, 150, 0);
541
574
  }
542
575
  }
@@ -670,16 +703,18 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
670
703
  }
671
704
  render() {
672
705
  return [
673
- h("div", { key: 'db700f9ec96a6974f3b815bb017ebe97ae8fe5c0' }, h("salla-list-tile", { key: '1e2fd1c0b375c85fcd4af1ea071c36879e6913c5', class: this.generateClass() }, h("div", { key: 'a9d02c933bc13bf8765e7e91ce08b2c9495954e5', slot: "title" }, this.vertical ? h("span", { innerHTML: SIGiftSharing }) : '', h("h3", { key: '56bd850368806c6ed5770ea5f6b0339749a77dfa' }, !!this.widgetTitle ? this.widgetTitle : this.sectionTitle)), h("div", { key: 'fbb4940fd3e3578f2f5a479d9d44be8dfbda7e43', slot: "subtitle" }, h("div", { key: 'fb7e8532984fbfc6fd61c55a6d44d7cdbb4bc9a2' }, !!this.widgetSubtitle ? this.widgetSubtitle : this.sectionSubtitle)), h("div", { key: '04f27f1ddbfa0b06be111b6c3176fbda5ea6d43a', slot: "action" }, h("salla-button", { key: 'fe71a1a773e5275ede7d1b3ea535c330688028b7', color: "primary", fill: "outline", width: "wide", class: "s-gifting-widget-action", onClick: () => this.handleGiftButtonClick() }, h("slot", { key: 'd62127d30254df2d8add55e0e1dbcfefb686e359', name: "widget-btn-content" }, h("div", { key: '5ddbb695af142baf3bb6986627f97a7a7607eb31', class: "s-gifting-widget-action-content" }, h("span", { key: '7820fb6abd9d7a9c1035c0f80191a3ff2a4c5fe8', innerHTML: SIGiftSharing }), " \u00A0", h("span", { key: '2cfc69862d3d087375efaed3bcec0ff0c1587989' }, this.sectionBtnText)))))), h("salla-modal", { key: '32c19391248ba6186f43fea59493171079e7bf07', id: this.hostId, isLoading: true, class: "s-gifting-modal", width: "sm", ref: modal => this.modal = modal }, h("div", { key: 'e4b5829416314f25793158dae0c530b8057b4085', slot: "loading" }, h("div", { key: '6ee873add5868f105b7ec7291c2a8c8fc033c588', class: "s-gifting-skeleton" }, h("div", { key: '40aae38f8b2d62b434394811a3ef6d8bc00f6f32', class: "s-gifting-modal-header" }, h("salla-skeleton", { key: 'a652cd74a16d0db662ea4a518ebfab366a3c3899', type: 'circle', height: '5rem', width: '5rem' }), h("h2", { key: 'edb4a1477893246e98207aeba7bfb5af686f20b9', class: "s-gifting-modal-title" }, h("div", { key: '83ef942b15450cc59ad32d8c5b3ba43a32bcb29c', class: "s-gifting-modal-badge-wrapper" }, h("salla-skeleton", { key: 'd9041c777a2fa0aa7ffc752958c7441916a02f85', height: '15px', width: '150px' })))), h("div", { key: 'fe3bb9dad01becba87486c4886037fd67b059919', class: "s-gifting-skeleton-content" }, h("salla-skeleton", { key: '08bd8304b66264b70f6df68e64da3560a1f75461', height: '10px', width: '150px' }), h("salla-skeleton", { key: 'bbea0d7ff0c846897af2ef5d3696b252a2f4e662', height: '230px' }), h("salla-skeleton", { key: '8cb1fde02e31a1accabd2e26409983e7ba56eeb1', height: '10px', width: '150px' }), h("salla-skeleton", { key: 'f80a986b953278bac41505506adf8d611566a167', height: '30px' }), h("salla-skeleton", { key: 'f7eccce69b619de385872642e1fb62b2cf6c3082', height: '40px' })))), h("slot", { key: 'd299e46040193b441f8171d05e0048849e3df8d5', name: "header" }), !!this.hasError ?
706
+ h("div", { key: '7872fb48bbc18682b2dffec6e45469ed1f348cd2' }, h("salla-list-tile", { key: 'c1885fdb40f33d203b857de13644f43964570f71', class: this.generateClass() }, h("div", { key: '77bd3860e23af43f088ee96b74901e2048baaafc', slot: "title" }, this.vertical ? h("span", { innerHTML: SIGiftSharing }) : '', h("h3", { key: '72e2e4d99b227b48bdd1f13866c3eea874139096' }, !!this.widgetTitle ? this.widgetTitle : this.sectionTitle)), h("div", { key: '63c219936015b9d5ee3a8102dbbce748ce0e62c5', slot: "subtitle" }, h("div", { key: '4f31a0c50120697a9b96a2b77411d74f4efc5e66' }, !!this.widgetSubtitle ? this.widgetSubtitle : this.sectionSubtitle)), h("div", { key: '47f0c995ad0f921a2fdca1c8e5f0e25d897e1fb0', slot: "action" }, h("salla-button", { key: '40145bed2bc9464279d1ae16a358b5a30d255ffd', color: "primary", fill: "outline", width: "wide", class: "s-gifting-widget-action", onClick: () => this.handleGiftButtonClick() }, h("slot", { key: 'd5620606453e0af1a5186f84fa12e1f4957a9747', name: "widget-btn-content" }, h("div", { key: '038ff62e726de1800907f8a8c136a434c7c6d036', class: "s-gifting-widget-action-content" }, h("span", { key: '4e785b4e17db238b6bfeb7646709006c9a4502bb', innerHTML: SIGiftSharing }), " \u00A0", h("span", { key: '5965ed90aeaf684db53d3241a9287de290f10b4a' }, this.sectionBtnText)))))), h("salla-modal", { key: 'b150b2b29f751fa4db3bfff17c4e617eb7b6db5d', id: this.hostId, isLoading: true, class: "s-gifting-modal", width: "sm", ref: modal => this.modal = modal }, h("div", { key: '57167453738915bb235da0bc44498f66daaa9454', slot: "loading" }, h("div", { key: 'fd0eab2fd0d46a76dcd00511ec05366862d86d2c', class: "s-gifting-skeleton" }, h("div", { key: '6d2bb659ca06a2cadf203d83e4f5966a78bc5f01', class: "s-gifting-modal-header" }, h("salla-skeleton", { key: 'cb47841822cf9fed5b5c20664617ac52bad135ce', type: 'circle', height: '5rem', width: '5rem' }), h("h2", { key: 'e9823fc0c00a326b495e4e7e6ff6567f03d1423e', class: "s-gifting-modal-title" }, h("div", { key: '584d50ba2c1bec0fb8e530418be60fc8a0b9c2d8', class: "s-gifting-modal-badge-wrapper" }, h("salla-skeleton", { key: '493b5e6f9fa7a1d45fa52a6f3f4602e5737b9632', height: '15px', width: '150px' })))), h("div", { key: 'd33d22031f8cd6084a1c177ada6657a89ff45ad8', class: "s-gifting-skeleton-content" }, h("salla-skeleton", { key: '792e91cdcd7ede6896653fa147124cfcdc649a9f', height: '10px', width: '150px' }), h("salla-skeleton", { key: '88ca984320729528e2a3e7cab350a96202a81da6', height: '230px' }), h("salla-skeleton", { key: 'fad81ac6972eaa37766cb489d175516249afb5e6', height: '10px', width: '150px' }), h("salla-skeleton", { key: 'a4e82c29d7940b7af14af4251cc6f97e811be99a', height: '30px' }), h("salla-skeleton", { key: '6339a34ffc0deb925f69b5b0a0ed540d986e0a0b', height: '40px' })))), h("slot", { key: '8fd7cad6fbc2d73fb770ae75301f327906817c6f', name: "header" }), !!this.hasError ?
674
707
  h("salla-placeholder", { alignment: "center" }, h("span", { slot: "title" }, this.errorMessage || salla.lang.get('common.errors.empty_results')), h("span", { slot: "description" }, " "))
675
708
  :
676
709
  [
677
- h("div", { class: "s-gifting-modal-header" }, h("span", { class: "s-gifting-modal-icon" }, h("span", { innerHTML: SIGiftSharing })), h("h2", { class: "s-gifting-modal-title" }, h("div", { class: "s-gifting-modal-badge-wrapper" }, h("div", { class: "s-gifting-modal-badge" }, h("span", null, h("span", null, this.currentStep), "/2")), h("span", null, this.giftDetails)))),
678
- h("div", { class: "s-gifting-steps-wrapper " + this.parentClass, ref: el => this.stepsWrapper = el }, h("div", { class: "s-gifting-step-one gift-step-1", ref: el => this.step1Elems = el }, h("div", { class: "s-gifting-modal-uploader-title anime-item" }, this.selectImageForYourGift), h("div", { class: "s-gifting-modal-uploader anime-item", ref: el => this.uploader = el }, h("span", { class: "s-gifting-remove-preview", onClick: () => this.removePreview(), innerHTML: Cancel }), this.selectImageOrUpload && h("salla-file-upload", { "instant-upload": true, name: "image_url", url: salla.url.api(salla.product.api.getUrl('giftImage')), onUploaded: event => this.handleUploadImage(event.detail), labelIdle: this.getFilepondPlaceholder(), onRemoved: () => this.handleRemoveImage() })), h("div", { class: "anime-item" }, !this.uploadedImage && !!this.gift && !!this.gift.gift_images && this.gift.gift_images.length > 0 ?
679
- h("salla-slider", { id: "gifting-slider", loop: false, "controls-outer": true, class: "s-gifting-slider", type: "carousel" }, h("div", { slot: "items" }, this.gift && this.gift.gift_images ?
680
- this.gift?.gift_images.map((item) => h("a", { class: "s-gifting-clickable s-gifting-image", onClick: () => this.setPreview(item) }, h("img", { style: { "width": "120px" }, src: item.url, alt: `${item.id}` }))) : ''))
681
- : ""), h("div", { class: "anime-item" }, h("div", { class: "s-form-group s-gifting-selectText", ref: el => this.textSelect = el }, h("select", { id: "gift-text-selection", name: "gift-text-selection", class: "s-form-control s-gifting-select", onChange: e => this.toggleGiftText(e) }, h("option", { "data-id": null, selected: true }, this.selectGiftMessage), this.gift && this.gift.gift_texts ?
682
- this.gift?.gift_texts.map((txt) => h("option", { "data-id": txt.id, value: txt.text, key: txt.id }, txt.text)) : '', h("option", { "data-id": "custom" }, this.giftCustomText))), h("div", { class: this.showGiftText ? "s-form-group s-gifting-textarea shown" : "s-form-group s-gifting-textarea hide", ref: (el) => this.customTextArea = el }, h("label", { htmlFor: "gift-custom-text", class: "s-form-label" }, this.giftCustomText), h("div", { class: "mt-1" }, h("textarea", { onInput: (event) => this.handleTextAreaChange(event), rows: 4, ref: (el) => this.textArea = el, name: "gift-custom-text", id: "gift-custom-text", class: "s-form-control" })))), h("div", { class: "anime-item" }, h("salla-button", { color: "primary", width: "wide", onClick: () => this.goToStep2() }, h("span", null, this.nextStep)))), h("div", { class: "s-gifting-step-two gift-step-2", ref: el => this.step2Elems = el }, h("div", { class: this.step2ItemClass(this.errors?.['sender_name'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { htmlFor: "sender_name", class: "s-form-label" }, this.senderNameLabel), h("input", { type: "text", class: "s-form-control", name: "sender_name", id: "sender_name", value: this.senderName, onInput: (event) => this.handleSenderName(event), placeholder: "" }), this.errors && this.errors['sender_name'] ?
710
+ h("div", { class: "s-gifting-modal-header" }, h("span", { class: "s-gifting-modal-icon" }, h("span", { innerHTML: SIGiftSharing })), h("h2", { class: "s-gifting-modal-title" }, h("div", { class: "s-gifting-modal-badge-wrapper" }, !this.skipStep1() && h("div", { class: "s-gifting-modal-badge" }, h("span", null, h("span", null, this.currentStep), "/2")), h("span", null, this.giftDetails)))),
711
+ h("div", { class: "s-gifting-steps-wrapper " + this.parentClass, ref: el => this.stepsWrapper = el }, !this.skipStep1() && h("div", { class: "s-gifting-step-one gift-step-1", ref: el => this.step1Elems = el }, h("div", { class: "s-gifting-modal-uploader-title anime-item" }, this.selectImageForYourGift), this.gift && this.gift.show_images &&
712
+ h("div", null, h("div", { class: `s-gifting-modal-uploader anime-item ${this.disableClass}`, ref: el => this.uploader = el }, h("span", { class: "s-gifting-remove-preview pointer-events-auto", onClick: () => this.removePreview(), innerHTML: Cancel }), this.selectImageOrUpload && this.gift && h("salla-file-upload", { "instant-upload": true, name: "image_url", url: salla.url.api(salla.product.api.getUrl('giftImage')), onUploaded: event => this.handleUploadImage(event.detail), labelIdle: this.getFilepondPlaceholder(), onRemoved: () => this.handleRemoveImage() })), h("div", { class: "anime-item" }, !this.uploadedImage && !!this.gift && !!this.gift.gift_images && this.gift.gift_images.length > 0 ?
713
+ h("salla-slider", { id: "gifting-slider", loop: false, "controls-outer": true, class: "s-gifting-slider", type: "carousel" }, h("div", { slot: "items" }, this.gift && this.gift.gift_images ?
714
+ this.gift?.gift_images.map((item) => h("a", { class: "s-gifting-clickable s-gifting-image", onClick: () => this.setPreview(item) }, h("img", { style: { "width": "120px" }, src: item.url, alt: `${item.id}` }))) : ''))
715
+ : "")), this.gift && this.gift.show_texts ?
716
+ h("div", { class: "anime-item" }, h("div", { class: "s-form-group s-gifting-selectText", ref: el => this.textSelect = el }, h("select", { id: "gift-text-selection", name: "gift-text-selection", class: "s-form-control s-gifting-select", onChange: e => this.toggleGiftText(e) }, h("option", { "data-id": null, selected: true }, this.selectGiftMessage), this.gift && this.gift.gift_texts ?
717
+ this.gift?.gift_texts.map((txt) => h("option", { "data-id": txt.id, value: txt.text, key: txt.id }, txt.text)) : '', this.gift && this.gift.show_custom_text ? h("option", { "data-id": "custom" }, this.giftCustomText) : null)), h("div", { class: this.showGiftText && this.gift && this.gift.show_custom_text ? "s-form-group s-gifting-textarea shown" : "s-form-group s-gifting-textarea hide", ref: (el) => this.customTextArea = el }, h("label", { htmlFor: "gift-custom-text", class: "s-form-label" }, this.giftCustomText), h("div", { class: "mt-1" }, h("textarea", { onInput: (event) => this.handleTextAreaChange(event), rows: 4, ref: (el) => this.textArea = el, name: "gift-custom-text", id: "gift-custom-text", class: "s-form-control" })))) : null, h("div", { class: "anime-item" }, h("salla-button", { color: "primary", width: "wide", onClick: () => this.goToStep2(!!this.gift?.show_texts) }, h("span", null, this.nextStep)))), h("div", { class: "s-gifting-step-two gift-step-2", style: this.skipStep1() ? { opacity: '1', transform: 'translateX(0)', position: 'relative' } : undefined, ref: el => this.step2Elems = el }, h("div", { class: this.step2ItemClass(this.errors?.['sender_name'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { htmlFor: "sender_name", class: "s-form-label" }, this.senderNameLabel), h("input", { type: "text", class: "s-form-control", name: "sender_name", id: "sender_name", value: this.senderName, onInput: (event) => this.handleSenderName(event), placeholder: "" }), this.errors && this.errors['sender_name'] ?
683
718
  h("span", { class: "s-gifting-error" }, this.errors['sender_name']) : ''), h("div", { class: this.step2ItemClass(this.errors?.['receiver.name'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { htmlFor: "receiver_name", class: "s-form-label" }, this.receiverNameFieldLabel), h("input", { type: "text", class: "s-form-control", name: "receiver_name", id: "receiver_name", value: "", onInput: (event) => this.handleReceiverName(event), placeholder: "" }), this.errors && this.errors['receiver.name'] ?
684
719
  h("span", { class: "s-gifting-error" }, this.errors['receiver.name']) : ''), h("div", { class: this.step2ItemClass(this.errors?.['receiver.mobile'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { class: "s-form-label" }, this.receiverMobileFieldLabel), h("salla-tel-input", { class: "s-gifting-tel-input", phone: this.receiverMobile, countryCode: this.receiverCountryCode, onPhoneEntered: (e) => this.handlePhoneInputChange(e) }), this.errors && this.errors['receiver.mobile'] ?
685
720
  h("span", { class: "s-gifting-error" }, this.errors['receiver.mobile']) : ''), this.isPhysical() &&
@@ -689,8 +724,8 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
689
724
  h("span", { class: "s-gifting-error" }, this.errors['receiver.region']) : ''), this.isPhysical() &&
690
725
  h("div", { class: this.step2ItemClass(this.errors?.['receiver.city_id'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { class: "s-form-label", htmlFor: `${this.hostId}-city` }, this.receiverCityFieldLabel), h("salla-searchable-dropdown", { placeholder: this.selectCity, items: this.displayedCities, selectedItem: this.selectedCity, loading: this.loadingCities, searching: this.searchingCities, disabled: this.loadingCities || (this.isKSA && !this.selectedRegionId), required: true, inputId: `${this.hostId}-city`, searchQuery: this.citySearchQuery, clientSearch: !this.enableCityAjaxSearch, dropUp: true, keepParentScroll: true, onItemSelected: (e) => this.handleCitySelected(e.detail), onSearchInput: (e) => this.handleCitySearch(e.detail), onDropdownClosed: () => this.handleCityDropdownClosed() }), this.errors && this.errors['receiver.city_id'] ?
691
726
  h("span", { class: "s-gifting-error" }, this.errors['receiver.city_id']) : ''), this.isPhysical() &&
692
- h("div", { class: this.step2ItemClass('s-gifting-info') }, h("span", { innerHTML: Alert }), h("span", null, this.selectCityInfo)), !this.isPhysical() && h("div", { class: this.step2ItemClass() }, h("label", { class: "s-gifting-schedule s-gifting-clickable", htmlFor: `schedule-${this.hostId}` }, h("input", { type: "checkbox", name: 'schedule', id: `schedule-${this.hostId}`, onChange: () => this.toggleCalendar(), class: "s-checkbox" }), h("span", { class: "s-form-label" }, " ", this.sendLater, " "))), h("div", { class: this.getCalendarClasses(), ref: (el) => this.calendarFormGroup = el }, h("label", { class: "s-form-label" }, this.selectSendDateAndTime), h("salla-datetime-picker", { value: this.deliveryDate, placeholder: this.selectSendDateAndTime, "enable-time": true, "date-format": "Y-m-d h:i K", onPicked: (event) => this.handleDateTimePicker(event) }), h("span", { class: "s-gifting-calendar-hint" }, this.canNotEditOrderAfterSelectDate)), h("div", { class: this.step2ItemClass('s-gifting-step-two-footer') }, h("a", { href: "#!", innerHTML: IconArrowLeft, onClick: (e) => this.goToStep1(e) }), h("salla-button", { onClick: () => this.submitForm(), color: "primary", width: 'wide' }, h("span", null, this.sendGift)))))
693
- ], h("slot", { key: 'bd8cd1628ed4282b177f0ddcd5fb93289c47b4d6', name: "footer" })))
727
+ h("div", { class: this.step2ItemClass('s-gifting-info') }, h("span", { innerHTML: Alert }), h("span", null, this.selectCityInfo)), !this.isPhysical() && h("div", { class: this.step2ItemClass() }, h("label", { class: "s-gifting-schedule s-gifting-clickable", htmlFor: `schedule-${this.hostId}` }, h("input", { type: "checkbox", name: 'schedule', id: `schedule-${this.hostId}`, onChange: () => this.toggleCalendar(), class: "s-checkbox" }), h("span", { class: "s-form-label" }, " ", this.sendLater, " "))), h("div", { class: this.getCalendarClasses(), ref: (el) => this.calendarFormGroup = el }, h("label", { class: "s-form-label" }, this.selectSendDateAndTime), h("salla-datetime-picker", { value: this.deliveryDate, placeholder: this.selectSendDateAndTime, "enable-time": true, "date-format": "Y-m-d h:i K", onPicked: (event) => this.handleDateTimePicker(event) }), h("span", { class: "s-gifting-calendar-hint" }, this.canNotEditOrderAfterSelectDate)), h("div", { class: this.step2ItemClass('s-gifting-step-two-footer') }, !this.skipStep1() && h("a", { href: "#!", innerHTML: IconArrowLeft, onClick: (e) => this.goToStep1(e) }), h("salla-button", { onClick: () => this.submitForm(), color: "primary", width: 'wide' }, h("span", null, this.sendGift)))))
728
+ ], h("slot", { key: 'bdc014a95dab59f9f1e22f71741b5ba5f2ea3ee8', name: "footer" })))
694
729
  ];
695
730
  }
696
731
  static get style() { return sallaGiftingCss; }
@@ -769,6 +804,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
769
804
  "receiverCountryCode": [32],
770
805
  "receiverEmail": [32],
771
806
  "hostId": [32],
807
+ "disableClass": [32],
772
808
  "receiverCity": [32],
773
809
  "open": [64],
774
810
  "close": [64],
@@ -63,7 +63,8 @@ const SallaLoginModal = /*@__PURE__*/ proxyCustomElement(class SallaLoginModal e
63
63
  }
64
64
  componentDidLoad() {
65
65
  window.addEventListener('message', (event) => {
66
- if (event.data.source != "login") {
66
+ // Trust only our login iframe/passkey popup at the accounts origin.
67
+ if (!this.isTrustedMessage(event) || event.data?.source != "login") {
67
68
  return;
68
69
  }
69
70
  if (!this.inline && !this.canRenderIframe) {
@@ -140,6 +141,8 @@ const SallaLoginModal = /*@__PURE__*/ proxyCustomElement(class SallaLoginModal e
140
141
  return window.location.reload();
141
142
  }
142
143
  if (action === 'open_page') {
144
+ if (!this.isSafeUrl(value?.url))
145
+ return;
143
146
  return window.location.href = value.url;
144
147
  }
145
148
  if (action === 'open_passkey_page') {
@@ -252,6 +255,33 @@ const SallaLoginModal = /*@__PURE__*/ proxyCustomElement(class SallaLoginModal e
252
255
  }
253
256
  withCartReset && Salla.cart.reset();
254
257
  }
258
+ // Accept postMessage only from our own login iframe/passkey popup at the accounts origin.
259
+ isTrustedMessage(event) {
260
+ const fromIframe = !!this.iframe && event.source === this.iframe.contentWindow;
261
+ const fromPasskey = !!this.createPassKey && event.source === this.createPassKey;
262
+ if (!fromIframe && !fromPasskey)
263
+ return false;
264
+ let origin;
265
+ try {
266
+ origin = new URL(salla.config.get('login.url', 'https://accounts.salla.com')).origin;
267
+ }
268
+ catch (e) {
269
+ origin = 'https://accounts.salla.com';
270
+ }
271
+ return event.origin === origin;
272
+ }
273
+ // Reject javascript:/data: and other non-http(s) navigation targets.
274
+ isSafeUrl(url) {
275
+ if (typeof url !== 'string' || !url)
276
+ return false;
277
+ try {
278
+ const { protocol } = new URL(url, location.href);
279
+ return protocol === 'https:' || protocol === 'http:';
280
+ }
281
+ catch (e) {
282
+ return false;
283
+ }
284
+ }
255
285
  sendMessageToIframe(message) {
256
286
  if (!this.iframe)
257
287
  return;