@perevorot/shop 2.0.19 → 2.0.23
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/components/shop/Notice.js +2 -0
- package/dist/components/shop/Notice.js.map +1 -0
- package/dist/components/shop/cart/Cart.js +1 -1
- package/dist/components/shop/cart/Cart.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/Viewer.js +1 -1
- package/dist/components/shop/viewed/Viewer.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=n(require("secure-ls")),o=e.defineComponent({name:"notice",props:{hash:String,isLight:Boolean,background:String},setup:function(n){var o=new t.default({isCompression:!1}),r=e.ref(o.get("notice")===n.hash);return{hidden:r,close:function(){o.set("notice",n.hash),r.value=!0}}}}),r=[e.createElementVNode("use",{"xlink:href":"#close"},null,-1)];o.render=function(n,t,o,i,l,s){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["container is-fluid extra-notice",{"is-light-text":n.isLight,"is-visible":!n.hidden}]),style:e.normalizeStyle({"background-color":n.background})},[e.renderSlot(n.$slots,"default"),(e.openBlock(),e.createElementBlock("svg",{class:"icon close",onClick:t[0]||(t[0]=function(){return n.close&&n.close.apply(n,arguments)})},r))],6)},module.exports=o;
|
|
2
|
+
//# sourceMappingURL=Notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Notice.js","sources":["../../../src/components/shop/Notice.vue","../../../src/components/shop/Notice.vue?vue&type=template&id=0a2ac48e&lang.js"],"sourcesContent":["<template>\n <div\n class=\"container is-fluid extra-notice\"\n v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\"\n v-bind:style=\"{ 'background-color': background }\"\n >\n <slot></slot>\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>","<template>\n <div\n class=\"container is-fluid extra-notice\"\n v-bind:class=\"{ 'is-light-text': isLight, 'is-visible': !hidden }\"\n v-bind:style=\"{ 'background-color': background }\"\n >\n <slot></slot>\n <svg class=\"icon close\" @click=\"close\">\n <use xlink:href=\"#close\" />\n </svg>\n </div>\n</template>\n<script>\nimport { ref, defineComponent } from \"vue\";\nimport SecureLS from 'secure-ls';\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"notice\",\n props: {\n hash: String,\n isLight: Boolean,\n background: String\n },\n setup(props) {\n const ls = new SecureLS({\n isCompression: false\n });\n\n const hidden = ref(ls.get('notice') === props.hash);\n\n const close = () => {\n ls.set('notice', props.hash);\n hidden.value = true;\n };\n\n return {\n hidden,\n close,\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","hash","String","isLight","Boolean","background","setup","ls","SecureLS","isCompression","hidden","ref","get","close","set","value","_createElementVNode","_createElementBlock","_ctx","style","_renderSlot","onClick"],"mappings":"0IAgB6BA,kBAAgB,CACzCC,KAAM,SACNC,MAAO,CACHC,KAAMC,OACNC,QAASC,QACTC,WAAYH,QAEhBI,eAAMN,OACIO,EAAK,IAAIC,UAAS,CACpBC,eAAe,IAGbC,EAASC,MAAIJ,EAAGK,IAAI,YAAcZ,EAAMC,YAOvC,CACHS,OAAAA,EACAG,MAPU,WACVN,EAAGO,IAAI,SAAUd,EAAMC,MACvBS,EAAOK,OAAQ,UCxBfC,yCAAgB,wEAPxBC,oDACU,mDAC2BC,wBAAwBA,YAClDC,2CAA6BD,iBAEpCE,gDACAH,kCAAW,aAAcI,sCAAOH"}
|
|
@@ -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 c=o(l),r=e.defineComponent({name:"cart",props:{isModal:{type:Boolean,default:!0}},setup:function(){var o=t.useStore(),r=e.ref(!1),a=e.computed((function(){return o.getters["cart/items"]})),s=e.computed((function(){return o.getters["cart/modal"]})),i=e.computed((function(){return o.getters["cart/total"]})),d=e.computed((function(){return o.getters["cart/quantity"]})),u=function(){o.commit("cart/modal",!1)};o.dispatch("cart/get",{finally:function(){}}),window.addEventListener("keyup",(function(e){s.value&&"Escape"===e.key&&u()}));var m,p,v=e.ref(null),E=e.ref(null),k=e.ref(null),N=e.computed((function(){var e=o.getters["cart/cross"];return v.value&&(m&&m.destroy(),e.length&&(m=new c.default(v.value,{slidesPerView:2,slidesPerGroup:2,spaceBetween:0,allowTouchMove:!0,modules:[l.Navigation],mousewheel:{forceToAxis:!0},navigation:{nextEl:E.value,prevEl:k.value}}))),e})),V=e.ref(null),f=e.ref(null),g=e.ref(null),h=e.computed((function(){var e=o.getters["cart/bundles"];return V.value&&(p&&p.destroy(),e.length&&(p=new c.default(V.value,{slidesPerView:1,spaceBetween:0,allowTouchMove:!0,mousewheel:{forceToAxis:!0},navigation:{nextEl:f.value,prevEl:g.value}}))),e}));window.addEventListener("beforeunload",(function(){o.commit("cart/modal",null)}));return{loading:r,items:a,modal:s,total:i,quantity:d,open:function(){o.commit("cart/modal",!0)},close:u,clear:function(){r.value=!0,o.dispatch("cart/clear",{finally:function(){r.value=!1}})},pluralize:n.pluralize,goto:function(e){window.addEventListener("beforeunload",(function(){o.commit("cart/modal",!1)})),window.location.href=e},cross:N,crossSlider:v,crossSliderPrev:k,crossSliderNext:E,bundles:h,bundlesSlider:V,bundlesSliderPrev:g,bundlesSliderNext:f,checkout:function(){var e=[];a.value.forEach((function(t){e.push({name:t.name,id:t.attributes.code,price:t.attributes.price,brand:t.attributes.brand,category:t.attributes.category,quantity:t.quantity})}));var t={event:"checkout",ecommerce:{checkout:{products:[e]}},eventCallback:function(){window.location.href=$ziggy("shop.checkout")}};window.dataLayer?(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(t)):window.location.href=$ziggy("shop.checkout")}}}}),a={class:"cart"},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"},w=e.createElementVNode("div",{class:"dropdown-item"},"Ваша корзина пуста",-1),B={class:"modal-content"},y=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],b={class:"box"},C={class:"cart-title"},x=e.createTextVNode(" Корзина "),T=["textContent"],L={key:0,class:"items-wrapper"},M={class:"items"},S={class:"columns is-gapless is-vcentered main-actions"},H={class:"column"},q={class:"column has-text-right"},$={class:"totals"},z={class:"title"},D=e.createTextVNode(" Итого: "),P=["innerHTML"],_={class:"column is-narrow"},F={key:0,class:"cross"},O=e.createElementVNode("div",{class:"title"},"С товарами из вашей корзины часто покупают",-1),A={class:"swiper",ref:"crossSlider"},j={class:"swiper-wrapper"},G={class:"columns is-gapless"},I={class:"column is-narrow"},J=["onClick"],K=["src"],Q={key:1},R=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],U={class:"column"},W=["data-code"],X={class:"name"},Y=["onClick"],Z=e.createTextVNode("!! "),ee={class:"columns is-gapless is-vcentered"},te={class:"column is-narrow"},ne={class:"prices"},le=["innerHTML"],oe=["innerHTML"],ce={class:"column"},re=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-alternate"})],-1),ae={class:"swiper-nav prev",ref:"crossSliderPrev"},se=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ie={class:"swiper-nav next",ref:"crossSliderNext"},de=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ue={key:1,class:"bundles"},me=e.createElementVNode("div",{class:"title"},"Вместе дешевле",-1),pe={class:"swiper",ref:"bundlesSlider"},ve={class:"swiper-wrapper"},Ee={class:"column is-narrow"},ke=["onClick"],Ne=["src"],Ve={key:1},fe=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],ge={class:"column"},he={class:"product"},we={class:"name"},Be=["onClick"],ye={class:"columns is-gapless is-vcentered"},be={class:"prices"},Ce=["innerHTML"],xe=e.createElementVNode("div",{class:"column is-narrow"},[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})])],-1),Te={class:"column is-narrow"},Le=["onClick"],Me=["src"],Se={key:1},He=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],qe={class:"column"},$e={class:"product"},ze={class:"name"},De=["onClick"],Pe={class:"columns is-gapless is-vcentered"},_e={class:"prices"},Fe=["innerHTML"],Oe={key:0,class:"column is-narrow"},Ae=[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1)],je={key:1,class:"column is-narrow"},Ge=["onClick"],Ie=["src"],Je={key:1},Ke=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Qe={key:2,class:"column"},Re={class:"product"},Ue={class:"name"},We=["onClick"],Xe={class:"columns is-gapless is-vcentered"},Ye={class:"prices"},Ze=["innerHTML"],et={class:"columns is-vcentered"},tt={class:"column"},nt=["innerHTML"],lt=["innerHTML"],ot={class:"column"},ct={class:"is-flex is-align-items-center"},rt=["innerHTML"],at={class:"swiper-nav prev",ref:"bundlesSliderPrev"},st=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],it={class:"swiper-nav next",ref:"bundlesSliderNext"},dt=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],ut={key:1,class:"empty"},mt=e.createElementVNode("div",{class:"title"},"В корзине пока что нет товаров",-1),pt={class:"message"},vt=e.createTextVNode(" Посмотрите предложения на "),Et=e.createTextVNode(", "),kt=e.createElementVNode("br",null,null,-1),Nt=e.createTextVNode("воспользуйтесь каталогом или поиском "),Vt={class:"viewed-wrapper"};r.render=function(t,n,l,o,c,r){var ft=e.resolveComponent("cart-item"),gt=e.resolveComponent("cart-add"),ht=e.resolveComponent("bundle-add"),wt=e.resolveComponent("viewed");return e.openBlock(),e.createElementBlock("div",a,[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:n[0]||(n[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:n[1]||(n[1]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:"button is-link"},e.toDisplayString(t.__("shop.cart.checkout")),1)]),e.createElementVNode("div",g,[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.openBlock(),e.createElementBlock("div",h,[e.renderSlot(t.$slots,"empty",{},(function(){return[w]}))]))])]),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",B,[e.createElementVNode("button",{class:"modal-close is-large",onClick:n[4]||(n[4]=function(){return t.close&&t.close.apply(t,arguments)})},y),e.createElementVNode("div",b,[e.createElementVNode("div",C,[x,t.quantity?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,T)):e.createCommentVNode("v-if",!0)]),t.items.length?(e.openBlock(),e.createElementBlock("div",L,[e.createElementVNode("div",M,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(ft,{key:t.id,item:t},null,8,["item"])})),128))]),e.createElementVNode("div",S,[e.createElementVNode("div",H,[e.createElementVNode("button",{class:"button continue",onClick:n[5]||(n[5]=function(){return t.close&&t.close.apply(t,arguments)})},"Продолжить покупки")]),e.createElementVNode("div",q,[e.createElementVNode("div",$,[e.createElementVNode("div",z,[D,e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,P)])])]),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"},"Оформить заказ")])]),t.cross.length?(e.openBlock(),e.createElementBlock("div",F,[O,e.createElementVNode("div",A,[e.createElementVNode("div",j,[(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",G,[e.createElementVNode("div",I,[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,K)):(e.openBlock(),e.createElementBlock("svg",Q,R))],2)],8,J)]),e.createElementVNode("div",U,[e.createElementVNode("div",{class:"product","data-code":n.code,"shop-product":""},[e.createElementVNode("div",X,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)},"shop-product-name":""},e.toDisplayString(n.name),9,Y),Z]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,[e.createElementVNode("div",ne,[n.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(n.priceOld)},null,8,le)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price),"shop-product-price":""},null,8,oe)])]),e.createElementVNode("div",ce,[e.createVNode(gt,{id:n.id,"is-simple":!0},{default:e.withCtx((function(){return[re]})),_:2},1032,["id"])])])],8,W)])])])})),128))]),(e.openBlock(),e.createElementBlock("svg",ae,se,512)),(e.openBlock(),e.createElementBlock("svg",ie,de,512))],512)])):e.createCommentVNode("v-if",!0),t.bundles.length?(e.openBlock(),e.createElementBlock("div",ue,[me,e.createElementVNode("div",pe,[e.createElementVNode("div",ve,[(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",Ee,[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,Ne)):(e.openBlock(),e.createElementBlock("svg",Ve,fe))],2)],8,ke)]),e.createElementVNode("div",ge,[e.createElementVNode("div",he,[e.createElementVNode("div",we,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)}},e.toDisplayString(n.name),9,Be)]),e.createElementVNode("div",ye,[e.createElementVNode("div",be,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price)},null,8,Ce)])])])]),xe,e.createElementVNode("div",Te,[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,Me)):(e.openBlock(),e.createElementBlock("svg",Se,He))],2)],8,Le)]),e.createElementVNode("div",qe,[e.createElementVNode("div",$e,[e.createElementVNode("div",ze,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.second.href)}},e.toDisplayString(n.second.name),9,De)]),e.createElementVNode("div",Pe,[e.createElementVNode("div",_e,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.second.price)},null,8,Fe)])])])]),n.third?(e.openBlock(),e.createElementBlock("div",Oe,Ae)):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",je,[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,Ie)):(e.openBlock(),e.createElementBlock("svg",Je,Ke))],2)],8,Ge)])):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",Qe,[e.createElementVNode("div",Re,[e.createElementVNode("div",Ue,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.third.href)}},e.toDisplayString(n.third.name),9,We)]),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ye,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.third.price)},null,8,Ze)])])])])):e.createCommentVNode("v-if",!0)],2),e.createElementVNode("div",et,[e.createElementVNode("div",tt,[e.createElementVNode("span",{class:"total-old",innerHTML:t.$filters.price(n.bundle.priceOld)},null,8,nt),e.createElementVNode("span",{class:"bundle-amount",innerHTML:"Выгода "+n.bundle.amount},null,8,lt)]),e.createElementVNode("div",ot,[e.createElementVNode("div",ct,[e.createElementVNode("span",{class:"total",innerHTML:t.$filters.price(n.bundle.price)},null,8,rt),e.createVNode(ht,{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",at,st,512)),(e.openBlock(),e.createElementBlock("svg",it,dt,512))])):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock("div",ut,[mt,e.createElementVNode("div",pt,[vt,e.createElementVNode("a",{onClick:n[7]||(n[7]=function(e){return t.goto(t.$env.locale.url+"/")})},"главной странице"),Et,kt,Nt]),e.createElementVNode("button",{class:"button continue",onClick:n[8]||(n[8]=function(){return t.close&&t.close.apply(t,arguments)})},"Продолжить покупки"),e.createElementVNode("div",Vt,[e.createVNode(wt,{slider:!0})])]))])])],2)):e.createCommentVNode("v-if",!0)])},module.exports=r;
|
|
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 c=o(l),r=e.defineComponent({name:"cart",props:{isModal:{type:Boolean,default:!0}},setup:function(){var o=t.useStore(),r=e.ref(!1),a=e.computed((function(){return o.getters["cart/items"]})),s=e.computed((function(){return o.getters["cart/modal"]})),i=e.computed((function(){return o.getters["cart/total"]})),d=e.computed((function(){return o.getters["cart/quantity"]})),u=function(){o.commit("cart/modal",!1)};o.dispatch("cart/get",{finally:function(){}}),window.addEventListener("keyup",(function(e){s.value&&"Escape"===e.key&&u()}));var m,p,v=e.ref(null),E=e.ref(null),k=e.ref(null),N=e.computed((function(){var e=o.getters["cart/cross"];return v.value&&(m&&m.destroy(),e.length&&(m=new c.default(v.value,{slidesPerView:2,slidesPerGroup:2,spaceBetween:0,allowTouchMove:!0,modules:[l.Navigation],mousewheel:{forceToAxis:!0},navigation:{nextEl:E.value,prevEl:k.value}}))),e})),V=e.ref(null),f=e.ref(null),g=e.ref(null),h=e.computed((function(){var e=o.getters["cart/bundles"];return V.value&&(p&&p.destroy(),e.length&&(p=new c.default(V.value,{slidesPerView:1,spaceBetween:0,allowTouchMove:!0,mousewheel:{forceToAxis:!0},navigation:{nextEl:f.value,prevEl:g.value}}))),e}));window.addEventListener("beforeunload",(function(){o.commit("cart/modal",null)}));return{loading:r,items:a,modal:s,total:i,quantity:d,open:function(){o.commit("cart/modal",!0)},close:u,clear:function(){r.value=!0,o.dispatch("cart/clear",{finally:function(){r.value=!1}})},pluralize:n.pluralize,goto:function(e){window.addEventListener("beforeunload",(function(){o.commit("cart/modal",!1)})),window.location.href=e},cross:N,crossSlider:v,crossSliderPrev:k,crossSliderNext:E,bundles:h,bundlesSlider:V,bundlesSliderPrev:g,bundlesSliderNext:f,checkout:function(){var e=[];a.value.forEach((function(t){e.push({name:t.name,id:t.attributes.code,price:t.attributes.price,brand:t.attributes.brand,category:t.attributes.category,quantity:t.quantity})}));var t={event:"checkout",ecommerce:{checkout:{products:[e]}},eventCallback:function(){window.location.href=$ziggy("shop.checkout")}};window.dataLayer?(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(t)):window.location.href=$ziggy("shop.checkout")}}}}),a={class:"cart"},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"},w=e.createElementVNode("div",{class:"dropdown-item"},"Ваша корзина пуста",-1),B={class:"modal-content"},y=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],b={class:"box"},C={class:"cart-title"},x=e.createTextVNode(" Корзина "),T=["textContent"],L={key:0,class:"items-wrapper"},M={class:"items"},S={class:"columns is-gapless is-vcentered main-actions"},H={class:"column"},q={class:"column has-text-right"},$={class:"totals"},z={class:"title"},D=e.createTextVNode(" Итого: "),P=["innerHTML"],_={class:"column is-narrow"},F={key:0,class:"cross"},O=e.createElementVNode("div",{class:"title"},"С товарами из вашей корзины часто покупают",-1),A={class:"swiper",ref:"crossSlider"},j={class:"swiper-wrapper"},G={class:"columns is-gapless"},I={class:"column is-narrow"},J=["onClick"],K=["src"],Q={key:1},R=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],U={class:"column"},W=["data-code"],X={class:"name"},Y=["onClick"],Z={class:"columns is-gapless is-vcentered"},ee={class:"column is-narrow"},te={class:"prices"},ne=["innerHTML"],le=["innerHTML"],oe={class:"column"},ce=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-alternate"})],-1),re={class:"swiper-nav prev",ref:"crossSliderPrev"},ae=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],se={class:"swiper-nav next",ref:"crossSliderNext"},ie=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],de={key:1,class:"bundles"},ue=e.createElementVNode("div",{class:"title"},"Вместе дешевле",-1),me={class:"swiper",ref:"bundlesSlider"},pe={class:"swiper-wrapper"},ve={class:"column is-narrow"},Ee=["onClick"],ke=["src"],Ne={key:1},Ve=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],fe={class:"column"},ge={class:"product"},he={class:"name"},we=["onClick"],Be={class:"columns is-gapless is-vcentered"},ye={class:"prices"},be=["innerHTML"],Ce=e.createElementVNode("div",{class:"column is-narrow"},[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})])],-1),xe={class:"column is-narrow"},Te=["onClick"],Le=["src"],Me={key:1},Se=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],He={class:"column"},qe={class:"product"},$e={class:"name"},ze=["onClick"],De={class:"columns is-gapless is-vcentered"},Pe={class:"prices"},_e=["innerHTML"],Fe={key:0,class:"column is-narrow"},Oe=[e.createElementVNode("svg",{class:"bundle-icon plus"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1)],Ae={key:1,class:"column is-narrow"},je=["onClick"],Ge=["src"],Ie={key:1},Je=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Ke={key:2,class:"column"},Qe={class:"product"},Re={class:"name"},Ue=["onClick"],We={class:"columns is-gapless is-vcentered"},Xe={class:"prices"},Ye=["innerHTML"],Ze={class:"columns is-vcentered"},et={class:"column"},tt=["innerHTML"],nt=["innerHTML"],lt={class:"column"},ot={class:"is-flex is-align-items-center"},ct=["innerHTML"],rt={class:"swiper-nav prev",ref:"bundlesSliderPrev"},at=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],st={class:"swiper-nav next",ref:"bundlesSliderNext"},it=[e.createElementVNode("use",{"xlink:href":"#arrow-submenu"},null,-1)],dt={key:1,class:"empty"},ut=e.createElementVNode("div",{class:"title"},"В корзине пока что нет товаров",-1),mt={class:"message"},pt=e.createTextVNode(" Посмотрите предложения на "),vt=e.createTextVNode(", "),Et=e.createElementVNode("br",null,null,-1),kt=e.createTextVNode("воспользуйтесь каталогом или поиском "),Nt={class:"viewed-wrapper"};r.render=function(t,n,l,o,c,r){var Vt=e.resolveComponent("cart-item"),ft=e.resolveComponent("cart-add"),gt=e.resolveComponent("bundle-add"),ht=e.resolveComponent("viewed");return e.openBlock(),e.createElementBlock("div",a,[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:n[0]||(n[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:n[1]||(n[1]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),class:"button is-link"},e.toDisplayString(t.__("shop.cart.checkout")),1)]),e.createElementVNode("div",g,[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.openBlock(),e.createElementBlock("div",h,[e.renderSlot(t.$slots,"empty",{},(function(){return[w]}))]))])]),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",B,[e.createElementVNode("button",{class:"modal-close is-large",onClick:n[4]||(n[4]=function(){return t.close&&t.close.apply(t,arguments)})},y),e.createElementVNode("div",b,[e.createElementVNode("div",C,[x,t.quantity?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,T)):e.createCommentVNode("v-if",!0)]),t.items.length?(e.openBlock(),e.createElementBlock("div",L,[e.createElementVNode("div",M,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(Vt,{key:t.id,item:t},null,8,["item"])})),128))]),e.createElementVNode("div",S,[e.createElementVNode("div",H,[e.createElementVNode("button",{class:"button continue",onClick:n[5]||(n[5]=function(){return t.close&&t.close.apply(t,arguments)})},"Продолжить покупки")]),e.createElementVNode("div",q,[e.createElementVNode("div",$,[e.createElementVNode("div",z,[D,e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,P)])])]),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"},"Оформить заказ")])]),t.cross.length?(e.openBlock(),e.createElementBlock("div",F,[O,e.createElementVNode("div",A,[e.createElementVNode("div",j,[(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",G,[e.createElementVNode("div",I,[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,K)):(e.openBlock(),e.createElementBlock("svg",Q,R))],2)],8,J)]),e.createElementVNode("div",U,[e.createElementVNode("div",{class:"product","data-code":n.code,"shop-product":""},[e.createElementVNode("div",X,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)},"shop-product-name":""},e.toDisplayString(n.name),9,Y)]),e.createElementVNode("div",Z,[e.createElementVNode("div",ee,[e.createElementVNode("div",te,[n.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(n.priceOld)},null,8,ne)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price),"shop-product-price":""},null,8,le)])]),e.createElementVNode("div",oe,[e.createVNode(ft,{id:n.id,"is-simple":!0},{default:e.withCtx((function(){return[ce]})),_:2},1032,["id"])])])],8,W)])])])})),128))]),(e.openBlock(),e.createElementBlock("svg",re,ae,512)),(e.openBlock(),e.createElementBlock("svg",se,ie,512))],512)])):e.createCommentVNode("v-if",!0),t.bundles.length?(e.openBlock(),e.createElementBlock("div",de,[ue,e.createElementVNode("div",me,[e.createElementVNode("div",pe,[(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",ve,[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,ke)):(e.openBlock(),e.createElementBlock("svg",Ne,Ve))],2)],8,Ee)]),e.createElementVNode("div",fe,[e.createElementVNode("div",ge,[e.createElementVNode("div",he,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.href)}},e.toDisplayString(n.name),9,we)]),e.createElementVNode("div",Be,[e.createElementVNode("div",ye,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.price)},null,8,be)])])])]),Ce,e.createElementVNode("div",xe,[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,Le)):(e.openBlock(),e.createElementBlock("svg",Me,Se))],2)],8,Te)]),e.createElementVNode("div",He,[e.createElementVNode("div",qe,[e.createElementVNode("div",$e,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.second.href)}},e.toDisplayString(n.second.name),9,ze)]),e.createElementVNode("div",De,[e.createElementVNode("div",Pe,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.second.price)},null,8,_e)])])])]),n.third?(e.openBlock(),e.createElementBlock("div",Fe,Oe)):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",Ae,[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,Ge)):(e.openBlock(),e.createElementBlock("svg",Ie,Je))],2)],8,je)])):e.createCommentVNode("v-if",!0),n.third?(e.openBlock(),e.createElementBlock("div",Ke,[e.createElementVNode("div",Qe,[e.createElementVNode("div",Re,[e.createElementVNode("a",{onClick:function(e){return t.goto(n.third.href)}},e.toDisplayString(n.third.name),9,Ue)]),e.createElementVNode("div",We,[e.createElementVNode("div",Xe,[e.createElementVNode("div",{class:"price",innerHTML:t.$filters.price(n.third.price)},null,8,Ye)])])])])):e.createCommentVNode("v-if",!0)],2),e.createElementVNode("div",Ze,[e.createElementVNode("div",et,[e.createElementVNode("span",{class:"total-old",innerHTML:t.$filters.price(n.bundle.priceOld)},null,8,tt),e.createElementVNode("span",{class:"bundle-amount",innerHTML:"Выгода "+n.bundle.amount},null,8,nt)]),e.createElementVNode("div",lt,[e.createElementVNode("div",ot,[e.createElementVNode("span",{class:"total",innerHTML:t.$filters.price(n.bundle.price)},null,8,ct),e.createVNode(gt,{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",rt,at,512)),(e.openBlock(),e.createElementBlock("svg",st,it,512))])):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock("div",dt,[ut,e.createElementVNode("div",mt,[pt,e.createElementVNode("a",{onClick:n[7]||(n[7]=function(e){return t.goto(t.$env.locale.url+"/")})},"главной странице"),vt,Et,kt]),e.createElementVNode("button",{class:"button continue",onClick:n[8]||(n[8]=function(){return t.close&&t.close.apply(t,arguments)})},"Продолжить покупки"),e.createElementVNode("div",Nt,[e.createVNode(ht,{slider:!0})])]))])])],2)):e.createCommentVNode("v-if",!0)])},module.exports=r;
|
|
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=0a0ab501&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\">\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\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</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 <div class=\"cart-title\">\n Корзина\n <span\n v-if=\"quantity\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n </div>\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\"></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\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in cross\"\n v-bind:key=\"item.id\"\n >\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\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\n class=\"product\"\n :data-code=\"item.code\"\n shop-product\n >\n <div class=\"name\">\n <a\n @click=\"goto(item.href)\"\n shop-product-name\n >{{ 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\n class=\"price-old\"\n v-if=\"item.priceOld\"\n v-html=\"$filters.price(item.priceOld)\"\n ></div>\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n shop-product-price\n ></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add\n :id=\"item.id\"\n :is-simple=\"true\"\n >\n <svg>\n <use\n xlink:href=\"#cart-alternate\"\n />\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\">Вместе дешевле</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in bundles\"\n v-bind:key=\"item.id\"\n >\n <div\n class=\"columns is-gapless is-vcentered\"\n v-bind:class=\"{ 'is-third': item.third }\"\n >\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\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\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></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\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.second.image }\"\n >\n <img\n :src=\"item.second.image\"\n v-if=\"item.second.image\"\n />\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\n @click=\"goto(item.second.href)\"\n >{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.second.price)\"\n ></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\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.third.image }\"\n >\n <img\n :src=\"item.third.image\"\n v-if=\"item.third.image\"\n />\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\n @click=\"goto(item.third.href)\"\n >{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.third.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span\n class=\"total-old\"\n v-html=\"$filters.price(item.bundle.priceOld)\"\n ></span>\n <span\n class=\"bundle-amount\"\n v-html=\"'Выгода ' + item.bundle.amount\"\n ></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span\n class=\"total\"\n v-html=\"$filters.price(item.bundle.price)\"\n ></span>\n <bundle-add\n :id=\"item.id\"\n :second=\"item.second.id\"\n v-bind:third=\"item.third ? item.third.id : null\"\n ></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\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n @click=\"goto($env.locale.url + '/')\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</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 } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\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('cart/modal', false);\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['cart/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: 2,\n slidesPerGroup: 2,\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['cart/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('cart/modal', null);\n });\n\n const checkout = () => {\n let products = [];\n\n items.value.forEach((item) => {\n products.push({\n 'name': item.name,\n 'id': item.attributes.code,\n 'price': item.attributes.price,\n 'brand': item.attributes.brand,\n 'category': item.attributes.category,\n 'quantity': item.quantity\n });\n });\n\n const object = {\n 'event': 'checkout',\n 'ecommerce': {\n 'checkout': {\n 'products': [products]\n }\n },\n 'eventCallback': function () {\n window.location.href = $ziggy('shop.checkout');\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n } else {\n window.location.href = $ziggy('shop.checkout');\n }\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 };\n }\n});\n</script>","<template>\n <div class=\"cart\">\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\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</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 <div class=\"cart-title\">\n Корзина\n <span\n v-if=\"quantity\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n </div>\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\"></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\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</div>\n <div class=\"swiper\" ref=\"crossSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in cross\"\n v-bind:key=\"item.id\"\n >\n <div class=\"columns is-gapless\">\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\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\n class=\"product\"\n :data-code=\"item.code\"\n shop-product\n >\n <div class=\"name\">\n <a\n @click=\"goto(item.href)\"\n shop-product-name\n >{{ 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\n class=\"price-old\"\n v-if=\"item.priceOld\"\n v-html=\"$filters.price(item.priceOld)\"\n ></div>\n <div\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n shop-product-price\n ></div>\n </div>\n </div>\n <div class=\"column\">\n <cart-add\n :id=\"item.id\"\n :is-simple=\"true\"\n >\n <svg>\n <use\n xlink:href=\"#cart-alternate\"\n />\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\">Вместе дешевле</div>\n <div class=\"swiper\" ref=\"bundlesSlider\">\n <div class=\"swiper-wrapper\">\n <div\n class=\"swiper-slide\"\n v-for=\"item in bundles\"\n v-bind:key=\"item.id\"\n >\n <div\n class=\"columns is-gapless is-vcentered\"\n v-bind:class=\"{ 'is-third': item.third }\"\n >\n <div class=\"column is-narrow\">\n <a @click=\"goto(item.href)\">\n <figure\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.image }\"\n >\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\n class=\"price\"\n v-html=\"$filters.price(item.price)\"\n ></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\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.second.image }\"\n >\n <img\n :src=\"item.second.image\"\n v-if=\"item.second.image\"\n />\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\n @click=\"goto(item.second.href)\"\n >{{ item.second.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.second.price)\"\n ></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\n class=\"image is-square\"\n v-bind:class=\"{ 'no-thumb': !item.third.image }\"\n >\n <img\n :src=\"item.third.image\"\n v-if=\"item.third.image\"\n />\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\n @click=\"goto(item.third.href)\"\n >{{ item.third.name }}</a>\n </div>\n <div class=\"columns is-gapless is-vcentered\">\n <div class=\"prices\">\n <div\n class=\"price\"\n v-html=\"$filters.price(item.third.price)\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <span\n class=\"total-old\"\n v-html=\"$filters.price(item.bundle.priceOld)\"\n ></span>\n <span\n class=\"bundle-amount\"\n v-html=\"'Выгода ' + item.bundle.amount\"\n ></span>\n </div>\n <div class=\"column\">\n <div class=\"is-flex is-align-items-center\">\n <span\n class=\"total\"\n v-html=\"$filters.price(item.bundle.price)\"\n ></span>\n <bundle-add\n :id=\"item.id\"\n :second=\"item.second.id\"\n v-bind:third=\"item.third ? item.third.id : null\"\n ></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\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n @click=\"goto($env.locale.url + '/')\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</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 } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\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('cart/modal', false);\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['cart/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: 2,\n slidesPerGroup: 2,\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['cart/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('cart/modal', null);\n });\n\n const checkout = () => {\n let products = [];\n\n items.value.forEach((item) => {\n products.push({\n 'name': item.name,\n 'id': item.attributes.code,\n 'price': item.attributes.price,\n 'brand': item.attributes.brand,\n 'category': item.attributes.category,\n 'quantity': item.quantity\n });\n });\n\n const object = {\n 'event': 'checkout',\n 'ecommerce': {\n 'checkout': {\n 'products': [products]\n }\n },\n 'eventCallback': function () {\n window.location.href = $ziggy('shop.checkout');\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n } else {\n window.location.href = $ziggy('shop.checkout');\n }\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 };\n }\n});\n</script>"],"names":["defineComponent","name","props","isModal","type","Boolean","setup","store","useStore","loading","ref","items","computed","getters","modal","total","quantity","close","commit","dispatch","window","addEventListener","e","value","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","open","clear","pluralize","href","location","checkout","products","forEach","item","push","attributes","code","price","brand","category","object","$ziggy","dataLayer","ecommerce","_createElementVNode","role","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_renderSlot","_ctx","onClick","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","innerHTML","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_20","_hoisted_21","_toDisplayString","_hoisted_24","_hoisted_25","_createBlock","id","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","image","src","_hoisted_45","_hoisted_47","_hoisted_50","_hoisted_51","_hoisted_52","priceOld","_hoisted_55","_createVNode","_hoisted_56","_hoisted_57","_hoisted_60","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","third","_hoisted_67","_hoisted_73","_hoisted_74","_hoisted_75","_hoisted_77","_hoisted_78","_hoisted_80","_hoisted_81","second","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_91","_hoisted_92","_hoisted_94","_hoisted_97","_hoisted_103","_hoisted_104","_hoisted_105","_hoisted_107","_hoisted_108","_hoisted_110","_hoisted_111","bundle","amount","_hoisted_114","_hoisted_115","_hoisted_117","_hoisted_120","_hoisted_123","_hoisted_124","_hoisted_125","locale","url","_hoisted_128","_hoisted_130","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=1e0b198a&lang.js"],"sourcesContent":["<template>\n <div class=\"cart\">\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\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</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 <div class=\"cart-title\">\n Корзина\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\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\"></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\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</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\">Вместе дешевле</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=\"'Выгода ' + 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\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a @click=\"goto($env.locale.url + '/')\">главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</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 } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\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('cart/modal', false);\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['cart/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: 2,\n slidesPerGroup: 2,\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['cart/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('cart/modal', null);\n });\n\n const checkout = () => {\n let products = [];\n\n items.value.forEach((item) => {\n products.push({\n 'name': item.name,\n 'id': item.attributes.code,\n 'price': item.attributes.price,\n 'brand': item.attributes.brand,\n 'category': item.attributes.category,\n 'quantity': item.quantity\n });\n });\n\n const object = {\n 'event': 'checkout',\n 'ecommerce': {\n 'checkout': {\n 'products': [products]\n }\n },\n 'eventCallback': function () {\n window.location.href = $ziggy('shop.checkout');\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n } else {\n window.location.href = $ziggy('shop.checkout');\n }\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 };\n }\n});\n</script>","<template>\n <div class=\"cart\">\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\">{{ __('shop.cart.checkout') }}</a>\n </div>\n <div class=\"dropdown-item has-text-centered\">\n <slot name=\"open\" :open=\"open\">\n <a @click=\"open\">Открыть корзину</a>\n </slot>\n </div>\n </div>\n <div class=\"dropdown-content\" v-else>\n <slot name=\"empty\">\n <div class=\"dropdown-item\">Ваша корзина пуста</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 <div class=\"cart-title\">\n Корзина\n <span v-if=\"quantity\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n </div>\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\"></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\">Продолжить покупки</button>\n </div>\n <div class=\"column has-text-right\">\n <div class=\"totals\">\n <div class=\"title\">\n Итого:\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a @click=\"checkout\" class=\"button is-link checkout\">Оформить заказ</a>\n </div>\n </div>\n\n <div class=\"cross\" v-if=\"cross.length\">\n <div class=\"title\">С товарами из вашей корзины часто покупают</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\">Вместе дешевле</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=\"'Выгода ' + 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\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a @click=\"goto($env.locale.url + '/')\">главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <button class=\"button continue\" @click=\"close\">Продолжить покупки</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 } from 'vue';\nimport { useStore } from 'vuex';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport Swiper, { Navigation } from 'swiper';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'cart',\n props: {\n isModal: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const store = useStore();\n const loading = ref(false);\n\n const items = computed(() => store.getters['cart/items']);\n const modal = computed(() => store.getters['cart/modal']);\n const total = computed(() => store.getters['cart/total']);\n const quantity = computed(() => store.getters['cart/quantity']);\n\n const open = () => {\n store.commit('cart/modal', true);\n };\n\n const close = () => {\n store.commit('cart/modal', false);\n };\n\n const clear = () => {\n loading.value = true;\n\n store.dispatch('cart/clear', {\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n store.dispatch(\"cart/get\", {\n finally: () => {\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('cart/modal', false);\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['cart/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: 2,\n slidesPerGroup: 2,\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['cart/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('cart/modal', null);\n });\n\n const checkout = () => {\n let products = [];\n\n items.value.forEach((item) => {\n products.push({\n 'name': item.name,\n 'id': item.attributes.code,\n 'price': item.attributes.price,\n 'brand': item.attributes.brand,\n 'category': item.attributes.category,\n 'quantity': item.quantity\n });\n });\n\n const object = {\n 'event': 'checkout',\n 'ecommerce': {\n 'checkout': {\n 'products': [products]\n }\n },\n 'eventCallback': function () {\n window.location.href = $ziggy('shop.checkout');\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n } else {\n window.location.href = $ziggy('shop.checkout');\n }\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 };\n }\n});\n</script>"],"names":["defineComponent","name","props","isModal","type","Boolean","setup","store","useStore","loading","ref","items","computed","getters","modal","total","quantity","close","commit","dispatch","window","addEventListener","e","value","key","crossSwiper","bundlesSwiper","crossSlider","crossSliderNext","crossSliderPrev","cross","destroy","length","Swiper","slidesPerView","slidesPerGroup","spaceBetween","allowTouchMove","modules","Navigation","mousewheel","forceToAxis","navigation","nextEl","prevEl","bundlesSlider","bundlesSliderNext","bundlesSliderPrev","bundles","open","clear","pluralize","href","location","checkout","products","forEach","item","push","attributes","code","price","brand","category","object","$ziggy","dataLayer","ecommerce","_createElementVNode","role","_createElementBlock","_hoisted_1","_hoisted_2","_hoisted_3","_renderSlot","_ctx","onClick","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","innerHTML","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_20","_hoisted_21","_toDisplayString","_hoisted_24","_hoisted_25","_createBlock","id","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","image","src","_hoisted_45","_hoisted_47","_hoisted_49","_hoisted_50","_hoisted_51","priceOld","_hoisted_54","_createVNode","_hoisted_55","_hoisted_56","_hoisted_59","_hoisted_62","_hoisted_63","_hoisted_64","_hoisted_65","third","_hoisted_66","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_76","_hoisted_77","_hoisted_79","_hoisted_80","second","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_90","_hoisted_91","_hoisted_93","_hoisted_96","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_106","_hoisted_107","_hoisted_109","_hoisted_110","bundle","amount","_hoisted_113","_hoisted_114","_hoisted_116","_hoisted_119","_hoisted_122","_hoisted_123","_hoisted_124","locale","url","_hoisted_127","_hoisted_129","slider"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("vuex"),r=require("formvuelate"),n=require("@formvuelate/plugin-vee-validate"),a=require("@perevorot/shop/dist/forms/FormTextarea"),o=require("@perevorot/shop/dist/forms/FormText"),i=require("@perevorot/shop/dist/forms/FormRating"),l=require("yup");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=c(n),d=c(a),m=c(o),v=c(i),f=u(l);function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}e.markRaw(v.default),e.markRaw(d.default),e.markRaw(m.default);var w=r.SchemaFormFactory([s.default({})]),b=e.defineComponent({name:"review",components:{SchemaForm:w},props:{id:Number},setup:function(n){var a,o=e.ref(!1),i=t.useStore(),l=e.ref(0),c=e.ref({}),u=e.computed((function(){return i.getters["review/modal"]})),s=e.computed((function(){return i.getters["auth/is"]})),y=e.computed((function(){return i.getters["auth/me"]})),w=e.ref(!1),b=e.ref({review:{component:d.default,label:__("shop.review.review"),model:"review"},
|
|
1
|
+
"use strict";var e=require("vue"),t=require("vuex"),r=require("formvuelate"),n=require("@formvuelate/plugin-vee-validate"),a=require("@perevorot/shop/dist/forms/FormTextarea"),o=require("@perevorot/shop/dist/forms/FormText"),i=require("@perevorot/shop/dist/forms/FormRating"),l=require("yup");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=c(n),d=c(a),m=c(o),v=c(i),f=u(l);function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}e.markRaw(v.default),e.markRaw(d.default),e.markRaw(m.default);var w=r.SchemaFormFactory([s.default({})]),b=e.defineComponent({name:"review",components:{SchemaForm:w},props:{id:Number},setup:function(n){var a,o=e.ref(!1),i=t.useStore(),l=e.ref(0),c=e.ref({}),u=e.computed((function(){return i.getters["review/modal"]})),s=e.computed((function(){return i.getters["auth/is"]})),y=e.computed((function(){return i.getters["auth/me"]})),w=e.ref(!1),b=e.ref({rating:{component:v.default,model:"rating"},review:{component:d.default,label:__("shop.review.review"),model:"review"},name:{component:m.default,label:__("shop.review.name"),model:"name"}}),g=f.object().shape({review:f.string().required(__("auth.validation.required")),rating:f.number().min(1,__("auth.validation.required")).required(__("auth.validation.required")),name:f.string().required(__("auth.validation.required"))}),E=e.ref({review:"",rating:0,name:y.value.name,id:n.id});r.useSchemaForm(E);var k=function(){i.commit("review/modal",!1),w.value=!1};return window.addEventListener("keyup",(function(e){u.value&&"Escape"===e.key&&k()})),document.addEventListener("DOMContentLoaded",(function(){u.value&&document.documentElement.classList.add("is-modal-open");var e=document.getElementById("reviews-show-more");e&&e.addEventListener("click",(function(){document.getElementById("reviews-list").querySelectorAll(".review.is-hidden").forEach((function(t){t.classList.remove("is-hidden"),e.remove()}))}))}),!1),p(a={loading:o,modal:u,schema:b,validation:g,add:function(){s.value?i.commit("review/modal",!0):i.commit("auth/modal","login")},cancel:k},"schema",b),p(a,"onSubmit",(function(){o.value=!0,$http.post($ziggy("api.review"),E.value).then((function(){w.value=!0,E.value={review:"",rating:0,name:y.value.name,id:n.id}})).catch((function(e){if(c.value={},e.response.data&&e.response.data.errors){for(var t=0,r=Object.entries(e.response.data.errors);t<r.length;t++){var n=h(r[t],2),a=n[0],o=n[1];o[0]&&(c.value[a]=o[0])}l.value++}})).finally((function(){o.value=!1}))})),p(a,"errors",c),p(a,"key",l),p(a,"model",E),p(a,"thanks",w),a}}),g={class:"shop-reviews"},E={class:"modal-content"},k=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],_={class:"box"},S={class:"title"},N={class:"shop-reviews-form"},V={class:"field"},q={class:"columns is-vcentered"},C={class:"column"},j={class:"column has-text-right"},O={class:"shop-reviews-thanks"},x=["innerHTML"],D={class:"mt-3"};b.render=function(t,r,n,a,o,i){var l=e.resolveComponent("SchemaForm");return e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("button",{class:"button review-add",onClick:r[0]||(r[0]=function(){return t.add&&t.add.apply(t,arguments)})},e.toDisplayString(t.__("shop.review.add")),1),e.createElementVNode("div",{class:e.normalizeClass(["modal",{"is-active":t.modal}])},[e.createElementVNode("div",{class:"modal-background",onClick:r[1]||(r[1]=function(){return t.cancel&&t.cancel.apply(t,arguments)})}),e.createElementVNode("div",E,[e.createElementVNode("button",{class:"modal-close is-large",onClick:r[2]||(r[2]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},k),e.createElementVNode("div",_,[e.createElementVNode("div",S,e.toDisplayString(t.__("shop.review.title")),1),e.withDirectives(e.createElementVNode("div",N,[(e.openBlock(),e.createBlock(l,{schemaRowClasses:"field",schema:t.schema,"validation-schema":t.validation,"initial-errors":t.errors,key:t.key,onSubmit:t.onSubmit},{afterForm:e.withCtx((function(){return[e.createElementVNode("div",V,[e.createElementVNode("div",q,[e.createElementVNode("div",C,[e.createElementVNode("button",{class:e.normalizeClass(["button is-link",{"is-loading":t.loading}]),type:"submit"},e.toDisplayString(t.__("shop.review.save")),3)]),e.createElementVNode("div",j,[e.createElementVNode("button",{class:"button",onClick:r[3]||(r[3]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},e.toDisplayString(t.__("shop.review.cancel")),1)])])])]})),_:1},8,["schema","validation-schema","initial-errors","onSubmit"]))],512),[[e.vShow,!t.thanks]]),e.withDirectives(e.createElementVNode("div",O,[e.createElementVNode("div",{class:"message",innerHTML:t.__("shop.review.thanks")},null,8,x),e.createElementVNode("div",D,[e.createElementVNode("button",{class:"button",onClick:r[4]||(r[4]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},e.toDisplayString(t.__("shop.review.continue")),1)])],512),[[e.vShow,t.thanks]])])])],2)])},module.exports=b;
|
|
2
2
|
//# sourceMappingURL=Review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Review.js","sources":["../../../../src/components/shop/reviews/Review.vue","../../../../src/components/shop/reviews/Review.vue?vue&type=template&id=1a2b3478&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-reviews\">\n <button class=\"button review-add\" @click=\"add\">{{ __(\"shop.review.add\") }}</button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"cancel\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"cancel\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">{{ __(\"shop.review.title\") }}</div>\n <div class=\"shop-reviews-form\" v-show=\"!thanks\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"schema\"\n :validation-schema=\"validation\"\n :initial-errors=\"errors\"\n :key=\"key\"\n @submit=\"onSubmit\"\n >\n <template #afterForm>\n <div class=\"field\">\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading,\n }\"\n >{{ __(\"shop.review.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.review.cancel\") }}</button>\n </div>\n </div>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div class=\"shop-reviews-thanks\" v-show=\"thanks\">\n <div class=\"message\" v-html=\"__('shop.review.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"cancel\">{{ __(\"shop.review.continue\") }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, markRaw, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { SchemaFormFactory, useSchemaForm } from \"formvuelate\";\nimport VeeValidatePlugin from \"@formvuelate/plugin-vee-validate\";\nimport FormTextarea from \"@perevorot/shop/dist/forms/FormTextarea\";\nimport FormText from \"@perevorot/shop/dist/forms/FormText\";\nimport FormRating from \"@perevorot/shop/dist/forms/FormRating\";\nimport * as yup from \"yup\";\n\nmarkRaw(FormRating);\nmarkRaw(FormTextarea);\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"review\",\n components: {\n SchemaForm,\n },\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const key = ref(0);\n const errors = ref({});\n const modal = computed(() => store.getters[\"review/modal\"]);\n const auth = computed(() => store.getters[\"auth/is\"]);\n const user = computed(() => store.getters[\"auth/me\"]);\n const thanks = ref(false);\n\n const schema = ref({\n review: {\n component: FormTextarea,\n label: __(\"shop.review.review\"),\n model: \"review\",\n },\n rating: {\n component: FormRating,\n model: \"rating\",\n },\n name: {\n component: FormText,\n label: __(\"shop.review.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n rating: yup\n .number()\n .min(1, __(\"auth.validation.required\"))\n .required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n store.commit(\"review/modal\", true);\n }\n };\n\n const cancel = () => {\n store.commit(\"review/modal\", false);\n thanks.value = false;\n };\n\n const onSubmit = () => {\n loading.value = true;\n\n $http\n .post($ziggy(\"api.review\"), model.value)\n .then(() => {\n thanks.value = true;\n\n model.value = {\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n };\n })\n .catch((error) => {\n errors.value = {};\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(\n error.response.data.errors\n )) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n cancel();\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (modal.value) {\n document.documentElement.classList.add('is-modal-open');\n }\n\n const showMore = document.getElementById('reviews-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('reviews-list').querySelectorAll('.review.is-hidden').forEach(review => {\n review.classList.remove('is-hidden');\n showMore.remove();\n });\n });\n }\n }, false);\n\n return {\n loading,\n modal,\n schema,\n validation,\n add,\n cancel,\n schema,\n onSubmit,\n errors,\n key,\n model,\n thanks,\n };\n },\n});\n</script>","<template>\n <div class=\"shop-reviews\">\n <button class=\"button review-add\" @click=\"add\">{{ __(\"shop.review.add\") }}</button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"cancel\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"cancel\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">{{ __(\"shop.review.title\") }}</div>\n <div class=\"shop-reviews-form\" v-show=\"!thanks\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"schema\"\n :validation-schema=\"validation\"\n :initial-errors=\"errors\"\n :key=\"key\"\n @submit=\"onSubmit\"\n >\n <template #afterForm>\n <div class=\"field\">\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading,\n }\"\n >{{ __(\"shop.review.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.review.cancel\") }}</button>\n </div>\n </div>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div class=\"shop-reviews-thanks\" v-show=\"thanks\">\n <div class=\"message\" v-html=\"__('shop.review.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"cancel\">{{ __(\"shop.review.continue\") }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, markRaw, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { SchemaFormFactory, useSchemaForm } from \"formvuelate\";\nimport VeeValidatePlugin from \"@formvuelate/plugin-vee-validate\";\nimport FormTextarea from \"@perevorot/shop/dist/forms/FormTextarea\";\nimport FormText from \"@perevorot/shop/dist/forms/FormText\";\nimport FormRating from \"@perevorot/shop/dist/forms/FormRating\";\nimport * as yup from \"yup\";\n\nmarkRaw(FormRating);\nmarkRaw(FormTextarea);\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"review\",\n components: {\n SchemaForm,\n },\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const key = ref(0);\n const errors = ref({});\n const modal = computed(() => store.getters[\"review/modal\"]);\n const auth = computed(() => store.getters[\"auth/is\"]);\n const user = computed(() => store.getters[\"auth/me\"]);\n const thanks = ref(false);\n\n const schema = ref({\n review: {\n component: FormTextarea,\n label: __(\"shop.review.review\"),\n model: \"review\",\n },\n rating: {\n component: FormRating,\n model: \"rating\",\n },\n name: {\n component: FormText,\n label: __(\"shop.review.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n rating: yup\n .number()\n .min(1, __(\"auth.validation.required\"))\n .required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n store.commit(\"review/modal\", true);\n }\n };\n\n const cancel = () => {\n store.commit(\"review/modal\", false);\n thanks.value = false;\n };\n\n const onSubmit = () => {\n loading.value = true;\n\n $http\n .post($ziggy(\"api.review\"), model.value)\n .then(() => {\n thanks.value = true;\n\n model.value = {\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n };\n })\n .catch((error) => {\n errors.value = {};\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(\n error.response.data.errors\n )) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n cancel();\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (modal.value) {\n document.documentElement.classList.add('is-modal-open');\n }\n\n const showMore = document.getElementById('reviews-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('reviews-list').querySelectorAll('.review.is-hidden').forEach(review => {\n review.classList.remove('is-hidden');\n showMore.remove();\n });\n });\n }\n }, false);\n\n return {\n loading,\n modal,\n schema,\n validation,\n add,\n cancel,\n schema,\n onSubmit,\n errors,\n key,\n model,\n thanks,\n };\n },\n});\n</script>"],"names":["markRaw","FormRating","FormTextarea","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","defineComponent","name","components","props","id","Number","setup","loading","ref","store","useStore","key","errors","modal","computed","getters","auth","user","thanks","schema","review","component","label","__","model","rating","validation","yup","object","shape","string","required","number","min","value","useSchemaForm","cancel","commit","window","addEventListener","e","document","documentElement","classList","add","showMore","getElementById","querySelectorAll","forEach","remove","$http","post","$ziggy","then","error","response","data","Object","entries","field","messages","_createElementVNode","_createElementBlock","_hoisted_1","onClick","_ctx","_hoisted_2","_hoisted_5","_hoisted_6","_hoisted_7","_createBlock","schemaRowClasses","onSubmit","afterForm","_hoisted_8","_hoisted_9","_hoisted_10","type","_hoisted_11","_hoisted_12","innerHTML","_hoisted_14"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Review.js","sources":["../../../../src/components/shop/reviews/Review.vue","../../../../src/components/shop/reviews/Review.vue?vue&type=template&id=3317de44&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-reviews\">\n <button class=\"button review-add\" @click=\"add\">{{ __(\"shop.review.add\") }}</button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"cancel\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"cancel\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">{{ __(\"shop.review.title\") }}</div>\n <div class=\"shop-reviews-form\" v-show=\"!thanks\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"schema\"\n :validation-schema=\"validation\"\n :initial-errors=\"errors\"\n :key=\"key\"\n @submit=\"onSubmit\"\n >\n <template #afterForm>\n <div class=\"field\">\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading,\n }\"\n >{{ __(\"shop.review.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.review.cancel\") }}</button>\n </div>\n </div>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div class=\"shop-reviews-thanks\" v-show=\"thanks\">\n <div class=\"message\" v-html=\"__('shop.review.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"cancel\">{{ __(\"shop.review.continue\") }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, markRaw, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { SchemaFormFactory, useSchemaForm } from \"formvuelate\";\nimport VeeValidatePlugin from \"@formvuelate/plugin-vee-validate\";\nimport FormTextarea from \"@perevorot/shop/dist/forms/FormTextarea\";\nimport FormText from \"@perevorot/shop/dist/forms/FormText\";\nimport FormRating from \"@perevorot/shop/dist/forms/FormRating\";\nimport * as yup from \"yup\";\n\nmarkRaw(FormRating);\nmarkRaw(FormTextarea);\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"review\",\n components: {\n SchemaForm,\n },\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const key = ref(0);\n const errors = ref({});\n const modal = computed(() => store.getters[\"review/modal\"]);\n const auth = computed(() => store.getters[\"auth/is\"]);\n const user = computed(() => store.getters[\"auth/me\"]);\n const thanks = ref(false);\n\n const schema = ref({\n rating: {\n component: FormRating,\n model: \"rating\",\n },\n review: {\n component: FormTextarea,\n label: __(\"shop.review.review\"),\n model: \"review\",\n },\n name: {\n component: FormText,\n label: __(\"shop.review.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n rating: yup\n .number()\n .min(1, __(\"auth.validation.required\"))\n .required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n store.commit(\"review/modal\", true);\n }\n };\n\n const cancel = () => {\n store.commit(\"review/modal\", false);\n thanks.value = false;\n };\n\n const onSubmit = () => {\n loading.value = true;\n\n $http\n .post($ziggy(\"api.review\"), model.value)\n .then(() => {\n thanks.value = true;\n\n model.value = {\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n };\n })\n .catch((error) => {\n errors.value = {};\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(\n error.response.data.errors\n )) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n cancel();\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (modal.value) {\n document.documentElement.classList.add('is-modal-open');\n }\n\n const showMore = document.getElementById('reviews-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('reviews-list').querySelectorAll('.review.is-hidden').forEach(review => {\n review.classList.remove('is-hidden');\n showMore.remove();\n });\n });\n }\n }, false);\n\n return {\n loading,\n modal,\n schema,\n validation,\n add,\n cancel,\n schema,\n onSubmit,\n errors,\n key,\n model,\n thanks,\n };\n },\n});\n</script>","<template>\n <div class=\"shop-reviews\">\n <button class=\"button review-add\" @click=\"add\">{{ __(\"shop.review.add\") }}</button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"cancel\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"cancel\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">{{ __(\"shop.review.title\") }}</div>\n <div class=\"shop-reviews-form\" v-show=\"!thanks\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"schema\"\n :validation-schema=\"validation\"\n :initial-errors=\"errors\"\n :key=\"key\"\n @submit=\"onSubmit\"\n >\n <template #afterForm>\n <div class=\"field\">\n <div class=\"columns is-vcentered\">\n <div class=\"column\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading,\n }\"\n >{{ __(\"shop.review.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.review.cancel\") }}</button>\n </div>\n </div>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div class=\"shop-reviews-thanks\" v-show=\"thanks\">\n <div class=\"message\" v-html=\"__('shop.review.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"cancel\">{{ __(\"shop.review.continue\") }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, markRaw, computed, defineComponent } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { SchemaFormFactory, useSchemaForm } from \"formvuelate\";\nimport VeeValidatePlugin from \"@formvuelate/plugin-vee-validate\";\nimport FormTextarea from \"@perevorot/shop/dist/forms/FormTextarea\";\nimport FormText from \"@perevorot/shop/dist/forms/FormText\";\nimport FormRating from \"@perevorot/shop/dist/forms/FormRating\";\nimport * as yup from \"yup\";\n\nmarkRaw(FormRating);\nmarkRaw(FormTextarea);\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"review\",\n components: {\n SchemaForm,\n },\n props: {\n id: Number,\n },\n setup(props) {\n const loading = ref(false);\n const store = useStore();\n const key = ref(0);\n const errors = ref({});\n const modal = computed(() => store.getters[\"review/modal\"]);\n const auth = computed(() => store.getters[\"auth/is\"]);\n const user = computed(() => store.getters[\"auth/me\"]);\n const thanks = ref(false);\n\n const schema = ref({\n rating: {\n component: FormRating,\n model: \"rating\",\n },\n review: {\n component: FormTextarea,\n label: __(\"shop.review.review\"),\n model: \"review\",\n },\n name: {\n component: FormText,\n label: __(\"shop.review.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n rating: yup\n .number()\n .min(1, __(\"auth.validation.required\"))\n .required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n if (!auth.value) {\n store.commit(\"auth/modal\", \"login\");\n } else {\n store.commit(\"review/modal\", true);\n }\n };\n\n const cancel = () => {\n store.commit(\"review/modal\", false);\n thanks.value = false;\n };\n\n const onSubmit = () => {\n loading.value = true;\n\n $http\n .post($ziggy(\"api.review\"), model.value)\n .then(() => {\n thanks.value = true;\n\n model.value = {\n review: \"\",\n rating: 0,\n name: user.value.name,\n id: props.id,\n };\n })\n .catch((error) => {\n errors.value = {};\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(\n error.response.data.errors\n )) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n });\n };\n\n window.addEventListener(\"keyup\", (e) => {\n if (modal.value && e.key === \"Escape\") {\n cancel();\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (modal.value) {\n document.documentElement.classList.add('is-modal-open');\n }\n\n const showMore = document.getElementById('reviews-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('reviews-list').querySelectorAll('.review.is-hidden').forEach(review => {\n review.classList.remove('is-hidden');\n showMore.remove();\n });\n });\n }\n }, false);\n\n return {\n loading,\n modal,\n schema,\n validation,\n add,\n cancel,\n schema,\n onSubmit,\n errors,\n key,\n model,\n thanks,\n };\n },\n});\n</script>"],"names":["markRaw","FormRating","FormTextarea","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","defineComponent","name","components","props","id","Number","setup","loading","ref","store","useStore","key","errors","modal","computed","getters","auth","user","thanks","schema","rating","component","model","review","label","__","validation","yup","object","shape","string","required","number","min","value","useSchemaForm","cancel","commit","window","addEventListener","e","document","documentElement","classList","add","showMore","getElementById","querySelectorAll","forEach","remove","$http","post","$ziggy","then","error","response","data","Object","entries","field","messages","_createElementVNode","_createElementBlock","_hoisted_1","onClick","_ctx","_hoisted_2","_hoisted_5","_hoisted_6","_hoisted_7","_createBlock","schemaRowClasses","onSubmit","afterForm","_hoisted_8","_hoisted_9","_hoisted_10","type","_hoisted_11","_hoisted_12","innerHTML","_hoisted_14"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),r=e.defineComponent({name:"viewer",props:{slug:String,code:String,brand:String,category:String},setup:function(r){var
|
|
1
|
+
"use strict";var e=require("vue"),r=e.defineComponent({name:"viewer",props:{slug:String,code:String,brand:String,category:String},setup:function(r){var o=e.ref(null);return $http.post($ziggy("api.viewed"),{action:"view",slug:r.slug}),e.onMounted((function(){var e=o.value.closest("[shop-product]"),t=e.querySelector("[shop-product-name]").textContent,c=e.querySelector("[shop-product-price]")?e.querySelector("[shop-product-price]").childNodes[0].nodeValue.replace(/ /g,""):null,n={ecommerce:{detail:{products:[{name:t,id:r.code}]}}};hasPrice&&(n.ecommerce.detail.products[0].price=c),r.brand&&(n.ecommerce.detail.products[0].brand=r.brand),r.category&&(n.ecommerce.detail.products[0].category=r.category),window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(n))})),{viewer:o}}}),o={class:"is-hidden",ref:"viewer"};r.render=function(r,t,c,n,a,d){return e.openBlock(),e.createElementBlock("span",o,null,512)},module.exports=r;
|
|
2
2
|
//# sourceMappingURL=Viewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Viewer.js","sources":["../../../../src/components/shop/viewed/Viewer.vue","../../../../src/components/shop/viewed/Viewer.vue?vue&type=template&id=
|
|
1
|
+
{"version":3,"file":"Viewer.js","sources":["../../../../src/components/shop/viewed/Viewer.vue","../../../../src/components/shop/viewed/Viewer.vue?vue&type=template&id=af409588&lang.js"],"sourcesContent":["<template>\n <span class=\"is-hidden\" ref=\"viewer\"></span>\n</template>\n<script>\nimport { ref, onMounted, defineComponent } from \"vue\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"viewer\",\n props: {\n slug: String,\n code: String,\n brand: String,\n category: String,\n },\n setup(props) {\n const viewer = ref(null);\n\n $http.post($ziggy(\"api.viewed\"), {\n action: \"view\",\n slug: props.slug,\n });\n\n onMounted(() => {\n const product = viewer.value.closest(\"[shop-product]\");\n const name = product.querySelector(\"[shop-product-name]\").textContent;\n const price = product.querySelector(\"[shop-product-price]\") ? product.querySelector(\"[shop-product-price]\").childNodes[0].nodeValue.replace(/ /g, \"\") : null;\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n }]\n }\n }\n };\n\n if (hasPrice) {\n object.ecommerce.detail.products[0].price = price;\n }\n\n if (props.brand) {\n object.ecommerce.detail.products[0].brand = props.brand;\n }\n\n if (props.category) {\n object.ecommerce.detail.products[0].category = props.category;\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n });\n\n return {\n viewer\n }\n },\n});\n</script>","<template>\n <span class=\"is-hidden\" ref=\"viewer\"></span>\n</template>\n<script>\nimport { ref, onMounted, defineComponent } from \"vue\";\n\nexport default /*#__PURE__*/ defineComponent({\n name: \"viewer\",\n props: {\n slug: String,\n code: String,\n brand: String,\n category: String,\n },\n setup(props) {\n const viewer = ref(null);\n\n $http.post($ziggy(\"api.viewed\"), {\n action: \"view\",\n slug: props.slug,\n });\n\n onMounted(() => {\n const product = viewer.value.closest(\"[shop-product]\");\n const name = product.querySelector(\"[shop-product-name]\").textContent;\n const price = product.querySelector(\"[shop-product-price]\") ? product.querySelector(\"[shop-product-price]\").childNodes[0].nodeValue.replace(/ /g, \"\") : null;\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n }]\n }\n }\n };\n\n if (hasPrice) {\n object.ecommerce.detail.products[0].price = price;\n }\n\n if (props.brand) {\n object.ecommerce.detail.products[0].brand = props.brand;\n }\n\n if (props.category) {\n object.ecommerce.detail.products[0].category = props.category;\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n });\n\n return {\n viewer\n }\n },\n});\n</script>"],"names":["defineComponent","name","props","slug","String","code","brand","category","setup","viewer","ref","$http","post","$ziggy","action","onMounted","product","value","closest","querySelector","textContent","price","childNodes","nodeValue","replace","object","hasPrice","ecommerce","detail","products","window","dataLayer","push","_createElementBlock","_hoisted_1"],"mappings":"oCAM6BA,kBAAgB,CACzCC,KAAM,SACNC,MAAO,CACHC,KAAMC,OACNC,KAAMD,OACNE,MAAOF,OACPG,SAAUH,QAEdI,eAAMN,OACIO,EAASC,MAAI,aAEnBC,MAAMC,KAAKC,OAAO,cAAe,CAC7BC,OAAQ,OACRX,KAAMD,EAAMC,OAGhBY,aAAU,eACAC,EAAUP,EAAOQ,MAAMC,QAAQ,kBAC/BjB,EAAOe,EAAQG,cAAc,uBAAuBC,YACpDC,EAAQL,EAAQG,cAAc,wBAA0BH,EAAQG,cAAc,wBAAwBG,WAAW,GAAGC,UAAUC,QAAQ,KAAM,IAAM,KAGpJC,EAAS,WACI,QACC,UACM,CAAC,MACDxB,KANXC,EAAMG,UAafqB,WACAD,EAAOE,UAAUC,OAAOC,SAAS,GAAGR,MAAQA,GAG5CnB,EAAMI,QACNmB,EAAOE,UAAUC,OAAOC,SAAS,GAAGvB,MAAQJ,EAAMI,OAGlDJ,EAAMK,WACNkB,EAAOE,UAAUC,OAAOC,SAAS,GAAGtB,SAAWL,EAAMK,UAGrDuB,OAAOC,YACPD,OAAOC,UAAUC,KAAK,CAClBL,UAAW,OAGfG,OAAOC,UAAUC,KAAKP,OAIvB,CACHhB,OAAAA,eC5DI,YAAYC,IAAI,8DAA5BuB,4BAAAC"}
|