@perevorot/shop 2.0.15 → 2.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +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;
2
+ //# sourceMappingURL=Cart.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("vue"),t=require("vuex"),n=require("formvuelate"),r=require("@formvuelate/plugin-vee-validate"),o=require("@perevorot/shop/dist/forms/FormTextarea"),a=require("@perevorot/shop/dist/forms/FormText"),i=require("yup");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var c=l(r),u=l(o),d=l(a),m=s(i);function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(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 p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}e.markRaw(u.default),e.markRaw(d.default);var h=n.SchemaFormFactory([c.default({})]),y=e.defineComponent({name:"review",components:{SchemaForm:h},props:{id:Number},setup:function(r){var o,a=e.ref(!1),i=t.useStore(),l=e.ref(0),s=e.ref({}),c=e.ref(!1),p=e.computed((function(){return i.getters["auth/me"]})),h=e.ref(!1),y=e.ref({review:{component:u.default,label:__("shop.question.review"),model:"review"},name:{component:d.default,label:__("shop.question.name"),model:"name"}}),b=m.object().shape({review:m.string().required(__("auth.validation.required")),name:m.string().required(__("auth.validation.required"))}),E=e.ref({review:"",question:!0,name:p.value.name,id:r.id});n.useSchemaForm(E);var g=function(){c.value=!1,h.value=!1,document.documentElement.classList.remove("is-modal-open")};return window.addEventListener("keyup",(function(e){c.value&&"Escape"===e.key&&g()})),document.addEventListener("DOMContentLoaded",(function(){c.value&&document.documentElement.classList.add("is-modal-open");var e=document.getElementById("questions-show-more");e&&e.addEventListener("click",(function(){document.getElementById("questions-list").querySelectorAll(".review.is-hidden").forEach((function(t){t.classList.remove("is-hidden"),e.remove()}))}))}),!1),v(o={loading:a,modal:c,schema:y,validation:b,add:function(){c.value=!0,document.documentElement.classList.add("is-modal-open")},cancel:g},"schema",y),v(o,"onSubmit",(function(){a.value=!0,$http.post($ziggy("api.review"),E.value).then((function(){h.value=!0,E.value={review:"",question:!0,name:p.value.name,id:r.id}})).catch((function(e){if(s.value={},e.response.data&&e.response.data.errors){for(var t=0,n=Object.entries(e.response.data.errors);t<n.length;t++){var r=f(n[t],2),o=r[0],a=r[1];a[0]&&(s.value[o]=a[0])}l.value++}})).finally((function(){a.value=!1}))})),v(o,"errors",s),v(o,"key",l),v(o,"model",E),v(o,"thanks",h),o}}),b={class:"shop-reviews"},E={class:"modal-content"},g=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],w={class:"box"},k={class:"title"},q={class:"shop-reviews-form"},_={class:"field"},S={class:"columns is-vcentered"},N={class:"column"},V={class:"column has-text-right"},C={class:"shop-reviews-thanks"},j=["innerHTML"],O={class:"mt-3"};y.render=function(t,n,r,o,a,i){var l=e.resolveComponent("SchemaForm");return e.openBlock(),e.createElementBlock("div",b,[e.createElementVNode("button",{class:"button review-add",onClick:n[0]||(n[0]=function(){return t.add&&t.add.apply(t,arguments)})},e.toDisplayString(t.__("shop.question.add")),1),e.createElementVNode("div",{class:e.normalizeClass(["modal",{"is-active":t.modal}])},[e.createElementVNode("div",{class:"modal-background",onClick:n[1]||(n[1]=function(){return t.cancel&&t.cancel.apply(t,arguments)})}),e.createElementVNode("div",E,[e.createElementVNode("button",{class:"modal-close is-large",onClick:n[2]||(n[2]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},g),e.createElementVNode("div",w,[e.createElementVNode("div",k,e.toDisplayString(t.__("shop.question.title")),1),e.withDirectives(e.createElementVNode("div",q,[(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",_,[e.createElementVNode("div",S,[e.createElementVNode("div",N,[e.createElementVNode("button",{class:e.normalizeClass(["button is-link",{"is-loading":t.loading}]),type:"submit"},e.toDisplayString(t.__("shop.question.save")),3)]),e.createElementVNode("div",V,[e.createElementVNode("button",{class:"button",onClick:n[3]||(n[3]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},e.toDisplayString(t.__("shop.question.cancel")),1)])])])]})),_:1},8,["schema","validation-schema","initial-errors","onSubmit"]))],512),[[e.vShow,!t.thanks]]),e.withDirectives(e.createElementVNode("div",C,[e.createElementVNode("div",{class:"message",innerHTML:t.__("shop.question.thanks")},null,8,j),e.createElementVNode("div",O,[e.createElementVNode("button",{class:"button",onClick:n[4]||(n[4]=function(){return t.cancel&&t.cancel.apply(t,arguments)})},e.toDisplayString(t.__("shop.question.continue")),1)])],512),[[e.vShow,t.thanks]])])])],2)])},module.exports=y;
2
+ //# sourceMappingURL=Question.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Question.js","sources":["../../../../src/components/shop/reviews/Question.vue","../../../../src/components/shop/reviews/Question.vue?vue&type=template&id=67534875&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-reviews\">\n <button class=\"button review-add\" @click=\"add\">{{ __(\"shop.question.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.question.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.question.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.question.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.question.thanks')\"></div>\n <div class=\"mt-3\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.question.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 * as yup from \"yup\";\n\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 = ref(false);\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.question.review\"),\n model: \"review\",\n },\n name: {\n component: FormText,\n label: __(\"shop.question.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n question: true,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n modal.value = true;\n\n document.documentElement.classList.add('is-modal-open');\n };\n\n const cancel = () => {\n modal.value = false;\n thanks.value = false;\n\n document.documentElement.classList.remove('is-modal-open');\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 question: true,\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('questions-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('questions-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.question.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.question.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.question.save\") }}</button>\n </div>\n <div class=\"column has-text-right\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.question.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.question.thanks')\"></div>\n <div class=\"mt-3\">\n <button\n class=\"button\"\n @click=\"cancel\"\n >{{ __(\"shop.question.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 * as yup from \"yup\";\n\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 = ref(false);\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.question.review\"),\n model: \"review\",\n },\n name: {\n component: FormText,\n label: __(\"shop.question.name\"),\n model: \"name\",\n },\n });\n\n const validation = yup.object().shape({\n review: yup.string().required(__(\"auth.validation.required\")),\n name: yup.string().required(__(\"auth.validation.required\")),\n });\n\n const model = ref({\n review: \"\",\n question: true,\n name: user.value.name,\n id: props.id,\n });\n\n useSchemaForm(model);\n\n const add = () => {\n modal.value = true;\n\n document.documentElement.classList.add('is-modal-open');\n };\n\n const cancel = () => {\n modal.value = false;\n thanks.value = false;\n\n document.documentElement.classList.remove('is-modal-open');\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 question: true,\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('questions-show-more');\n\n if (showMore) {\n showMore.addEventListener('click', () => {\n document.getElementById('questions-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","FormTextarea","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","defineComponent","name","components","props","id","Number","setup","loading","ref","store","useStore","key","errors","modal","user","computed","getters","thanks","schema","review","component","label","__","model","validation","yup","object","shape","string","required","question","value","useSchemaForm","cancel","document","documentElement","classList","remove","window","addEventListener","e","add","showMore","getElementById","querySelectorAll","forEach","$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 n=e.ref(null);return $http.post($ziggy("api.viewed"),{action:"view",slug:r.slug}),e.onMounted((function(){var e=n.value.closest("[shop-product]");e.querySelector("[shop-product-name]").textContent,e.querySelector("[shop-product-price]").childNodes[0].nodeValue.replace(/ /g,""),r.code,r.brand,r.category,window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push())})),{viewer:n}}}),n={class:"is-hidden",ref:"viewer"};r.render=function(r,t,o,a,u,i){return e.openBlock(),e.createElementBlock("span",n,null,512)},module.exports=r;
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 t=e.ref(null);return $http.post($ziggy("api.viewed"),{action:"view",slug:r.slug}),e.onMounted((function(){var e=t.value.closest("[shop-product]"),o=e.querySelector("[shop-product-name]").textContent,n=e.querySelector("[shop-product-price]").childNodes[0].nodeValue.replace(/ /g,""),c={ecommerce:{detail:{products:[{name:o,id:r.code,price:n}]}}};r.brand&&(c.ecommerce.detail.products[0].brand=r.brand),r.category&&(c.ecommerce.detail.products[0].category=r.category),window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(c))})),{viewer:t}}}),t={class:"is-hidden",ref:"viewer"};r.render=function(r,o,n,c,a,d){return e.openBlock(),e.createElementBlock("span",t,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=7b7626a7&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]\").childNodes[0].nodeValue.replace(/ /g, \"\");\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n \"price\": price,\n }]\n }\n }\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();\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]\").childNodes[0].nodeValue.replace(/ /g, \"\");\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n \"price\": price,\n }]\n }\n }\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();\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","childNodes","nodeValue","replace","window","dataLayer","push","ecommerce","_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,kBACxBF,EAAQG,cAAc,uBAAuBC,YAC5CJ,EAAQG,cAAc,wBAAwBE,WAAW,GAAGC,UAAUC,QAAQ,KAAM,IACrFrB,EAAMG,KAcfH,EAAMI,MAINJ,EAAMK,SAINiB,OAAOC,YACPD,OAAOC,UAAUC,KAAK,CAClBC,UAAW,OAGfH,OAAOC,UAAUC,WAIlB,CACHjB,OAAAA,eCzDI,YAAYC,IAAI,8DAA5BkB,4BAAAC"}
1
+ {"version":3,"file":"Viewer.js","sources":["../../../../src/components/shop/viewed/Viewer.vue","../../../../src/components/shop/viewed/Viewer.vue?vue&type=template&id=3c9ae826&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]\").childNodes[0].nodeValue.replace(/ /g, \"\");\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n \"price\": price,\n }]\n }\n }\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]\").childNodes[0].nodeValue.replace(/ /g, \"\");\n const code = props.code;\n\n let object = {\n \"ecommerce\": {\n \"detail\": {\n \"products\": [{\n \"name\": name,\n \"id\": code,\n \"price\": price,\n }]\n }\n }\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","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,wBAAwBG,WAAW,GAAGC,UAAUC,QAAQ,KAAM,IAG9FC,EAAS,WACI,QACC,UACM,CAAC,MACDxB,KANXC,EAAMG,WAQMgB,OAMrBnB,EAAMI,QACNmB,EAAOC,UAAUC,OAAOC,SAAS,GAAGtB,MAAQJ,EAAMI,OAGlDJ,EAAMK,WACNkB,EAAOC,UAAUC,OAAOC,SAAS,GAAGrB,SAAWL,EAAMK,UAGrDsB,OAAOC,YACPD,OAAOC,UAAUC,KAAK,CAClBL,UAAW,OAGfG,OAAOC,UAAUC,KAAKN,OAIvB,CACHhB,OAAAA,eCzDI,YAAYC,IAAI,8DAA5BsB,4BAAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perevorot/shop",
3
- "version": "2.0.15",
3
+ "version": "2.0.19",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"