@salla.sa/twilight-components 2.14.498 → 2.14.500
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/{filepond-B7XPTm4d.js → filepond-B9PtMjXt.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-poster-C5WAs5Sq.js → filepond-plugin-file-poster-CMd-UUZx.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-CpzjvZP9.js → filepond-plugin-file-validate-size-DpJalosf.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-CQjym5yh.js → filepond-plugin-file-validate-type-CZjeYI0w.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-JvWrX8H9.js → filepond-plugin-image-edit-Bl6fwgrn.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-CaFH4vic.js → filepond-plugin-image-exif-orientation-BeQ8iCyg.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-CpD30vUg.js → filepond-plugin-image-preview-BkGKXzOB.js} +1 -1
- package/dist/cjs/{functions-BUcHv9GL.js → functions-UaOjMOb2.js} +1 -1
- package/dist/cjs/{index-Dqo2RTwY.js → index-CQPk27Eg.js} +1 -1
- package/dist/cjs/{index-CxOIGeOr.js → index-Cd5xdrCT.js} +2 -2
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
- package/dist/cjs/salla-add-product-button_5.cjs.entry.js +3 -3
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-badge.cjs.entry.js +1 -1
- package/dist/cjs/salla-booking-field_7.cjs.entry.js +17 -17
- package/dist/cjs/salla-bullet-delivery_2.cjs.entry.js +5 -5
- package/dist/cjs/salla-cart-coupons.cjs.entry.js +210 -31
- package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +2 -2
- package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
- package/dist/cjs/salla-comment-form_8.cjs.entry.js +5 -5
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
- package/dist/cjs/salla-count-down_2.cjs.entry.js +2 -2
- package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
- package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
- package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +3 -3
- package/dist/cjs/salla-filters.cjs.entry.js +2 -2
- package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
- package/dist/cjs/salla-gifting.cjs.entry.js +3 -3
- package/dist/cjs/salla-hook.cjs.entry.js +2 -2
- package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-list-tile.cjs.entry.js +2 -2
- package/dist/cjs/salla-localization-modal.cjs.entry.js +2 -2
- package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-banner.cjs.entry.js +2 -2
- package/dist/cjs/salla-loyalty-exchange-product-card_5.cjs.entry.js +10 -10
- package/dist/cjs/salla-loyalty-hero_2.cjs.entry.js +9 -9
- package/dist/cjs/salla-loyalty-panel.cjs.entry.js +3 -3
- package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +2 -2
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +2 -2
- package/dist/cjs/salla-loyalty-program.cjs.entry.js +3 -3
- package/dist/cjs/salla-loyalty-reward.cjs.entry.js +4 -4
- package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
- package/dist/cjs/salla-maintenance-alert.cjs.entry.js +2 -2
- package/dist/cjs/salla-map_2.cjs.entry.js +4 -4
- package/dist/cjs/salla-menu.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +4 -4
- package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +6 -6
- package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +2 -2
- package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
- package/dist/cjs/salla-notification-item.cjs.entry.js +2 -2
- package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer-modal.cjs.entry.js +2 -2
- package/dist/cjs/salla-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details.cjs.entry.js +2 -2
- package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +2 -2
- package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-summary.cjs.entry.js +2 -2
- 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 +3 -3
- package/dist/cjs/salla-placeholder.cjs.entry.js +2 -2
- package/dist/cjs/salla-price-range.cjs.entry.js +3 -3
- package/dist/cjs/salla-product-card-embed.cjs.entry.js +2 -2
- package/dist/cjs/salla-product-card_2.cjs.entry.js +6 -6
- package/dist/cjs/salla-product-size-guide.cjs.entry.js +3 -3
- package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
- package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +1 -1
- package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-factors-tags.cjs.entry.js +2 -2
- package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
- package/dist/cjs/salla-search.cjs.entry.js +6 -6
- package/dist/cjs/salla-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/salla-slider.cjs.entry.js +1 -1
- package/dist/cjs/salla-social-share.cjs.entry.js +2 -2
- package/dist/cjs/salla-social.cjs.entry.js +2 -2
- package/dist/cjs/salla-tab-content_3.cjs.entry.js +4 -4
- 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 +1 -1
- package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
- package/dist/cjs/salla-user-settings.cjs.entry.js +2 -2
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/salla-wishlist-actions.cjs.entry.js +2 -2
- package/dist/cjs/{tracked-promise-COd7urY7.js → tracked-promise-DwUVHl1m.js} +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/cjs/{vanilla-picker-v4qaVnjr.js → vanilla-picker-BTiOI13l.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/salla-cart-coupons/salla-cart-coupons.css +63 -0
- package/dist/collection/components/salla-cart-coupons/salla-cart-coupons.js +211 -30
- package/dist/collection/components/salla-cart-summary/salla-cart-summary.js +1 -1
- package/dist/collection/components/salla-color-picker/salla-color-picker.js +1 -1
- package/dist/collection/components/salla-comment-form/salla-comment-form.js +1 -1
- package/dist/collection/components/salla-conditional-fields/salla-conditional-fields.js +1 -1
- package/dist/collection/components/salla-count-down/salla-count-down.js +1 -1
- package/dist/collection/components/salla-datetime-picker/salla-datetime-picker.js +1 -1
- package/dist/collection/components/salla-file-upload/salla-file-upload.js +2 -2
- package/dist/collection/components/salla-filters/salla-filters.js +1 -1
- package/dist/collection/components/salla-filters-widget/salla-filters-widget.js +2 -2
- package/dist/collection/components/salla-gifting/salla-gifting.js +2 -2
- package/dist/collection/components/salla-hook/salla-hook.js +1 -1
- package/dist/collection/components/salla-list-tile/salla-list-tile.js +1 -1
- package/dist/collection/components/salla-loading/salla-loading.js +1 -1
- package/dist/collection/components/salla-localization-modal/salla-localization-modal.js +1 -1
- package/dist/collection/components/salla-loyalty/salla-loyalty-prize-item.js +1 -1
- package/dist/collection/components/salla-loyalty-points-history/salla-loyalty-points-history.js +1 -1
- package/dist/collection/components/salla-loyalty-program/salla-loyalty-exchange-product-card.js +2 -2
- package/dist/collection/components/salla-loyalty-program/salla-loyalty-hero.js +3 -3
- package/dist/collection/components/salla-loyalty-program/salla-loyalty-point.js +4 -4
- package/dist/collection/components/salla-loyalty-program/salla-loyalty-reward.js +2 -2
- package/dist/collection/components/salla-loyalty-program/salla-reward-card.js +1 -1
- package/dist/collection/components/salla-loyalty-program/salla-reward-details.js +3 -3
- package/dist/collection/components/salla-loyalty-program/salla-reward-exchange.js +1 -1
- package/dist/collection/components/salla-maintenance-alert/salla-maintenance-alert.js +1 -1
- package/dist/collection/components/salla-map/salla-map.js +3 -3
- package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-cart.js +1 -1
- package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-details.js +2 -2
- package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-options-modal.js +4 -4
- package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-slider.js +1 -1
- package/dist/collection/components/salla-multiple-bundle-product/salla-multiple-bundle-product.js +1 -1
- package/dist/collection/components/salla-notifications/salla-notification-item.js +1 -1
- package/dist/collection/components/salla-offer-modal/salla-offer-modal.js +1 -1
- package/dist/collection/components/salla-order-details/salla-order-details.js +1 -1
- package/dist/collection/components/salla-order-edit/salla-order-edit-product-card.js +1 -1
- package/dist/collection/components/salla-order-summary/salla-order-summary.js +1 -1
- package/dist/collection/components/salla-payments/salla-payments.js +2 -2
- package/dist/collection/components/salla-placeholder/salla-placeholder.js +1 -1
- package/dist/collection/components/salla-price-range/salla-price-range.js +2 -2
- package/dist/collection/components/salla-product-availability/salla-product-availability.js +1 -1
- package/dist/collection/components/salla-product-card/salla-product-card.js +5 -5
- package/dist/collection/components/salla-product-card-embed/salla-product-card-embed.js +1 -1
- package/dist/collection/components/salla-product-size-guide/salla-product-size-guide.js +2 -2
- package/dist/collection/components/salla-quantity-input/salla-quantity-input.js +1 -1
- package/dist/collection/components/salla-quick-buy/salla-quick-buy.js +1 -1
- package/dist/collection/components/salla-review-card/salla-review-card.js +1 -1
- package/dist/collection/components/salla-review-factors-tags/salla-review-factors-tags.js +1 -1
- package/dist/collection/components/salla-reviews/salla-reviews.js +1 -1
- package/dist/collection/components/salla-reviews-page/salla-reviews-page.js +1 -1
- package/dist/collection/components/salla-search/salla-search.js +5 -5
- package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.js +4 -4
- package/dist/collection/components/salla-skeleton/salla-skeleton.js +1 -1
- 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/collection/components/salla-wishlist-actions/salla-wishlist-actions.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/salla-cart-coupons.js +211 -30
- package/dist/components/salla-cart-summary.js +1 -1
- package/dist/components/salla-color-picker2.js +1 -1
- package/dist/components/salla-comment-form2.js +1 -1
- package/dist/components/salla-conditional-fields2.js +1 -1
- package/dist/components/salla-count-down2.js +1 -1
- package/dist/components/salla-datetime-picker2.js +1 -1
- package/dist/components/salla-file-upload2.js +2 -2
- package/dist/components/salla-filters-widget2.js +2 -2
- package/dist/components/salla-filters.js +1 -1
- package/dist/components/salla-gifting.js +2 -2
- package/dist/components/salla-hook.js +1 -1
- package/dist/components/salla-list-tile2.js +1 -1
- package/dist/components/salla-loading2.js +1 -1
- package/dist/components/salla-localization-modal.js +1 -1
- package/dist/components/salla-loyalty-exchange-product-card2.js +2 -2
- package/dist/components/salla-loyalty-hero2.js +3 -3
- package/dist/components/salla-loyalty-point2.js +4 -4
- package/dist/components/salla-loyalty-points-history.js +1 -1
- package/dist/components/salla-loyalty-prize-item.js +1 -1
- package/dist/components/salla-loyalty-reward.js +2 -2
- package/dist/components/salla-maintenance-alert.js +1 -1
- package/dist/components/salla-map2.js +3 -3
- package/dist/components/salla-multiple-bundle-product-cart2.js +1 -1
- package/dist/components/salla-multiple-bundle-product-details2.js +2 -2
- package/dist/components/salla-multiple-bundle-product-options-modal2.js +4 -4
- package/dist/components/salla-multiple-bundle-product-slider2.js +1 -1
- package/dist/components/salla-multiple-bundle-product.js +1 -1
- package/dist/components/salla-notification-item2.js +1 -1
- package/dist/components/salla-offer-modal.js +1 -1
- package/dist/components/salla-order-details.js +1 -1
- package/dist/components/salla-order-edit-product-card.js +1 -1
- package/dist/components/salla-order-summary.js +1 -1
- package/dist/components/salla-payments.js +2 -2
- package/dist/components/salla-placeholder2.js +1 -1
- package/dist/components/salla-price-range2.js +2 -2
- package/dist/components/salla-product-availability2.js +1 -1
- package/dist/components/salla-product-card-embed.js +1 -1
- package/dist/components/salla-product-card2.js +5 -5
- package/dist/components/salla-product-size-guide.js +2 -2
- package/dist/components/salla-quantity-input2.js +1 -1
- package/dist/components/salla-quick-buy2.js +1 -1
- package/dist/components/salla-review-card2.js +1 -1
- package/dist/components/salla-review-factors-tags.js +1 -1
- package/dist/components/salla-reviews-page.js +1 -1
- package/dist/components/salla-reviews.js +1 -1
- package/dist/components/salla-reward-card2.js +1 -1
- package/dist/components/salla-reward-details2.js +3 -3
- package/dist/components/salla-reward-exchange2.js +1 -1
- package/dist/components/salla-search.js +5 -5
- package/dist/components/salla-searchable-dropdown2.js +4 -4
- package/dist/components/salla-skeleton2.js +1 -1
- package/dist/components/salla-social-share2.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/components/salla-wishlist-actions.js +1 -1
- package/dist/esm/{filepond-Bztq2DfJ.js → filepond-DjtqIoeD.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-7n46TpPX.js → filepond-plugin-file-poster-CFxoEHLP.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-CEaKKsXh.js → filepond-plugin-file-validate-size-BnBRYL0y.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-G_rhCCOz.js → filepond-plugin-file-validate-type-Dr5ofT9v.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-3fXrzMbo.js → filepond-plugin-image-edit-DyMeCzTZ.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-BXr__tdF.js → filepond-plugin-image-exif-orientation-ngtve06j.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-Deyf31fO.js → filepond-plugin-image-preview-aqxBqAYf.js} +1 -1
- package/dist/esm/{functions-BvcgTy23.js → functions-Drikk4uf.js} +1 -1
- package/dist/esm/{index-CtDVz2Sf.js → index-CaZkz-p0.js} +1 -1
- package/dist/esm/{index-DD7hlkaJ.js → index-DuoSRdS5.js} +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion-body_2.entry.js +1 -1
- package/dist/esm/salla-accordion_6.entry.js +2 -2
- package/dist/esm/salla-add-product-button_5.entry.js +3 -3
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-alert_2.entry.js +1 -1
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-badge.entry.js +1 -1
- package/dist/esm/salla-booking-field_7.entry.js +17 -17
- package/dist/esm/salla-bullet-delivery_2.entry.js +5 -5
- package/dist/esm/salla-cart-coupons.entry.js +210 -31
- package/dist/esm/salla-cart-item-offers_2.entry.js +2 -2
- package/dist/esm/salla-cart-summary-card.entry.js +1 -1
- package/dist/esm/salla-cashback-banner.entry.js +1 -1
- package/dist/esm/salla-comment-factors.entry.js +1 -1
- package/dist/esm/salla-comment-form_8.entry.js +5 -5
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-cookies-bar.entry.js +1 -1
- package/dist/esm/salla-count-down_2.entry.js +2 -2
- package/dist/esm/salla-custom-fields.entry.js +1 -1
- package/dist/esm/salla-delivery-promise.entry.js +1 -1
- package/dist/esm/salla-edit-order-button.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +3 -3
- package/dist/esm/salla-filters.entry.js +2 -2
- package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
- package/dist/esm/salla-gifting.entry.js +3 -3
- package/dist/esm/salla-hook.entry.js +2 -2
- package/dist/esm/salla-infinite-scroll.entry.js +1 -1
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-list-tile.entry.js +2 -2
- package/dist/esm/salla-localization-modal.entry.js +2 -2
- package/dist/esm/salla-login-modal.entry.js +1 -1
- package/dist/esm/salla-loyalty-banner.entry.js +2 -2
- package/dist/esm/salla-loyalty-exchange-product-card_5.entry.js +10 -10
- package/dist/esm/salla-loyalty-hero_2.entry.js +9 -9
- package/dist/esm/salla-loyalty-panel.entry.js +3 -3
- package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
- package/dist/esm/salla-loyalty-points-history.entry.js +2 -2
- package/dist/esm/salla-loyalty-prize-item.entry.js +2 -2
- package/dist/esm/salla-loyalty-program.entry.js +3 -3
- package/dist/esm/salla-loyalty-reward.entry.js +4 -4
- package/dist/esm/salla-loyalty.entry.js +1 -1
- package/dist/esm/salla-maintenance-alert.entry.js +2 -2
- package/dist/esm/salla-map_2.entry.js +4 -4
- package/dist/esm/salla-menu.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +4 -4
- package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +6 -6
- package/dist/esm/salla-multiple-bundle-product.entry.js +2 -2
- package/dist/esm/salla-next-order-coupon.entry.js +1 -1
- package/dist/esm/salla-notification-item.entry.js +2 -2
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-offer-modal.entry.js +2 -2
- package/dist/esm/salla-offer.entry.js +1 -1
- package/dist/esm/salla-order-branch.entry.js +1 -1
- package/dist/esm/salla-order-cancel.entry.js +1 -1
- package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
- package/dist/esm/salla-order-details-options.entry.js +1 -1
- package/dist/esm/salla-order-details.entry.js +2 -2
- package/dist/esm/salla-order-edit-item.entry.js +1 -1
- package/dist/esm/salla-order-edit-product-card.entry.js +2 -2
- package/dist/esm/salla-order-edit.entry.js +1 -1
- package/dist/esm/salla-order-summary.entry.js +2 -2
- 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 +3 -3
- package/dist/esm/salla-placeholder.entry.js +2 -2
- package/dist/esm/salla-price-range.entry.js +3 -3
- package/dist/esm/salla-product-card-embed.entry.js +2 -2
- package/dist/esm/salla-product-card_2.entry.js +6 -6
- package/dist/esm/salla-product-size-guide.entry.js +3 -3
- package/dist/esm/salla-products-list.entry.js +1 -1
- package/dist/esm/salla-quick-order.entry.js +1 -1
- package/dist/esm/salla-rating-modal-v2.entry.js +1 -1
- package/dist/esm/salla-rating-modal.entry.js +1 -1
- package/dist/esm/salla-review-factors-tags.entry.js +2 -2
- package/dist/esm/salla-scopes.entry.js +1 -1
- package/dist/esm/salla-search.entry.js +6 -6
- package/dist/esm/salla-skeleton.entry.js +2 -2
- package/dist/esm/salla-slider.entry.js +1 -1
- package/dist/esm/salla-social-share.entry.js +2 -2
- package/dist/esm/salla-social.entry.js +2 -2
- package/dist/esm/salla-tab-content_3.entry.js +4 -4
- 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 +1 -1
- package/dist/esm/salla-user-profile.entry.js +1 -1
- package/dist/esm/salla-user-settings.entry.js +2 -2
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/salla-wishlist-actions.entry.js +2 -2
- package/dist/esm/{tracked-promise-B5nZ0_u3.js → tracked-promise-CUM6cNiF.js} +1 -1
- package/dist/esm/twilight.js +3 -3
- package/dist/esm/{vanilla-picker-DrhPsPVG.js → vanilla-picker-kF8Cgi5q.js} +1 -1
- package/dist/twilight/{p-4f9905a1.entry.js → p-00d73870.entry.js} +1 -1
- package/dist/twilight/{p-ab56087a.entry.js → p-01636f53.entry.js} +1 -1
- package/dist/twilight/{p-ed745cc5.entry.js → p-022343f3.entry.js} +1 -1
- package/dist/twilight/{p-97a7ab54.entry.js → p-03db477f.entry.js} +1 -1
- package/dist/twilight/{p-789a33ab.entry.js → p-04fadfb3.entry.js} +1 -1
- package/dist/twilight/{p-7935b94f.entry.js → p-0604eb27.entry.js} +1 -1
- package/dist/twilight/{p-d5730ccd.entry.js → p-061fdc55.entry.js} +1 -1
- package/dist/twilight/{p-f63f2040.entry.js → p-0a1f28c9.entry.js} +1 -1
- package/dist/twilight/{p-3a51e372.entry.js → p-0b814320.entry.js} +1 -1
- package/dist/twilight/{p-044967a1.entry.js → p-0bc04e3f.entry.js} +1 -1
- package/dist/twilight/{p-bb1aff39.entry.js → p-0c1721e1.entry.js} +1 -1
- package/dist/twilight/p-0daa8221.entry.js +4 -0
- package/dist/twilight/{p-3240f2c3.entry.js → p-0e6a0989.entry.js} +2 -2
- package/dist/twilight/{p-da6a525a.entry.js → p-15c3b0cc.entry.js} +1 -1
- package/dist/twilight/{p-20141d72.entry.js → p-168e3ad8.entry.js} +1 -1
- package/dist/twilight/{p-c996ee08.entry.js → p-19c6d83a.entry.js} +1 -1
- package/dist/twilight/{p-6fb9221a.entry.js → p-1d75fdd9.entry.js} +1 -1
- package/dist/twilight/{p-07fa35ce.entry.js → p-2104f800.entry.js} +1 -1
- package/dist/twilight/{p-c6-stRrD.js → p-25ZR4Fc8.js} +1 -1
- package/dist/twilight/p-286d9ba3.entry.js +4 -0
- package/dist/twilight/p-2985e01e.entry.js +4 -0
- package/dist/twilight/{p-c3639051.entry.js → p-2c4f4539.entry.js} +1 -1
- package/dist/twilight/{p-0597f278.entry.js → p-2c9c0815.entry.js} +1 -1
- package/dist/twilight/{p-e5b1f92d.entry.js → p-39389b31.entry.js} +1 -1
- package/dist/twilight/{p-b344db5c.entry.js → p-3c96d5af.entry.js} +1 -1
- package/dist/twilight/{p-bec932de.entry.js → p-404d3645.entry.js} +1 -1
- package/dist/twilight/{p-8ab2b78f.entry.js → p-47c9e882.entry.js} +1 -1
- package/dist/twilight/{p-f28da331.entry.js → p-4fb48be8.entry.js} +1 -1
- package/dist/twilight/{p-5e58c1d1.entry.js → p-4fff03a8.entry.js} +1 -1
- package/dist/twilight/{p-5d72e09d.entry.js → p-51bc9c4d.entry.js} +1 -1
- package/dist/twilight/{p-57856a68.entry.js → p-54e43314.entry.js} +1 -1
- package/dist/twilight/{p-9965cc1b.entry.js → p-56ba7f94.entry.js} +1 -1
- package/dist/twilight/{p-861bf5a5.entry.js → p-5a215130.entry.js} +1 -1
- package/dist/twilight/{p-eca28f29.entry.js → p-5cb10852.entry.js} +1 -1
- package/dist/twilight/{p-031fe0b8.entry.js → p-5f47eb12.entry.js} +1 -1
- package/dist/twilight/{p-ed713905.entry.js → p-5fe29fcf.entry.js} +1 -1
- package/dist/twilight/p-67d7bd8b.entry.js +4 -0
- package/dist/twilight/{p-8edc1c0d.entry.js → p-6e535738.entry.js} +1 -1
- package/dist/twilight/{p-da132465.entry.js → p-72291ad7.entry.js} +1 -1
- package/dist/twilight/{p-558d69d0.entry.js → p-72c9cd44.entry.js} +1 -1
- package/dist/twilight/{p-6e2214d1.entry.js → p-74cac8a8.entry.js} +1 -1
- package/dist/twilight/{p-a306ae65.entry.js → p-74e009df.entry.js} +1 -1
- package/dist/twilight/{p-492fd499.entry.js → p-77d816b8.entry.js} +1 -1
- package/dist/twilight/{p-8e987fe7.entry.js → p-7b9ed1e4.entry.js} +1 -1
- package/dist/twilight/{p-6dbbe6cb.entry.js → p-7df52f7b.entry.js} +1 -1
- package/dist/twilight/{p-ffc6f929.entry.js → p-7e730733.entry.js} +1 -1
- package/dist/twilight/{p-20b4cc9c.entry.js → p-8658fefd.entry.js} +1 -1
- package/dist/twilight/{p-1bbe31ad.entry.js → p-90d53c9b.entry.js} +1 -1
- package/dist/twilight/{p-3128bebd.entry.js → p-9196b7a9.entry.js} +1 -1
- package/dist/twilight/{p-aa5a77fa.entry.js → p-92d37b3e.entry.js} +1 -1
- package/dist/twilight/{p-0e95d192.entry.js → p-92ec265b.entry.js} +1 -1
- package/dist/twilight/{p-377b941b.entry.js → p-930ff69a.entry.js} +1 -1
- package/dist/twilight/{p-ea2d6310.entry.js → p-931c44fb.entry.js} +1 -1
- package/dist/twilight/{p-6b600ab2.entry.js → p-953da0b5.entry.js} +1 -1
- package/dist/twilight/{p-f3a4c8c3.entry.js → p-95d8a11b.entry.js} +1 -1
- package/dist/twilight/{p-40d12093.entry.js → p-98186fb3.entry.js} +1 -1
- package/dist/twilight/{p-0a4a3298.entry.js → p-982ccb80.entry.js} +1 -1
- package/dist/twilight/{p-a9b810c4.entry.js → p-99ff235e.entry.js} +1 -1
- package/dist/twilight/{p-a1faadfd.entry.js → p-9a161a84.entry.js} +1 -1
- package/dist/twilight/{p-44ceacb7.entry.js → p-9c798a1a.entry.js} +1 -1
- package/dist/twilight/{p-016788c7.entry.js → p-9cc2e54c.entry.js} +1 -1
- package/dist/twilight/{p-a92553f2.entry.js → p-9e27778a.entry.js} +1 -1
- package/dist/twilight/{p-DWmThpkK.js → p-BYpv9A8D.js} +1 -1
- package/dist/twilight/{p-DHrUX865.js → p-CHOv1Smw.js} +1 -1
- package/dist/twilight/{p-en37lqSm.js → p-Ca84RIBI.js} +1 -1
- package/dist/twilight/{p-CfWsH_qz.js → p-DMHhYV48.js} +1 -1
- package/dist/twilight/{p-CaEa1mkI.js → p-DQXp-sN5.js} +1 -1
- package/dist/twilight/{p-Dvsk1fA0.js → p-DYcV7UW8.js} +1 -1
- package/dist/twilight/{p-BVVNfOQk.js → p-DYgnIxqR.js} +1 -1
- package/dist/twilight/{p-DD7hlkaJ.js → p-DuoSRdS5.js} +1 -1
- package/dist/twilight/{p-Caj9IqWn.js → p-KZ7SFw0C.js} +1 -1
- package/dist/twilight/{p-153044cb.entry.js → p-a1d3a45f.entry.js} +1 -1
- package/dist/twilight/{p-e2a37618.entry.js → p-a2e8a9d1.entry.js} +1 -1
- package/dist/twilight/{p-3205307f.entry.js → p-a34c031b.entry.js} +1 -1
- package/dist/twilight/{p-96c1a0a1.entry.js → p-a5eeb082.entry.js} +1 -1
- package/dist/twilight/{p-9d220aff.entry.js → p-a96e5e06.entry.js} +1 -1
- package/dist/twilight/{p-279e6529.entry.js → p-ae83c325.entry.js} +1 -1
- package/dist/twilight/{p-393ced29.entry.js → p-aed6d4eb.entry.js} +1 -1
- package/dist/twilight/{p-e03a5bb9.entry.js → p-b0437615.entry.js} +1 -1
- package/dist/twilight/{p-8b746fed.entry.js → p-bd2672ee.entry.js} +1 -1
- package/dist/twilight/{p-7d0bad4e.entry.js → p-bdda14f6.entry.js} +1 -1
- package/dist/twilight/p-be973f87.entry.js +4 -0
- package/dist/twilight/{p-7fa4c6ed.entry.js → p-c3530e7a.entry.js} +1 -1
- package/dist/twilight/{p-94b5d1c0.entry.js → p-c6b82041.entry.js} +1 -1
- package/dist/twilight/{p-cf75cffe.entry.js → p-c6d64b53.entry.js} +1 -1
- package/dist/twilight/{p-87f4f9ab.entry.js → p-ca0a62f9.entry.js} +1 -1
- package/dist/twilight/{p-24244ede.entry.js → p-ca52add5.entry.js} +1 -1
- package/dist/twilight/{p-b50b5139.entry.js → p-cd65e560.entry.js} +1 -1
- package/dist/twilight/{p-99537f59.entry.js → p-d39bf8b5.entry.js} +1 -1
- package/dist/twilight/{p-ffaa3b02.entry.js → p-d3a9573e.entry.js} +1 -1
- package/dist/twilight/p-d49130fc.entry.js +4 -0
- package/dist/twilight/p-d54b75de.entry.js +4 -0
- package/dist/twilight/{p-0f6cf7ae.entry.js → p-d8c9d454.entry.js} +1 -1
- package/dist/twilight/{p-24a6d077.entry.js → p-dc6b3dfb.entry.js} +1 -1
- package/dist/twilight/{p-753029a4.entry.js → p-e5c2df5a.entry.js} +1 -1
- package/dist/twilight/p-eb2e3e67.entry.js +4 -0
- package/dist/twilight/{p-a4e19dcc.entry.js → p-ecdf7027.entry.js} +1 -1
- package/dist/twilight/{p-f424a0a2.entry.js → p-f060a3dd.entry.js} +1 -1
- package/dist/twilight/{p-ed35f803.entry.js → p-f4eba1d1.entry.js} +1 -1
- package/dist/twilight/{p-dcfab648.entry.js → p-f5ac65b4.entry.js} +1 -1
- package/dist/twilight/{p-3ca34205.entry.js → p-f8d642b2.entry.js} +1 -1
- package/dist/twilight/{p-c72ed3d3.entry.js → p-f9912293.entry.js} +1 -1
- package/dist/twilight/p-f9a3f3f4.entry.js +4 -0
- package/dist/twilight/{p-D5YVbhSD.js → p-kflOqry6.js} +1 -1
- package/dist/twilight/{p-U4GQwdjm.js → p-lYj74H1f.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-cart-coupons/salla-cart-coupons.d.ts +31 -3
- package/package.json +5 -5
- package/dist/collection/components/salla-conditional-offer/test/salla-conditional-offer.js +0 -12
- package/dist/twilight/p-365cb4e5.entry.js +0 -4
- package/dist/twilight/p-4c3435a8.entry.js +0 -4
- package/dist/twilight/p-4cf658b6.entry.js +0 -4
- package/dist/twilight/p-4f60cdea.entry.js +0 -4
- package/dist/twilight/p-8ea1c5b4.entry.js +0 -4
- package/dist/twilight/p-b2019ba2.entry.js +0 -4
- package/dist/twilight/p-da157fc7.entry.js +0 -4
- package/dist/twilight/p-ddfb7d95.entry.js +0 -4
- package/dist/twilight/p-ee18ef3e.entry.js +0 -4
- package/dist/types/components/salla-conditional-offer/test/salla-conditional-offer.d.ts +0 -1
|
@@ -5,7 +5,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
|
|
|
5
5
|
import { d as defineCustomElement$3 } from './salla-button2.js';
|
|
6
6
|
import { d as defineCustomElement$2 } from './salla-slider2.js';
|
|
7
7
|
|
|
8
|
-
const sallaCartCouponsCss = "";
|
|
8
|
+
const sallaCartCouponsCss = ".s-cart-coupons-applied-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.s-cart-coupons-applied-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-inline-start:3px solid #10b981}.s-cart-coupons-applied-code{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#111827}.s-cart-coupons-applied-code::before{content:\"\";width:7px;height:7px;border-radius:9999px;background:#10b981}.s-cart-coupons-applied-remove{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;color:#ef4444;background:transparent;border:0;border-radius:9999px;cursor:pointer;transition:background-color 0.15s ease, color 0.15s ease}.s-cart-coupons-applied-remove:hover{background:#fef2f2}.s-cart-coupons-applied-remove:disabled{opacity:0.5;cursor:not-allowed}";
|
|
9
9
|
|
|
10
10
|
const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupons extends HTMLElement {
|
|
11
11
|
constructor() {
|
|
@@ -17,22 +17,46 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
17
17
|
this.couponInputValue = '';
|
|
18
18
|
this.couponError = '';
|
|
19
19
|
this.isApplying = false;
|
|
20
|
+
// Applied coupon codes rendered as removable chips below the input.
|
|
21
|
+
// - Single-coupon (default): holds at most the one cart coupon.
|
|
22
|
+
// - Multi-coupon (features::multi_coupon on): holds every applied code,
|
|
23
|
+
// sourced from the cart's `coupons` array so it survives a page refresh.
|
|
24
|
+
this.appliedCoupons = [];
|
|
25
|
+
// Whether the store has multi-coupon enabled. Read ONCE from the store config
|
|
26
|
+
// (Salla.config.get('store.settings.cart.multi_coupon')) — a stable store-level setting,
|
|
27
|
+
// exactly like cart.apply_coupon_enabled — not from the per-cart payload or localStorage.
|
|
28
|
+
this.multiCoupon = false;
|
|
20
29
|
this.isHandlingInternalError = false;
|
|
21
30
|
// Store cart event listener references for cleanup
|
|
22
31
|
this.cartUpdatedHandler = (cartData) => {
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
// cart::updated carries the server-side cart. The multi-coupon flag comes from store
|
|
33
|
+
// config (set once in componentWillLoad), so only refresh total + chips here.
|
|
34
|
+
this.cartTotal = cartData?.summary?.sub_total ?? cartData?.sub_total ?? cartData?.total ?? this.cartTotal;
|
|
35
|
+
// Re-sync applied coupon state from the payload — mirroring refreshFromServer's guard:
|
|
36
|
+
// - Multi-coupon: only a real `coupons` array re-seeds the chips, so a summary-only
|
|
37
|
+
// cart::updated can't shrink them (add/remove refreshes the chips from the server).
|
|
38
|
+
// - Single-coupon (flag off): any payload carrying `coupon` re-syncs the input, so a
|
|
39
|
+
// server-side invalidation (e.g. cart drops below the coupon minimum) that emits
|
|
40
|
+
// `coupon: ''` clears the stale code instead of leaving it stuck until a reload.
|
|
41
|
+
const carriesCoupons = this.multiCoupon
|
|
42
|
+
? Array.isArray(cartData?.coupons)
|
|
43
|
+
: (cartData && 'coupon' in cartData);
|
|
44
|
+
if (carriesCoupons) {
|
|
45
|
+
this.syncAppliedFromCart(cartData);
|
|
30
46
|
}
|
|
31
47
|
// Clear error when cart updates
|
|
32
48
|
this.couponError = '';
|
|
33
49
|
};
|
|
34
50
|
this.couponAddedHandler = () => {
|
|
35
|
-
//
|
|
51
|
+
// Skip while an internal apply/remove is in flight — handleApplyClick/removeCoupon already
|
|
52
|
+
// refresh from the server, so this handler only needs to cover EXTERNAL coupon changes
|
|
53
|
+
// (e.g. the checkout page). Prevents a duplicate salla.cart.details() call per action.
|
|
54
|
+
if (this.isApplying || this.isHandlingInternalError) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Re-read the applied set + flag from the SERVER (not storage), so the chips reflect
|
|
58
|
+
// the real cart — a stale storage cache (e.g. after a checkout-page removal) never shows.
|
|
59
|
+
this.refreshFromServer();
|
|
36
60
|
};
|
|
37
61
|
this.couponAdditionFailedHandler = (error) => {
|
|
38
62
|
// Only handle external coupon failures when no internal operation is handling errors
|
|
@@ -42,7 +66,12 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
42
66
|
// Internal operations handle their own errors to prevent double display
|
|
43
67
|
};
|
|
44
68
|
this.couponDeletedHandler = () => {
|
|
45
|
-
//
|
|
69
|
+
// Same guard as couponAddedHandler: internal removeCoupon already refreshes; only cover
|
|
70
|
+
// EXTERNAL deletions here, so an internal remove doesn't fire two salla.cart.details() calls.
|
|
71
|
+
if (this.isApplying || this.isHandlingInternalError) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.refreshFromServer();
|
|
46
75
|
};
|
|
47
76
|
// Arrow functions to maintain context for event listeners
|
|
48
77
|
this.onKeyUp = (event) => {
|
|
@@ -58,15 +87,20 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
58
87
|
async componentWillLoad() {
|
|
59
88
|
await Salla.onReady();
|
|
60
89
|
await Salla.lang.onLoaded();
|
|
90
|
+
// Multi-coupon is a store-level setting — read it ONCE from config here (like
|
|
91
|
+
// apply_coupon_enabled), so it never depends on the per-cart payload or localStorage.
|
|
92
|
+
this.multiCoupon = !!salla.config.get('store.settings.cart.multi_coupon');
|
|
61
93
|
//then set your logic here to avoid any race condition
|
|
62
94
|
this.loadCouponsData(); // Load async without blocking render - shows empty until loaded
|
|
95
|
+
// Synchronous first-paint seed from the storage cart so an applied coupon shows on the very
|
|
96
|
+
// first render instead of flashing empty → applied while the async server fetch is in flight
|
|
97
|
+
// (the old loadCartTotal read storage synchronously). loadCartTotal() then reconciles with the
|
|
98
|
+
// authoritative server payload, which also corrects a storage coupon that was stale.
|
|
99
|
+
this.seedFromStorage();
|
|
63
100
|
this.loadCartTotal();
|
|
64
101
|
this.setupCartEventListeners();
|
|
65
102
|
// Note: No store feature gate needed - coupon availability controlled by backend API response
|
|
66
103
|
}
|
|
67
|
-
componentDidLoad() {
|
|
68
|
-
this.setupCouponInputEvents();
|
|
69
|
-
}
|
|
70
104
|
setupCartEventListeners() {
|
|
71
105
|
// Listen for cart updates to refresh cart total
|
|
72
106
|
salla.event.on('cart::updated', this.cartUpdatedHandler);
|
|
@@ -76,10 +110,8 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
76
110
|
salla.event.on('cart::coupon.deleted', this.couponDeletedHandler);
|
|
77
111
|
}
|
|
78
112
|
disconnectedCallback() {
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
this.couponInputRef?.removeEventListener('input', this.onInput);
|
|
82
|
-
// Clean up cart event listeners using reliable global event system
|
|
113
|
+
// Input events are bound via JSX (onInput/onKeyUp) — Stencil cleans those up. Only the
|
|
114
|
+
// global cart event listeners need explicit teardown here.
|
|
83
115
|
salla.event.off('cart::updated', this.cartUpdatedHandler);
|
|
84
116
|
salla.event.off('cart::coupon.added', this.couponAddedHandler);
|
|
85
117
|
salla.event.off('cart::coupon.addition.failed', this.couponAdditionFailedHandler);
|
|
@@ -125,21 +157,118 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
125
157
|
this.availableCoupons = [];
|
|
126
158
|
}
|
|
127
159
|
}
|
|
128
|
-
loadCartTotal() {
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
//
|
|
132
|
-
|
|
160
|
+
async loadCartTotal() {
|
|
161
|
+
// Multi-coupon needs the SERVER-authoritative applied list (localStorage can be stale, e.g.
|
|
162
|
+
// coupons removed on the checkout page). Single-coupon (flag off — the default, and the hot
|
|
163
|
+
// path at billions req/day) is fully seeded synchronously by seedFromStorage() with NO network
|
|
164
|
+
// call, exactly as the original implementation read from storage — so skip the
|
|
165
|
+
// salla.cart.details() round-trip for it.
|
|
166
|
+
if (!this.multiCoupon) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
await this.refreshFromServer();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Synchronous first-paint seed from the storage cart — SINGLE-COUPON (flag-off) ONLY.
|
|
173
|
+
*
|
|
174
|
+
* It restores the old synchronous first paint Greptile flagged for the default single-coupon
|
|
175
|
+
* stores (the input shows the applied code immediately instead of flashing empty).
|
|
176
|
+
*
|
|
177
|
+
* With multi-coupon ON the applied coupons are SERVER-authoritative: storage can still list a
|
|
178
|
+
* coupon that was invalidated or removed server-side (e.g. dropped below the cart minimum, or
|
|
179
|
+
* removed on another surface), so seeding the chips from it would render a STALE list — e.g.
|
|
180
|
+
* two chips when the server holds one — until the refresh lands. In that mode we skip the seed
|
|
181
|
+
* entirely and let refreshFromServer/cart::updated populate the chips from the server.
|
|
182
|
+
*/
|
|
183
|
+
seedFromStorage() {
|
|
184
|
+
if (this.multiCoupon) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const stored = salla.storage.get('cart');
|
|
188
|
+
if (stored && typeof stored === 'object' && 'coupon' in stored) {
|
|
189
|
+
this.applyCart(stored);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Fetch the cart fresh from the server (salla.cart.details -> CartPresenter::forApi) and
|
|
194
|
+
* seed the applied codes + total from its authoritative payload (cart.coupons). Falls back
|
|
195
|
+
* to the storage cart ONLY if the request fails, and never wipes the chips on an odd shape.
|
|
196
|
+
*/
|
|
197
|
+
async refreshFromServer() {
|
|
198
|
+
try {
|
|
199
|
+
const response = await salla.cart.details();
|
|
200
|
+
// cart-details nests the cart under data.cart (same shape addCoupon/deleteCoupon read).
|
|
201
|
+
const cart = response?.data?.cart ?? response?.data ?? response;
|
|
202
|
+
if (cart && typeof cart === 'object' &&
|
|
203
|
+
(Array.isArray(cart.coupons) || 'coupon' in cart)) {
|
|
204
|
+
this.applyCart(cart);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
// ignore — fall back to storage below
|
|
210
|
+
}
|
|
211
|
+
const stored = salla.storage.get('cart');
|
|
212
|
+
if (stored) {
|
|
213
|
+
this.applyCart(stored);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/** Apply an authoritative cart object: total + applied chips (flag comes from store config). */
|
|
217
|
+
applyCart(cart) {
|
|
218
|
+
this.cartTotal = cart?.summary?.sub_total ?? cart?.sub_total ?? this.cartTotal;
|
|
219
|
+
this.syncAppliedFromCart(cart);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Seed the chip list and the active coupon from a cart object.
|
|
223
|
+
* Multi-coupon: use the cart's `coupons` array (survives refresh).
|
|
224
|
+
* Single-coupon (default): use the single `coupon` code.
|
|
225
|
+
*/
|
|
226
|
+
syncAppliedFromCart(cart) {
|
|
133
227
|
this.currentCoupon = cart?.coupon || '';
|
|
134
|
-
this.
|
|
228
|
+
if (this.multiCoupon) {
|
|
229
|
+
this.appliedCoupons = Array.isArray(cart?.coupons)
|
|
230
|
+
? cart.coupons.filter(Boolean)
|
|
231
|
+
: (this.currentCoupon ? [this.currentCoupon] : []);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
// Single-coupon (flag off): mirror the applied code into the (disabled) input, matching the
|
|
235
|
+
// original production UX. Only set at sync points (load / after apply-remove), never on a
|
|
236
|
+
// keystroke, so it won't clobber what the user is typing.
|
|
237
|
+
this.couponInputValue = this.currentCoupon;
|
|
238
|
+
this.appliedCoupons = this.currentCoupon ? [this.currentCoupon] : [];
|
|
135
239
|
}
|
|
136
|
-
|
|
137
|
-
if (
|
|
240
|
+
async handleApplyClick() {
|
|
241
|
+
if (this.isApplying) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const code = this.couponInputValue.trim();
|
|
245
|
+
if (!code) {
|
|
246
|
+
this.showCouponError(salla.lang.get('pages.cart.enter_coupon_code'));
|
|
138
247
|
return;
|
|
139
248
|
}
|
|
140
|
-
this.
|
|
141
|
-
this.
|
|
249
|
+
this.isApplying = true;
|
|
250
|
+
this.isHandlingInternalError = true;
|
|
251
|
+
try {
|
|
252
|
+
// Apply the coupon. Multi-coupon: the backend appends it; single-coupon:
|
|
253
|
+
// it replaces the existing one. Re-read the applied set from the SERVER (not storage)
|
|
254
|
+
// for the chip list, and clear the input for the next code.
|
|
255
|
+
await salla.cart.addCoupon(code);
|
|
256
|
+
await this.refreshFromServer();
|
|
257
|
+
this.couponInputValue = '';
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
|
|
261
|
+
}
|
|
262
|
+
finally {
|
|
263
|
+
this.isApplying = false;
|
|
264
|
+
// Keep internal error flag active briefly to prevent race condition with SDK event
|
|
265
|
+
setTimeout(() => {
|
|
266
|
+
this.isHandlingInternalError = false;
|
|
267
|
+
}, 100);
|
|
268
|
+
}
|
|
142
269
|
}
|
|
270
|
+
// Single-coupon (flag off) toggle button: apply the typed code, or remove the applied one.
|
|
271
|
+
// Mirrors the original production behavior; the SDK coupon.added/deleted events then refresh.
|
|
143
272
|
async handleCouponButtonClick() {
|
|
144
273
|
if (this.isApplying) {
|
|
145
274
|
return;
|
|
@@ -153,13 +282,42 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
153
282
|
this.isHandlingInternalError = true;
|
|
154
283
|
try {
|
|
155
284
|
if (hasCoupon) {
|
|
156
|
-
// Remove existing coupon
|
|
157
285
|
await salla.cart.deleteCoupon();
|
|
158
286
|
}
|
|
159
287
|
else {
|
|
160
|
-
// Apply new coupon
|
|
161
288
|
await salla.cart.addCoupon(this.couponInputValue.trim());
|
|
162
289
|
}
|
|
290
|
+
// Refresh the UI directly for the single-coupon toggle. The coupon.added/deleted event
|
|
291
|
+
// handlers skip internal actions (isApplying guard), and cartUpdatedHandler doesn't
|
|
292
|
+
// re-seed from a summary-only payload — so without this refresh the input/button would
|
|
293
|
+
// stay stuck after a successful apply/remove on the default (flag-off) path.
|
|
294
|
+
await this.refreshFromServer();
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
|
|
298
|
+
}
|
|
299
|
+
finally {
|
|
300
|
+
this.isApplying = false;
|
|
301
|
+
setTimeout(() => {
|
|
302
|
+
this.isHandlingInternalError = false;
|
|
303
|
+
}, 100);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async removeCoupon(code) {
|
|
307
|
+
if (this.isApplying) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
this.isApplying = true;
|
|
311
|
+
this.isHandlingInternalError = true;
|
|
312
|
+
try {
|
|
313
|
+
// Multi-coupon: remove just this code. Single-coupon: reset the cart coupon.
|
|
314
|
+
if (this.multiCoupon) {
|
|
315
|
+
await salla.cart.deleteCoupon(code);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
await salla.cart.deleteCoupon();
|
|
319
|
+
}
|
|
320
|
+
await this.refreshFromServer();
|
|
163
321
|
}
|
|
164
322
|
catch (error) {
|
|
165
323
|
this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
|
|
@@ -198,6 +356,16 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
198
356
|
try {
|
|
199
357
|
// Apply the coupon directly without checking for existing coupon
|
|
200
358
|
await salla.cart.addCoupon(couponCode.trim());
|
|
359
|
+
// Refresh the chips/input directly — the guarded coupon.added handler skips internal
|
|
360
|
+
// actions, so the coupon-card / selectCoupon path must refresh here or the chip list
|
|
361
|
+
// stays stale in multi-coupon mode until the next cart::updated with a coupons[] array.
|
|
362
|
+
await this.refreshFromServer();
|
|
363
|
+
// Multi-coupon: clear the input for the next code. Single-coupon: refreshFromServer
|
|
364
|
+
// already set the input to the applied code (shown disabled), so keep it — clearing
|
|
365
|
+
// here would blank the disabled field on the default flag-off path.
|
|
366
|
+
if (this.multiCoupon) {
|
|
367
|
+
this.couponInputValue = '';
|
|
368
|
+
}
|
|
201
369
|
}
|
|
202
370
|
catch (error) {
|
|
203
371
|
this.showCouponError(error.response?.data?.error?.message || salla.lang.get('pages.cart.coupon_application_error'));
|
|
@@ -243,7 +411,18 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
243
411
|
: `${salla.lang.get('pages.cart.expires_after')} ${coupon.remaining_days} ${salla.lang.get('pages.cart.day')}`)), coupon.minimum_amount && parseFloat(coupon.minimum_amount.amount) > 0 && (h("div", { class: "s-cart-coupons-minimum" }, salla.lang.get('pages.cart.minimum'), " ", h("span", { innerHTML: salla.money(coupon.minimum_amount.amount, coupon.minimum_amount.currency) })))), h("div", { class: "s-cart-coupons-action" }, isEligible ? salla.lang.get('pages.cart.save_coupon') : salla.lang.get('pages.cart.coupon_not_compatible'))))));
|
|
244
412
|
}
|
|
245
413
|
render() {
|
|
246
|
-
return (h(Host, { key: '
|
|
414
|
+
return (h(Host, { key: '30a1ee00e7ec27d12012823347cbcf3c477834e5' }, h("div", { key: '6f84298e9ebd6c50c84fb9a3736d734996e39c33', class: "s-cart-coupons-wrapper" }, h("div", { key: 'b95a1c2b29d2fed54fdf143eac8e37add062668b', class: "s-cart-coupons-input-section" }, h("label", { key: 'e6711fae70db31f8a5987cb58f0488e974394e1c', htmlFor: "coupon-input", class: "s-cart-coupons-coupon-label" }, salla.lang.get('pages.cart.have_coupon')), h("div", { key: '824b806c6aa40fb039f659fe81f6cb7686f46b10', class: "s-cart-coupons-coupon-input-container" }, this.multiCoupon ? [
|
|
415
|
+
// Multi-coupon: input stays active to append more codes; applied coupons render
|
|
416
|
+
// as removable chips below.
|
|
417
|
+
h("input", { type: "text", id: "coupon-input", name: "coupon", class: `form-input ${this.couponError ? 's-coupon-input-error' : ''}`, placeholder: salla.lang.get('pages.cart.coupon_placeholder'), value: this.couponInputValue, disabled: this.isApplying, onInput: this.onInput, onKeyUp: this.onKeyUp, "aria-label": salla.lang.get('pages.cart.apply_coupon'), key: "coupon-input" }),
|
|
418
|
+
h("salla-button", { ref: el => this.couponButtonRef = el, class: "s-cart-coupons-coupon-button s-cart-coupons-coupon-button-apply", color: "primary", loading: this.isApplying, "loader-position": "center", onClick: () => this.handleApplyClick(), key: "apply-button" }, h("span", null, salla.lang.get('pages.cart.save_coupon'))),
|
|
419
|
+
] : [
|
|
420
|
+
// Single-coupon (flag off): the ORIGINAL production UX — the field is disabled and
|
|
421
|
+
// shows the applied code, and the button toggles to a red X (danger) to remove it;
|
|
422
|
+
// a new code can only be entered after removing. Reuses the existing master classes.
|
|
423
|
+
h("input", { type: "text", id: "coupon-input", name: "coupon", class: `form-input ${this.couponError ? 's-coupon-input-error' : ''}`, placeholder: salla.lang.get('pages.cart.coupon_placeholder'), value: this.couponInputValue, disabled: !!this.currentCoupon || this.isApplying, onInput: this.onInput, onKeyUp: this.onKeyUp, "aria-label": salla.lang.get('pages.cart.apply_coupon'), key: "coupon-input" }),
|
|
424
|
+
h("salla-button", { ref: el => this.couponButtonRef = el, class: `s-cart-coupons-coupon-button ${this.currentCoupon ? 's-cart-coupons-coupon-button-remove' : 's-cart-coupons-coupon-button-apply'}`, color: this.currentCoupon ? 'danger' : 'primary', loading: this.isApplying, "loader-position": "center", onClick: () => this.handleCouponButtonClick(), key: "apply-button" }, this.currentCoupon ? (h("i", { class: "sicon-cancel" })) : (h("span", null, salla.lang.get('pages.cart.save_coupon')))),
|
|
425
|
+
]), this.couponError && (h("span", { key: '0f3b36e8192777fb7e7d0a065fe720c009065f9d', class: "s-cart-coupons-coupon-error" }, this.couponError)), this.multiCoupon && this.appliedCoupons.length > 0 && (h("div", { key: 'b680e30bd1ae49db5e304440431cdc89c6e5d051', class: "s-cart-coupons-applied-list" }, this.appliedCoupons.map(code => (h("div", { class: "s-cart-coupons-applied-item", key: code }, h("span", { class: "s-cart-coupons-applied-code" }, code), h("button", { type: "button", class: "s-cart-coupons-applied-remove", "aria-label": `${salla.lang.get('pages.cart.delete')} ${code}`, disabled: this.isApplying, onClick: () => this.removeCoupon(code) }, h("i", { class: "sicon-cancel" })))))))), this.availableCoupons && this.availableCoupons.length > 0 && (h("salla-slider", { key: 'a2d312dbf6e997939f54c7867ef0d98091bbde4a', type: "carousel", showControls: false, class: "s-cart-coupons-slider" }, h("div", { key: 'b474dcbdeabc26bef5ecba94dd78ef72a60950df', slot: "items" }, this.availableCoupons.map(coupon => this.renderCouponCard(coupon))))))));
|
|
247
426
|
}
|
|
248
427
|
get host() { return this; }
|
|
249
428
|
static get style() { return sallaCartCouponsCss; }
|
|
@@ -254,6 +433,8 @@ const SallaCartCoupons$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartCoupo
|
|
|
254
433
|
"couponInputValue": [32],
|
|
255
434
|
"couponError": [32],
|
|
256
435
|
"isApplying": [32],
|
|
436
|
+
"appliedCoupons": [32],
|
|
437
|
+
"multiCoupon": [32],
|
|
257
438
|
"selectCoupon": [64]
|
|
258
439
|
}]);
|
|
259
440
|
function defineCustomElement$1() {
|
|
@@ -123,7 +123,7 @@ const SallaCartSummary$1 = /*@__PURE__*/ proxyCustomElement(class SallaCartSumma
|
|
|
123
123
|
return cartUrl;
|
|
124
124
|
}
|
|
125
125
|
render() {
|
|
126
|
-
return (h(Host, { key: '
|
|
126
|
+
return (h(Host, { key: '27e472fb912afff849c94a8a93a9a71778c6819d' }, h("a", { key: 'f9ef99f2a7205fcfdc0bdd799b1b751ab40bcb35', class: "s-cart-summary-wrapper", href: this.getCartLink(), onClick: this.handleCheckoutClick }, h("div", { key: '1b0d26d3e17b0fb5d6b2cbdc1cd14c079a5fb47b', id: "s-cart-icon" }, h("slot", { key: '3c64b2afa8782a4018dd086e657f16373a91f997', name: "icon" }, h("i", { key: '46f1cebfa346e20d27f8ffed1206c05828be004a', class: "s-cart-summary-icon", innerHTML: PendingOrdersIcon }))), h("span", { key: '72bd9fc2d2949b74109b9e57e823c4c4cc99d287', class: "s-cart-summary-count" }, salla.helpers.number(this.cartSummaryCount)), h("p", { key: 'd65efd069e4f5968c8f592bf341b35853b000bda', class: "s-cart-summary-content" }, this.showCartLabel && h("span", { key: 'ecbd5350d56131aee746913bb7c6e662431f7001', class: "s-cart-summary-label" }, this.cartLabel), h("b", { key: 'aeebd5d52966dc183111e49289061c3649087a8f', class: "s-cart-summary-total", innerHTML: salla.money(this.cartSummaryTotal) })))));
|
|
127
127
|
}
|
|
128
128
|
get host() { return this; }
|
|
129
129
|
static get style() { return sallaCartSummaryCss; }
|
|
@@ -208,7 +208,7 @@ const SallaColorPicker = /*@__PURE__*/ proxyCustomElement(class SallaColorPicker
|
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
render() {
|
|
211
|
-
return (h(Host, { key: '
|
|
211
|
+
return (h(Host, { key: '516a09b2d219b7c12dd251c68e6e55a9a9f7624b', class: "s-color-picker-main" }, h("slot", { key: 'ce684e4b8a8a80710688e3f0c0e43271069fc920', name: "widget" }, h("div", { key: 'f95ff1d709d58e22a4a74ccc35f8db2e17be7e38', class: "s-color-picker-widget" }, h("div", { key: 'fd2347378990972269557593a7182f2bf4cd9f98', class: "s-color-picker-widget-canvas", ref: dv => (this.canvas = dv) }), h("span", { key: 'e22a7ed6738b5fcbc22453e5b091eeeb7720719a', innerHTML: ArrowDown }))), h("input", { key: 'b3f55c713a626808c6f36e4c1454abc26c97cb6e', class: "s-hidden", name: this.name, required: this.required, value: this.color, ref: color => (this.colorInput = color) })));
|
|
212
212
|
}
|
|
213
213
|
componentDidLoad() {
|
|
214
214
|
if (this.canvas)
|
|
@@ -45,7 +45,7 @@ const SallaCommentForm = /*@__PURE__*/ proxyCustomElement(class SallaCommentForm
|
|
|
45
45
|
.finally(() => this.submitBtn.stop());
|
|
46
46
|
}
|
|
47
47
|
render() {
|
|
48
|
-
return (h(Host, { key: '
|
|
48
|
+
return (h(Host, { key: '0e3a24dcfe8922106b9479aa559cf0e126bc3fcf' }, !!this.canComment ? h("form", { ref: frm => this.commentForm = frm }, h("div", { class: "s-comment-form-wrapper" }, this.showAvatar ?
|
|
49
49
|
h("img", { class: "s-comment-form-avatar", src: salla.config.get('user.avatar'), alt: "user avatar" }) : '', h("div", { class: "s-comment-form-content" }, h("textarea", { cols: 30, rows: 5, minlength: "4", maxlength: "500", ref: field => this.commentField = field, placeholder: this.placeholder, class: "s-comment-form-input", required: true }), h("br", null), h("div", { class: "s-comment-form-action" }, h("salla-button", { ref: btn => this.submitBtn = btn, "loader-position": 'center', onClick: () => this.submit() }, this.submitText))))) : ''));
|
|
50
50
|
}
|
|
51
51
|
static get style() { return sallaCommentFormCss; }
|
|
@@ -130,7 +130,7 @@ const SallaConditionalFields = /*@__PURE__*/ proxyCustomElement(class SallaCondi
|
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
render() {
|
|
133
|
-
return (h(Host, { key: '
|
|
133
|
+
return (h(Host, { key: 'badbb24a38a68127a6880ab4dbe0b0ae4730b11d' }, h("slot", { key: 'a9bdc41d3ded750f0ac5b0e4b5dea3618e02286a' })));
|
|
134
134
|
}
|
|
135
135
|
get host() { return this; }
|
|
136
136
|
}, [4, "salla-conditional-fields", undefined, [[0, "change", "changeHandler"], [0, "input", "changeHandler"]]]);
|
|
@@ -234,7 +234,7 @@ const SallaCountDown = /*@__PURE__*/ proxyCustomElement(class SallaCountDown ext
|
|
|
234
234
|
return this.renderCountDown();
|
|
235
235
|
}
|
|
236
236
|
render() {
|
|
237
|
-
return (h(Host, { key: '
|
|
237
|
+
return (h(Host, { key: '966a6ce961c0cc07b937d9b8e328211377084d44', class: `s-count-down-wrapper ${this.preOrder && this.isValidDate(this.date) ? 's-count-down-pre-order' : ''} ${this.horizontal ? 's-count-down-horizontal' : ''} ${this.withButton ? 's-count-down-with-button' : ''} ${this.offerEnded ? 's-count-down-ended' : ''}` }, this.renderPrefixText(), this.renderContent(), this.offerEnded && this.renderOfferEnded(), this.renderButton()));
|
|
238
238
|
}
|
|
239
239
|
static get style() { return sallaCountDownCss; }
|
|
240
240
|
}, [0, "salla-count-down", {
|
|
@@ -211,7 +211,7 @@ const SallaDatetimePicker = /*@__PURE__*/ proxyCustomElement(class SallaDatetime
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
render() {
|
|
214
|
-
return h("div", { key: '
|
|
214
|
+
return h("div", { key: '10ac16506ca2b2b2a94227887a8d0b6593d7ac17', class: "s-datetime-picker" }, h("input", { key: 'fad4a5677edf21d9bd9a977392ebaf4ae2ad3b7b', type: "datetime", name: this.name, value: this.value, required: this.required, disabled: this.disabled, placeholder: this.placeholder, class: "s-datetime-picker-input", ref: (el) => this.dateInput = el }));
|
|
215
215
|
}
|
|
216
216
|
async componentDidLoad() {
|
|
217
217
|
// Load flatpickr before initializing
|
|
@@ -316,11 +316,11 @@ const SallaFileUpload = /*@__PURE__*/ proxyCustomElement(class SallaFileUpload e
|
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
318
|
render() {
|
|
319
|
-
return (h(Host, { key: '
|
|
319
|
+
return (h(Host, { key: '518fef1a108d79f9aeb9efdbce74e4e721a145dc', class: {
|
|
320
320
|
"s-file-upload": true,
|
|
321
321
|
"s-file-upload-profile-image": this.profileImage,
|
|
322
322
|
"s-file-upload-multiple": this.allowMultiple,
|
|
323
|
-
} }, h("input", { key: '
|
|
323
|
+
} }, h("input", { key: '0c01117f1e59577833b106d5825a08dd2ca51bd0', type: "file", name: this.name, value: this.value, ref: ele => this.fileUploader = ele, required: this.required, class: "s-file-upload-wrapper s-file-upload-input", accept: this.accept }), this.allowMultiple && this.showMaxCountHint ? h("div", { class: "s-file-upload-hint s-hidden" }, this.max_count_hint(this.maxFilesCount)) : '', h("input", { key: '69276b5e95c8bc35f42c3f1f307abea8c1761621', class: "s-hidden", name: 'hidden-' + this.name, required: this.required, value: this.value, ref: input => this.hiddenInput = input })));
|
|
324
324
|
}
|
|
325
325
|
async componentDidLoad() {
|
|
326
326
|
await Salla.onReady();
|
|
@@ -197,12 +197,12 @@ const SallaFiltersWidget = /*@__PURE__*/ proxyCustomElement(class SallaFiltersWi
|
|
|
197
197
|
return h("span", { class: "s-filters-option-name" }, label);
|
|
198
198
|
}
|
|
199
199
|
render() {
|
|
200
|
-
return (h(Host, { key: '
|
|
200
|
+
return (h(Host, { key: '831f7655b903634e0eb3abc7338ea3296883cbbf', class: "s-filters-widget-container" }, h("h3", { key: '72a31fb2c9adab3df37550e930d5be981aafd8f6', class: "s-filters-widget-title", onClick: () => this.toggleWidget() }, h("span", { key: '7512914e8a7348d146384d67f117c8b06507def0' }, this.option.label), h("span", { key: '50d62723255618a2a51512722388ff686c92bdab', class: `s-filters-widget-plusminus ${this.isOpen ? 's-filters-widget-plusminus-active' : ''}` })), h("div", { key: '76792390d33c2051082541e18e9b354b2b63c644', class: "s-filters-widget-content", ref: (el) => this.widgetContent = el }, Array.isArray(this.option.values) && this.option.values.length > 5 && (h("div", { key: 'b39462721ff4572b3572c0ed6171c07fa53b57a9', class: "s-filters-widget-search-wrapper", style: { padding: '8px 0', marginBottom: '8px' } }, h("input", { key: '759b2ab6b80d0fd0bb03fcd3746414d9e4b80c7d', type: "text", class: "s-filters-widget-search-input", placeholder: salla.lang.get('blocks.header.search_placeholder') || 'بحث...', value: this.searchQuery, onInput: (e) => this.searchQuery = e.target.value }))), h("div", { key: 'db918c4a43bebc35c23810dc97736584504d0e47', class: "s-filters-widget-values", ref: (el) => this.widgetValues = el }, h("slot", { key: '92dc440b79ed0929a39db7a4a96a1981f3b49974' }), this.option.type !== FilterOptionTypes.RANGE
|
|
201
201
|
? this.renderFilterOption(this.option)
|
|
202
202
|
: h("salla-price-range", { onChanged: (event) => {
|
|
203
203
|
this.changed.emit(event.detail);
|
|
204
204
|
}, ref: price => this.priceRange = price, filtersData: this.filtersData, option: this.option })), this.withLoadMore && (!this.searchQuery || this.filteredCount > this.initialItemCount) &&
|
|
205
|
-
h("a", { key: '
|
|
205
|
+
h("a", { key: '885668e717441581cd1b92494ebc3927cd70daf1', class: "s-filters-widget-more", onClick: () => this.showMore() }, !this.isShowMore ? this.showMoreLabel : this.showLessLabel))));
|
|
206
206
|
}
|
|
207
207
|
get host() { return this; }
|
|
208
208
|
static get style() { return sallaFiltersWidgetCss; }
|
|
@@ -284,7 +284,7 @@ const SallaFilters$1 = /*@__PURE__*/ proxyCustomElement(class SallaFilters exten
|
|
|
284
284
|
render() {
|
|
285
285
|
const appliedFilters = this.getAppliedFilters();
|
|
286
286
|
const removeText = salla.lang.getWithDefault('common.elements.delete', 'Remove');
|
|
287
|
-
return h(Host, { key: '
|
|
287
|
+
return h(Host, { key: 'f0493d0e85ebb9e6612a1edc6cd7f45e7473017e' }, appliedFilters.length ? h("div", { class: "s-filters-applied s-filters-widget-container" }, h("h3", { class: "s-filters-widget-title", onClick: () => this.appliedOpen = !this.appliedOpen }, h("span", null, this.selectedTitle), h("span", { class: `s-filters-widget-plusminus ${this.appliedOpen ? 's-filters-widget-plusminus-active' : ''}` })), h("div", { class: `s-filters-widget-content ${this.appliedOpen ? 's-filters-widget-opened' : 's-filters-widget-closed'}` }, h("div", { class: "s-filters-widget-values" }, appliedFilters.map(chip => h("div", { class: "s-filters-label s-filters-applied-item" }, h("span", { class: "s-filters-option-name" }, chip.groupLabel, ": ", chip.optionLabel), h("button", { type: "button", class: "s-filters-applied-remove", "aria-label": `${removeText} ${chip.groupLabel}: ${chip.optionLabel}`, onClick: () => this.removeFilter(chip) }, h("i", { class: "sicon-cancel", "aria-hidden": "true" }))))), h("div", { class: "s-filters-footer" }, h("salla-button", { color: 'gray', fill: 'outline', onClick: () => this.resetFilters() }, this.reset)))) : '', this.filters?.map(option => h("salla-filters-widget", { option: option, filtersData: this.filtersData, onChanged: ({ detail: { event, option, value } }) => {
|
|
288
288
|
this.handleOptionChange(event, option, value);
|
|
289
289
|
} })));
|
|
290
290
|
}
|
|
@@ -770,7 +770,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
|
|
|
770
770
|
}
|
|
771
771
|
render() {
|
|
772
772
|
return [
|
|
773
|
-
h("div", { key: '
|
|
773
|
+
h("div", { key: 'b4d479166a0a7a8b7bf4d66fd39399eef0bbe1d8' }, h("salla-list-tile", { key: 'a526748e500753bc4e132b6d8cc5fe56d276378c', class: this.generateClass() }, h("div", { key: '3756943a7292552172dfe5fe112a987f9dff2128', slot: "title" }, this.vertical ? h("span", { innerHTML: SIGiftSharing }) : '', h("h3", { key: '769df65a33828cdb51270438885bd7554a93b18b' }, !!this.widgetTitle ? this.widgetTitle : this.sectionTitle)), h("div", { key: '69c51851715c12002d0d70f936852bf6b6a064a4', slot: "subtitle" }, h("div", { key: 'ee7979030a5756a4ad74c87cebdb595decc12d48' }, !!this.widgetSubtitle ? this.widgetSubtitle : this.sectionSubtitle)), h("div", { key: '374d33078ca9e9f4d26bc801abcb50d8271887bf', slot: "action" }, h("salla-button", { key: 'f5c53ce21a6e058e484f941d356e1c74bf337b5f', color: "primary", fill: "outline", width: "wide", class: "s-gifting-widget-action", onClick: () => this.handleGiftButtonClick() }, h("slot", { key: '2b57632750b91dc720605c181e19a0329c8db3e9', name: "widget-btn-content" }, h("div", { key: '1d43f1351bc3323118c8eace681f382b753d009b', class: "s-gifting-widget-action-content" }, h("span", { key: 'f62808df38d07bf5db9d54f24a64c103dbcca3c2', innerHTML: SIGiftSharing }), " \u00A0", h("span", { key: 'd22429956200e68c8d588d0daddae201963ba47a' }, this.sectionBtnText)))))), h("salla-modal", { key: '0e1614ad210647ac77bbeb7e19104f5b9ce3b6b3', id: this.hostId, isLoading: true, class: "s-gifting-modal", width: "sm", ref: modal => this.modal = modal }, h("div", { key: '230c00dd750aa31d20e450086b26c11094305e0f', slot: "loading" }, h("div", { key: 'cb48aec5cf71db50ba003cb3607c27e7a629e9be', class: "s-gifting-skeleton" }, h("div", { key: 'e7aa596896cb841628bf35b4b5d8c9d22ed84dae', class: "s-gifting-modal-header" }, h("salla-skeleton", { key: '8e6dff5462dc1644bd89e56d51b3a353341b1741', type: 'circle', height: '5rem', width: '5rem' }), h("h2", { key: '5bdf4f1266938b319a5d4642773cb0e8fa772f88', class: "s-gifting-modal-title" }, h("div", { key: '2e3ea0e2589152059ec71f0e0a0b6537b0d32d8f', class: "s-gifting-modal-badge-wrapper" }, h("salla-skeleton", { key: '7cf08110d0535ec7b719251cf54f3a83d940772f', height: '15px', width: '150px' })))), h("div", { key: '3e341993dd31be4bfbcc272877c8167f50233dd0', class: "s-gifting-skeleton-content" }, h("salla-skeleton", { key: '74b584687ed715146e84a7107fb69f18ea78f31d', height: '10px', width: '150px' }), h("salla-skeleton", { key: '8acfdd240b397ea8e0d6c93c745786c68eb34f25', height: '230px' }), h("salla-skeleton", { key: 'c92cef763f9d2857429919434a56bbc9686d6a3a', height: '10px', width: '150px' }), h("salla-skeleton", { key: '22e6c56dbabf3f90fa608dcd42d11b463ae86a1c', height: '30px' }), h("salla-skeleton", { key: '8093fcbc09362879ac5afb38f1910bdddfd41390', height: '40px' })))), h("slot", { key: '10842023d5a5861fa1562784c77f718c8e257d80', name: "header" }), !!this.hasError ?
|
|
774
774
|
h("salla-placeholder", { alignment: "center" }, h("span", { slot: "title" }, this.errorMessage || salla.lang.get('common.errors.empty_results')), h("span", { slot: "description" }, " "))
|
|
775
775
|
:
|
|
776
776
|
[
|
|
@@ -793,7 +793,7 @@ const SallaGifting$1 = /*@__PURE__*/ proxyCustomElement(class SallaGifting exten
|
|
|
793
793
|
h("div", { class: this.step2ItemClass(this.errors?.['receiver.city_id'] ? 's-form-group s-form-has-error' : 's-form-group') }, h("label", { class: "s-form-label", htmlFor: `${this.hostId}-city` }, this.receiverCityFieldLabel), h("salla-searchable-dropdown", { placeholder: this.selectCity, items: this.displayedCities, selectedItem: this.selectedCity, loading: this.loadingCities, searching: this.searchingCities, disabled: this.loadingCities || (this.isKSA && !this.selectedRegionId), required: true, inputId: `${this.hostId}-city`, searchQuery: this.citySearchQuery, clientSearch: !this.enableCityAjaxSearch, dropUp: true, keepParentScroll: true, onItemSelected: (e) => this.handleCitySelected(e.detail), onSearchInput: (e) => this.handleCitySearch(e.detail), onDropdownClosed: () => this.handleCityDropdownClosed() }), this.errors && this.errors['receiver.city_id'] ?
|
|
794
794
|
h("span", { class: "s-gifting-error" }, this.errors['receiver.city_id']) : ''), this.isPhysical() && this.cityNoticeText() &&
|
|
795
795
|
h("div", { class: this.step2ItemClass('s-gifting-info') }, h("span", { innerHTML: Alert }), h("span", null, this.cityNoticeText())), !this.isPhysical() && h("div", { class: this.step2ItemClass() }, h("label", { class: "s-gifting-schedule s-gifting-clickable", htmlFor: `schedule-${this.hostId}` }, h("input", { type: "checkbox", name: 'schedule', id: `schedule-${this.hostId}`, onChange: () => this.toggleCalendar(), class: "s-checkbox" }), h("span", { class: "s-form-label" }, " ", this.sendLater, " "))), h("div", { class: this.getCalendarClasses(), ref: (el) => this.calendarFormGroup = el }, h("label", { class: "s-form-label" }, this.selectSendDateAndTime), h("salla-datetime-picker", { value: this.deliveryDate, placeholder: this.selectSendDateAndTime, "enable-time": true, "date-format": "Y-m-d h:i K", onPicked: (event) => this.handleDateTimePicker(event) }), h("span", { class: "s-gifting-calendar-hint" }, this.canNotEditOrderAfterSelectDate)), h("div", { class: this.step2ItemClass('s-gifting-step-two-footer') }, !this.skipStep1() && h("a", { href: "#!", innerHTML: IconArrowLeft, onClick: (e) => this.goToStep1(e) }), h("salla-button", { onClick: () => this.submitForm(), color: "primary", width: 'wide' }, h("span", null, this.sendGift)))))
|
|
796
|
-
], h("slot", { key: '
|
|
796
|
+
], h("slot", { key: 'ba5b5cc6e2b20d756ed5149757b23239455939f7', name: "footer" })))
|
|
797
797
|
];
|
|
798
798
|
}
|
|
799
799
|
static get style() { return sallaGiftingCss; }
|
|
@@ -17,7 +17,7 @@ const SallaHook$1 = /*@__PURE__*/ proxyCustomElement(class SallaHook extends HTM
|
|
|
17
17
|
this.host.before(element);
|
|
18
18
|
}
|
|
19
19
|
render() {
|
|
20
|
-
return h(Host, { key: '
|
|
20
|
+
return h(Host, { key: '1acc6e7c4e3e9695576a820cbc68c539e81fa36e' });
|
|
21
21
|
}
|
|
22
22
|
async componentDidLoad() {
|
|
23
23
|
// Register this component for hooks system, already on it logic to run componentDidLoad trigger
|
|
@@ -25,7 +25,7 @@ const SallaListTile = /*@__PURE__*/ proxyCustomElement(class SallaListTile exten
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
28
|
-
return (h(Host, { key: '
|
|
28
|
+
return (h(Host, { key: 'b1b2a6bf65c40643d59f392e91cc76acaea5e89e' }, h("a", { key: '4b2026fd739b243a41bfc37fcb55bc07a1a54636', class: this.generateClass(), href: this.href || "#", target: this.target, "aria-label": "List Tile Link" }, h("div", { key: 'bbc7a7133da0e471ad92a5466e9ec0481d74cdd7', class: "s-list-tile-item-icon" }, h("slot", { key: 'e4e338854bfc7e6843c4b87f419c9aa59970c77b', name: 'icon' })), h("div", { key: '1b7b2e0a65193be521cdf6cccc314c83f853216d', class: "s-list-tile-item-content" }, h("div", { key: '4e6a178d219827b1feef394ea5564769bf11ded2', class: "s-list-tile-item-title" }, h("slot", { key: '75b036812aca3e00162fc8c40459b67d4db2cc6f', name: 'title' })), h("div", { key: 'ab0959a43214ae0eb4cf092ea3738c71ed987709', class: "s-list-tile-item-subtitle" }, h("slot", { key: 'e13f66fb2a0e1c5ab2a9081c808973c9f9ecca45', name: "subtitle" }))), h("div", { key: '78c7542367a41a1f8bc74bca73d2581f5c0b7bfd', class: "s-list-tile-item-action" }, h("slot", { key: '14c8c0f31d29855d743b52f82d52a3bed300b25f', name: 'action' })))));
|
|
29
29
|
}
|
|
30
30
|
static get style() { return sallaListTileCss; }
|
|
31
31
|
}, [4, "salla-list-tile", {
|
|
@@ -27,7 +27,7 @@ const SallaLoading = /*@__PURE__*/ proxyCustomElement(class SallaLoading extends
|
|
|
27
27
|
this.bgColor = "#e5e7eb";
|
|
28
28
|
}
|
|
29
29
|
render() {
|
|
30
|
-
return (h(Host, { key: '
|
|
30
|
+
return (h(Host, { key: '0f3796a2a8f9610f40e20eb01e4d60fb56e11a03', class: "s-loading-container" }, h("svg", { key: 'd9d98cfa05e5c7d188237a0a4833c4cd13c2855c', "aria-hidden": "true", style: { width: `${this.size}px`, height: `${this.size}px`, fill: this.color, color: this.bgColor }, class: "s-loading", viewBox: "0 0 100 101", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '75ea4d6f86456c86249dab53f3e18d21cc0380ef', d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z", fill: "currentColor" }), h("path", { key: '8bfd0b7ea965749ed9456742f36d2ffa28cff9f3', d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z", fill: "currentFill" }))));
|
|
31
31
|
}
|
|
32
32
|
static get style() { return sallaLoadingCss; }
|
|
33
33
|
}, [0, "salla-loading", {
|
|
@@ -246,7 +246,7 @@ const SallaLocalizationModal$1 = /*@__PURE__*/ proxyCustomElement(class SallaLoc
|
|
|
246
246
|
this.showTrigger
|
|
247
247
|
? h("button", { type: "button", onClick: () => this.open(), class: "s-localization-modal-trigger-btn" }, h("span", null, this.getLanguageName()), h("span", { class: "s-localization-modal-trigger-separator" }, "|"), " ", h("span", { innerHTML: this.getCurrencySymbol() }))
|
|
248
248
|
: '',
|
|
249
|
-
h("salla-modal", { key: '
|
|
249
|
+
h("salla-modal", { key: 'ef56534e6aadef517af7e5af725cd3b27afe8827', isLoading: true, class: "s-hidden", ref: modal => this.modal = modal, width: "xs" }, h("div", { key: '47072c8447350fb18a5bd960335f9a907ffcdae5', slot: 'loading' }, h("div", { key: '96cf1ac3b2dc9f67ae831393285f20935d0312fd', class: "s-localization-modal-skeleton" }, h("salla-skeleton", { key: '7c2ca11ecb4d3fd62ad4c74e5187acfa313d7dbf', width: '25%', height: '15px' }), h("div", { key: '96e7d7eadf414867716fd513b1daa3417b1a02c4', class: "s-localization-modal-skeleton-content" }, [...Array(4)].map(() => h("div", { class: "s-localization-modal-skeleton-item" }, h("div", { class: "s-localization-modal-skeleton-item-flex" }, h("salla-skeleton", { type: 'circle', height: '16px', width: '16px' }), h("salla-skeleton", { height: '10px', width: '100px' })), h("salla-skeleton", { height: '15px', width: '20px' })))), h("salla-skeleton", { key: '3e02caddbc6de924dc902516f74e93f488556545', width: '25%', height: '15px' }), h("div", { key: 'fd93fce5cd7ce64dfd356ea9f105f53368d7faf6', class: "s-localization-modal-skeleton-content" }, [...Array(4)].map(() => h("div", { class: "s-localization-modal-skeleton-item" }, h("div", { class: "s-localization-modal-skeleton-item-flex" }, h("salla-skeleton", { type: 'circle', height: '16px', width: '16px' }), h("salla-skeleton", { height: '10px', width: '100px' })), h("salla-skeleton", { height: '15px', width: '20px' })))), h("salla-skeleton", { key: '0a8a92e3a2d99c2188767f5065e4efdae26d21c1', height: '40px', width: '100%' }))), !!this.hasError ?
|
|
250
250
|
h("salla-placeholder", { alignment: "center" }, h("span", { slot: "description" }, this.errorMessage)) :
|
|
251
251
|
h("div", { class: "s-localization-modal-inner" }, this.languages.length > 1 ?
|
|
252
252
|
h("div", { class: "s-localization-modal-section" }, h("label", { class: "s-localization-modal-title" }, Salla.lang.get('common.titles.language')), h("div", { class: "s-localization-modal-section-inner" }, this.languages.length < 6 ?
|
|
@@ -34,9 +34,9 @@ const SallaLoyaltyExchangeProductCard = /*@__PURE__*/ proxyCustomElement(class S
|
|
|
34
34
|
}
|
|
35
35
|
render() {
|
|
36
36
|
const product = typeof this.product === 'string' ? JSON.parse(this.product) : this.product;
|
|
37
|
-
return (h("div", { key: '
|
|
37
|
+
return (h("div", { key: '1a430e79a1b3099353f4e9905930f083ff889def', class: "s-loyalty-exchange-card" }, this.hasCustomCard
|
|
38
38
|
? h("custom-salla-product-card", { product: product, hideAddBtn: true })
|
|
39
|
-
: h("salla-product-card", { "hide-add-btn": true, product: product }), h("div", { key: '
|
|
39
|
+
: h("salla-product-card", { "hide-add-btn": true, product: product }), h("div", { key: '8b75d06c112af988c149b374fdd3592cd27cb490', class: "s-loyalty-exchange-card-btn" }, h("salla-button", { key: 'b04dc80d5af75461a5d1f938c45bf156e4592e1e', fill: "outline", width: "wide", onClick: () => this.loyaltyProductExchange.emit({ productId: product.id }) }, salla.lang.get('pages.loyalty_program.redeem_reward')))));
|
|
40
40
|
}
|
|
41
41
|
static get style() { return sallaLoyaltyProgramCss; }
|
|
42
42
|
}, [0, "salla-loyalty-exchange-product-card", {
|