@salla.sa/twilight-components 2.14.353 → 2.14.355
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-7SxqaoXb.js → filepond-D0WqQOsJ.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-DwIv84hN.js → filepond-plugin-file-poster-ZuSz5Sia.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-NUNnIo4Q.js → filepond-plugin-file-validate-size-C3-G9fQU.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-CXI-hfww.js → filepond-plugin-file-validate-type-pC6E-hQQ.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-fBeBGIBb.js → filepond-plugin-image-edit-B6RJ-sf_.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-BmLTdQ6d.js → filepond-plugin-image-exif-orientation-BAKA7TOr.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-CssKRM6n.js → filepond-plugin-image-preview-C_5JV3u4.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-B9TEdQDE.js → index-DdedaQQE.js} +1 -1
- package/dist/cjs/{index-B5soIVRX.js → index-DgOViweO.js} +136 -12
- 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 +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +2 -2
- 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 +6 -18
- 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 +10428 -0
- package/dist/cjs/salla-social-share.cjs.entry.js +165 -0
- package/dist/cjs/salla-social.cjs.entry.js +4 -4
- 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 +2 -2
- 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-C6fk8_TR.js → vanilla-picker-Cd4v7i9t.js} +1 -1
- package/dist/cjs/{whatsapp2-D7Sbg8Ey.js → whatsapp2-BdMd5Gx1.js} +2 -2
- package/dist/collection/collection-manifest.json +56 -2
- package/dist/collection/components/salla-apps-icons/salla-apps-icons.js +1 -1
- package/dist/collection/components/salla-payments/salla-payments.js +5 -17
- package/dist/collection/components/salla-product-options/salla-product-options.js +36 -3
- package/dist/collection/components/salla-products-slider/salla-products-slider.js +32 -1
- package/dist/collection/components/salla-slider/salla-slider.js +89 -29
- package/dist/collection/components/salla-social/salla-social.js +1 -1
- package/dist/collection/components/salla-social-share/salla-social-share.js +1 -1
- package/dist/collection/components/salla-tabs/salla-tab-content.js +1 -1
- package/dist/collection/components/salla-tabs/salla-tab-header.js +1 -1
- package/dist/collection/components/salla-tabs/salla-tabs.js +1 -1
- package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -1
- package/dist/collection/components/salla-tooltip/salla-tooltip.js +1 -1
- package/dist/collection/components/salla-user-settings/salla-user-settings.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/salla-apps-icons.js +1 -1
- package/dist/components/salla-payments.js +5 -17
- package/dist/components/salla-product-options2.js +19 -2
- package/dist/components/salla-products-slider2.js +2 -1
- package/dist/components/salla-slider2.js +69 -28
- package/dist/components/salla-social-share.js +1 -1
- package/dist/components/salla-social.js +1 -1
- package/dist/components/salla-tab-content2.js +1 -1
- package/dist/components/salla-tab-header2.js +1 -1
- package/dist/components/salla-tabs2.js +1 -1
- package/dist/components/salla-tel-input2.js +1 -1
- package/dist/components/salla-tooltip2.js +1 -1
- package/dist/components/salla-user-settings.js +1 -1
- 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-Cuqyleyy.js → filepond-YrJ-JCRn.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-C6Wara8q.js → filepond-plugin-file-poster-UWiXxhAl.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-D-M3KSxo.js → filepond-plugin-file-validate-size-CuFnfvIq.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-DzAl1VI8.js → filepond-plugin-file-validate-type-BgYsHZEQ.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-flutfc9I.js → filepond-plugin-image-edit-BQtZWl9D.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-B2UkG6iE.js → filepond-plugin-image-exif-orientation-Dp7a5KRi.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-B4u8N2nE.js → filepond-plugin-image-preview-DvWrR7vg.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-xWIb6INF.js → index-DwU5NnFF.js} +1 -1
- package/dist/esm/{index-6mr785rH.js → index-PHxPq4LJ.js} +137 -13
- 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 +1 -1
- package/dist/esm/salla-apps-icons.entry.js +2 -2
- 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 +6 -18
- 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 +10426 -0
- package/dist/esm/salla-social-share.entry.js +163 -0
- package/dist/esm/salla-social.entry.js +3 -3
- 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 +2 -2
- 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-B4PKRAhm.js → vanilla-picker-fpTcpsmb.js} +1 -1
- package/dist/esm/{whatsapp2-DWksgowB.js → whatsapp2-CgR-T_ZS.js} +2 -2
- package/dist/twilight/p-009d1b75.entry.js +4 -0
- package/dist/twilight/{p-16b8d78c.entry.js → p-04e21492.entry.js} +1 -1
- package/dist/twilight/{p-ac6fc286.entry.js → p-0cc07ad0.entry.js} +1 -1
- package/dist/twilight/p-0f45b27f.entry.js +4 -0
- package/dist/twilight/p-112b4c91.entry.js +4 -0
- package/dist/twilight/p-14749ab0.entry.js +4 -0
- package/dist/twilight/{p-0c87ef6c.entry.js → p-1c66e567.entry.js} +1 -1
- package/dist/twilight/p-1e405d4e.entry.js +4 -0
- package/dist/twilight/{p-33ea3141.entry.js → p-1eb76272.entry.js} +1 -1
- package/dist/twilight/p-2322e6fc.entry.js +4 -0
- package/dist/twilight/{p-7e39343d.entry.js → p-2626b358.entry.js} +1 -1
- package/dist/twilight/{p-18ebec2c.entry.js → p-29e92637.entry.js} +1 -1
- package/dist/twilight/p-2ca5a8af.entry.js +4 -0
- package/dist/twilight/{p-4253fc44.entry.js → p-2cb04fa6.entry.js} +1 -1
- package/dist/twilight/{p-19e07b9e.entry.js → p-2e97a6cd.entry.js} +1 -1
- package/dist/twilight/{p-zHj-W7EE.js → p-2tEKDOI-.js} +1 -1
- package/dist/twilight/p-30b58124.entry.js +4 -0
- package/dist/twilight/{p-8c7b7712.entry.js → p-333171ce.entry.js} +1 -1
- package/dist/twilight/p-33cd8edb.entry.js +4 -0
- package/dist/twilight/p-3774fa61.entry.js +4 -0
- package/dist/twilight/{p-5067322a.entry.js → p-37aa131b.entry.js} +1 -1
- package/dist/twilight/{p-dde21f4b.entry.js → p-3c76e2d4.entry.js} +1 -1
- package/dist/twilight/{p-2d209f96.entry.js → p-3cbbd625.entry.js} +1 -1
- package/dist/twilight/{p-6f5d02c6.entry.js → p-3db132b8.entry.js} +1 -1
- package/dist/twilight/p-3eff2372.entry.js +4 -0
- package/dist/twilight/p-428fe4e6.entry.js +4 -0
- package/dist/twilight/p-475a61f8.entry.js +4 -0
- package/dist/twilight/{p-BijadG7g.js → p-4D4VVK4U.js} +1 -1
- package/dist/twilight/p-4c31b81f.entry.js +4 -0
- package/dist/twilight/{p-c096e336.entry.js → p-52ffcaba.entry.js} +1 -1
- package/dist/twilight/p-534be529.entry.js +4 -0
- package/dist/twilight/p-59697c9b.entry.js +4 -0
- package/dist/twilight/p-5c5aba15.entry.js +4 -0
- package/dist/twilight/p-666bea2d.entry.js +4 -0
- package/dist/twilight/p-6a934903.entry.js +4 -0
- package/dist/twilight/{p-6f576591.entry.js → p-6e89154f.entry.js} +1 -1
- package/dist/twilight/p-6f69cfa5.entry.js +4 -0
- package/dist/twilight/{p-d4aaeef4.entry.js → p-76ce3ec0.entry.js} +1 -1
- package/dist/twilight/p-781f1219.entry.js +4 -0
- package/dist/twilight/p-78e33f77.entry.js +4 -0
- package/dist/twilight/p-79aa2c2f.entry.js +4 -0
- package/dist/twilight/p-7a2bd261.entry.js +4 -0
- package/dist/twilight/p-7a769233.entry.js +4 -0
- package/dist/twilight/{p-6472200c.entry.js → p-7eef10c9.entry.js} +1 -1
- package/dist/twilight/{p-2a26c1d6.entry.js → p-8606c783.entry.js} +1 -1
- package/dist/twilight/p-8719301a.entry.js +4 -0
- package/dist/twilight/p-8ad78dfa.entry.js +4 -0
- package/dist/twilight/{p-300624bb.entry.js → p-9bea43d6.entry.js} +1 -1
- package/dist/twilight/{p-8b018d82.entry.js → p-9c01357f.entry.js} +1 -1
- package/dist/twilight/{p-C0JNGIpa.js → p-BChI23pG.js} +1 -1
- package/dist/twilight/{p-Cuxsz9f-.js → p-BPRHuBhm.js} +1 -1
- package/dist/twilight/{p-B2SkkGH8.js → p-BRh_eoK1.js} +1 -1
- package/dist/twilight/p-BV4kqbdL.js +4 -0
- package/dist/twilight/{p-tFBCbVoG.js → p-BitILwJ_.js} +1 -1
- 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-ChfiVIJv.js → p-Bx_UY06u.js} +1 -1
- package/dist/twilight/p-C-tzSDxw.js +4 -0
- package/dist/twilight/{p-Bp_xKTyn.js → p-C6S8Hr36.js} +1 -1
- package/dist/twilight/p-C6jIkM-X.js +4 -0
- package/dist/twilight/p-CO-PeZ27.js +4 -0
- 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-DnELO4MH.js → p-DtkaGJwR.js} +1 -1
- package/dist/twilight/p-OF8QcbMM.js +4 -0
- package/dist/twilight/{p-6mr785rH.js → p-PHxPq4LJ.js} +2 -2
- package/dist/twilight/p-Vqpj4CWE.js +4 -0
- package/dist/twilight/p-ZT7ehBBk.js +4 -0
- package/dist/twilight/p-a5bb66a3.entry.js +4 -0
- package/dist/twilight/p-ad9c9773.entry.js +4 -0
- package/dist/twilight/p-b502e876.entry.js +4 -0
- package/dist/twilight/{p-e909d28b.entry.js → p-b8d8175a.entry.js} +1 -1
- package/dist/twilight/p-ba5fc67a.entry.js +4 -0
- package/dist/twilight/p-c3750eaa.entry.js +4 -0
- package/dist/twilight/p-d7037864.entry.js +4 -0
- package/dist/twilight/p-d9880694.entry.js +4 -0
- package/dist/twilight/p-db0b3ed2.entry.js +4 -0
- package/dist/twilight/{p-81702ecb.entry.js → p-dbb4ede5.entry.js} +1 -1
- package/dist/twilight/{p-28900b2e.entry.js → p-e017e403.entry.js} +1 -1
- package/dist/twilight/p-e31177e7.entry.js +4 -0
- package/dist/twilight/p-e5b90edd.entry.js +4 -0
- package/dist/twilight/{p-b60db6c8.entry.js → p-ec3f15ee.entry.js} +1 -1
- package/dist/twilight/p-edc41bbc.entry.js +4 -0
- package/dist/twilight/p-f2c23e42.entry.js +4 -0
- package/dist/twilight/p-f34f5a30.entry.js +4 -0
- package/dist/twilight/{p-4bc98557.entry.js → p-f578dea7.entry.js} +1 -1
- package/dist/twilight/{p-9946fa76.entry.js → p-ffbd5949.entry.js} +1 -1
- package/dist/twilight/{p-C_h1JDCU.js → p-fq0HEcD_.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-payments/salla-payments.d.ts +0 -2
- package/dist/types/components/salla-product-options/salla-product-options.d.ts +8 -1
- package/dist/types/components/salla-products-slider/salla-products-slider.d.ts +8 -0
- package/dist/types/components/salla-slider/salla-slider.d.ts +20 -2
- package/dist/types/components.d.ts +26 -0
- package/package.json +5 -5
- package/dist/cjs/salla-accordion_62.cjs.entry.js +0 -22470
- 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 -22389
- 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-12e49031.entry.js +0 -4
- package/dist/twilight/p-5bf05092.entry.js +0 -4
- package/dist/twilight/p-67830f2a.entry.js +0 -4
- package/dist/twilight/p-751dddd4.entry.js +0 -4
- package/dist/twilight/p-9b22a7eb.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-a515a8cc.entry.js +0 -4
- package/dist/twilight/p-c4821f8b.entry.js +0 -4
- package/dist/twilight/p-de807340.entry.js +0 -4
- package/dist/twilight/p-fa585081.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
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
var index = require('./index-DgOViweO.js');
|
|
7
|
+
var star2 = require('./star2-R146a27p.js');
|
|
8
|
+
var cancel = require('./cancel-De6vslRA.js');
|
|
9
|
+
|
|
10
|
+
var Star3 = `<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 80 80">
|
|
11
|
+
<title>star3</title>
|
|
12
|
+
<defs>
|
|
13
|
+
<style>
|
|
14
|
+
.a {
|
|
15
|
+
fill: none !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.b {
|
|
19
|
+
fill: #ff9e01;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.c {
|
|
23
|
+
fill: #fff;
|
|
24
|
+
opacity: 0.1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
</style>
|
|
28
|
+
</defs>
|
|
29
|
+
<g transform="translate(-683 -269)">
|
|
30
|
+
<rect class="a" width="80" height="80" transform="translate(683 269)" />
|
|
31
|
+
<g transform="translate(684.539 261.216)">
|
|
32
|
+
<path class="b"
|
|
33
|
+
d="M110.117,37.062,90.024,35.2,82.043,16.665a1.61,1.61,0,0,0-2.958,0L71.1,35.2,51.011,37.062a1.61,1.61,0,0,0-.914,2.813l15.16,13.318L60.821,72.878a1.61,1.61,0,0,0,2.393,1.739l17.351-10.3,17.351,10.3a1.61,1.61,0,0,0,2.393-1.739L95.871,53.192l15.16-13.318A1.61,1.61,0,0,0,110.117,37.062Z"
|
|
34
|
+
transform="translate(-42.104 -4.011)" />
|
|
35
|
+
<g transform="translate(0 10.971)">
|
|
36
|
+
<path class="b"
|
|
37
|
+
d="M93.54,12.016c1.024,1.423,3.915,7.533,5.568,11.094a.559.559,0,0,1-.891.641c-2.853-2.7-7.73-7.377-8.754-8.8a2.512,2.512,0,0,1,4.077-2.935Z"
|
|
38
|
+
transform="translate(-75.621 -10.971)" />
|
|
39
|
+
<path class="b"
|
|
40
|
+
d="M360.909,12.016c-1.024,1.423-3.915,7.533-5.568,11.094a.559.559,0,0,0,.891.641c2.853-2.7,7.73-7.377,8.754-8.8a2.512,2.512,0,0,0-4.077-2.935Z"
|
|
41
|
+
transform="translate(-301.908 -10.971)" />
|
|
42
|
+
<path class="b"
|
|
43
|
+
d="M427.538,284.659c-1.667-.543-8.366-1.441-12.261-1.934a.559.559,0,0,0-.34,1.044c3.436,1.9,9.377,5.123,11.044,5.666a2.512,2.512,0,0,0,1.558-4.776Z"
|
|
44
|
+
transform="translate(-352.351 -241.894)" />
|
|
45
|
+
<path class="b"
|
|
46
|
+
d="M1.734,284.659c1.667-.543,8.366-1.441,12.261-1.934a.559.559,0,0,1,.34,1.044c-3.436,1.9-9.377,5.123-11.044,5.666a2.512,2.512,0,0,1-1.558-4.776Z"
|
|
47
|
+
transform="translate(0 -241.894)" />
|
|
48
|
+
<path class="b"
|
|
49
|
+
d="M239.794,412.414c0-1.753,1.224-8.4,1.963-12.257a.559.559,0,0,1,1.1,0c.739,3.855,1.963,10.5,1.963,12.257a2.512,2.512,0,0,1-5.023,0Z"
|
|
50
|
+
transform="translate(-203.768 -341.301)" />
|
|
51
|
+
</g>
|
|
52
|
+
<path class="c"
|
|
53
|
+
d="M84.945,23.4l-2.9-6.74a1.61,1.61,0,0,0-2.958,0L71.1,35.2,51.011,37.062a1.61,1.61,0,0,0-.914,2.813l15.16,13.318L60.821,72.878a1.61,1.61,0,0,0,2.393,1.739l2.309-1.371A125,125,0,0,1,84.945,23.4Z"
|
|
54
|
+
transform="translate(-42.104 -4.011)" />
|
|
55
|
+
</g>
|
|
56
|
+
</g>
|
|
57
|
+
</svg>
|
|
58
|
+
`;
|
|
59
|
+
|
|
60
|
+
var GiftImg = `<svg xmlns="http://www.w3.org/2000/svg" width="54.079" height="53.191" viewBox="0 0 54.079 53.191"><defs><style>.a{fill:#ee9d0d;}.b{fill:#c7830b;}.c{fill:#ea2b2d;}.d{fill:#cb2527;}.e{fill:#6699ce;}.f{fill:#faa6b2;}.g{fill:#a6deff;}.h{fill:#eeb436;}.i{fill:#f72d2f;}</style></defs><path class="a" d="M40,248H77.3v25.88a2.1,2.1,0,0,1-2.1,2.1H42.1a2.1,2.1,0,0,1-2.1-2.1Z" transform="translate(-38.135 -222.787)"/><path class="b" d="M250.632,248.711v12.755L236.2,248h13.67Z" transform="translate(-211.463 -222.787)"/><path class="b" d="M333.957,336v3.207L330.52,336Z" transform="translate(-294.787 -300.528)"/><path class="c" d="M226.194,32.048l-.5.185a5.035,5.035,0,0,0-3.072,3.292l-.468,1.585-.759.414a5.035,5.035,0,0,0-2.422,3l8.865,8.271,5.09-5.456.262-6.205a5.191,5.191,0,0,0-7-5.083Z" transform="translate(-196.246 -31.722)"/><path class="c" d="M358.628,175.48l-.15.509a5.034,5.034,0,0,1-3.072,3.292l-1.55.577-.359.785a5.034,5.034,0,0,1-2.822,2.624L341.81,175l5.09-5.455,6.172-.69a5.191,5.191,0,0,1,5.555,6.629Z" transform="translate(-304.761 -152.837)"/><path class="d" d="M168,248h7.461v27.978H168Z" transform="translate(-151.213 -222.787)"/><path class="c" d="M40,336H77.3v7.461H40Z" transform="translate(-38.135 -300.528)"/><path class="d" d="M333.957,336v3.207L330.52,336Z" transform="translate(-294.787 -300.528)"/><path class="a" d="M2.1,0H40.8a2.1,2.1,0,0,1,2.1,2.1V9.326H0V2.1A2.1,2.1,0,0,1,2.1,0Z" transform="matrix(0.731, 0.682, -0.682, 0.731, 18.641, 4.976)"/><path class="d" d="M0,0H9.326V9.326H0Z" transform="matrix(0.731, 0.682, -0.682, 0.731, 30.912, 16.424)"/><path class="d" d="M286.857,79.389a.931.931,0,0,1-.74-.365l-.615-.8a12.516,12.516,0,0,1-2.528-9,.933.933,0,0,1,1.855.2,10.66,10.66,0,0,0,2.153,7.667l.615.8a.933.933,0,0,1-.739,1.5Z" transform="translate(-252.718 -64.113)"/><path class="c" d="M185.485,178.151l-.039.014a30.78,30.78,0,0,1-12.034,1.906l-2.381-.1,4.092,3.817-1.181,4,3.728-1.206a30.775,30.775,0,0,0,9.833-5.315l.71-.572Z" transform="translate(-153.891 -161.081)"/><path class="d" d="M363.834,194.779a12.51,12.51,0,0,1-6.93-2.1l-.843-.559a.933.933,0,1,1,1.031-1.554l.842.558a10.659,10.659,0,0,0,7.8,1.618.933.933,0,1,1,.328,1.836A12.663,12.663,0,0,1,363.834,194.779Z" transform="translate(-316.982 -171.914)"/><path class="c" d="M275,202.524l-.012.04a30.776,30.776,0,0,0-1.069,12.137l.265,2.369-4.092-3.817-3.909,1.455.945-3.8a30.776,30.776,0,0,1,4.622-10.177l.521-.748Z" transform="translate(-237.949 -180.364)"/><circle class="e" cx="1.865" cy="1.865" r="1.865" transform="translate(10.259 0.032)"/><circle class="f" cx="1.865" cy="1.865" r="1.865" transform="translate(0 21.482)"/><path class="g" d="M36.663,36.663a.933.933,0,0,1-.885-.638l-.048-.143a2.946,2.946,0,0,0-2.8-2.017.933.933,0,1,1,0-1.865A4.808,4.808,0,0,1,37.5,35.292l.048.143a.933.933,0,0,1-.885,1.228Z" transform="translate(-31.067 -31.968)"/><path class="g" d="M79.493,194.438a.929.929,0,0,1-.506-.15l-.185-.12a2.074,2.074,0,0,0-2.192-.047.933.933,0,0,1-.947-1.607,3.929,3.929,0,0,1,4.153.088l.185.12a.933.933,0,0,1-.508,1.716Z" transform="translate(-69.235 -173.283)"/><path class="h" d="M27.751,85.141l2.88,2.644,3.811-.874-1.624,3.556,2.008,3.354-3.884-.446-2.569,2.946L27.6,92.49,24,90.957l3.4-1.922Z" transform="translate(-24 -78.914)"/><path class="h" d="M82.174,227.375l-.959,3.772,2.564,2.928-3.884.254L77.9,237.673l-1.442-3.615-3.8-.862,2.993-2.488-.353-3.876,3.291,2.078Z" transform="translate(-66.992 -204.086)"/><path class="i" d="M300.471,141.9l-5.455-5.09,5.09-5.456a8.342,8.342,0,0,1,5.455,5.09Z" transform="translate(-263.422 -119.737)"/></svg>`;
|
|
61
|
+
|
|
62
|
+
const sallaLoyaltyCss = "";
|
|
63
|
+
|
|
64
|
+
const SallaLoyalty = class {
|
|
65
|
+
constructor(hostRef) {
|
|
66
|
+
index.registerInstance(this, hostRef);
|
|
67
|
+
this.selectedItem = undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Does the merchant allow to login using email
|
|
70
|
+
*/
|
|
71
|
+
this.allowEmail = true;
|
|
72
|
+
/**
|
|
73
|
+
* Does the merchant/current location for visitor allow to login using mobile, By default outside KSA is `false`
|
|
74
|
+
*/
|
|
75
|
+
this.allowMobile = true;
|
|
76
|
+
/**
|
|
77
|
+
* Does the merchant require registration with email & mobile
|
|
78
|
+
*/
|
|
79
|
+
this.requireEmail = false;
|
|
80
|
+
salla.event.on('loyalty::open', () => this.open());
|
|
81
|
+
salla.auth.event.onLoggedIn(() => {
|
|
82
|
+
this.is_loggedin = true;
|
|
83
|
+
});
|
|
84
|
+
salla.onReady(() => {
|
|
85
|
+
this.is_loggedin = salla.config.isUser();
|
|
86
|
+
});
|
|
87
|
+
salla.lang.onLoaded(() => {
|
|
88
|
+
this.guestMessage = salla.lang.get('pages.loyalty_program.guest_message');
|
|
89
|
+
this.translationLoaded = true;
|
|
90
|
+
});
|
|
91
|
+
salla.cart.event.onUpdated(cart => {
|
|
92
|
+
this.prizePoints = cart.loyalty.prize?.points;
|
|
93
|
+
this.prizeTitle = cart.loyalty.prize?.title;
|
|
94
|
+
this.customerPoints = cart.loyalty.customer_points || this.customerPoints;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
setSelectedPrizeItem(item) {
|
|
98
|
+
if (!this.selectedItem || this.selectedItem?.id != item.id) {
|
|
99
|
+
this.selectedItem = item;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.selectedItem = undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
handleLongText(text) {
|
|
106
|
+
if (text.length > 150) {
|
|
107
|
+
return text.substring(0, 150) + '...';
|
|
108
|
+
}
|
|
109
|
+
return text;
|
|
110
|
+
}
|
|
111
|
+
prizeItem(item) {
|
|
112
|
+
let klass = {
|
|
113
|
+
's-loyalty-prize-item-selected': !!this.selectedItem && this.selectedItem?.id == item.id,
|
|
114
|
+
"s-loyalty-prize-item": true
|
|
115
|
+
};
|
|
116
|
+
return index.h("div", { onClick: () => this.setSelectedPrizeItem(item), class: klass }, index.h("img", { class: "s-loyalty-prize-item-image", src: item.image, alt: item.name }), index.h("div", { class: "s-loyalty-prize-item-title" }, item.name), index.h("div", { class: "s-loyalty-prize-item-subtitle" }, this.handleLongText(item.description)), index.h("div", { class: "s-loyalty-prize-item-points" }, item.cost_points, " ", salla.lang.get('pages.loyalty_program.point'), index.h("div", { class: "s-loyalty-prize-item-check" }, index.h("div", null))));
|
|
117
|
+
}
|
|
118
|
+
getConfirmationModal() {
|
|
119
|
+
return [
|
|
120
|
+
index.h("salla-placeholder", { alignment: "center", icon: Star3, class: "s-loyalty-confirmation-modal-content" }, index.h("div", { slot: "title", class: "s-loyalty-confirmation-title" }, salla.lang.get('pages.loyalty_program.exchange_points')), index.h("div", { slot: "description" }, salla.lang.get('pages.loyalty_program.are_you_sure_to_exchange'), " ( ", index.h("strong", null, this.selectedItem?.cost_points), " ", salla.lang.get('pages.loyalty_program.point'), " ) ", salla.lang.get('pages.loyalty_program.for'), " ( ", index.h("strong", null, this.selectedItem?.name), " )")),
|
|
121
|
+
index.h("div", { class: "s-loyalty-confirmation-actions" }, index.h("salla-button", { fill: 'outline', width: "wide", onClick: () => this.cancelProcess() }, salla.lang.get('pages.loyalty_program.cancellation')), index.h("salla-button", { loading: this.buttonLoading, width: "wide", onClick: () => this.exchangeLoyaltyPoint() }, salla.lang.get('pages.loyalty_program.confirm')))
|
|
122
|
+
];
|
|
123
|
+
}
|
|
124
|
+
getAfterExchangeUI() {
|
|
125
|
+
return index.h("slot", { name: 'points-applied-widget' }, index.h("salla-list-tile", { class: "s-loyalty-after-exchange" }, index.h("div", { slot: "title", class: "s-loyalty-after-exchange-title" }, this.prizeTitle, " \u00A0 - \u00A0 ", this.prizePoints, " ", salla.lang.get('pages.loyalty_program.point')), index.h("div", { slot: 'action', class: "s-loyalty-after-exchange-action" }, index.h("salla-button", { class: "s-loyalty-after-exchange-reset", shape: "icon", fill: 'outline', color: "danger", size: "small", onClick: () => this.resetExchange() }, index.h("span", { innerHTML: cancel.Cancel })))));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Show loyalty modal
|
|
129
|
+
*/
|
|
130
|
+
async open() {
|
|
131
|
+
if (!this.is_loggedin)
|
|
132
|
+
return salla.event.dispatch('login::open');
|
|
133
|
+
this.modal?.open();
|
|
134
|
+
return await salla.loyalty.getProgram()
|
|
135
|
+
.then(response => {
|
|
136
|
+
this.loyaltyProgram = response.data;
|
|
137
|
+
})
|
|
138
|
+
.catch(e => {
|
|
139
|
+
this.hasError = true;
|
|
140
|
+
this.errorMessage = e.response?.data?.error?.message || e.response?.data;
|
|
141
|
+
})
|
|
142
|
+
.finally(() => this.modal?.stopLoading());
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
*
|
|
146
|
+
* Hide loyalty modal
|
|
147
|
+
*/
|
|
148
|
+
async close() {
|
|
149
|
+
return this.modal.close();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
*
|
|
153
|
+
* Cancel Exchanged prizes
|
|
154
|
+
*/
|
|
155
|
+
async resetExchange() {
|
|
156
|
+
return await salla.loyalty.reset();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Open Confirmation modal
|
|
160
|
+
*/
|
|
161
|
+
async openConfirmation() {
|
|
162
|
+
return await this.modal.close()
|
|
163
|
+
.then(() => this.confirmationModal?.open())
|
|
164
|
+
.catch(e => console.log(e));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Cancel process
|
|
168
|
+
*/
|
|
169
|
+
async cancelProcess() {
|
|
170
|
+
return await this.confirmationModal.close()
|
|
171
|
+
.then(() => this.selectedItem = null)
|
|
172
|
+
.catch(e => console.log(e));
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Exchange loyalty points with the selected prize item
|
|
176
|
+
* @param {number} loyalty_prize_id
|
|
177
|
+
*
|
|
178
|
+
*/
|
|
179
|
+
async exchangeLoyaltyPoint() {
|
|
180
|
+
this.buttonLoading = true;
|
|
181
|
+
return await salla.loyalty.exchange(this.selectedItem?.id)
|
|
182
|
+
.then(() => this.selectedItem.key == "FREE_PRODUCT" && salla.url.is_page('cart') && window.location.reload())
|
|
183
|
+
.finally(() => {
|
|
184
|
+
this.buttonLoading = false;
|
|
185
|
+
this.cancelProcess();
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
render() {
|
|
189
|
+
// A. when the exchange is done, and we have the final prize points to show it in cart page
|
|
190
|
+
if (this.prizePoints) {
|
|
191
|
+
return this.getAfterExchangeUI();
|
|
192
|
+
}
|
|
193
|
+
//todo:: change all translations to states
|
|
194
|
+
return [
|
|
195
|
+
index.h("slot", { name: 'widget' }, this.customerPoints ?
|
|
196
|
+
index.h("salla-list-tile", { class: 's-loyalty-widget' }, index.h("div", { slot: "icon", class: "s-loyalty-widget-icon", innerHTML: star2.Star }), index.h("div", { slot: "subtitle" }, this.customerPoints ? salla.lang.get('pages.loyalty_program.cart_total_point_summary', { "balance": this.customerPoints }) : this.guestMessage, index.h("salla-button", { shape: "link", color: "primary", onClick: () => salla.event.dispatch("loyalty::open") }, this.customerPoints ? salla.lang.get('pages.loyalty_program.cart_point_exchange_now') : salla.lang.get('blocks.header.login')))) :
|
|
197
|
+
''),
|
|
198
|
+
index.h("salla-modal", { noPadding: true, width: "sm", ref: modal => this.confirmationModal = modal }, this.getConfirmationModal()),
|
|
199
|
+
index.h("salla-modal", { isLoading: true, "has-skeleton": true, width: "md", ref: modal => this.modal = modal }, index.h("div", { slot: "loading" }, index.h("div", { class: "s-loyalty-skeleton" }, index.h("salla-list-tile", { class: "s-loyalty-header" }, index.h("div", { slot: "icon", class: "s-loyalty-header-icon" }, index.h("salla-skeleton", { type: "circle", height: '6rem', width: '6rem' })), index.h("div", { slot: "title", class: "s-loyalty-header-title mb-5" }, index.h("salla-skeleton", { height: '15px', width: '50%' })), index.h("div", { slot: "subtitle", class: "s-loyalty-header-subtitle" }, index.h("salla-skeleton", { height: '10px' }), index.h("salla-skeleton", { height: '10px', width: '75%' }))), index.h("div", { class: "s-loyalty-skeleton-cards" }, [...Array(3)].map(() => index.h("div", { class: "s-loyalty-prize-item swiper-slide" }, index.h("salla-skeleton", { height: '9rem' }), index.h("div", { class: "s-loyalty-prize-item-title" }, index.h("salla-skeleton", { height: '15px', width: '75%' })), index.h("div", { class: "s-loyalty-prize-item-subtitle" }, index.h("salla-skeleton", { height: '10px', width: '50%' }), index.h("salla-skeleton", { height: '10px', width: '25%' })), index.h("div", { class: "s-loyalty-prize-item-points" }, index.h("salla-skeleton", { height: '15px', width: '100px' }), index.h("div", { class: "s-loyalty-prize-item-check" }, index.h("salla-skeleton", { height: '1rem', width: '1rem', type: 'circle' })))))))), !this.hasError && !!this.loyaltyProgram ?
|
|
200
|
+
[
|
|
201
|
+
index.h("salla-list-tile", { id: 's-loyalty-header', class: "s-loyalty-header" }, index.h("div", { slot: "icon", class: "s-loyalty-header-icon", innerHTML: GiftImg }), index.h("div", { slot: "title", class: "s-loyalty-header-title" }, this.loyaltyProgram.prize_promotion_title), index.h("div", { slot: "subtitle", class: "s-loyalty-header-subtitle" }, this.loyaltyProgram.prize_promotion_description)),
|
|
202
|
+
index.h("salla-tabs", null, this.loyaltyProgram.prizes.map((prize) => index.h("salla-tab-header", { slot: "header", name: prize.title }, index.h("span", null, prize.title))), this.loyaltyProgram.prizes.map((prize, index$1) => index.h("salla-tab-content", { slot: "content", name: prize.title }, index.h("salla-slider", { class: "s-loyalty-slider", loop: false, "controls-outer": true, id: 'loyalty-popup-slider-' + index$1, type: "carousel" }, index.h("div", { slot: 'items' }, prize.items.map((item) => this.prizeItem(item))))))),
|
|
203
|
+
index.h("salla-button", { disabled: !this.selectedItem, width: "wide", class: "s-loyalty-program-redeem-btn", onClick: () => this.openConfirmation() }, salla.lang.get('pages.loyalty_program.exchange_points')),
|
|
204
|
+
]
|
|
205
|
+
: index.h("salla-placeholder", { class: "s-loyalty-placeholder", alignment: "center" }, !!this.errorMessage ? index.h("span", { slot: "description" }, this.errorMessage) : '')),
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
SallaLoyalty.style = sallaLoyaltyCss;
|
|
210
|
+
|
|
211
|
+
exports.salla_loyalty = SallaLoyalty;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
var index = require('./index-DgOViweO.js');
|
|
7
|
+
var cancel = require('./cancel-De6vslRA.js');
|
|
8
|
+
|
|
9
|
+
const sallaMaintenanceAlertCss = ".s-maintenance-alert-wrapper{display:flex;min-height:40px;width:100%;flex-direction:row;align-items:center;justify-content:center;--tw-bg-opacity:1;background-color:rgba(26, 38, 61, var(--tw-bg-opacity));padding:0.25rem 0.5rem;--tw-text-opacity:1;color:rgba(255, 255, 255, var(--tw-text-opacity))}.s-maintenance-alert-wrapper a{transition:0.35s cubic-bezier(0.2, 1, 0.3, 1)}.s-maintenance-alert-wrapper *{color:inherit}@media (min-width: 640px){.s-maintenance-alert-wrapper{padding-left:2rem;padding-right:2rem}}.s-maintenance-alert-content{margin-top:1rem;margin-bottom:1rem;display:flex;width:100%;align-items:center;justify-content:space-between}@media (min-width: 640px){.s-maintenance-alert-content{padding-left:2rem;padding-right:2rem}}.s-maintenance-alert-container{display:flex;align-items:center}.s-maintenance-alert-icon{margin-right:1.25rem;display:none}@media (min-width: 640px){.s-maintenance-alert-icon{display:block}}.s-maintenance-alert-text h2{margin-bottom:0.5rem;font-size:0.875rem;font-weight:700;line-height:1.4}@media (min-width: 640px){.s-maintenance-alert-text h2{font-size:1.5rem;line-height:2rem}}.s-maintenance-alert-text p{margin:0px;text-align:right;font-size:10px;line-height:1.2}@media (min-width: 640px){.s-maintenance-alert-text p{text-align:center;font-size:0.75rem;line-height:1}}.s-maintenance-alert-btn{position:relative;margin-left:4px;margin-right:4px;display:inline-block;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;border-radius:0.125rem;border-width:1px;--tw-border-opacity:1;border-color:rgba(93, 213, 196, var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgba(93, 213, 196, var(--tw-bg-opacity));padding:0.5rem;text-align:center;vertical-align:middle;font-size:0.875rem;font-weight:400;line-height:1.4;--tw-text-opacity:1;color:rgba(255, 255, 255, var(--tw-text-opacity))}.s-maintenance-alert-btn:hover{--tw-bg-opacity:1;background-color:rgba(53, 203, 181, var(--tw-bg-opacity))}.s-maintenance-alert-btn *{pointer-events:none}[dir=rtl] .s-maintenance-alert-btn{margin-left:1.25rem;margin-right:0}@media (min-width: 640px){.s-maintenance-alert-btn{padding:0.5rem 1rem}}";
|
|
10
|
+
|
|
11
|
+
const SallaMaintenanceAlert = class {
|
|
12
|
+
constructor(hostRef) {
|
|
13
|
+
index.registerInstance(this, hostRef);
|
|
14
|
+
}
|
|
15
|
+
componentWillLoad() {
|
|
16
|
+
this.title = salla.config.get('maintenance_details.title');
|
|
17
|
+
this.message = salla.config.get('maintenance_details.message');
|
|
18
|
+
// Use matchMedia instead of window.innerWidth to avoid forced reflow (Lighthouse/PageSpeed)
|
|
19
|
+
const isMobile = typeof window !== 'undefined' && !window.matchMedia('(min-width: 768px)').matches;
|
|
20
|
+
this.buttonTitle = isMobile ? salla.config.get('maintenance_details.button_title') : salla.config.get('maintenance_details.button_full_title');
|
|
21
|
+
}
|
|
22
|
+
closeAlert() {
|
|
23
|
+
salla.storage.set('hide_salla-maintenance-alert_at', Date.now());
|
|
24
|
+
this.host.style.display = 'none';
|
|
25
|
+
}
|
|
26
|
+
render() {
|
|
27
|
+
return (index.h(index.Host, { key: '109e687d7d6ba48ddf89cd3631f5a852d50688fd', class: "s-maintenance-alert-wrapper" }, index.h("button", { key: 'd70e7e53acc699336e1611589ca3bdfc704504c2', class: "s-maintenance-alert-close", innerHTML: cancel.Cancel, onClick: () => this.closeAlert() }), index.h("div", { key: 'b816c1a9635828c206c792d68203ccfbe8e8235b', class: "s-maintenance-alert-content" }, index.h("div", { key: '61e91088a5613d943b6f662f5ed44093ecf99237', class: "s-maintenance-alert-container" }, index.h("div", { key: '1ca223334f52bc5097677dd23433107080567894', class: "s-maintenance-alert-icon" }, index.h("img", { key: '22e07c7a104267cda2bed74929307d039018698d', src: salla.url.cdn('images/alert.png'), alt: "Alert" })), index.h("div", { key: '64d37700bc1454f5afadb55b49512bbd5b412d9c', class: "s-maintenance-alert-text" }, index.h("h2", { key: '7651dcd09a0ba07f14ed744758598015d4b45ecd' }, this.title), index.h("p", { key: '1f8d057af072466f34d0f3a13396de5144bc967f' }, this.message))), index.h("div", { key: '34f8471b855011b499c2038b1ac9dd24cc5e2e8b' }, index.h("a", { key: 'd9c4f4a9fb80ab90c13dc1dde69adcb7c4cd7e9f', class: "s-maintenance-alert-btn", href: salla.config.get('maintenance_details.button_url') }, this.buttonTitle)))));
|
|
28
|
+
}
|
|
29
|
+
componentDidLoad() {
|
|
30
|
+
//auto-hide the alert if close button is clicked before one hour
|
|
31
|
+
let hidden_at = salla.storage.get('hide_salla-maintenance-alert_at');
|
|
32
|
+
if (hidden_at && ((Date.now() - hidden_at) / 1000 / 60) < 60) {
|
|
33
|
+
this.closeAlert();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
get host() { return index.getElement(this); }
|
|
37
|
+
};
|
|
38
|
+
SallaMaintenanceAlert.style = sallaMaintenanceAlertCss;
|
|
39
|
+
|
|
40
|
+
exports.salla_maintenance_alert = SallaMaintenanceAlert;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
var index = require('./index-DgOViweO.js');
|
|
7
|
+
|
|
8
|
+
const sallaMenuCss = ":host{display:block}";
|
|
9
|
+
|
|
10
|
+
const SallaMenu = class {
|
|
11
|
+
constructor(hostRef) {
|
|
12
|
+
index.registerInstance(this, hostRef);
|
|
13
|
+
/**
|
|
14
|
+
* The source of the menu, specifying whether it is a header or footer menu.
|
|
15
|
+
*/
|
|
16
|
+
this.source = "header";
|
|
17
|
+
/**
|
|
18
|
+
* Boolean indicating whether to use React Link elements for menu links.
|
|
19
|
+
*/
|
|
20
|
+
this.useReactLink = false;
|
|
21
|
+
this.menus = [];
|
|
22
|
+
}
|
|
23
|
+
async componentWillLoad() {
|
|
24
|
+
return salla.onReady(() => {
|
|
25
|
+
this.displayAllText = salla.lang.get('blocks.home.display_all');
|
|
26
|
+
if (this.sourceValue && this.source === 'json') {
|
|
27
|
+
this.menus = typeof this.sourceValue === 'string' ? JSON.parse(this.sourceValue) : this.sourceValue || [];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return this.getMenuItems();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
getMenuItems() {
|
|
35
|
+
/**
|
|
36
|
+
* Avoid saving the menu to localStorage (default) when in the development environment
|
|
37
|
+
* or when modifying the theme in the dashboard
|
|
38
|
+
*/
|
|
39
|
+
// const isPreview = salla.config.isDebug() || salla.helpers.isPreview()
|
|
40
|
+
// const cacheKey = `${this.source}_menus_${salla.lang.locale}`
|
|
41
|
+
// const cachedMenus = salla.storage.getWithTTL(cacheKey, [])
|
|
42
|
+
// if (cachedMenus.length > 0 && !isPreview) {
|
|
43
|
+
// this.menus = cachedMenus
|
|
44
|
+
// return;
|
|
45
|
+
// }
|
|
46
|
+
return salla.api.component.getMenus(this.source).then(({ data }) => {
|
|
47
|
+
this.menus = data;
|
|
48
|
+
// !isPreview && salla.storage.setWithTTL(cacheKey, this.menus)
|
|
49
|
+
}).catch((error) => {
|
|
50
|
+
salla.logger.error('salla-menu::Error fetching menus', error);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
hasChildren(menu) {
|
|
54
|
+
return menu?.children?.length > 0;
|
|
55
|
+
}
|
|
56
|
+
hasProducts(menu) {
|
|
57
|
+
return menu?.products?.length > 0;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the classes for desktop menu
|
|
61
|
+
* @param {Object} menu
|
|
62
|
+
* @param {Boolean} isRootMenu
|
|
63
|
+
* @returns {String}
|
|
64
|
+
*/
|
|
65
|
+
getDesktopClasses(menu, isRootMenu) {
|
|
66
|
+
return `!hidden lg:!block ${isRootMenu ? 'root-level lg:!inline-block' : 'relative'} ${menu.products ? ' mega-menu' : ''}
|
|
67
|
+
${this.hasChildren(menu) ? 'has-children' : ''}`;
|
|
68
|
+
}
|
|
69
|
+
getAttributes(attrs) {
|
|
70
|
+
return attrs.trim().split(' ').reduce((result, attr) => {
|
|
71
|
+
let [key, value] = attr.split('=');
|
|
72
|
+
result[key] = value.replace(/"/g, '');
|
|
73
|
+
return result;
|
|
74
|
+
}, {});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the mobile menu
|
|
78
|
+
* @param {Object} menu
|
|
79
|
+
* @param {String} displayAllText
|
|
80
|
+
* @returns {String}
|
|
81
|
+
*/
|
|
82
|
+
getMobileMenu(menu, displayAllText) {
|
|
83
|
+
const menuImage = menu.image ? index.h("img", { src: menu.image, class: "rounded-full", width: "48", height: "48", alt: menu.title }) : null;
|
|
84
|
+
return (index.h("li", { class: "lg:hidden text-sm font-bold", ...this.getAttributes(menu.attrs) }, !this.hasChildren(menu) ?
|
|
85
|
+
index.h("a", { href: menu.url, "aria-label": menu.title || 'category', class: `text-gray-500 ${menu.image ? '!py-3' : ''}`, ...this.getAttributes(menu.link_attrs) }, menuImage, index.h("span", null, menu.title || ''))
|
|
86
|
+
:
|
|
87
|
+
index.h(index.Fragment, null, index.h("span", { class: menu.image ? '!py-3' : '' }, menuImage, menu.title), index.h("ul", null, index.h("li", { class: "text-sm font-bold" }, index.h("a", { href: menu.url, class: "text-gray-500" }, displayAllText)), menu.children.map((subMenu) => this.getMobileMenu(subMenu, displayAllText))))));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the desktop menu
|
|
91
|
+
* @param {Object} menu
|
|
92
|
+
* @param {Boolean} isRootMenu
|
|
93
|
+
* @returns {String}
|
|
94
|
+
*/
|
|
95
|
+
getDesktopMenu(menu, isRootMenu) {
|
|
96
|
+
return index.h("li", { class: this.getDesktopClasses(menu, isRootMenu), ...this.getAttributes(menu.attrs) }, index.h("a", { href: menu.url, "aria-label": menu.title || 'category', ...this.getAttributes(menu.link_attrs) }, index.h("span", null, menu.title)), this.hasChildren(menu) ?
|
|
97
|
+
index.h("div", { class: `sub-menu shadow-default ${this.hasProducts(menu) ? 'w-full left-0 flex' : 'w-56'}` }, index.h("ul", { class: this.hasProducts(menu) ? 'w-56 shrink-0 m-8 rtl:ml-0 ltr:mr-0' : '' }, menu.children.map((subMenu) => this.getDesktopMenu(subMenu, false))), this.hasProducts(menu) ?
|
|
98
|
+
index.h("salla-products-list", { source: "selected", "shadow-on-hover": true, "source-value": `[${menu.products}]` }) : null) : null);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the footer menu
|
|
102
|
+
* @param {Array} menus
|
|
103
|
+
*/
|
|
104
|
+
getFooterMenu(menus) {
|
|
105
|
+
const Menuitems = (this.topnav || this.limit) ? menus.slice(0, this.limit || 3) : menus;
|
|
106
|
+
return index.h("div", null, index.h("div", { class: {
|
|
107
|
+
"s-menu-footer-list": !this.topnav,
|
|
108
|
+
"s-menu-topnav-list": this.topnav
|
|
109
|
+
} }, Menuitems.map((menu) => {
|
|
110
|
+
return index.h("a", { key: menu.id, href: menu.url, target: menu.target, class: {
|
|
111
|
+
"s-menu-footer-item": !this.topnav,
|
|
112
|
+
"s-menu-topnav-item topnav-link-item right-side": this.topnav
|
|
113
|
+
} }, menu.title);
|
|
114
|
+
})));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the menus
|
|
118
|
+
* @param {Array} menus
|
|
119
|
+
* @returns {String}
|
|
120
|
+
*/
|
|
121
|
+
getHeaderMenu(menus) {
|
|
122
|
+
return menus.map((menu) => [
|
|
123
|
+
this.getMobileMenu(menu, this.displayAllText),
|
|
124
|
+
this.getDesktopMenu(menu, true)
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
127
|
+
render() {
|
|
128
|
+
return this.source === "footer" ?
|
|
129
|
+
this.getFooterMenu(this.menus)
|
|
130
|
+
:
|
|
131
|
+
[
|
|
132
|
+
index.h("nav", { key: "main-nav", id: "mobile-menu", class: "mobile-menu" }, index.h("ul", { class: "main-menu" }, this.getHeaderMenu(this.menus)), index.h("button", { class: "btn--close close-mobile-menu sicon-cancel lg:hidden" })),
|
|
133
|
+
index.h("button", { key: "close-btn", class: "btn--close-sm close-mobile-menu sicon-cancel hidden" })
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
SallaMenu.style = sallaMenuCss;
|
|
138
|
+
|
|
139
|
+
exports.salla_menu = SallaMenu;
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
var index = require('./index-DgOViweO.js');
|
|
7
|
+
|
|
8
|
+
const sallaMultipleBundleProductCartCss = "";
|
|
9
|
+
|
|
10
|
+
const SallaMultipleBundleProductCart = class {
|
|
11
|
+
constructor(hostRef) {
|
|
12
|
+
index.registerInstance(this, hostRef);
|
|
13
|
+
this.sections = [];
|
|
14
|
+
this.itemNumber = '';
|
|
15
|
+
}
|
|
16
|
+
deleteItem(sectionId, product) {
|
|
17
|
+
const form = this.host.closest('form');
|
|
18
|
+
if (form) {
|
|
19
|
+
const formId = form.getAttribute('id');
|
|
20
|
+
if (formId && typeof formId === 'string') {
|
|
21
|
+
const itemNumber = formId.match(/item-(\d+)/)?.[1];
|
|
22
|
+
this.itemNumber = itemNumber || '';
|
|
23
|
+
const selectedAccordion = this.host.querySelector(`#accordion-${product.id}`);
|
|
24
|
+
salla.cart
|
|
25
|
+
.deleteItem(`${this.itemNumber}?product_id=${product.id}§ion_id=${sectionId}`)
|
|
26
|
+
.then(() => selectedAccordion?.remove());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
renderRemoveButton(sectionId, product, isText = false) {
|
|
31
|
+
return (index.h("salla-button", { type: "button", shape: isText ? 'btn' : 'icon', fill: isText ? 'outline' : 'solid', size: "small", color: "danger", "aria-label": "Remove from the cart", onClick: () => this.deleteItem(sectionId, product) }, isText ? salla.lang.get('common.elements.delete') : index.h("i", { class: "sicon-cancel" })));
|
|
32
|
+
}
|
|
33
|
+
renderAccordionHeader(sectionId, product) {
|
|
34
|
+
const hasOptions = product?.options && product?.options?.length > 0; // undefined or empty array
|
|
35
|
+
return (index.h("div", { slot: "html", class: "s-multiple-bundle-product-cart-header-wrapper" }, index.h("div", { class: `s-multiple-bundle-product-cart-header ${hasOptions ? '' : 's-multiple-bundle-product-cart-header-no-options'}` }, index.h("div", { class: "s-multiple-bundle-product-cart-header-content" }, index.h("a", { href: product?.url, class: "s-multiple-bundle-product-cart-header-image-wrapper" }, index.h("img", { src: product?.image?.url, alt: product?.image?.alt || product?.name, class: "s-multiple-bundle-product-cart-header-image" })), index.h("div", { class: "s-multiple-bundle-product-cart-header-content-details" }, index.h("h2", { class: "s-multiple-bundle-product-cart-header-content-details-title" }, index.h("a", { href: product?.url, class: "s-multiple-bundle-product-cart-header-content-details-title-link" }, product?.name)), index.h("div", { class: "s-multiple-bundle-product-cart-header-content-details-price" }, index.h("span", { class: "s-multiple-bundle-product-cart-header-content-details-price-regular" }, index.h("span", { innerHTML: product?.price ? salla.money(product?.price) : '' })), product?.sale_price > 0 && (index.h("span", { class: "s-multiple-bundle-product-cart-header-content-details-price-sale" }, index.h("span", { innerHTML: salla.money(product?.sale_price) })))), product?.quantity_in_group > 0 && product?.quantity !== 0 && (index.h("p", { class: "s-multiple-bundle-product-cart-header-content-details-quantity" }, index.h("span", null, salla.lang.get('pages.products.number_of_pieces')), index.h("span", null, product?.quantity_in_group))))), !hasOptions && (index.h("div", { class: "s-multiple-bundle-product-cart-header-remove-button" }, this.renderRemoveButton(sectionId, product, false))))));
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
return (index.h(index.Host, { key: '34b9ae8c08eccee16d15f5ebff73b1d27f636e79', class: "s-multiple-bundle-product-wrapper" }, index.h("div", { key: '2f8d0bf68e67aa3bc21206d7282113fbfa67560b', class: "s-multiple-bundle-product-wrapper-sections" }, this.sections.map((section, sectionIndex) => {
|
|
39
|
+
return section.products.map(product => {
|
|
40
|
+
const bundleContext = {
|
|
41
|
+
sectionId: section.id,
|
|
42
|
+
sectionIndex: sectionIndex,
|
|
43
|
+
productId: product.id,
|
|
44
|
+
};
|
|
45
|
+
return (index.h("salla-accordion", { key: product.id, collapsed: false, bordered: true, collapsible: product.options && product.options.length > 0 ? true : false, size: "sm", id: `accordion-${product.id}` }, index.h("salla-accordion-head", null, this.renderAccordionHeader(String(section.id), product)), product.options && product.options.length > 0 && (index.h("salla-accordion-body", null, index.h("salla-product-options", { options: JSON.stringify(product.options), key: `${product.id}-persistent`, "product-id": product.id, "bundle-context": JSON.stringify(bundleContext) }), index.h("div", { class: "s-multiple-bundle-product-cart-body-remove-button" }, this.renderRemoveButton(String(section.id), product, true))))));
|
|
46
|
+
});
|
|
47
|
+
}))));
|
|
48
|
+
}
|
|
49
|
+
get host() { return index.getElement(this); }
|
|
50
|
+
};
|
|
51
|
+
SallaMultipleBundleProductCart.style = sallaMultipleBundleProductCartCss;
|
|
52
|
+
|
|
53
|
+
const sallaMultipleBundleProductDetailsCss = "";
|
|
54
|
+
|
|
55
|
+
const SallaMultipleBundleProductDetails = class {
|
|
56
|
+
constructor(hostRef) {
|
|
57
|
+
index.registerInstance(this, hostRef);
|
|
58
|
+
this.sections = [];
|
|
59
|
+
// store selected product IDs per section (can be string or number)
|
|
60
|
+
this.selectedProducts = {};
|
|
61
|
+
// Event handler reference for cleanup
|
|
62
|
+
this.productSelectedHandler = null;
|
|
63
|
+
// handle selecting a product (toggle)
|
|
64
|
+
this.onSelectProduct = (sectionId, product) => {
|
|
65
|
+
this.selectedProducts = {
|
|
66
|
+
...this.selectedProducts,
|
|
67
|
+
[sectionId]: new Set(this.selectedProducts[sectionId] || []),
|
|
68
|
+
};
|
|
69
|
+
const productId = product.id;
|
|
70
|
+
const wasSelected = this.selectedProducts[sectionId].has(productId);
|
|
71
|
+
if (wasSelected) {
|
|
72
|
+
// Product is being deselected
|
|
73
|
+
this.selectedProducts[sectionId].delete(productId);
|
|
74
|
+
// Clear form data and modal options for this product in this specific section
|
|
75
|
+
this.clearProductFormData(productId, sectionId);
|
|
76
|
+
this.clearProductModalOptions(productId, sectionId);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Product is being selected
|
|
80
|
+
this.selectedProducts[sectionId].add(productId);
|
|
81
|
+
}
|
|
82
|
+
// force re-render
|
|
83
|
+
this.selectedProducts = { ...this.selectedProducts };
|
|
84
|
+
// still dispatch event
|
|
85
|
+
salla.event.dispatch('on-bundle-product-selected', {
|
|
86
|
+
id: product.id,
|
|
87
|
+
name: product.name,
|
|
88
|
+
options: product.options,
|
|
89
|
+
wasSelected: wasSelected,
|
|
90
|
+
isSelected: !wasSelected,
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
// ensure product is selected (only add if not already selected)
|
|
94
|
+
this.ensureProductSelected = (sectionId, product) => {
|
|
95
|
+
this.selectedProducts = {
|
|
96
|
+
...this.selectedProducts,
|
|
97
|
+
[sectionId]: new Set(this.selectedProducts[sectionId] || []),
|
|
98
|
+
};
|
|
99
|
+
const productId = product.id;
|
|
100
|
+
// Only add if not already selected
|
|
101
|
+
if (!this.selectedProducts[sectionId].has(productId)) {
|
|
102
|
+
this.selectedProducts[sectionId].add(productId);
|
|
103
|
+
// force re-render
|
|
104
|
+
this.selectedProducts = { ...this.selectedProducts };
|
|
105
|
+
// dispatch event
|
|
106
|
+
salla.event.dispatch('on-bundle-product-selected', {
|
|
107
|
+
id: product.id,
|
|
108
|
+
name: product.name,
|
|
109
|
+
options: product.options,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
// open product options modal
|
|
114
|
+
this.onSelectProductOptions = (product, sectionId) => {
|
|
115
|
+
// Find the section index from the sectionId
|
|
116
|
+
const sectionIndex = this.sections.findIndex(section => section.id == sectionId);
|
|
117
|
+
// Find the product index within the section
|
|
118
|
+
const section = this.sections.find(section => section.id == sectionId);
|
|
119
|
+
const productIndex = section?.products?.findIndex(p => p.id == product.id) ?? 0;
|
|
120
|
+
salla.event.dispatch('multiple-bundle-product-modal::open', {
|
|
121
|
+
product,
|
|
122
|
+
sectionId,
|
|
123
|
+
sectionIndex,
|
|
124
|
+
productIndex,
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
// Event handlers for bundle slider component
|
|
128
|
+
this.handleBundleSliderProductSelected = (event) => {
|
|
129
|
+
const { product, sectionId } = event.detail;
|
|
130
|
+
this.onSelectProduct(sectionId, product);
|
|
131
|
+
};
|
|
132
|
+
this.handleBundleSliderProductOptionsSelected = (event) => {
|
|
133
|
+
const { product, sectionId } = event.detail;
|
|
134
|
+
this.onSelectProductOptions(product, sectionId);
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// Clear form data for a specific product in specific section
|
|
138
|
+
clearProductFormData(productId, sectionId) {
|
|
139
|
+
const form = this.host.closest('form');
|
|
140
|
+
if (sectionId) {
|
|
141
|
+
// Remove inputs for specific section/productIndex combination
|
|
142
|
+
const productInputPattern = `bundle[${sectionId}][`;
|
|
143
|
+
const inputsToRemove = Array.from(form.querySelectorAll('input')).filter((input) => input.getAttribute('data-product-id') === String(productId) &&
|
|
144
|
+
input.name &&
|
|
145
|
+
input.name.startsWith(productInputPattern));
|
|
146
|
+
inputsToRemove.forEach(input => input.remove());
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Fallback: Remove all hidden inputs related to this product (legacy behavior)
|
|
150
|
+
const inputsToRemove = form.querySelectorAll(`[data-product-id="${productId}"]`);
|
|
151
|
+
inputsToRemove.forEach(input => input.remove());
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Clear modal options state for a specific product
|
|
155
|
+
clearProductModalOptions(productId, sectionId) {
|
|
156
|
+
let sectionIndex = null;
|
|
157
|
+
let productIndex = null;
|
|
158
|
+
if (sectionId != null) {
|
|
159
|
+
sectionIndex = this.sections.findIndex(section => section.id == sectionId);
|
|
160
|
+
if (sectionIndex > -1) {
|
|
161
|
+
const section = this.sections[sectionIndex];
|
|
162
|
+
if (section) {
|
|
163
|
+
const foundIndex = section.products?.findIndex(product => product.id == productId);
|
|
164
|
+
productIndex = typeof foundIndex === 'number' && foundIndex > -1 ? foundIndex : null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Emit event to notify modal to reset its state for this product
|
|
169
|
+
salla.event.dispatch('multiple-bundle-product-modal::clear-options', {
|
|
170
|
+
productId,
|
|
171
|
+
sectionId,
|
|
172
|
+
sectionIndex,
|
|
173
|
+
productIndex,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
renderAccordionHeader(section, selectedCount) {
|
|
177
|
+
return (index.h(index.Fragment, null, index.h("h2", { slot: "title" }, section?.name), section?.obligatory_products ? (index.h("span", { slot: "note" }, salla.lang.get('pages.products.obligatory_products', {
|
|
178
|
+
count: section?.obligatory_products || 0,
|
|
179
|
+
}))) : '', index.h("span", { slot: "progress" }, selectedCount, "/", section?.products?.length || 0)));
|
|
180
|
+
}
|
|
181
|
+
componentDidLoad() {
|
|
182
|
+
// Listen for product selected event from modal
|
|
183
|
+
const modal = this.host.querySelector('salla-multiple-bundle-product-options-modal');
|
|
184
|
+
if (modal) {
|
|
185
|
+
this.productSelectedHandler = (e) => {
|
|
186
|
+
const { productId, sectionId, product, fromModal } = e.detail;
|
|
187
|
+
if (fromModal) {
|
|
188
|
+
// When called from modal, only add to selection if not already selected
|
|
189
|
+
this.ensureProductSelected(sectionId, product || { id: productId });
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// Normal toggle behavior
|
|
193
|
+
this.onSelectProduct(sectionId, product || { id: productId });
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
modal.addEventListener('productSelected', this.productSelectedHandler);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
disconnectedCallback() {
|
|
200
|
+
// Clean up event listener to prevent memory leaks
|
|
201
|
+
if (this.productSelectedHandler) {
|
|
202
|
+
const modal = this.host.querySelector('salla-multiple-bundle-product-options-modal');
|
|
203
|
+
if (modal) {
|
|
204
|
+
modal.removeEventListener('productSelected', this.productSelectedHandler);
|
|
205
|
+
}
|
|
206
|
+
this.productSelectedHandler = null;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
render() {
|
|
210
|
+
return (index.h(index.Host, { key: '2a7a27e8bfc7325575fec782139828333590eb9f', class: "s-multiple-bundle-product-wrapper" }, index.h("div", { key: 'affcb43ee67e329a9a87d6234bb91b5494a69a35', class: "s-multiple-bundle-product-wrapper-sections" }, this.sections.map((section, index$1) => {
|
|
211
|
+
const selectedCount = this.selectedProducts[section.id]?.size || 0;
|
|
212
|
+
return (index.h("salla-accordion", { key: section.id, collapsed: index$1 === 0 ? false : true }, index.h("salla-accordion-head", null, this.renderAccordionHeader(section, selectedCount)), index.h("salla-accordion-body", null, index.h("salla-multiple-bundle-product-slider", { section: section, sectionIndex: index$1, selectedProducts: this.selectedProducts, onProductSelected: this.handleBundleSliderProductSelected, onProductOptionsSelected: this.handleBundleSliderProductOptionsSelected }))));
|
|
213
|
+
})), index.h("salla-multiple-bundle-product-options-modal", { key: '6b9065e8f7872da72166979fc9ce61efaad21c0a' })));
|
|
214
|
+
}
|
|
215
|
+
get host() { return index.getElement(this); }
|
|
216
|
+
};
|
|
217
|
+
SallaMultipleBundleProductDetails.style = sallaMultipleBundleProductDetailsCss;
|
|
218
|
+
|
|
219
|
+
exports.salla_multiple_bundle_product_cart = SallaMultipleBundleProductCart;
|
|
220
|
+
exports.salla_multiple_bundle_product_details = SallaMultipleBundleProductDetails;
|