@salla.sa/twilight-components 2.14.577 → 2.14.579
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/{catalog-recommendations-HZzTK7-G.js → catalog-recommendations-Bxs1t6wk.js} +16 -1
- package/dist/cjs/{filepond-iflxa4A5.js → filepond-DBIghBBz.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-NZ84xlKh.js → filepond-plugin-file-poster-D9QbEXdw.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-m8Z_JlZX.js → filepond-plugin-file-validate-size-CcTLgsV2.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-BfF6LYAT.js → filepond-plugin-file-validate-type-wroI9jAT.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-DfRJ3iRj.js → filepond-plugin-image-edit-DvJ0qDXd.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-BZxYZai-.js → filepond-plugin-image-exif-orientation-Tv2WgHma.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-BQ7HvH2d.js → filepond-plugin-image-preview-Bkcpwdkp.js} +1 -1
- package/dist/cjs/{index-CSe-ijAV.js → index-Brycy0hH.js} +3 -3
- package/dist/cjs/{intlTelInput-DHfYz8vv.js → intlTelInput-BnpKZAn8.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion_6.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_5.cjs.entry.js +14 -3
- 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 +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-attachment-view_9.cjs.entry.js +10 -10
- package/dist/cjs/salla-badge.cjs.entry.js +1 -1
- package/dist/cjs/salla-basket-gap.cjs.entry.js +83 -5
- 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 +1 -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 +1 -1
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- 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 +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
- package/dist/cjs/salla-gift-card-redeem.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 +1 -1
- 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-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 +1 -1
- package/dist/cjs/salla-notification-item_2.cjs.entry.js +1 -1
- 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-options-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
- package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
- 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 +1 -1
- 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-tiered-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-tooltip.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 +1 -1
- package/dist/cjs/twilight.cjs.js +1 -1
- package/dist/cjs/{vanilla-picker-Brk9Mb54.js → vanilla-picker-DoQGicjv.js} +1 -1
- package/dist/collection/components/salla-basket-gap/salla-basket-gap.js +81 -3
- package/dist/collection/components/salla-bought-together/salla-bought-together.js +12 -1
- package/dist/collection/shared/catalog-recommendations.js +16 -1
- package/dist/components/catalog-recommendations.js +16 -1
- package/dist/components/index.js +3 -3
- package/dist/components/salla-basket-gap.js +81 -3
- package/dist/components/salla-bought-together.js +12 -1
- package/dist/esm/{catalog-recommendations-CRW60UDr.js → catalog-recommendations-DIAyA5MP.js} +16 -1
- package/dist/esm/{filepond-plugin-file-poster-CHpnwHYe.js → filepond-plugin-file-poster-ifZZJbSt.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-BwHBxxMg.js → filepond-plugin-file-validate-size-Di-mYkQm.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-BD-yTEPO.js → filepond-plugin-file-validate-type-CvQPSQLD.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-DKc0Yw10.js → filepond-plugin-image-edit-BwN5C4U-.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-CepmNFGF.js → filepond-plugin-image-exif-orientation-DskcwcEc.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-FhnzagMd.js → filepond-plugin-image-preview-CNRRNBsw.js} +1 -1
- package/dist/esm/{filepond-Qm94dFPs.js → filepond-uH9_9tud.js} +1 -1
- package/dist/esm/{index-BAXTlrSC.js → index-Cv0bGFJf.js} +3 -3
- package/dist/esm/{intlTelInput-BJlOPJYY.js → intlTelInput-U4fk8hXD.js} +1 -1
- package/dist/esm/loader.js +2 -2
- package/dist/esm/salla-accordion-body_2.entry.js +1 -1
- package/dist/esm/salla-accordion_6.entry.js +1 -1
- package/dist/esm/salla-add-product-button_5.entry.js +14 -3
- 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 +1 -1
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-attachment-view_9.entry.js +10 -10
- package/dist/esm/salla-badge.entry.js +1 -1
- package/dist/esm/salla-basket-gap.entry.js +83 -5
- 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 +1 -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 +1 -1
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- 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 +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
- package/dist/esm/salla-gift-card-redeem.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 +1 -1
- 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-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 +1 -1
- package/dist/esm/salla-notification-item_2.entry.js +1 -1
- 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-options-modal.entry.js +1 -1
- package/dist/esm/salla-order-shipments.entry.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/esm/salla-products-slider.entry.js +1 -1
- package/dist/esm/salla-quick-order.entry.js +1 -1
- package/dist/esm/salla-rating-modal-v2.entry.js +1 -1
- package/dist/esm/salla-rating-modal.entry.js +1 -1
- 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 +1 -1
- 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-tiered-offer.entry.js +1 -1
- package/dist/esm/salla-tooltip.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 +1 -1
- package/dist/esm/twilight.js +2 -2
- package/dist/esm/{vanilla-picker-C_cY41gl.js → vanilla-picker-CsYJ2Gx8.js} +1 -1
- package/dist/twilight/{p-ce1d3ad9.entry.js → p-00e10a64.entry.js} +1 -1
- package/dist/twilight/{p-ab3ad37f.entry.js → p-00ff9799.entry.js} +1 -1
- package/dist/twilight/{p-7f3e110c.entry.js → p-01339b84.entry.js} +1 -1
- package/dist/twilight/{p-10a68a21.entry.js → p-01af3487.entry.js} +1 -1
- package/dist/twilight/{p-1fbb0b22.entry.js → p-02a96323.entry.js} +1 -1
- package/dist/twilight/{p-e0d834a7.entry.js → p-04e7c9af.entry.js} +1 -1
- package/dist/twilight/{p-9e054110.entry.js → p-04fd3d15.entry.js} +1 -1
- package/dist/twilight/{p-a79c04a2.entry.js → p-07e0bad0.entry.js} +1 -1
- package/dist/twilight/{p-08cedab0.entry.js → p-0c188a09.entry.js} +1 -1
- package/dist/twilight/{p-cc1b3318.entry.js → p-0db0b088.entry.js} +1 -1
- package/dist/twilight/{p-7d08dcfb.entry.js → p-100831b8.entry.js} +1 -1
- package/dist/twilight/{p-6bfe12d5.entry.js → p-10e4fc53.entry.js} +1 -1
- package/dist/twilight/{p-abc3e5d5.entry.js → p-1523f751.entry.js} +1 -1
- package/dist/twilight/{p-e4ff7a77.entry.js → p-16bc5fe2.entry.js} +1 -1
- package/dist/twilight/{p-9920bbad.entry.js → p-174453fd.entry.js} +1 -1
- package/dist/twilight/{p-80302c52.entry.js → p-175e00a9.entry.js} +1 -1
- package/dist/twilight/{p-1fd6a10e.entry.js → p-1870aa20.entry.js} +1 -1
- package/dist/twilight/{p-d3cf9f8a.entry.js → p-18cc0497.entry.js} +1 -1
- package/dist/twilight/{p-fa6f2b27.entry.js → p-197385ef.entry.js} +1 -1
- package/dist/twilight/{p-00a727c3.entry.js → p-1ac4c8b5.entry.js} +1 -1
- package/dist/twilight/{p-0bcca7f8.entry.js → p-1db9cb44.entry.js} +1 -1
- package/dist/twilight/{p-3a3815a2.entry.js → p-1f8fb466.entry.js} +1 -1
- package/dist/twilight/{p-fc500047.entry.js → p-226766f8.entry.js} +1 -1
- package/dist/twilight/{p-2e4064eb.entry.js → p-297b11aa.entry.js} +1 -1
- package/dist/twilight/{p-b55fb51b.entry.js → p-2a79781f.entry.js} +1 -1
- package/dist/twilight/{p-e66856c5.entry.js → p-2e8673b0.entry.js} +1 -1
- package/dist/twilight/{p-b356f3f6.entry.js → p-335d602b.entry.js} +1 -1
- package/dist/twilight/{p-637670fa.entry.js → p-34d20d89.entry.js} +1 -1
- package/dist/twilight/{p-13abf9ca.entry.js → p-353d7c2b.entry.js} +1 -1
- package/dist/twilight/{p-f514b9f5.entry.js → p-37b99097.entry.js} +1 -1
- package/dist/twilight/{p-8fc2eb01.entry.js → p-393f2d5a.entry.js} +1 -1
- package/dist/twilight/{p-97fee81d.entry.js → p-3a02cd71.entry.js} +1 -1
- package/dist/twilight/{p-292a0b4a.entry.js → p-3eefc1f9.entry.js} +1 -1
- package/dist/twilight/{p-884104a3.entry.js → p-43d19714.entry.js} +1 -1
- package/dist/twilight/{p-5c4e2ed3.entry.js → p-480beded.entry.js} +1 -1
- package/dist/twilight/{p-dd18ac5c.entry.js → p-48ea970a.entry.js} +1 -1
- package/dist/twilight/{p-423d852d.entry.js → p-49d915b2.entry.js} +1 -1
- package/dist/twilight/{p-13c35685.entry.js → p-4f358102.entry.js} +1 -1
- package/dist/twilight/{p-99b9bf66.entry.js → p-52a2d067.entry.js} +1 -1
- package/dist/twilight/{p-806083b4.entry.js → p-551b8be9.entry.js} +1 -1
- package/dist/twilight/{p-072ee78f.entry.js → p-5d140f6a.entry.js} +1 -1
- package/dist/twilight/{p-0227316e.entry.js → p-5d1dcdd6.entry.js} +1 -1
- package/dist/twilight/{p-5a77257c.entry.js → p-5d61bc8b.entry.js} +1 -1
- package/dist/twilight/{p-f2e13d28.entry.js → p-610c0b50.entry.js} +1 -1
- package/dist/twilight/{p-faadae59.entry.js → p-613c8c04.entry.js} +1 -1
- package/dist/twilight/{p-56609a91.entry.js → p-6161d5c7.entry.js} +1 -1
- package/dist/twilight/{p-6de608eb.entry.js → p-6204194f.entry.js} +1 -1
- package/dist/twilight/{p-d3556d1f.entry.js → p-6491fe73.entry.js} +1 -1
- package/dist/twilight/{p-ea7846fd.entry.js → p-6845c140.entry.js} +1 -1
- package/dist/twilight/{p-f0ca37fc.entry.js → p-6adb877c.entry.js} +1 -1
- package/dist/twilight/{p-3153f560.entry.js → p-6bdf61dd.entry.js} +1 -1
- package/dist/twilight/{p-c38fb150.entry.js → p-70f498b4.entry.js} +1 -1
- package/dist/twilight/{p-DGzNHmGp.js → p-79sdW-RJ.js} +1 -1
- package/dist/twilight/{p-c90600b1.entry.js → p-821fbdd7.entry.js} +1 -1
- package/dist/twilight/{p-2c543420.entry.js → p-83c54d44.entry.js} +1 -1
- package/dist/twilight/{p-162fa48e.entry.js → p-8444cf02.entry.js} +1 -1
- package/dist/twilight/{p-e944f02a.entry.js → p-84b61b96.entry.js} +1 -1
- package/dist/twilight/{p-a73a785d.entry.js → p-84d740c5.entry.js} +1 -1
- package/dist/twilight/{p-58c1bf51.entry.js → p-85474877.entry.js} +1 -1
- package/dist/twilight/{p-e7c4d4cc.entry.js → p-87c03c55.entry.js} +1 -1
- package/dist/twilight/p-888f6120.entry.js +4 -0
- package/dist/twilight/{p-fdc97278.entry.js → p-8cca3ae6.entry.js} +1 -1
- package/dist/twilight/{p-9b4a0dd3.entry.js → p-914c39e7.entry.js} +1 -1
- package/dist/twilight/{p-6605f258.entry.js → p-92ae62e1.entry.js} +1 -1
- package/dist/twilight/{p-8a865d37.entry.js → p-94f8ac6a.entry.js} +1 -1
- package/dist/twilight/{p-0806da7e.entry.js → p-97a6f87f.entry.js} +1 -1
- package/dist/twilight/{p-dda4d231.entry.js → p-9a89449c.entry.js} +1 -1
- package/dist/twilight/{p-665bc308.entry.js → p-9b7d25bb.entry.js} +1 -1
- package/dist/twilight/{p-a2d07dba.entry.js → p-9c4035fd.entry.js} +1 -1
- package/dist/twilight/{p-3cef6be2.entry.js → p-9f233039.entry.js} +1 -1
- package/dist/twilight/{p-e95fd91e.entry.js → p-9f726d38.entry.js} +1 -1
- package/dist/twilight/{p-SguJQlDo.js → p-BFHiJkJo.js} +1 -1
- package/dist/twilight/{p-DnrvXyI6.js → p-BHxYBHNJ.js} +1 -1
- package/dist/twilight/{p-_f6GlygH.js → p-BV-RAvFu.js} +1 -1
- package/dist/twilight/p-ByRaVyQz.js +9 -0
- package/dist/twilight/p-Cv0bGFJf.js +5 -0
- package/dist/twilight/{p-BWpg3MwW.js → p-D6cd_mQ5.js} +1 -1
- package/dist/twilight/{p-CvebbG3m.js → p-DBruGj-x.js} +1 -1
- package/dist/twilight/p-DIAyA5MP.js +4 -0
- package/dist/twilight/{p-C6WaobtY.js → p-DuHvhlSw.js} +1 -1
- package/dist/twilight/{p-51fb8841.entry.js → p-a03c154f.entry.js} +1 -1
- package/dist/twilight/{p-a9fcdac5.entry.js → p-a16a3f5a.entry.js} +1 -1
- package/dist/twilight/{p-411c1ab0.entry.js → p-a5b16153.entry.js} +1 -1
- package/dist/twilight/{p-44a6598e.entry.js → p-b12845d7.entry.js} +1 -1
- package/dist/twilight/{p-bf845ea7.entry.js → p-b4468092.entry.js} +1 -1
- package/dist/twilight/{p-51d83216.entry.js → p-b5f3c4c8.entry.js} +1 -1
- package/dist/twilight/{p-3dd612a6.entry.js → p-bbd4d8fd.entry.js} +1 -1
- package/dist/twilight/{p-8c750736.entry.js → p-c414faf1.entry.js} +1 -1
- package/dist/twilight/{p-c63ff8ef.entry.js → p-c4bbe239.entry.js} +1 -1
- package/dist/twilight/{p-70451662.entry.js → p-c8775e6f.entry.js} +1 -1
- package/dist/twilight/{p-2ba4956f.entry.js → p-c9bf5222.entry.js} +1 -1
- package/dist/twilight/{p-18c41e9a.entry.js → p-cac35bf1.entry.js} +1 -1
- package/dist/twilight/{p-7b0cf8a1.entry.js → p-cdde65a4.entry.js} +1 -1
- package/dist/twilight/{p-59a7ca2e.entry.js → p-cf27d7e1.entry.js} +1 -1
- package/dist/twilight/{p-5f464161.entry.js → p-cf348533.entry.js} +1 -1
- package/dist/twilight/{p-03c959bb.entry.js → p-d2b78693.entry.js} +1 -1
- package/dist/twilight/{p-bb35af04.entry.js → p-d4cca956.entry.js} +1 -1
- package/dist/twilight/p-d8a37909.entry.js +4 -0
- package/dist/twilight/{p-28cdaf6b.entry.js → p-dbde8a51.entry.js} +1 -1
- package/dist/twilight/{p-1762fd86.entry.js → p-e2303e51.entry.js} +1 -1
- package/dist/twilight/{p-898ce93b.entry.js → p-e305800c.entry.js} +1 -1
- package/dist/twilight/{p-2e3a56de.entry.js → p-f16f0a66.entry.js} +1 -1
- package/dist/twilight/{p-c2e871ae.entry.js → p-f71f35c9.entry.js} +1 -1
- package/dist/twilight/{p-7d37b650.entry.js → p-fa50faa3.entry.js} +1 -1
- package/dist/twilight/{p-ce80fb8f.entry.js → p-fc9f812a.entry.js} +1 -1
- package/dist/twilight/{p-DpI1J-G1.js → p-fca8mBDM.js} +1 -1
- package/dist/twilight/{p-84cff600.entry.js → p-fe94f5ba.entry.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-basket-gap/salla-basket-gap.d.ts +15 -0
- package/dist/types/components/salla-bought-together/salla-bought-together.d.ts +2 -0
- package/package.json +5 -5
- package/dist/twilight/p-073e1363.entry.js +0 -4
- package/dist/twilight/p-6f9bc285.entry.js +0 -4
- package/dist/twilight/p-BAXTlrSC.js +0 -5
- package/dist/twilight/p-CRW60UDr.js +0 -4
- package/dist/twilight/p-D5lNzFgl.js +0 -9
|
@@ -44,6 +44,11 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
44
44
|
this.placeholder = '';
|
|
45
45
|
this.fetchGeneration = 0;
|
|
46
46
|
this.isSyncingCart = false;
|
|
47
|
+
/** The recommendations response that produced the rendered list; attributes every event below. */
|
|
48
|
+
this.requestId = null;
|
|
49
|
+
this.listViewTracked = false;
|
|
50
|
+
/** Ids of the last list actually announced, so an unchanged re-fetch is not re-counted. */
|
|
51
|
+
this.lastListViewedKey = '';
|
|
47
52
|
this.cartItemChangedHandler = (response) => {
|
|
48
53
|
const items = response?.data?.cart?.items ?? [];
|
|
49
54
|
const ids = items.map((i) => String(i.product_id)).filter(Boolean);
|
|
@@ -72,6 +77,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
72
77
|
cartItem,
|
|
73
78
|
cartId: event?.detail?.data?.id,
|
|
74
79
|
source: 'basket_gap',
|
|
80
|
+
request_id: this.requestId,
|
|
75
81
|
}]);
|
|
76
82
|
};
|
|
77
83
|
salla.lang.onLoaded(() => {
|
|
@@ -116,6 +122,64 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
116
122
|
document.lazyLoadInstance?.update(this.host.querySelectorAll('.lazy'));
|
|
117
123
|
this.positionUnderCartItems();
|
|
118
124
|
}
|
|
125
|
+
componentDidRender() {
|
|
126
|
+
if (!this.products.length || this.listViewTracked || this.intersectionObserver)
|
|
127
|
+
return;
|
|
128
|
+
// The section is injected below the cart items, so it is usually out of view on
|
|
129
|
+
// load — an impression is only real once it is actually on screen.
|
|
130
|
+
const observer = new IntersectionObserver((entries) => {
|
|
131
|
+
// A callback queued before disconnect() still runs. Without this check a
|
|
132
|
+
// callback left over from the list BEFORE a cart-driven refetch would announce
|
|
133
|
+
// the new list before it is rendered, disconnect the new observer (the old code
|
|
134
|
+
// disconnected whichever observer was current, not the one that fired) and mark
|
|
135
|
+
// the impression done — so the new list never got a real one.
|
|
136
|
+
if (this.intersectionObserver !== observer)
|
|
137
|
+
return;
|
|
138
|
+
if (!entries.some((entry) => entry.isIntersecting))
|
|
139
|
+
return;
|
|
140
|
+
this.listViewTracked = true;
|
|
141
|
+
observer.disconnect();
|
|
142
|
+
this.intersectionObserver = undefined;
|
|
143
|
+
this.emitListViewed();
|
|
144
|
+
}, { threshold: 0.1 });
|
|
145
|
+
this.intersectionObserver = observer;
|
|
146
|
+
observer.observe(this.host);
|
|
147
|
+
}
|
|
148
|
+
emitListViewed() {
|
|
149
|
+
// A cart change re-fetches, and the section is usually still on screen, so the
|
|
150
|
+
// observer re-arms and fires immediately. Only a genuinely different list is a new
|
|
151
|
+
// impression.
|
|
152
|
+
const key = this.products.map((product) => product.id).join(',');
|
|
153
|
+
if (key === this.lastListViewedKey)
|
|
154
|
+
return;
|
|
155
|
+
this.lastListViewedKey = key;
|
|
156
|
+
salla.event.emit('salla-basket-gap::list.viewed', {
|
|
157
|
+
products: this.products,
|
|
158
|
+
source: 'basket_gap',
|
|
159
|
+
request_id: this.requestId,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* One delegated listener per card rather than a handler on each anchor: the click is
|
|
164
|
+
* only a product click when it lands on a product link, not on the add button or the
|
|
165
|
+
* offer badge.
|
|
166
|
+
*/
|
|
167
|
+
handleCardClick(event, product) {
|
|
168
|
+
// Duck-typed rather than `instanceof Element`: that global does not exist in
|
|
169
|
+
// Stencil's non-browser runtime, where the check would throw instead of skip.
|
|
170
|
+
const target = event.target;
|
|
171
|
+
if (typeof target?.closest === 'function' && target.closest('a[href]')) {
|
|
172
|
+
this.emitProductClicked(product);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
emitProductClicked(product) {
|
|
176
|
+
salla.event.emit('salla-basket-gap::product.clicked', [{
|
|
177
|
+
product,
|
|
178
|
+
position: this.products.indexOf(product) + 1,
|
|
179
|
+
source: 'basket_gap',
|
|
180
|
+
request_id: this.requestId,
|
|
181
|
+
}]);
|
|
182
|
+
}
|
|
119
183
|
/**
|
|
120
184
|
* Cart item rows on the storefront cart page (excluding the order-options block).
|
|
121
185
|
* Kept defensive: themes that don't use the `form[id^="item-"]` pattern return none.
|
|
@@ -181,6 +245,8 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
181
245
|
this.host.addEventListener('success', this.addButtonSuccessHandler);
|
|
182
246
|
}
|
|
183
247
|
disconnectedCallback() {
|
|
248
|
+
this.intersectionObserver?.disconnect();
|
|
249
|
+
this.intersectionObserver = undefined;
|
|
184
250
|
salla.event.off('cart::item.added', this.cartItemChangedHandler);
|
|
185
251
|
salla.event.off('cart::item.deleted', this.cartItemChangedHandler);
|
|
186
252
|
salla.event.off('cart::before.add.item', this.beforeAddItemHandler);
|
|
@@ -208,6 +274,8 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
208
274
|
.then((ids) => {
|
|
209
275
|
if (generation !== this.fetchGeneration)
|
|
210
276
|
return;
|
|
277
|
+
// Held until the products it describes are actually rendered — see fetchProducts.
|
|
278
|
+
const requestId = ids._requestId || null;
|
|
211
279
|
// Pass objectIDs as the authoritative cart list so the filter is not
|
|
212
280
|
// affected by stale storage when called from a live cart event.
|
|
213
281
|
const cartIds = this.getCartProductIds(objectIDs);
|
|
@@ -216,7 +284,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
216
284
|
this.canRender = false;
|
|
217
285
|
return;
|
|
218
286
|
}
|
|
219
|
-
return this.fetchProducts(filteredIds.slice(0, this.limit), generation);
|
|
287
|
+
return this.fetchProducts(filteredIds.slice(0, this.limit), generation, requestId);
|
|
220
288
|
})
|
|
221
289
|
.catch(() => {
|
|
222
290
|
if (generation !== this.fetchGeneration)
|
|
@@ -229,7 +297,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
229
297
|
this.isLoading = false;
|
|
230
298
|
});
|
|
231
299
|
}
|
|
232
|
-
fetchProducts(ids, generation) {
|
|
300
|
+
fetchProducts(ids, generation, requestId = null) {
|
|
233
301
|
return salla.api.withoutNotifier(() => salla.product.api.fetch({
|
|
234
302
|
source: 'selected',
|
|
235
303
|
source_value: ids,
|
|
@@ -237,7 +305,17 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
237
305
|
})).then((response) => {
|
|
238
306
|
if (generation !== this.fetchGeneration)
|
|
239
307
|
return;
|
|
308
|
+
// List, id and impression state flip together. Assigning the id earlier left a
|
|
309
|
+
// window where an observer already watching an unscrolled section could fire and
|
|
310
|
+
// report the PREVIOUS products under the NEW id — and mark the impression done,
|
|
311
|
+
// so the real one for the new list never fired.
|
|
240
312
|
this.products = response?.data ?? [];
|
|
313
|
+
this.requestId = requestId;
|
|
314
|
+
// A refreshed list is a new impression: the cart changed and the shopper sees a
|
|
315
|
+
// different set of products, so a pending observer is re-armed by componentDidRender.
|
|
316
|
+
this.listViewTracked = false;
|
|
317
|
+
this.intersectionObserver?.disconnect();
|
|
318
|
+
this.intersectionObserver = undefined;
|
|
241
319
|
this.canRender = this.products.length > 0;
|
|
242
320
|
}).catch(() => {
|
|
243
321
|
if (generation !== this.fetchGeneration)
|
|
@@ -265,7 +343,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
|
|
|
265
343
|
}
|
|
266
344
|
getProductCard(product) {
|
|
267
345
|
const discountLabel = this.getDiscountLabel(product);
|
|
268
|
-
return (h("div", { key: product.id, class: "s-basket-gap-card" }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
|
|
346
|
+
return (h("div", { key: product.id, class: "s-basket-gap-card", onClick: (event) => this.handleCardClick(event, product) }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
|
|
269
347
|
? h("div", { class: "s-basket-gap-card-sale-price" }, h("span", { innerHTML: salla.money(product.sale_price) }), h("del", { innerHTML: salla.money(product.regular_price) }))
|
|
270
348
|
: h("span", { class: "s-basket-gap-card-price", innerHTML: salla.money(product.price) }), product.weight_label && (h("span", { class: "s-basket-gap-card-weight" }, this.weightLabel, " ", product.weight_label))), h("div", { class: "s-basket-gap-card-actions" }, (product.promotion_title || product.discount_ends || product.is_on_sale) && (h("div", { class: "s-basket-gap-card-offer" }, h("i", { class: "sicon-gift" }), discountLabel && h("span", null, discountLabel), product.discount_ends && [
|
|
271
349
|
// auto-segments drops the days box under 24h left, and the hours box under 1h.
|
|
@@ -26,6 +26,8 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
|
|
|
26
26
|
this.buyTogetherFor = salla.lang.get('pages.products.buy_together_for');
|
|
27
27
|
this.resolvedProductId = 0;
|
|
28
28
|
this.listViewTracked = false;
|
|
29
|
+
/** The recommendations response that produced the rendered list; attributes every event below. */
|
|
30
|
+
this.requestId = null;
|
|
29
31
|
salla.lang.onLoaded(() => {
|
|
30
32
|
this.title = salla.lang.get('pages.products.bought_together_title');
|
|
31
33
|
this.subtitle = salla.lang.get('pages.products.bought_together_subtitle');
|
|
@@ -52,6 +54,7 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
|
|
|
52
54
|
this.canRender = false;
|
|
53
55
|
return;
|
|
54
56
|
}
|
|
57
|
+
this.requestId = recommendedIds._requestId || null;
|
|
55
58
|
const ids = [String(this.resolvedProductId), ...recommendedIds.slice(0, this.limit)];
|
|
56
59
|
return salla.product.fetch({ source: 'selected', source_value: ids });
|
|
57
60
|
})
|
|
@@ -101,6 +104,8 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
|
|
|
101
104
|
.filter(p => !this.isMainProduct(p.id));
|
|
102
105
|
salla.event.emit('salla-bought-together::list.viewed', {
|
|
103
106
|
products: recommendedProducts,
|
|
107
|
+
source: 'pdp_fbt',
|
|
108
|
+
request_id: this.requestId,
|
|
104
109
|
});
|
|
105
110
|
}
|
|
106
111
|
isMainProduct(id) {
|
|
@@ -112,7 +117,12 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
|
|
|
112
117
|
return index === -1 ? -1 : index + 1;
|
|
113
118
|
}
|
|
114
119
|
emitProductClicked(product, position) {
|
|
115
|
-
salla.event.emit('salla-bought-together::product.clicked', [{
|
|
120
|
+
salla.event.emit('salla-bought-together::product.clicked', [{
|
|
121
|
+
product,
|
|
122
|
+
position,
|
|
123
|
+
source: 'pdp_fbt',
|
|
124
|
+
request_id: this.requestId,
|
|
125
|
+
}]);
|
|
116
126
|
}
|
|
117
127
|
toggleProduct(id) {
|
|
118
128
|
const next = new Set(this.selectedIds);
|
|
@@ -153,6 +163,7 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
|
|
|
153
163
|
position,
|
|
154
164
|
cartItem,
|
|
155
165
|
cartId: response?.data?.id,
|
|
166
|
+
request_id: this.requestId,
|
|
156
167
|
}]);
|
|
157
168
|
}
|
|
158
169
|
}
|
package/dist/esm/{catalog-recommendations-CRW60UDr.js → catalog-recommendations-DIAyA5MP.js}
RENAMED
|
@@ -51,6 +51,7 @@ function toNumericId(value) {
|
|
|
51
51
|
function fetchRecommendations(path, params) {
|
|
52
52
|
const url = new URL(getRecommendationsUrl(path));
|
|
53
53
|
Object.entries(params).forEach(([key, value]) => url.searchParams.set(key, value));
|
|
54
|
+
let requestId = null;
|
|
54
55
|
// Native fetch (not salla.api) so only the explicit allow-listed headers are
|
|
55
56
|
// sent — no axios default headers to trip the recommendations CORS preflight.
|
|
56
57
|
// Best-effort feature: callers hide their section via .catch(), so no notifier.
|
|
@@ -65,9 +66,23 @@ function fetchRecommendations(path, params) {
|
|
|
65
66
|
if (!response.ok) {
|
|
66
67
|
throw new Error(`Recommendations request failed: ${response.status}`);
|
|
67
68
|
}
|
|
69
|
+
// Going around `salla.api` also goes around the axios response interceptor that
|
|
70
|
+
// harvests this id for `salla.recommendations`, so it is captured here instead.
|
|
71
|
+
// The recommendations worker generates one when the client sends none and
|
|
72
|
+
// CORS-exposes it, so it is present on every response.
|
|
73
|
+
requestId = response.headers?.get?.('s-request-id') ?? null;
|
|
68
74
|
return response.json();
|
|
69
75
|
})
|
|
70
|
-
.then((payload) =>
|
|
76
|
+
.then((payload) => {
|
|
77
|
+
const ids = extractRecommendationIds(payload);
|
|
78
|
+
// Rides along on the id list so callers keep their `string[]` contract, and the
|
|
79
|
+
// section that renders these ids can attribute its events to the response that
|
|
80
|
+
// produced them. Non-enumerable, so the value still behaves as a plain array.
|
|
81
|
+
if (requestId) {
|
|
82
|
+
Object.defineProperty(ids, '_requestId', { value: requestId });
|
|
83
|
+
}
|
|
84
|
+
return ids;
|
|
85
|
+
});
|
|
71
86
|
}
|
|
72
87
|
function fetchCartBoughtTogether(productIds) {
|
|
73
88
|
const ids = productIds
|