@salla.sa/twilight-components 2.14.170 → 2.14.172
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/{app-globals-KyQhbOUb.js → app-globals-Bk9IDSPX.js} +3 -3
- package/dist/cjs/{app-globals-KyQhbOUb.js.map → app-globals-Bk9IDSPX.js.map} +1 -1
- package/dist/cjs/{index-CyyWuThh.js → index-B1jJnKON.js} +4 -4
- package/dist/cjs/{index-CyyWuThh.js.map → index-B1jJnKON.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-add-product-button_49.cjs.entry.js +1 -1
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-booking-field.salla-conditional-fields.entry.cjs.js.map +1 -1
- package/dist/cjs/salla-booking-field_2.cjs.entry.js +2 -2
- package/dist/cjs/salla-booking-field_2.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-cart-item-offers.cjs.entry.js +1 -1
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- 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.cjs.entry.js +11 -7
- package/dist/cjs/salla-offer.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-offer.entry.cjs.js.map +1 -1
- package/dist/cjs/salla-order-summary.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-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews-page.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews.cjs.entry.js +1 -1
- package/dist/cjs/salla-social.cjs.entry.js +1 -1
- package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/collection/components/salla-booking-field/salla-booking-field.js +1 -1
- package/dist/collection/components/salla-booking-field/salla-booking-field.js.map +1 -1
- package/dist/collection/components/salla-offer/salla-offer.js +10 -6
- package/dist/collection/components/salla-offer/salla-offer.js.map +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-booking-field2.js +1 -1
- package/dist/components/salla-booking-field2.js.map +1 -1
- package/dist/components/salla-offer.js +10 -6
- package/dist/components/salla-offer.js.map +1 -1
- package/dist/esm/{app-globals-Eok5C8eP.js → app-globals-BlWInTtE.js} +3 -3
- package/dist/esm/{app-globals-Eok5C8eP.js.map → app-globals-BlWInTtE.js.map} +1 -1
- package/dist/esm/{index-EWYMQsdr.js → index-CayW-agT.js} +4 -4
- package/dist/esm/{index-EWYMQsdr.js.map → index-CayW-agT.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-add-product-button_49.entry.js +1 -1
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-booking-field.salla-conditional-fields.entry.js.map +1 -1
- package/dist/esm/salla-booking-field_2.entry.js +2 -2
- package/dist/esm/salla-booking-field_2.entry.js.map +1 -1
- package/dist/esm/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-notification-item.entry.js +1 -1
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-offer.entry.js +11 -7
- package/dist/esm/salla-offer.entry.js.map +1 -1
- package/dist/esm/salla-order-summary.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-price-range.entry.js +1 -1
- package/dist/esm/salla-product-options.entry.js +1 -1
- package/dist/esm/salla-review-card.entry.js +1 -1
- package/dist/esm/salla-reviews-page.entry.js +1 -1
- package/dist/esm/salla-reviews.entry.js +1 -1
- package/dist/esm/salla-social.entry.js +1 -1
- package/dist/esm/salla-tooltip.entry.js +1 -1
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/twilight.js +3 -3
- package/dist/esm-es5/{app-globals-Eok5C8eP.js → app-globals-BlWInTtE.js} +2 -2
- package/dist/esm-es5/{app-globals-Eok5C8eP.js.map → app-globals-BlWInTtE.js.map} +1 -1
- package/dist/esm-es5/{index-EWYMQsdr.js → index-CayW-agT.js} +3 -3
- package/dist/esm-es5/{index-EWYMQsdr.js.map → index-CayW-agT.js.map} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/salla-add-product-button_49.entry.js +1 -1
- package/dist/esm-es5/salla-advertisement.entry.js +1 -1
- package/dist/esm-es5/salla-app-install-alert.entry.js +1 -1
- package/dist/esm-es5/salla-apps-icons.entry.js +1 -1
- package/dist/esm-es5/salla-booking-field.salla-conditional-fields.entry.js.map +1 -1
- package/dist/esm-es5/salla-booking-field_2.entry.js +2 -2
- package/dist/esm-es5/salla-booking-field_2.entry.js.map +1 -1
- package/dist/esm-es5/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm-es5/salla-conditional-offer.entry.js +1 -1
- package/dist/esm-es5/salla-contacts.entry.js +1 -1
- package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-installment.entry.js +1 -1
- package/dist/esm-es5/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm-es5/salla-metadata.entry.js +1 -1
- package/dist/esm-es5/salla-notification-item.entry.js +1 -1
- package/dist/esm-es5/salla-notifications.entry.js +1 -1
- package/dist/esm-es5/salla-offer.entry.js +2 -2
- package/dist/esm-es5/salla-offer.entry.js.map +1 -1
- package/dist/esm-es5/salla-order-summary.entry.js +1 -1
- package/dist/esm-es5/salla-orders.entry.js +2 -2
- package/dist/esm-es5/salla-payments.entry.js +1 -1
- package/dist/esm-es5/salla-price-range.entry.js +1 -1
- package/dist/esm-es5/salla-product-options.entry.js +1 -1
- package/dist/esm-es5/salla-review-card.entry.js +1 -1
- package/dist/esm-es5/salla-reviews-page.entry.js +1 -1
- package/dist/esm-es5/salla-reviews.entry.js +1 -1
- package/dist/esm-es5/salla-social.entry.js +1 -1
- package/dist/esm-es5/salla-tooltip.entry.js +1 -1
- package/dist/esm-es5/salla-verify.entry.js +1 -1
- package/dist/esm-es5/salla-wallet.entry.js +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/twilight/{p-4fbad277.entry.js → p-0649d076.entry.js} +2 -2
- package/dist/twilight/{p-b6d17480.system.entry.js → p-1696a245.system.entry.js} +2 -2
- package/dist/twilight/{p-1d879370.entry.js → p-19f533ec.entry.js} +2 -2
- package/dist/twilight/{p-0bdf2224.entry.js → p-1dd178a2.entry.js} +2 -2
- package/dist/twilight/{p-1f4fc47f.entry.js → p-20bdcd53.entry.js} +2 -2
- package/dist/twilight/{p-5c52e00c.entry.js → p-247636ef.entry.js} +2 -2
- package/dist/twilight/{p-38a60819.entry.js → p-269ebd5d.entry.js} +2 -2
- package/dist/twilight/{p-1fbf0ba0.entry.js → p-29e96484.entry.js} +2 -2
- package/dist/twilight/p-29e96484.entry.js.map +1 -0
- package/dist/twilight/{p-fe7d4113.system.entry.js → p-2a10bff2.system.entry.js} +2 -2
- package/dist/twilight/{p-cd6c8a64.entry.js → p-2d0c2877.entry.js} +2 -2
- package/dist/twilight/{p-8a42ee60.system.entry.js → p-2da442c2.system.entry.js} +2 -2
- package/dist/twilight/{p-c7589247.system.entry.js → p-3093ea8e.system.entry.js} +2 -2
- package/dist/twilight/{p-7f0b3753.entry.js → p-316e3ea9.entry.js} +2 -2
- package/dist/twilight/{p-f5929cee.entry.js → p-33963e7d.entry.js} +2 -2
- package/dist/twilight/{p-feb9b85a.entry.js → p-37a3c661.entry.js} +2 -2
- package/dist/twilight/{p-d9073cf3.entry.js → p-41480e7b.entry.js} +2 -2
- package/dist/twilight/{p-2a8279d6.entry.js → p-41ecc4f7.entry.js} +2 -2
- package/dist/twilight/{p-9395f082.system.entry.js → p-44a213de.system.entry.js} +2 -2
- package/dist/twilight/p-4ced9aab.entry.js +5 -0
- package/dist/twilight/p-4fb112e6.system.entry.js +5 -0
- package/dist/twilight/p-4fb112e6.system.entry.js.map +1 -0
- package/dist/twilight/{p-ec81a36e.entry.js → p-51195e76.entry.js} +2 -2
- package/dist/twilight/{p-ff9d70f4.system.entry.js → p-54bd7e18.system.entry.js} +2 -2
- package/dist/twilight/{p-3134126e.system.entry.js → p-611b6013.system.entry.js} +2 -2
- package/dist/twilight/{p-bd4d0f9a.system.entry.js → p-679bb855.system.entry.js} +2 -2
- package/dist/twilight/{p-4c74100d.system.entry.js → p-67fe618e.system.entry.js} +2 -2
- package/dist/twilight/{p-1ebd5929.system.entry.js → p-69ec9ac8.system.entry.js} +2 -2
- package/dist/twilight/{p-b09ad735.system.entry.js → p-740b39fc.system.entry.js} +2 -2
- package/dist/twilight/{p-2ea1d52b.entry.js → p-756fe45d.entry.js} +2 -2
- package/dist/twilight/{p-d2edeb7c.system.entry.js → p-7ddf00a9.system.entry.js} +2 -2
- package/dist/twilight/{p-5fd16112.system.entry.js → p-86dd7e02.system.entry.js} +2 -2
- package/dist/twilight/{p-42291bce.entry.js → p-8c9ae8bd.entry.js} +2 -2
- package/dist/twilight/{p-3b5eb2c9.system.entry.js → p-8e242779.system.entry.js} +2 -2
- package/dist/twilight/{p-4daef7a0.entry.js → p-9361e7a2.entry.js} +2 -2
- package/dist/twilight/{p-3aa0ac01.entry.js → p-952a8078.entry.js} +2 -2
- package/dist/twilight/{p-bf454ddd.entry.js → p-9ca8c6b6.entry.js} +2 -2
- package/dist/twilight/{p-15e36352.system.entry.js → p-9d750b3d.system.entry.js} +2 -2
- package/dist/twilight/{p-B4BfwIfE.system.js.map → p-B3wutB2s.system.js.map} +1 -1
- package/dist/twilight/{p-BRLbCud3.system.js.map → p-BYBYDro2.system.js.map} +1 -1
- package/dist/twilight/{p-CaL9vXSW.system.js.map → p-BeVJFUxX.system.js.map} +1 -1
- package/dist/twilight/{p-ug8rkhBt.system.js.map → p-BmwlZkRw.system.js.map} +1 -1
- package/dist/twilight/{p-D9oLy_KT.system.js → p-BuezmX1t.system.js} +2 -2
- package/dist/twilight/{p-D9oLy_KT.system.js.map → p-BuezmX1t.system.js.map} +1 -1
- package/dist/twilight/{p-qSZ6al46.system.js.map → p-BuxFmGAL.system.js.map} +1 -1
- package/dist/twilight/{p-DSV8tV1E.system.js.map → p-Bxsqm2ye.system.js.map} +1 -1
- package/dist/twilight/{p-5vs3r5UR.system.js.map → p-C2OoabIm.system.js.map} +1 -1
- package/dist/twilight/{p-vvacIepq.system.js.map → p-C4gOv56I.system.js.map} +1 -1
- package/dist/twilight/{p-CbLv2Rkn.system.js.map → p-C7B9pjwv.system.js.map} +1 -1
- package/dist/twilight/{p-6eZfgC1O.system.js.map → p-CCr4sv_K.system.js.map} +1 -1
- package/dist/twilight/{p-DO9CJiWa.system.js.map → p-CECjqlBg.system.js.map} +1 -1
- package/dist/twilight/p-CPIDPWPd.system.js.map +1 -0
- package/dist/twilight/{p-DraEtCIO.system.js.map → p-CT4XUl4u.system.js.map} +1 -1
- package/dist/twilight/{p-Mx729n7_.system.js.map → p-CT7GoHDG.system.js.map} +1 -1
- package/dist/twilight/{p-EWYMQsdr.js → p-CayW-agT.js} +3 -3
- package/dist/twilight/{p-EWYMQsdr.js.map → p-CayW-agT.js.map} +1 -1
- package/dist/twilight/{p-zj6gyLfC.system.js.map → p-Ccj3kuAD.system.js.map} +1 -1
- package/dist/twilight/{p-Ew9kSVbn.system.js.map → p-CeyDIaJF.system.js.map} +1 -1
- package/dist/twilight/{p-CeyGkw1h.system.js.map → p-CjXAM86c.system.js.map} +1 -1
- package/dist/twilight/{p-BU23HIMq.system.js → p-CmumtzEL.system.js} +3 -3
- package/dist/twilight/{p-BU23HIMq.system.js.map → p-CmumtzEL.system.js.map} +1 -1
- package/dist/twilight/{p-48XKn75T.system.js.map → p-D4ot6EsS.system.js.map} +1 -1
- package/dist/twilight/{p-Dd5CEUFO.system.js.map → p-DEOECcHf.system.js.map} +1 -1
- package/dist/twilight/{p-gm6N2F_h.system.js.map → p-DUKloBXK.system.js.map} +1 -1
- package/dist/twilight/{p-Cni316MV.system.js.map → p-Dg8Ywiaf.system.js.map} +1 -1
- package/dist/twilight/{p-5QHjuX9p.system.js.map → p-Dmm2RXZq.system.js.map} +1 -1
- package/dist/twilight/{p-QtuY1UHD.system.js.map → p-DraNKP6B.system.js.map} +1 -1
- package/dist/twilight/{p-a0nHD-aB.system.js.map → p-DzJCsxNk.system.js.map} +1 -1
- package/dist/twilight/{p-m9Evhpmi.system.js → p-FxRE-bWf.system.js} +2 -2
- package/dist/twilight/{p-m9Evhpmi.system.js.map → p-FxRE-bWf.system.js.map} +1 -1
- package/dist/twilight/{p-B3t8frU_.js → p-PnQHllOh.js} +2 -2
- package/dist/twilight/{p-B3t8frU_.js.map → p-PnQHllOh.js.map} +1 -1
- package/dist/twilight/{p-BBMoQKyK.system.js.map → p-UOO6uSKD.system.js.map} +1 -1
- package/dist/twilight/{p-L8BD77j0.system.js.map → p-W3JU15BC.system.js.map} +1 -1
- package/dist/twilight/{p-9f657953.system.entry.js → p-a78387e7.system.entry.js} +2 -2
- package/dist/twilight/{p-abcc0cbf.entry.js → p-aa6a0113.entry.js} +2 -2
- package/dist/twilight/{p-2147391e.system.entry.js → p-ad02a471.system.entry.js} +2 -2
- package/dist/twilight/{p-c8053b6f.entry.js → p-b63bc4db.entry.js} +2 -2
- package/dist/twilight/{p-213c3ce4.entry.js → p-b72f268b.entry.js} +2 -2
- package/dist/twilight/{p-f2dda5b0.system.entry.js → p-c70ed29b.system.entry.js} +2 -2
- package/dist/twilight/{p-5a86938a.system.entry.js → p-cdc147d2.system.entry.js} +2 -2
- package/dist/twilight/p-d0912efd.entry.js +5 -0
- package/dist/twilight/p-d0912efd.entry.js.map +1 -0
- package/dist/twilight/{p-55ce45d1.system.entry.js → p-d14e40fe.system.entry.js} +2 -2
- package/dist/twilight/{p-01578d6d.system.entry.js → p-d2c834be.system.entry.js} +2 -2
- package/dist/twilight/{p-32429afe.system.entry.js → p-d56a7bd9.system.entry.js} +2 -2
- package/dist/twilight/{p-50c60622.entry.js → p-d600f506.entry.js} +2 -2
- package/dist/twilight/{p-b6ac3dd8.system.entry.js → p-db68e58b.system.entry.js} +2 -2
- package/dist/twilight/p-db68e58b.system.entry.js.map +1 -0
- package/dist/twilight/{p-95e2b228.system.entry.js → p-e061a1f5.system.entry.js} +2 -2
- package/dist/twilight/{p-065d60f6.entry.js → p-e084e3c4.entry.js} +2 -2
- package/dist/twilight/{p-0ebd2162.entry.js → p-e9ca7e7c.entry.js} +2 -2
- package/dist/twilight/{p-df8a68d9.system.entry.js → p-ee97bc7b.system.entry.js} +2 -2
- package/dist/twilight/{p-8079920d.system.entry.js → p-f5ce1227.system.entry.js} +2 -2
- package/dist/twilight/{p-e9046909.system.entry.js → p-fb9cd621.system.entry.js} +2 -2
- package/dist/twilight/{p-01f043b8.entry.js → p-fdd3788a.entry.js} +2 -2
- package/dist/twilight/{p-zB1aXyll.system.js.map → p-hIDulQlu.system.js.map} +1 -1
- package/dist/twilight/p-qziIzWVk.system.js.map +1 -0
- package/dist/twilight/{p-Bs4v2LtA.system.js.map → p-y427D1HL.system.js.map} +1 -1
- package/dist/twilight/salla-booking-field.salla-conditional-fields.entry.esm.js.map +1 -1
- package/dist/twilight/salla-offer.entry.esm.js.map +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/package.json +5 -5
- package/dist/twilight/p-1fbf0ba0.entry.js.map +0 -1
- package/dist/twilight/p-545302d2.entry.js +0 -5
- package/dist/twilight/p-545302d2.entry.js.map +0 -1
- package/dist/twilight/p-B3dc8MoR.system.js.map +0 -1
- package/dist/twilight/p-BkvW8UWg.system.js.map +0 -1
- package/dist/twilight/p-a22b72f6.entry.js +0 -5
- package/dist/twilight/p-b6ac3dd8.system.entry.js.map +0 -1
- package/dist/twilight/p-d0122bff.system.entry.js +0 -5
- package/dist/twilight/p-d0122bff.system.entry.js.map +0 -1
- /package/dist/twilight/{p-4fbad277.entry.js.map → p-0649d076.entry.js.map} +0 -0
- /package/dist/twilight/{p-b6d17480.system.entry.js.map → p-1696a245.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-1d879370.entry.js.map → p-19f533ec.entry.js.map} +0 -0
- /package/dist/twilight/{p-0bdf2224.entry.js.map → p-1dd178a2.entry.js.map} +0 -0
- /package/dist/twilight/{p-1f4fc47f.entry.js.map → p-20bdcd53.entry.js.map} +0 -0
- /package/dist/twilight/{p-5c52e00c.entry.js.map → p-247636ef.entry.js.map} +0 -0
- /package/dist/twilight/{p-38a60819.entry.js.map → p-269ebd5d.entry.js.map} +0 -0
- /package/dist/twilight/{p-fe7d4113.system.entry.js.map → p-2a10bff2.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-cd6c8a64.entry.js.map → p-2d0c2877.entry.js.map} +0 -0
- /package/dist/twilight/{p-8a42ee60.system.entry.js.map → p-2da442c2.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-c7589247.system.entry.js.map → p-3093ea8e.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-7f0b3753.entry.js.map → p-316e3ea9.entry.js.map} +0 -0
- /package/dist/twilight/{p-f5929cee.entry.js.map → p-33963e7d.entry.js.map} +0 -0
- /package/dist/twilight/{p-feb9b85a.entry.js.map → p-37a3c661.entry.js.map} +0 -0
- /package/dist/twilight/{p-d9073cf3.entry.js.map → p-41480e7b.entry.js.map} +0 -0
- /package/dist/twilight/{p-2a8279d6.entry.js.map → p-41ecc4f7.entry.js.map} +0 -0
- /package/dist/twilight/{p-9395f082.system.entry.js.map → p-44a213de.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-a22b72f6.entry.js.map → p-4ced9aab.entry.js.map} +0 -0
- /package/dist/twilight/{p-ec81a36e.entry.js.map → p-51195e76.entry.js.map} +0 -0
- /package/dist/twilight/{p-ff9d70f4.system.entry.js.map → p-54bd7e18.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-3134126e.system.entry.js.map → p-611b6013.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-bd4d0f9a.system.entry.js.map → p-679bb855.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4c74100d.system.entry.js.map → p-67fe618e.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-1ebd5929.system.entry.js.map → p-69ec9ac8.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-b09ad735.system.entry.js.map → p-740b39fc.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-2ea1d52b.entry.js.map → p-756fe45d.entry.js.map} +0 -0
- /package/dist/twilight/{p-d2edeb7c.system.entry.js.map → p-7ddf00a9.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5fd16112.system.entry.js.map → p-86dd7e02.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-42291bce.entry.js.map → p-8c9ae8bd.entry.js.map} +0 -0
- /package/dist/twilight/{p-3b5eb2c9.system.entry.js.map → p-8e242779.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4daef7a0.entry.js.map → p-9361e7a2.entry.js.map} +0 -0
- /package/dist/twilight/{p-3aa0ac01.entry.js.map → p-952a8078.entry.js.map} +0 -0
- /package/dist/twilight/{p-bf454ddd.entry.js.map → p-9ca8c6b6.entry.js.map} +0 -0
- /package/dist/twilight/{p-15e36352.system.entry.js.map → p-9d750b3d.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-9f657953.system.entry.js.map → p-a78387e7.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-abcc0cbf.entry.js.map → p-aa6a0113.entry.js.map} +0 -0
- /package/dist/twilight/{p-2147391e.system.entry.js.map → p-ad02a471.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-c8053b6f.entry.js.map → p-b63bc4db.entry.js.map} +0 -0
- /package/dist/twilight/{p-213c3ce4.entry.js.map → p-b72f268b.entry.js.map} +0 -0
- /package/dist/twilight/{p-f2dda5b0.system.entry.js.map → p-c70ed29b.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5a86938a.system.entry.js.map → p-cdc147d2.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-55ce45d1.system.entry.js.map → p-d14e40fe.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-01578d6d.system.entry.js.map → p-d2c834be.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-32429afe.system.entry.js.map → p-d56a7bd9.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-50c60622.entry.js.map → p-d600f506.entry.js.map} +0 -0
- /package/dist/twilight/{p-95e2b228.system.entry.js.map → p-e061a1f5.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-065d60f6.entry.js.map → p-e084e3c4.entry.js.map} +0 -0
- /package/dist/twilight/{p-0ebd2162.entry.js.map → p-e9ca7e7c.entry.js.map} +0 -0
- /package/dist/twilight/{p-df8a68d9.system.entry.js.map → p-ee97bc7b.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-8079920d.system.entry.js.map → p-f5ce1227.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-e9046909.system.entry.js.map → p-fb9cd621.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-01f043b8.entry.js.map → p-fdd3788a.entry.js.map} +0 -0
|
@@ -176,7 +176,7 @@ const SallaBookingField = /*@__PURE__*/ proxyCustomElement(class SallaBookingFie
|
|
|
176
176
|
return (h("span", { class: "s-booking-field-reservations-time" }, h("i", { class: "s-booking-field-reservations-icon", innerHTML: TimeIcon }), h("span", null, reservation.from_timestamp, " - ", reservation.to_timestamp)));
|
|
177
177
|
}
|
|
178
178
|
render() {
|
|
179
|
-
return (h(Host, { key: '9c5755ca98a3a3a1340414de0109133ffb6617c4' }, h("div", { key: 'dabd37fc3a9a1879fb0c5cb3899c28971d8724ef', class: "s-booking-field-main" }, this.option.required || this.reservations.length > 0 ? h("div", { class: "s-booking-field-price" }, h("span",
|
|
179
|
+
return (h(Host, { key: '9c5755ca98a3a3a1340414de0109133ffb6617c4' }, h("div", { key: 'dabd37fc3a9a1879fb0c5cb3899c28971d8724ef', class: "s-booking-field-main" }, this.option.required || this.reservations.length > 0 ? h("div", { class: "s-booking-field-price" }, h("span", { innerHTML: salla.money(this.option.price) })) : '', h("salla-button", { key: '7fbe8ff75abac48b86b7992c261ba0439514c786', class: "s-booking-field-book-now", size: "small", loaderPosition: "center", fill: "outline", onClick: event => this.openBookingModal(event, false) }, h("span", { key: '496907083ce40b1618c8a1b2228f91c70b83f60a', class: "s-booking-field-book-now-content" }, h("span", { key: 'e4455c6205055349b3137397f039125e0b3a6cf1', innerHTML: BookingTime }), this.reservations.length ? this.editLabel : this.bookNowLabel))), this.reservations.length > 0 && (h("div", { key: 'de68930ac2cab061c7f9b268f8887342528ba8e7', class: "s-booking-field-reservations" }, this.reservations.map((reservation, index) => (h("div", { key: index, class: "s-booking-field-reservations-item" }, this.renderReservationDate(reservation), this.renderReservationTime(reservation)))))), h("input", { key: 'f148bc7110984389035474c47fcc963a9fa14607', class: "s-hidden", name: this.option.name, required: this.option.required, value: JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations), ref: reservations => this.reservationsInput = reservations }), this.iframeReady && this.bookingModal()));
|
|
180
180
|
}
|
|
181
181
|
get host() { return this; }
|
|
182
182
|
static get style() { return sallaBookingFieldCss; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"salla-booking-field2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/salla-booking-field/salla-booking-field.scss?tag=salla-booking-field","src/components/salla-booking-field/salla-booking-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n /**\n * The booking option configuration\n */\n @Prop() option: Option;\n /**\n * The ID of the product for which the booking is being made\n */\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields || [value.message]).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n setTimeout(() => window.location.reload());\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n {this.option.required || this.reservations.length > 0 ? <div class=\"s-booking-field-price\">\n <span>{salla.money(this.option.price)}</span>\n </div> : ''}\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input\n class=\"s-hidden\"\n name={this.option.name}\n required={this.option.required}\n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations}\n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"salla-booking-field2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/salla-booking-field/salla-booking-field.scss?tag=salla-booking-field","src/components/salla-booking-field/salla-booking-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n /**\n * The booking option configuration\n */\n @Prop() option: Option;\n /**\n * The ID of the product for which the booking is being made\n */\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields || [value.message]).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n setTimeout(() => window.location.reload());\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n {this.option.required || this.reservations.length > 0 ? <div class=\"s-booking-field-price\">\n <span innerHTML={salla.money(this.option.price)}></span>\n </div> : ''}\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input\n class=\"s-hidden\"\n name={this.option.name}\n required={this.option.required}\n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations}\n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -75,11 +75,15 @@ const SallaOffer$1 = /*@__PURE__*/ proxyCustomElement(class SallaOffer extends H
|
|
|
75
75
|
});
|
|
76
76
|
this.categorySlot = ((_a = this.host.querySelector('[slot="category"]')) === null || _a === void 0 ? void 0 : _a.innerHTML) || '<a href={url} class="s-offer-slide-cat-entry"><i class={icon}></i><h4>{name}</h4></a>';
|
|
77
77
|
}
|
|
78
|
-
getEndpointByPageName() {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
78
|
+
async getEndpointByPageName() {
|
|
79
|
+
if (this.currentPage == PageType.Cart) {
|
|
80
|
+
const cartId = await Salla.cart.getCurrentCartId();
|
|
81
|
+
return `offers/cart/${cartId}`;
|
|
82
|
+
}
|
|
83
|
+
if (this.currentPage == PageType.ProductDetail) {
|
|
84
|
+
return `offers/product/${salla.config.get('page.id')}`;
|
|
85
|
+
}
|
|
86
|
+
return "offers";
|
|
83
87
|
}
|
|
84
88
|
componentWillLoad() {
|
|
85
89
|
this.hasCustomComponent = !!customElements.get(this.productCardComponent);
|
|
@@ -95,7 +99,7 @@ const SallaOffer$1 = /*@__PURE__*/ proxyCustomElement(class SallaOffer extends H
|
|
|
95
99
|
}
|
|
96
100
|
throw new Error("Merchant disabled showing the offers on product page");
|
|
97
101
|
})
|
|
98
|
-
.then(() => salla.api.request(this.getEndpointByPageName()))
|
|
102
|
+
.then(async () => salla.api.request(await this.getEndpointByPageName()))
|
|
99
103
|
.then((res) => {
|
|
100
104
|
if (!(this.offersList = res.data).length) {
|
|
101
105
|
throw new Error('salla-offers:: There is no offers!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"salla-offer.js","mappings":"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","names":["SallaOffer","__stencil_proxyCustomElement"],"sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private getEndpointByPageName(): string {\n return {\n [PageType.Cart]: `offers/cart/${salla.storage.get('cart.id')}`,\n [PageType.ProductDetail]: `offers/product/${salla.config.get('page.id')}`,\n }[this.currentPage] || \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(() => salla.api.request(this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"version":3}
|
|
1
|
+
{"file":"salla-offer.js","mappings":"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","names":["SallaOffer","__stencil_proxyCustomElement"],"sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private async getEndpointByPageName(): Promise<string> {\n if (this.currentPage == PageType.Cart) {\n const cartId = await Salla.cart.getCurrentCartId();\n return `offers/cart/${cartId}`;\n }\n\n if (this.currentPage == PageType.ProductDetail) {\n return `offers/product/${salla.config.get('page.id')}`;\n }\n\n return \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(async () => salla.api.request(await this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"version":3}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import { L as LazyLoad } from './index-
|
|
4
|
+
import { L as LazyLoad } from './index-CayW-agT.js';
|
|
5
5
|
|
|
6
6
|
function appGlobalScript () {
|
|
7
7
|
// Only initialize it one time for the entire application
|
|
@@ -34,6 +34,6 @@ function appGlobalScript () {
|
|
|
34
34
|
const globalScripts = appGlobalScript;
|
|
35
35
|
|
|
36
36
|
export { globalScripts as g };
|
|
37
|
-
//# sourceMappingURL=app-globals-
|
|
37
|
+
//# sourceMappingURL=app-globals-BlWInTtE.js.map
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=app-globals-
|
|
39
|
+
//# sourceMappingURL=app-globals-BlWInTtE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-globals-
|
|
1
|
+
{"version":3,"file":"app-globals-BlWInTtE.js","sources":["src/global/app.ts","@stencil/core/internal/app-globals"],"sourcesContent":["import '@salla.sa/twilight'\nimport LazyLoad from \"vanilla-lazyload\";\n\nexport default function () {\n // Only initialize it one time for the entire application\n if (!document.lazyLoadInstance) {\n document.lazyLoadInstance = new LazyLoad({\n use_native: true,//native not support lazyLoad backgrounds\n // restore_on_error: true,\n // Your custom settings go here\n // callback_finish: () => document.lazyLoadBackgrounds.update(document.querySelectorAll('.lazy[data-bg]:not(.loaded)'))\n });\n document.lazyLoadBackgrounds = new LazyLoad({\n elements_selector: '.lazy[data-bg]:not(.loaded)',\n });\n //native way doesn't load backgrounds\n // document.lazyLoadBackgrounds = new LazyLoad();\n }\n //make sure that lazyLoad will be fired after loading the page too.\n if (document.readyState !== 'complete') {\n document.addEventListener(\"DOMContentLoaded\", () => document.lazyLoadInstance.update());\n document.addEventListener(\"DOMContentLoaded\", () => document.lazyLoadBackgrounds.update());\n }\n\n // fire it after each load more request;\n // @ts-ignore\n salla.infiniteScroll.event.onAppend(() => {\n document.lazyLoadInstance.update();\n document.lazyLoadBackgrounds.update();\n }\n );\n}\n","import appGlobalScript from '/home/runner/work/twilight/twilight/packages/twilight-components/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \"\";\n"],"names":[],"mappings":";;;;;AAGc,wBAAA,IAAA;;AAEZ,IAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAC9B,QAAA,QAAQ,CAAC,gBAAgB,GAAG,IAAI,QAAQ,CAAC;YACvC,UAAU,EAAE,IAAI;;;;AAIjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,mBAAmB,GAAG,IAAI,QAAQ,CAAC;AACxC,YAAA,iBAAiB,EAAE,6BAA6B;AACnD,SAAA,CAAC;;;;;AAKJ,IAAA,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE;AACtC,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AACvF,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;;;;IAK5F,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAK;AAC/B,QAAA,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAClC,QAAA,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE;AACzC,KAAC,CACJ;AACL;;AC9BY,MAAC,aAAa,GAAG;;;;"}
|