@salla.sa/twilight-components 2.14.464 → 2.14.466

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 (317) hide show
  1. package/dist/cjs/{filepond-Dq0RCAR8.js → filepond-ChLzVjJY.js} +1 -1
  2. package/dist/cjs/{filepond-plugin-file-poster-vlhsudC0.js → filepond-plugin-file-poster-CsFmGjnc.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-validate-size-D3o9VZ3s.js → filepond-plugin-file-validate-size-CHsUG4Ey.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-type-CcNddue2.js → filepond-plugin-file-validate-type-BcOZG5x6.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-image-edit-BAkJRbwa.js → filepond-plugin-image-edit-Cq0bUS7X.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-exif-orientation-DoWs2fSc.js → filepond-plugin-image-exif-orientation-D6e7ezt-.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-preview-Mf0Y50dD.js → filepond-plugin-image-preview-B0fvWDqM.js} +1 -1
  8. package/dist/cjs/{functions-Dq9vX-yL.js → functions-DQkYfvtq.js} +1 -1
  9. package/dist/cjs/{index-C_Y9_ajx.js → index-DTSWXcbN.js} +2 -2
  10. package/dist/cjs/{index-Du0w5LbB.js → index-MaPhQdOr.js} +1 -1
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  13. package/dist/cjs/salla-accordion_6.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +88 -33
  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-apps-icons.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-booking-field_7.cjs.entry.js +10 -10
  21. package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-comment-form_8.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-loyalty-banner.cjs.entry.js +2 -2
  44. package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +2 -2
  45. package/dist/cjs/salla-loyalty-panel.cjs.entry.js +3 -3
  46. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
  50. package/dist/cjs/salla-loyalty-reward.cjs.entry.js +2 -2
  51. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-map.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-product-card_2.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-progress-bar.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
  84. package/dist/cjs/salla-reward-action_4.cjs.entry.js +3 -3
  85. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-slider.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  100. package/dist/cjs/{tracked-promise-CM-XtRwn.js → tracked-promise-ePwPYqjc.js} +1 -1
  101. package/dist/cjs/twilight.cjs.js +2 -2
  102. package/dist/cjs/{vanilla-picker-CBWaX0Cc.js → vanilla-picker-l24zONcP.js} +1 -1
  103. package/dist/collection/components/salla-product-availability/salla-product-availability.js +6 -6
  104. package/dist/collection/components/salla-product-options/salla-product-options.css +3 -0
  105. package/dist/collection/components/salla-product-options/salla-product-options.js +84 -28
  106. package/dist/components/index.js +2 -2
  107. package/dist/components/salla-product-availability2.js +4 -4
  108. package/dist/components/salla-product-options2.js +84 -28
  109. package/dist/esm/{filepond-LG0gqlbt.js → filepond-C8Bwo-02.js} +1 -1
  110. package/dist/esm/{filepond-plugin-file-poster-BrnkCG9Z.js → filepond-plugin-file-poster-Bx3Pf2Jt.js} +1 -1
  111. package/dist/esm/{filepond-plugin-file-validate-size-DkckpuUN.js → filepond-plugin-file-validate-size-B855u7Nl.js} +1 -1
  112. package/dist/esm/{filepond-plugin-file-validate-type-CyFr8flY.js → filepond-plugin-file-validate-type-Bi5ftj6I.js} +1 -1
  113. package/dist/esm/{filepond-plugin-image-edit-DcYtodej.js → filepond-plugin-image-edit-BDsvflVi.js} +1 -1
  114. package/dist/esm/{filepond-plugin-image-exif-orientation-6Cq0Lw5b.js → filepond-plugin-image-exif-orientation-CIBvl9lW.js} +1 -1
  115. package/dist/esm/{filepond-plugin-image-preview-BxM-QoVi.js → filepond-plugin-image-preview-iKOdvH4g.js} +1 -1
  116. package/dist/esm/{functions-D5cnKLmS.js → functions-Bc7BItqP.js} +1 -1
  117. package/dist/esm/{index-BKYdKDFz.js → index-B4SEH_Fg.js} +2 -2
  118. package/dist/esm/{index-Bouj54jE.js → index-TDIoPT-F.js} +1 -1
  119. package/dist/esm/loader.js +3 -3
  120. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  121. package/dist/esm/salla-accordion_6.entry.js +1 -1
  122. package/dist/esm/salla-add-product-button_5.entry.js +88 -33
  123. package/dist/esm/salla-advertisement.entry.js +1 -1
  124. package/dist/esm/salla-alert_2.entry.js +1 -1
  125. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  126. package/dist/esm/salla-apps-icons.entry.js +1 -1
  127. package/dist/esm/salla-badge.entry.js +1 -1
  128. package/dist/esm/salla-booking-field_7.entry.js +10 -10
  129. package/dist/esm/salla-bullet-delivery_2.entry.js +1 -1
  130. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  131. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  132. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  133. package/dist/esm/salla-comment-form_8.entry.js +1 -1
  134. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  135. package/dist/esm/salla-contacts.entry.js +1 -1
  136. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  137. package/dist/esm/salla-count-down.entry.js +1 -1
  138. package/dist/esm/salla-custom-fields.entry.js +1 -1
  139. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  140. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  141. package/dist/esm/salla-filters-widget.entry.js +1 -1
  142. package/dist/esm/salla-filters.entry.js +1 -1
  143. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  144. package/dist/esm/salla-gifting.entry.js +1 -1
  145. package/dist/esm/salla-hook.entry.js +1 -1
  146. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  147. package/dist/esm/salla-installment.entry.js +1 -1
  148. package/dist/esm/salla-list-tile.entry.js +1 -1
  149. package/dist/esm/salla-localization-modal.entry.js +1 -1
  150. package/dist/esm/salla-login-modal.entry.js +1 -1
  151. package/dist/esm/salla-loyalty-banner.entry.js +2 -2
  152. package/dist/esm/salla-loyalty-hero_2.entry.js +2 -2
  153. package/dist/esm/salla-loyalty-panel.entry.js +3 -3
  154. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  155. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  156. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  157. package/dist/esm/salla-loyalty-program.entry.js +3 -3
  158. package/dist/esm/salla-loyalty-reward.entry.js +2 -2
  159. package/dist/esm/salla-loyalty.entry.js +1 -1
  160. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  161. package/dist/esm/salla-map.entry.js +1 -1
  162. package/dist/esm/salla-menu.entry.js +1 -1
  163. package/dist/esm/salla-metadata.entry.js +1 -1
  164. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  165. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  166. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  167. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  168. package/dist/esm/salla-notification-item.entry.js +1 -1
  169. package/dist/esm/salla-notifications.entry.js +1 -1
  170. package/dist/esm/salla-offer-modal.entry.js +1 -1
  171. package/dist/esm/salla-offer.entry.js +1 -1
  172. package/dist/esm/salla-order-branch.entry.js +1 -1
  173. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  174. package/dist/esm/salla-order-details-options.entry.js +1 -1
  175. package/dist/esm/salla-order-details.entry.js +1 -1
  176. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  177. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  178. package/dist/esm/salla-order-edit.entry.js +1 -1
  179. package/dist/esm/salla-order-summary.entry.js +1 -1
  180. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  181. package/dist/esm/salla-orders.entry.js +1 -1
  182. package/dist/esm/salla-payments.entry.js +1 -1
  183. package/dist/esm/salla-placeholder.entry.js +1 -1
  184. package/dist/esm/salla-price-range.entry.js +1 -1
  185. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  186. package/dist/esm/salla-product-card_2.entry.js +1 -1
  187. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  188. package/dist/esm/salla-products-list.entry.js +1 -1
  189. package/dist/esm/salla-progress-bar.entry.js +1 -1
  190. package/dist/esm/salla-quick-order.entry.js +1 -1
  191. package/dist/esm/salla-rating-modal.entry.js +1 -1
  192. package/dist/esm/salla-reward-action_4.entry.js +3 -3
  193. package/dist/esm/salla-scopes.entry.js +1 -1
  194. package/dist/esm/salla-search.entry.js +1 -1
  195. package/dist/esm/salla-skeleton.entry.js +1 -1
  196. package/dist/esm/salla-slider.entry.js +1 -1
  197. package/dist/esm/salla-social-share.entry.js +1 -1
  198. package/dist/esm/salla-social.entry.js +1 -1
  199. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  200. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  201. package/dist/esm/salla-tooltip.entry.js +1 -1
  202. package/dist/esm/salla-trust-badges.entry.js +1 -1
  203. package/dist/esm/salla-user-menu.entry.js +1 -1
  204. package/dist/esm/salla-user-profile.entry.js +1 -1
  205. package/dist/esm/salla-user-settings.entry.js +1 -1
  206. package/dist/esm/salla-verify.entry.js +1 -1
  207. package/dist/esm/salla-wallet.entry.js +1 -1
  208. package/dist/esm/{tracked-promise-LXHHL-Cj.js → tracked-promise-DJMfgq3q.js} +1 -1
  209. package/dist/esm/twilight.js +3 -3
  210. package/dist/esm/{vanilla-picker-DJDX3Utz.js → vanilla-picker-BZ3Kpnm6.js} +1 -1
  211. package/dist/twilight/{p-cedbdc1a.entry.js → p-02dac67d.entry.js} +1 -1
  212. package/dist/twilight/{p-a12bab42.entry.js → p-077c5ae5.entry.js} +1 -1
  213. package/dist/twilight/{p-63b0be9c.entry.js → p-089507be.entry.js} +1 -1
  214. package/dist/twilight/{p-563f255b.entry.js → p-08fa3250.entry.js} +1 -1
  215. package/dist/twilight/{p-fb41b74c.entry.js → p-0abda719.entry.js} +1 -1
  216. package/dist/twilight/{p-aa8d7044.entry.js → p-0beaf6f8.entry.js} +1 -1
  217. package/dist/twilight/{p-0a130ee7.entry.js → p-0c721c37.entry.js} +1 -1
  218. package/dist/twilight/{p-a801c990.entry.js → p-1027f1df.entry.js} +1 -1
  219. package/dist/twilight/{p-90d6b296.entry.js → p-173638ad.entry.js} +1 -1
  220. package/dist/twilight/{p-73021799.entry.js → p-19748525.entry.js} +1 -1
  221. package/dist/twilight/{p-fd59813a.entry.js → p-19afb593.entry.js} +1 -1
  222. package/dist/twilight/{p-DWTogPZ7.js → p-1GhsZ-y0.js} +1 -1
  223. package/dist/twilight/{p-db89bf3f.entry.js → p-1beccaa5.entry.js} +1 -1
  224. package/dist/twilight/{p-07f5daee.entry.js → p-204b9c34.entry.js} +1 -1
  225. package/dist/twilight/{p-6cbce099.entry.js → p-20b24e22.entry.js} +1 -1
  226. package/dist/twilight/{p-fa3ca23e.entry.js → p-20bed966.entry.js} +1 -1
  227. package/dist/twilight/{p-23430388.entry.js → p-26ff2da1.entry.js} +1 -1
  228. package/dist/twilight/{p-aeedd692.entry.js → p-2a1c12f9.entry.js} +1 -1
  229. package/dist/twilight/{p-14a55727.entry.js → p-36528e88.entry.js} +1 -1
  230. package/dist/twilight/{p-5467c80a.entry.js → p-39e531f4.entry.js} +1 -1
  231. package/dist/twilight/{p-6e465f07.entry.js → p-3b416cdd.entry.js} +1 -1
  232. package/dist/twilight/{p-1f8714f1.entry.js → p-3e9fb046.entry.js} +1 -1
  233. package/dist/twilight/{p-24b3181b.entry.js → p-42523f08.entry.js} +1 -1
  234. package/dist/twilight/{p-9bd15b46.entry.js → p-46efd843.entry.js} +1 -1
  235. package/dist/twilight/{p-70445d2a.entry.js → p-47df8f81.entry.js} +1 -1
  236. package/dist/twilight/{p-1a8d6e7e.entry.js → p-50b92803.entry.js} +1 -1
  237. package/dist/twilight/{p-94deddd2.entry.js → p-53c1a65f.entry.js} +1 -1
  238. package/dist/twilight/{p-1287dca6.entry.js → p-5647ab30.entry.js} +1 -1
  239. package/dist/twilight/{p-cf0749ee.entry.js → p-5817d5db.entry.js} +1 -1
  240. package/dist/twilight/{p-0d34bbae.entry.js → p-5a8e7bb9.entry.js} +1 -1
  241. package/dist/twilight/{p-1392a936.entry.js → p-6020ddec.entry.js} +1 -1
  242. package/dist/twilight/{p-5247c4b9.entry.js → p-61bbcb2e.entry.js} +6 -6
  243. package/dist/twilight/{p-35cbafe9.entry.js → p-63b6ff19.entry.js} +1 -1
  244. package/dist/twilight/{p-7b70ff0c.entry.js → p-645254eb.entry.js} +1 -1
  245. package/dist/twilight/{p-04f7aaca.entry.js → p-649cca57.entry.js} +1 -1
  246. package/dist/twilight/{p-849f5847.entry.js → p-65cc4abf.entry.js} +1 -1
  247. package/dist/twilight/{p-39824e30.entry.js → p-6667d7e9.entry.js} +1 -1
  248. package/dist/twilight/{p-79bd0e53.entry.js → p-6bf44c4f.entry.js} +1 -1
  249. package/dist/twilight/{p-48d73a85.entry.js → p-6fb05a50.entry.js} +1 -1
  250. package/dist/twilight/{p-9af2296a.entry.js → p-70658c1a.entry.js} +1 -1
  251. package/dist/twilight/{p-d162b0a7.entry.js → p-72627a5b.entry.js} +1 -1
  252. package/dist/twilight/{p-46d41296.entry.js → p-7310af57.entry.js} +1 -1
  253. package/dist/twilight/{p-c2a02536.entry.js → p-78cc1984.entry.js} +1 -1
  254. package/dist/twilight/{p-417654a0.entry.js → p-7a144cce.entry.js} +1 -1
  255. package/dist/twilight/{p-efd2f91b.entry.js → p-7a238d37.entry.js} +1 -1
  256. package/dist/twilight/{p-6b1a3260.entry.js → p-7c46d055.entry.js} +1 -1
  257. package/dist/twilight/{p-68897e83.entry.js → p-7dc4a6ce.entry.js} +1 -1
  258. package/dist/twilight/{p-43f76921.entry.js → p-7e0bfa67.entry.js} +1 -1
  259. package/dist/twilight/{p-54c38490.entry.js → p-7e0f8832.entry.js} +1 -1
  260. package/dist/twilight/{p-812ed11c.entry.js → p-7f8b4a78.entry.js} +1 -1
  261. package/dist/twilight/{p-50857d82.entry.js → p-83beb2f7.entry.js} +1 -1
  262. package/dist/twilight/{p-64827a3b.entry.js → p-83f3fe92.entry.js} +1 -1
  263. package/dist/twilight/{p-541ed35b.entry.js → p-88a26183.entry.js} +1 -1
  264. package/dist/twilight/{p-840317dd.entry.js → p-88c110ae.entry.js} +1 -1
  265. package/dist/twilight/{p-791c3a09.entry.js → p-921b23fc.entry.js} +1 -1
  266. package/dist/twilight/{p-f4ac1b81.entry.js → p-92ecbfb3.entry.js} +1 -1
  267. package/dist/twilight/{p-372b9e6e.entry.js → p-96489529.entry.js} +1 -1
  268. package/dist/twilight/{p-4306a6b4.entry.js → p-999abe04.entry.js} +1 -1
  269. package/dist/twilight/{p-cd4373fa.entry.js → p-99a57ad1.entry.js} +1 -1
  270. package/dist/twilight/{p-5875d206.entry.js → p-9f817867.entry.js} +1 -1
  271. package/dist/twilight/{p-BKYdKDFz.js → p-B4SEH_Fg.js} +1 -1
  272. package/dist/twilight/{p-BufqyoSJ.js → p-B8tpOftS.js} +1 -1
  273. package/dist/twilight/{p-BkQIaZDO.js → p-BNurXH-d.js} +1 -1
  274. package/dist/twilight/{p-iKu9tB2v.js → p-BPrbqbi4.js} +1 -1
  275. package/dist/twilight/{p-2zabQhBT.js → p-BhwNzoAX.js} +1 -1
  276. package/dist/twilight/p-BnjD0Cne.js +9 -0
  277. package/dist/twilight/{p-DLKNNS2k.js → p-Bol9M57m.js} +2 -2
  278. package/dist/twilight/{p-DI488WUS.js → p-Cip0ZIcP.js} +1 -1
  279. package/dist/twilight/{p-DzCA9_B3.js → p-CzKuXgcx.js} +1 -1
  280. package/dist/twilight/{p-CQB_V3FA.js → p-DCiLQw-U.js} +1 -1
  281. package/dist/twilight/{p-BFH3xL9X.js → p-DqcHIrMk.js} +1 -1
  282. package/dist/twilight/{p-7228e33d.entry.js → p-a0433089.entry.js} +1 -1
  283. package/dist/twilight/{p-cc14b5db.entry.js → p-a366dff0.entry.js} +1 -1
  284. package/dist/twilight/{p-ae0dce36.entry.js → p-a8a43d8f.entry.js} +1 -1
  285. package/dist/twilight/{p-cfe30cc2.entry.js → p-a94c8805.entry.js} +1 -1
  286. package/dist/twilight/{p-d7bf8853.entry.js → p-aaf77847.entry.js} +1 -1
  287. package/dist/twilight/{p-5acfc339.entry.js → p-ac2979bf.entry.js} +1 -1
  288. package/dist/twilight/{p-f1ea88f1.entry.js → p-ac91aa4f.entry.js} +1 -1
  289. package/dist/twilight/{p-b92ee3f0.entry.js → p-ace778dd.entry.js} +1 -1
  290. package/dist/twilight/{p-f69d1803.entry.js → p-afb4ffe9.entry.js} +1 -1
  291. package/dist/twilight/{p-ea2c64f6.entry.js → p-b1c9125f.entry.js} +1 -1
  292. package/dist/twilight/{p-0f07f679.entry.js → p-b22966df.entry.js} +1 -1
  293. package/dist/twilight/p-b3456579.entry.js +4 -0
  294. package/dist/twilight/{p-daca1fb8.entry.js → p-b99ecd2c.entry.js} +1 -1
  295. package/dist/twilight/{p-2565b69e.entry.js → p-c360bc76.entry.js} +1 -1
  296. package/dist/twilight/{p-dd0523be.entry.js → p-c4a2f0c4.entry.js} +1 -1
  297. package/dist/twilight/{p-bcc9afc0.entry.js → p-c5b5162c.entry.js} +1 -1
  298. package/dist/twilight/{p-6cc61795.entry.js → p-c605f897.entry.js} +1 -1
  299. package/dist/twilight/{p-fe20b32b.entry.js → p-d19c0be3.entry.js} +1 -1
  300. package/dist/twilight/{p-90a12321.entry.js → p-d1be0cf0.entry.js} +1 -1
  301. package/dist/twilight/{p-185c4279.entry.js → p-d33fe4fe.entry.js} +1 -1
  302. package/dist/twilight/{p-b7b76e86.entry.js → p-d98c3e96.entry.js} +1 -1
  303. package/dist/twilight/{p-1d910a33.entry.js → p-e0bafef7.entry.js} +1 -1
  304. package/dist/twilight/{p-fa8f835e.entry.js → p-e0e8b5ee.entry.js} +1 -1
  305. package/dist/twilight/{p-d4bb3d7d.entry.js → p-eb7e08dd.entry.js} +1 -1
  306. package/dist/twilight/{p-67cd787e.entry.js → p-eebe55bd.entry.js} +1 -1
  307. package/dist/twilight/{p-25f61041.entry.js → p-f4326883.entry.js} +1 -1
  308. package/dist/twilight/{p-3d8e3443.entry.js → p-f4a5521e.entry.js} +1 -1
  309. package/dist/twilight/{p-f47abd29.entry.js → p-fc2c74e3.entry.js} +1 -1
  310. package/dist/twilight/{p-b44abb00.entry.js → p-fe6a634f.entry.js} +1 -1
  311. package/dist/twilight/twilight.esm.js +1 -1
  312. package/dist/types/components/salla-product-availability/salla-product-availability.d.ts +1 -1
  313. package/dist/types/components/salla-product-options/salla-product-options.d.ts +11 -0
  314. package/dist/types/components.d.ts +2 -2
  315. package/package.json +5 -5
  316. package/dist/twilight/p-89fabe98.entry.js +0 -4
  317. package/dist/twilight/p-XrVgBuSq.js +0 -9
@@ -79,7 +79,7 @@ export class SallaProductAvailability {
79
79
  return salla.api.product.availabilitySubscribe(payload)
80
80
  .then(() => this.isSubscribed = true);
81
81
  }
82
- if (this.channels_.includes('sms')) {
82
+ if (this.channels_.includes('sms') || this.channels_.includes('whatsapp')) {
83
83
  let { phone, countryCode } = await this.mobileInput.getValues();
84
84
  payload['country_code'] = countryCode;
85
85
  payload['phone'] = phone;
@@ -122,7 +122,7 @@ export class SallaProductAvailability {
122
122
  return;
123
123
  !isEmailValid && this.validateField(this.email, salla.lang.get('common.elements.email_is_valid'));
124
124
  }
125
- if (this.channels_.includes('sms')) {
125
+ if (this.channels_.includes('sms') || this.channels_.includes('whatsapp')) {
126
126
  const isPhoneValid = await this.mobileInput.isValid();
127
127
  if (isPhoneValid)
128
128
  return;
@@ -137,7 +137,7 @@ export class SallaProductAvailability {
137
137
  field.nextElementSibling['innerText'] = '* ' + errorMsg;
138
138
  }
139
139
  render() {
140
- return (h(Host, { key: '6471f72c69d8293fa49ba9478e395274af57dc6f', class: "s-product-availability-wrap" }, this.isSubscribedToProduct
140
+ return (h(Host, { key: '144b0687a0e527fa493aa701c334db76a7b42164', class: "s-product-availability-wrap" }, this.isSubscribedToProduct
141
141
  ? h("div", { class: "s-product-availability-subscribed" }, h("span", { innerHTML: BellRingIcon, class: "s-product-availability-subs-icon" }), salla.lang.get('pages.products.notify_availability_success'))
142
142
  :
143
143
  h("salla-button", { width: "wide", onClick: () => this.isUser ? this.submit() : this.openModel() }, salla.lang.get('pages.products.notify_availability')), this.isUser || this.isSubscribedToProduct ? '' : this.renderModal()));
@@ -147,7 +147,7 @@ export class SallaProductAvailability {
147
147
  h("label", { class: "s-product-availability-label" }, salla.lang.get('common.elements.email')),
148
148
  h("input", { class: "s-product-availability-input", onKeyDown: e => this.typing(e), placeholder: salla.lang.get('common.elements.email_placeholder') || 'your@email.com', ref: el => this.email = el, type: "email" }),
149
149
  h("span", { class: "s-product-availability-error-msg" })
150
- ] : '', this.channels_.includes('sms') ? [
150
+ ] : '', this.channels_.includes('sms') || this.channels_.includes('whatsapp') ? [
151
151
  h("label", { class: "s-product-availability-label" }, salla.lang.get('common.elements.mobile')),
152
152
  h("salla-tel-input", { ref: el => this.mobileInput = el, onKeyDown: e => this.typing(e) })
153
153
  ] : ''), h("div", { slot: "footer", class: "s-product-availability-footer" }, h("salla-button", { class: "modal-cancel-btn", width: "wide", color: "light", fill: "outline", onClick: () => this.modal.close() }, salla.lang.get('common.elements.cancel')), h("salla-button", { class: "submit-btn", "loader-position": 'center', width: "wide", ref: btn => this.btn = btn, onClick: () => this.submit() }, salla.lang.get('common.elements.submit')))));
@@ -170,8 +170,8 @@ export class SallaProductAvailability {
170
170
  "attribute": "channels",
171
171
  "mutable": false,
172
172
  "complexType": {
173
- "original": "'sms' | 'email' | 'sms,email'",
174
- "resolved": "\"email\" | \"sms\" | \"sms,email\"",
173
+ "original": "'sms' | 'email' | 'sms,email' | 'whatsapp' | 'sms,whatsapp'",
174
+ "resolved": "\"email\" | \"sms\" | \"sms,email\" | \"sms,whatsapp\" | \"whatsapp\"",
175
175
  "references": {}
176
176
  },
177
177
  "required": false,
@@ -0,0 +1,3 @@
1
+ .s-product-options-option-stock-out {
2
+ opacity: 0.5;
3
+ }
@@ -27,6 +27,7 @@ export class SallaProductOptions {
27
27
  this.availableDigitalCardValues = [];
28
28
  this.userInitiatedValidation = false;
29
29
  this.isCartMode = false;
30
+ this.availabilityMap = {};
30
31
  this.outSkus = [];
31
32
  /**
32
33
  * Avoid selection of previous default or selected card value option
@@ -117,12 +118,14 @@ export class SallaProductOptions {
117
118
  */
118
119
  async setOptionsData(optionsData) {
119
120
  this.optionsData = optionsData;
120
- const that = this;
121
- this.optionsData[0]?.details?.forEach(function (detail) {
121
+ this.outSkus = [];
122
+ this.optionsData[0]?.details?.forEach(detail => {
122
123
  Object.entries(detail.skus_availability || {})
123
- .filter(sku => !sku[1])
124
- .map(sku => that.outSkus.push(Number(sku[0])));
124
+ .filter(([, available]) => !available)
125
+ .forEach(([sku]) => this.outSkus.push(Number(sku)));
125
126
  });
127
+ this.fillSelectedOptions();
128
+ this.computeAvailability();
126
129
  }
127
130
  /**
128
131
  * Get the current options state, including selected values/details.
@@ -308,8 +311,9 @@ export class SallaProductOptions {
308
311
  */
309
312
  setSelectedSkus() {
310
313
  this.selectedSkus = this.selectedOptions.map(detail => Object.keys(detail.skus_availability || {}))
311
- .reduce((p, c) => p.filter(e => c.includes(e)), []) // Initialize accumulator as an empty array
314
+ .reduce((p, c) => p.filter(e => c.includes(e)), [])
312
315
  .map(sku => Number(sku));
316
+ this.computeAvailability();
313
317
  }
314
318
  handleRequiredMultipleOptions(option) {
315
319
  if (option.type !== DisplayType.MULTIPLE_OPTIONS || !option.required) {
@@ -638,6 +642,7 @@ export class SallaProductOptions {
638
642
  this.disableCardValue = false;
639
643
  this.canDisabled = true;
640
644
  this.fillSelectedOptions();
645
+ this.computeAvailability();
641
646
  }
642
647
  /**
643
648
  * Enable user-initiated validation mode so invalid fields will scroll into view
@@ -748,22 +753,59 @@ export class SallaProductOptions {
748
753
  //and because we are using this inside select option, we need to replace the html currency symbol with the store currency symbol
749
754
  return detailName.replace('<i class=sicon-sar></i>', salla.config.currency()?.symbol || 'ر.س');
750
755
  }
751
- isOptionDetailOut(detail) {
752
- if (detail.is_out || !detail.skus_availability || !this.selectedSkus?.length) {
753
- return detail.is_out;
754
- }
755
- const isDetailSelected = this.selectedOptions.filter(option => option.id === detail.id).length;
756
- //if the current options is the only selected option, so we are sure that it's not out, because there is no other options selected yet
757
- if (isDetailSelected && this.selectedOptions.length === 1) {
758
- return false;
756
+ /**
757
+ * Builds a per-detail availability map by intersecting SKUs across all currently
758
+ * selected option groups. Supports any number of option groups generically.
759
+ *
760
+ * Status values:
761
+ * 'available' – at least one in-stock SKU exists for this detail + current selections
762
+ * 'out_of_stock'– all matching SKUs are out of stock
763
+ * 'impossible' – no SKU exists for this detail + current selections (invalid combination)
764
+ */
765
+ computeAvailability() {
766
+ const map = {};
767
+ if (!this.optionsData?.length) {
768
+ this.availabilityMap = map;
769
+ return;
759
770
  }
760
- //if current details has sku in the possible outSkus it's out for sure
761
- if (isDetailSelected) {
762
- //here we will get the possible outSkus for current selected options
763
- const outSelectableSkus = this.selectedSkus.filter(sku => this.outSkus.includes(sku));
764
- return Object.keys(detail.skus_availability).some(sku => outSelectableSkus.includes(Number(sku)));
771
+ const variantGroups = this.optionsData.filter(opt => opt.details?.some(d => d.skus_availability && Object.keys(d.skus_availability).length > 0));
772
+ const isSingleGroup = variantGroups.length <= 1;
773
+ for (const optionGroup of variantGroups) {
774
+ const otherSelected = this.selectedOptions.filter(s => s.option_id !== optionGroup.id);
775
+ for (const detail of optionGroup.details) {
776
+ if (detail.is_out) {
777
+ map[detail.id] = 'out_of_stock';
778
+ continue;
779
+ }
780
+ const skusAvail = detail.skus_availability;
781
+ if (!skusAvail || !Object.keys(skusAvail).length) {
782
+ map[detail.id] = 'available';
783
+ continue;
784
+ }
785
+ const detailSkus = Object.keys(skusAvail).map(Number);
786
+ // No cross-group context yet — evaluate this detail's own SKUs directly
787
+ if (isSingleGroup || otherSelected.length === 0) {
788
+ map[detail.id] = detailSkus.some(sku => skusAvail[sku]) ? 'available' : 'out_of_stock';
789
+ continue;
790
+ }
791
+ // Intersect this detail's SKUs with the SKUs of each other selected detail
792
+ let candidates = detailSkus;
793
+ for (const other of otherSelected) {
794
+ const otherSkus = Object.keys(other.skus_availability || {}).map(Number);
795
+ candidates = candidates.filter(sku => otherSkus.includes(sku));
796
+ }
797
+ if (!candidates.length) {
798
+ map[detail.id] = 'impossible';
799
+ continue;
800
+ }
801
+ map[detail.id] = candidates.some(sku => skusAvail[sku]) ? 'available' : 'out_of_stock';
802
+ }
765
803
  }
766
- return this.selectedOptions.some(option => option.is_out && option.option_id !== detail.option_id);
804
+ this.availabilityMap = map;
805
+ }
806
+ isOptionDetailOut(detail) {
807
+ const status = this.availabilityMap[detail.id];
808
+ return status !== undefined ? status !== 'available' : (detail.is_out ?? false);
767
809
  }
768
810
  /**
769
811
  * Renders a single input element (radio or checkbox) for an option detail.
@@ -776,10 +818,15 @@ export class SallaProductOptions {
776
818
  */
777
819
  renderInput(type, detail, option, isRequired, name, buttonStyle) {
778
820
  const id = this.generateUniqueKey(`${type}-${option.id}-${detail.id}`);
779
- const isDisabled = this.isOptionDetailOut(detail);
821
+ const isOutOfStock = this.isOptionDetailOut(detail);
780
822
  return (h("label", { class: {
781
- "s-product-options-disabled": isDisabled,
782
- } }, h("input", { id: id, type: type, name: name, value: detail.id, disabled: isDisabled, required: isRequired, checked: detail.is_selected, onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option) }), h("div", { class: { "s-product-options-grid-mode-span": buttonStyle, "s-product-options-disabled": isDisabled } }, this.getOptionDetailName(detail))));
823
+ "s-product-options-disabled": this.canDisabled && isOutOfStock,
824
+ "s-product-options-option-stock-out": isOutOfStock,
825
+ } }, h("input", { id: id, type: type, name: name, value: detail.id, disabled: this.canDisabled && isOutOfStock, required: isRequired, checked: detail.is_selected, onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option) }), h("div", { class: {
826
+ "s-product-options-grid-mode-span": buttonStyle,
827
+ "s-product-options-disabled": this.canDisabled && isOutOfStock,
828
+ "s-product-options-option-stock-out": isOutOfStock,
829
+ } }, this.getOptionDetailName(detail))));
783
830
  }
784
831
  /**
785
832
  * Renders a collection of input elements for all details of an option.
@@ -852,15 +899,22 @@ export class SallaProductOptions {
852
899
  }
853
900
  //@ts-ignore
854
901
  colorOption(option) {
855
- return (h("fieldset", { class: "s-product-options-colors-wrapper" }, option?.details.map((detail) => (h("div", { class: "s-product-options-colors-item", key: detail.id }, h("input", { type: "radio", value: detail.id, required: !option.visibility_condition && option.required, checked: detail.is_selected, name: this.generateInputName(option.id), disabled: this.canDisabled && this.isOptionDetailOut(detail), id: this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`), onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option), "data-img-id": detail.option_value }), h("label", { htmlFor: this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`), "data-img-id": detail.option_value }, h("span", { style: { backgroundColor: detail.color } }), h("div", { innerHTML: this.getOptionDetailName(detail, true, option.type) })))))));
902
+ return (h("fieldset", { class: "s-product-options-colors-wrapper" }, option?.details.map((detail) => {
903
+ const isOutOfStock = this.isOptionDetailOut(detail);
904
+ return (h("div", { class: {
905
+ "s-product-options-colors-item": true,
906
+ "s-product-options-option-stock-out": isOutOfStock,
907
+ }, key: detail.id }, h("input", { type: "radio", value: detail.id, required: !option.visibility_condition && option.required, checked: detail.is_selected, name: this.generateInputName(option.id), disabled: this.canDisabled && isOutOfStock, id: this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`), onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option), "data-img-id": detail.option_value }), h("label", { htmlFor: this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`), "data-img-id": detail.option_value }, h("span", { style: { backgroundColor: detail.color } }), h("div", { innerHTML: this.getOptionDetailName(detail, true, option.type) }))));
908
+ })));
856
909
  }
857
910
  //@ts-ignore
858
911
  thumbnailOption(option) {
859
912
  return h("div", { class: "s-product-options-thumbnails-wrapper" }, option.details.map((detail) => {
860
- return h("div", { key: detail.id }, h("input", { type: "radio", value: detail.id, "data-itemid": detail.id, required: !option.visibility_condition && option.required, checked: detail.is_selected, name: this.generateInputName(option.id), "data-img-id": detail.option_value, disabled: this.canDisabled && this.isOptionDetailOut(detail), id: this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`), onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option) }), h("label", { htmlFor: this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`), "data-img-id": detail.option_value, class: "go-to-slide" }, h("img", { "data-src": detail.image, src: detail.image, title: detail.name, alt: detail.name }), h("span", { innerHTML: CheckCircleIcon, class: "s-product-options-thumbnails-icon" }), this.isOptionDetailOut(detail) ?
913
+ const isOutOfStock = this.isOptionDetailOut(detail);
914
+ return h("div", { key: detail.id, class: { "s-product-options-option-stock-out": isOutOfStock } }, h("input", { type: "radio", value: detail.id, "data-itemid": detail.id, required: !option.visibility_condition && option.required, checked: detail.is_selected, name: this.generateInputName(option.id), "data-img-id": detail.option_value, disabled: this.canDisabled && isOutOfStock, id: this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`), onInvalid: (e) => this.invalidHandler(e, option), onChange: (e) => this.changedHandler(e, option) }), h("label", { htmlFor: this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`), "data-img-id": detail.option_value, class: "go-to-slide" }, h("img", { "data-src": detail.image, src: detail.image, title: detail.name, alt: detail.name }), h("span", { innerHTML: CheckCircleIcon, class: "s-product-options-thumbnails-icon" }), isOutOfStock ?
861
915
  [
862
- h("small", { key: detail.id, class: "s-product-options-thumbnails-stock-badge" }, this.outOfStockText),
863
- this.canDisabled ? h("div", { key: detail.id, class: "s-product-options-thumbnails-badge-overlay" }) : '',
916
+ h("small", { key: `badge-${detail.id}`, class: "s-product-options-thumbnails-stock-badge" }, this.outOfStockText),
917
+ this.canDisabled ? h("div", { key: `overlay-${detail.id}`, class: "s-product-options-thumbnails-badge-overlay" }) : '',
864
918
  ]
865
919
  : ''), h("p", null, this.getOptionDetailName(detail, false), " "));
866
920
  }));
@@ -875,7 +929,8 @@ export class SallaProductOptions {
875
929
  }
876
930
  countryOption(option) {
877
931
  return h("div", { class: "s-product-options-digital-card-wrapper" }, option.details.map((detail) => {
878
- return h("label", { htmlFor: this.generateUniqueKey(detail.id.toString()), key: detail.id, class: { "s-product-options-digital-card-option": true, "s-product-options-digital-card-option-stock-out": detail.is_out } }, h("input", { id: this.generateUniqueKey(detail.id.toString()), type: "radio", class: "s-form-control s-product-options-digital-card-input", value: detail.id, name: this.generateInputName(option.id), disabled: detail.is_out, required: !option.visibility_condition && option.required, onInvalid: (e) => this.invalidHandler(e, option), onChange: e => this.changedHandler(e, option), onClick: () => { this.disableCardValue = false; }, ...(salla.url.is_page("cart") ? { defaultChecked: this.getSelectedDigitalCardOptions(option)?.id === detail.id } : {}) }), h("img", { loading: "lazy", alt: detail.code, height: 24, width: 24, class: "s-product-options-country-flag", src: `https://cdn.assets.salla.network/prod/admin/cp/assets/flags/1x1/${String(detail.code).toLocaleLowerCase()}.svg`, onError: e => {
932
+ const isOutOfStock = this.isOptionDetailOut(detail);
933
+ return h("label", { htmlFor: this.generateUniqueKey(detail.id.toString()), key: detail.id, class: { "s-product-options-digital-card-option": true, "s-product-options-digital-card-option-stock-out": isOutOfStock, "s-product-options-option-stock-out": isOutOfStock } }, h("input", { id: this.generateUniqueKey(detail.id.toString()), type: "radio", class: "s-form-control s-product-options-digital-card-input", value: detail.id, name: this.generateInputName(option.id), disabled: this.canDisabled && isOutOfStock, required: !option.visibility_condition && option.required, onInvalid: (e) => this.invalidHandler(e, option), onChange: e => this.changedHandler(e, option), onClick: () => { this.disableCardValue = false; }, ...(salla.url.is_page("cart") ? { defaultChecked: this.getSelectedDigitalCardOptions(option)?.id === detail.id } : {}) }), h("img", { loading: "lazy", alt: detail.code, height: 24, width: 24, class: "s-product-options-country-flag", src: `https://cdn.assets.salla.network/prod/admin/cp/assets/flags/1x1/${String(detail.code).toLocaleLowerCase()}.svg`, onError: e => {
879
934
  e.currentTarget.onerror = null;
880
935
  e.currentTarget.src =
881
936
  salla.url.cdn('images/globe.svg');
@@ -1027,7 +1082,8 @@ export class SallaProductOptions {
1027
1082
  "disableCardValue": {},
1028
1083
  "availableDigitalCardValues": {},
1029
1084
  "userInitiatedValidation": {},
1030
- "isCartMode": {}
1085
+ "isCartMode": {},
1086
+ "availabilityMap": {}
1031
1087
  };
1032
1088
  }
1033
1089
  static get events() {