@perevorot/shop 3.0.17 → 3.0.19
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/api.js.map +1 -1
- package/dist/components/account/OrderItem.js.map +1 -1
- package/dist/components/account/User.js.map +1 -1
- package/dist/components/auth/Forget.js.map +1 -1
- package/dist/components/auth/Login.js.map +1 -1
- package/dist/components/auth/Reset.js.map +1 -1
- package/dist/components/auth/User.js.map +1 -1
- package/dist/components/shop/CodeCopy.js.map +1 -1
- package/dist/components/shop/Gallery.js.map +1 -1
- package/dist/components/shop/Notice.js.map +1 -1
- package/dist/components/shop/PromoProducts.js.map +1 -1
- package/dist/components/shop/Search.js.map +1 -1
- package/dist/components/shop/bundle/Bundle.js.map +1 -1
- package/dist/components/shop/bundle/BundleAdd.js.map +1 -1
- package/dist/components/shop/cart/Cart.js.map +1 -1
- package/dist/components/shop/cart/CartAdd.js +1 -1
- package/dist/components/shop/cart/CartAdd.js.map +1 -1
- package/dist/components/shop/cart/CartItem.js.map +1 -1
- package/dist/components/shop/cart/CartTrigger.js.map +1 -1
- package/dist/components/shop/compare/CompareAdd.js.map +1 -1
- package/dist/components/shop/compare/CompareDelete.js.map +1 -1
- package/dist/components/shop/compare/CompareDeleteAll.js.map +1 -1
- package/dist/components/shop/filters/FilterSearch.js.map +1 -1
- package/dist/components/shop/filters/Price.js.map +1 -1
- package/dist/components/shop/order/Checkout.js.map +1 -1
- package/dist/components/shop/order/CheckoutItem.js.map +1 -1
- package/dist/components/shop/order/OneClick.js.map +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingCourier.js.map +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.js.map +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaWarehouse.js.map +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingPickup.js.map +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingUkrposhtaWarehouse.js.map +1 -1
- package/dist/components/shop/reviews/Question.js.map +1 -1
- package/dist/components/shop/reviews/Review.js.map +1 -1
- package/dist/components/shop/viewed/Viewed.js.map +1 -1
- package/dist/components/shop/viewed/ViewedDelete.js.map +1 -1
- package/dist/components/shop/viewed/Viewer.js.map +1 -1
- package/dist/components/shop/wishlist/WishlistAdd.js.map +1 -1
- package/dist/components/shop/wishlist/WishlistDelete.js.map +1 -1
- package/dist/forms/FormCheckbox.js.map +1 -1
- package/dist/forms/FormCheckboxes.js.map +1 -1
- package/dist/forms/FormPassword.js.map +1 -1
- package/dist/forms/FormRadio.js.map +1 -1
- package/dist/forms/FormRating.js.map +1 -1
- package/dist/forms/FormSelect.js.map +1 -1
- package/dist/forms/FormSwitch.js.map +1 -1
- package/dist/forms/FormText.js.map +1 -1
- package/dist/forms/FormTextarea.js.map +1 -1
- package/dist/global.js.map +1 -1
- package/dist/store.js +1 -1
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cart.js","sources":["../../../../src/components/shop/cart/Cart.vue","../../../../src/components/shop/cart/Cart.vue?vue&type=template&id=603b9bfa&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\" v-bind:class=\"{ 'is-open': modal }\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a @click=\"checkout\" class=\"button is-link\" v-bind:class=\"{ 'is-disabled': isLoading }\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">{{ __('shop.cart.open') }}</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">{{ __('shop.cart.empty') }}</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <slot name=\"cart-title\" :quantity=\"quantity\">\n <div class=\"cart-title\">\n {{ __('shop.cart.title') }}\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\n </slot>\n <slot name=\"clear\" :clear=\"clear\" :quantity=\"quantity\"></slot>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\">\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps || {}\"></slot>\n </template>\n </cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n {{ __('shop.cart.total') }}\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"loyalty\" :pluralize=\"pluralize\" :items=\"items\"></slot>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">{{ __('shop.cart.go_checkout') }}</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">{{ __('shop.cart.cross') }}</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\" :data-code=\"item.code\" shop-product>\n <div class=\"name\">\n <a @click=\"goto(item.href)\" shop-product-name>{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\" shop-product-price></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg>\n <use xlink:href=\"#cart-alternate\" />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">{{ __('shop.cart.bundle') }}</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"__('shop.cart.bundle_amount') + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n//import cart from '../../../api/modules/cart';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const cartStorage = props.cartStorage;\n\n provide('cartStorage', cartStorage);\n\n const items = computed(() => store.getters[cartStorage + '/items']);\n const modal = computed(() => store.getters[cartStorage + '/modal']);\n const total = computed(() => store.getters[cartStorage + '/total']);\n const quantity = computed(() => store.getters[cartStorage + '/quantity']);\n\n const open = () => {\n store.commit(cartStorage + '/modal', modal.value ? null : 'cart');\n };\n\n const close = () => {\n store.commit(cartStorage + '/modal', null);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/clear', {\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(cartStorage + '/get', {\n cart: cartStorage,\n finally: () => { }\n });\n\n document.body.addEventListener('click', (event) => {\n if (modal.value && !event.target.closest('.cart')) {\n close();\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters[cartStorage + '/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 1,\n slidesPerGroup: 1,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n },\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters[cartStorage + '/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n const isLoading = ref(false);\n\n const checkout = () => {\n isLoading.value = true;\n window.location.href = $ziggy('shop.checkout');\n };\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext,\n checkout,\n isLoading,\n };\n }\n});\n</script>","<template>\n <div class=\"cart\" v-bind:class=\"{ 'is-open': modal }\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a @click=\"checkout\" class=\"button is-link\" v-bind:class=\"{ 'is-disabled': isLoading }\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">{{ __('shop.cart.open') }}</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">{{ __('shop.cart.empty') }}</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <slot name=\"cart-title\" :quantity=\"quantity\">\n <div class=\"cart-title\">\n {{ __('shop.cart.title') }}\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\n </slot>\n <slot name=\"clear\" :clear=\"clear\" :quantity=\"quantity\"></slot>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\">\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps || {}\"></slot>\n </template>\n </cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n {{ __('shop.cart.total') }}\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"loyalty\" :pluralize=\"pluralize\" :items=\"items\"></slot>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">{{ __('shop.cart.go_checkout') }}</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">{{ __('shop.cart.cross') }}</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\" :data-code=\"item.code\" shop-product>\n <div class=\"name\">\n <a @click=\"goto(item.href)\" shop-product-name>{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\" shop-product-price></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg>\n <use xlink:href=\"#cart-alternate\" />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">{{ __('shop.cart.bundle') }}</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"__('shop.cart.bundle_amount') + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n//import cart from '../../../api/modules/cart';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const cartStorage = props.cartStorage;\n\n provide('cartStorage', cartStorage);\n\n const items = computed(() => store.getters[cartStorage + '/items']);\n const modal = computed(() => store.getters[cartStorage + '/modal']);\n const total = computed(() => store.getters[cartStorage + '/total']);\n const quantity = computed(() => store.getters[cartStorage + '/quantity']);\n\n const open = () => {\n store.commit(cartStorage + '/modal', modal.value ? null : 'cart');\n };\n\n const close = () => {\n store.commit(cartStorage + '/modal', null);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/clear', {\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(cartStorage + '/get', {\n cart: cartStorage,\n finally: () => { }\n });\n\n document.body.addEventListener('click', (event) => {\n if (modal.value && !event.target.closest('.cart')) {\n close();\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters[cartStorage + '/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 1,\n slidesPerGroup: 1,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n },\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters[cartStorage + '/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n const isLoading = ref(false);\n\n const checkout = () => {\n isLoading.value = true;\n window.location.href = $ziggy('shop.checkout');\n };\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext,\n checkout,\n isLoading,\n };\n }\n});\n</script>"],"names":["script","defineComponent","name","props","isModal","type","Boolean","default","cartStorage","String","setup","store","useStore","loading","ref","provide","items","computed","getters","modal","total","quantity","close","commit","dispatch","cart","finally","document","body","addEventListener","event","value","target","closest","window","e","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","breakpoints","768","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","isLoading","open","clear","pluralize","goto","href","location","checkout","$ziggy","_hoisted_1","class","_hoisted_2","_createElementVNode","createElementVNode","aria-hidden","role","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_15","_hoisted_16","xlink:href","_hoisted_19","_hoisted_20","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_30","_hoisted_32","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_42","_hoisted_44","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_51","_hoisted_60","_hoisted_62","_hoisted_63","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_73","_hoisted_74","_hoisted_77","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_87","_hoisted_88","_hoisted_100","_hoisted_101","_hoisted_103","_hoisted_104","_hoisted_106","_hoisted_107","_hoisted_110","_hoisted_111","_hoisted_120","_hoisted_121","_hoisted_124","_createElementBlock","createElementBlock","_normalizeClass","is-open","_ctx","_renderSlot","renderSlot","$slots","onClick","apply","arguments","_hoisted_3","_createTextVNode","_hoisted_4","_hoisted_5","_openBlock","_hoisted_6","_toDisplayString","__","innerHTML","$filters","price","_hoisted_11","is-disabled","_hoisted_14","toDisplayString","is-active","textContent","openBlock","_hoisted_22","_Fragment","Fragment","_renderList","item","_createBlock","createBlock","_component_cart_item","id","_","fn","_withCtx","slotProps","_normalizeProps","_guardReactiveProps","createTextVNode","_hoisted_31","_hoisted_33","$event","no-thumb","image","src","_hoisted_39","_hoisted_41","data-code","code","shop-product","shop-product-name","_hoisted_45","priceOld","shop-product-price","_createVNode","_component_cart_add","is-simple","_hoisted_52","_hoisted_53","_hoisted_55","_hoisted_56","_hoisted_58","_hoisted_59","_hoisted_61","renderList","is-third","third","_hoisted_66","_hoisted_68","_hoisted_72","_hoisted_76","second","_hoisted_80","_hoisted_82","_hoisted_86","_hoisted_90","_hoisted_92","_hoisted_93","_hoisted_96","_hoisted_98","_hoisted_99","_hoisted_102","bundle","amount","_component_bundle_add","_hoisted_113","_hoisted_115","_hoisted_116","_hoisted_118","_hoisted_119","$env","locale","url","_hoisted_122","_hoisted_123","_component_viewed","slider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cart.js","sources":["../../../../src/components/shop/cart/Cart.vue","../../../../src/components/shop/cart/Cart.vue?vue&type=template&id=603b9bfa&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\" v-bind:class=\"{ 'is-open': modal }\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a @click=\"checkout\" class=\"button is-link\" v-bind:class=\"{ 'is-disabled': isLoading }\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">{{ __('shop.cart.open') }}</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">{{ __('shop.cart.empty') }}</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <slot name=\"cart-title\" :quantity=\"quantity\">\n <div class=\"cart-title\">\n {{ __('shop.cart.title') }}\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\n </slot>\n <slot name=\"clear\" :clear=\"clear\" :quantity=\"quantity\"></slot>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\">\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps || {}\"></slot>\n </template>\n </cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n {{ __('shop.cart.total') }}\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"loyalty\" :pluralize=\"pluralize\" :items=\"items\"></slot>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">{{ __('shop.cart.go_checkout') }}</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">{{ __('shop.cart.cross') }}</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\" :data-code=\"item.code\" shop-product>\n <div class=\"name\">\n <a @click=\"goto(item.href)\" shop-product-name>{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\" shop-product-price></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg>\n <use xlink:href=\"#cart-alternate\" />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">{{ __('shop.cart.bundle') }}</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"__('shop.cart.bundle_amount') + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n//import cart from '../../../api/modules/cart';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const cartStorage = props.cartStorage;\n\n provide('cartStorage', cartStorage);\n\n const items = computed(() => store.getters[cartStorage + '/items']);\n const modal = computed(() => store.getters[cartStorage + '/modal']);\n const total = computed(() => store.getters[cartStorage + '/total']);\n const quantity = computed(() => store.getters[cartStorage + '/quantity']);\n\n const open = () => {\n store.commit(cartStorage + '/modal', modal.value ? null : 'cart');\n };\n\n const close = () => {\n store.commit(cartStorage + '/modal', null);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/clear', {\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(cartStorage + '/get', {\n cart: cartStorage,\n finally: () => { }\n });\n\n document.body.addEventListener('click', (event) => {\n if (modal.value && !event.target.closest('.cart')) {\n close();\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters[cartStorage + '/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 1,\n slidesPerGroup: 1,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n },\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters[cartStorage + '/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n const isLoading = ref(false);\n\n const checkout = () => {\n isLoading.value = true;\n window.location.href = $ziggy('shop.checkout');\n };\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext,\n checkout,\n isLoading,\n };\n }\n});\n</script>","<template>\n <div class=\"cart\" v-bind:class=\"{ 'is-open': modal }\">\n <div class=\"dropdown is-right is-hoverable\">\n <div class=\"dropdown-trigger\">\n <slot :total=\"quantity\" :open=\"open\">\n <button class=\"button\" @click=\"open\">\n <span>\n <i class=\"fas fa-shopping-cart\"></i>\n {{ quantity }}\n </span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </slot>\n </div>\n <div class=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\" v-if=\"items.length\">\n <div class=\"dropdown-item\">\n <div class=\"columns\">\n <div class=\"column\">{{ __('shop.cart.total') }}</div>\n <div class=\"column has-text-right\" v-html=\"$filters.price(total)\"></div>\n </div>\n </div>\n <div class=\"dropdown-divider\"></div>\n <div class=\"dropdown-item has-text-centered\">\n <a @click=\"checkout\" class=\"button is-link\" v-bind:class=\"{ 'is-disabled': isLoading }\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">{{ __('shop.cart.open') }}</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">{{ __('shop.cart.empty') }}</div>\n </slot>\n </div>\n </div>\n </div>\n <div class=\"modal\" v-if=\"isModal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <slot name=\"cart-title\" :quantity=\"quantity\">\n <div class=\"cart-title\">\n {{ __('shop.cart.title') }}\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\n </slot>\n <slot name=\"clear\" :clear=\"clear\" :quantity=\"quantity\"></slot>\n <div class=\"items-wrapper\" v-if=\"items.length\">\n <div class=\"items\">\n <cart-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\">\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps || {}\"></slot>\n </template>\n </cart-item>\n </div>\n\n <div class=\"columns is-gapless is-vcentered main-actions\">\n <div class=\"column\">\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n {{ __('shop.cart.total') }}\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"loyalty\" :pluralize=\"pluralize\" :items=\"items\"></slot>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">{{ __('shop.cart.go_checkout') }}</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">{{ __('shop.cart.cross') }}</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in cross\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\" :data-code=\"item.code\" shop-product>\n <div class=\"name\">\n <a @click=\"goto(item.href)\" shop-product-name>{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"column is-narrow\">\n <div class=\"prices\">\n <div class=\"price-old\" v-if=\"item.priceOld\" v-html=\"$filters.price(item.priceOld)\"></div>\n <div class=\"price\" v-html=\"$filters.price(item.price)\" shop-product-price></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add :id=\"item.id\" :is-simple=\"true\">\n <svg>\n <use xlink:href=\"#cart-alternate\" />\n </svg>\n </cart-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"crossSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"crossSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div class=\"bundles\" v-if=\"bundles.length\">\n <div class=\"title\">{{ __('shop.cart.bundle') }}</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\" v-for=\"item in bundles\" v-bind:key=\"item.id\">\n <div class=\"columns is-gapless is-vcentered\" v-bind:class=\"{ 'is-third': item.third }\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.image }\">\n <img :src=\"item.image\" v-if=\"item.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.href)\">{{ item.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.second.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.second.image }\">\n <img :src=\"item.second.image\" v-if=\"item.second.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.second.href)\">{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.second.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <svg class=\"bundle-icon plus\">\n <use xlink:href=\"#bundle-plus\" />\n </svg>\n </div>\n <div class=\"column is-narrow\" v-if=\"item.third\">\n <a @click=\"goto(item.third.href)\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.third.image }\">\n <img :src=\"item.third.image\" v-if=\"item.third.image\" />\n <svg v-else>\n <use xlink:href=\"#logo\" />\n </svg>\n </figure>\n </a>\n </div>\n <div class=\"column\" v-if=\"item.third\">\n <div class=\"product\">\n <div class=\"name\">\n <a @click=\"goto(item.third.href)\">{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div class=\"price\" v-html=\"$filters.price(item.third.price)\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span class=\"total-old\" v-html=\"$filters.price(item.bundle.priceOld)\"></span>\n <span class=\"bundle-amount\" v-html=\"__('shop.cart.bundle_amount') + item.bundle.amount\"></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span class=\"total\" v-html=\"$filters.price(item.bundle.price)\"></span>\n <bundle-add :id=\"item.id\" :second=\"item.second.id\" v-bind:third=\"item.third ? item.third.id : null\"></bundle-add>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <svg class=\"swiper-nav prev\" ref=\"bundlesSliderPrev\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n <svg class=\"swiper-nav next\" ref=\"bundlesSliderNext\">\n <use xlink:href=\"#arrow-submenu\" />\n </svg>\n </div>\n </div>\n <div v-else class=\"empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <button class=\"button continue\" @click=\"close\">{{ __('shop.cart.continue') }}</button>\n <div class=\"viewed-wrapper\">\n <viewed :slider=\"true\"></viewed>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, defineComponent, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n//import cart from '../../../api/modules/cart';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const cartStorage = props.cartStorage;\n\n provide('cartStorage', cartStorage);\n\n const items = computed(() => store.getters[cartStorage + '/items']);\n const modal = computed(() => store.getters[cartStorage + '/modal']);\n const total = computed(() => store.getters[cartStorage + '/total']);\n const quantity = computed(() => store.getters[cartStorage + '/quantity']);\n\n const open = () => {\n store.commit(cartStorage + '/modal', modal.value ? null : 'cart');\n };\n\n const close = () => {\n store.commit(cartStorage + '/modal', null);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/clear', {\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(cartStorage + '/get', {\n cart: cartStorage,\n finally: () => { }\n });\n\n document.body.addEventListener('click', (event) => {\n if (modal.value && !event.target.closest('.cart')) {\n close();\n }\n });\n\n window.addEventListener('keyup', (e) => {\n if (modal.value && e.key === 'Escape') {\n close();\n }\n });\n\n const goto = (href) => {\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.location.href = href;\n };\n\n let crossSwiper;\n const crossSlider = ref(null);\n const crossSliderNext = ref(null);\n const crossSliderPrev = ref(null);\n\n const cross = computed(() => {\n const cross = store.getters[cartStorage + '/cross'];\n\n if (crossSlider.value) {\n if (crossSwiper) {\n crossSwiper.destroy();\n }\n\n if (cross.length) {\n crossSwiper = new Swiper(crossSlider.value, {\n slidesPerView: 1,\n slidesPerGroup: 1,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n },\n spaceBetween: 0,\n allowTouchMove: true,\n modules: [Navigation],\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: crossSliderNext.value,\n prevEl: crossSliderPrev.value\n }\n });\n }\n }\n\n return cross;\n });\n\n let bundlesSwiper;\n const bundlesSlider = ref(null);\n const bundlesSliderNext = ref(null);\n const bundlesSliderPrev = ref(null);\n\n const bundles = computed(() => {\n const bundles = store.getters[cartStorage + '/bundles'];\n\n if (bundlesSlider.value) {\n if (bundlesSwiper) {\n bundlesSwiper.destroy();\n }\n\n if (bundles.length) {\n bundlesSwiper = new Swiper(bundlesSlider.value, {\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: true,\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: bundlesSliderNext.value,\n prevEl: bundlesSliderPrev.value\n }\n });\n }\n }\n\n return bundles;\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit(cartStorage + '/modal', null);\n });\n\n const isLoading = ref(false);\n\n const checkout = () => {\n isLoading.value = true;\n window.location.href = $ziggy('shop.checkout');\n };\n\n return {\n loading,\n items,\n modal,\n total,\n quantity,\n open,\n close,\n clear,\n pluralize,\n goto,\n cross,\n crossSlider,\n crossSliderPrev,\n crossSliderNext,\n bundles,\n bundlesSlider,\n bundlesSliderPrev,\n bundlesSliderNext,\n checkout,\n isLoading,\n };\n }\n});\n</script>"],"names":["script","defineComponent","name","props","isModal","type","Boolean","default","cartStorage","String","setup","store","useStore","loading","ref","provide","items","computed","getters","modal","total","quantity","close","commit","dispatch","cart","finally","document","body","addEventListener","event","value","target","closest","window","e","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","breakpoints","768","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","isLoading","open","clear","pluralize","goto","href","location","checkout","$ziggy","_hoisted_1","class","_hoisted_2","_createElementVNode","createElementVNode","aria-hidden","role","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_15","_hoisted_16","xlink:href","_hoisted_19","_hoisted_20","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_30","_hoisted_32","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_42","_hoisted_44","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_51","_hoisted_60","_hoisted_62","_hoisted_63","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_73","_hoisted_74","_hoisted_77","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_87","_hoisted_88","_hoisted_100","_hoisted_101","_hoisted_103","_hoisted_104","_hoisted_106","_hoisted_107","_hoisted_110","_hoisted_111","_hoisted_120","_hoisted_121","_hoisted_124","_createElementBlock","createElementBlock","_normalizeClass","is-open","_ctx","_renderSlot","renderSlot","$slots","onClick","apply","arguments","_hoisted_3","_createTextVNode","_hoisted_4","_hoisted_5","_openBlock","_hoisted_6","_toDisplayString","__","innerHTML","$filters","price","_hoisted_11","is-disabled","_hoisted_14","toDisplayString","is-active","textContent","openBlock","_hoisted_22","_Fragment","Fragment","_renderList","item","_createBlock","createBlock","_component_cart_item","id","_","fn","_withCtx","slotProps","_normalizeProps","_guardReactiveProps","createTextVNode","_hoisted_31","_hoisted_33","$event","no-thumb","image","src","_hoisted_39","_hoisted_41","data-code","code","shop-product","shop-product-name","_hoisted_45","priceOld","shop-product-price","_createVNode","_component_cart_add","is-simple","_hoisted_52","_hoisted_53","_hoisted_55","_hoisted_56","_hoisted_58","_hoisted_59","_hoisted_61","renderList","is-third","third","_hoisted_66","_hoisted_68","_hoisted_72","_hoisted_76","second","_hoisted_80","_hoisted_82","_hoisted_86","_hoisted_90","_hoisted_92","_hoisted_93","_hoisted_96","_hoisted_98","_hoisted_99","_hoisted_102","bundle","amount","_component_bundle_add","_hoisted_113","_hoisted_115","_hoisted_116","_hoisted_118","_hoisted_119","$env","locale","url","_hoisted_122","_hoisted_123","_component_viewed","slider"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("vuex"),a=require("vue-toastification"),n={setup:function(){return{translate:window.__}}},
|
|
1
|
+
"use strict";var e=require("vue"),t=require("vuex"),a=require("vue-toastification"),n={setup:function(){return{translate:window.__}}},o={class:"shop-cart-success-message"};n.render=function(t,a,n,r,i,l){return e.openBlock(),e.createElementBlock("div",o,e.toDisplayString(r.translate("shop.cart.message")),1)};var r=a.useToast(),i={name:"cart-add",props:{id:Number,isChangeQuantity:{type:Boolean,default:!0},isAlreadyInCart:{type:Boolean,default:!0},isSimple:{type:Boolean,default:!1},isPlusMinus:{type:Boolean,default:!1},after:{type:String,default:"modal"},property:{type:String,default:null},code:{type:String,default:null},name:{type:String,default:null},price:{type:Number,default:null},cartStorage:{type:String,default:"cart"},maxQuantity:{default:null}},setup:function(a){var o=t.useStore(),i=e.ref(!1),l=e.ref(1),c=e.ref(null),u=a.cartStorage,s=e.computed((function(){return o.getters[u+"/productQuantity"](a.id)})),d=e.computed((function(){return null===a.maxQuantity?1/0:Math.max(0,a.maxQuantity-s.value)})),m=e.computed((function(){return null!==a.maxQuantity&&d.value<=0})),p=e.computed((function(){return null!==a.maxQuantity&&l.value>=d.value})),y=a.isAlreadyInCart,v=a.isChangeQuantity,f=a.isPlusMinus;a.isSimple&&(y=!1,v=!1,f=!1);return{button:c,loading:i,quantity:l,add:function(){var e,t,s,p,y;if(m.value)r(__("shop.fao.no_quantity",{q:d.value}),{type:"error"});else{i.value=!0;var v=[];if(c.value.closest(".product-main"))document.querySelectorAll("#options input[type=checkbox]:checked").forEach((function(e){v.push(parseInt(e.value))}));var f={};window.getTrackingIndexProductsList&&"function"==typeof window.getTrackingIndexProductsList&&(f=window.getTrackingIndexProductsList(c.value));var g=Math.max(1,l.value),h=c.value.closest("[shop-product]"),b=a.name?a.name:null===(e=h.querySelector("[shop-product-name]"))||void 0===e?void 0:e.textContent,k=a.price?a.price:null===(t=h.querySelector("[shop-product-price]"))||void 0===t?void 0:t.childNodes[0].nodeValue.replace(/ /g,""),_=a.property?a.property:null===(s=h.querySelector("[shop-product-property]"))||void 0===s?void 0:s.textContent,x=a.code?a.code:h.dataset.code,C=null===(p=h.querySelector("[shop-product-category]"))||void 0===p?void 0:p.textContent,S=null===(y=h.querySelector("[shop-product-brand]"))||void 0===y?void 0:y.textContent;o.dispatch(u+"/add",{cart:u,after:a.after,product:{id:a.id,quantity:g,options:v,extra:{trackingIndex:f}},finally:function(){(i.value=!1,l.value=1,"message"==a.after)&&r({component:n},{type:"success-cart"})},callback:function(){var e={ecommerce:{currency:"UAH",value:parseFloat(k)*g,items:[{item_name:b,item_id:x,price:parseFloat(k),quantity:g}]},event:"add_to_cart"};f.index&&(e.ecommerce.items[0].index=f.index),f.item_list_name&&(e.ecommerce.items[0].item_list_name=f.item_list_name),S&&(e.ecommerce.items[0].item_brand=S),C&&(-1!==C.indexOf("/")?C.split("/").forEach((function(t,a){e.ecommerce.items[0]["item_category"+(a?a+1:"")]=t.trim()})):e.ecommerce.items[0].item_category=C),_&&(e.ecommerce.items[0].item_variant=_),$env.debug.ecommerce&&console.log(e),!$env.debug.ecommerce&&window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(e))}})}},remove:function(){i.value=!0,o.dispatch(u+"/remove",{id:a.id,cart:u,finally:function(){i.value=!1}})},cart:s,increase:function(){p.value?r(__("shop.fao.no_quantity",{q:d.value}),{type:"error"}):l.value++},decrease:function(){l.value>1&&l.value--},isAlreadyInCart:y,isChangeQuantity:v,isPlusMinus:f,isDisabledByStock:m,isIncreaseLimited:p}}},l={class:"cart-add",ref:"button"},c={class:"columns"},u={key:0,class:"column"},s={class:"cart-change-quantity"},d=["disabled"],m=["disabled"],p=["disabled"],y={class:"column is-narrow"},v=["disabled"],f=e.createElementVNode("svg",{class:"icon cart"},[e.createElementVNode("use",{"xlink:href":"#cart-add"})],-1),g={class:"cart-add-button-label"},h={key:0},b=e.createElementVNode("br",null,null,-1),k=["disabled","textContent"];i.render=function(t,a,n,o,r,i){return e.openBlock(),e.createElementBlock("div",l,[e.createElementVNode("div",c,[t.$env.shop.isCustomQuantity&&o.isChangeQuantity?(e.openBlock(),e.createElementBlock("div",u,[e.createElementVNode("div",s,[o.isPlusMinus?(e.openBlock(),e.createElementBlock("button",{key:0,class:"button is-small decrease",onClick:a[0]||(a[0]=function(){return o.decrease&&o.decrease.apply(o,arguments)}),disabled:o.loading||1==o.quantity},"-",8,d)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("input",{class:"input is-small",type:"number",min:"1","onUpdate:modelValue":a[1]||(a[1]=function(e){return o.quantity=e}),disabled:o.loading},null,8,m),[[e.vModelText,o.quantity]]),o.isPlusMinus?(e.openBlock(),e.createElementBlock("button",{key:1,class:"button is-small increase",onClick:a[2]||(a[2]=function(){return o.increase&&o.increase.apply(o,arguments)}),disabled:o.loading,style:e.normalizeStyle(o.isIncreaseLimited?"opacity: 0.5;cursor: not-allowed;pointer-events: auto;":null)},"+",12,p)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",y,[e.createElementVNode("button",{class:"button is-link is-small",onClick:a[3]||(a[3]=function(){return o.add&&o.add.apply(o,arguments)}),disabled:o.loading,style:e.normalizeStyle(o.isIncreaseLimited?"opacity: 0.5;cursor: not-allowed;pointer-events: auto;":null)},[e.renderSlot(t.$slots,"default",{label:t.__("shop.cart.add")},(function(){return[f,e.createElementVNode("span",g,e.toDisplayString(t.__("shop.cart.add")),1)]}))],12,v)])]),t.$env.shop.isAlreadyInCart&&o.isAlreadyInCart&&o.cart>0?(e.openBlock(),e.createElementBlock("div",h,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.already",{quantity:o.cart}))+" ",1),b,e.createElementVNode("a",{onClick:a[4]||(a[4]=e.withModifiers((function(){return o.remove&&o.remove.apply(o,arguments)}),["prevent"])),disabled:o.loading,textContent:e.toDisplayString(t.__("shop.cart.remove"))},null,8,k)])):e.createCommentVNode("v-if",!0)],512)},module.exports=i;
|
|
2
2
|
//# sourceMappingURL=CartAdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartAdd.js","sources":["../../../../src/components/shop/cart/SuccessMessage.vue","../../../../src/components/shop/cart/SuccessMessage.vue?vue&type=template&id=75a41ddb&lang.js","../../../../src/components/shop/cart/CartAdd.vue","../../../../src/components/shop/cart/CartAdd.vue?vue&type=template&id=24a33c02&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n },\n property: {\n type: String,\n default: null\n },\n code: {\n type: String,\n default: null\n },\n name: {\n type: String,\n default: null\n },\n price: {\n type: Number,\n default: null\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n const cartStorage = props.cartStorage;\n\n const cart = computed(() => store.getters[cartStorage + '/productQuantity'](props.id));\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n let trackingIndex = {};\n\n if (window.getTrackingIndexProductsList && typeof window.getTrackingIndexProductsList === 'function') {\n trackingIndex = window.getTrackingIndexProductsList(button.value);\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = props.name ? props.name : product.querySelector('[shop-product-name]')?.textContent;\n const price = props.price ? props.price : product.querySelector('[shop-product-price]')?.childNodes[0].nodeValue.replace(/ /g, '');\n const property = props.property ? props.property : product.querySelector('[shop-product-property]')?.textContent;\n const code = props.code ? props.code : product.dataset.code;\n const category = product.querySelector('[shop-product-category]')?.textContent;\n const brand = product.querySelector('[shop-product-brand]')?.textContent;\n\n store.dispatch(cartStorage + '/add', {\n cart: cartStorage,\n after: props.after,\n product: {\n id: props.id,\n quantity: q,\n options: options,\n extra: {\n trackingIndex: trackingIndex\n }\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n },\n callback: () => {\n const object = {\n ecommerce: {\n currency: 'UAH',\n value: parseFloat(price) * q,\n items: [\n {\n item_name: name,\n item_id: code,\n price: parseFloat(price),\n quantity: q,\n }\n ]\n },\n event: 'add_to_cart'\n };\n\n if (trackingIndex.index) {\n object.ecommerce.items[0].index = trackingIndex.index;\n }\n\n if (trackingIndex.item_list_name) {\n object.ecommerce.items[0].item_list_name = trackingIndex.item_list_name;\n }\n\n if (brand) {\n object.ecommerce.items[0].item_brand = brand;\n }\n\n if (category) {\n if (category.indexOf('/') !== -1) {\n category.split('/').forEach((segment, index) => {\n object.ecommerce.items[0]['item_category' + (index ? index + 1 : '')] = segment.trim();\n });\n } else {\n object.ecommerce.items[0].item_category = category;\n }\n }\n\n if (property) {\n object.ecommerce.items[0].item_variant = property;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/remove', {\n id: props.id,\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus\n };\n }\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n },\n property: {\n type: String,\n default: null\n },\n code: {\n type: String,\n default: null\n },\n name: {\n type: String,\n default: null\n },\n price: {\n type: Number,\n default: null\n },\n cartStorage: {\n type: String,\n default: 'cart'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n const cartStorage = props.cartStorage;\n\n const cart = computed(() => store.getters[cartStorage + '/productQuantity'](props.id));\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n let trackingIndex = {};\n\n if (window.getTrackingIndexProductsList && typeof window.getTrackingIndexProductsList === 'function') {\n trackingIndex = window.getTrackingIndexProductsList(button.value);\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = props.name ? props.name : product.querySelector('[shop-product-name]')?.textContent;\n const price = props.price ? props.price : product.querySelector('[shop-product-price]')?.childNodes[0].nodeValue.replace(/ /g, '');\n const property = props.property ? props.property : product.querySelector('[shop-product-property]')?.textContent;\n const code = props.code ? props.code : product.dataset.code;\n const category = product.querySelector('[shop-product-category]')?.textContent;\n const brand = product.querySelector('[shop-product-brand]')?.textContent;\n\n store.dispatch(cartStorage + '/add', {\n cart: cartStorage,\n after: props.after,\n product: {\n id: props.id,\n quantity: q,\n options: options,\n extra: {\n trackingIndex: trackingIndex\n }\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n },\n callback: () => {\n const object = {\n ecommerce: {\n currency: 'UAH',\n value: parseFloat(price) * q,\n items: [\n {\n item_name: name,\n item_id: code,\n price: parseFloat(price),\n quantity: q,\n }\n ]\n },\n event: 'add_to_cart'\n };\n\n if (trackingIndex.index) {\n object.ecommerce.items[0].index = trackingIndex.index;\n }\n\n if (trackingIndex.item_list_name) {\n object.ecommerce.items[0].item_list_name = trackingIndex.item_list_name;\n }\n\n if (brand) {\n object.ecommerce.items[0].item_brand = brand;\n }\n\n if (category) {\n if (category.indexOf('/') !== -1) {\n category.split('/').forEach((segment, index) => {\n object.ecommerce.items[0]['item_category' + (index ? index + 1 : '')] = segment.trim();\n });\n } else {\n object.ecommerce.items[0].item_category = category;\n }\n }\n\n if (property) {\n object.ecommerce.items[0].item_variant = property;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/remove', {\n id: props.id,\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus\n };\n }\n};\n</script>"],"names":["script$1","setup","translate","window","__","_hoisted_1","class","_createElementBlock","_toDisplayString","$setup","toast","useToast","script","name","props","id","Number","isChangeQuantity","type","Boolean","default","isAlreadyInCart","isSimple","isPlusMinus","after","String","property","code","price","cartStorage","store","useStore","loading","ref","quantity","button","cart","computed","getters","add","_product$querySelecto","_product$querySelecto2","_product$querySelecto3","_product$querySelecto4","_product$querySelecto5","value","options","closest","document","querySelectorAll","forEach","element","push","parseInt","trackingIndex","getTrackingIndexProductsList","q","Math","max","product","querySelector","textContent","childNodes","nodeValue","replace","dataset","category","brand","dispatch","extra","finally","component","SuccessMessage","callback","object","ecommerce","currency","parseFloat","items","item_name","item_id","event","index","item_list_name","item_brand","indexOf","split","segment","trim","item_category","item_variant","$env","debug","console","log","dataLayer","remove","increase","decrease","_hoisted_2","_hoisted_4","_hoisted_8","_createElementVNode","createElementVNode","xlink:href","_hoisted_11","_openBlock","openBlock","_ctx","shop","isCustomQuantity","createElementBlock","_hoisted_3","onClick","apply","arguments","disabled","_hoisted_5","min","$event","_hoisted_7","_renderSlot","renderSlot","$slots","label","_hoisted_10","_hoisted_12","_hoisted_13"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CartAdd.js","sources":["../../../../src/components/shop/cart/SuccessMessage.vue","../../../../src/components/shop/cart/SuccessMessage.vue?vue&type=template&id=75a41ddb&lang.js","../../../../src/components/shop/cart/CartAdd.vue","../../../../src/components/shop/cart/CartAdd.vue?vue&type=template&id=56f8efb9&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" :style=\"isIncreaseLimited ? 'opacity: 0.5;cursor: not-allowed;pointer-events: auto;' : null\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\" :style=\"isIncreaseLimited ? 'opacity: 0.5;cursor: not-allowed;pointer-events: auto;' : null\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n },\n property: {\n type: String,\n default: null\n },\n code: {\n type: String,\n default: null\n },\n name: {\n type: String,\n default: null\n },\n price: {\n type: Number,\n default: null\n },\n cartStorage: {\n type: String,\n default: 'cart'\n },\n maxQuantity: {\n default: null\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n const cartStorage = props.cartStorage;\n\n const cart = computed(() => store.getters[cartStorage + '/productQuantity'](props.id));\n\n const availableToAdd = computed(() => {\n if (props.maxQuantity === null) return Infinity;\n return Math.max(0, props.maxQuantity - cart.value);\n });\n\n const isDisabledByStock = computed(() => {\n if (props.maxQuantity === null) return false;\n return availableToAdd.value <= 0;\n });\n\n const isIncreaseLimited = computed(() => {\n if (props.maxQuantity === null) return false;\n return quantity.value >= availableToAdd.value;\n });\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n if (isDisabledByStock.value) {\n toast(__('shop.fao.no_quantity', { q: availableToAdd.value }), { type: 'error' });\n return;\n }\n\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n let trackingIndex = {};\n\n if (window.getTrackingIndexProductsList && typeof window.getTrackingIndexProductsList === 'function') {\n trackingIndex = window.getTrackingIndexProductsList(button.value);\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = props.name ? props.name : product.querySelector('[shop-product-name]')?.textContent;\n const price = props.price ? props.price : product.querySelector('[shop-product-price]')?.childNodes[0].nodeValue.replace(/ /g, '');\n const property = props.property ? props.property : product.querySelector('[shop-product-property]')?.textContent;\n const code = props.code ? props.code : product.dataset.code;\n const category = product.querySelector('[shop-product-category]')?.textContent;\n const brand = product.querySelector('[shop-product-brand]')?.textContent;\n\n store.dispatch(cartStorage + '/add', {\n cart: cartStorage,\n after: props.after,\n product: {\n id: props.id,\n quantity: q,\n options: options,\n extra: {\n trackingIndex: trackingIndex\n }\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n },\n callback: () => {\n const object = {\n ecommerce: {\n currency: 'UAH',\n value: parseFloat(price) * q,\n items: [\n {\n item_name: name,\n item_id: code,\n price: parseFloat(price),\n quantity: q,\n }\n ]\n },\n event: 'add_to_cart'\n };\n\n if (trackingIndex.index) {\n object.ecommerce.items[0].index = trackingIndex.index;\n }\n\n if (trackingIndex.item_list_name) {\n object.ecommerce.items[0].item_list_name = trackingIndex.item_list_name;\n }\n\n if (brand) {\n object.ecommerce.items[0].item_brand = brand;\n }\n\n if (category) {\n if (category.indexOf('/') !== -1) {\n category.split('/').forEach((segment, index) => {\n object.ecommerce.items[0]['item_category' + (index ? index + 1 : '')] = segment.trim();\n });\n } else {\n object.ecommerce.items[0].item_category = category;\n }\n }\n\n if (property) {\n object.ecommerce.items[0].item_variant = property;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/remove', {\n id: props.id,\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n if (isIncreaseLimited.value) {\n toast(__('shop.fao.no_quantity', { q: availableToAdd.value }), { type: 'error' });\n return;\n }\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus,\n isDisabledByStock,\n isIncreaseLimited\n };\n }\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" :style=\"isIncreaseLimited ? 'opacity: 0.5;cursor: not-allowed;pointer-events: auto;' : null\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\" :style=\"isIncreaseLimited ? 'opacity: 0.5;cursor: not-allowed;pointer-events: auto;' : null\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n },\n property: {\n type: String,\n default: null\n },\n code: {\n type: String,\n default: null\n },\n name: {\n type: String,\n default: null\n },\n price: {\n type: Number,\n default: null\n },\n cartStorage: {\n type: String,\n default: 'cart'\n },\n maxQuantity: {\n default: null\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n const cartStorage = props.cartStorage;\n\n const cart = computed(() => store.getters[cartStorage + '/productQuantity'](props.id));\n\n const availableToAdd = computed(() => {\n if (props.maxQuantity === null) return Infinity;\n return Math.max(0, props.maxQuantity - cart.value);\n });\n\n const isDisabledByStock = computed(() => {\n if (props.maxQuantity === null) return false;\n return availableToAdd.value <= 0;\n });\n\n const isIncreaseLimited = computed(() => {\n if (props.maxQuantity === null) return false;\n return quantity.value >= availableToAdd.value;\n });\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n if (isDisabledByStock.value) {\n toast(__('shop.fao.no_quantity', { q: availableToAdd.value }), { type: 'error' });\n return;\n }\n\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n let trackingIndex = {};\n\n if (window.getTrackingIndexProductsList && typeof window.getTrackingIndexProductsList === 'function') {\n trackingIndex = window.getTrackingIndexProductsList(button.value);\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = props.name ? props.name : product.querySelector('[shop-product-name]')?.textContent;\n const price = props.price ? props.price : product.querySelector('[shop-product-price]')?.childNodes[0].nodeValue.replace(/ /g, '');\n const property = props.property ? props.property : product.querySelector('[shop-product-property]')?.textContent;\n const code = props.code ? props.code : product.dataset.code;\n const category = product.querySelector('[shop-product-category]')?.textContent;\n const brand = product.querySelector('[shop-product-brand]')?.textContent;\n\n store.dispatch(cartStorage + '/add', {\n cart: cartStorage,\n after: props.after,\n product: {\n id: props.id,\n quantity: q,\n options: options,\n extra: {\n trackingIndex: trackingIndex\n }\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n },\n callback: () => {\n const object = {\n ecommerce: {\n currency: 'UAH',\n value: parseFloat(price) * q,\n items: [\n {\n item_name: name,\n item_id: code,\n price: parseFloat(price),\n quantity: q,\n }\n ]\n },\n event: 'add_to_cart'\n };\n\n if (trackingIndex.index) {\n object.ecommerce.items[0].index = trackingIndex.index;\n }\n\n if (trackingIndex.item_list_name) {\n object.ecommerce.items[0].item_list_name = trackingIndex.item_list_name;\n }\n\n if (brand) {\n object.ecommerce.items[0].item_brand = brand;\n }\n\n if (category) {\n if (category.indexOf('/') !== -1) {\n category.split('/').forEach((segment, index) => {\n object.ecommerce.items[0]['item_category' + (index ? index + 1 : '')] = segment.trim();\n });\n } else {\n object.ecommerce.items[0].item_category = category;\n }\n }\n\n if (property) {\n object.ecommerce.items[0].item_variant = property;\n }\n\n if ($env.debug.ecommerce) {\n console.log(object);\n }\n\n if (!$env.debug.ecommerce && window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(cartStorage + '/remove', {\n id: props.id,\n cart: cartStorage,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n if (isIncreaseLimited.value) {\n toast(__('shop.fao.no_quantity', { q: availableToAdd.value }), { type: 'error' });\n return;\n }\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus,\n isDisabledByStock,\n isIncreaseLimited\n };\n }\n};\n</script>"],"names":["script$1","setup","translate","window","__","_hoisted_1","class","_createElementBlock","_toDisplayString","$setup","toast","useToast","script","name","props","id","Number","isChangeQuantity","type","Boolean","default","isAlreadyInCart","isSimple","isPlusMinus","after","String","property","code","price","cartStorage","maxQuantity","store","useStore","loading","ref","quantity","button","cart","computed","getters","availableToAdd","Infinity","Math","max","value","isDisabledByStock","isIncreaseLimited","add","_product$querySelecto","_product$querySelecto2","_product$querySelecto3","_product$querySelecto4","_product$querySelecto5","q","options","closest","document","querySelectorAll","forEach","element","push","parseInt","trackingIndex","getTrackingIndexProductsList","product","querySelector","textContent","childNodes","nodeValue","replace","dataset","category","brand","dispatch","extra","finally","component","SuccessMessage","callback","object","ecommerce","currency","parseFloat","items","item_name","item_id","event","index","item_list_name","item_brand","indexOf","split","segment","trim","item_category","item_variant","$env","debug","console","log","dataLayer","remove","increase","decrease","_hoisted_2","_hoisted_4","_hoisted_8","_createElementVNode","createElementVNode","xlink:href","_hoisted_11","_openBlock","openBlock","_ctx","shop","isCustomQuantity","createElementBlock","_hoisted_3","onClick","apply","arguments","disabled","_hoisted_5","min","$event","style","_hoisted_7","_renderSlot","renderSlot","$slots","label","_hoisted_10","_hoisted_12","_hoisted_13"],"mappings":"oFAMeA,EAAA,CACXC,MAAK,WAGD,MAAO,CACHC,UAHcC,OAAOC,MCPxBC,EAAA,CAAAC,MAAM,iFAAXC,qBAEK,MAFLF,EAEKG,EAAAA,gBADEC,EAASP,UAAA,sBAAA,ICkCpB,IAAMQ,EAAQC,EAAQA,WAEPC,EAAA,CACXC,KAAM,WACNC,MAAO,CACHC,GAAIC,OACJC,iBAAkB,CACdC,KAAMC,QACNC,SAAS,GAEbC,gBAAiB,CACbH,KAAMC,QACNC,SAAS,GAEbE,SAAU,CACNJ,KAAMC,QACNC,SAAS,GAEbG,YAAa,CACTL,KAAMC,QACNC,SAAS,GAEbI,MAAO,CACHN,KAAMO,OACNL,QAAS,SAEbM,SAAU,CACNR,KAAMO,OACNL,QAAS,MAEbO,KAAM,CACFT,KAAMO,OACNL,QAAS,MAEbP,KAAM,CACFK,KAAMO,OACNL,QAAS,MAEbQ,MAAO,CACHV,KAAMF,OACNI,QAAS,MAEbS,YAAa,CACTX,KAAMO,OACNL,QAAS,QAEbU,YAAa,CACTV,QAAS,OAGjBnB,MAAAA,SAAMa,GACF,IAAMiB,EAAQC,EAAAA,WACRC,EAAUC,OAAI,GACdC,EAAWD,MAAI,GACfE,EAASF,MAAI,MACbL,EAAcf,EAAMe,YAEpBQ,EAAOC,EAAAA,UAAS,WAAA,OAAMP,EAAMQ,QAAQV,EAAc,oBAAoBf,EAAMC,OAE5EyB,EAAiBF,EAAAA,UAAS,WAC5B,OAA0B,OAAtBxB,EAAMgB,YAA6BW,EAAAA,EAChCC,KAAKC,IAAI,EAAG7B,EAAMgB,YAAcO,EAAKO,UAG1CC,EAAoBP,EAAAA,UAAS,WAC/B,OAA0B,OAAtBxB,EAAMgB,aACHU,EAAeI,OAAS,KAG7BE,EAAoBR,EAAAA,UAAS,WAC/B,OAA0B,OAAtBxB,EAAMgB,aACHK,EAASS,OAASJ,EAAeI,SAGxCvB,EAAkBP,EAAMO,gBACxBJ,EAAmBH,EAAMG,iBACzBM,EAAcT,EAAMS,YAEpBT,EAAMQ,WACND,GAAkB,EAClBJ,GAAmB,EACnBM,GAAc,GAiJlB,MAAO,CACHa,OAAAA,EACAH,QAAAA,EACAE,SAAAA,EACAY,IAlJQ,WAAM,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACd,GAAIP,EAAkBD,MAClBlC,EAAMN,GAAG,uBAAwB,CAAEiD,EAAGb,EAAeI,QAAU,CAAE1B,KAAM,cAD3E,CAKAe,EAAQW,OAAQ,EAEhB,IAAIU,EAAU,GAEd,GAAIlB,EAAOQ,MAAMW,QAAQ,iBACEC,SAASC,iBAAiB,yCAElCC,SAAQ,SAACC,GACpBL,EAAQM,KAAKC,SAASF,EAAQf,WAItC,IAAIkB,EAAgB,GAEhB3D,OAAO4D,8BAA+E,mBAAxC5D,OAAO4D,+BACrDD,EAAgB3D,OAAO4D,6BAA6B3B,EAAOQ,QAG/D,IAAMS,EAAIX,KAAKC,IAAI,EAAGR,EAASS,OACzBoB,EAAU5B,EAAOQ,MAAMW,QAAQ,kBAC/B1C,EAAOC,EAAMD,KAAOC,EAAMD,aAAKmC,EAAEgB,EAAQC,cAAc,8BAAsB,IAAAjB,OAAA,EAA5CA,EAA8CkB,YAC/EtC,EAAQd,EAAMc,MAAQd,EAAMc,MAAqD,QAAjDqB,EAAIe,EAAQC,cAAc,+BAAtBhB,IAA6CA,OAA7CA,EAAAA,EAA+CkB,WAAW,GAAGC,UAAUC,QAAQ,KAAM,IACzH3C,EAAWZ,EAAMY,SAAWZ,EAAMY,iBAAOwB,EAAIc,EAAQC,cAAc,kCAA0B,IAAAf,OAAA,EAAhDA,EAAkDgB,YAC/FvC,EAAOb,EAAMa,KAAOb,EAAMa,KAAOqC,EAAQM,QAAQ3C,KACjD4C,EAA2DpB,QAApDA,EAAIa,EAAQC,cAAc,kCAAtBd,IAAgDA,OAAhDA,EAAAA,EAAkDe,YAC7DM,EAAqDpB,QAA/CA,EAAEY,EAAQC,cAAc,+BAAtBb,IAA6CA,OAA7CA,EAAAA,EAA+Cc,YAE7DnC,EAAM0C,SAAS5C,EAAc,OAAQ,CACjCQ,KAAMR,EACNL,MAAOV,EAAMU,MACbwC,QAAS,CACLjD,GAAID,EAAMC,GACVoB,SAAUkB,EACVC,QAASA,EACToB,MAAO,CACHZ,cAAeA,IAGvBa,QAAS,YACL1C,EAAQW,OAAQ,EAChBT,EAASS,MAAQ,EAEE,WAAf9B,EAAMU,QAKNd,EAJkB,CACdkE,UAAWC,GAGE,CACb3D,KAAM,kBAIlB4D,SAAU,WACN,IAAMC,EAAS,CACXC,UAAW,CACPC,SAAU,MACVrC,MAAOsC,WAAWtD,GAASyB,EAC3B8B,MAAO,CACH,CACIC,UAAWvE,EACXwE,QAAS1D,EACTC,MAAOsD,WAAWtD,GAClBO,SAAUkB,KAItBiC,MAAO,eAGPxB,EAAcyB,QACdR,EAAOC,UAAUG,MAAM,GAAGI,MAAQzB,EAAcyB,OAGhDzB,EAAc0B,iBACdT,EAAOC,UAAUG,MAAM,GAAGK,eAAiB1B,EAAc0B,gBAGzDhB,IACAO,EAAOC,UAAUG,MAAM,GAAGM,WAAajB,GAGvCD,KAC+B,IAA3BA,EAASmB,QAAQ,KACjBnB,EAASoB,MAAM,KAAKjC,SAAQ,SAACkC,EAASL,GAClCR,EAAOC,UAAUG,MAAM,GAAG,iBAAmBI,EAAQA,EAAQ,EAAI,KAAOK,EAAQC,UAGpFd,EAAOC,UAAUG,MAAM,GAAGW,cAAgBvB,GAI9C7C,IACAqD,EAAOC,UAAUG,MAAM,GAAGY,aAAerE,GAGzCsE,KAAKC,MAAMjB,WACXkB,QAAQC,IAAIpB,IAGXiB,KAAKC,MAAMjB,WAAa7E,OAAOiG,YAChCjG,OAAOiG,UAAUxC,KAAK,CAClBoB,UAAW,OAGf7E,OAAOiG,UAAUxC,KAAKmB,SAqClCsB,OA/BW,WACXpE,EAAQW,OAAQ,EAEhBb,EAAM0C,SAAS5C,EAAc,UAAW,CACpCd,GAAID,EAAMC,GACVsB,KAAMR,EACN8C,QAAS,WACL1C,EAAQW,OAAQ,MAyBxBP,KAAAA,EACAiE,SArBa,WACTxD,EAAkBF,MAClBlC,EAAMN,GAAG,uBAAwB,CAAEiD,EAAGb,EAAeI,QAAU,CAAE1B,KAAM,UAG3EiB,EAASS,SAiBT2D,SAda,WACTpE,EAASS,MAAQ,GACjBT,EAASS,SAabvB,gBAAAA,EACAJ,iBAAAA,EACAM,YAAAA,EACAsB,kBAAAA,EACAC,kBAAAA,QClRHxC,MAAM,WAAW4B,IAAI,UACjBsE,EAAA,CAAAlG,MAAM,oBACFA,MAAM,UACFmG,EAAA,CAAAnG,MAAM,qEAMVoG,EAAA,CAAApG,MAAM,qCAGCqG,EAEKC,mBAAA,MAAA,CAFAtG,MAAM,aAAW,CAClBqG,EAA6BC,mBAAA,MAAA,CAAxBC,aAAW,mBAEdC,EAAA,CAAAxG,MAAM,qCASxBqG,EAAKC,mBAAA,KAAA,KAAA,MAAA,+DAxBb,OAAAG,EAAAC,YAAAzG,EAAAA,mBA2BK,MA3BLF,EA2BK,CA1BDsG,EAAAC,mBAoBK,MApBLJ,EAoBK,CAnByBS,EAAAjB,KAAKkB,KAAKC,kBAAoB1G,EAAgBQ,kBAAxE8F,EAAAA,YAAAxG,EAAA6G,mBAMK,MANLC,EAMK,CALDV,EAAAA,mBAIK,MAJLF,EAIK,CAHqGhG,EAAWc,2BAAjHhB,EAAAA,mBAA4H,SAAA,OAApHD,MAAM,2BAA4BgH,sCAAO7G,EAAQ8F,UAAA9F,EAAA8F,SAAAgB,MAAA9G,EAAA+G,aAAGC,SAAUhH,WAAkB,GAAPA,EAAO0B,UAA2B,IAAC,EAAAuF,qDACpHf,EAA4FC,mBAAA,QAAA,CAArFtG,MAAM,iBAAiBY,KAAK,SAASyG,IAAI,yDAAalH,EAAQ0B,SAAAyF,IAAGH,SAAUhH,EAAOwB,kCAA5BxB,EAAQ0B,YAC6G1B,EAAWc,2BAA7LhB,EAAwM6G,mBAAA,SAAA,OAAhM9G,MAAM,2BAA4BgH,sCAAO7G,EAAQ6F,UAAA7F,EAAA6F,SAAAiB,MAAA9G,EAAA+G,aAAGC,SAAUhH,EAAOwB,QAAG4F,uBAAOpH,EAAgBqC,kBAAA,yDAAA,OAAwF,IAAC,GAAAgF,yEAGxMnB,EAAAC,mBAWK,MAXLF,EAWK,CAVDC,EASQC,mBAAA,SAAA,CATAtG,MAAM,0BAA+BgH,sCAAO7G,EAAGsC,KAAAtC,EAAAsC,IAAAwE,MAAA9G,EAAA+G,aAAGC,SAAUhH,EAAOwB,QAAG4F,uBAAOpH,EAAkBqC,kBAAA,yDAAA,QACnGiF,EAOMC,WAAAf,EAAAgB,OAAA,UAAA,CAPCC,MAAOjB,EAAE7G,GAAA,mBAAhB,WAAA,MAOM,CANF+H,EAGAxB,qBAEM,OAFNG,EAEMtG,EAAAA,gBADCyG,EAAE7G,GAAA,kBAAA,kBAMd6G,EAAAjB,KAAKkB,KAAK7F,iBAAmBZ,EAAAY,iBAAmBZ,EAAG4B,KAAA,iBAA9D9B,EAIK6G,mBAAA,MAAAgB,EAAA,qCAHEnB,EAAE7G,GAAA,oBAAA,CAAA+B,SAAkC1B,EAAK4B,QAAI,IAChD,GAAAgG,EACA1B,EAAsFC,mBAAA,IAAA,CAA9EU,uDAAe7G,EAAM4F,QAAA5F,EAAA4F,OAAAkB,MAAA9G,EAAA+G,aAAA,CAAA,aAAGC,SAAUhH,EAAOwB,QAAEiC,YAAA1D,EAAAA,gBAAQyG,EAAE7G,GAAA"}
|