@perevorot/shop 2.0.157 → 2.0.159
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/app.js.map +1 -1
- package/dist/components/account/Account.js.map +1 -1
- package/dist/components/account/OrderItem.js.map +1 -1
- package/dist/components/account/Orders.js.map +1 -1
- package/dist/components/account/User.js +1 -1
- package/dist/components/account/User.js.map +1 -1
- package/dist/components/account/Viewed.js.map +1 -1
- package/dist/components/account/Wish.js.map +1 -1
- package/dist/components/auth/Confirm.js.map +1 -1
- package/dist/components/auth/Forget.js.map +1 -1
- package/dist/components/auth/Login.js +1 -1
- package/dist/components/auth/Login.js.map +1 -1
- package/dist/components/auth/Registration.js +1 -1
- package/dist/components/auth/Registration.js.map +1 -1
- package/dist/components/auth/Reset.js.map +1 -1
- package/dist/components/auth/User.js +1 -1
- package/dist/components/auth/User.js.map +1 -1
- package/dist/components/auth/UserTrigger.js.map +1 -1
- package/dist/components/shop/Catalog.js.map +1 -1
- package/dist/components/shop/CodeCopy.js +1 -1
- package/dist/components/shop/CodeCopy.js.map +1 -1
- package/dist/components/shop/Cross.js +1 -1
- package/dist/components/shop/Cross.js.map +1 -1
- package/dist/components/shop/FilterToggle.js +1 -1
- package/dist/components/shop/FilterToggle.js.map +1 -1
- package/dist/components/shop/Gallery.js +1 -1
- package/dist/components/shop/Gallery.js.map +1 -1
- package/dist/components/shop/Notice.js.map +1 -1
- package/dist/components/shop/Pagination.js.map +1 -1
- package/dist/components/shop/PromoProducts.js +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 +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 +1 -1
- package/dist/components/shop/cart/Cart.js.map +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/cart/SuccessMessage.js.map +1 -1
- package/dist/components/shop/compare/Compare.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/compare/CompareList.js.map +1 -1
- package/dist/components/shop/compare/Comparsion.js.map +1 -1
- package/dist/components/shop/compare/ComparsionModal.js.map +1 -1
- package/dist/components/shop/compare/SuccessMessage.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 +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 +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 +1 -1
- package/dist/components/shop/order/shipping/CheckoutShippingUkrposhtaWarehouse.js.map +1 -1
- package/dist/components/shop/order/shipping/OtherRecipient.js.map +1 -1
- package/dist/components/shop/reviews/Question.js +1 -1
- package/dist/components/shop/reviews/Question.js.map +1 -1
- package/dist/components/shop/reviews/Review.js +1 -1
- package/dist/components/shop/reviews/Review.js.map +1 -1
- package/dist/components/shop/viewed/Viewed.js +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/SuccessMessage.js.map +1 -1
- package/dist/components/shop/wishlist/Wishlist.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/FormSection.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/helpers.js +1 -1
- package/dist/helpers.js.map +1 -1
- package/dist/store.js +1 -1
- package/dist/store.js.map +1 -1
- package/dist/vuex.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleAdd.js","sources":["../../../../src/components/shop/bundle/BundleAdd.vue","../../../../src/components/shop/bundle/BundleAdd.vue?vue&type=template&id=cf71b1a8&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-bundle-add\">\n <button\n class=\"button is-link is-small\"\n v-on:click=\"add\"\n :disabled=\"loading\"\n v-text=\"__('shop.bundle.add')\"\n ></button>\n <div v-if=\"$env.shop.isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a\n v-on:click.prevent=\"remove\"\n :disabled=\"loading\"\n v-text=\"__('shop.cart.remove')\"\n ></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"BundleAdd\",\n props: {\n id: Number,\n second: Number,\n third: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const bundleId =\n props.id +\n \"-\" +\n props.second +\n (props.third ? \"-\" + props.third : \"\");\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](bundleId)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n\n const add = () => {\n loading.value = true;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: bundleId,\n quantity: 1,\n },\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: bundleId,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n return {\n loading,\n add,\n remove,\n cart,\n isAlreadyInCart,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-bundle-add\">\n <button\n class=\"button is-link is-small\"\n v-on:click=\"add\"\n :disabled=\"loading\"\n v-text=\"__('shop.bundle.add')\"\n ></button>\n <div v-if=\"$env.shop.isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a\n v-on:click.prevent=\"remove\"\n :disabled=\"loading\"\n v-text=\"__('shop.cart.remove')\"\n ></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"BundleAdd\",\n props: {\n id: Number,\n second: Number,\n third: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const bundleId =\n props.id +\n \"-\" +\n props.second +\n (props.third ? \"-\" + props.third : \"\");\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](bundleId)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n\n const add = () => {\n loading.value = true;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: bundleId,\n quantity: 1,\n },\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: bundleId,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n return {\n loading,\n add,\n remove,\n cart,\n isAlreadyInCart,\n };\n },\n};\n</script>"],"names":["name","props","id","Number","second","third","setup","loading","ref","store","useStore","bundleId","cart","computed","getters","isAlreadyInCart","add","value","dispatch","product","quantity","remove","_createElementVNode","
|
|
1
|
+
{"version":3,"file":"BundleAdd.js","sources":["../../../../src/components/shop/bundle/BundleAdd.vue","../../../../src/components/shop/bundle/BundleAdd.vue?vue&type=template&id=cf71b1a8&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-bundle-add\">\n <button\n class=\"button is-link is-small\"\n v-on:click=\"add\"\n :disabled=\"loading\"\n v-text=\"__('shop.bundle.add')\"\n ></button>\n <div v-if=\"$env.shop.isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a\n v-on:click.prevent=\"remove\"\n :disabled=\"loading\"\n v-text=\"__('shop.cart.remove')\"\n ></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"BundleAdd\",\n props: {\n id: Number,\n second: Number,\n third: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const bundleId =\n props.id +\n \"-\" +\n props.second +\n (props.third ? \"-\" + props.third : \"\");\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](bundleId)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n\n const add = () => {\n loading.value = true;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: bundleId,\n quantity: 1,\n },\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: bundleId,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n return {\n loading,\n add,\n remove,\n cart,\n isAlreadyInCart,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-bundle-add\">\n <button\n class=\"button is-link is-small\"\n v-on:click=\"add\"\n :disabled=\"loading\"\n v-text=\"__('shop.bundle.add')\"\n ></button>\n <div v-if=\"$env.shop.isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a\n v-on:click.prevent=\"remove\"\n :disabled=\"loading\"\n v-text=\"__('shop.cart.remove')\"\n ></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"BundleAdd\",\n props: {\n id: Number,\n second: Number,\n third: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const bundleId =\n props.id +\n \"-\" +\n props.second +\n (props.third ? \"-\" + props.third : \"\");\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](bundleId)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n\n const add = () => {\n loading.value = true;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: bundleId,\n quantity: 1,\n },\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: bundleId,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n return {\n loading,\n add,\n remove,\n cart,\n isAlreadyInCart,\n };\n },\n};\n</script>"],"names":["script","name","props","id","Number","second","third","setup","loading","ref","store","useStore","bundleId","cart","computed","getters","isAlreadyInCart","add","value","dispatch","product","quantity","finally","remove","_hoisted_1","class","_createElementVNode","createElementVNode","_openBlock","_createElementBlock","onClick","$setup","apply","arguments","disabled","textContent","_toDisplayString","_ctx","__","$env","shop","_hoisted_3","_hoisted_4"],"mappings":"oDAuBeA,EAAA,CACXC,KAAM,YACNC,MAAO,CACHC,GAAIC,OACJC,OAAQD,OACRE,MAAOF,QAEXG,MAAK,SAACL,GACF,IAAMM,EAAUC,OAAI,GACdC,EAAQC,EAAAA,WACRC,EACFV,EAAMC,GACN,IACAD,EAAMG,QACLH,EAAMI,MAAQ,IAAMJ,EAAMI,MAAQ,IAEjCO,EAAOC,EAAAA,UAAS,WAAA,OAClBJ,EAAMK,QAAQ,wBAAwBH,MAGtCI,EAAkBd,EAAMc,gBA2B5B,MAAO,CACHR,QAAAA,EACAS,IA3BQ,WACRT,EAAQU,OAAQ,EAEhBR,EAAMS,SAAS,WAAY,CACvBC,QAAS,CACLjB,GAAIS,EACJS,SAAU,GAEdC,QAAS,WACLd,EAAQU,OAAQ,MAmBxBK,OAdW,WACXf,EAAQU,OAAQ,EAEhBR,EAAMS,SAAS,cAAe,CAC1BhB,GAAIS,EACJU,QAAS,WACLd,EAAQU,OAAQ,MASxBL,KAAAA,EACAG,gBAAAA,KC1EHQ,EAAA,CAAAC,MAAM,4DASHC,EAAKC,mBAAA,KAAA,KAAA,MAAA,+DATb,OAAAC,EAAAA,YAAAC,qBAgBK,MAhBLL,EAgBK,CAfDE,EAKSC,mBAAA,SAAA,CAJLF,MAAM,0BACDK,sCAAOC,EAAGd,KAAAc,EAAAd,IAAAe,MAAAD,EAAAE,aACdC,SAAUH,EAAOvB,QAClB2B,YAAAC,EAAAA,gBAAQC,EAAEC,GAAA,+BAEHD,EAAAE,KAAKC,KAAKxB,iBAAmBe,EAAKlB,KAAA,iBAA7CgB,qBAQK,MAAAY,EAAA,qCAPEJ,EAAEC,GAAA,oBAAA,CAAAjB,SAAkCU,EAAKlB,QAAI,IAChD,GAAA6B,EACAhB,EAIIC,mBAAA,IAAA,CAHKG,uDAAeC,EAAMR,QAAAQ,EAAAR,OAAAS,MAAAD,EAAAE,aAAA,CAAA,aACzBC,SAAUH,EAAOvB,QAClB2B,YAAAC,EAAAA,gBAAQC,EAAEC,GAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("vuex"),n=require("@perevorot/shop/dist/helpers"),l=require("swiper");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=o(l),c=e.defineComponent({name:"cart",props:{isModal:{type:Boolean,default:!0},cartStorage:{type:String,default:"cart"}},setup:function(o){var c=t.useStore(),a=e.ref(!1),s=o.cartStorage;e.provide("cartStorage",s);var i=e.computed((function(){return c.getters[s+"/items"]})),d=e.computed((function(){return c.getters[s+"/modal"]})),u=e.computed((function(){return c.getters[s+"/total"]})),m=e.computed((function(){return c.getters[s+"/quantity"]})),p=function(){c.commit(s+"/modal",null)};c.dispatch(s+"/get",{cart:s,finally:function(){}}),document.body.addEventListener("click",(function(e){d.value&&!e.target.closest(".cart")&&p()})),window.addEventListener("keyup",(function(e){d.value&&"Escape"===e.key&&p()}));var v,E,k=e.ref(null),N=e.ref(null),V=e.ref(null),f=e.computed((function(){var e=c.getters[s+"/cross"];return k.value&&(v&&v.destroy(),e.length&&(v=new r.default(k.value,{slidesPerView:1,slidesPerGroup:1,breakpoints:{768:{slidesPerView:2,slidesPerGroup:2}},spaceBetween:0,allowTouchMove:!0,modules:[l.Navigation],mousewheel:{forceToAxis:!0},navigation:{nextEl:N.value,prevEl:V.value}}))),e})),g=e.ref(null),h=e.ref(null),y=e.ref(null),w=e.computed((function(){var e=c.getters[s+"/bundles"];return g.value&&(E&&E.destroy(),e.length&&(E=new r.default(g.value,{slidesPerView:1,spaceBetween:0,allowTouchMove:!0,mousewheel:{forceToAxis:!0},navigation:{nextEl:h.value,prevEl:y.value}}))),e}));window.addEventListener("beforeunload",(function(){c.commit(s+"/modal",null)})),window.addEventListener("pagehide",(function(){c.commit(s+"/modal",null)}));var B=e.ref(!1);return{loading:a,items:i,modal:d,total:u,quantity:m,open:function(){c.commit(s+"/modal",d.value?null:"cart")},close:p,clear:function(){a.value=!0,c.dispatch(s+"/clear",{cart:s,finally:function(){a.value=!1}})},pluralize:n.pluralize,goto:function(e){window.addEventListener("beforeunload",(function(){c.commit(s+"/modal",null)})),window.addEventListener("pagehide",(function(){c.commit(s+"/modal",null)})),window.location.href=e},cross:f,crossSlider:k,crossSliderPrev:V,crossSliderNext:N,bundles:w,bundlesSlider:g,bundlesSliderPrev:y,bundlesSliderNext:h,checkout:function(){B.value=!0,window.location.href=$ziggy("shop.checkout")},isLoading:B}}}),a={class:"dropdown is-right is-hoverable"},s={class:"dropdown-trigger"},i=e.createElementVNode("i",{class:"fas fa-shopping-cart"},null,-1),d=e.createElementVNode("span",{class:"icon is-small"},[e.createElementVNode("i",{class:"fas fa-angle-down","aria-hidden":"true"})],-1),u={class:"dropdown-menu",role:"menu"},m={key:0,class:"dropdown-content"},p={class:"dropdown-item"},v={class:"columns"},E={class:"column"},k=["innerHTML"],N=e.createElementVNode("div",{class:"dropdown-divider"},null,-1),V={class:"dropdown-item has-text-centered"},f={class:"dropdown-item has-text-centered"},g={key:1,class:"dropdown-content"},h={class:"dropdown-item"},y={class:"modal-content"},w=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],B={class:"box"},b={class:"cart-title"},C=["textContent"],S={key:0,class:"items-wrapper"},_={class:"items"},x={class:"columns is-gapless is-vcentered main-actions"},L={class:"column"},T={class:"column has-text-right"},M={class:"totals"},D={class:"title"},H=["innerHTML"],$={class:"column is-narrow"},q={key:0,class:"cross"},z={class:"title"},P={class:"swiper",ref:"crossSlider"},F={class:"swiper-wrapper"},O={class:"columns is-gapless"},A={class:"column is-narrow"},G=["onClick"],j=["src"],R={key:1},I=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],J={class:"column"},K=["data-code"],Q={class:"name"},U=["onClick"],W={class:"columns is-gapless is-vcentered"},X={class:"column is-narrow"},Y={class:"prices"},Z=["innerHTML"],ee=["innerHTML"],te={class:"column"},ne=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-alternate"})],-1),le={class:"swiper-nav prev",ref:"crossSliderPrev"},oe=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],re={class:"swiper-nav next",ref:"crossSliderNext"},ce=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ae={key:1,class:"bundles"},se={class:"title"},ie={class:"swiper",ref:"bundlesSlider"},de={class:"swiper-wrapper"},ue={class:"column is-narrow"},me=["onClick"],pe=["src"],ve={key:1},Ee=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],ke={class:"column"},Ne={class:"product"},Ve={class:"name"},fe=["onClick"],ge={class:"columns is-gapless is-vcentered"},he={class:"prices"},ye=["innerHTML"],we=e.createElementVNode("div",{class:"column is-narrow"},[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})])],-1),Be={class:"column is-narrow"},be=["onClick"],Ce=["src"],Se={key:1},_e=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],xe={class:"column"},Le={class:"product"},Te={class:"name"},Me=["onClick"],De={class:"columns is-gapless is-vcentered"},He={class:"prices"},$e=["innerHTML"],qe={key:0,class:"column is-narrow"},ze=[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1)],Pe={key:1,class:"column is-narrow"},Fe=["onClick"],Oe=["src"],Ae={key:1},Ge=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],je={key:2,class:"column"},Re={class:"product"},Ie={class:"name"},Je=["onClick"],Ke={class:"columns is-gapless is-vcentered"},Qe={class:"prices"},Ue=["innerHTML"],We={class:"columns is-vcentered"},Xe={class:"column"},Ye=["innerHTML"],Ze=["innerHTML"],et={class:"column"},tt={class:"is-flex is-align-items-center"},nt=["innerHTML"],lt={class:"swiper-nav prev",ref:"bundlesSliderPrev"},ot=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],rt={class:"swiper-nav next",ref:"bundlesSliderNext"},ct=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],at={key:1,class:"empty"},st={class:"title"},it={class:"message"},dt=["href"],ut=e.createElementVNode("br",null,null,-1),mt={class:"viewed-wrapper"};c.render=function(t,n,l,o,r,c){var pt=e.resolveComponent("cart-item"),vt=e.resolveComponent("cart-add"),Et=e.resolveComponent("bundle-add"),kt=e.resolveComponent("viewed");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["cart",{"is-open":t.modal}])},[e.createElementVNode("div",a,[e.createElementVNode("div",s,[e.renderSlot(t.$slots,"default",{total:t.quantity,open:t.open},(function(){return[e.createElementVNode("button",{class:"button",onClick:n[0]||(n[0]=function(){return t.open&&t.open.apply(t,arguments)})},[e.createElementVNode("span",null,[i,e.createTextVNode(" "+e.toDisplayString(t.quantity),1)]),d])]}))]),e.createElementVNode("div",u,[t.items.length?(e.openBlock(),e.createElementBlock("div",m,[e.createElementVNode("div",p,[e.createElementVNode("div",v,[e.createElementVNode("div",E,e.toDisplayString(t.__("shop.cart.total")),1),e.createElementVNode("div",{class:"column has-text-right",innerHTML:t.$filters.price(t.total)},null,8,k)])]),N,e.createElementVNode("div",V,[e.createElementVNode("a",{onClick:n[1]||(n[1]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:e.normalizeClass(["button is-link",{"is-disabled":t.isLoading}])},e.toDisplayString(t.__("shop.cart.checkout")),3)]),e.createElementVNode("div",f,[e.renderSlot(t.$slots,"open",{open:t.open},(function(){return[e.createElementVNode("a",{onClick:n[2]||(n[2]=function(){return t.open&&t.open.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.open")),1)]}))])])):(e.openBlock(),e.createElementBlock("div",g,[e.renderSlot(t.$slots,"empty",{},(function(){return[e.createElementVNode("div",h,e.toDisplayString(t.__("shop.cart.empty")),1)]}))]))])]),t.isModal?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal",{"is-active":t.modal}])},[e.createElementVNode("div",{class:"modal-background",onClick:n[3]||(n[3]=function(){return t.close&&t.close.apply(t,arguments)})}),e.createElementVNode("div",y,[e.createElementVNode("button",{class:"modal-close is-large",onClick:n[4]||(n[4]=function(){return t.close&&t.close.apply(t,arguments)})},w),e.createElementVNode("div",B,[e.renderSlot(t.$slots,"cart-title",{quantity:t.quantity},(function(){return[e.createElementVNode("div",b,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.title"))+" ",1),t.quantity?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,C)):e.createCommentVNode("v-if",!0)])]})),e.renderSlot(t.$slots,"clear",{clear:t.clear,quantity:t.quantity}),t.items.length?(e.openBlock(),e.createElementBlock("div",S,[e.createElementVNode("div",_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(n){return e.openBlock(),e.createBlock(pt,{key:n.id,item:n},e.createSlots({_:2},[e.renderList(t.$slots,(function(n,l){return{name:l,fn:e.withCtx((function(n){return[e.renderSlot(t.$slots,l,e.normalizeProps(e.guardReactiveProps(n||{})))]}))}}))]),1032,["item"])})),128))]),e.createElementVNode("div",x,[e.createElementVNode("div",L,[e.createElementVNode("button",{class:"button continue",onClick:n[5]||(n[5]=function(){return t.close&&t.close.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1)]),e.createElementVNode("div",T,[e.createElementVNode("div",M,[e.createElementVNode("div",D,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.total"))+" ",1),e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,H)])]),e.renderSlot(t.$slots,"loyalty",{pluralize:t.pluralize,items:t.items})]),e.createElementVNode("div",$,[e.createElementVNode("a",{onClick:n[6]||(n[6]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:"button is-link checkout"},e.toDisplayString(t.__("shop.cart.go_checkout")),1)])]),t.cross.length?(e.openBlock(),e.createElementBlock("div",q,[e.createElementVNode("div",z,e.toDisplayString(t.__("shop.cart.cross")),1),e.createElementVNode("div",P,[e.createElementVNode("div",F,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.cross,(function(n){return e.openBlock(),e.createElementBlock("div",{class:"swiper-slide",key:n.id},[e.createElementVNode("div",O,[e.createElementVNode("div",A,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!n.image}])},[n.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.image},null,8,j)):(e.openBlock(),e.createElementBlock("svg",R,I))],2)],8,G)]),e.createElementVNode("div",J,[e.createElementVNode("div",{class:"product","data-code":n.code,"shop-product":""},[e.createElementVNode("div",Q,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)},"shop-product-name":""},e.toDisplayString(n.name),9,U)]),e.createElementVNode("div",W,[e.createElementVNode("div",X,[e.createElementVNode("div",Y,[n.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(n.priceOld)},null,8,Z)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price),"shop-product-price":""},null,8,ee)])]),e.createElementVNode("div",te,[e.createVNode(vt,{id:n.id,"is-simple":!0},{default:e.withCtx((function(){return[ne]})),_:2},1032,["id"])])])],8,K)])])])})),128))]),(e.openBlock(),e.createElementBlock("svg",le,oe,512)),(e.openBlock(),e.createElementBlock("svg",re,ce,512))],512)])):e.createCommentVNode("v-if",!0),t.bundles.length?(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("div",se,e.toDisplayString(t.__("shop.cart.bundle")),1),e.createElementVNode("div",ie,[e.createElementVNode("div",de,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.bundles,(function(n){return e.openBlock(),e.createElementBlock("div",{class:"swiper-slide",key:n.id},[e.createElementVNode("div",{class:e.normalizeClass(["columns is-gapless is-vcentered",{"is-third":n.third}])},[e.createElementVNode("div",ue,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!n.image}])},[n.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.image},null,8,pe)):(e.openBlock(),e.createElementBlock("svg",ve,Ee))],2)],8,me)]),e.createElementVNode("div",ke,[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ve,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)}},e.toDisplayString(n.name),9,fe)]),e.createElementVNode("div",ge,[e.createElementVNode("div",he,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price)},null,8,ye)])])])]),we,e.createElementVNode("div",Be,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.second.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!n.second.image}])},[n.second.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.second.image},null,8,Ce)):(e.openBlock(),e.createElementBlock("svg",Se,_e))],2)],8,be)]),e.createElementVNode("div",xe,[e.createElementVNode("div",Le,[e.createElementVNode("div",Te,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.second.href)}},e.toDisplayString(n.second.name),9,Me)]),e.createElementVNode("div",De,[e.createElementVNode("div",He,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.second.price)},null,8,$e)])])])]),n.third?(e.openBlock(),e.createElementBlock("div",qe,ze)):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.third.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!n.third.image}])},[n.third.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.third.image},null,8,Oe)):(e.openBlock(),e.createElementBlock("svg",Ae,Ge))],2)],8,Fe)])):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",je,[e.createElementVNode("div",Re,[e.createElementVNode("div",Ie,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.third.href)}},e.toDisplayString(n.third.name),9,Je)]),e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.third.price)},null,8,Ue)])])])])):e.createCommentVNode("v-if",!0)],2),e.createElementVNode("div",We,[e.createElementVNode("div",Xe,[e.createElementVNode("span",{class:"total-old",innerHTML:t.$filters.price(n.bundle.priceOld)},null,8,Ye),e.createElementVNode("span",{class:"bundle-amount",innerHTML:t.__("shop.cart.bundle_amount")+n.bundle.amount},null,8,Ze)]),e.createElementVNode("div",et,[e.createElementVNode("div",tt,[e.createElementVNode("span",{class:"total",innerHTML:t.$filters.price(n.bundle.price)},null,8,nt),e.createVNode(Et,{id:n.id,second:n.second.id,third:n.third?n.third.id:null},null,8,["id","second","third"])])])])])})),128))])],512),(e.openBlock(),e.createElementBlock("svg",lt,ot,512)),(e.openBlock(),e.createElementBlock("svg",rt,ct,512))])):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock("div",at,[e.createElementVNode("div",st,e.toDisplayString(t.__("shop.cart.no_no")),1),e.createElementVNode("div",it,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_prop"))+" ",1),e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.no_home")),9,dt),e.createTextVNode(", "),ut,e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_search")),1)]),e.createElementVNode("button",{class:"button continue",onClick:n[7]||(n[7]=function(){return t.close&&t.close.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1),e.createElementVNode("div",mt,[e.createVNode(kt,{slider:!0})])]))])])],2)):e.createCommentVNode("v-if",!0)],2)},module.exports=c;
|
|
1
|
+
"use strict";var e=require("vue"),t=require("vuex"),l=require("@perevorot/shop/dist/helpers"),n=require("swiper"),o=require("swiper/modules");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=r(n),a=e.defineComponent({name:"cart",props:{isModal:{type:Boolean,default:!0},cartStorage:{type:String,default:"cart"}},setup:function(n){var r=t.useStore(),a=e.ref(!1),s=n.cartStorage;e.provide("cartStorage",s);var i=e.computed((function(){return r.getters[s+"/items"]})),d=e.computed((function(){return r.getters[s+"/modal"]})),u=e.computed((function(){return r.getters[s+"/total"]})),m=e.computed((function(){return r.getters[s+"/quantity"]})),p=function(){r.commit(s+"/modal",null)};r.dispatch(s+"/get",{cart:s,finally:function(){}}),document.body.addEventListener("click",(function(e){d.value&&!e.target.closest(".cart")&&p()})),window.addEventListener("keyup",(function(e){d.value&&"Escape"===e.key&&p()}));var v,E,k=e.ref(null),N=e.ref(null),V=e.ref(null),f=e.computed((function(){var e=r.getters[s+"/cross"];return k.value&&(v&&v.destroy(),e.length&&(v=new c.default(k.value,{slidesPerView:1,slidesPerGroup:1,breakpoints:{768:{slidesPerView:2,slidesPerGroup:2}},spaceBetween:0,allowTouchMove:!0,modules:[o.Navigation],mousewheel:{forceToAxis:!0},navigation:{nextEl:N.value,prevEl:V.value}}))),e})),g=e.ref(null),h=e.ref(null),y=e.ref(null),w=e.computed((function(){var e=r.getters[s+"/bundles"];return g.value&&(E&&E.destroy(),e.length&&(E=new c.default(g.value,{slidesPerView:1,spaceBetween:0,allowTouchMove:!0,mousewheel:{forceToAxis:!0},navigation:{nextEl:h.value,prevEl:y.value}}))),e}));window.addEventListener("beforeunload",(function(){r.commit(s+"/modal",null)})),window.addEventListener("pagehide",(function(){r.commit(s+"/modal",null)}));var B=e.ref(!1);return{loading:a,items:i,modal:d,total:u,quantity:m,open:function(){r.commit(s+"/modal",d.value?null:"cart")},close:p,clear:function(){a.value=!0,r.dispatch(s+"/clear",{cart:s,finally:function(){a.value=!1}})},pluralize:l.pluralize,goto:function(e){window.addEventListener("beforeunload",(function(){r.commit(s+"/modal",null)})),window.addEventListener("pagehide",(function(){r.commit(s+"/modal",null)})),window.location.href=e},cross:f,crossSlider:k,crossSliderPrev:V,crossSliderNext:N,bundles:w,bundlesSlider:g,bundlesSliderPrev:y,bundlesSliderNext:h,checkout:function(){B.value=!0,window.location.href=$ziggy("shop.checkout")},isLoading:B}}}),s={class:"dropdown is-right is-hoverable"},i={class:"dropdown-trigger"},d=e.createElementVNode("i",{class:"fas fa-shopping-cart"},null,-1),u=e.createElementVNode("span",{class:"icon is-small"},[e.createElementVNode("i",{class:"fas fa-angle-down","aria-hidden":"true"})],-1),m={class:"dropdown-menu",role:"menu"},p={key:0,class:"dropdown-content"},v={class:"dropdown-item"},E={class:"columns"},k={class:"column"},N=["innerHTML"],V=e.createElementVNode("div",{class:"dropdown-divider"},null,-1),f={class:"dropdown-item has-text-centered"},g={class:"dropdown-item has-text-centered"},h={key:1,class:"dropdown-content"},y={class:"dropdown-item"},w={class:"modal-content"},B=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],b={class:"box"},C={class:"cart-title"},S=["textContent"],_={key:0,class:"items-wrapper"},x={class:"items"},L={class:"columns is-gapless is-vcentered main-actions"},T={class:"column"},M={class:"column has-text-right"},D={class:"totals"},H={class:"title"},$=["innerHTML"],q={class:"column is-narrow"},z={key:0,class:"cross"},P={class:"title"},F={class:"swiper",ref:"crossSlider"},O={class:"swiper-wrapper"},A={class:"columns is-gapless"},G={class:"column is-narrow"},j=["onClick"],R=["src"],I={key:1},J=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],K={class:"column"},Q=["data-code"],U={class:"name"},W=["onClick"],X={class:"columns is-gapless is-vcentered"},Y={class:"column is-narrow"},Z={class:"prices"},ee=["innerHTML"],te=["innerHTML"],le={class:"column"},ne=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-alternate"})],-1),oe={class:"swiper-nav prev",ref:"crossSliderPrev"},re=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ce={class:"swiper-nav next",ref:"crossSliderNext"},ae=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],se={key:1,class:"bundles"},ie={class:"title"},de={class:"swiper",ref:"bundlesSlider"},ue={class:"swiper-wrapper"},me={class:"column is-narrow"},pe=["onClick"],ve=["src"],Ee={key:1},ke=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Ne={class:"column"},Ve={class:"product"},fe={class:"name"},ge=["onClick"],he={class:"columns is-gapless is-vcentered"},ye={class:"prices"},we=["innerHTML"],Be=e.createElementVNode("div",{class:"column is-narrow"},[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})])],-1),be={class:"column is-narrow"},Ce=["onClick"],Se=["src"],_e={key:1},xe=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Le={class:"column"},Te={class:"product"},Me={class:"name"},De=["onClick"],He={class:"columns is-gapless is-vcentered"},$e={class:"prices"},qe=["innerHTML"],ze={key:0,class:"column is-narrow"},Pe=[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1)],Fe={key:1,class:"column is-narrow"},Oe=["onClick"],Ae=["src"],Ge={key:1},je=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Re={key:2,class:"column"},Ie={class:"product"},Je={class:"name"},Ke=["onClick"],Qe={class:"columns is-gapless is-vcentered"},Ue={class:"prices"},We=["innerHTML"],Xe={class:"columns is-vcentered"},Ye={class:"column"},Ze=["innerHTML"],et=["innerHTML"],tt={class:"column"},lt={class:"is-flex is-align-items-center"},nt=["innerHTML"],ot={class:"swiper-nav prev",ref:"bundlesSliderPrev"},rt=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ct={class:"swiper-nav next",ref:"bundlesSliderNext"},at=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],st={key:1,class:"empty"},it={class:"title"},dt={class:"message"},ut=["href"],mt=e.createElementVNode("br",null,null,-1),pt={class:"viewed-wrapper"};a.render=function(t,l,n,o,r,c){var a=e.resolveComponent("cart-item"),vt=e.resolveComponent("cart-add"),Et=e.resolveComponent("bundle-add"),kt=e.resolveComponent("viewed");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["cart",{"is-open":t.modal}])},[e.createElementVNode("div",s,[e.createElementVNode("div",i,[e.renderSlot(t.$slots,"default",{total:t.quantity,open:t.open},(function(){return[e.createElementVNode("button",{class:"button",onClick:l[0]||(l[0]=function(){return t.open&&t.open.apply(t,arguments)})},[e.createElementVNode("span",null,[d,e.createTextVNode(" "+e.toDisplayString(t.quantity),1)]),u])]}))]),e.createElementVNode("div",m,[t.items.length?(e.openBlock(),e.createElementBlock("div",p,[e.createElementVNode("div",v,[e.createElementVNode("div",E,[e.createElementVNode("div",k,e.toDisplayString(t.__("shop.cart.total")),1),e.createElementVNode("div",{class:"column has-text-right",innerHTML:t.$filters.price(t.total)},null,8,N)])]),V,e.createElementVNode("div",f,[e.createElementVNode("a",{onClick:l[1]||(l[1]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:e.normalizeClass(["button is-link",{"is-disabled":t.isLoading}])},e.toDisplayString(t.__("shop.cart.checkout")),3)]),e.createElementVNode("div",g,[e.renderSlot(t.$slots,"open",{open:t.open},(function(){return[e.createElementVNode("a",{onClick:l[2]||(l[2]=function(){return t.open&&t.open.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.open")),1)]}))])])):(e.openBlock(),e.createElementBlock("div",h,[e.renderSlot(t.$slots,"empty",{},(function(){return[e.createElementVNode("div",y,e.toDisplayString(t.__("shop.cart.empty")),1)]}))]))])]),t.isModal?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal",{"is-active":t.modal}])},[e.createElementVNode("div",{class:"modal-background",onClick:l[3]||(l[3]=function(){return t.close&&t.close.apply(t,arguments)})}),e.createElementVNode("div",w,[e.createElementVNode("button",{class:"modal-close is-large",onClick:l[4]||(l[4]=function(){return t.close&&t.close.apply(t,arguments)})},B),e.createElementVNode("div",b,[e.renderSlot(t.$slots,"cart-title",{quantity:t.quantity},(function(){return[e.createElementVNode("div",C,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.title"))+" ",1),t.quantity?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,S)):e.createCommentVNode("v-if",!0)])]})),e.renderSlot(t.$slots,"clear",{clear:t.clear,quantity:t.quantity}),t.items.length?(e.openBlock(),e.createElementBlock("div",_,[e.createElementVNode("div",x,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(l){return e.openBlock(),e.createBlock(a,{key:l.id,item:l},e.createSlots({_:2},[e.renderList(t.$slots,(function(l,n){return{name:n,fn:e.withCtx((function(l){return[e.renderSlot(t.$slots,n,e.normalizeProps(e.guardReactiveProps(l||{})))]}))}}))]),1032,["item"])})),128))]),e.createElementVNode("div",L,[e.createElementVNode("div",T,[e.createElementVNode("button",{class:"button continue",onClick:l[5]||(l[5]=function(){return t.close&&t.close.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1)]),e.createElementVNode("div",M,[e.createElementVNode("div",D,[e.createElementVNode("div",H,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.total"))+" ",1),e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,$)])]),e.renderSlot(t.$slots,"loyalty",{pluralize:t.pluralize,items:t.items})]),e.createElementVNode("div",q,[e.createElementVNode("a",{onClick:l[6]||(l[6]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:"button is-link checkout"},e.toDisplayString(t.__("shop.cart.go_checkout")),1)])]),t.cross.length?(e.openBlock(),e.createElementBlock("div",z,[e.createElementVNode("div",P,e.toDisplayString(t.__("shop.cart.cross")),1),e.createElementVNode("div",F,[e.createElementVNode("div",O,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.cross,(function(l){return e.openBlock(),e.createElementBlock("div",{class:"swiper-slide",key:l.id},[e.createElementVNode("div",A,[e.createElementVNode("div",G,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!l.image}])},[l.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.image},null,8,R)):(e.openBlock(),e.createElementBlock("svg",I,J))],2)],8,j)]),e.createElementVNode("div",K,[e.createElementVNode("div",{class:"product","data-code":l.code,"shop-product":""},[e.createElementVNode("div",U,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.href)},"shop-product-name":""},e.toDisplayString(l.name),9,W)]),e.createElementVNode("div",X,[e.createElementVNode("div",Y,[e.createElementVNode("div",Z,[l.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(l.priceOld)},null,8,ee)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(l.price),"shop-product-price":""},null,8,te)])]),e.createElementVNode("div",le,[e.createVNode(vt,{id:l.id,"is-simple":!0},{default:e.withCtx((function(){return[ne]})),_:2},1032,["id"])])])],8,Q)])])])})),128))]),(e.openBlock(),e.createElementBlock("svg",oe,re,512)),(e.openBlock(),e.createElementBlock("svg",ce,ae,512))],512)])):e.createCommentVNode("v-if",!0),t.bundles.length?(e.openBlock(),e.createElementBlock("div",se,[e.createElementVNode("div",ie,e.toDisplayString(t.__("shop.cart.bundle")),1),e.createElementVNode("div",de,[e.createElementVNode("div",ue,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.bundles,(function(l){return e.openBlock(),e.createElementBlock("div",{class:"swiper-slide",key:l.id},[e.createElementVNode("div",{class:e.normalizeClass(["columns is-gapless is-vcentered",{"is-third":l.third}])},[e.createElementVNode("div",me,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!l.image}])},[l.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.image},null,8,ve)):(e.openBlock(),e.createElementBlock("svg",Ee,ke))],2)],8,pe)]),e.createElementVNode("div",Ne,[e.createElementVNode("div",Ve,[e.createElementVNode("div",fe,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.href)}},e.toDisplayString(l.name),9,ge)]),e.createElementVNode("div",he,[e.createElementVNode("div",ye,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(l.price)},null,8,we)])])])]),Be,e.createElementVNode("div",be,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.second.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!l.second.image}])},[l.second.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.second.image},null,8,Se)):(e.openBlock(),e.createElementBlock("svg",_e,xe))],2)],8,Ce)]),e.createElementVNode("div",Le,[e.createElementVNode("div",Te,[e.createElementVNode("div",Me,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.second.href)}},e.toDisplayString(l.second.name),9,De)]),e.createElementVNode("div",He,[e.createElementVNode("div",$e,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(l.second.price)},null,8,qe)])])])]),l.third?(e.openBlock(),e.createElementBlock("div",ze,Pe)):e.createCommentVNode("v-if",!0),l.third?(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.third.href)}},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!l.third.image}])},[l.third.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.third.image},null,8,Ae)):(e.openBlock(),e.createElementBlock("svg",Ge,je))],2)],8,Oe)])):e.createCommentVNode("v-if",!0),l.third?(e.openBlock(),e.createElementBlock("div",Re,[e.createElementVNode("div",Ie,[e.createElementVNode("div",Je,[e.createElementVNode("a",{onClick:function(e){return t.goto(l.third.href)}},e.toDisplayString(l.third.name),9,Ke)]),e.createElementVNode("div",Qe,[e.createElementVNode("div",Ue,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(l.third.price)},null,8,We)])])])])):e.createCommentVNode("v-if",!0)],2),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ye,[e.createElementVNode("span",{class:"total-old",innerHTML:t.$filters.price(l.bundle.priceOld)},null,8,Ze),e.createElementVNode("span",{class:"bundle-amount",innerHTML:t.__("shop.cart.bundle_amount")+l.bundle.amount},null,8,et)]),e.createElementVNode("div",tt,[e.createElementVNode("div",lt,[e.createElementVNode("span",{class:"total",innerHTML:t.$filters.price(l.bundle.price)},null,8,nt),e.createVNode(Et,{id:l.id,second:l.second.id,third:l.third?l.third.id:null},null,8,["id","second","third"])])])])])})),128))])],512),(e.openBlock(),e.createElementBlock("svg",ot,rt,512)),(e.openBlock(),e.createElementBlock("svg",ct,at,512))])):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock("div",st,[e.createElementVNode("div",it,e.toDisplayString(t.__("shop.cart.no_no")),1),e.createElementVNode("div",dt,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_prop"))+" ",1),e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.no_home")),9,ut),e.createTextVNode(", "),mt,e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_search")),1)]),e.createElementVNode("button",{class:"button continue",onClick:l[7]||(l[7]=function(){return t.close&&t.close.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1),e.createElementVNode("div",pt,[e.createVNode(kt,{slider:!0})])]))])])],2)):e.createCommentVNode("v-if",!0)],2)},module.exports=a;
|
|
2
2
|
//# sourceMappingURL=Cart.js.map
|
|
@@ -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":["defineComponent","name","props","isModal","type","Boolean","cartStorage","String","setup","store","useStore","loading","ref","provide","items","computed","getters","modal","total","quantity","close","commit","dispatch","cart","document","body","addEventListener","event","value","target","closest","window","e","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","breakpoints","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","isLoading","open","clear","pluralize","href","location","checkout","$ziggy","_createElementVNode","role","_createElementBlock","_ctx","_hoisted_1","_hoisted_2","_renderSlot","onClick","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","innerHTML","price","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_19","_hoisted_20","_toDisplayString","_hoisted_22","_hoisted_23","item","_createBlock","id","_","slotProps","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","image","src","_hoisted_42","code","_hoisted_44","_hoisted_46","_hoisted_47","_hoisted_48","priceOld","_hoisted_51","_createVNode","_hoisted_52","_hoisted_53","_hoisted_56","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_62","third","_hoisted_63","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_73","_hoisted_74","_hoisted_76","_hoisted_77","second","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_87","_hoisted_88","_hoisted_90","_hoisted_93","_hoisted_99","_hoisted_100","_hoisted_101","_hoisted_103","_hoisted_104","_hoisted_106","_hoisted_107","bundle","amount","_hoisted_110","_hoisted_111","_hoisted_113","_hoisted_116","_hoisted_119","_hoisted_120","_hoisted_121","locale","url","_hoisted_123","_hoisted_124","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=a966c292&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 from 'swiper';\nimport { Navigation } from 'swiper/modules';\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 from 'swiper';\nimport { Navigation } from 'swiper/modules';\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 +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":["setup","translate","window","__","_createElementBlock","_hoisted_1","$setup","toast","useToast","name","props","id","Number","isChangeQuantity","type","Boolean","isAlreadyInCart","isSimple","isPlusMinus","after","String","property","code","price","cartStorage","store","useStore","loading","ref","quantity","button","cart","computed","getters","add","value","options","closest","document","querySelectorAll","forEach","element","push","parseInt","trackingIndex","getTrackingIndexProductsList","q","Math","max","product","querySelector","_product$querySelecto","textContent","_product$querySelecto2","childNodes","nodeValue","replace","_product$querySelecto3","dataset","category","_product$querySelecto4","brand","_product$querySelecto5","dispatch","extra","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","_createElementVNode","_hoisted_2","_ctx","shop","isCustomQuantity","_hoisted_3","_hoisted_4","onClick","disabled","min","_hoisted_8","_renderSlot","label","_hoisted_10","_hoisted_11","_hoisted_13","_toDisplayString"],"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=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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"}
|