@salla.sa/twilight-components 2.14.352 → 2.14.354
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/bell-ring-BfKPinNo.js +13 -0
- package/dist/cjs/{interfaces-CX9-6aLf.js → camera-DytepEoK.js} +0 -11
- package/dist/cjs/cancel-De6vslRA.js +13 -0
- package/dist/cjs/cart-s-x1Fshk.js +13 -0
- package/dist/cjs/check-circle2-BDvlT4_n.js +13 -0
- package/dist/cjs/{check-CLRvuniI.js → check-x3w3-gpj.js} +2 -2
- package/dist/cjs/{filepond-XtsZ6xtH.js → filepond-CuKErtOy.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-Bj84Ypvg.js → filepond-plugin-file-poster-d-8BSuST.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-aYfb4yYH.js → filepond-plugin-file-validate-size-zgI_JcqY.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-CJsd6rXl.js → filepond-plugin-file-validate-type-Cy8IgG2P.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-DRlBSg36.js → filepond-plugin-image-edit-9ZAUzCvh.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-SY8c6DzI.js → filepond-plugin-image-exif-orientation-DzNe_tY2.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-iqhJmUmU.js → filepond-plugin-image-preview-Cfna6xTB.js} +1 -1
- package/dist/{esm/gift-C0JNGIpa.js → cjs/gift-CJ-3Yw_x.js} +4 -2
- package/dist/cjs/image-BoZ6Hums.js +13 -0
- package/dist/cjs/{index-Z-cyrNSM.js → index-Ce40E8tZ.js} +136 -12
- package/dist/cjs/{index-C7-280f4.js → index-ff-xJfhj.js} +1 -1
- package/dist/cjs/interfaces-CRqrf5RX.js +15 -0
- package/dist/cjs/keyboard_arrow_down-DHJ3FFZq.js +13 -0
- package/dist/cjs/keyboard_arrow_right-BayM_Il2.js +21 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/minus-CCryh1qf.js +21 -0
- package/dist/cjs/salla-accordion-body_3.cjs.entry.js +775 -0
- package/dist/cjs/salla-accordion_6.cjs.entry.js +768 -0
- package/dist/cjs/salla-add-product-button_4.cjs.entry.js +2389 -0
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-alert_2.cjs.entry.js +194 -0
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +8 -3
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-booking-field_7.cjs.entry.js +1565 -0
- package/dist/cjs/{salla-cart-item-offers.cjs.entry.js → salla-cart-item-offers_2.cjs.entry.js} +104 -5
- package/dist/cjs/salla-comment-form_8.cjs.entry.js +1661 -0
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +3 -3
- package/dist/cjs/salla-count-down_2.cjs.entry.js +302 -0
- package/dist/cjs/salla-custom-fields.cjs.entry.js +4 -3
- 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-gifting.cjs.entry.js +488 -0
- package/dist/cjs/salla-hook.cjs.entry.js +1 -1
- package/dist/cjs/salla-infinite-scroll.cjs.entry.js +91 -0
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-list-tile.cjs.entry.js +34 -0
- package/dist/cjs/salla-localization-modal.cjs.entry.js +137 -0
- package/dist/cjs/salla-login-modal.cjs.entry.js +320 -0
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
- package/dist/cjs/salla-loyalty.cjs.entry.js +211 -0
- package/dist/cjs/salla-maintenance-alert.cjs.entry.js +40 -0
- package/dist/cjs/salla-menu.cjs.entry.js +139 -0
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +220 -0
- package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +598 -0
- package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +69 -0
- package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer-modal.cjs.entry.js +206 -0
- package/dist/cjs/salla-offer.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-summary.cjs.entry.js +3 -3
- 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 +51 -0
- package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-size-guide.cjs.entry.js +66 -0
- package/dist/cjs/salla-products-list.cjs.entry.js +762 -0
- package/dist/cjs/salla-products-slider.cjs.entry.js +115 -0
- package/dist/cjs/salla-progress-bar.cjs.entry.js +73 -0
- package/dist/cjs/salla-quick-order.cjs.entry.js +239 -0
- package/dist/cjs/salla-rating-modal.cjs.entry.js +453 -0
- package/dist/cjs/salla-scopes.cjs.entry.js +180 -0
- package/dist/cjs/salla-search.cjs.entry.js +153 -0
- package/dist/cjs/salla-skeleton.cjs.entry.js +36 -0
- package/dist/cjs/salla-slider.cjs.entry.js +10389 -0
- package/dist/cjs/salla-social-share.cjs.entry.js +165 -0
- package/dist/cjs/salla-social.cjs.entry.js +3 -3
- package/dist/cjs/salla-tab-content_3.cjs.entry.js +157 -0
- 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 +275 -0
- package/dist/cjs/salla-user-profile.cjs.entry.js +145 -0
- package/dist/cjs/salla-user-settings.cjs.entry.js +88 -0
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/search-c7Aa7lM9.js +13 -0
- package/dist/cjs/{special-discount-OVG_9Kf9.js → special-discount-DC2oXurL.js} +0 -8
- package/dist/cjs/star-DGcH7Yso.js +13 -0
- package/dist/cjs/star2-R146a27p.js +13 -0
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/cjs/{vanilla-picker-Dq7F5bE1.js → vanilla-picker-zQsXQIff.js} +1 -1
- package/dist/cjs/{whatsapp2-D7Sbg8Ey.js → whatsapp2-BdMd5Gx1.js} +2 -2
- package/dist/collection/collection-manifest.json +55 -1
- package/dist/collection/components/salla-add-product-button/salla-add-product-button.js +18 -6
- package/dist/collection/components/salla-app-install-alert/salla-app-install-alert.js +7 -2
- package/dist/collection/components/salla-color-picker/salla-color-picker.js +39 -8
- package/dist/collection/components/salla-maintenance-alert/salla-maintenance-alert.js +4 -2
- package/dist/collection/components/salla-product-options/salla-product-options.js +36 -3
- package/dist/collection/components/salla-products-list/salla-products-list.js +17 -11
- package/dist/components/index.js +2 -2
- package/dist/components/salla-add-product-button2.js +18 -6
- package/dist/components/salla-app-install-alert.js +7 -2
- package/dist/components/salla-color-picker2.js +38 -7
- package/dist/components/salla-maintenance-alert.js +4 -2
- package/dist/components/salla-product-options2.js +19 -2
- package/dist/components/salla-products-list2.js +17 -11
- package/dist/esm/bell-ring-D3mWkc-3.js +11 -0
- package/dist/esm/{interfaces-CBT_Nxny.js → camera-C6jIkM-X.js} +1 -12
- package/dist/esm/cancel-BsLF_HK7.js +11 -0
- package/dist/esm/cart-DY4LZmNP.js +11 -0
- package/dist/esm/{check-uTyAzPSy.js → check-BsXh13x8.js} +2 -2
- package/dist/esm/check-circle2-BV4kqbdL.js +11 -0
- package/dist/esm/{filepond-Dg4ZKM-u.js → filepond-DEzyRrdH.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-BUIjdsnA.js → filepond-plugin-file-poster-DyLcCcHM.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-DgZMMqmi.js → filepond-plugin-file-validate-size-Cxp5Yzea.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-DA9tDSFr.js → filepond-plugin-file-validate-type-D2qNOQP4.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-dotdnN4Z.js → filepond-plugin-image-edit-DndTlA7m.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-oSI8aLU-.js → filepond-plugin-image-exif-orientation-CiT1CQoK.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-DEefQK61.js → filepond-plugin-image-preview-DBG7keFZ.js} +1 -1
- package/dist/{cjs/gift-BPDUPIY_.js → esm/gift-BChI23pG.js} +2 -4
- package/dist/esm/image-C-tzSDxw.js +11 -0
- package/dist/esm/{index-D2-TtAhI.js → index-B74h9G6a.js} +137 -13
- package/dist/esm/{index-B7E8Tmgi.js → index-BLw7mdtM.js} +1 -1
- package/dist/esm/interfaces-OF8QcbMM.js +15 -0
- package/dist/esm/keyboard_arrow_down-DCZbpt2a.js +11 -0
- package/dist/esm/keyboard_arrow_right-Vqpj4CWE.js +18 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/minus-DfeagqF1.js +18 -0
- package/dist/esm/salla-accordion-body_3.entry.js +771 -0
- package/dist/esm/salla-accordion_6.entry.js +761 -0
- package/dist/esm/salla-add-product-button_4.entry.js +2384 -0
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-alert_2.entry.js +191 -0
- package/dist/esm/salla-app-install-alert.entry.js +8 -3
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-booking-field_7.entry.js +1539 -0
- package/dist/esm/{salla-cart-item-offers.entry.js → salla-cart-item-offers_2.entry.js} +104 -6
- package/dist/esm/salla-comment-form_8.entry.js +1652 -0
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- package/dist/esm/salla-contacts.entry.js +3 -3
- package/dist/esm/salla-count-down_2.entry.js +299 -0
- package/dist/esm/salla-custom-fields.entry.js +3 -2
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-gifting.entry.js +486 -0
- package/dist/esm/salla-hook.entry.js +1 -1
- package/dist/esm/salla-infinite-scroll.entry.js +89 -0
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-list-tile.entry.js +32 -0
- package/dist/esm/salla-localization-modal.entry.js +135 -0
- package/dist/esm/salla-login-modal.entry.js +318 -0
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-loyalty-program.entry.js +3 -3
- package/dist/esm/salla-loyalty.entry.js +209 -0
- package/dist/esm/salla-maintenance-alert.entry.js +38 -0
- package/dist/esm/salla-menu.entry.js +137 -0
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +217 -0
- package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +595 -0
- package/dist/esm/salla-multiple-bundle-product.entry.js +67 -0
- package/dist/esm/salla-notification-item.entry.js +1 -1
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-offer-modal.entry.js +204 -0
- package/dist/esm/salla-offer.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-summary.entry.js +3 -3
- 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 +49 -0
- package/dist/esm/salla-price-range.entry.js +1 -1
- package/dist/esm/salla-product-size-guide.entry.js +64 -0
- package/dist/esm/salla-products-list.entry.js +760 -0
- package/dist/esm/salla-products-slider.entry.js +113 -0
- package/dist/esm/salla-progress-bar.entry.js +71 -0
- package/dist/esm/salla-quick-order.entry.js +237 -0
- package/dist/esm/salla-rating-modal.entry.js +451 -0
- package/dist/esm/salla-scopes.entry.js +178 -0
- package/dist/esm/salla-search.entry.js +151 -0
- package/dist/esm/salla-skeleton.entry.js +34 -0
- package/dist/esm/salla-slider.entry.js +10387 -0
- package/dist/esm/salla-social-share.entry.js +163 -0
- package/dist/esm/salla-social.entry.js +2 -2
- package/dist/esm/salla-tab-content_3.entry.js +153 -0
- 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 +273 -0
- package/dist/esm/salla-user-profile.entry.js +143 -0
- package/dist/esm/salla-user-settings.entry.js +86 -0
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/search-BscTeWDc.js +11 -0
- package/dist/esm/{special-discount-yRO-ZESF.js → special-discount-Ctkfc4K-.js} +1 -8
- package/dist/esm/star-ZT7ehBBk.js +11 -0
- package/dist/esm/star2-D4oPi1Ov.js +11 -0
- package/dist/esm/twilight.js +3 -3
- package/dist/esm/{vanilla-picker-DkUGzUrx.js → vanilla-picker-CtwkXTap.js} +1 -1
- package/dist/esm/{whatsapp2-DWksgowB.js → whatsapp2-CgR-T_ZS.js} +2 -2
- package/dist/twilight/{p-7b3ca138.entry.js → p-0134b4fd.entry.js} +1 -1
- package/dist/twilight/{p-0effc34b.entry.js → p-01daaaa6.entry.js} +1 -1
- package/dist/twilight/p-07da7390.entry.js +4 -0
- package/dist/twilight/{p-6ce3f119.entry.js → p-08badc32.entry.js} +1 -1
- package/dist/twilight/{p-4a594c06.entry.js → p-0aa5a12a.entry.js} +1 -1
- package/dist/twilight/{p-e73c28a8.entry.js → p-10dcd981.entry.js} +1 -1
- package/dist/twilight/{p-81df7a2e.entry.js → p-212a0710.entry.js} +1 -1
- package/dist/twilight/p-229275db.entry.js +4 -0
- package/dist/twilight/{p-fea62668.entry.js → p-232185ec.entry.js} +1 -1
- package/dist/twilight/{p-e5c01983.entry.js → p-2a927eac.entry.js} +1 -1
- package/dist/twilight/p-2d880232.entry.js +4 -0
- package/dist/twilight/p-2de9df64.entry.js +4 -0
- package/dist/twilight/p-309a0ba4.entry.js +4 -0
- package/dist/twilight/{p-6d886b96.entry.js → p-32732ca7.entry.js} +1 -1
- package/dist/twilight/{p-9d35196f.entry.js → p-32ca34ec.entry.js} +1 -1
- package/dist/twilight/{p-2aa0a4e2.entry.js → p-33093880.entry.js} +1 -1
- package/dist/twilight/p-3cffa4c9.entry.js +4 -0
- package/dist/twilight/p-3d0bb451.entry.js +4 -0
- package/dist/twilight/p-3e0d814c.entry.js +4 -0
- package/dist/twilight/p-4036d5dc.entry.js +4 -0
- package/dist/twilight/p-40fe4b01.entry.js +4 -0
- package/dist/twilight/p-47ac0ca5.entry.js +4 -0
- package/dist/twilight/{p-b9d0212c.entry.js → p-4cd9da44.entry.js} +1 -1
- package/dist/twilight/p-5c9281d3.entry.js +4 -0
- package/dist/twilight/p-5d044466.entry.js +4 -0
- package/dist/twilight/p-5d21334a.entry.js +4 -0
- package/dist/twilight/{p-e26cc25b.entry.js → p-654429df.entry.js} +1 -1
- package/dist/twilight/p-6b8453be.entry.js +4 -0
- package/dist/twilight/p-6be7bbb0.entry.js +4 -0
- package/dist/twilight/{p-67c327a8.entry.js → p-6c8f5c94.entry.js} +1 -1
- package/dist/twilight/{p-9b8f5399.entry.js → p-6fa02770.entry.js} +1 -1
- package/dist/twilight/p-7040ea33.entry.js +4 -0
- package/dist/twilight/p-8c189d76.entry.js +4 -0
- package/dist/twilight/p-8f1f052c.entry.js +4 -0
- package/dist/twilight/{p-6b0a03f6.entry.js → p-9051a540.entry.js} +1 -1
- package/dist/twilight/p-9f1c561f.entry.js +4 -0
- package/dist/twilight/{p-B0ba6Gec.js → p-B69XOH6h.js} +2 -2
- package/dist/twilight/{p-D2-TtAhI.js → p-B74h9G6a.js} +2 -2
- package/dist/twilight/{p-C0JNGIpa.js → p-BChI23pG.js} +1 -1
- package/dist/twilight/{p-DhcC83-2.js → p-BCxm-ISm.js} +1 -1
- package/dist/twilight/{p-Cmkcwiop.js → p-BPqZ249Z.js} +1 -1
- package/dist/twilight/p-BV4kqbdL.js +4 -0
- package/dist/twilight/p-BsLF_HK7.js +4 -0
- package/dist/twilight/{p-uTyAzPSy.js → p-BsXh13x8.js} +1 -1
- package/dist/twilight/p-BscTeWDc.js +4 -0
- package/dist/twilight/p-C-tzSDxw.js +4 -0
- package/dist/twilight/p-C6jIkM-X.js +4 -0
- package/dist/twilight/p-CO-PeZ27.js +4 -0
- package/dist/twilight/{p-DPqkW1aD.js → p-CQq81yb5.js} +2 -2
- package/dist/twilight/{p-DWksgowB.js → p-CgR-T_ZS.js} +1 -1
- package/dist/twilight/p-Ctkfc4K-.js +4 -0
- package/dist/twilight/p-D3mWkc-3.js +4 -0
- package/dist/twilight/p-D4oPi1Ov.js +4 -0
- package/dist/twilight/p-DCZbpt2a.js +4 -0
- package/dist/twilight/p-DY4LZmNP.js +4 -0
- package/dist/twilight/p-DfeagqF1.js +4 -0
- package/dist/twilight/{p-DJ557xys.js → p-DpsbV3x1.js} +1 -1
- package/dist/twilight/p-OF8QcbMM.js +4 -0
- package/dist/twilight/p-Vqpj4CWE.js +4 -0
- package/dist/twilight/p-ZT7ehBBk.js +4 -0
- package/dist/twilight/{p-q-O0srMP.js → p-_-aXm0Wb.js} +1 -1
- package/dist/twilight/p-a100bd38.entry.js +4 -0
- package/dist/twilight/{p-cf66ab4d.entry.js → p-a2756650.entry.js} +1 -1
- package/dist/twilight/{p-b1af2aca.entry.js → p-aab45a16.entry.js} +1 -1
- package/dist/twilight/p-aae761ff.entry.js +4 -0
- package/dist/twilight/p-afd61e47.entry.js +4 -0
- package/dist/twilight/p-b1fc6dfc.entry.js +4 -0
- package/dist/twilight/p-b206a0a1.entry.js +4 -0
- package/dist/twilight/p-b2332516.entry.js +4 -0
- package/dist/twilight/{p-6c2807c8.entry.js → p-b588ef46.entry.js} +1 -1
- package/dist/twilight/p-b71fc1b5.entry.js +4 -0
- package/dist/twilight/{p-_JhF_Kvb.js → p-bVqtOl1F.js} +1 -1
- package/dist/twilight/{p-a858523c.entry.js → p-bf65b263.entry.js} +1 -1
- package/dist/twilight/{p-d4faa0f6.entry.js → p-c56a47b0.entry.js} +1 -1
- package/dist/twilight/p-c73189e3.entry.js +4 -0
- package/dist/twilight/p-d1203242.entry.js +4 -0
- package/dist/twilight/p-d4edfed4.entry.js +4 -0
- package/dist/twilight/{p-f6ffc708.entry.js → p-d86ce978.entry.js} +1 -1
- package/dist/twilight/{p-8e7fa4a9.entry.js → p-d9e7973d.entry.js} +1 -1
- package/dist/twilight/p-e3e33238.entry.js +4 -0
- package/dist/twilight/p-e6bb7362.entry.js +4 -0
- package/dist/twilight/{p-30403778.entry.js → p-e7813c80.entry.js} +1 -1
- package/dist/twilight/p-ec2fd37e.entry.js +4 -0
- package/dist/twilight/{p-ed60a726.entry.js → p-ec77c523.entry.js} +1 -1
- package/dist/twilight/{p-b208650b.entry.js → p-efc18ce6.entry.js} +1 -1
- package/dist/twilight/p-f4039c40.entry.js +4 -0
- package/dist/twilight/p-f47b130c.entry.js +4 -0
- package/dist/twilight/{p-db526796.entry.js → p-f57ca123.entry.js} +1 -1
- package/dist/twilight/{p-933881d3.entry.js → p-f5ad6572.entry.js} +1 -1
- package/dist/twilight/p-fc65084f.entry.js +4 -0
- package/dist/twilight/p-fd81a311.entry.js +4 -0
- package/dist/twilight/{p-9fa5ffcf.entry.js → p-fe983809.entry.js} +1 -1
- package/dist/twilight/{p-Czq4p9Qp.js → p-i5J7XGS6.js} +1 -1
- package/dist/twilight/{p-C2bMx7q5.js → p-shFpk0H3.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-add-product-button/salla-add-product-button.d.ts +5 -0
- package/dist/types/components/salla-app-install-alert/salla-app-install-alert.d.ts +3 -1
- package/dist/types/components/salla-color-picker/salla-color-picker.d.ts +10 -0
- package/dist/types/components/salla-product-options/salla-product-options.d.ts +8 -1
- package/dist/types/components/salla-products-list/salla-products-list.d.ts +2 -0
- package/dist/types/components.d.ts +4 -0
- package/package.json +5 -5
- package/dist/cjs/salla-accordion_62.cjs.entry.js +0 -22420
- package/dist/cjs/salla-review-card.cjs.entry.js +0 -183
- package/dist/cjs/salla-reviews-page.cjs.entry.js +0 -695
- package/dist/cjs/salla-reviews.cjs.entry.js +0 -106
- package/dist/esm/salla-accordion_62.entry.js +0 -22339
- package/dist/esm/salla-review-card.entry.js +0 -181
- package/dist/esm/salla-reviews-page.entry.js +0 -693
- package/dist/esm/salla-reviews.entry.js +0 -104
- package/dist/twilight/p-01bccbf2.entry.js +0 -4
- package/dist/twilight/p-22d83528.entry.js +0 -4
- package/dist/twilight/p-3a74b551.entry.js +0 -4
- package/dist/twilight/p-4e416704.entry.js +0 -4
- package/dist/twilight/p-5dbf4cec.entry.js +0 -4
- package/dist/twilight/p-CBT_Nxny.js +0 -4
- package/dist/twilight/p-Dz7o69vX.js +0 -4
- package/dist/twilight/p-a42d626d.entry.js +0 -4
- package/dist/twilight/p-yRO-ZESF.js +0 -4
- package/dist/cjs/{twitter-pOrUNjXi.js → facebook-DbXua6B9.js} +2 -2
- package/dist/esm/{twitter-Dz7o69vX.js → facebook-CO-PeZ27.js} +2 -2
|
@@ -103,6 +103,60 @@
|
|
|
103
103
|
"typescriptVersion": "5.5.4"
|
|
104
104
|
},
|
|
105
105
|
"collections": [],
|
|
106
|
-
"bundles": [
|
|
106
|
+
"bundles": [
|
|
107
|
+
{
|
|
108
|
+
"components": [
|
|
109
|
+
"salla-cart-item-offers",
|
|
110
|
+
"salla-cart-summary"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"components": [
|
|
115
|
+
"salla-alert",
|
|
116
|
+
"salla-bottom-alert"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"components": [
|
|
121
|
+
"salla-add-product-button",
|
|
122
|
+
"salla-product-availability",
|
|
123
|
+
"salla-product-options",
|
|
124
|
+
"salla-quick-buy"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"components": [
|
|
129
|
+
"salla-accordion",
|
|
130
|
+
"salla-breadcrumb",
|
|
131
|
+
"salla-button",
|
|
132
|
+
"salla-drawer",
|
|
133
|
+
"salla-loading",
|
|
134
|
+
"salla-modal"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"components": [
|
|
139
|
+
"salla-booking-field",
|
|
140
|
+
"salla-color-picker",
|
|
141
|
+
"salla-conditional-fields",
|
|
142
|
+
"salla-datetime-picker",
|
|
143
|
+
"salla-file-upload",
|
|
144
|
+
"salla-quantity-input",
|
|
145
|
+
"salla-tel-input"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"components": [
|
|
150
|
+
"salla-comment-form",
|
|
151
|
+
"salla-comment-item",
|
|
152
|
+
"salla-comments",
|
|
153
|
+
"salla-rating-stars",
|
|
154
|
+
"salla-review-card",
|
|
155
|
+
"salla-reviews",
|
|
156
|
+
"salla-reviews-page",
|
|
157
|
+
"salla-reviews-summary"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
],
|
|
107
161
|
"global": "global/app.js"
|
|
108
162
|
}
|
|
@@ -22,12 +22,19 @@ export class SallaAddProductButton {
|
|
|
22
22
|
this.productType = 'product';
|
|
23
23
|
this.selectedOptions = [];
|
|
24
24
|
this.buyNowText = salla.lang.get('pages.products.buy_now');
|
|
25
|
+
/** Use matchMedia instead of window.innerWidth to avoid forced reflow (Lighthouse/PageSpeed) */
|
|
26
|
+
this.isDesktopViewport = typeof window !== 'undefined' ? window.matchMedia('(min-width: 768px)').matches : true;
|
|
27
|
+
this.viewportMediaQuery = null;
|
|
28
|
+
this.onViewportChange = (e) => {
|
|
29
|
+
this.isDesktopViewport = e.matches;
|
|
30
|
+
this.btn?.setText((e.matches && !!this.passedLabel) ? this.passedLabel : this.getLabel());
|
|
31
|
+
};
|
|
25
32
|
salla.lang.onLoaded(() => {
|
|
26
33
|
this.buyNowText = salla.lang.get('pages.products.buy_now');
|
|
27
34
|
});
|
|
28
35
|
}
|
|
29
36
|
getLabel() {
|
|
30
|
-
if (this.productStatus === 'sale' && this.supportStickyBar &&
|
|
37
|
+
if (this.productStatus === 'sale' && this.supportStickyBar && !this.isDesktopViewport && this.showQuickBuy && this.isApplePayActive) {
|
|
31
38
|
return Cart;
|
|
32
39
|
}
|
|
33
40
|
if (this.hasPreOrder) {
|
|
@@ -120,7 +127,7 @@ export class SallaAddProductButton {
|
|
|
120
127
|
getQuickBuyBtnAttributes() {
|
|
121
128
|
return {
|
|
122
129
|
...this.getBtnAttributes(),
|
|
123
|
-
type: this.supportStickyBar &&
|
|
130
|
+
type: this.supportStickyBar && !this.isDesktopViewport ? 'plain' : this.productType == 'donating' ? 'donate' : 'buy'
|
|
124
131
|
};
|
|
125
132
|
}
|
|
126
133
|
miniCheckoutWidget() {
|
|
@@ -143,11 +150,12 @@ export class SallaAddProductButton {
|
|
|
143
150
|
&& salla.config.get('store.settings.payments')?.includes('apple_pay')
|
|
144
151
|
&& salla.config.get('store.settings.is_salla_gateway', false);
|
|
145
152
|
this.passedLabel = this.host.innerHTML.replace('<!---->', '').trim();
|
|
146
|
-
if (!!this.passedLabel &&
|
|
153
|
+
if (!!this.passedLabel && this.isDesktopViewport) {
|
|
147
154
|
return this.btn?.setText(this.passedLabel);
|
|
148
155
|
}
|
|
149
156
|
if (this.host.getAttribute('type') === 'submit' && this.supportStickyBar) {
|
|
150
|
-
|
|
157
|
+
this.viewportMediaQuery = window.matchMedia('(min-width: 768px)');
|
|
158
|
+
this.viewportMediaQuery.addEventListener('change', this.onViewportChange);
|
|
151
159
|
}
|
|
152
160
|
});
|
|
153
161
|
}
|
|
@@ -199,7 +207,7 @@ export class SallaAddProductButton {
|
|
|
199
207
|
}
|
|
200
208
|
componentDidRender() {
|
|
201
209
|
//if label not passed, get label
|
|
202
|
-
if (!!this.passedLabel && (!this.supportStickyBar ||
|
|
210
|
+
if (!!this.passedLabel && (!this.supportStickyBar || this.isDesktopViewport)) {
|
|
203
211
|
// if passed label, set it
|
|
204
212
|
this.btn?.setText(this.passedLabel);
|
|
205
213
|
return;
|
|
@@ -207,6 +215,9 @@ export class SallaAddProductButton {
|
|
|
207
215
|
this.btn?.setText(this.getLabel());
|
|
208
216
|
salla.lang.onLoaded(() => this.btn?.setText(this.getLabel()));
|
|
209
217
|
}
|
|
218
|
+
disconnectedCallback() {
|
|
219
|
+
this.viewportMediaQuery?.removeEventListener('change', this.onViewportChange);
|
|
220
|
+
}
|
|
210
221
|
static get is() { return "salla-add-product-button"; }
|
|
211
222
|
static get originalStyleUrls() {
|
|
212
223
|
return {
|
|
@@ -441,7 +452,8 @@ export class SallaAddProductButton {
|
|
|
441
452
|
"selectedOptions": {},
|
|
442
453
|
"showQuickBuy": {},
|
|
443
454
|
"isApplePayActive": {},
|
|
444
|
-
"buyNowText": {}
|
|
455
|
+
"buyNowText": {},
|
|
456
|
+
"isDesktopViewport": {}
|
|
445
457
|
};
|
|
446
458
|
}
|
|
447
459
|
static get events() {
|
|
@@ -25,12 +25,17 @@ export class SallaAppInstallAlert {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Check if the website opens from mobile or tablet devices only (android/ios).
|
|
28
|
+
* Uses matchMedia instead of window.innerWidth to avoid forced reflow (Lighthouse/PageSpeed).
|
|
29
|
+
* Guards against SSR/non-browser contexts (window, navigator, document).
|
|
28
30
|
*
|
|
29
|
-
* @param {number} screen the width of the biggest screen to be checked
|
|
31
|
+
* @param {number} screen the width of the biggest screen to be checked (default 1024)
|
|
30
32
|
* @returns {boolean} true if it is mobile or tablet else false
|
|
31
33
|
*/
|
|
32
34
|
isMobileOrTabletDevice(screen = 1024) {
|
|
33
|
-
|
|
35
|
+
if (typeof window === 'undefined' || typeof navigator === 'undefined' || typeof document === 'undefined') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const screenWidth = window.matchMedia(`(max-width: ${screen}px)`).matches;
|
|
34
39
|
const userAgentCheck = /Macintosh|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
35
40
|
const hasTouch = 'ontouchstart' in window ||
|
|
36
41
|
'ontouchend' in document ||
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import { h, Host } from "@stencil/core";
|
|
4
|
+
import { h, Host, } from "@stencil/core";
|
|
5
5
|
import ArrowDown from "../../assets/svg/keyboard_arrow_down.svg";
|
|
6
6
|
export class SallaColorPicker {
|
|
7
7
|
constructor() {
|
|
@@ -33,6 +33,10 @@ export class SallaColorPicker {
|
|
|
33
33
|
* Whether to enable adjusting the alpha channel.
|
|
34
34
|
*/
|
|
35
35
|
this.enableAlpha = false;
|
|
36
|
+
this.updateViewportCache = () => {
|
|
37
|
+
this.cachedViewportWidth = this.getViewportWidthFromBreakpoints();
|
|
38
|
+
};
|
|
39
|
+
this.cachedViewportWidth = 0; // Will be populated in componentDidLoad via requestAnimationFrame
|
|
36
40
|
}
|
|
37
41
|
colorChangeHandler(color) {
|
|
38
42
|
if (this.colorInput)
|
|
@@ -50,7 +54,10 @@ export class SallaColorPicker {
|
|
|
50
54
|
this.submitted.emit(color);
|
|
51
55
|
}
|
|
52
56
|
popupOpenedHandler(color) {
|
|
53
|
-
|
|
57
|
+
// Double rAF: defer setPopInPosition (getBoundingClientRect) until after paint to avoid forced reflow
|
|
58
|
+
requestAnimationFrame(() => {
|
|
59
|
+
requestAnimationFrame(() => this.setPopInPosition());
|
|
60
|
+
});
|
|
54
61
|
this.popupOpened.emit(color);
|
|
55
62
|
}
|
|
56
63
|
popupClosedHandler(color) {
|
|
@@ -123,26 +130,47 @@ export class SallaColorPicker {
|
|
|
123
130
|
this.picker = null;
|
|
124
131
|
this.pickerReady = null;
|
|
125
132
|
}
|
|
133
|
+
disconnectedCallback() {
|
|
134
|
+
window.removeEventListener('resize', this.updateViewportCache);
|
|
135
|
+
}
|
|
126
136
|
componentWillLoad() {
|
|
127
137
|
salla.onReady(() => {
|
|
128
138
|
this.color = this.color ? this.color : salla.config.get('theme.color.primary', '#5dd5c4');
|
|
129
139
|
});
|
|
130
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Returns viewport width from matchMedia breakpoints (no layout read).
|
|
143
|
+
* Must match updateViewportCache breakpoints for consistency.
|
|
144
|
+
*/
|
|
145
|
+
getViewportWidthFromBreakpoints() {
|
|
146
|
+
if (typeof window === 'undefined')
|
|
147
|
+
return 1024;
|
|
148
|
+
if (window.matchMedia('(min-width: 1200px)').matches)
|
|
149
|
+
return 1200;
|
|
150
|
+
if (window.matchMedia('(min-width: 992px)').matches)
|
|
151
|
+
return 992;
|
|
152
|
+
if (window.matchMedia('(min-width: 768px)').matches)
|
|
153
|
+
return 768;
|
|
154
|
+
return 375;
|
|
155
|
+
}
|
|
131
156
|
setPopInPosition() {
|
|
157
|
+
// Use cached viewport width – reading innerWidth at popup open causes forced reflow.
|
|
158
|
+
// Fallback: matchMedia-based value when cache is 0 (e.g. SSR before hydration). Same breakpoints as updateViewportCache.
|
|
159
|
+
const viewportWidth = this.cachedViewportWidth || this.getViewportWidthFromBreakpoints();
|
|
132
160
|
const popup = this.host.querySelector('.picker_wrapper');
|
|
133
161
|
const widgetEl = this.host.querySelector('.s-color-picker-widget');
|
|
134
162
|
if (!popup || !widgetEl)
|
|
135
163
|
return;
|
|
136
164
|
const widgetPosition = widgetEl.getBoundingClientRect();
|
|
137
|
-
const widgetToWindowEq =
|
|
165
|
+
const widgetToWindowEq = viewportWidth / 2 - widgetPosition.width / 2;
|
|
138
166
|
const widgetInLeft = widgetToWindowEq > widgetPosition.x;
|
|
139
167
|
const widgetInRight = widgetToWindowEq < widgetPosition.x;
|
|
140
168
|
const widgetInCenter = widgetToWindowEq === widgetPosition.x;
|
|
141
|
-
const isMobile = window.
|
|
169
|
+
const isMobile = !window.matchMedia('(min-width: 768px)').matches;
|
|
142
170
|
if (isMobile && widgetInLeft) {
|
|
143
171
|
popup.style.left = '0';
|
|
144
172
|
}
|
|
145
|
-
if (isMobile &&
|
|
173
|
+
if (isMobile && widgetInRight) {
|
|
146
174
|
popup.style.left = 'auto';
|
|
147
175
|
}
|
|
148
176
|
if (!isMobile || (isMobile && ((!widgetInRight && !widgetInLeft) || widgetInCenter))) {
|
|
@@ -150,7 +178,7 @@ export class SallaColorPicker {
|
|
|
150
178
|
}
|
|
151
179
|
}
|
|
152
180
|
initColorPicker() {
|
|
153
|
-
this.pickerReady = import('vanilla-picker').then(
|
|
181
|
+
this.pickerReady = import('vanilla-picker').then(mod => {
|
|
154
182
|
const Picker = mod.default;
|
|
155
183
|
const picker = new Picker({
|
|
156
184
|
parent: this.host,
|
|
@@ -170,14 +198,17 @@ export class SallaColorPicker {
|
|
|
170
198
|
});
|
|
171
199
|
}
|
|
172
200
|
render() {
|
|
173
|
-
return (h(Host, { key: '
|
|
201
|
+
return (h(Host, { key: 'dc90f101197031b0ec17939dc940b527cbb42764', class: "s-color-picker-main" }, h("slot", { key: '504a93f8bba3130a953dbfc1e03420d622247c0f', name: "widget" }, h("div", { key: '7eb60d1353d1fa6edefc400d7851499d083c3000', class: "s-color-picker-widget" }, h("div", { key: '01361959e0beeecd5c4b9ba0210931f3864b9273', class: "s-color-picker-widget-canvas", ref: dv => (this.canvas = dv) }), h("span", { key: '4091ba421758a3af182e7224ffbd74c5ca58166a', innerHTML: ArrowDown }))), h("input", { key: '5302b4da7dc9beaec6ab469175dee79d5b8c5dc5', class: "s-hidden", name: this.name, required: this.required, value: this.color, ref: color => (this.colorInput = color) })));
|
|
174
202
|
}
|
|
175
203
|
componentDidLoad() {
|
|
176
204
|
if (this.canvas)
|
|
177
205
|
this.canvas.style.backgroundColor = this.color;
|
|
178
206
|
this.initColorPicker();
|
|
207
|
+
// Populate viewport cache in next frame (avoids forced reflow during initial render)
|
|
208
|
+
requestAnimationFrame(() => this.updateViewportCache());
|
|
209
|
+
window.addEventListener('resize', this.updateViewportCache);
|
|
179
210
|
if (this.colorInput) {
|
|
180
|
-
this.colorInput.addEventListener('invalid',
|
|
211
|
+
this.colorInput.addEventListener('invalid', e => {
|
|
181
212
|
this.invalidInput.emit(e);
|
|
182
213
|
});
|
|
183
214
|
this.colorInput.addEventListener('input', () => {
|
|
@@ -7,14 +7,16 @@ export class SallaMaintenanceAlert {
|
|
|
7
7
|
componentWillLoad() {
|
|
8
8
|
this.title = salla.config.get('maintenance_details.title');
|
|
9
9
|
this.message = salla.config.get('maintenance_details.message');
|
|
10
|
-
|
|
10
|
+
// Use matchMedia instead of window.innerWidth to avoid forced reflow (Lighthouse/PageSpeed)
|
|
11
|
+
const isMobile = typeof window !== 'undefined' && !window.matchMedia('(min-width: 768px)').matches;
|
|
12
|
+
this.buttonTitle = isMobile ? salla.config.get('maintenance_details.button_title') : salla.config.get('maintenance_details.button_full_title');
|
|
11
13
|
}
|
|
12
14
|
closeAlert() {
|
|
13
15
|
salla.storage.set('hide_salla-maintenance-alert_at', Date.now());
|
|
14
16
|
this.host.style.display = 'none';
|
|
15
17
|
}
|
|
16
18
|
render() {
|
|
17
|
-
return (h(Host, { key: '
|
|
19
|
+
return (h(Host, { key: '109e687d7d6ba48ddf89cd3631f5a852d50688fd', class: "s-maintenance-alert-wrapper" }, h("button", { key: 'd70e7e53acc699336e1611589ca3bdfc704504c2', class: "s-maintenance-alert-close", innerHTML: Cancel, onClick: () => this.closeAlert() }), h("div", { key: 'b816c1a9635828c206c792d68203ccfbe8e8235b', class: "s-maintenance-alert-content" }, h("div", { key: '61e91088a5613d943b6f662f5ed44093ecf99237', class: "s-maintenance-alert-container" }, h("div", { key: '1ca223334f52bc5097677dd23433107080567894', class: "s-maintenance-alert-icon" }, h("img", { key: '22e07c7a104267cda2bed74929307d039018698d', src: salla.url.cdn('images/alert.png'), alt: "Alert" })), h("div", { key: '64d37700bc1454f5afadb55b49512bbd5b412d9c', class: "s-maintenance-alert-text" }, h("h2", { key: '7651dcd09a0ba07f14ed744758598015d4b45ecd' }, this.title), h("p", { key: '1f8d057af072466f34d0f3a13396de5144bc967f' }, this.message))), h("div", { key: '34f8471b855011b499c2038b1ac9dd24cc5e2e8b' }, h("a", { key: 'd9c4f4a9fb80ab90c13dc1dde69adcb7c4cd7e9f', class: "s-maintenance-alert-btn", href: salla.config.get('maintenance_details.button_url') }, this.buttonTitle)))));
|
|
18
20
|
}
|
|
19
21
|
componentDidLoad() {
|
|
20
22
|
//auto-hide the alert if close button is clicked before one hour
|
|
@@ -26,6 +26,7 @@ export class SallaProductOptions {
|
|
|
26
26
|
this.disableCardValue = true;
|
|
27
27
|
this.availableDigitalCardValues = [];
|
|
28
28
|
this.userInitiatedValidation = false;
|
|
29
|
+
this.isCartMode = false;
|
|
29
30
|
this.outSkus = [];
|
|
30
31
|
/**
|
|
31
32
|
* Avoid selection of previous default or selected card value option
|
|
@@ -507,10 +508,12 @@ export class SallaProductOptions {
|
|
|
507
508
|
return acc.concat(mappedDetails);
|
|
508
509
|
}, []);
|
|
509
510
|
}
|
|
510
|
-
componentDidLoad() {
|
|
511
|
+
async componentDidLoad() {
|
|
511
512
|
if (!this.optionsData?.length) {
|
|
512
513
|
return;
|
|
513
514
|
}
|
|
515
|
+
// Register for hooks — theme can call enterCartMode() here
|
|
516
|
+
await Salla.hooks.registerComponent('salla-product-options', this);
|
|
514
517
|
// Handle donation options
|
|
515
518
|
const selectedDonationOption = this.optionsData.find(option => option.type === DisplayType.DONATION)?.details?.find(detail => detail.is_selected);
|
|
516
519
|
if (selectedDonationOption) {
|
|
@@ -522,8 +525,9 @@ export class SallaProductOptions {
|
|
|
522
525
|
}, 1000);
|
|
523
526
|
}
|
|
524
527
|
// Handle pre-selected options on product page
|
|
528
|
+
// Skip if in cart mode (enterCartMode called by hook) or on cart page
|
|
525
529
|
// Call salla.product.getPrice() directly to avoid triggering form validation which causes unwanted scroll
|
|
526
|
-
if (!salla.url.is_page("cart")) {
|
|
530
|
+
if (!salla.url.is_page("cart") && !this.isCartMode) {
|
|
527
531
|
const pricingOptionTypes = [
|
|
528
532
|
DisplayType.SINGLE_OPTION,
|
|
529
533
|
DisplayType.MULTIPLE_OPTIONS,
|
|
@@ -556,6 +560,17 @@ export class SallaProductOptions {
|
|
|
556
560
|
}
|
|
557
561
|
}
|
|
558
562
|
}
|
|
563
|
+
/**
|
|
564
|
+
* Switch the component to cart-item mode: fill selected options,
|
|
565
|
+
* enable disabled-out-of-stock, and skip product price updates.
|
|
566
|
+
* Used by themes when treating a product page as a cart item editor.
|
|
567
|
+
*/
|
|
568
|
+
async enterCartMode() {
|
|
569
|
+
this.isCartMode = true;
|
|
570
|
+
this.disableCardValue = false;
|
|
571
|
+
this.canDisabled = true;
|
|
572
|
+
this.fillSelectedOptions();
|
|
573
|
+
}
|
|
559
574
|
/**
|
|
560
575
|
* Enable user-initiated validation mode so invalid fields will scroll into view
|
|
561
576
|
*/
|
|
@@ -943,7 +958,8 @@ export class SallaProductOptions {
|
|
|
943
958
|
"selectedOutSkus": {},
|
|
944
959
|
"disableCardValue": {},
|
|
945
960
|
"availableDigitalCardValues": {},
|
|
946
|
-
"userInitiatedValidation": {}
|
|
961
|
+
"userInitiatedValidation": {},
|
|
962
|
+
"isCartMode": {}
|
|
947
963
|
};
|
|
948
964
|
}
|
|
949
965
|
static get events() {
|
|
@@ -1105,6 +1121,23 @@ export class SallaProductOptions {
|
|
|
1105
1121
|
"tags": []
|
|
1106
1122
|
}
|
|
1107
1123
|
},
|
|
1124
|
+
"enterCartMode": {
|
|
1125
|
+
"complexType": {
|
|
1126
|
+
"signature": "() => Promise<void>",
|
|
1127
|
+
"parameters": [],
|
|
1128
|
+
"references": {
|
|
1129
|
+
"Promise": {
|
|
1130
|
+
"location": "global",
|
|
1131
|
+
"id": "global::Promise"
|
|
1132
|
+
}
|
|
1133
|
+
},
|
|
1134
|
+
"return": "Promise<void>"
|
|
1135
|
+
},
|
|
1136
|
+
"docs": {
|
|
1137
|
+
"text": "Switch the component to cart-item mode: fill selected options,\nenable disabled-out-of-stock, and skip product price updates.\nUsed by themes when treating a product page as a cart item editor.",
|
|
1138
|
+
"tags": []
|
|
1139
|
+
}
|
|
1140
|
+
},
|
|
1108
1141
|
"enableUserInitiatedValidation": {
|
|
1109
1142
|
"complexType": {
|
|
1110
1143
|
"signature": "() => Promise<void>",
|
|
@@ -34,6 +34,8 @@ export class SallaProductsList {
|
|
|
34
34
|
this.prevCategoryIdKey = "prevCategoryId";
|
|
35
35
|
this.isProcessing = false; // Tracks if we are processing data
|
|
36
36
|
this.scrollTimeout = null;
|
|
37
|
+
this.boundScrollToLastViewedProduct = () => this.scrollToLastViewedProduct();
|
|
38
|
+
this.boundHandleScroll = () => this.handleScroll();
|
|
37
39
|
this.specialPagesWithoutIds = {
|
|
38
40
|
'product.index.latest': 'latest',
|
|
39
41
|
'product.index.offers': 'offers',
|
|
@@ -58,11 +60,12 @@ export class SallaProductsList {
|
|
|
58
60
|
if ("scrollRestoration" in history)
|
|
59
61
|
history.scrollRestoration = "manual";
|
|
60
62
|
// required for scroll restoration case when the component loads before DOM content is completed (slow internet bandwidth /low device specs)
|
|
61
|
-
window.addEventListener('DOMContentLoaded', this.
|
|
63
|
+
window.addEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
|
|
62
64
|
salla.event.on('salla-filters::changed', filters => this.setFilters(filters));
|
|
63
65
|
}
|
|
64
66
|
disconnectedCallback() {
|
|
65
|
-
window.removeEventListener('DOMContentLoaded', this.
|
|
67
|
+
window.removeEventListener('DOMContentLoaded', this.boundScrollToLastViewedProduct);
|
|
68
|
+
window.removeEventListener('scroll', this.boundHandleScroll);
|
|
66
69
|
}
|
|
67
70
|
/**
|
|
68
71
|
* Set parsed filters data from URI
|
|
@@ -464,7 +467,7 @@ export class SallaProductsList {
|
|
|
464
467
|
this.loading(true, this.autoload ? false : true);
|
|
465
468
|
});
|
|
466
469
|
// Manual scroll listener
|
|
467
|
-
shouldApplyManualLoad && window.addEventListener('scroll', this.
|
|
470
|
+
shouldApplyManualLoad && window.addEventListener('scroll', this.boundHandleScroll);
|
|
468
471
|
this.infiniteScroll?.on('load', async (response) => {
|
|
469
472
|
if (this.isProcessing)
|
|
470
473
|
return;
|
|
@@ -517,14 +520,17 @@ export class SallaProductsList {
|
|
|
517
520
|
return;
|
|
518
521
|
this.scrollTimeout = setTimeout(() => {
|
|
519
522
|
this.scrollTimeout = null;
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
//
|
|
526
|
-
this.
|
|
527
|
-
|
|
523
|
+
// Defer layout reads to next frame to avoid forced reflow (Lighthouse/PageSpeed)
|
|
524
|
+
requestAnimationFrame(() => {
|
|
525
|
+
const wrapperRect = this.wrapper.getBoundingClientRect();
|
|
526
|
+
const windowHeight = window.innerHeight;
|
|
527
|
+
const distanceToBottom = wrapperRect.bottom - windowHeight;
|
|
528
|
+
// Trigger only when the wrapper bottom is within 200px of the viewport bottom
|
|
529
|
+
if (distanceToBottom <= 200 && !this.isProcessing && this.nextPage) {
|
|
530
|
+
// Reached near the bottom of the wrapper, loading next page...
|
|
531
|
+
this.manualLoadNextPage();
|
|
532
|
+
}
|
|
533
|
+
});
|
|
528
534
|
}, 200);
|
|
529
535
|
}
|
|
530
536
|
manualLoadNextPage() {
|