@salla.sa/twilight-components 3.0.15 → 3.0.16

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 (375) hide show
  1. package/dist/cjs/{Helper-Dmb3FQQs.js → Helper-BV6HUQzI.js} +1 -1
  2. package/dist/cjs/{filepond-GmkTQy-n.js → filepond-hJcaHnfM.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-poster-4uwmb1PZ.js → filepond-plugin-file-poster-DDkDXFOe.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-size-CjR0En8v.js → filepond-plugin-file-validate-size-BBZimb8J.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-type-HK-bIoEs.js → filepond-plugin-file-validate-type-B5VDnf33.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-edit-HiDocWlK.js → filepond-plugin-image-edit-Cmuqwdn1.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-exif-orientation-B47pLf5T.js → filepond-plugin-image-exif-orientation-BFjHgWMS.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-preview-BLTfx5Xl.js → filepond-plugin-image-preview-C7Ow81pR.js} +1 -1
  9. package/dist/cjs/{index-Cbi9cOBy.js → index-PB4iLztN.js} +11 -11
  10. package/dist/cjs/{intlTelInput-Dt8Mg1ES.js → intlTelInput-Ds-AW6H6.js} +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  13. package/dist/cjs/salla-accordion_6.cjs.entry.js +3 -3
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +21 -8
  15. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  16. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-applied-filters.cjs.entry.js +2 -2
  19. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-attachment-view_9.cjs.entry.js +101 -17
  21. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +22 -9
  24. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-comment-form_9.cjs.entry.js +2 -2
  30. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
  38. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  39. package/dist/cjs/salla-free-shipping-banner.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-free-shipping-tag.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-gift-card-redeem_2.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
  46. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
  51. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +28 -12
  61. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +2 -2
  63. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-notification-item_2.cjs.entry.js +2 -2
  65. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-order-items.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-order-payment.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-order-rewards.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-orders.cjs.entry.js +2 -2
  83. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  84. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-products-list.cjs.entry.js +2 -2
  90. package/dist/cjs/salla-products-slider.cjs.entry.js +2 -2
  91. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +2 -2
  93. package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
  94. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-search.cjs.entry.js +2 -2
  99. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  102. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-thank-you-header.cjs.entry.js +1 -1
  104. package/dist/cjs/salla-thank-you-page.cjs.entry.js +1 -1
  105. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  106. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  107. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  108. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  109. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  110. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  111. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  112. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  113. package/dist/cjs/salla-wishlist-summary.cjs.entry.js +2 -2
  114. package/dist/cjs/twilight.cjs.js +1 -1
  115. package/dist/cjs/{vanilla-picker-D1DK9OwS.js → vanilla-picker-ZsewI4gd.js} +1 -1
  116. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.css +11 -6
  117. package/dist/collection/components/salla-color-picker/color-popup-placement.js +68 -0
  118. package/dist/collection/components/salla-color-picker/salla-color-picker.css +13 -1
  119. package/dist/collection/components/salla-color-picker/salla-color-picker.js +24 -5
  120. package/dist/collection/components/salla-modal/salla-modal.css +4 -2
  121. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-details.js +27 -11
  122. package/dist/collection/components/salla-multiple-bundle-product/salla-multiple-bundle-product.css +3 -0
  123. package/dist/collection/components/salla-product-options/salla-product-options.css +5 -0
  124. package/dist/collection/components/salla-product-options/salla-product-options.js +5 -1
  125. package/dist/collection/components/salla-quick-buy/salla-quick-buy.js +9 -1
  126. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.css +8 -2
  127. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.js +19 -6
  128. package/dist/components/index.js +11 -11
  129. package/dist/components/salla-bullet-delivery.js +1 -1
  130. package/dist/components/salla-color-picker2.js +90 -6
  131. package/dist/components/salla-modal2.js +1 -1
  132. package/dist/components/salla-multiple-bundle-product-details2.js +27 -11
  133. package/dist/components/salla-multiple-bundle-product.js +1 -1
  134. package/dist/components/salla-product-options2.js +6 -2
  135. package/dist/components/salla-quick-buy2.js +13 -4
  136. package/dist/components/salla-searchable-dropdown2.js +20 -7
  137. package/dist/docs.json +1 -1
  138. package/dist/esm/{Helper-3JdOXI6n.js → Helper-CsyfMJLx.js} +1 -1
  139. package/dist/esm/{filepond-XW9UXuEd.js → filepond-Cla3ae_2.js} +1 -1
  140. package/dist/esm/{filepond-plugin-file-poster-BIxXdtJt.js → filepond-plugin-file-poster-BO0nARSu.js} +1 -1
  141. package/dist/esm/{filepond-plugin-file-validate-size-BIcTUDgJ.js → filepond-plugin-file-validate-size-CrcZ7P5c.js} +1 -1
  142. package/dist/esm/{filepond-plugin-file-validate-type-rvnCRjaE.js → filepond-plugin-file-validate-type-Cci8f5e3.js} +1 -1
  143. package/dist/esm/{filepond-plugin-image-edit-Di_Yevfe.js → filepond-plugin-image-edit-y0q-Gkyo.js} +1 -1
  144. package/dist/esm/{filepond-plugin-image-exif-orientation-CoTpFDlA.js → filepond-plugin-image-exif-orientation-WYrkP26J.js} +1 -1
  145. package/dist/esm/{filepond-plugin-image-preview-CcPXv1Dq.js → filepond-plugin-image-preview-Bz0ZRBQp.js} +1 -1
  146. package/dist/esm/{index-C8uMz1y8.js → index-DJuBNP7w.js} +11 -11
  147. package/dist/esm/{intlTelInput-DgLldmhL.js → intlTelInput-Dcl0COqn.js} +1 -1
  148. package/dist/esm/loader.js +2 -2
  149. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  150. package/dist/esm/salla-accordion_6.entry.js +3 -3
  151. package/dist/esm/salla-add-product-button_5.entry.js +21 -8
  152. package/dist/esm/salla-advertisement.entry.js +1 -1
  153. package/dist/esm/salla-alert_2.entry.js +1 -1
  154. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  155. package/dist/esm/salla-applied-filters.entry.js +2 -2
  156. package/dist/esm/salla-apps-icons.entry.js +1 -1
  157. package/dist/esm/salla-attachment-view_9.entry.js +101 -17
  158. package/dist/esm/salla-badge.entry.js +1 -1
  159. package/dist/esm/salla-basket-gap.entry.js +1 -1
  160. package/dist/esm/salla-bullet-delivery_3.entry.js +22 -9
  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-cart-summary-card.entry.js +1 -1
  164. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  165. package/dist/esm/salla-comment-factors.entry.js +1 -1
  166. package/dist/esm/salla-comment-form_9.entry.js +2 -2
  167. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  168. package/dist/esm/salla-contacts.entry.js +1 -1
  169. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  170. package/dist/esm/salla-count-down.entry.js +1 -1
  171. package/dist/esm/salla-custom-fields.entry.js +1 -1
  172. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  173. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  174. package/dist/esm/salla-filters-widget.entry.js +2 -2
  175. package/dist/esm/salla-filters.entry.js +2 -2
  176. package/dist/esm/salla-free-shipping-banner.entry.js +1 -1
  177. package/dist/esm/salla-free-shipping-tag.entry.js +1 -1
  178. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  179. package/dist/esm/salla-gift-card-redeem_2.entry.js +1 -1
  180. package/dist/esm/salla-gifting.entry.js +1 -1
  181. package/dist/esm/salla-hook.entry.js +1 -1
  182. package/dist/esm/salla-infinite-scroll.entry.js +2 -2
  183. package/dist/esm/salla-installment.entry.js +1 -1
  184. package/dist/esm/salla-list-tile.entry.js +1 -1
  185. package/dist/esm/salla-localization-modal.entry.js +1 -1
  186. package/dist/esm/salla-login-modal.entry.js +1 -1
  187. package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
  188. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  189. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  190. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  191. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  192. package/dist/esm/salla-loyalty.entry.js +1 -1
  193. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  194. package/dist/esm/salla-map_3.entry.js +1 -1
  195. package/dist/esm/salla-menu.entry.js +1 -1
  196. package/dist/esm/salla-metadata.entry.js +1 -1
  197. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +28 -12
  198. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  199. package/dist/esm/salla-multiple-bundle-product.entry.js +2 -2
  200. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  201. package/dist/esm/salla-notification-item_2.entry.js +2 -2
  202. package/dist/esm/salla-offer-modal.entry.js +1 -1
  203. package/dist/esm/salla-offer.entry.js +1 -1
  204. package/dist/esm/salla-order-branch.entry.js +1 -1
  205. package/dist/esm/salla-order-cancel.entry.js +1 -1
  206. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  207. package/dist/esm/salla-order-details-options.entry.js +1 -1
  208. package/dist/esm/salla-order-details.entry.js +1 -1
  209. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  210. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  211. package/dist/esm/salla-order-edit.entry.js +1 -1
  212. package/dist/esm/salla-order-items.entry.js +1 -1
  213. package/dist/esm/salla-order-options-modal.entry.js +1 -1
  214. package/dist/esm/salla-order-payment.entry.js +1 -1
  215. package/dist/esm/salla-order-rewards.entry.js +1 -1
  216. package/dist/esm/salla-order-shipments.entry.js +1 -1
  217. package/dist/esm/salla-order-summary.entry.js +1 -1
  218. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  219. package/dist/esm/salla-orders.entry.js +2 -2
  220. package/dist/esm/salla-payments.entry.js +1 -1
  221. package/dist/esm/salla-placeholder.entry.js +1 -1
  222. package/dist/esm/salla-price-range.entry.js +1 -1
  223. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  224. package/dist/esm/salla-product-card.entry.js +1 -1
  225. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  226. package/dist/esm/salla-products-list.entry.js +2 -2
  227. package/dist/esm/salla-products-slider.entry.js +2 -2
  228. package/dist/esm/salla-quick-order.entry.js +1 -1
  229. package/dist/esm/salla-rating-modal-v2.entry.js +2 -2
  230. package/dist/esm/salla-rating-modal.entry.js +2 -2
  231. package/dist/esm/salla-review-factors-tags.entry.js +1 -1
  232. package/dist/esm/salla-review-order-item.entry.js +1 -1
  233. package/dist/esm/salla-scopes.entry.js +1 -1
  234. package/dist/esm/salla-search-product-card.entry.js +1 -1
  235. package/dist/esm/salla-search.entry.js +2 -2
  236. package/dist/esm/salla-skeleton.entry.js +1 -1
  237. package/dist/esm/salla-social-share.entry.js +1 -1
  238. package/dist/esm/salla-social.entry.js +1 -1
  239. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  240. package/dist/esm/salla-thank-you-header.entry.js +1 -1
  241. package/dist/esm/salla-thank-you-page.entry.js +1 -1
  242. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  243. package/dist/esm/salla-trust-badges.entry.js +1 -1
  244. package/dist/esm/salla-user-menu.entry.js +1 -1
  245. package/dist/esm/salla-user-profile.entry.js +1 -1
  246. package/dist/esm/salla-user-settings.entry.js +1 -1
  247. package/dist/esm/salla-verify.entry.js +1 -1
  248. package/dist/esm/salla-wallet.entry.js +1 -1
  249. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  250. package/dist/esm/salla-wishlist-summary.entry.js +2 -2
  251. package/dist/esm/twilight.js +2 -2
  252. package/dist/esm/{vanilla-picker-DsA5vAX-.js → vanilla-picker-DPvEywPm.js} +1 -1
  253. package/dist/twilight/{p-d67bb587.entry.js → p-03e6d42b.entry.js} +1 -1
  254. package/dist/twilight/{p-f7c6ded6.entry.js → p-05e1fc6a.entry.js} +1 -1
  255. package/dist/twilight/{p-f1b2568f.entry.js → p-09c651a2.entry.js} +1 -1
  256. package/dist/twilight/{p-92e66c30.entry.js → p-0c292c9a.entry.js} +1 -1
  257. package/dist/twilight/{p-74951208.entry.js → p-1267d95a.entry.js} +1 -1
  258. package/dist/twilight/{p-7b1b78c9.entry.js → p-134692f5.entry.js} +1 -1
  259. package/dist/twilight/{p-b02d0ef8.entry.js → p-1436b465.entry.js} +1 -1
  260. package/dist/twilight/{p-c5729900.entry.js → p-15098cb1.entry.js} +1 -1
  261. package/dist/twilight/{p-6c6183e7.entry.js → p-189fa3c4.entry.js} +1 -1
  262. package/dist/twilight/{p-7fdf8500.entry.js → p-19bf11c5.entry.js} +1 -1
  263. package/dist/twilight/{p-ed788b25.entry.js → p-1a7b0a2b.entry.js} +1 -1
  264. package/dist/twilight/{p-4b8e3f78.entry.js → p-1c2d9885.entry.js} +1 -1
  265. package/dist/twilight/{p-8dcd1bfa.entry.js → p-1e7a0a4f.entry.js} +1 -1
  266. package/dist/twilight/{p-51a54a62.entry.js → p-20642013.entry.js} +1 -1
  267. package/dist/twilight/{p-f8190890.entry.js → p-2ce991e8.entry.js} +1 -1
  268. package/dist/twilight/{p-de92709a.entry.js → p-33689489.entry.js} +1 -1
  269. package/dist/twilight/{p-3f4734f1.entry.js → p-343f57ea.entry.js} +1 -1
  270. package/dist/twilight/{p-1d410bf3.entry.js → p-370924c0.entry.js} +1 -1
  271. package/dist/twilight/{p-c1916998.entry.js → p-382dc313.entry.js} +1 -1
  272. package/dist/twilight/{p-0ec2c436.entry.js → p-3b3f1838.entry.js} +1 -1
  273. package/dist/twilight/{p-9225d05e.entry.js → p-3b4aa865.entry.js} +1 -1
  274. package/dist/twilight/{p-7077a91d.entry.js → p-3b6efc6e.entry.js} +1 -1
  275. package/dist/twilight/{p-7a61d893.entry.js → p-3cbcec7c.entry.js} +1 -1
  276. package/dist/twilight/p-3f701181.entry.js +4 -0
  277. package/dist/twilight/{p-51043815.entry.js → p-3f713fc0.entry.js} +1 -1
  278. package/dist/twilight/{p-c89ad467.entry.js → p-43700093.entry.js} +1 -1
  279. package/dist/twilight/{p-84720eeb.entry.js → p-43a4e000.entry.js} +1 -1
  280. package/dist/twilight/{p-5a88e01b.entry.js → p-48fb615e.entry.js} +1 -1
  281. package/dist/twilight/{p-8e6fb5aa.entry.js → p-4a07e070.entry.js} +1 -1
  282. package/dist/twilight/{p-30403888.entry.js → p-4a3d4c28.entry.js} +1 -1
  283. package/dist/twilight/{p-deee6c2c.entry.js → p-4a843e15.entry.js} +1 -1
  284. package/dist/twilight/{p-3e0b2979.entry.js → p-4be6e307.entry.js} +1 -1
  285. package/dist/twilight/{p-261513b2.entry.js → p-52749db7.entry.js} +1 -1
  286. package/dist/twilight/{p-3639a68a.entry.js → p-537748de.entry.js} +1 -1
  287. package/dist/twilight/{p-5572b1a8.entry.js → p-558f8ee0.entry.js} +1 -1
  288. package/dist/twilight/{p-159ed007.entry.js → p-5aa8ec0a.entry.js} +1 -1
  289. package/dist/twilight/{p-a92835bd.entry.js → p-5b52ef24.entry.js} +1 -1
  290. package/dist/twilight/{p-20b3f75a.entry.js → p-5b60ebdf.entry.js} +1 -1
  291. package/dist/twilight/{p-5a89c3c0.entry.js → p-5e8b7483.entry.js} +1 -1
  292. package/dist/twilight/{p-fcecebc6.entry.js → p-5f1b28e3.entry.js} +1 -1
  293. package/dist/twilight/{p-f86de75f.entry.js → p-5f5c4f3c.entry.js} +1 -1
  294. package/dist/twilight/{p-b039f8c2.entry.js → p-615edf90.entry.js} +1 -1
  295. package/dist/twilight/{p-0aa85305.entry.js → p-63053048.entry.js} +1 -1
  296. package/dist/twilight/{p-4410bdbd.entry.js → p-67bb5e0c.entry.js} +1 -1
  297. package/dist/twilight/{p-ed0ec4b8.entry.js → p-6a8d04d9.entry.js} +1 -1
  298. package/dist/twilight/{p-f6302b73.entry.js → p-70d5d802.entry.js} +1 -1
  299. package/dist/twilight/{p-8f517227.entry.js → p-72092eff.entry.js} +1 -1
  300. package/dist/twilight/{p-c0e176cb.entry.js → p-74238c01.entry.js} +1 -1
  301. package/dist/twilight/{p-17158054.entry.js → p-75015061.entry.js} +1 -1
  302. package/dist/twilight/{p-176788e8.entry.js → p-788c0264.entry.js} +1 -1
  303. package/dist/twilight/{p-832fe5f6.entry.js → p-792f1e05.entry.js} +1 -1
  304. package/dist/twilight/{p-baac53fb.entry.js → p-8278e31a.entry.js} +1 -1
  305. package/dist/twilight/{p-d62bbbbc.entry.js → p-82d50064.entry.js} +1 -1
  306. package/dist/twilight/{p-5773b84a.entry.js → p-86ade991.entry.js} +1 -1
  307. package/dist/twilight/{p-785eedae.entry.js → p-86db3fe8.entry.js} +1 -1
  308. package/dist/twilight/{p-85dd2ada.entry.js → p-8907ef61.entry.js} +1 -1
  309. package/dist/twilight/{p-2d4e9fe6.entry.js → p-8a7bce99.entry.js} +1 -1
  310. package/dist/twilight/{p-ae0e1032.entry.js → p-8b72b7a2.entry.js} +1 -1
  311. package/dist/twilight/{p-52958f29.entry.js → p-8cb6dfd9.entry.js} +1 -1
  312. package/dist/twilight/{p-1ab54476.entry.js → p-8e6bc10e.entry.js} +1 -1
  313. package/dist/twilight/{p-e7ed77ce.entry.js → p-91ef7c89.entry.js} +1 -1
  314. package/dist/twilight/{p-1a9c0e93.entry.js → p-927d1967.entry.js} +1 -1
  315. package/dist/twilight/{p-67238965.entry.js → p-951f1af4.entry.js} +1 -1
  316. package/dist/twilight/{p-0778e19f.entry.js → p-96be66eb.entry.js} +1 -1
  317. package/dist/twilight/{p-a2dc3875.entry.js → p-96e16a6b.entry.js} +1 -1
  318. package/dist/twilight/{p-c11ac4e3.entry.js → p-9b02e779.entry.js} +1 -1
  319. package/dist/twilight/{p-60d60008.entry.js → p-9b46c1ab.entry.js} +1 -1
  320. package/dist/twilight/{p-64fa15bb.entry.js → p-9e24dec9.entry.js} +1 -1
  321. package/dist/twilight/{p-dca234ed.entry.js → p-9e8c583a.entry.js} +1 -1
  322. package/dist/twilight/{p-6a39fe0e.entry.js → p-9f920812.entry.js} +1 -1
  323. package/dist/twilight/{p-f36be45c.entry.js → p-9f9ab89c.entry.js} +1 -1
  324. package/dist/twilight/{p-BckEvzPi.js → p-BPjqOy84.js} +1 -1
  325. package/dist/twilight/{p-DLJfWSBh.js → p-BgGU8BXX.js} +1 -1
  326. package/dist/twilight/{p-DvanRMn0.js → p-C9eNuCn7.js} +1 -1
  327. package/dist/twilight/{p-C3oKHJJF.js → p-CRYD9K0S.js} +1 -1
  328. package/dist/twilight/{p-DDFzkYmK.js → p-CqENl4Wm.js} +1 -1
  329. package/dist/twilight/{p-BBjixhqB.js → p-DCUZjQXX.js} +1 -1
  330. package/dist/twilight/{p-uaf2Kqn6.js → p-DHk7-wXk.js} +1 -1
  331. package/dist/twilight/p-DJuBNP7w.js +5 -0
  332. package/dist/twilight/{p-B56yAvE0.js → p-DliR9Sp1.js} +1 -1
  333. package/dist/twilight/{p-B-3v0tMD.js → p-Do-w5Os8.js} +1 -1
  334. package/dist/twilight/{p-1d0d3d74.entry.js → p-a16f2376.entry.js} +1 -1
  335. package/dist/twilight/{p-0ddf1286.entry.js → p-a36e2dcf.entry.js} +1 -1
  336. package/dist/twilight/{p-eabbf726.entry.js → p-a6ba5168.entry.js} +1 -1
  337. package/dist/twilight/{p-ffd2547a.entry.js → p-a7d2613b.entry.js} +1 -1
  338. package/dist/twilight/{p-3e631a0f.entry.js → p-a8f88ea6.entry.js} +1 -1
  339. package/dist/twilight/p-a92e5068.entry.js +4 -0
  340. package/dist/twilight/{p-5d3f9679.entry.js → p-a9a8a819.entry.js} +1 -1
  341. package/dist/twilight/{p-fe4f4f66.entry.js → p-aa210c8a.entry.js} +1 -1
  342. package/dist/twilight/{p-e1cb1c17.entry.js → p-b1aa33f3.entry.js} +1 -1
  343. package/dist/twilight/{p-b617859a.entry.js → p-b798788b.entry.js} +1 -1
  344. package/dist/twilight/{p-171d0cfd.entry.js → p-b891f863.entry.js} +1 -1
  345. package/dist/twilight/{p-15eed61c.entry.js → p-b90d0e51.entry.js} +1 -1
  346. package/dist/twilight/{p-e9ec68cf.entry.js → p-be203bd9.entry.js} +1 -1
  347. package/dist/twilight/{p-7772dddc.entry.js → p-be84879f.entry.js} +1 -1
  348. package/dist/twilight/{p-ba5715a3.entry.js → p-bf12f616.entry.js} +1 -1
  349. package/dist/twilight/{p-f26ab4cd.entry.js → p-c33be542.entry.js} +1 -1
  350. package/dist/twilight/{p-e3c7fb7b.entry.js → p-c657883d.entry.js} +1 -1
  351. package/dist/twilight/{p-e356b4bc.entry.js → p-caac5694.entry.js} +1 -1
  352. package/dist/twilight/{p-4bcdbf34.entry.js → p-cfe523ab.entry.js} +1 -1
  353. package/dist/twilight/{p-9ce34bb8.entry.js → p-d5b394c9.entry.js} +1 -1
  354. package/dist/twilight/{p-0096d200.entry.js → p-dcfd3688.entry.js} +1 -1
  355. package/dist/twilight/{p-996536d3.entry.js → p-de458068.entry.js} +1 -1
  356. package/dist/twilight/{p-b2dca884.entry.js → p-def7b9c4.entry.js} +1 -1
  357. package/dist/twilight/{p-6b609cc4.entry.js → p-e651c3ee.entry.js} +1 -1
  358. package/dist/twilight/{p-40a7db2e.entry.js → p-e66f1b70.entry.js} +1 -1
  359. package/dist/twilight/{p-353eb114.entry.js → p-e67fdc9d.entry.js} +1 -1
  360. package/dist/twilight/{p-f09c49d1.entry.js → p-ebb756bc.entry.js} +1 -1
  361. package/dist/twilight/{p-ac0577e4.entry.js → p-f1037da9.entry.js} +1 -1
  362. package/dist/twilight/{p-2fe9f590.entry.js → p-f2062f34.entry.js} +1 -1
  363. package/dist/twilight/{p-b8d6dd11.entry.js → p-f24a477c.entry.js} +1 -1
  364. package/dist/twilight/{p-9e378fe6.entry.js → p-f46da712.entry.js} +1 -1
  365. package/dist/twilight/{p-B0E1rqnW.js → p-pOFi82Pb.js} +1 -1
  366. package/dist/twilight/twilight.esm.js +1 -1
  367. package/dist/types/components/salla-color-picker/color-popup-placement.d.ts +49 -0
  368. package/dist/types/components/salla-color-picker/salla-color-picker.d.ts +1 -1
  369. package/dist/types/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-details.d.ts +2 -0
  370. package/dist/types/components/salla-quick-buy/salla-quick-buy.d.ts +1 -0
  371. package/dist/types/components/salla-searchable-dropdown/salla-searchable-dropdown.d.ts +4 -0
  372. package/package.json +5 -5
  373. package/dist/twilight/p-10e8d025.entry.js +0 -4
  374. package/dist/twilight/p-C8uMz1y8.js +0 -5
  375. package/dist/twilight/p-f8f810b8.entry.js +0 -4
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Cbi9cOBy.js');
6
+ var index = require('./index-PB4iLztN.js');
7
7
  var heart = require('./heart-ClVn_Co8.js');
8
- var Helper = require('./Helper-Dmb3FQQs.js');
8
+ var Helper = require('./Helper-BV6HUQzI.js');
9
9
 
10
10
  const sallaWishlistSummaryCss = "/*!twlt*/:host{display:inline-flex;align-items:center;margin-inline-start:1rem}.hidden{display:none}.s-wishlist-summary-wrapper{position:relative;margin-inline-start:0.75rem;display:inline-flex;align-items:center;border-style:none;text-decoration-line:none;outline:2px solid transparent;outline-offset:2px;transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:200ms}.s-wishlist-summary-wrapper:hover{opacity:0.8}.s-wishlist-summary-icon{display:inline-flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:9999px;border-width:1px;border-color:var(--color-border,#e5e7eb);color:var(--color-text-primary,#374151)}.s-wishlist-summary-icon svg{height:1.25rem;width:1.25rem;fill:currentColor}.s-wishlist-summary-count{position:absolute;top:-4px;left:-6px;display:inline-flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1));padding:0.25rem;font-size:0.75rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.s-wishlist-summary-count:where([dir=\"rtl\"],[dir=\"rtl\"] *){left:unset;right:-6px}";
11
11
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Cbi9cOBy.js');
6
+ var index = require('./index-PB4iLztN.js');
7
7
 
8
8
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
9
9
  /*
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Cbi9cOBy.js');
6
+ var index = require('./index-PB4iLztN.js');
7
7
 
8
8
  function _mergeNamespaces(n, m) {
9
9
  m.forEach(function (e) {
@@ -14,11 +14,14 @@
14
14
  }
15
15
  }
16
16
 
17
- /* Allow searchable dropdown popover to paint outside the modal body */
18
- .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
19
- overflow: visible !important;
17
+ /* Allow searchable dropdown popover to paint outside the modal body (tablet/desktop only).
18
+ On mobile the modal body is the bottom-sheet scroll container (overflow-y: auto); forcing it
19
+ visible lets the panel run off-screen so the options can't be reached or scrolled. */
20
+ @media screen and (min-width: 640px) {
21
+ .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
22
+ overflow: visible !important;
23
+ }
20
24
  }
21
-
22
25
  .s-bullet-delivery-form-actions.s-bullet-delivery-form-actions--single {
23
26
  padding-bottom: 0;
24
27
  flex-direction: column;
@@ -455,8 +458,10 @@
455
458
  overflow-y: auto;
456
459
  }
457
460
  }
458
- .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){
459
- overflow: visible !important;
461
+ @media (min-width: 640px){
462
+ .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){
463
+ overflow: visible !important;
464
+ }
460
465
  }
461
466
  .s-bullet-delivery-inner{
462
467
  min-block-size: 0;
@@ -0,0 +1,68 @@
1
+ /*!
2
+ * Crafted with ❤ by Salla
3
+ */
4
+ const CLIPPING_OVERFLOW = new Set(['hidden', 'auto', 'clip', 'scroll']);
5
+ /**
6
+ * Intersect the viewport with the nearest ancestor that clips each axis.
7
+ * `overflow-x` / `overflow-y` of `hidden`, `auto`, `clip`, or `scroll` clip.
8
+ * `visible` does not.
9
+ */
10
+ export function clippingFrame(start, viewport) {
11
+ const frame = {
12
+ left: 0,
13
+ right: viewport.width,
14
+ top: 0,
15
+ bottom: viewport.height,
16
+ };
17
+ let clipsX = false;
18
+ let clipsY = false;
19
+ let node = start.parentElement;
20
+ while (node && (!clipsX || !clipsY)) {
21
+ const style = getComputedStyle(node);
22
+ const hitX = !clipsX && CLIPPING_OVERFLOW.has(style.overflowX);
23
+ const hitY = !clipsY && CLIPPING_OVERFLOW.has(style.overflowY);
24
+ if (hitX || hitY) {
25
+ const rect = node.getBoundingClientRect();
26
+ if (hitX) {
27
+ frame.left = Math.max(frame.left, rect.left);
28
+ frame.right = Math.min(frame.right, rect.right);
29
+ clipsX = true;
30
+ }
31
+ if (hitY) {
32
+ frame.top = Math.max(frame.top, rect.top);
33
+ frame.bottom = Math.min(frame.bottom, rect.bottom);
34
+ clipsY = true;
35
+ }
36
+ }
37
+ node = node.parentElement;
38
+ }
39
+ return frame;
40
+ }
41
+ /**
42
+ * Keep the legacy popup position unless it leaves the visible frame.
43
+ * The frame is the viewport, or the viewport intersected with a clipping ancestor.
44
+ * Open downward unless that would clip the Ok button and there is more room above.
45
+ * `shift` is a pixel correction on top of the left already applied.
46
+ */
47
+ export function placeColorPopup(input) {
48
+ const margin = input.margin ?? 8;
49
+ const { popup, widget, viewport } = input;
50
+ const frame = input.frame ?? {
51
+ left: 0,
52
+ right: viewport.width,
53
+ top: 0,
54
+ bottom: viewport.height,
55
+ };
56
+ const spaceBelow = frame.bottom - widget.bottom;
57
+ const spaceAbove = widget.top - frame.top;
58
+ const clipsBottom = popup.bottom > frame.bottom - margin;
59
+ const side = clipsBottom && spaceAbove > spaceBelow ? 'top' : 'bottom';
60
+ let shift = 0;
61
+ if (popup.left < frame.left + margin) {
62
+ shift = frame.left + margin - popup.left;
63
+ }
64
+ else if (popup.right > frame.right - margin) {
65
+ shift = frame.right - margin - popup.right;
66
+ }
67
+ return { side, shift };
68
+ }
@@ -1,4 +1,10 @@
1
- /*!twlt*/.resize {
1
+ /*!twlt*/.visible {
2
+ visibility: visible
3
+ }
4
+ .hidden {
5
+ display: none
6
+ }
7
+ .resize {
2
8
  resize: both
3
9
  }
4
10
  .s-hidden {
@@ -14,6 +20,12 @@
14
20
  --tw-shadow-colored: 0 0 #0000 !important;
15
21
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
16
22
  }
23
+ .s-color-picker-main .picker_wrapper.popup {
24
+ z-index: 30 !important
25
+ }
26
+ .s-color-picker-main .picker_wrapper.\!popup {
27
+ z-index: 30 !important
28
+ }
17
29
  .s-color-picker-main .picker_arrow {
18
30
  display: none
19
31
  }
@@ -4,6 +4,7 @@
4
4
  import { h, Host, } from "@stencil/core";
5
5
  import ArrowDown from "../../assets/svg/keyboard_arrow_down.svg";
6
6
  import { isSallaSdkAvailable } from "../../utils/ssr-helpers";
7
+ import { clippingFrame, placeColorPopup } from "./color-popup-placement";
7
8
  export class SallaColorPicker {
8
9
  constructor() {
9
10
  /** Lazy-loaded to avoid bundling vanilla-picker (Babel polyfills) into main/hydrate bundle. */
@@ -159,12 +160,13 @@ export class SallaColorPicker {
159
160
  return 375;
160
161
  }
161
162
  setPopInPosition() {
162
- // Use cached viewport width – reading innerWidth at popup open causes forced reflow.
163
- // Fallback: matchMedia-based value when cache is 0 (e.g. SSR before hydration). Same breakpoints as updateViewportCache.
163
+ // Legacy offset still uses the breakpoint cache, not innerWidth.
164
+ // The clip check reads the viewport and the nearest clipping ancestor
165
+ // in the same turn as getBoundingClientRect, so those reads share that layout flush.
164
166
  const viewportWidth = this.cachedViewportWidth || this.getViewportWidthFromBreakpoints();
165
167
  const popup = this.host.querySelector('.picker_wrapper');
166
168
  const widgetEl = this.host.querySelector('.s-color-picker-widget');
167
- if (!popup || !widgetEl)
169
+ if (!popup || !widgetEl || typeof window === 'undefined')
168
170
  return;
169
171
  const widgetPosition = widgetEl.getBoundingClientRect();
170
172
  const widgetToWindowEq = viewportWidth / 2 - widgetPosition.width / 2;
@@ -179,7 +181,24 @@ export class SallaColorPicker {
179
181
  popup.style.left = 'auto';
180
182
  }
181
183
  if (!isMobile || (isMobile && ((!widgetInRight && !widgetInLeft) || widgetInCenter))) {
182
- popup.style.left = `-95px`;
184
+ popup.style.left = '-95px';
185
+ }
186
+ popup.classList.add('popup_bottom');
187
+ popup.classList.remove('popup_top');
188
+ const viewport = { width: window.innerWidth, height: window.innerHeight };
189
+ const placement = placeColorPopup({
190
+ popup: popup.getBoundingClientRect(),
191
+ widget: { top: widgetPosition.top, bottom: widgetPosition.bottom },
192
+ viewport,
193
+ frame: clippingFrame(popup, viewport),
194
+ });
195
+ popup.classList.remove('popup_bottom');
196
+ popup.classList.remove('popup_top');
197
+ popup.classList.add(placement.side === 'top' ? 'popup_top' : 'popup_bottom');
198
+ if (placement.shift !== 0) {
199
+ const base = popup.style.left === 'auto' ? parseFloat(getComputedStyle(popup).left) || 0 : parseFloat(popup.style.left);
200
+ popup.style.left = `${base + placement.shift}px`;
201
+ popup.style.right = 'auto';
183
202
  }
184
203
  }
185
204
  initColorPicker() {
@@ -203,7 +222,7 @@ export class SallaColorPicker {
203
222
  });
204
223
  }
205
224
  render() {
206
- return (h(Host, { key: '07854a7e805e42a1f951fc7fbf32e72190104c10', class: "s-color-picker-main" }, h("slot", { key: '041f76cc8829cc8c69aa6a37edbeada7bdf0ec2f', name: "widget" }, h("div", { key: '6834f5fb645d1934d7a5a859e5e1642b6feb3b7a', class: "s-color-picker-widget" }, h("div", { key: 'f5859253aa89ca001f240ef96a8afeff2f24f072', class: "s-color-picker-widget-canvas", ref: dv => (this.canvas = dv) }), h("span", { key: '7d2260c312e04e5c756cb342a6600af1a3b9fabf', innerHTML: ArrowDown }))), h("input", { key: '81aee3223b9fd228015809319c40eed173938292', class: "s-hidden", name: this.name, required: this.required, value: this.color, ref: color => (this.colorInput = color) })));
225
+ return (h(Host, { key: '9b733fabacb7d18cbe2dee845ef96d7770fad402', class: "s-color-picker-main" }, h("slot", { key: '077d47dc2a759500db5eb588df1caa05a3d04ecc', name: "widget" }, h("div", { key: '76252b75d56cdc0587c327b5c0777a91d8e8dcba', class: "s-color-picker-widget" }, h("div", { key: '334ce5f8aa8ab3b529fa19310b551f2f57a776ea', class: "s-color-picker-widget-canvas", ref: dv => (this.canvas = dv) }), h("span", { key: 'b43c29d5e939ee7da3b69257c088efb1e9871737', innerHTML: ArrowDown }))), h("input", { key: 'c607e63377ceab32cd6cf77de572c0e2afbf72c7', class: "s-hidden", name: this.name, required: this.required, value: this.color, ref: color => (this.colorInput = color) })));
207
226
  }
208
227
  componentDidLoad() {
209
228
  if (this.canvas)
@@ -62,8 +62,10 @@
62
62
  overflow-y: auto;
63
63
  }
64
64
  }
65
- .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
66
- overflow: visible !important;
65
+ @media (min-width: 640px) {
66
+ .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
67
+ overflow: visible !important;
68
+ }
67
69
  }
68
70
  .s-comments-item-images-slider .s-modal-close {
69
71
  background-color: transparent;
@@ -302,29 +302,44 @@ export class SallaMultipleBundleProductDetails {
302
302
  }
303
303
  return '0';
304
304
  }
305
+ ensureProductCountLang() {
306
+ if (SallaMultipleBundleProductDetails.productCountLangReady) {
307
+ return;
308
+ }
309
+ salla.lang.add('pages.products.bundle_product_count', {
310
+ ar: '{1} منتج|{2} منتجان|[3,10] :count منتجات|[11,99] :count منتجًا|[0,*] :count منتج',
311
+ en: '{1} :count product|[0,*] :count products',
312
+ });
313
+ SallaMultipleBundleProductDetails.productCountLangReady = true;
314
+ }
305
315
  getSectionSelectionNote(section) {
306
316
  const min = this.getObligatoryMin(section);
307
317
  const max = Number(section.max_obligatory_products) || 0;
308
- const hasMin = min > 0;
309
- const hasMax = max > 0;
310
- if (!hasMin && !hasMax) {
318
+ if (min <= 0 && max <= 0) {
311
319
  return null;
312
320
  }
313
- if (hasMin && hasMax) {
321
+ this.ensureProductCountLang();
322
+ const products = (count) => salla.lang.choice('pages.products.bundle_product_count', count);
323
+ const num = (v) => salla.helpers.number(String(v));
324
+ const ar = (salla.lang.getLocale?.() || 'ar') === 'ar';
325
+ if (min > 0 && max > 0) {
314
326
  if (min === max) {
315
- return salla.lang.getWithDefault('pages.products.bundle_select_exact', `اختر ${min} منتجات`, { count: min });
327
+ return ar ? `اختر ${products(min)}` : `Select ${products(min)}`;
316
328
  }
317
- return salla.lang.getWithDefault('pages.products.bundle_select_range', `اختر من ${min} إلى ${max} منتجات`, { min, max });
329
+ return ar
330
+ ? `اختر من ${num(min)} إلى ${products(max)}`
331
+ : `Select from ${num(min)} to ${products(max)}`;
318
332
  }
319
- if (hasMin) {
320
- return salla.lang.getWithDefault('pages.products.bundle_select_min', `اختر على الأقل ${min} منتجات`, { min });
333
+ if (min > 0) {
334
+ return ar ? `اختر على الأقل ${products(min)}` : `Select at least ${products(min)}`;
321
335
  }
322
- return salla.lang.getWithDefault('pages.products.bundle_select_max', `اختر حتى ${max} منتجات`, { max });
336
+ return ar ? `اختر حتى ${products(max)}` : `Select up to ${products(max)}`;
323
337
  }
324
338
  handleSectionsChange() {
325
339
  this.autoSelectSingleProductSections();
326
340
  }
327
341
  componentWillLoad() {
342
+ this.ensureProductCountLang();
328
343
  this.autoSelectSingleProductSections();
329
344
  }
330
345
  renderAccordionHeader(section) {
@@ -360,9 +375,9 @@ export class SallaMultipleBundleProductDetails {
360
375
  }
361
376
  }
362
377
  render() {
363
- return (h(Host, { key: '716869ccc9770ebbf8d4873c3c9e666c6ce0294c', class: "s-multiple-bundle-product-wrapper" }, h("div", { key: '1d8756931ac2968db4f951b29c409f676498b2bf', class: "s-multiple-bundle-product-wrapper-sections" }, this.sections.map((section, index) => {
378
+ return (h(Host, { key: 'ccc37b0f67b64192f1d7c12660b8c968aa776b15', class: "s-multiple-bundle-product-wrapper" }, h("div", { key: '6529eb0eea69ea8440fbba251df56a3e7bdcff32', class: "s-multiple-bundle-product-wrapper-sections" }, this.sections.map((section, index) => {
364
379
  return (h("salla-accordion", { key: section.id, collapsed: index === 0 ? false : true }, h("salla-accordion-head", null, this.renderAccordionHeader(section)), h("salla-accordion-body", null, h("salla-multiple-bundle-product-slider", { section: section, sectionIndex: index, selectedProducts: this.selectedProducts, selectionLimit: this.getEffectiveMax(section), isSelectionLocked: this.isProductSelectionLocked(section), onProductSelected: this.handleBundleSliderProductSelected, onProductOptionsSelected: this.handleBundleSliderProductOptionsSelected }))));
365
- })), h("salla-multiple-bundle-product-options-modal", { key: '065067fdeb3487f5b0b71649d0f2718ec62caf38' })));
380
+ })), h("salla-multiple-bundle-product-options-modal", { key: 'ea769a631840c75d2906da8f97c7127ddd772f04' })));
366
381
  }
367
382
  static get is() { return "salla-multiple-bundle-product-details"; }
368
383
  static get originalStyleUrls() {
@@ -446,3 +461,4 @@ export class SallaMultipleBundleProductDetails {
446
461
  }];
447
462
  }
448
463
  }
464
+ SallaMultipleBundleProductDetails.productCountLangReady = false;
@@ -4,6 +4,9 @@
4
4
  .visible {
5
5
  visibility: visible;
6
6
  }
7
+ .static {
8
+ position: static;
9
+ }
7
10
  .hidden {
8
11
  display: none;
9
12
  }
@@ -98,6 +98,11 @@
98
98
  grid-column: span 2 / span 2;
99
99
  margin-top: 0px
100
100
  }
101
+ }
102
+ .s-product-options-option-content-color {
103
+ overflow: visible !important
104
+ }
105
+ @media (min-width: 640px) {
101
106
  .s-product-options-option-content-full-width {
102
107
  grid-column: span 3 / span 3
103
108
  }
@@ -615,7 +615,11 @@ export class SallaProductOptions {
615
615
  }
616
616
  return (h(Host, { class: { 's-product-options-wrapper': true, 's-product-options-no-padding': this.noPadding } }, h("salla-conditional-fields", null, this.optionsData.map((option) => h("div", { key: option.id, class: `s-product-options-option-container${option.visibility_condition || this.hideDigitalCardsOptions(option) ? ' hidden' : ''}`, "data-option-id": option.id, ...this.getOptionShownWhen(option) }, option.name === 'splitter' ?
617
617
  this.splitterOption()
618
- : h("div", { class: { "s-product-options-option": true, "s-product-options-option-booking": option.type === DisplayType.BOOKING && salla.url.is_page("cart") }, "data-option-type": option.type, "data-option-required": `${option.required}` }, h("label", { htmlFor: this.generateInputId(option.id), class: `s-product-options-option-label ${this.hideLabel(option) ? 's-product-options-option-label-hidden' : ''}` }, h("b", null, option.name, option.required && h("span", null, " * "), " "), h("small", null, option.placeholder)), h("div", { class: `s-product-options-option-content ${this.hideLabel(option) || (option.type === DisplayType.BOOKING && salla.url.is_page("cart")) ? 's-product-options-option-content-full-width' : ''}` }, this.getDisplayForType(option))))))));
618
+ : h("div", { class: { "s-product-options-option": true, "s-product-options-option-booking": option.type === DisplayType.BOOKING && salla.url.is_page("cart") }, "data-option-type": option.type, "data-option-required": `${option.required}` }, h("label", { htmlFor: this.generateInputId(option.id), class: `s-product-options-option-label ${this.hideLabel(option) ? 's-product-options-option-label-hidden' : ''}` }, h("b", null, option.name, option.required && h("span", null, " * "), " "), h("small", null, option.placeholder)), h("div", { class: {
619
+ 's-product-options-option-content': true,
620
+ 's-product-options-option-content-full-width': this.hideLabel(option) || (option.type === DisplayType.BOOKING && salla.url.is_page('cart')),
621
+ 's-product-options-option-content-color': option.type === DisplayType.COLOR_PICKER,
622
+ } }, this.getDisplayForType(option))))))));
619
623
  }
620
624
  generateUniqueKey(defaultValue) {
621
625
  const contextData = this.bundleContext;
@@ -314,7 +314,15 @@ export class SallaQuickBuy {
314
314
  return salla.api.request('checkout/quick-purchase/' + this.productId, data, 'post');
315
315
  }
316
316
  isGuestCheckout() {
317
- return salla.config.isGuest() && salla.config.get('store.features').includes('guest-checkout') && this.isPhysicalProduct();
317
+ return salla.config.isGuest() && this.isGuestCheckoutAllowed() && this.isPhysicalProduct();
318
+ }
319
+ // store.features scores the shopper's cart; buy_now.guest_checkout scores this product alone
320
+ isGuestCheckoutAllowed() {
321
+ const buyNowGuest = salla.config.get('store.settings.buy_now.guest_checkout');
322
+ if (typeof buyNowGuest === 'boolean' && this.productId == salla.config.get('page.id')) {
323
+ return buyNowGuest;
324
+ }
325
+ return salla.config.get('store.features').includes('guest-checkout');
318
326
  }
319
327
  getRequiredShippingContactFields() {
320
328
  let fields = [];
@@ -149,6 +149,9 @@
149
149
  max-height: min(40vh, 220px);
150
150
  overflow-y: auto;
151
151
  scrollbar-width: thin;
152
+ overscroll-behavior: contain;
153
+ -webkit-overflow-scrolling: touch;
154
+ touch-action: pan-y;
152
155
  }
153
156
 
154
157
  .s-searchable-dropdown-item {
@@ -264,8 +267,11 @@
264
267
  -ms-border-radius: 10px;
265
268
  -o-border-radius: 10px;
266
269
  }
267
- .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
268
- overflow: visible !important;
270
+ @media (min-width: 640px) {
271
+
272
+ .s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open) {
273
+ overflow: visible !important;
274
+ }
269
275
  }
270
276
  .s-searchable-dropdown {
271
277
  position: relative;
@@ -116,19 +116,32 @@ export class SallaSearchableDropdown {
116
116
  }
117
117
  return null;
118
118
  }
119
+ /** Touch-first devices: focusing the search input raises the on-screen keyboard, which covers the list. */
120
+ isCoarsePointer() {
121
+ return !!window.matchMedia?.('(pointer: coarse)').matches;
122
+ }
123
+ /** Mobile bottom-sheet layout: the modal body is the scroll container and must keep scrolling. */
124
+ isNarrowViewport() {
125
+ return !!window.matchMedia?.('(max-width: 639px)').matches;
126
+ }
119
127
  open() {
120
128
  if (this.disabled || this.loading)
121
129
  return;
122
130
  this.isOpen = true;
123
131
  this.focusedIndex = -1;
124
- if (!this.keepParentScroll) {
132
+ if (!this.keepParentScroll && !this.isNarrowViewport()) {
125
133
  this.scrollableAncestor = this.findScrollableAncestor();
126
134
  if (this.scrollableAncestor) {
127
135
  this.scrollableAncestor.style.overflow = 'visible';
128
136
  }
129
137
  }
130
138
  this.dropdownOpened.emit();
131
- requestAnimationFrame(() => this.searchInputRef?.focus());
139
+ requestAnimationFrame(() => {
140
+ if (!this.isCoarsePointer()) {
141
+ this.searchInputRef?.focus();
142
+ }
143
+ this.panelRef?.scrollIntoView?.({ block: 'nearest' });
144
+ });
132
145
  }
133
146
  close() {
134
147
  if (!this.isOpen)
@@ -188,18 +201,18 @@ export class SallaSearchableDropdown {
188
201
  render() {
189
202
  const hasSelection = this.selectedItem != null;
190
203
  const listboxId = `${this.inputId}-listbox`;
191
- return (h(Host, { key: '9bf5bb827d3738d4782736af17630208771342eb', class: "s-searchable-dropdown" }, h("div", { key: '2d2f88a24afa01d6f3e554906ee6d936fede5c02', class: { 's-searchable-dropdown': true, 's-searchable-dropdown--open': this.isOpen } }, this.label && (h("label", { key: 'a3c68d7a0a73229691df9bf30cf973b74ea62999', class: "s-searchable-dropdown-label", htmlFor: this.inputId }, this.label, this.required && h("span", { key: '5c068cd4babd03a5fc3604ad0acc98f4a61f05cc', class: "s-searchable-dropdown-required" }, " *"))), h("div", { key: 'e80750322f9e4d72e45d23f0b830e2b64b5e531e', class: {
204
+ return (h(Host, { key: 'eadd6ff762e66bc3458d19f7d2490da939a268d0', class: "s-searchable-dropdown" }, h("div", { key: '0cb614d73e06626c0cd3b5e5eadc76ebfc296093', class: { 's-searchable-dropdown': true, 's-searchable-dropdown--open': this.isOpen } }, this.label && (h("label", { key: '6f3c440ccad07f3ab271f85f508ddf6294464947', class: "s-searchable-dropdown-label", htmlFor: this.inputId }, this.label, this.required && h("span", { key: '9415e3b6b87e702079c2fc810aa7621e623e5641', class: "s-searchable-dropdown-required" }, " *"))), h("div", { key: '7ed8979005ef68e40976a536ead5da4c736bb0ba', class: {
192
205
  's-searchable-dropdown-trigger': true,
193
206
  's-searchable-dropdown-trigger--disabled': this.disabled || this.loading,
194
207
  's-searchable-dropdown-trigger--open': this.isOpen,
195
- }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": listboxId, "aria-disabled": this.disabled || this.loading ? 'true' : 'false', tabIndex: this.disabled || this.loading ? -1 : 0, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hasSelection ? (h("span", { class: "s-searchable-dropdown-trigger-text" }, this.getDisplayName(this.selectedItem))) : (h("span", { class: "s-searchable-dropdown-trigger-placeholder" }, this.placeholder)), h("i", { key: '030dddd73a8909d51847c6a8ea98b628674002c1', class: {
208
+ }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": listboxId, "aria-disabled": this.disabled || this.loading ? 'true' : 'false', tabIndex: this.disabled || this.loading ? -1 : 0, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hasSelection ? (h("span", { class: "s-searchable-dropdown-trigger-text" }, this.getDisplayName(this.selectedItem))) : (h("span", { class: "s-searchable-dropdown-trigger-placeholder" }, this.placeholder)), h("i", { key: '7df0a517cb916ad6652544c1b738c569ab2f290f', class: {
196
209
  'sicon-keyboard_arrow_down': true,
197
210
  's-searchable-dropdown-trigger-icon': true,
198
211
  's-searchable-dropdown-trigger-icon--open': this.isOpen,
199
- }, "aria-hidden": "true" })), this.isOpen && (h("div", { key: 'ced396bea68ce724a04b4cd2a85c8972ff7f7f3d', class: {
212
+ }, "aria-hidden": "true" })), this.isOpen && (h("div", { key: '797dea9a0b0a26402132f5d33c49b74cde5f617d', class: {
200
213
  's-searchable-dropdown-panel': true,
201
214
  's-searchable-dropdown-panel--up': this.dropUp,
202
- }, ref: (el) => (this.panelRef = el) }, this.searchable && (h("div", { key: '2d93d2156463cb53e4d8422bbbc54a90d58cde49', class: "s-searchable-dropdown-search-wrap" }, h("i", { key: '651f0b1e13e55bd67a0465241bc2d38fbc2192e7', class: "sicon-search s-searchable-dropdown-search-icon", "aria-hidden": "true" }), h("input", { key: '563c06758fdd5027e227218e77b7c2fb29ca07db', ref: (el) => (this.searchInputRef = el), id: this.inputId, type: "text", class: "s-searchable-dropdown-search-input", placeholder: this.placeholder, value: this.clientSearch ? this.clientSearchQuery : this.searchQuery, onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchKeyDown, autocomplete: "off", "aria-autocomplete": "list", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId }))), h("div", { key: '20b26b044bba28fc74c0a0f81c6fcc8dae63d9de', id: listboxId, class: "s-searchable-dropdown-list s-scrollbar", role: "listbox" }, this.renderListContent()))))));
215
+ }, ref: (el) => (this.panelRef = el) }, this.searchable && (h("div", { key: 'e7b7ec94dbc99ac40a1f833b7aa61c5d2a8742b7', class: "s-searchable-dropdown-search-wrap" }, h("i", { key: '59fc0e1986726f99639688c18bc6c501fae966b4', class: "sicon-search s-searchable-dropdown-search-icon", "aria-hidden": "true" }), h("input", { key: '70a63f4297d7f1f204d95336cc6aaea28d8f14e1', ref: (el) => (this.searchInputRef = el), id: this.inputId, type: "text", class: "s-searchable-dropdown-search-input", placeholder: this.placeholder, value: this.clientSearch ? this.clientSearchQuery : this.searchQuery, onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchKeyDown, autocomplete: "off", "aria-autocomplete": "list", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId }))), h("div", { key: 'f998cc8115062d98befdb814cba0a282c491ef4e', id: listboxId, class: "s-searchable-dropdown-list s-scrollbar", role: "listbox" }, this.renderListContent()))))));
203
216
  }
204
217
  renderListContent() {
205
218
  if (this.searching || this.loading) {