@salla.sa/twilight-components 3.0.24 → 3.0.25
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.
- package/dist/cjs/{Helper-sq6ztayx.js → Helper-BSFw7uVh.js} +1 -1
- package/dist/cjs/{filepond-BMxlEH8M.js → filepond-DzJcpvBM.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-DVSz4StJ.js → filepond-plugin-file-poster-BILkbyw_.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-CXJiLSzt.js → filepond-plugin-file-validate-size-DIJUAZji.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-DWK85msl.js → filepond-plugin-file-validate-type-4lpOf3hf.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-BHttJI5X.js → filepond-plugin-image-edit-DtE3Wj_4.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-DTKIO2zE.js → filepond-plugin-image-exif-orientation-Dc_jwifJ.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-BaRxwhFa.js → filepond-plugin-image-preview-D_8qt0dd.js} +1 -1
- package/dist/cjs/{index-BJ3-fFSF.js → index-D0d25H-r.js} +2 -2
- package/dist/cjs/{intlTelInput-DNoOb73M.js → intlTelInput-DqmuleM6.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
- package/dist/cjs/salla-add-product-button_5.cjs.entry.js +2 -2
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-applied-filters.cjs.entry.js +2 -2
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-attachment-view_9.cjs.entry.js +11 -11
- package/dist/cjs/salla-badge.cjs.entry.js +1 -1
- package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
- package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +5 -1
- package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-form_9.cjs.entry.js +2 -2
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +628 -19
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
- package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
- package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
- package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
- package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
- package/dist/cjs/salla-filters.cjs.entry.js +2 -2
- package/dist/cjs/salla-free-shipping-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-free-shipping-tag.cjs.entry.js +1 -1
- package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
- package/dist/cjs/salla-gift-card-redeem_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
- package/dist/cjs/salla-hook.cjs.entry.js +1 -1
- package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
- package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
- package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-menu.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-mobile-update-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
- package/dist/cjs/salla-next-order-coupon.cjs.entry.js +8 -1
- package/dist/cjs/salla-notification-item_2.cjs.entry.js +2 -2
- package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-items.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-payment.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-rewards.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-shipments.cjs.entry.js +2 -11
- package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-orders.cjs.entry.js +2 -2
- package/dist/cjs/salla-payments.cjs.entry.js +1 -1
- package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
- package/dist/cjs/salla-products-list.cjs.entry.js +2 -2
- package/dist/cjs/salla-products-slider.cjs.entry.js +2 -2
- package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +2 -2
- package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
- package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
- package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-search.cjs.entry.js +2 -2
- package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
- package/dist/cjs/salla-social.cjs.entry.js +1 -1
- package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
- package/dist/cjs/salla-thank-you-header.cjs.entry.js +1 -1
- package/dist/cjs/salla-thank-you-page.cjs.entry.js +1 -1
- package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
- package/dist/cjs/salla-wishlist-summary.cjs.entry.js +2 -2
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/cjs/{vanilla-picker-CceY3g8c.js → vanilla-picker-DP9Hy8IR.js} +1 -1
- package/dist/collection/components/salla-cart-item-offers/salla-cart-item-offers.js +4 -0
- package/dist/collection/components/salla-conditional-offer/salla-conditional-offer.css +139 -0
- package/dist/collection/components/salla-conditional-offer/salla-conditional-offer.js +568 -14
- package/dist/collection/components/salla-next-order-coupon/salla-next-order-coupon.js +7 -0
- package/dist/collection/components/salla-order-shipments/salla-order-shipments.js +1 -10
- package/dist/collection/shared/cart-free-gifts.js +42 -1
- package/dist/collection/shared/offer-stages.js +22 -3
- package/dist/components/index.js +2 -2
- package/dist/components/salla-cart-item-offers.js +4 -0
- package/dist/components/salla-conditional-offer.js +631 -18
- package/dist/components/salla-next-order-coupon.js +7 -0
- package/dist/components/salla-order-shipments.js +1 -10
- package/dist/docs.json +2 -2
- package/dist/esm/{Helper-BwzPfwZJ.js → Helper-DmnUAusv.js} +1 -1
- package/dist/esm/{filepond-JNV-1zqR.js → filepond-DZbzdjkK.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-nFqNHCag.js → filepond-plugin-file-poster-D9cjvoj-.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-P3KmOTH8.js → filepond-plugin-file-validate-size-D-kjllC-.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-BV0Ctr7U.js → filepond-plugin-file-validate-type-D9hsNaJl.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-D62rKlfH.js → filepond-plugin-image-edit-CDHAxJY8.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-DerapxIk.js → filepond-plugin-image-exif-orientation-BGKiclwK.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-BlRd2Ble.js → filepond-plugin-image-preview-BUjvnt8G.js} +1 -1
- package/dist/esm/{index-CtoXzf1y.js → index-ze9e0dxM.js} +2 -2
- package/dist/esm/{intlTelInput-BZz-u5_w.js → intlTelInput-BkYRB6km.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion-body_2.entry.js +1 -1
- package/dist/esm/salla-accordion_6.entry.js +2 -2
- package/dist/esm/salla-add-product-button_5.entry.js +2 -2
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-alert_2.entry.js +1 -1
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-applied-filters.entry.js +2 -2
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-attachment-view_9.entry.js +11 -11
- package/dist/esm/salla-badge.entry.js +1 -1
- package/dist/esm/salla-basket-gap.entry.js +1 -1
- package/dist/esm/salla-bullet-delivery_3.entry.js +1 -1
- package/dist/esm/salla-cart-coupons.entry.js +1 -1
- package/dist/esm/salla-cart-item-offers_2.entry.js +5 -1
- package/dist/esm/salla-cart-summary-card.entry.js +1 -1
- package/dist/esm/salla-cashback-banner.entry.js +1 -1
- package/dist/esm/salla-comment-factors.entry.js +1 -1
- package/dist/esm/salla-comment-form_9.entry.js +2 -2
- package/dist/esm/salla-conditional-offer.entry.js +628 -19
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-cookies-bar.entry.js +1 -1
- package/dist/esm/salla-count-down.entry.js +1 -1
- package/dist/esm/salla-custom-fields.entry.js +1 -1
- package/dist/esm/salla-delivery-promise.entry.js +1 -1
- package/dist/esm/salla-edit-order-button.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +2 -2
- package/dist/esm/salla-filters.entry.js +2 -2
- package/dist/esm/salla-free-shipping-banner.entry.js +1 -1
- package/dist/esm/salla-free-shipping-tag.entry.js +1 -1
- package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
- package/dist/esm/salla-gift-card-redeem_2.entry.js +1 -1
- package/dist/esm/salla-gifting.entry.js +1 -1
- package/dist/esm/salla-hook.entry.js +1 -1
- package/dist/esm/salla-infinite-scroll.entry.js +2 -2
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-list-tile.entry.js +1 -1
- package/dist/esm/salla-localization-modal.entry.js +1 -1
- package/dist/esm/salla-login-modal.entry.js +1 -1
- package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
- package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
- package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
- package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-loyalty.entry.js +1 -1
- package/dist/esm/salla-maintenance-alert.entry.js +1 -1
- package/dist/esm/salla-map_3.entry.js +1 -1
- package/dist/esm/salla-menu.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-mobile-update-modal.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
- package/dist/esm/salla-next-order-coupon.entry.js +8 -1
- package/dist/esm/salla-notification-item_2.entry.js +2 -2
- package/dist/esm/salla-offer-modal.entry.js +1 -1
- package/dist/esm/salla-offer.entry.js +1 -1
- package/dist/esm/salla-order-branch.entry.js +1 -1
- package/dist/esm/salla-order-cancel.entry.js +1 -1
- package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
- package/dist/esm/salla-order-details-options.entry.js +1 -1
- package/dist/esm/salla-order-details.entry.js +1 -1
- package/dist/esm/salla-order-edit-item.entry.js +1 -1
- package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
- package/dist/esm/salla-order-edit.entry.js +1 -1
- package/dist/esm/salla-order-items.entry.js +1 -1
- package/dist/esm/salla-order-options-modal.entry.js +1 -1
- package/dist/esm/salla-order-payment.entry.js +1 -1
- package/dist/esm/salla-order-rewards.entry.js +1 -1
- package/dist/esm/salla-order-shipments.entry.js +2 -11
- package/dist/esm/salla-order-summary.entry.js +1 -1
- package/dist/esm/salla-order-totals-card.entry.js +1 -1
- package/dist/esm/salla-orders.entry.js +2 -2
- package/dist/esm/salla-payments.entry.js +1 -1
- package/dist/esm/salla-placeholder.entry.js +1 -1
- package/dist/esm/salla-price-range.entry.js +1 -1
- package/dist/esm/salla-product-card-embed.entry.js +1 -1
- package/dist/esm/salla-product-card.entry.js +1 -1
- package/dist/esm/salla-product-size-guide.entry.js +1 -1
- package/dist/esm/salla-products-list.entry.js +2 -2
- package/dist/esm/salla-products-slider.entry.js +2 -2
- package/dist/esm/salla-quick-order.entry.js +1 -1
- package/dist/esm/salla-rating-modal-v2.entry.js +2 -2
- package/dist/esm/salla-rating-modal.entry.js +2 -2
- package/dist/esm/salla-review-factors-tags.entry.js +1 -1
- package/dist/esm/salla-review-order-item.entry.js +1 -1
- package/dist/esm/salla-scopes.entry.js +1 -1
- package/dist/esm/salla-search-product-card.entry.js +1 -1
- package/dist/esm/salla-search.entry.js +2 -2
- package/dist/esm/salla-skeleton.entry.js +1 -1
- package/dist/esm/salla-social-share.entry.js +1 -1
- package/dist/esm/salla-social.entry.js +1 -1
- package/dist/esm/salla-tab-content_3.entry.js +1 -1
- package/dist/esm/salla-thank-you-header.entry.js +1 -1
- package/dist/esm/salla-thank-you-page.entry.js +1 -1
- package/dist/esm/salla-tiered-offer.entry.js +1 -1
- package/dist/esm/salla-trust-badges.entry.js +1 -1
- package/dist/esm/salla-user-menu.entry.js +1 -1
- package/dist/esm/salla-user-profile.entry.js +1 -1
- package/dist/esm/salla-user-settings.entry.js +1 -1
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/salla-wishlist-actions.entry.js +1 -1
- package/dist/esm/salla-wishlist-summary.entry.js +2 -2
- package/dist/esm/twilight.js +3 -3
- package/dist/esm/{vanilla-picker-BfmpXY4G.js → vanilla-picker-CxhuwWDi.js} +1 -1
- package/dist/twilight/{p-dc2be7b8.entry.js → p-008740fe.entry.js} +1 -1
- package/dist/twilight/{p-aac9d2fe.entry.js → p-024ecda2.entry.js} +1 -1
- package/dist/twilight/{p-60ae422e.entry.js → p-02b7dfcc.entry.js} +1 -1
- package/dist/twilight/{p-4008e164.entry.js → p-03b2df97.entry.js} +1 -1
- package/dist/twilight/{p-36167cbe.entry.js → p-07e581af.entry.js} +1 -1
- package/dist/twilight/{p-2afc4658.entry.js → p-08be494e.entry.js} +1 -1
- package/dist/twilight/{p-4f4933f8.entry.js → p-0c022fbd.entry.js} +1 -1
- package/dist/twilight/{p-ebe45961.entry.js → p-0c0b2b36.entry.js} +1 -1
- package/dist/twilight/{p-40e651ac.entry.js → p-0fd15433.entry.js} +1 -1
- package/dist/twilight/{p-a4fee391.entry.js → p-11eb8675.entry.js} +1 -1
- package/dist/twilight/{p-f738f492.entry.js → p-12a52f1b.entry.js} +1 -1
- package/dist/twilight/{p-3e285056.entry.js → p-16e2a110.entry.js} +1 -1
- package/dist/twilight/{p-3da2e3f3.entry.js → p-1ca39f1c.entry.js} +1 -1
- package/dist/twilight/{p-fbce8a18.entry.js → p-20949dfb.entry.js} +1 -1
- package/dist/twilight/{p-4080fdc9.entry.js → p-2aa9147c.entry.js} +1 -1
- package/dist/twilight/{p-0b583810.entry.js → p-2dcd24fe.entry.js} +1 -1
- package/dist/twilight/{p-8413d52b.entry.js → p-331003bc.entry.js} +1 -1
- package/dist/twilight/{p-1f39ca4f.entry.js → p-37b64e36.entry.js} +1 -1
- package/dist/twilight/{p-1af75625.entry.js → p-3a2ff4d6.entry.js} +1 -1
- package/dist/twilight/{p-213368ef.entry.js → p-3ec3e9fb.entry.js} +1 -1
- package/dist/twilight/{p-36a7344c.entry.js → p-446e3f38.entry.js} +1 -1
- package/dist/twilight/{p-ed37e702.entry.js → p-455a4702.entry.js} +1 -1
- package/dist/twilight/{p-e89daada.entry.js → p-45a7d444.entry.js} +1 -1
- package/dist/twilight/{p-f3455825.entry.js → p-474d882c.entry.js} +1 -1
- package/dist/twilight/{p-b3472096.entry.js → p-47c79c49.entry.js} +1 -1
- package/dist/twilight/{p-4254e9c2.entry.js → p-4c191ab4.entry.js} +1 -1
- package/dist/twilight/{p-8cbf3bc2.entry.js → p-4cf81a44.entry.js} +1 -1
- package/dist/twilight/{p-97065b4f.entry.js → p-4ec15515.entry.js} +1 -1
- package/dist/twilight/{p-9c1b0978.entry.js → p-519cf4c2.entry.js} +1 -1
- package/dist/twilight/{p-374d9f0c.entry.js → p-57fafaba.entry.js} +1 -1
- package/dist/twilight/{p-a9ae6ab9.entry.js → p-59694c45.entry.js} +1 -1
- package/dist/twilight/{p-5dea6c09.entry.js → p-5b118b5b.entry.js} +1 -1
- package/dist/twilight/{p-7169ba9a.entry.js → p-5ceda3d5.entry.js} +1 -1
- package/dist/twilight/{p-02ddd64c.entry.js → p-5d8937c5.entry.js} +1 -1
- package/dist/twilight/{p-a8102290.entry.js → p-5e0f85ae.entry.js} +1 -1
- package/dist/twilight/{p-b3c9ab0e.entry.js → p-5f9d87ec.entry.js} +1 -1
- package/dist/twilight/{p-034b80ad.entry.js → p-61b98119.entry.js} +1 -1
- package/dist/twilight/{p-f51f31df.entry.js → p-67cf7454.entry.js} +1 -1
- package/dist/twilight/{p-cd55369c.entry.js → p-6d6b99fe.entry.js} +1 -1
- package/dist/twilight/{p-1d105a57.entry.js → p-71ce8e4f.entry.js} +1 -1
- package/dist/twilight/{p-00a1ec4e.entry.js → p-73649c81.entry.js} +1 -1
- package/dist/twilight/{p-a260f35e.entry.js → p-75ad7f14.entry.js} +1 -1
- package/dist/twilight/{p-117e714b.entry.js → p-75f7f1d8.entry.js} +1 -1
- package/dist/twilight/{p-2e1dd9cf.entry.js → p-770142fe.entry.js} +1 -1
- package/dist/twilight/{p-7c684782.entry.js → p-7731e280.entry.js} +1 -1
- package/dist/twilight/p-776f9492.entry.js +4 -0
- package/dist/twilight/{p-365ff361.entry.js → p-7790a9a1.entry.js} +1 -1
- package/dist/twilight/p-78c04993.entry.js +4 -0
- package/dist/twilight/{p-3d3eda0f.entry.js → p-792494c8.entry.js} +1 -1
- package/dist/twilight/{p-c4264e87.entry.js → p-7a985fe3.entry.js} +1 -1
- package/dist/twilight/{p-6495383e.entry.js → p-7fffa509.entry.js} +1 -1
- package/dist/twilight/{p-d76b7564.entry.js → p-8077d8b6.entry.js} +1 -1
- package/dist/twilight/{p-9e50f29c.entry.js → p-830abcc1.entry.js} +1 -1
- package/dist/twilight/{p-3356638d.entry.js → p-89598ad3.entry.js} +1 -1
- package/dist/twilight/{p-0cb60522.entry.js → p-8b0b6bca.entry.js} +1 -1
- package/dist/twilight/{p-8b9c44c8.entry.js → p-8d096f95.entry.js} +1 -1
- package/dist/twilight/{p-a236dd3b.entry.js → p-8d3c5d1f.entry.js} +1 -1
- package/dist/twilight/{p-ae1efde9.entry.js → p-93571975.entry.js} +1 -1
- package/dist/twilight/{p-38b70281.entry.js → p-97c5b11d.entry.js} +1 -1
- package/dist/twilight/{p-c18fe9e5.entry.js → p-97fa91db.entry.js} +1 -1
- package/dist/twilight/{p-94d5b080.entry.js → p-9a2567e2.entry.js} +1 -1
- package/dist/twilight/p-9acfe389.entry.js +4 -0
- package/dist/twilight/{p-79b743eb.entry.js → p-9dd7cf71.entry.js} +1 -1
- package/dist/twilight/{p-2882d626.entry.js → p-9fe5c0f5.entry.js} +1 -1
- package/dist/twilight/{p-F1Erq7GR.js → p-B8nGVDvQ.js} +1 -1
- package/dist/twilight/{p-CC-KFXD9.js → p-BjUh9YCs.js} +1 -1
- package/dist/twilight/{p-BwUX8dew.js → p-BlPdaFn2.js} +1 -1
- package/dist/twilight/{p-6KZIgnh6.js → p-BpJsOjKP.js} +1 -1
- package/dist/twilight/{p-78r0jdyY.js → p-C9ldyQUq.js} +1 -1
- package/dist/twilight/{p-x4_Sxqd_.js → p-CICtuB_u.js} +1 -1
- package/dist/twilight/{p-DT73iyFr.js → p-CNQaYCUJ.js} +1 -1
- package/dist/twilight/{p-DYAn-F48.js → p-DOUAavek.js} +2 -2
- package/dist/twilight/{p-b2cbdaa0.entry.js → p-a1a650ab.entry.js} +1 -1
- package/dist/twilight/{p-71b5546b.entry.js → p-a7566af2.entry.js} +1 -1
- package/dist/twilight/{p-e8198efc.entry.js → p-a7849674.entry.js} +1 -1
- package/dist/twilight/{p-2140be84.entry.js → p-a865995d.entry.js} +1 -1
- package/dist/twilight/{p-8fe950e8.entry.js → p-b297fe2e.entry.js} +1 -1
- package/dist/twilight/{p-e8ebb2fe.entry.js → p-b6098938.entry.js} +1 -1
- package/dist/twilight/{p-0d1b8490.entry.js → p-b71673ee.entry.js} +1 -1
- package/dist/twilight/{p-e2cb5c49.entry.js → p-bb137dbb.entry.js} +1 -1
- package/dist/twilight/{p-6ffbf505.entry.js → p-bd06c200.entry.js} +1 -1
- package/dist/twilight/{p-7303ebd1.entry.js → p-be8c42f1.entry.js} +1 -1
- package/dist/twilight/{p-3845e427.entry.js → p-bf5b5f52.entry.js} +1 -1
- package/dist/twilight/{p-72b0724c.entry.js → p-bf65d2fa.entry.js} +1 -1
- package/dist/twilight/{p-d6a3b2d8.entry.js → p-c0301e00.entry.js} +1 -1
- package/dist/twilight/{p-2c04bba3.entry.js → p-c122e9c1.entry.js} +1 -1
- package/dist/twilight/{p-f67d03fb.entry.js → p-c6f09614.entry.js} +1 -1
- package/dist/twilight/{p-8ea3a265.entry.js → p-cb961f05.entry.js} +1 -1
- package/dist/twilight/{p-e5dc1d27.entry.js → p-cbd056ba.entry.js} +1 -1
- package/dist/twilight/{p-4c5a7ffc.entry.js → p-cdeaf60b.entry.js} +1 -1
- package/dist/twilight/{p-D5DrmlyQ.js → p-cykIAOlk.js} +1 -1
- package/dist/twilight/{p-2566f688.entry.js → p-d089ac6d.entry.js} +1 -1
- package/dist/twilight/{p-ebed682b.entry.js → p-d2396143.entry.js} +1 -1
- package/dist/twilight/{p-974c100d.entry.js → p-d300a117.entry.js} +1 -1
- package/dist/twilight/{p-1b4c3b85.entry.js → p-d61298f8.entry.js} +1 -1
- package/dist/twilight/{p-f664fa69.entry.js → p-d89328d7.entry.js} +1 -1
- package/dist/twilight/p-da0349f9.entry.js +4 -0
- package/dist/twilight/{p-118aa92e.entry.js → p-da60995f.entry.js} +1 -1
- package/dist/twilight/{p-cbff6c68.entry.js → p-dbb4db25.entry.js} +1 -1
- package/dist/twilight/{p-4adaee32.entry.js → p-dceb3725.entry.js} +1 -1
- package/dist/twilight/{p-8fd6ed52.entry.js → p-de10d0c3.entry.js} +1 -1
- package/dist/twilight/{p-77deaa00.entry.js → p-dfde387f.entry.js} +1 -1
- package/dist/twilight/{p-7a8fde62.entry.js → p-e23b84bf.entry.js} +1 -1
- package/dist/twilight/{p-0ce0cdb0.entry.js → p-e3dd9502.entry.js} +1 -1
- package/dist/twilight/{p-b1bc70af.entry.js → p-e849f5ef.entry.js} +1 -1
- package/dist/twilight/{p-f310b923.entry.js → p-ed96c703.entry.js} +1 -1
- package/dist/twilight/{p-2401f0d7.entry.js → p-f054cf8e.entry.js} +1 -1
- package/dist/twilight/{p-aca2717e.entry.js → p-f23ada45.entry.js} +1 -1
- package/dist/twilight/{p-95e7c2e1.entry.js → p-f7c06bee.entry.js} +1 -1
- package/dist/twilight/{p-c1ab1b40.entry.js → p-f9dd6b3e.entry.js} +1 -1
- package/dist/twilight/{p-055bf228.entry.js → p-fb955257.entry.js} +1 -1
- package/dist/twilight/{p-061216d4.entry.js → p-ffc7f526.entry.js} +1 -1
- package/dist/twilight/{p-BeC8AhMn.js → p-wYYV5ykR.js} +1 -1
- package/dist/twilight/{p-CtoXzf1y.js → p-ze9e0dxM.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-conditional-offer/interfaces.d.ts +36 -0
- package/dist/types/components/salla-conditional-offer/salla-conditional-offer.d.ts +182 -3
- package/dist/types/components/salla-order-shipments/salla-order-shipments.d.ts +0 -1
- package/dist/types/shared/cart-free-gifts.d.ts +26 -0
- package/dist/types/shared/offer-stages.d.ts +6 -1
- package/package.json +5 -5
- package/dist/twilight/p-0fb390fb.entry.js +0 -4
- package/dist/twilight/p-17be7967.entry.js +0 -4
- package/dist/twilight/p-5bc2190a.entry.js +0 -4
- package/dist/twilight/p-919650b7.entry.js +0 -4
|
@@ -43,6 +43,13 @@ export class SallaNextOrderCoupon {
|
|
|
43
43
|
this.expiresTpl = Salla.lang.get('pages.thank_you.next_order_coupon_expires') || '';
|
|
44
44
|
}
|
|
45
45
|
async loadCoupons() {
|
|
46
|
+
// Store emits this marker only in edit-theme mode. An iframe alone is not
|
|
47
|
+
// sufficient: customer receipts embedded elsewhere must still use real coupons.
|
|
48
|
+
if (document.getElementById('theme-editor-script')) {
|
|
49
|
+
this.coupons = [{ code: 'PREVIEW15', type: 'P', amount: 15 }];
|
|
50
|
+
this.isLoading = false;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
46
53
|
try {
|
|
47
54
|
const response = await salla.api.request('coupons', { params: { type: 'thankyou' } });
|
|
48
55
|
const raw = response?.data;
|
|
@@ -37,11 +37,7 @@ export class SallaOrderShipments {
|
|
|
37
37
|
return this.fetchShipments();
|
|
38
38
|
}
|
|
39
39
|
readInitialShipments(value) {
|
|
40
|
-
//
|
|
41
|
-
if (!this.enabled) {
|
|
42
|
-
this.shipments = [];
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
40
|
+
// Fulfillment visibility follows order data, not the store’s split-shipment capability.
|
|
45
41
|
try {
|
|
46
42
|
const parsed = typeof value === 'string' ? JSON.parse(value) : value;
|
|
47
43
|
this.shipments = Array.isArray(parsed) ? parsed : [];
|
|
@@ -68,8 +64,6 @@ export class SallaOrderShipments {
|
|
|
68
64
|
async fetchShipments() {
|
|
69
65
|
// supersede whatever is in flight first — the guards below can bail out before run() would
|
|
70
66
|
this.request.abort();
|
|
71
|
-
if (!this.enabled)
|
|
72
|
-
return;
|
|
73
67
|
const orderId = this.orderId || salla.config.get('page.id');
|
|
74
68
|
if (!orderId)
|
|
75
69
|
return;
|
|
@@ -102,9 +96,6 @@ export class SallaOrderShipments {
|
|
|
102
96
|
label(key, fallback) {
|
|
103
97
|
return salla.lang.getWithDefault(key, fallback);
|
|
104
98
|
}
|
|
105
|
-
get enabled() {
|
|
106
|
-
return salla.config.get('store.features', []).includes('thankyou-page-multi-shipments');
|
|
107
|
-
}
|
|
108
99
|
get isSplit() {
|
|
109
100
|
return this.shipments.length > 1;
|
|
110
101
|
}
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
* `twilight/packages/twilight/src/api/cart.js:831-846`.
|
|
30
30
|
*/
|
|
31
31
|
const EMPTY_GIFT_ITEMS = Object.freeze([]);
|
|
32
|
+
const EMPTY_PRODUCT_LINES = Object.freeze([]);
|
|
33
|
+
/** Every line from the last parsed response — published in the SAME pass as `itemsCache`. */
|
|
34
|
+
let linesCache = null;
|
|
32
35
|
/**
|
|
33
36
|
* The gift LINES from the last parsed response. `null` is the single "nothing has loaded
|
|
34
37
|
* yet" flag shared with `countCache`, which keeps the two from ever disagreeing about
|
|
@@ -130,6 +133,7 @@ function syncCartIdentity() {
|
|
|
130
133
|
if (cacheIdentity !== undefined && cacheIdentity !== current) {
|
|
131
134
|
generation++;
|
|
132
135
|
itemsCache = null;
|
|
136
|
+
linesCache = null;
|
|
133
137
|
countCache = null;
|
|
134
138
|
isAuthoritative = false;
|
|
135
139
|
pendingRequest = null;
|
|
@@ -254,6 +258,24 @@ function buildGiftItems(items) {
|
|
|
254
258
|
}
|
|
255
259
|
return gifts;
|
|
256
260
|
}
|
|
261
|
+
/** Every line of the cart, in cart order — see `CartProductLine`. */
|
|
262
|
+
function buildProductLines(items) {
|
|
263
|
+
const lines = [];
|
|
264
|
+
for (const item of items) {
|
|
265
|
+
if (item?.id === undefined || item?.id === null)
|
|
266
|
+
continue;
|
|
267
|
+
const quantity = toNumber(item.quantity);
|
|
268
|
+
lines.push({
|
|
269
|
+
id: String(item.id),
|
|
270
|
+
productId: toNullableNumber(item.product_id),
|
|
271
|
+
quantity,
|
|
272
|
+
// Only a line the server flagged as granted by a cart offer has free units.
|
|
273
|
+
freeQuantity: item.added_by_offer ? Math.max(0, resolveFreeQuantity(item, quantity)) : 0,
|
|
274
|
+
offerId: item.added_by_offer ? toNullableNumber(item.offer_id) : null,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return lines;
|
|
278
|
+
}
|
|
257
279
|
function fetchAndCache() {
|
|
258
280
|
if (pendingRequest)
|
|
259
281
|
return pendingRequest;
|
|
@@ -268,6 +290,7 @@ function fetchAndCache() {
|
|
|
268
290
|
// Both projections come out of the SAME response, in one pass.
|
|
269
291
|
return {
|
|
270
292
|
gifts: buildGiftItems(items),
|
|
293
|
+
lines: buildProductLines(items),
|
|
271
294
|
count: extractCartCount(res, found),
|
|
272
295
|
// The response was reached and parsed — these values are the cart, so the cache
|
|
273
296
|
// they land in may be short-circuited on. See `isAuthoritative`.
|
|
@@ -287,6 +310,7 @@ function fetchAndCache() {
|
|
|
287
310
|
// connection can never claim the cart is empty.
|
|
288
311
|
.catch((error) => ({
|
|
289
312
|
gifts: itemsCache ?? [],
|
|
313
|
+
lines: linesCache ?? [],
|
|
290
314
|
count: isCartNotCreated(error) ? 0 : countCache,
|
|
291
315
|
/**
|
|
292
316
|
* NOT authoritative, `CartNotCreated` included.
|
|
@@ -303,13 +327,14 @@ function fetchAndCache() {
|
|
|
303
327
|
*/
|
|
304
328
|
ok: false,
|
|
305
329
|
}))
|
|
306
|
-
.then(({ gifts, count, ok }) => {
|
|
330
|
+
.then(({ gifts, lines, count, ok }) => {
|
|
307
331
|
// Only publish if nothing invalidated us while we were in flight.
|
|
308
332
|
// Otherwise this is pre-mutation data racing a newer, authoritative
|
|
309
333
|
// request — publishing it would make the lookups short-circuit on stale
|
|
310
334
|
// data until the NEXT mutation happens to come along.
|
|
311
335
|
if (startedAtGeneration === generation) {
|
|
312
336
|
itemsCache = gifts;
|
|
337
|
+
linesCache = lines;
|
|
313
338
|
countCache = count;
|
|
314
339
|
isAuthoritative = ok;
|
|
315
340
|
}
|
|
@@ -338,6 +363,20 @@ export function getCartFreeGiftItems() {
|
|
|
338
363
|
}
|
|
339
364
|
return fetchAndCache().then(() => itemsCache ?? EMPTY_GIFT_ITEMS);
|
|
340
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* Every line of the cart (paid and free), in cart order — for the CP-2171 free product picker.
|
|
368
|
+
*
|
|
369
|
+
* Shares the cache, the in-flight promise and the generation guard with
|
|
370
|
+
* `getCartFreeGiftItems()` and `getCartItemCount()`: no request of its own, and never a
|
|
371
|
+
* different cart state from theirs.
|
|
372
|
+
*/
|
|
373
|
+
export function getCartProductLines() {
|
|
374
|
+
syncCartIdentity();
|
|
375
|
+
if (isAuthoritative && itemsCache) {
|
|
376
|
+
return Promise.resolve(linesCache ?? EMPTY_PRODUCT_LINES);
|
|
377
|
+
}
|
|
378
|
+
return fetchAndCache().then(() => linesCache ?? EMPTY_PRODUCT_LINES);
|
|
379
|
+
}
|
|
341
380
|
/**
|
|
342
381
|
* Whether the cached cart picture came from a response that was actually reached and
|
|
343
382
|
* parsed, rather than from the fallback a rejected lookup publishes.
|
|
@@ -410,6 +449,7 @@ export function refreshCartFreeGifts() {
|
|
|
410
449
|
return pendingRefresh;
|
|
411
450
|
generation++;
|
|
412
451
|
itemsCache = null;
|
|
452
|
+
linesCache = null;
|
|
413
453
|
countCache = null;
|
|
414
454
|
isAuthoritative = false;
|
|
415
455
|
// This invalidation already covers whatever id the cart has now.
|
|
@@ -439,6 +479,7 @@ export function refreshCartFreeGifts() {
|
|
|
439
479
|
/** @internal exported for tests only — resets module-level state between specs. */
|
|
440
480
|
export function __resetCartFreeGiftsForTests() {
|
|
441
481
|
itemsCache = null;
|
|
482
|
+
linesCache = null;
|
|
442
483
|
countCache = null;
|
|
443
484
|
isAuthoritative = false;
|
|
444
485
|
pendingRequest = null;
|
|
@@ -180,8 +180,13 @@ export function sortByThreshold(items, getThreshold, getIdentity) {
|
|
|
180
180
|
* @param rawTierValues each stage's OWN `current_value`, aligned the same way. A tier
|
|
181
181
|
* without a readable one is measured by `currentValue`, so omitting it — an older
|
|
182
182
|
* backend — changes nothing. See `OfferStageProgress.values`.
|
|
183
|
+
* @param rawCanAddFree each stage's `can_add_free` (CP-2171), aligned the same way. Read
|
|
184
|
+
* only in case (3), where no tier carries `is_applied`: a free product tier that
|
|
185
|
+
* carries one is reached when the ENGINE says so, not when its `current_value` —
|
|
186
|
+
* which counts the gift lines at full price — passes `min_spend`. Omit it and case
|
|
187
|
+
* (3) is the threshold behaviour, unchanged.
|
|
183
188
|
*/
|
|
184
|
-
export function computeOfferStageProgress(currentValue, rawThresholds, rawStartValue = 0, rawApplied = [], rawTierValues = []) {
|
|
189
|
+
export function computeOfferStageProgress(currentValue, rawThresholds, rawStartValue = 0, rawApplied = [], rawTierValues = [], rawCanAddFree = []) {
|
|
185
190
|
// Unparseable thresholds are dropped, not zeroed — see `isUsableThreshold`.
|
|
186
191
|
//
|
|
187
192
|
// The flag travels WITH its threshold through both the drop and the sort. Sorting two
|
|
@@ -194,6 +199,7 @@ export function computeOfferStageProgress(currentValue, rawThresholds, rawStartV
|
|
|
194
199
|
threshold: parseNumeric(threshold),
|
|
195
200
|
applied: readAppliedFlag(rawApplied?.[index]),
|
|
196
201
|
tierValue: parseNumeric(rawTierValues?.[index]),
|
|
202
|
+
canAddFree: typeof rawCanAddFree?.[index] === 'boolean' ? rawCanAddFree[index] : undefined,
|
|
197
203
|
}))
|
|
198
204
|
.filter((entry) => entry.threshold !== null)
|
|
199
205
|
.sort((a, b) => a.threshold - b.threshold || a.index - b.index);
|
|
@@ -281,12 +287,25 @@ export function computeOfferStageProgress(currentValue, rawThresholds, rawStartV
|
|
|
281
287
|
appliedIndex = index;
|
|
282
288
|
}
|
|
283
289
|
}
|
|
284
|
-
// Case (3) closes the prefix at
|
|
290
|
+
// Case (3) closes the prefix at the last reached tier rather than comparing tier by tier.
|
|
285
291
|
// With one value for every tier the two are the same statement; with per-tier values
|
|
286
292
|
// it is what keeps `met` a prefix, on the same single-winner reasoning as case (1).
|
|
293
|
+
//
|
|
294
|
+
// CP-2171 — a tier that carries `can_add_free` is reached on the engine's answer, not on
|
|
295
|
+
// its value: a guest with 40 paid and three listed gifts in the cart has a value past
|
|
296
|
+
// `min_spend`, yet every gift is charged. Only `met` reads it; the bar (`lastReachedIndex`,
|
|
297
|
+
// `fills`, `isComplete`) stays the threshold projection, and the guidance line, finding
|
|
298
|
+
// nothing left to spend, says the conditions are not met.
|
|
299
|
+
let lastMetIndex = NO_STAGE_REACHED;
|
|
300
|
+
for (let index = 0; index < thresholds.length; index++) {
|
|
301
|
+
const canAddFree = entries[index].canAddFree;
|
|
302
|
+
if (canAddFree === undefined ? values[index] >= thresholds[index] : canAddFree) {
|
|
303
|
+
lastMetIndex = index;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
287
306
|
const met = hasEngineVerdict
|
|
288
307
|
? thresholds.map((_, index) => index <= appliedIndex)
|
|
289
|
-
: thresholds.map((_, index) => index <=
|
|
308
|
+
: thresholds.map((_, index) => index <= lastMetIndex);
|
|
290
309
|
const metCount = met.filter(Boolean).length;
|
|
291
310
|
const nextUnmetIndex = met.findIndex(isMet => !isMet); // -1 === NO_STAGE_REACHED
|
|
292
311
|
const allMet = nextUnmetIndex === NO_STAGE_REACHED;
|