@perevorot/shop 2.0.69 → 2.0.70
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),o=require("vuex"),n=require("formvuelate"),l=require("@formvuelate/plugin-vee-validate"),r=require("@perevorot/shop/dist/forms/FormText"),a=require("yup"),i=require("vue-toastification");function c(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(o){if("default"!==o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}})),t.default=e,Object.freeze(t)}var d=c(l),m=c(r),u=s(a),p=e.defineComponent({name:"CheckoutItem",props:{item:Object},setup:function(t){var o=e.computed((function(){return t.item.attributes.options&&t.item.attributes.options.length?t.item.attributes.options:[]}));return{itemOptions:e.computed((function(){return t.item.options&&t.item.options.length?t.item.options.filter((function(e){return-1!==o.value.indexOf(e.id)})):[]}))}}}),v={key:0,class:"column is-12"},h={class:"bundle-title"},f={class:"column name"},g={class:"column is-narrow"},k=["href"],E=["src"],y={key:1},V=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],N={class:"column"},_={class:"columns is-gapless mb-0"},b={class:"column"},B={key:0,class:"code"},C={class:"title"},S=["href"],w={class:"column is-2 has-text-centered is-relative"},D={class:"quantity"},T={key:0,class:"quantity-price"},x=["innerHTML"],L={class:"column is-2 has-text-right"},M=["innerHTML"],H=["innerHTML"],q=["innerHTML"],O={key:0,class:"options is-toggled"},P={class:"toggler"},$={class:"wrapper"},F={class:"column"},z={class:"option-title"},R={class:"column is-2 has-text-right"},j=e.createTextVNode("+"),A=["innerHTML"],U={key:0,class:"bundle columns"},J={class:"column is-narrow"},I=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),W=["href"],G=["src"],K={key:1},Q=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],X={class:"column"},Y={key:0,class:"code"},Z={class:"title"},ee=["href"],te={key:1,class:"bundle columns"},oe={class:"column is-narrow"},ne=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),le=["href"],re=["src"],ae={key:1},ie=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],ce={class:"column"},se={key:0,class:"code"},de={class:"title"},me=["href"];p.render=function(t,o,n,l,r,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["columns is-multiline shop-cart-item",{"is-bundle":t.item.attributes.bundle}])},[t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",v,[e.createElementVNode("div",h,e.toDisplayString(t.__("shop.cart.bundle")),1)])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",f,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",g,[e.createElementVNode("a",{href:t.item.attributes.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.image}])},[t.item.attributes.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.image},null,8,E)):(e.openBlock(),e.createElementBlock("svg",y,V))],2)],8,k)]),e.createElementVNode("div",N,[e.createElementVNode("div",_,[e.createElementVNode("div",b,[t.item.attributes.code?(e.openBlock(),e.createElementBlock("div",B,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",C,[e.createElementVNode("a",{href:t.item.attributes.href},e.toDisplayString(t.item.name),9,S)])]),e.createElementVNode("div",w,[e.createElementVNode("div",D,"⨉ "+e.toDisplayString(t.item.quantity),1),parseInt(t.item.quantity)>1?(e.openBlock(),e.createElementBlock("div",T,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.item.attributes.price)},null,8,x),e.createTextVNode(" / "+e.toDisplayString(t.__("shop.cart.q")),1)])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",L,[e.createElementVNode("div",{class:e.normalizeClass(["price",{"bundle-price":t.item.attributes.bundle}])},[t.item.attributes.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(t.item.attributes.priceOld*t.item.quantity)},null,8,M)):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.amount?(e.openBlock(),e.createElementBlock("div",{key:1,class:"bundle-amount",innerHTML:t.__("shop.cart.bundle_amount")+(t.item.attributes.amount.percent?t.item.attributes.amount.percent+"%":t.$filters.price(t.item.attributes.amount.sum*t.item.quantity))},null,8,H)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{innerHTML:t.$filters.price(t.item.attributes.price*t.item.quantity)},null,8,q)],2)])]),t.itemOptions&&t.itemOptions.length?(e.openBlock(),e.createElementBlock("div",O,[e.createElementVNode("div",P,[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.cart.additional"))+" "+e.toDisplayString(t.itemOptions.length),1)]),e.createElementVNode("div",$,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.itemOptions,(function(o,n){return e.openBlock(),e.createElementBlock("div",{key:n,class:"columns is-checked"},[e.createElementVNode("div",F,[e.createElementVNode("div",z,e.toDisplayString(o.name),1)]),e.createElementVNode("div",R,[j,e.createElementVNode("span",{innerHTML:t.$filters.price(o.price)},null,8,A)])])})),128))])])):e.createCommentVNode("v-if",!0)])],2),t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("div",J,[I,e.createElementVNode("a",{href:t.item.attributes.second.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.second.image}])},[t.item.attributes.second.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.second.image},null,8,G)):(e.openBlock(),e.createElementBlock("svg",K,Q))],2)],8,W)]),e.createElementVNode("div",X,[t.item.attributes.second.code?(e.openBlock(),e.createElementBlock("div",Y,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.second.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",Z,[e.createElementVNode("a",{href:t.item.attributes.second.href},e.toDisplayString(t.item.attributes.second.name),9,ee)])])])):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.third?(e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("div",oe,[ne,e.createElementVNode("a",{href:t.item.attributes.third.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.third.image}])},[t.item.attributes.third.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.third.image},null,8,re)):(e.openBlock(),e.createElementBlock("svg",ae,ie))],2)],8,le)]),e.createElementVNode("div",ce,[t.item.attributes.third.code?(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.third.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",de,[e.createElementVNode("a",{href:t.item.attributes.third.href},e.toDisplayString(t.item.attributes.third.name),9,me)])])])):e.createCommentVNode("v-if",!0)])],2)},e.markRaw(m.default);var ue=n.SchemaFormFactory([d.default({})]),pe={props:{message:""},template:'<div v-html="message"></div>'};window.viewedSwiperOptions={slidesPerView:"auto",freeMode:!0,slideClass:"product",mousewheel:{forceToAxis:!0},navigation:{nextEl:".next",prevEl:".prev"},observer:!0,observeParents:!0};var ve=e.defineComponent({components:{CheckoutItem:p,SchemaForm:ue},props:{isLogin:{type:Boolean,default:!0},isPromoCode:{type:Boolean,default:!0}},name:"order-checkout",setup:function(){var l=i.useToast(),r=o.useStore(),a=e.ref(!1),c=e.computed((function(){return r.getters["cart/quantity"]})),s=e.computed((function(){return r.getters["cart/items"]})),d=e.computed((function(){return r.getters["cart/total"]})),p=e.computed((function(){return r.getters["auth/is"]})),v=e.computed((function(){return r.getters["checkout/user"]})),h=e.ref(!0),f=e.ref(null),g=e.ref(!1),k=e.ref(null),E=e.ref({}),y=e.ref([]),V=e.ref([]),N=e.ref("new"),_=e.ref(null),b=e.computed((function(){return r.getters["checkout/shippingData"]})),B=e.ref(!1),C=e.ref(!1),S=e.ref(""),w=e.ref(null),D=e.ref(!1),T=e.getCurrentInstance(),x=e.computed({get:function(){return r.getters["checkout/dontcall"]},set:function(e){r.commit("checkout/dontcall",e)}}),L=e.computed({get:function(){var e=r.getters["checkout/comment"];return e&&(B.value=!0),e},set:function(e){r.commit("checkout/comment",e)}});e.watch(L,(function(e){e.length>1e3&&(L.value=L.value.substring(0,1e3))}));var M=function(t){return e.computed({get:function(){return v.value[t]},set:function(e){var o=JSON.parse(JSON.stringify(v.value));o[t]=e,r.commit("checkout/user",o)}})},H=e.ref({last_name:M("last_name"),name:M("name"),email:M("email"),phone:M("phone")});r.dispatch("auth/me",{finally:function(){}});var q=e.computed({get:function(){return r.getters["checkout/shipping"]},set:function(e){r.commit("checkout/shipping",e)}}),O=e.computed({get:function(){return r.getters["checkout/payment"]},set:function(e){r.commit("checkout/payment",e)}}),P=e.computed((function(){return q.value?y.value.find((function(e){return e.id==q.value})):{}})),$=e.computed((function(){return O.value?V.value.find((function(e){return e.id==O.value})):{}})),F=e.computed((function(){return U(y.value,q.value)})),z=e.computed((function(){return U(V.value,O.value)})),R=e.computed((function(){return J(y.value)})),j=e.computed((function(){return J(V.value)})),A=e.computed((function(){var e=[];return s.value.forEach((function(t){-1===e.indexOf(t.category_id)&&e.push(t.category_id)})),e})),U=function(e,t){var o=0;if(t){var n=e.find((function(e){return e.id==t}));n&&(o="sum"==n.type?n.amount:Math.round(d.value*n.amount/100))}return o},J=function(e){var t=[];return e.forEach((function(e){if(e.restrictions&&Object.keys(e.restrictions).length){var o=!0,n=e.restrictions;n.price_min&&n.price_max?(o=d.value>=n.price_min&&d.value<=n.price_max,e.restrictedForce=!o):n.price_min?(o=d.value>=n.price_min,e.restrictedForce=!o):n.price_max&&(o=d.value<=n.price_max,e.restrictedForce=!o),o&&q.value&&n.shipping_type&&n.shipping_type.length&&(o=-1!==n.shipping_type.indexOf(q.value)),o&&O.value&&n.payment_method&&n.payment_method.length&&(o=-1!==n.payment_method.indexOf(O.value)),o&&n.categories&&n.categories.length&&(o=!A.value.filter((function(e){return!n.categories.includes(e)})).length,e.restrictedForce=!o),e.restricted=!o}else e.restricted=!1;e.restrictedForce||t.push(e)})),t},I=e.computed((function(){var e=0;return s.value.forEach((function(t){var o=0;t.attributes.priceOld&&(o=t.attributes.priceOld-t.attributes.price),e+=o*t.quantity})),e}));$http.post(window.location.href).then((function(e){y.value=e.data.shipping,V.value=e.data.payment})),e.watch(N,(function(e){"login"==e&&r.commit("auth/modal","login")}));var W=e.ref({last_name:{component:m.default,label:__("auth.registration.form.last_name"),model:"last_name"},name:{component:m.default,label:__("auth.registration.form.name"),model:"first_name"},phone:{component:m.default,label:__("auth.registration.form.phone"),model:"phone",mask:"(###) ###-##-##",type:"phone"},email:{component:m.default,label:__("auth.login.form.email"),model:"email"}});n.useSchemaForm(H);var G=u.object().shape({last_name:u.string().trim().required(__("auth.validation.required")),name:u.string().trim().required(__("auth.validation.required")),phone:u.string().required(__("auth.validation.phone")).matches(/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")),email:u.string().trim().email(__("auth.validation.email")).required(__("auth.validation.required"))});window.addEventListener("beforeunload",(function(){r.commit("auth/modal",null)})),window.addEventListener("pagehide",(function(){r.commit("auth/modal",null)}));var K=function(){r.commit("checkout/reset")};return{auth:p,userType:N,facebook:function(){window.location.href=$ziggy("auth.login.social",{provider:"facebook"})},google:function(){window.location.href=$ziggy("auth.login.social",{provider:"google"})},loginCallback:function(){N.value="new"},quantity:c,items:s,loading:a,pluralize:t.pluralize,discount:I,total:d,shipping:q,shippingPrice:F,payment:O,fee:z,userValidation:G,userSchema:W,userSubmitButton:_,checkout:function(){G.isValid(H.value).then((function(e){if(e)if(q.value)if(!P.value.component||b.value[P.value.code]&&b.value[P.value.code].isValid)if(O.value){var t,o=b.value[P.value.code]?JSON.parse(JSON.stringify(b.value[P.value.code])):{};if(delete o.isValid,document.cookie)document.cookie.split(";").forEach((function(e){var o=e.split("=");"_ga"===o[0].trim()&&(t=o[1].split(".")[2]+"."+o[1].split(".")[3])}));var n={checkout:!0,user:{last_name:H.value.last_name,name:H.value.name,phone:H.value.phone,email:H.value.email},shipping:{id:q.value,data:o},payment:{id:O.value},comment:L.value,dontcall:x.value,promoCode:S.value,clientId:t};a.value=!0,$http.post(window.location.href,n).then((function(e){if(e.data.redirect)E.value={url:e.data.redirect.url,data:e.data.redirect.data};else{var t=[];s.value.forEach((function(e){t.push({name:e.name,id:e.attributes.code,price:e.attributes.price,brand:e.attributes.brand,category:e.attributes.category,quantity:e.quantity})}));var o={ecommerce:{purchase:{actionField:{id:e.data.order.id,affiliation:"mrfix.ua",revenue:d.value+z.value+F.value,tax:"0",shipping:F.value},products:[t]}},event:"gtm-ee-event","gtm-ee-event-category":"Ecommerce","gtm-ee-event-action":"Purchase","gtm-ee-event-non-interaction":"False",eventTimeout:2e3};window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(o))}g.value=!0,k.value=e.data.order,K()})).catch((function(e){l(__("shop.order.error"),{type:"error"}),console.error(e)})).finally((function(){a.value=!1}))}else l(__("shop.order.validate_payment"),{type:"error"});else l(__("shop.order.validate_shipping1")+": «"+P.value.name+"»",{type:"error"});else l(__("shop.order.validate_shipping"),{type:"error"});else N.value="new",_.value.click(),l(__("shop.order.validate_user"),{type:"error"})}))},ifCheckoutReady:h,validate:function(){G.isValid(H.value).then((function(e){h.value=e&&O.value&&q.value&&(!P.value.component||P.value.component&&b.value[P.value.code]&&b.value[P.value.code].isValid)}))},shippingTypesRestricted:R,paymentMethodsRestricted:j,toggleShippingRadio:function(e){q.value===e&&(q.value=null)},togglePaymentRadio:function(e){O.value===e&&(O.value=null)},shippingSelected:P,paymentSelected:$,shippingComponentData:b,shippingStoreData:function(e,t,o){var n=JSON.parse(JSON.stringify(b.value));t.isValid=o,n[e]=t,r.commit("checkout/shippingData",n)},resertStore:K,user:H,dontcall:x,comment:L,isCommentToggled:B,commentMaxLength:1e3,userCheckout:v,thanks:g,order:k,redirect:E,redirectForm:f,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"},isPromoCodeToggled:C,applyPromoCode:function(){S.value&&(D.value=!0,$http.post(window.location.href,{promoCodeApply:S.value,email:H.value.email,total:d.value}).then((function(e){w.value=e.data})).catch((function(e){e.response&&e.response.data.length&&(e.response.data.forEach((function(e){var t={component:pe,props:{message:__("shop.order.promo.error_"+e.error,{number:T.appContext.config.globalProperties.$filters.price(e.number)})}};l(t,{type:"error"}),"not_found"==e.error&&(S.value="")})),w.value=null)})).finally((function(){D.value=!1})))},promoCode:S,isPromoLoading:D,promoCodeApplied:w,resetPromoCode:function(){S.value="",w.value=null},calculateWithPromoCodeDiscount:function(){var e=d.value+z.value+F.value;return w.value&&"percent"==w.value.type?Math.round(e-e*w.value.amount/100):w.value&&"discount"==w.value.type?Math.max(0,e-w.value.amount):e}}}}),he={class:"cart checkout"},fe=["action"],ge=["name","value"],ke={key:1,class:"items-wrapper"},Ee={class:"checkout-title"},ye={class:"columns"},Ve={class:"column"},Ne={class:"checkout-block items"},_e={class:"title-row"},be={class:"items-title"},Be=["textContent"],Ce=e.createTextVNode(" "),Se=["innerHTML"],we=["onClick"],De=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-edit"})],-1),Te={class:"checkout-block"},xe={class:"wrapper"},Le={class:"items-title"},Me={key:0,class:"user-tabs"},He={class:"columns"},qe={class:"column user-form"},Oe={type:"submit",ref:"userSubmitButton",class:"is-hidden"},Pe={key:0,class:"column user-login user-form"},$e={key:1,class:"column"},Fe={key:0,class:"social-auth"},ze={class:"socials"},Re={class:"description"},je={class:"buttons"},Ae=[e.createElementVNode("svg",{class:"icon fb-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-facebook-icon"})],-1),e.createElementVNode("span",null,"Facebook",-1)],Ue=[e.createElementVNode("svg",{class:"icon google-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-google-icon"})],-1),e.createElementVNode("span",null,"Google",-1)],Je={class:"wrapper"},Ie={class:"rows"},We={class:"item"},Ge={class:"row"},Ke={class:"info"},Qe={class:"items-title mb-1"},Xe={key:0,class:"value"},Ye={class:"next-dates"},Ze={class:"row"},et={class:"info"},tt=["value","onClick"],ot=["src"],nt={key:1,class:"icon"},lt=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],rt={key:0,class:"description"},at={class:"value"},it={key:0,class:"green"},ct=["innerHTML"],st={class:"wrapper"},dt={class:"rows"},mt={class:"item"},ut={class:"row"},pt={class:"info"},vt={class:"items-title mb-1"},ht={class:"row no-icon"},ft={class:"info"},gt=["value","onClick"],kt={key:0,class:"description"},Et={key:0,class:"value"},yt=["innerHTML"],Vt={class:"column is-4"},Nt={class:"checkout-block summary"},_t={class:"items-title"},bt={class:"rows"},Bt={class:"row"},Ct={class:"info"},St=["textContent"],wt={class:"value"},Dt=["innerHTML"],Tt={key:0,class:"row"},xt={class:"info"},Lt={class:"value"},Mt=["innerHTML"],Ht={key:1,class:"row"},qt={class:"info"},Ot={class:"value"},Pt=["innerHTML"],$t={key:2,class:"row"},Ft={class:"info"},zt={class:"value"},Rt=["innerHTML"],jt={key:1,class:"green"},At={key:3,class:"row"},Ut={class:"info"},Jt=e.createElementVNode("br",null,null,-1),It={class:"green"},Wt={class:"value"},Gt=["innerHTML"],Kt={class:"row"},Qt={class:"info"},Xt={class:"value orange"},Yt=["innerHTML"],Zt={class:"checkbox-wrapper"},eo=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),to={class:"user-form is-promo-code"},oo={class:"control"},no=["disabled"],lo={class:"label",for:"promo-code-applied"},ro=["disabled"],ao=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),io={class:"user-form"},co={key:0,class:"chars-count"},so={key:2,class:"checkout-block thanks"},mo={class:"title"},uo={class:"columns"},po={key:0,class:"column is-6"},vo={class:"subtitle"},ho={key:1,class:"column is-6"},fo={class:"column is-6"},go={key:0,class:"info-wrapper"},ko={class:"title"},Eo={class:"columns"},yo=["innerHTML"],Vo=["innerHTML"],No={key:1,class:"info-wrapper"},_o={class:"title"},bo={class:"columns"},Bo=["innerHTML"],Co=["innerHTML"],So={key:2,class:"info-wrapper"},wo={class:"title"},Do={class:"columns"},To={class:"column is-6"},xo=["innerHTML"],Lo={key:3,class:"checkout-block empty"},Mo={class:"title"},Ho={class:"message"},qo=["href"],Oo=e.createTextVNode(", "),Po=e.createElementVNode("br",null,null,-1),$o=["href"];ve.render=function(t,o,n,l,r,a){var i=e.resolveComponent("checkout-item"),c=e.resolveComponent("cart-trigger"),s=e.resolveComponent("SchemaForm"),d=e.resolveComponent("login");return e.openBlock(),e.createElementBlock("div",he,[t.redirect.url?(e.openBlock(),e.createElementBlock("form",{key:0,ref:"redirectForm",action:t.redirect.url,class:"is-hidden",method:"post",target:"_blank"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.redirect.data,(function(t,o,n){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:o,value:t,key:n},null,8,ge)})),128))],8,fe)):e.createCommentVNode("v-if",!0),t.items.length&&!t.thanks?(e.openBlock(),e.createElementBlock("div",ke,[e.createElementVNode("div",Ee,e.toDisplayString(t.__("shop.order.checkout_title")),1),e.createElementVNode("div",ye,[e.createElementVNode("div",Ve,[e.createElementVNode("div",Ne,[e.createElementVNode("div",_e,[e.createElementVNode("div",be,[e.createTextVNode(e.toDisplayString(t.__("shop.order.your_order"))+" ",1),e.createElementVNode("span",{class:"ml-3",textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,Be),Ce,e.createElementVNode("span",{innerHTML:t.__("shop.cart.bysum")+" "+t.$filters.price(t.total)},null,8,Se)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(i,{key:t.id,item:t},null,8,["item"])})),128)),e.createVNode(c,{class:"trigger"},{default:e.withCtx((function(o){return[e.createElementVNode("button",{class:"button",onClick:o.open},[De,e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.edit")),1)],8,we)]})),_:1})]),e.createCommentVNode(' <button @click="resertStore" style="position: fixed; bottom: 1px; right: 1px; z-index: 1000">reset</button> '),e.createElementVNode("div",Te,[e.createElementVNode("div",xe,[e.createElementVNode("div",Le,e.toDisplayString(t.__("shop.order.contact_title")),1),!t.auth&&t.isLogin?(e.openBlock(),e.createElementBlock("div",Me,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[0]||(o[0]=function(e){return t.userType=e}),value:"new"},null,512),[[e.vModelRadio,t.userType]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.auth_new")),1)]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[1]||(o[1]=function(e){return t.userType=e}),value:"login"},null,512),[[e.vModelRadio,t.userType]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.auth_old")),1)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",He,[e.withDirectives(e.createElementVNode("div",qe,[e.createVNode(s,{schemaRowClasses:"field",schema:t.userSchema,"validation-schema":t.userValidation},{afterForm:e.withCtx((function(){return[e.createElementVNode("button",Oe,null,512)]})),_:1},8,["schema","validation-schema"])],512),[[e.vShow,"new"==t.userType]]),t.isLogin?e.withDirectives((e.openBlock(),e.createElementBlock("div",Pe,[e.createVNode(d,{"login-callback":t.loginCallback},null,8,["login-callback"])],512)),[[e.vShow,"login"==t.userType]]):e.createCommentVNode("v-if",!0),t.isLogin?(e.openBlock(),e.createElementBlock("div",$e,[t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("div",ze,[e.createElementVNode("div",Re,e.toDisplayString(t.__("shop.order.auth_social")),1),e.createElementVNode("div",je,[e.createElementVNode("a",{class:"button",onClick:o[2]||(o[2]=function(){return t.facebook&&t.facebook.apply(t,arguments)})},Ae),e.createElementVNode("a",{class:"button",onClick:o[3]||(o[3]=function(){return t.google&&t.google.apply(t,arguments)})},Ue)])])]))])):e.createCommentVNode("v-if",!0)])]),e.createElementVNode("div",Je,[e.createElementVNode("div",Ie,[e.createElementVNode("div",We,[e.createElementVNode("div",Ge,[e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,e.toDisplayString(t.__("shop.order.shipping")),1)]),t.shippingSelected&&t.shippingSelected.nextDates?(e.openBlock(),e.createElementBlock("div",Xe,[e.createElementVNode("div",Ye,"на "+e.toDisplayString(t.shippingSelected.nextDates),1)])):e.createCommentVNode("v-if",!0),e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.shippingTypesRestricted,(function(n){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":n.restricted}]),key:n.id},[e.createElementVNode("div",Ze,[e.createElementVNode("div",et,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[5]||(o[5]=function(e){return t.shipping=e}),value:n.id,onClick:function(e){return t.toggleShippingRadio(n.id)}},null,8,tt),[[e.vModelRadio,t.shipping]]),n.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:n.icon},null,8,ot)):(e.openBlock(),e.createElementBlock("svg",nt,lt)),e.createElementVNode("span",null,e.toDisplayString(n.name),1)]),n.description?(e.openBlock(),e.createElementBlock("div",rt,e.toDisplayString(n.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",at,[!n.amount&&n.price_label?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(n.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==n.type?n.amount+"%":t.$filters.price(n.amount)},null,8,ct))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:n},null,8,["commit","data","item"])),[[e.vShow,n.component&&n.id==t.shipping]])],2)})),128))])]),e.createElementVNode("div",st,[e.createElementVNode("div",dt,[e.createElementVNode("div",mt,[e.createElementVNode("div",ut,[e.createElementVNode("div",pt,[e.createElementVNode("div",vt,e.toDisplayString(t.__("shop.order.payment")),1)]),e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.paymentMethodsRestricted,(function(n){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":n.restricted}]),key:n.id},[e.createElementVNode("div",ht,[e.createElementVNode("div",ft,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[7]||(o[7]=function(e){return t.payment=e}),value:n.id,onClick:function(e){return t.togglePaymentRadio(n.id)}},null,8,gt),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(n.name),1)]),n.description?(e.openBlock(),e.createElementBlock("div",kt,e.toDisplayString(n.description),1)):e.createCommentVNode("v-if",!0)]),n.amount?(e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("span",{innerHTML:"percent"==n.type?n.amount+"%":t.$filters.price(n.amount)},null,8,yt)])):e.createCommentVNode("v-if",!0)])],2)})),128))])])])]),e.createElementVNode("div",Vt,[e.createElementVNode("div",Nt,[e.createElementVNode("div",_t,e.toDisplayString(t.__("shop.order.total")),1),e.createElementVNode("div",bt,[e.createElementVNode("div",Bt,[e.createElementVNode("div",Ct,[e.createElementVNode("span",{textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,St),e.createTextVNode(" "+e.toDisplayString(t.__("shop.cart.bysum")),1)]),e.createElementVNode("div",wt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,Dt)])]),t.discount?(e.openBlock(),e.createElementBlock("div",Tt,[e.createElementVNode("div",xt,e.toDisplayString(t.__("shop.order.discount")),1),e.createElementVNode("div",Lt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.discount)},null,8,Mt)])])):e.createCommentVNode("v-if",!0),t.fee>0?(e.openBlock(),e.createElementBlock("div",Ht,[e.createElementVNode("div",qt,e.toDisplayString(t.__("shop.order.fee")),1),e.createElementVNode("div",Ot,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.fee)},null,8,Pt)])])):e.createCommentVNode("v-if",!0),t.shipping?(e.openBlock(),e.createElementBlock("div",$t,[e.createElementVNode("div",Ft,e.toDisplayString(t.__("shop.order.shipping_price")),1),e.createElementVNode("div",zt,[t.shippingPrice>0?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:t.$filters.price(t.shippingPrice)},null,8,Rt)):t.shippingSelected&&t.shippingSelected.price_label?(e.openBlock(),e.createElementBlock("span",jt,e.toDisplayString(t.shippingSelected.price_label),1)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.promoCodeApplied?(e.openBlock(),e.createElementBlock("div",At,[e.createElementVNode("div",Ut,[e.createTextVNode(e.toDisplayString(t.__("shop.order.promo_code")),1),Jt,e.createElementVNode("span",It,e.toDisplayString(t.promoCode),1)]),e.createElementVNode("div",Wt,[e.createElementVNode("span",{innerHTML:"percent"==t.promoCodeApplied.type?t.promoCodeApplied.amount+"%":t.$filters.price(t.promoCodeApplied.amount)},null,8,Gt)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",Kt,[e.createElementVNode("div",Qt,e.toDisplayString(t.__("shop.order.price")),1),e.createElementVNode("div",Xt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.calculateWithPromoCodeDiscount())},null,8,Yt)])])]),e.createElementVNode("div",Zt,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"checkbox","onUpdate:modelValue":o[8]||(o[8]=function(e){return t.dontcall=e})},null,512),[[e.vModelCheckbox,t.dontcall]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.nocall")),1)])]),e.createElementVNode("button",{class:e.normalizeClass(["button submit",{red:!t.ifCheckoutReady,"is-loading":t.loading}]),onClick:o[9]||(o[9]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),onMouseenter:o[10]||(o[10]=function(){return t.validate&&t.validate.apply(t,arguments)})},e.toDisplayString(t.__("shop.order.action")),35),t.isPromoCode?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["comment-wrapper is-promo-code",{"is-open":t.isPromoCodeToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:o[11]||(o[11]=function(e){return t.isPromoCodeToggled=!t.isPromoCodeToggled})},[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.promo_code")),1),eo]),e.createElementVNode("div",to,[e.createElementVNode("div",oo,[e.withDirectives(e.createElementVNode("input",{type:"text",class:"input",placeholder:" ","onUpdate:modelValue":o[12]||(o[12]=function(e){return t.promoCode=e}),disabled:t.promoCodeApplied,id:"promo-code-applied"},null,8,no),[[e.vModelText,t.promoCode]]),e.createElementVNode("label",lo,e.toDisplayString(t.__("shop.order.promo.placeholder")),1)]),t.promoCodeApplied?(e.openBlock(),e.createElementBlock("button",{key:1,class:"button",onClick:o[14]||(o[14]=function(){return t.resetPromoCode&&t.resetPromoCode.apply(t,arguments)})},e.toDisplayString(t.__("shop.order.promo.reset")),1)):(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["button",{"is-loading":t.isPromoLoading}]),onClick:o[13]||(o[13]=function(){return t.applyPromoCode&&t.applyPromoCode.apply(t,arguments)}),disabled:!t.promoCode},e.toDisplayString(t.__("shop.order.promo.apply")),11,ro))])],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(["comment-wrapper",{"is-open":t.isCommentToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:o[15]||(o[15]=function(e){return t.isCommentToggled=!t.isCommentToggled})},[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.comment")),1),ao]),e.createElementVNode("div",io,[e.withDirectives(e.createElementVNode("textarea",{class:"textarea","onUpdate:modelValue":o[16]||(o[16]=function(e){return t.comment=e})},null,512),[[e.vModelText,t.comment]]),t.comment.length?(e.openBlock(),e.createElementBlock("div",co,e.toDisplayString(t.commentMaxLength-t.comment.length),1)):e.createCommentVNode("v-if",!0)])],2)])])])])):t.thanks&&t.order?(e.openBlock(),e.createElementBlock("div",so,[e.createElementVNode("div",mo,[e.createTextVNode(e.toDisplayString(t.__("shop.order.order"))+" ",1),e.createElementVNode("span",null,"№"+e.toDisplayString(t.order.id),1),e.createTextVNode(" "+e.toDisplayString(t.__("shop.order.success")),1)]),e.createElementVNode("div",uo,[t.redirect.url?(e.openBlock(),e.createElementBlock("div",po,[e.createElementVNode("div",vo,e.toDisplayString(t.__("shop.order.pay_online")),1),e.createElementVNode("button",{class:"button is-payment",onClick:o[17]||(o[17]=function(e){return t.redirectForm.submit()})},e.toDisplayString(t.__("shop.order.pay_online_go")),1)])):(e.openBlock(),e.createElementBlock("div",ho,[e.createElementVNode("button",{class:"button is-orange",onClick:o[18]||(o[18]=function(){return t.home&&t.home.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1)])),e.createElementVNode("div",fo,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("div",ko,e.toDisplayString(t.__("shop.order.shipping")),1),e.createElementVNode("div",Eo,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.shipping[0]},null,8,yo)):e.createCommentVNode("v-if",!0),t.order.shipping[1]?(e.openBlock(),e.createElementBlock("div",{key:1,class:"column is-6",innerHTML:t.order.shipping[1]},null,8,Vo)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",No,[e.createElementVNode("div",_o,e.toDisplayString(t.__("shop.order.payment")),1),e.createElementVNode("div",bo,[t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.payment[0]},null,8,Bo)):e.createCommentVNode("v-if",!0),t.order.payment[1]?(e.openBlock(),e.createElementBlock("div",{key:1,class:"column is-6",innerHTML:t.order.payment[1]},null,8,Co)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.promoCode?(e.openBlock(),e.createElementBlock("div",So,[e.createElementVNode("div",wo,e.toDisplayString(t.__("shop.order.promo_code")),1),e.createElementVNode("div",Do,[e.createElementVNode("div",To,[e.createElementVNode("span",{innerHTML:t.order.promoCode,class:"green"},null,8,xo)])])])):e.createCommentVNode("v-if",!0)])])])):(e.openBlock(),e.createElementBlock("div",Lo,[e.createElementVNode("div",Mo,e.toDisplayString(t.__("shop.cart.no_no")),1),e.createElementVNode("div",Ho,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_prop"))+" ",1),e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.no_home")),9,qo),Oo,Po,e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_search")),1)]),e.createElementVNode("a",{class:"button continue",href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.continue")),9,$o)]))])},module.exports=ve;
|
|
1
|
+
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),o=require("vuex"),n=require("formvuelate"),l=require("@formvuelate/plugin-vee-validate"),r=require("@perevorot/shop/dist/forms/FormText"),a=require("yup"),i=require("vue-toastification");function c(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(o){if("default"!==o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}})),t.default=e,Object.freeze(t)}var d=c(l),m=c(r),u=s(a),p=e.defineComponent({name:"CheckoutItem",props:{item:Object},setup:function(t){var o=e.computed((function(){return t.item.attributes.options&&t.item.attributes.options.length?t.item.attributes.options:[]}));return{itemOptions:e.computed((function(){return t.item.options&&t.item.options.length?t.item.options.filter((function(e){return-1!==o.value.indexOf(e.id)})):[]}))}}}),v={key:0,class:"column is-12"},h={class:"bundle-title"},f={class:"column name"},g={class:"column is-narrow"},k=["href"],E=["src"],y={key:1},V=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],N={class:"column"},_={class:"columns is-gapless mb-0"},b={class:"column"},B={key:0,class:"code"},C={class:"title"},S=["href"],w={class:"column is-2 has-text-centered is-relative"},D={class:"quantity"},T={key:0,class:"quantity-price"},x=["innerHTML"],L={class:"column is-2 has-text-right"},M=["innerHTML"],H=["innerHTML"],q=["innerHTML"],$={key:0,class:"options is-toggled"},O={class:"toggler"},P={class:"wrapper"},z={class:"column"},F={class:"option-title"},R={class:"column is-2 has-text-right"},j=e.createTextVNode("+"),A=["innerHTML"],U={key:0,class:"bundle columns"},J={class:"column is-narrow"},I=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),W=["href"],G=["src"],K={key:1},Q=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],X={class:"column"},Y={key:0,class:"code"},Z={class:"title"},ee=["href"],te={key:1,class:"bundle columns"},oe={class:"column is-narrow"},ne=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),le=["href"],re=["src"],ae={key:1},ie=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],ce={class:"column"},se={key:0,class:"code"},de={class:"title"},me=["href"];p.render=function(t,o,n,l,r,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["columns is-multiline shop-cart-item",{"is-bundle":t.item.attributes.bundle}])},[t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",v,[e.createElementVNode("div",h,e.toDisplayString(t.__("shop.cart.bundle")),1)])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",f,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",g,[e.createElementVNode("a",{href:t.item.attributes.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.image}])},[t.item.attributes.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.image},null,8,E)):(e.openBlock(),e.createElementBlock("svg",y,V))],2)],8,k)]),e.createElementVNode("div",N,[e.createElementVNode("div",_,[e.createElementVNode("div",b,[t.item.attributes.code?(e.openBlock(),e.createElementBlock("div",B,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",C,[e.createElementVNode("a",{href:t.item.attributes.href},e.toDisplayString(t.item.name),9,S)])]),e.createElementVNode("div",w,[e.createElementVNode("div",D,"⨉ "+e.toDisplayString(t.item.quantity),1),parseInt(t.item.quantity)>1?(e.openBlock(),e.createElementBlock("div",T,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.item.attributes.price)},null,8,x),e.createTextVNode(" / "+e.toDisplayString(t.__("shop.cart.q")),1)])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",L,[e.createElementVNode("div",{class:e.normalizeClass(["price",{"bundle-price":t.item.attributes.bundle}])},[t.item.attributes.priceOld?(e.openBlock(),e.createElementBlock("div",{key:0,class:"price-old",innerHTML:t.$filters.price(t.item.attributes.priceOld*t.item.quantity)},null,8,M)):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.amount?(e.openBlock(),e.createElementBlock("div",{key:1,class:"bundle-amount",innerHTML:t.__("shop.cart.bundle_amount")+(t.item.attributes.amount.percent?t.item.attributes.amount.percent+"%":t.$filters.price(t.item.attributes.amount.sum*t.item.quantity))},null,8,H)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{innerHTML:t.$filters.price(t.item.attributes.price*t.item.quantity)},null,8,q)],2)])]),t.itemOptions&&t.itemOptions.length?(e.openBlock(),e.createElementBlock("div",$,[e.createElementVNode("div",O,[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.cart.additional"))+" "+e.toDisplayString(t.itemOptions.length),1)]),e.createElementVNode("div",P,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.itemOptions,(function(o,n){return e.openBlock(),e.createElementBlock("div",{key:n,class:"columns is-checked"},[e.createElementVNode("div",z,[e.createElementVNode("div",F,e.toDisplayString(o.name),1)]),e.createElementVNode("div",R,[j,e.createElementVNode("span",{innerHTML:t.$filters.price(o.price)},null,8,A)])])})),128))])])):e.createCommentVNode("v-if",!0)])],2),t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("div",J,[I,e.createElementVNode("a",{href:t.item.attributes.second.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.second.image}])},[t.item.attributes.second.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.second.image},null,8,G)):(e.openBlock(),e.createElementBlock("svg",K,Q))],2)],8,W)]),e.createElementVNode("div",X,[t.item.attributes.second.code?(e.openBlock(),e.createElementBlock("div",Y,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.second.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",Z,[e.createElementVNode("a",{href:t.item.attributes.second.href},e.toDisplayString(t.item.attributes.second.name),9,ee)])])])):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.third?(e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("div",oe,[ne,e.createElementVNode("a",{href:t.item.attributes.third.href},[e.createElementVNode("figure",{class:e.normalizeClass(["image is-square",{"no-thumb":!t.item.attributes.third.image}])},[t.item.attributes.third.image?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.item.attributes.third.image},null,8,re)):(e.openBlock(),e.createElementBlock("svg",ae,ie))],2)],8,le)]),e.createElementVNode("div",ce,[t.item.attributes.third.code?(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(t.__("shop.cart.code"))+" "+e.toDisplayString(t.item.attributes.third.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",de,[e.createElementVNode("a",{href:t.item.attributes.third.href},e.toDisplayString(t.item.attributes.third.name),9,me)])])])):e.createCommentVNode("v-if",!0)])],2)},e.markRaw(m.default);var ue=n.SchemaFormFactory([d.default({})]),pe={props:{message:""},template:'<div v-html="message"></div>'};window.viewedSwiperOptions={slidesPerView:"auto",freeMode:!0,slideClass:"product",mousewheel:{forceToAxis:!0},navigation:{nextEl:".next",prevEl:".prev"},observer:!0,observeParents:!0};var ve=e.defineComponent({components:{CheckoutItem:p,SchemaForm:ue},props:{isLogin:{type:Boolean,default:!0},isPromoCode:{type:Boolean,default:!0},isConsent:{type:Boolean,default:!1}},name:"order-checkout",setup:function(l){var r=i.useToast(),a=o.useStore(),c=e.ref(!1),s=e.computed((function(){return a.getters["cart/quantity"]})),d=e.computed((function(){return a.getters["cart/items"]})),p=e.computed((function(){return a.getters["cart/total"]})),v=e.computed((function(){return a.getters["auth/is"]})),h=e.computed((function(){return a.getters["checkout/user"]})),f=e.ref(!0),g=e.ref(null),k=e.ref(!1),E=e.ref(null),y=e.ref(!1),V=e.ref({}),N=e.ref([]),_=e.ref([]),b=e.ref("new"),B=e.ref(null),C=e.computed((function(){return a.getters["checkout/shippingData"]})),S=e.ref(!1),w=e.ref(!1),D=e.ref(""),T=e.ref(null),x=e.ref(!1),L=e.getCurrentInstance(),M=e.computed((function(){return l.isConsent&&y.value||!l.isConsent})),H=e.computed({get:function(){return a.getters["checkout/dontcall"]},set:function(e){a.commit("checkout/dontcall",e)}}),q=e.computed({get:function(){var e=a.getters["checkout/comment"];return e&&(S.value=!0),e},set:function(e){a.commit("checkout/comment",e)}});e.watch(q,(function(e){e.length>1e3&&(q.value=q.value.substring(0,1e3))}));var $=function(t){return e.computed({get:function(){return h.value[t]},set:function(e){var o=JSON.parse(JSON.stringify(h.value));o[t]=e,a.commit("checkout/user",o)}})},O=e.ref({last_name:$("last_name"),name:$("name"),email:$("email"),phone:$("phone")});a.dispatch("auth/me",{finally:function(){}});var P=e.computed({get:function(){return a.getters["checkout/shipping"]},set:function(e){a.commit("checkout/shipping",e)}}),z=e.computed({get:function(){return a.getters["checkout/payment"]},set:function(e){a.commit("checkout/payment",e)}}),F=e.computed((function(){return P.value?N.value.find((function(e){return e.id==P.value})):{}})),R=e.computed((function(){return z.value?_.value.find((function(e){return e.id==z.value})):{}})),j=e.computed((function(){return W(N.value,P.value)})),A=e.computed((function(){return W(_.value,z.value)})),U=e.computed((function(){return G(N.value)})),J=e.computed((function(){return G(_.value)})),I=e.computed((function(){var e=[];return d.value.forEach((function(t){-1===e.indexOf(t.category_id)&&e.push(t.category_id)})),e})),W=function(e,t){var o=0;if(t){var n=e.find((function(e){return e.id==t}));n&&(o="sum"==n.type?n.amount:Math.round(p.value*n.amount/100))}return o},G=function(e){var t=[];return e.forEach((function(e){if(e.restrictions&&Object.keys(e.restrictions).length){var o=!0,n=e.restrictions;n.price_min&&n.price_max?(o=p.value>=n.price_min&&p.value<=n.price_max,e.restrictedForce=!o):n.price_min?(o=p.value>=n.price_min,e.restrictedForce=!o):n.price_max&&(o=p.value<=n.price_max,e.restrictedForce=!o),o&&P.value&&n.shipping_type&&n.shipping_type.length&&(o=-1!==n.shipping_type.indexOf(P.value)),o&&z.value&&n.payment_method&&n.payment_method.length&&(o=-1!==n.payment_method.indexOf(z.value)),o&&n.categories&&n.categories.length&&(o=!I.value.filter((function(e){return!n.categories.includes(e)})).length,e.restrictedForce=!o),e.restricted=!o}else e.restricted=!1;e.restrictedForce||t.push(e)})),t},K=e.computed((function(){var e=0;return d.value.forEach((function(t){var o=0;t.attributes.priceOld&&(o=t.attributes.priceOld-t.attributes.price),e+=o*t.quantity})),e}));$http.post(window.location.href).then((function(e){N.value=e.data.shipping,_.value=e.data.payment})),e.watch(b,(function(e){"login"==e&&a.commit("auth/modal","login")}));var Q=e.ref({last_name:{component:m.default,label:__("auth.registration.form.last_name"),model:"last_name"},name:{component:m.default,label:__("auth.registration.form.name"),model:"first_name"},phone:{component:m.default,label:__("auth.registration.form.phone"),model:"phone",mask:"(###) ###-##-##",type:"phone"},email:{component:m.default,label:__("auth.login.form.email"),model:"email"}});n.useSchemaForm(O);var X=u.object().shape({last_name:u.string().trim().required(__("auth.validation.required")),name:u.string().trim().required(__("auth.validation.required")),phone:u.string().required(__("auth.validation.phone")).matches(/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")),email:u.string().trim().email(__("auth.validation.email")).required(__("auth.validation.required"))});window.addEventListener("beforeunload",(function(){a.commit("auth/modal",null)})),window.addEventListener("pagehide",(function(){a.commit("auth/modal",null)}));var Y=function(){a.commit("checkout/reset")};return{auth:v,userType:b,facebook:function(){window.location.href=$ziggy("auth.login.social",{provider:"facebook"})},google:function(){window.location.href=$ziggy("auth.login.social",{provider:"google"})},loginCallback:function(){b.value="new"},quantity:s,items:d,loading:c,pluralize:t.pluralize,discount:K,total:p,shipping:P,shippingPrice:j,payment:z,fee:A,userValidation:X,userSchema:Q,userSubmitButton:B,checkout:function(){X.isValid(O.value).then((function(e){if(e)if(P.value)if(!F.value.component||C.value[F.value.code]&&C.value[F.value.code].isValid)if(z.value)if(M.value){var t,o=C.value[F.value.code]?JSON.parse(JSON.stringify(C.value[F.value.code])):{};if(delete o.isValid,document.cookie)document.cookie.split(";").forEach((function(e){var o=e.split("=");"_ga"===o[0].trim()&&(t=o[1].split(".")[2]+"."+o[1].split(".")[3])}));var n={checkout:!0,user:{last_name:O.value.last_name,name:O.value.name,phone:O.value.phone,email:O.value.email},shipping:{id:P.value,data:o},payment:{id:z.value},comment:q.value,dontcall:H.value,promoCode:D.value,clientId:t};c.value=!0,$http.post(window.location.href,n).then((function(e){if(e.data.redirect)V.value={url:e.data.redirect.url,data:e.data.redirect.data};else{var t=[];d.value.forEach((function(e){t.push({name:e.name,id:e.attributes.code,price:e.attributes.price,brand:e.attributes.brand,category:e.attributes.category,quantity:e.quantity})}));var o={ecommerce:{purchase:{actionField:{id:e.data.order.id,affiliation:"mrfix.ua",revenue:p.value+A.value+j.value,tax:"0",shipping:j.value},products:[t]}},event:"gtm-ee-event","gtm-ee-event-category":"Ecommerce","gtm-ee-event-action":"Purchase","gtm-ee-event-non-interaction":"False",eventTimeout:2e3};window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(o))}k.value=!0,E.value=e.data.order,Y()})).catch((function(e){r(__("shop.order.error"),{type:"error"}),console.error(e)})).finally((function(){c.value=!1}))}else r(__("shop.order.validate_consent"),{type:"error"});else r(__("shop.order.validate_payment"),{type:"error"});else r(__("shop.order.validate_shipping1")+": «"+F.value.name+"»",{type:"error"});else r(__("shop.order.validate_shipping"),{type:"error"});else b.value="new",B.value.click(),r(__("shop.order.validate_user"),{type:"error"})}))},ifCheckoutReady:f,validate:function(){X.isValid(O.value).then((function(e){f.value=e&&z.value&&M.value&&P.value&&(!F.value.component||F.value.component&&C.value[F.value.code]&&C.value[F.value.code].isValid)}))},shippingTypesRestricted:U,paymentMethodsRestricted:J,toggleShippingRadio:function(e){P.value===e&&(P.value=null)},togglePaymentRadio:function(e){z.value===e&&(z.value=null)},shippingSelected:F,paymentSelected:R,shippingComponentData:C,shippingStoreData:function(e,t,o){var n=JSON.parse(JSON.stringify(C.value));t.isValid=o,n[e]=t,a.commit("checkout/shippingData",n)},resertStore:Y,user:O,dontcall:H,comment:q,isCommentToggled:S,commentMaxLength:1e3,userCheckout:h,thanks:k,order:E,redirect:V,redirectForm:g,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"},isPromoCodeToggled:w,applyPromoCode:function(){D.value&&(x.value=!0,$http.post(window.location.href,{promoCodeApply:D.value,email:O.value.email,total:p.value}).then((function(e){T.value=e.data})).catch((function(e){e.response&&e.response.data.length&&(e.response.data.forEach((function(e){var t={component:pe,props:{message:__("shop.order.promo.error_"+e.error,{number:L.appContext.config.globalProperties.$filters.price(e.number)})}};r(t,{type:"error"}),"not_found"==e.error&&(D.value="")})),T.value=null)})).finally((function(){x.value=!1})))},promoCode:D,isPromoLoading:x,promoCodeApplied:T,resetPromoCode:function(){D.value="",T.value=null},calculateWithPromoCodeDiscount:function(){var e=p.value+A.value+j.value;return T.value&&"percent"==T.value.type?Math.round(e-e*T.value.amount/100):T.value&&"discount"==T.value.type?Math.max(0,e-T.value.amount):e},consent:y}}}),he={class:"cart checkout"},fe=["action"],ge=["name","value"],ke={key:1,class:"items-wrapper"},Ee={class:"checkout-title"},ye={class:"columns"},Ve={class:"column"},Ne={class:"checkout-block items"},_e={class:"title-row"},be={class:"items-title"},Be=["textContent"],Ce=e.createTextVNode(" "),Se=["innerHTML"],we=["onClick"],De=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-edit"})],-1),Te={class:"checkout-block"},xe={class:"wrapper"},Le={class:"items-title"},Me={key:0,class:"user-tabs"},He={class:"columns"},qe={class:"column user-form"},$e={type:"submit",ref:"userSubmitButton",class:"is-hidden"},Oe={key:0,class:"column user-login user-form"},Pe={key:1,class:"column"},ze={key:0,class:"social-auth"},Fe={class:"socials"},Re={class:"description"},je={class:"buttons"},Ae=[e.createElementVNode("svg",{class:"icon fb-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-facebook-icon"})],-1),e.createElementVNode("span",null,"Facebook",-1)],Ue=[e.createElementVNode("svg",{class:"icon google-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-google-icon"})],-1),e.createElementVNode("span",null,"Google",-1)],Je={class:"wrapper shipping-type-block"},Ie={class:"rows"},We={class:"item"},Ge={class:"row"},Ke={class:"info"},Qe={class:"items-title mb-1"},Xe={key:0,class:"value"},Ye={class:"next-dates"},Ze={class:"row"},et={class:"info"},tt=["value","onClick"],ot=["src"],nt={key:1,class:"icon"},lt=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],rt={key:0,class:"description"},at={class:"value"},it={key:0,class:"green"},ct=["innerHTML"],st={class:"wrapper payment-method-block"},dt={class:"rows"},mt={class:"item"},ut={class:"row"},pt={class:"info"},vt={class:"items-title mb-1"},ht={class:"info"},ft=["value","onClick"],gt={key:0,class:"description"},kt={key:0,class:"value"},Et=["innerHTML"],yt={class:"column is-4"},Vt={class:"checkout-block summary"},Nt={class:"items-title"},_t={class:"rows"},bt={class:"row"},Bt={class:"info"},Ct=["textContent"],St={class:"value"},wt=["innerHTML"],Dt={key:0,class:"row"},Tt={class:"info"},xt={class:"value"},Lt=["innerHTML"],Mt={key:1,class:"row"},Ht={class:"info"},qt={class:"value"},$t=["innerHTML"],Ot={key:2,class:"row"},Pt={class:"info"},zt={class:"value"},Ft=["innerHTML"],Rt={key:1,class:"green"},jt={key:3,class:"row"},At={class:"info"},Ut=e.createElementVNode("br",null,null,-1),Jt={class:"green"},It={class:"value"},Wt=["innerHTML"],Gt={class:"row"},Kt={class:"info"},Qt={class:"value orange"},Xt=["innerHTML"],Yt={class:"checkbox-wrapper nocall"},Zt={key:0,class:"consent"},eo={class:"checkbox-wrapper"},to=["innerHTML"],oo=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),no={class:"user-form is-promo-code"},lo={class:"control"},ro=["disabled"],ao={class:"label",for:"promo-code-applied"},io=["disabled"],co=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),so={class:"user-form"},mo={key:0,class:"chars-count"},uo={key:2,class:"checkout-block thanks"},po={class:"title"},vo={class:"columns"},ho={key:0,class:"column is-6"},fo={class:"subtitle"},go={key:1,class:"column is-6"},ko={class:"column is-6"},Eo={key:0,class:"info-wrapper"},yo={class:"title"},Vo={class:"columns"},No=["innerHTML"],_o=["innerHTML"],bo={key:1,class:"info-wrapper"},Bo={class:"title"},Co={class:"columns"},So=["innerHTML"],wo=["innerHTML"],Do={key:2,class:"info-wrapper"},To={class:"title"},xo={class:"columns"},Lo={class:"column is-6"},Mo=["innerHTML"],Ho={key:3,class:"checkout-block empty"},qo={class:"title"},$o={class:"message"},Oo=["href"],Po=e.createTextVNode(", "),zo=e.createElementVNode("br",null,null,-1),Fo=["href"];ve.render=function(t,o,n,l,r,a){var i=e.resolveComponent("checkout-item"),c=e.resolveComponent("cart-trigger"),s=e.resolveComponent("SchemaForm"),d=e.resolveComponent("login");return e.openBlock(),e.createElementBlock("div",he,[t.redirect.url?(e.openBlock(),e.createElementBlock("form",{key:0,ref:"redirectForm",action:t.redirect.url,class:"is-hidden",method:"post",target:"_blank"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.redirect.data,(function(t,o,n){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:o,value:t,key:n},null,8,ge)})),128))],8,fe)):e.createCommentVNode("v-if",!0),t.items.length&&!t.thanks?(e.openBlock(),e.createElementBlock("div",ke,[e.createElementVNode("div",Ee,e.toDisplayString(t.__("shop.order.checkout_title")),1),e.createElementVNode("div",ye,[e.createElementVNode("div",Ve,[e.renderSlot(t.$slots,"header"),e.createElementVNode("div",Ne,[e.createElementVNode("div",_e,[e.createElementVNode("div",be,[e.createTextVNode(e.toDisplayString(t.__("shop.order.your_order"))+" ",1),e.createElementVNode("span",{class:"ml-3",textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,Be),Ce,e.createElementVNode("span",{innerHTML:t.__("shop.cart.bysum")+" "+t.$filters.price(t.total)},null,8,Se)])]),e.renderSlot(t.$slots,"cart",{items:t.items},(function(){return[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(i,{key:t.id,item:t},null,8,["item"])})),128)),e.createVNode(c,{class:"trigger"},{default:e.withCtx((function(o){return[e.createElementVNode("button",{class:"button",onClick:o.open},[De,e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.edit")),1)],8,we)]})),_:1})]}))]),e.createCommentVNode(' <button @click="resertStore" style="position: fixed; bottom: 1px; right: 1px; z-index: 1000">reset</button> '),e.createElementVNode("div",Te,[e.createElementVNode("div",xe,[e.createElementVNode("div",Le,e.toDisplayString(t.__("shop.order.contact_title")),1),!t.auth&&t.isLogin?(e.openBlock(),e.createElementBlock("div",Me,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[0]||(o[0]=function(e){return t.userType=e}),value:"new"},null,512),[[e.vModelRadio,t.userType]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.auth_new")),1)]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[1]||(o[1]=function(e){return t.userType=e}),value:"login"},null,512),[[e.vModelRadio,t.userType]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.auth_old")),1)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",He,[e.withDirectives(e.createElementVNode("div",qe,[e.createVNode(s,{schemaRowClasses:"field",schema:t.userSchema,"validation-schema":t.userValidation},{afterForm:e.withCtx((function(){return[e.createElementVNode("button",$e,null,512)]})),_:1},8,["schema","validation-schema"])],512),[[e.vShow,"new"==t.userType]]),t.isLogin?e.withDirectives((e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(d,{"login-callback":t.loginCallback},null,8,["login-callback"])],512)),[[e.vShow,"login"==t.userType]]):e.createCommentVNode("v-if",!0),t.isLogin?(e.openBlock(),e.createElementBlock("div",Pe,[t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",ze,[e.createElementVNode("div",Fe,[e.createElementVNode("div",Re,e.toDisplayString(t.__("shop.order.auth_social")),1),e.createElementVNode("div",je,[e.createElementVNode("a",{class:"button",onClick:o[2]||(o[2]=function(){return t.facebook&&t.facebook.apply(t,arguments)})},Ae),e.createElementVNode("a",{class:"button",onClick:o[3]||(o[3]=function(){return t.google&&t.google.apply(t,arguments)})},Ue)])])]))])):e.createCommentVNode("v-if",!0)])]),e.createElementVNode("div",Je,[e.createElementVNode("div",Ie,[e.createElementVNode("div",We,[e.createElementVNode("div",Ge,[e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,e.toDisplayString(t.__("shop.order.shipping")),1)]),t.shippingSelected&&t.shippingSelected.nextDates?(e.openBlock(),e.createElementBlock("div",Xe,[e.createElementVNode("div",Ye,"на "+e.toDisplayString(t.shippingSelected.nextDates),1)])):e.createCommentVNode("v-if",!0),e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.shippingTypesRestricted,(function(n){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":n.restricted}]),key:n.id},[e.createElementVNode("div",Ze,[e.createElementVNode("div",et,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[5]||(o[5]=function(e){return t.shipping=e}),value:n.id,onClick:function(e){return t.toggleShippingRadio(n.id)}},null,8,tt),[[e.vModelRadio,t.shipping]]),n.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:n.icon},null,8,ot)):(e.openBlock(),e.createElementBlock("svg",nt,lt)),e.createElementVNode("span",null,e.toDisplayString(n.name),1)]),n.description?(e.openBlock(),e.createElementBlock("div",rt,e.toDisplayString(n.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",at,[!n.amount&&n.price_label?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(n.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==n.type?n.amount+"%":t.$filters.price(n.amount)},null,8,ct))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:n},null,8,["commit","data","item"])),[[e.vShow,n.component&&n.id==t.shipping]])],2)})),128))])]),e.createElementVNode("div",st,[e.createElementVNode("div",dt,[e.createElementVNode("div",mt,[e.createElementVNode("div",ut,[e.createElementVNode("div",pt,[e.createElementVNode("div",vt,e.toDisplayString(t.__("shop.order.payment")),1)]),e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.paymentMethodsRestricted,(function(n){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":n.restricted}]),key:n.id},[e.createElementVNode("div",{class:e.normalizeClass(["row no-icon","is-"+n.code])},[e.createElementVNode("div",ht,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":o[7]||(o[7]=function(e){return t.payment=e}),value:n.id,onClick:function(e){return t.togglePaymentRadio(n.id)}},null,8,ft),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(n.name),1)]),n.description?(e.openBlock(),e.createElementBlock("div",gt,e.toDisplayString(n.description),1)):e.createCommentVNode("v-if",!0)]),n.amount?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("span",{innerHTML:"percent"==n.type?n.amount+"%":t.$filters.price(n.amount)},null,8,Et)])):e.createCommentVNode("v-if",!0)],2)],2)})),128))])])])]),e.createElementVNode("div",yt,[e.createElementVNode("div",Vt,[e.createElementVNode("div",Nt,e.toDisplayString(t.__("shop.order.total")),1),e.createElementVNode("div",_t,[e.createElementVNode("div",bt,[e.createElementVNode("div",Bt,[e.createElementVNode("span",{textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,Ct),e.createTextVNode(" "+e.toDisplayString(t.__("shop.cart.bysum")),1)]),e.createElementVNode("div",St,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,wt)])]),t.discount?(e.openBlock(),e.createElementBlock("div",Dt,[e.createElementVNode("div",Tt,e.toDisplayString(t.__("shop.order.discount")),1),e.createElementVNode("div",xt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.discount)},null,8,Lt)])])):e.createCommentVNode("v-if",!0),t.fee>0?(e.openBlock(),e.createElementBlock("div",Mt,[e.createElementVNode("div",Ht,e.toDisplayString(t.__("shop.order.fee")),1),e.createElementVNode("div",qt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.fee)},null,8,$t)])])):e.createCommentVNode("v-if",!0),t.shipping?(e.openBlock(),e.createElementBlock("div",Ot,[e.createElementVNode("div",Pt,e.toDisplayString(t.__("shop.order.shipping_price")),1),e.createElementVNode("div",zt,[t.shippingPrice>0?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:t.$filters.price(t.shippingPrice)},null,8,Ft)):t.shippingSelected&&t.shippingSelected.price_label?(e.openBlock(),e.createElementBlock("span",Rt,e.toDisplayString(t.shippingSelected.price_label),1)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.promoCodeApplied?(e.openBlock(),e.createElementBlock("div",jt,[e.createElementVNode("div",At,[e.createTextVNode(e.toDisplayString(t.__("shop.order.promo_code")),1),Ut,e.createElementVNode("span",Jt,e.toDisplayString(t.promoCode),1)]),e.createElementVNode("div",It,[e.createElementVNode("span",{innerHTML:"percent"==t.promoCodeApplied.type?t.promoCodeApplied.amount+"%":t.$filters.price(t.promoCodeApplied.amount)},null,8,Wt)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",Gt,[e.createElementVNode("div",Kt,e.toDisplayString(t.__("shop.order.price")),1),e.createElementVNode("div",Qt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.calculateWithPromoCodeDiscount())},null,8,Xt)])])]),e.createElementVNode("div",Yt,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"checkbox","onUpdate:modelValue":o[8]||(o[8]=function(e){return t.dontcall=e})},null,512),[[e.vModelCheckbox,t.dontcall]]),e.createTextVNode(e.toDisplayString(t.__("shop.order.nocall")),1)])]),e.createElementVNode("button",{class:e.normalizeClass(["button submit",{red:!t.ifCheckoutReady,"is-loading":t.loading}]),onClick:o[9]||(o[9]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),onMouseenter:o[10]||(o[10]=function(){return t.validate&&t.validate.apply(t,arguments)})},e.toDisplayString(t.__("shop.order.action")),35),e.renderSlot(t.$slots,"submit"),t.isConsent?(e.openBlock(),e.createElementBlock("div",Zt,[e.createElementVNode("div",eo,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"checkbox","onUpdate:modelValue":o[11]||(o[11]=function(e){return t.consent=e})},null,512),[[e.vModelCheckbox,t.consent]]),e.createElementVNode("div",{class:"label",innerHTML:t.__("shop.order.consent")},null,8,to)])])])):e.createCommentVNode("v-if",!0),t.isPromoCode?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["comment-wrapper is-promo-code",{"is-open":t.isPromoCodeToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:o[12]||(o[12]=function(e){return t.isPromoCodeToggled=!t.isPromoCodeToggled})},[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.promo_code")),1),oo]),e.createElementVNode("div",no,[e.createElementVNode("div",lo,[e.withDirectives(e.createElementVNode("input",{type:"text",class:"input",placeholder:" ","onUpdate:modelValue":o[13]||(o[13]=function(e){return t.promoCode=e}),disabled:t.promoCodeApplied,id:"promo-code-applied"},null,8,ro),[[e.vModelText,t.promoCode]]),e.createElementVNode("label",ao,e.toDisplayString(t.__("shop.order.promo.placeholder")),1)]),t.promoCodeApplied?(e.openBlock(),e.createElementBlock("button",{key:1,class:"button",onClick:o[15]||(o[15]=function(){return t.resetPromoCode&&t.resetPromoCode.apply(t,arguments)})},e.toDisplayString(t.__("shop.order.promo.reset")),1)):(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["button",{"is-loading":t.isPromoLoading}]),onClick:o[14]||(o[14]=function(){return t.applyPromoCode&&t.applyPromoCode.apply(t,arguments)}),disabled:!t.promoCode},e.toDisplayString(t.__("shop.order.promo.apply")),11,io))])],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{class:e.normalizeClass(["comment-wrapper",{"is-open":t.isCommentToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:o[16]||(o[16]=function(e){return t.isCommentToggled=!t.isCommentToggled})},[e.createElementVNode("span",null,e.toDisplayString(t.__("shop.order.comment")),1),co]),e.createElementVNode("div",so,[e.withDirectives(e.createElementVNode("textarea",{class:"textarea","onUpdate:modelValue":o[17]||(o[17]=function(e){return t.comment=e})},null,512),[[e.vModelText,t.comment]]),t.comment.length?(e.openBlock(),e.createElementBlock("div",mo,e.toDisplayString(t.commentMaxLength-t.comment.length),1)):e.createCommentVNode("v-if",!0)])],2)])])])])):t.thanks&&t.order?(e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("div",po,[e.createTextVNode(e.toDisplayString(t.__("shop.order.order"))+" ",1),e.createElementVNode("span",null,"№"+e.toDisplayString(t.order.id),1),e.createTextVNode(" "+e.toDisplayString(t.__("shop.order.success")),1)]),e.createElementVNode("div",vo,[t.redirect.url?(e.openBlock(),e.createElementBlock("div",ho,[e.createElementVNode("div",fo,e.toDisplayString(t.__("shop.order.pay_online")),1),e.createElementVNode("button",{class:"button is-payment",onClick:o[18]||(o[18]=function(e){return t.redirectForm.submit()})},e.toDisplayString(t.__("shop.order.pay_online_go")),1)])):(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("button",{class:"button is-orange",onClick:o[19]||(o[19]=function(){return t.home&&t.home.apply(t,arguments)})},e.toDisplayString(t.__("shop.cart.continue")),1)])),e.createElementVNode("div",ko,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",Eo,[e.createElementVNode("div",yo,e.toDisplayString(t.__("shop.order.shipping")),1),e.createElementVNode("div",Vo,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.shipping[0]},null,8,No)):e.createCommentVNode("v-if",!0),t.order.shipping[1]?(e.openBlock(),e.createElementBlock("div",{key:1,class:"column is-6",innerHTML:t.order.shipping[1]},null,8,_o)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",bo,[e.createElementVNode("div",Bo,e.toDisplayString(t.__("shop.order.payment")),1),e.createElementVNode("div",Co,[t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.payment[0]},null,8,So)):e.createCommentVNode("v-if",!0),t.order.payment[1]?(e.openBlock(),e.createElementBlock("div",{key:1,class:"column is-6",innerHTML:t.order.payment[1]},null,8,wo)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.promoCode?(e.openBlock(),e.createElementBlock("div",Do,[e.createElementVNode("div",To,e.toDisplayString(t.__("shop.order.promo_code")),1),e.createElementVNode("div",xo,[e.createElementVNode("div",Lo,[e.createElementVNode("span",{innerHTML:t.order.promoCode,class:"green"},null,8,Mo)])])])):e.createCommentVNode("v-if",!0)])])])):(e.openBlock(),e.createElementBlock("div",Ho,[e.createElementVNode("div",qo,e.toDisplayString(t.__("shop.cart.no_no")),1),e.createElementVNode("div",$o,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_prop"))+" ",1),e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.no_home")),9,Oo),Po,zo,e.createTextVNode(e.toDisplayString(t.__("shop.cart.no_search")),1)]),e.createElementVNode("a",{class:"button continue",href:t.$env.locale.url?t.$env.locale.url:"/"},e.toDisplayString(t.__("shop.cart.continue")),9,Fo)]))])},module.exports=ve;
|
|
2
2
|
//# sourceMappingURL=Checkout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkout.js","sources":["../../../../src/components/shop/order/CheckoutItem.vue","../../../../src/components/shop/order/CheckoutItem.vue?vue&type=template&id=4d5a1fac&lang.js","../../../../src/components/shop/order/Checkout.vue","../../../../src/components/shop/order/Checkout.vue?vue&type=template&id=4b10546e&lang.js"],"sourcesContent":["<template>\n <div class=\"columns is-multiline shop-cart-item\" v-bind:class=\"{ 'is-bundle': item.attributes.bundle }\">\n <div class=\"column is-12\" v-if=\"item.attributes.bundle\">\n <div class=\"bundle-title\">{{ __('shop.cart.bundle') }}</div>\n </div>\n <div class=\"column name\">\n <div class=\"columns\" v-bind:class=\"{ 'mb-0': item.attributes.bundle }\">\n <div class=\"column is-narrow\">\n <a :href=\"item.attributes.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.image }\">\n <img :src=\"item.attributes.image\" v-if=\"item.attributes.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"columns is-gapless mb-0\">\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.code\">{{ __('shop.cart.code') }} {{ item.attributes.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.href\">{{ item.name }}</a>\n </div>\n </div>\n <div class=\"column is-2 has-text-centered is-relative\">\n <div class=\"quantity\">⨉ {{ item.quantity }}</div>\n <div class=\"quantity-price\" v-if=\"parseInt(item.quantity) > 1\"><span v-html=\"$filters.price(item.attributes.price)\"></span> / {{ __('shop.cart.q') }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">\n <div class=\"price\" v-bind:class=\"{ 'bundle-price': item.attributes.bundle }\">\n <div v-if=\"item.attributes.priceOld\" class=\"price-old\" v-html=\"$filters.price(item.attributes.priceOld * item.quantity)\"></div>\n <div class=\"bundle-amount\" v-if=\"item.attributes.bundle && item.attributes.amount\" v-html=\"__('shop.cart.bundle_amount') + (item.attributes.amount.percent ? item.attributes.amount.percent + '%' : $filters.price(item.attributes.amount.sum * item.quantity))\"></div>\n <div v-html=\"$filters.price(item.attributes.price * item.quantity)\"></div>\n </div>\n </div>\n </div>\n <div class=\"options is-toggled\" v-if=\"itemOptions && itemOptions.length\">\n <div class=\"toggler\">\n <span>{{ __('shop.cart.additional') }} {{ itemOptions.length }}</span>\n </div>\n <div class=\"wrapper\">\n <div v-for=\"(option, index) in itemOptions\" v-bind:key=\"index\" class=\"columns is-checked\">\n <div class=\"column\">\n <div class=\"option-title\">{{ option.name }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">+<span v-html=\"$filters.price(option.price)\"></span></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.second.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.second.image }\">\n <img :src=\"item.attributes.second.image\" v-if=\"item.attributes.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.second.code\">{{ __('shop.cart.code') }} {{ item.attributes.second.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.second.href\">{{ item.attributes.second.name }}</a>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle && item.attributes.third\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.third.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.third.image }\">\n <img :src=\"item.attributes.third.image\" v-if=\"item.attributes.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.third.code\">{{ __('shop.cart.code') }} {{ item.attributes.third.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.third.href\">{{ item.attributes.third.name }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { defineComponent, computed } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'CheckoutItem',\n props: {\n item: Object\n },\n setup(props) {\n const options = computed(() => (props.item.attributes.options && props.item.attributes.options.length ? props.item.attributes.options : []));\n const itemOptions = computed(() => (props.item.options && props.item.options.length ? props.item.options.filter((option) => options.value.indexOf(option.id) !== -1) : []));\n\n return {\n itemOptions\n };\n }\n});\n</script>","<template>\n <div class=\"columns is-multiline shop-cart-item\" v-bind:class=\"{ 'is-bundle': item.attributes.bundle }\">\n <div class=\"column is-12\" v-if=\"item.attributes.bundle\">\n <div class=\"bundle-title\">{{ __('shop.cart.bundle') }}</div>\n </div>\n <div class=\"column name\">\n <div class=\"columns\" v-bind:class=\"{ 'mb-0': item.attributes.bundle }\">\n <div class=\"column is-narrow\">\n <a :href=\"item.attributes.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.image }\">\n <img :src=\"item.attributes.image\" v-if=\"item.attributes.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"columns is-gapless mb-0\">\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.code\">{{ __('shop.cart.code') }} {{ item.attributes.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.href\">{{ item.name }}</a>\n </div>\n </div>\n <div class=\"column is-2 has-text-centered is-relative\">\n <div class=\"quantity\">⨉ {{ item.quantity }}</div>\n <div class=\"quantity-price\" v-if=\"parseInt(item.quantity) > 1\"><span v-html=\"$filters.price(item.attributes.price)\"></span> / {{ __('shop.cart.q') }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">\n <div class=\"price\" v-bind:class=\"{ 'bundle-price': item.attributes.bundle }\">\n <div v-if=\"item.attributes.priceOld\" class=\"price-old\" v-html=\"$filters.price(item.attributes.priceOld * item.quantity)\"></div>\n <div class=\"bundle-amount\" v-if=\"item.attributes.bundle && item.attributes.amount\" v-html=\"__('shop.cart.bundle_amount') + (item.attributes.amount.percent ? item.attributes.amount.percent + '%' : $filters.price(item.attributes.amount.sum * item.quantity))\"></div>\n <div v-html=\"$filters.price(item.attributes.price * item.quantity)\"></div>\n </div>\n </div>\n </div>\n <div class=\"options is-toggled\" v-if=\"itemOptions && itemOptions.length\">\n <div class=\"toggler\">\n <span>{{ __('shop.cart.additional') }} {{ itemOptions.length }}</span>\n </div>\n <div class=\"wrapper\">\n <div v-for=\"(option, index) in itemOptions\" v-bind:key=\"index\" class=\"columns is-checked\">\n <div class=\"column\">\n <div class=\"option-title\">{{ option.name }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">+<span v-html=\"$filters.price(option.price)\"></span></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.second.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.second.image }\">\n <img :src=\"item.attributes.second.image\" v-if=\"item.attributes.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.second.code\">{{ __('shop.cart.code') }} {{ item.attributes.second.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.second.href\">{{ item.attributes.second.name }}</a>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle && item.attributes.third\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.third.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.third.image }\">\n <img :src=\"item.attributes.third.image\" v-if=\"item.attributes.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.third.code\">{{ __('shop.cart.code') }} {{ item.attributes.third.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.third.href\">{{ item.attributes.third.name }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { defineComponent, computed } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'CheckoutItem',\n props: {\n item: Object\n },\n setup(props) {\n const options = computed(() => (props.item.attributes.options && props.item.attributes.options.length ? props.item.attributes.options : []));\n const itemOptions = computed(() => (props.item.options && props.item.options.length ? props.item.options.filter((option) => options.value.indexOf(option.id) !== -1) : []));\n\n return {\n itemOptions\n };\n }\n});\n</script>","<template>\n <div class=\"cart checkout\">\n <form ref=\"redirectForm\" v-if=\"redirect.url\" :action=\"redirect.url\" class=\"is-hidden\" method=\"post\" target=\"_blank\">\n <input type=\"hidden\" :name=\"name\" :value=\"value\" v-for=\"(value, name, index) in redirect.data\" v-bind:key=\"index\" />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"checkout-title\">{{ __('shop.order.checkout_title') }}</div>\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"checkout-block items\">\n <div class=\"title-row\">\n <div class=\"items-title\">\n {{ __('shop.order.your_order') }}\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"__('shop.cart.bysum') + ' ' + $filters.price(total)\"></span>\n </div>\n </div>\n <checkout-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></checkout-item>\n <cart-trigger class=\"trigger\">\n <template #default=\"props\">\n <button class=\"button\" @click=\"props.open\">\n <svg>\n <use xlink:href=\"#cart-edit\" />\n </svg>\n <span>{{ __('shop.order.edit') }}</span>\n </button>\n </template>\n </cart-trigger>\n </div>\n <!-- <button @click=\"resertStore\" style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\">reset</button> -->\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">{{ __('shop.order.contact_title') }}</div>\n <div class=\"user-tabs\" v-if=\"!auth && isLogin\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" />{{ __('shop.order.auth_new') }}</label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" />{{ __('shop.order.auth_old') }}</label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"userSchema\" :validation-schema=\"userValidation\">\n <template #afterForm>\n <button type=\"submit\" ref=\"userSubmitButton\" class=\"is-hidden\"></button>\n </template>\n </SchemaForm>\n </div>\n <div class=\"column user-login user-form\" v-show=\"userType == 'login'\" v-if=\"isLogin\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\" v-if=\"isLogin\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">{{ __('shop.order.auth_social') }}</div>\n <div class=\"buttons\">\n <a class=\"button\" @click=\"facebook\">\n <svg class=\"icon fb-btn\">\n <use xlink:href=\"#logo-facebook-icon\" />\n </svg>\n <span>Facebook</span>\n </a>\n <a class=\"button\" @click=\"google\">\n <svg class=\"icon google-btn\">\n <use xlink:href=\"#logo-google-icon\" />\n </svg>\n <span>Google</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wrapper\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.shipping') }}</div>\n </div>\n <div class=\"value\" v-if=\"shippingSelected && shippingSelected.nextDates\">\n <div class=\"next-dates\">на {{ shippingSelected.nextDates }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in shippingTypesRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"shipping\" :value=\"item.id\" @click=\"toggleShippingRadio(item.id)\" />\n <img class=\"icon\" :src=\"item.icon\" v-if=\"item.icon\" />\n <svg v-else class=\"icon\">\n <use xlink:href=\"#shipping\" />\n </svg>\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span class=\"green\" v-if=\"!item.amount && item.price_label\">{{ item.price_label }}</span>\n <span v-else v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n <component :is=\"item.component\" v-show=\"item.component && item.id == shipping\" :commit=\"shippingStoreData\" :data=\"shippingComponentData\" :item=\"item\"></component>\n </div>\n </div>\n </div>\n <div class=\"wrapper\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.payment') }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in paymentMethodsRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row no-icon\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"payment\" :value=\"item.id\" @click=\"togglePaymentRadio(item.id)\" />\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-4\">\n <div class=\"checkout-block summary\">\n <div class=\"items-title\">{{ __('shop.order.total') }}</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> {{ __('shop.cart.bysum') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">{{ __('shop.order.discount') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(discount)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">{{ __('shop.order.fee') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(fee)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"shipping\">\n <div class=\"info\">{{ __('shop.order.shipping_price') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(shippingPrice)\" v-if=\"shippingPrice > 0\"></span>\n <span class=\"green\" v-else-if=\"shippingSelected && shippingSelected.price_label\">{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\" v-if=\"promoCodeApplied\">\n <div class=\"info\">{{ __('shop.order.promo_code') }}<br><span class=\"green\">{{ promoCode }}</span></div>\n <div class=\"value\">\n <span v-html=\"(promoCodeApplied.type == 'percent' ? promoCodeApplied.amount + '%' : $filters.price(promoCodeApplied.amount))\"></span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">{{ __('shop.order.price') }}</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(calculateWithPromoCodeDiscount())\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" />{{ __('shop.order.nocall') }}</label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">{{ __('shop.order.action') }}</button>\n <div class=\"comment-wrapper is-promo-code\" v-bind:class=\"{ 'is-open': isPromoCodeToggled }\" v-if=\"isPromoCode\">\n <div class=\"toggler\" @click=\"isPromoCodeToggled = !isPromoCodeToggled\">\n <span>{{ __('shop.order.promo_code') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form is-promo-code\">\n <div class=\"control\">\n <input type=\"text\" class=\"input\" placeholder=\" \" v-model=\"promoCode\" :disabled=\"promoCodeApplied\" id=\"promo-code-applied\">\n <label class=\"label\" for=\"promo-code-applied\">{{ __('shop.order.promo.placeholder') }}</label>\n </div>\n <button v-if=\"!promoCodeApplied\" class=\"button\" @click=\"applyPromoCode\" :disabled=\"!promoCode\" v-bind:class=\"{ 'is-loading': isPromoLoading }\">{{ __('shop.order.promo.apply') }}</button>\n <button v-else class=\"button\" @click=\"resetPromoCode\">{{ __('shop.order.promo.reset') }}</button>\n </div>\n </div>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>{{ __('shop.order.comment') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form\">\n <textarea class=\"textarea\" v-model=\"comment\"></textarea>\n <div class=\"chars-count\" v-if=\"comment.length\">{{ commentMaxLength - comment.length }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"checkout-block thanks\" v-else-if=\"thanks && order\">\n <div class=\"title\">\n {{ __('shop.order.order') }}\n <span>№{{ order.id }}</span> {{ __('shop.order.success') }}\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">{{ __('shop.order.pay_online') }}</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">{{ __('shop.order.pay_online_go') }}</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">{{ __('shop.order.shipping') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.shipping[0]\" v-html=\"order.shipping[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.shipping[1]\" v-html=\"order.shipping[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">{{ __('shop.order.payment') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.payment[0]\" v-html=\"order.payment[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.payment[1]\" v-html=\"order.payment[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.promoCode\">\n <div class=\"title\">{{ __('shop.order.promo_code') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\">\n <span v-html=\"order.promoCode\" class=\"green\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.continue') }}</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch, getCurrentInstance } from 'vue';\nimport CheckoutItem from './CheckoutItem.vue';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport { useStore } from 'vuex';\nimport { SchemaFormFactory, useSchemaForm } from 'formvuelate';\nimport VeeValidatePlugin from '@formvuelate/plugin-vee-validate';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport * as yup from 'yup';\nimport { useToast } from 'vue-toastification';\n\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nconst HtmlMessage = {\n props: {\n message: '',\n },\n template: '<div v-html=\"message\"></div>',\n};\n\nwindow.viewedSwiperOptions = {\n slidesPerView: 'auto',\n freeMode: true,\n slideClass: 'product',\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: '.next',\n prevEl: '.prev'\n },\n observer: true,\n observeParents: true\n};\n\nexport default /*#__PURE__*/ defineComponent({\n components: {\n CheckoutItem,\n SchemaForm\n },\n props: {\n isLogin: {\n type: Boolean,\n default: true\n },\n isPromoCode: {\n type: Boolean,\n default: true\n }\n },\n name: 'order-checkout',\n setup() {\n const toast = useToast();\n const store = useStore();\n const loading = ref(false);\n const quantity = computed(() => store.getters['cart/quantity']);\n const items = computed(() => store.getters['cart/items']);\n const total = computed(() => store.getters['cart/total']);\n const auth = computed(() => store.getters['auth/is']);\n const userCheckout = computed(() => store.getters['checkout/user']);\n const ifCheckoutReady = ref(true);\n const redirectForm = ref(null);\n const thanks = ref(false);\n const order = ref(null);\n\n const redirect = ref({});\n\n const shippingTypes = ref([]);\n const paymentMethods = ref([]);\n\n const userType = ref('new');\n const userSubmitButton = ref(null);\n\n const shippingComponentData = computed(() => store.getters['checkout/shippingData']);\n const isCommentToggled = ref(false);\n const commentMaxLength = 1000;\n\n const isPromoCodeToggled = ref(false);\n const promoCode = ref('');\n const promoCodeApplied = ref(null);\n const isPromoLoading = ref(false);\n const app = getCurrentInstance();\n\n const resetPromoCode = () => {\n promoCode.value = '';\n promoCodeApplied.value = null;\n };\n\n const applyPromoCode = () => {\n if (promoCode.value) {\n isPromoLoading.value = true;\n\n $http\n .post(window.location.href, {\n promoCodeApply: promoCode.value,\n email: user.value.email,\n total: total.value\n })\n .then(response => {\n promoCodeApplied.value = response.data;\n }).catch(error => {\n if (error.response && error.response.data.length) {\n error.response.data.forEach(error => {\n const component = {\n component: HtmlMessage,\n props: {\n message: __('shop.order.promo.error_' + error.error, { number: app.appContext.config.globalProperties.$filters.price(error.number) }),\n },\n };\n\n toast(component, {\n type: 'error'\n });\n\n if (error.error == 'not_found') {\n promoCode.value = '';\n }\n });\n\n promoCodeApplied.value = null;\n }\n }).finally(() => {\n isPromoLoading.value = false;\n });\n }\n };\n\n const dontcall = computed({\n get() {\n return store.getters['checkout/dontcall'];\n },\n set(value) {\n store.commit('checkout/dontcall', value);\n }\n });\n\n const comment = computed({\n get() {\n const comment = store.getters['checkout/comment'];\n\n if (!!comment) {\n isCommentToggled.value = true;\n }\n\n return comment;\n },\n set(value) {\n store.commit('checkout/comment', value);\n }\n });\n\n watch(comment, (value) => {\n if (value.length > commentMaxLength) {\n comment.value = comment.value.substring(0, commentMaxLength);\n }\n });\n\n const field = (name) => {\n return computed({\n get() {\n return userCheckout.value[name];\n },\n set(value) {\n let data = JSON.parse(JSON.stringify(userCheckout.value));\n data[name] = value;\n\n store.commit('checkout/user', data);\n }\n });\n };\n\n const user = ref({\n last_name: field('last_name'),\n name: field('name'),\n email: field('email'),\n phone: field('phone')\n });\n\n store.dispatch('auth/me', {\n finally: () => { }\n });\n\n const calculateWithPromoCodeDiscount = () => {\n const sum = total.value + fee.value + shippingPrice.value;\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'percent') {\n return Math.round(sum - sum * promoCodeApplied.value.amount / 100);\n }\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'discount') {\n return Math.max(0, sum - promoCodeApplied.value.amount);\n }\n\n return sum;\n };\n\n const shipping = computed({\n get() {\n return store.getters['checkout/shipping'];\n },\n set(id) {\n store.commit('checkout/shipping', id);\n }\n });\n\n const payment = computed({\n get() {\n return store.getters['checkout/payment'];\n },\n set(id) {\n store.commit('checkout/payment', id);\n }\n });\n\n const shippingSelected = computed(() => {\n return shipping.value ? shippingTypes.value.find((item) => item.id == shipping.value) : {};\n });\n\n const paymentSelected = computed(() => {\n return payment.value ? paymentMethods.value.find((item) => item.id == payment.value) : {};\n });\n\n const shippingPrice = computed(() => {\n return calculatePrice(shippingTypes.value, shipping.value);\n });\n\n const fee = computed(() => {\n return calculatePrice(paymentMethods.value, payment.value);\n });\n\n const shippingTypesRestricted = computed(() => {\n return restrictCheck(shippingTypes.value);\n });\n\n const paymentMethodsRestricted = computed(() => {\n return restrictCheck(paymentMethods.value);\n });\n\n const categoriesInCart = computed(() => {\n let categories = [];\n\n items.value.forEach((item) => {\n if (categories.indexOf(item.category_id) === -1) {\n categories.push(item.category_id);\n }\n });\n\n return categories;\n });\n\n const calculatePrice = (items, value) => {\n let price = 0;\n\n if (value) {\n const item = items.find((item) => item.id == value);\n\n if (item) {\n if (item.type == 'sum') {\n price = item.amount;\n } else {\n price = Math.round((total.value * item.amount) / 100);\n }\n }\n }\n\n return price;\n };\n\n const restrictCheck = (elements) => {\n let items = [];\n\n elements.forEach((item) => {\n if (item.restrictions && Object.keys(item.restrictions).length) {\n let ok = true;\n\n const r = item.restrictions;\n\n if (r.price_min && r.price_max) {\n ok = total.value >= r.price_min && total.value <= r.price_max;\n item.restrictedForce = !ok;\n } else if (r.price_min) {\n ok = total.value >= r.price_min;\n item.restrictedForce = !ok;\n } else if (r.price_max) {\n ok = total.value <= r.price_max;\n item.restrictedForce = !ok;\n }\n\n if (ok && shipping.value) {\n if (r.shipping_type && r.shipping_type.length) {\n ok = r.shipping_type.indexOf(shipping.value) !== -1;\n }\n }\n\n if (ok && payment.value) {\n if (r.payment_method && r.payment_method.length) {\n ok = r.payment_method.indexOf(payment.value) !== -1;\n }\n }\n\n if (ok && r.categories && r.categories.length) {\n ok = !categoriesInCart.value.filter((value) => !r.categories.includes(value)).length;\n item.restrictedForce = !ok;\n }\n\n item.restricted = !ok;\n } else {\n item.restricted = false;\n }\n\n if (!item.restrictedForce) {\n items.push(item);\n }\n });\n\n return items;\n };\n\n const discount = computed(() => {\n let sum = 0;\n\n items.value.forEach((item) => {\n let s = 0;\n\n if (item.attributes.priceOld) {\n s = item.attributes.priceOld - item.attributes.price;\n }\n\n sum += s * item.quantity;\n });\n\n return sum;\n });\n\n const facebook = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'facebook'\n });\n };\n\n const google = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'google'\n });\n };\n\n const loginCallback = () => {\n userType.value = 'new';\n };\n\n $http.post(window.location.href).then((response) => {\n shippingTypes.value = response.data.shipping;\n paymentMethods.value = response.data.payment;\n });\n\n watch(userType, (value) => {\n if (value == 'login') {\n store.commit('auth/modal', 'login');\n }\n });\n\n const userSchema = ref({\n last_name: {\n component: FormText,\n label: __('auth.registration.form.last_name'),\n model: 'last_name'\n },\n name: {\n component: FormText,\n label: __('auth.registration.form.name'),\n model: 'first_name'\n },\n phone: {\n component: FormText,\n label: __('auth.registration.form.phone'),\n model: 'phone',\n mask: '(###) ###-##-##',\n type: 'phone'\n //placeholder: '(050) 123-45-67'\n },\n email: {\n component: FormText,\n label: __('auth.login.form.email'),\n model: 'email'\n }\n });\n\n useSchemaForm(user);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n const userValidation = yup.object().shape({\n last_name: yup.string().trim().required(__('auth.validation.required')),\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().required(__('auth.validation.phone')).matches(phoneRegExp, __('auth.validation.phone')),\n email: yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'))\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('auth/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit('auth/modal', null);\n });\n\n const validate = () => {\n userValidation.isValid(user.value).then(function (isUserValid) {\n ifCheckoutReady.value = isUserValid && payment.value && shipping.value && (!shippingSelected.value.component || (shippingSelected.value.component && shippingComponentData.value[shippingSelected.value.code] && shippingComponentData.value[shippingSelected.value.code].isValid));\n });\n };\n\n const checkout = () => {\n userValidation.isValid(user.value).then(function (valid) {\n if (!valid) {\n userType.value = 'new';\n userSubmitButton.value.click();\n\n toast(__('shop.order.validate_user'), {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast(__('shop.order.validate_shipping'), {\n type: 'error'\n });\n } else if (shippingSelected.value.component && (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid)) {\n toast(__('shop.order.validate_shipping1') + ': «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast(__('shop.order.validate_payment'), {\n type: 'error'\n });\n } else {\n let clientId;\n let data = shippingComponentData.value[shippingSelected.value.code] ? JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code])) : {};\n\n delete data.isValid;\n\n if (document.cookie) {\n const cookies = document.cookie.split(';');\n\n cookies.forEach((cookie) => {\n const parts = cookie.split('=');\n\n if (parts[0].trim() === '_ga') {\n clientId = parts[1].split('.')[2] + '.' + parts[1].split('.')[3];\n }\n });\n }\n\n const model = {\n checkout: true,\n user: {\n last_name: user.value.last_name,\n name: user.value.name,\n phone: user.value.phone,\n email: user.value.email\n },\n shipping: {\n id: shipping.value,\n data: data\n },\n payment: {\n id: payment.value\n },\n comment: comment.value,\n dontcall: dontcall.value,\n promoCode: promoCode.value,\n clientId: clientId\n };\n\n loading.value = true;\n\n $http\n .post(window.location.href, model)\n .then((response) => {\n if (response.data.redirect) {\n redirect.value = {\n url: response.data.redirect.url,\n data: response.data.redirect.data\n };\n } else {\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 ecommerce: {\n purchase: {\n actionField: {\n id: response.data.order.id,\n affiliation: 'mrfix.ua',\n revenue: total.value + fee.value + shippingPrice.value,\n tax: '0',\n shipping: shippingPrice.value\n },\n products: [products]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Purchase',\n 'gtm-ee-event-non-interaction': 'False',\n eventTimeout: 2000,\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n thanks.value = true;\n order.value = response.data.order;\n\n resertStore();\n\n // nextTick(() => {\n // redirectForm.value.submit();\n // });\n })\n .catch((e) => {\n toast(__('shop.order.error'), {\n type: 'error'\n });\n\n console.error(e);\n })\n .finally(() => {\n loading.value = false;\n });\n }\n });\n };\n\n const toggleShippingRadio = (id) => {\n if (shipping.value === id) {\n shipping.value = null;\n }\n };\n\n const togglePaymentRadio = (id) => {\n if (payment.value === id) {\n payment.value = null;\n }\n };\n\n const resertStore = () => {\n store.commit('checkout/reset');\n };\n\n const shippingStoreData = (code, data, isValid) => {\n let d = JSON.parse(JSON.stringify(shippingComponentData.value));\n\n data.isValid = isValid;\n d[code] = data;\n\n store.commit('checkout/shippingData', d);\n };\n\n const home = () => {\n window.location.href = $env.locale.url ? $env.locale.url : '/';\n };\n\n return {\n auth,\n userType,\n facebook,\n google,\n loginCallback,\n quantity,\n items,\n loading,\n pluralize,\n discount,\n total,\n shipping,\n shippingPrice,\n payment,\n fee,\n userValidation,\n userSchema,\n userSubmitButton,\n checkout,\n ifCheckoutReady,\n validate,\n shippingTypesRestricted,\n paymentMethodsRestricted,\n toggleShippingRadio,\n togglePaymentRadio,\n shippingSelected,\n paymentSelected,\n shippingComponentData,\n shippingStoreData,\n resertStore,\n user,\n dontcall,\n comment,\n isCommentToggled,\n commentMaxLength,\n userCheckout,\n thanks,\n order,\n redirect,\n redirectForm,\n home,\n\n isPromoCodeToggled,\n applyPromoCode,\n promoCode,\n isPromoLoading,\n promoCodeApplied,\n resetPromoCode,\n calculateWithPromoCodeDiscount\n };\n }\n});\n</script>","<template>\n <div class=\"cart checkout\">\n <form ref=\"redirectForm\" v-if=\"redirect.url\" :action=\"redirect.url\" class=\"is-hidden\" method=\"post\" target=\"_blank\">\n <input type=\"hidden\" :name=\"name\" :value=\"value\" v-for=\"(value, name, index) in redirect.data\" v-bind:key=\"index\" />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"checkout-title\">{{ __('shop.order.checkout_title') }}</div>\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"checkout-block items\">\n <div class=\"title-row\">\n <div class=\"items-title\">\n {{ __('shop.order.your_order') }}\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"__('shop.cart.bysum') + ' ' + $filters.price(total)\"></span>\n </div>\n </div>\n <checkout-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></checkout-item>\n <cart-trigger class=\"trigger\">\n <template #default=\"props\">\n <button class=\"button\" @click=\"props.open\">\n <svg>\n <use xlink:href=\"#cart-edit\" />\n </svg>\n <span>{{ __('shop.order.edit') }}</span>\n </button>\n </template>\n </cart-trigger>\n </div>\n <!-- <button @click=\"resertStore\" style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\">reset</button> -->\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">{{ __('shop.order.contact_title') }}</div>\n <div class=\"user-tabs\" v-if=\"!auth && isLogin\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" />{{ __('shop.order.auth_new') }}</label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" />{{ __('shop.order.auth_old') }}</label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"userSchema\" :validation-schema=\"userValidation\">\n <template #afterForm>\n <button type=\"submit\" ref=\"userSubmitButton\" class=\"is-hidden\"></button>\n </template>\n </SchemaForm>\n </div>\n <div class=\"column user-login user-form\" v-show=\"userType == 'login'\" v-if=\"isLogin\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\" v-if=\"isLogin\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">{{ __('shop.order.auth_social') }}</div>\n <div class=\"buttons\">\n <a class=\"button\" @click=\"facebook\">\n <svg class=\"icon fb-btn\">\n <use xlink:href=\"#logo-facebook-icon\" />\n </svg>\n <span>Facebook</span>\n </a>\n <a class=\"button\" @click=\"google\">\n <svg class=\"icon google-btn\">\n <use xlink:href=\"#logo-google-icon\" />\n </svg>\n <span>Google</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wrapper\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.shipping') }}</div>\n </div>\n <div class=\"value\" v-if=\"shippingSelected && shippingSelected.nextDates\">\n <div class=\"next-dates\">на {{ shippingSelected.nextDates }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in shippingTypesRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"shipping\" :value=\"item.id\" @click=\"toggleShippingRadio(item.id)\" />\n <img class=\"icon\" :src=\"item.icon\" v-if=\"item.icon\" />\n <svg v-else class=\"icon\">\n <use xlink:href=\"#shipping\" />\n </svg>\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span class=\"green\" v-if=\"!item.amount && item.price_label\">{{ item.price_label }}</span>\n <span v-else v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n <component :is=\"item.component\" v-show=\"item.component && item.id == shipping\" :commit=\"shippingStoreData\" :data=\"shippingComponentData\" :item=\"item\"></component>\n </div>\n </div>\n </div>\n <div class=\"wrapper\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.payment') }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in paymentMethodsRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row no-icon\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"payment\" :value=\"item.id\" @click=\"togglePaymentRadio(item.id)\" />\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-4\">\n <div class=\"checkout-block summary\">\n <div class=\"items-title\">{{ __('shop.order.total') }}</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> {{ __('shop.cart.bysum') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">{{ __('shop.order.discount') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(discount)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">{{ __('shop.order.fee') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(fee)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"shipping\">\n <div class=\"info\">{{ __('shop.order.shipping_price') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(shippingPrice)\" v-if=\"shippingPrice > 0\"></span>\n <span class=\"green\" v-else-if=\"shippingSelected && shippingSelected.price_label\">{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\" v-if=\"promoCodeApplied\">\n <div class=\"info\">{{ __('shop.order.promo_code') }}<br><span class=\"green\">{{ promoCode }}</span></div>\n <div class=\"value\">\n <span v-html=\"(promoCodeApplied.type == 'percent' ? promoCodeApplied.amount + '%' : $filters.price(promoCodeApplied.amount))\"></span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">{{ __('shop.order.price') }}</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(calculateWithPromoCodeDiscount())\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" />{{ __('shop.order.nocall') }}</label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">{{ __('shop.order.action') }}</button>\n <div class=\"comment-wrapper is-promo-code\" v-bind:class=\"{ 'is-open': isPromoCodeToggled }\" v-if=\"isPromoCode\">\n <div class=\"toggler\" @click=\"isPromoCodeToggled = !isPromoCodeToggled\">\n <span>{{ __('shop.order.promo_code') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form is-promo-code\">\n <div class=\"control\">\n <input type=\"text\" class=\"input\" placeholder=\" \" v-model=\"promoCode\" :disabled=\"promoCodeApplied\" id=\"promo-code-applied\">\n <label class=\"label\" for=\"promo-code-applied\">{{ __('shop.order.promo.placeholder') }}</label>\n </div>\n <button v-if=\"!promoCodeApplied\" class=\"button\" @click=\"applyPromoCode\" :disabled=\"!promoCode\" v-bind:class=\"{ 'is-loading': isPromoLoading }\">{{ __('shop.order.promo.apply') }}</button>\n <button v-else class=\"button\" @click=\"resetPromoCode\">{{ __('shop.order.promo.reset') }}</button>\n </div>\n </div>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>{{ __('shop.order.comment') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form\">\n <textarea class=\"textarea\" v-model=\"comment\"></textarea>\n <div class=\"chars-count\" v-if=\"comment.length\">{{ commentMaxLength - comment.length }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"checkout-block thanks\" v-else-if=\"thanks && order\">\n <div class=\"title\">\n {{ __('shop.order.order') }}\n <span>№{{ order.id }}</span> {{ __('shop.order.success') }}\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">{{ __('shop.order.pay_online') }}</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">{{ __('shop.order.pay_online_go') }}</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">{{ __('shop.order.shipping') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.shipping[0]\" v-html=\"order.shipping[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.shipping[1]\" v-html=\"order.shipping[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">{{ __('shop.order.payment') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.payment[0]\" v-html=\"order.payment[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.payment[1]\" v-html=\"order.payment[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.promoCode\">\n <div class=\"title\">{{ __('shop.order.promo_code') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\">\n <span v-html=\"order.promoCode\" class=\"green\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.continue') }}</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch, getCurrentInstance } from 'vue';\nimport CheckoutItem from './CheckoutItem.vue';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport { useStore } from 'vuex';\nimport { SchemaFormFactory, useSchemaForm } from 'formvuelate';\nimport VeeValidatePlugin from '@formvuelate/plugin-vee-validate';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport * as yup from 'yup';\nimport { useToast } from 'vue-toastification';\n\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nconst HtmlMessage = {\n props: {\n message: '',\n },\n template: '<div v-html=\"message\"></div>',\n};\n\nwindow.viewedSwiperOptions = {\n slidesPerView: 'auto',\n freeMode: true,\n slideClass: 'product',\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: '.next',\n prevEl: '.prev'\n },\n observer: true,\n observeParents: true\n};\n\nexport default /*#__PURE__*/ defineComponent({\n components: {\n CheckoutItem,\n SchemaForm\n },\n props: {\n isLogin: {\n type: Boolean,\n default: true\n },\n isPromoCode: {\n type: Boolean,\n default: true\n }\n },\n name: 'order-checkout',\n setup() {\n const toast = useToast();\n const store = useStore();\n const loading = ref(false);\n const quantity = computed(() => store.getters['cart/quantity']);\n const items = computed(() => store.getters['cart/items']);\n const total = computed(() => store.getters['cart/total']);\n const auth = computed(() => store.getters['auth/is']);\n const userCheckout = computed(() => store.getters['checkout/user']);\n const ifCheckoutReady = ref(true);\n const redirectForm = ref(null);\n const thanks = ref(false);\n const order = ref(null);\n\n const redirect = ref({});\n\n const shippingTypes = ref([]);\n const paymentMethods = ref([]);\n\n const userType = ref('new');\n const userSubmitButton = ref(null);\n\n const shippingComponentData = computed(() => store.getters['checkout/shippingData']);\n const isCommentToggled = ref(false);\n const commentMaxLength = 1000;\n\n const isPromoCodeToggled = ref(false);\n const promoCode = ref('');\n const promoCodeApplied = ref(null);\n const isPromoLoading = ref(false);\n const app = getCurrentInstance();\n\n const resetPromoCode = () => {\n promoCode.value = '';\n promoCodeApplied.value = null;\n };\n\n const applyPromoCode = () => {\n if (promoCode.value) {\n isPromoLoading.value = true;\n\n $http\n .post(window.location.href, {\n promoCodeApply: promoCode.value,\n email: user.value.email,\n total: total.value\n })\n .then(response => {\n promoCodeApplied.value = response.data;\n }).catch(error => {\n if (error.response && error.response.data.length) {\n error.response.data.forEach(error => {\n const component = {\n component: HtmlMessage,\n props: {\n message: __('shop.order.promo.error_' + error.error, { number: app.appContext.config.globalProperties.$filters.price(error.number) }),\n },\n };\n\n toast(component, {\n type: 'error'\n });\n\n if (error.error == 'not_found') {\n promoCode.value = '';\n }\n });\n\n promoCodeApplied.value = null;\n }\n }).finally(() => {\n isPromoLoading.value = false;\n });\n }\n };\n\n const dontcall = computed({\n get() {\n return store.getters['checkout/dontcall'];\n },\n set(value) {\n store.commit('checkout/dontcall', value);\n }\n });\n\n const comment = computed({\n get() {\n const comment = store.getters['checkout/comment'];\n\n if (!!comment) {\n isCommentToggled.value = true;\n }\n\n return comment;\n },\n set(value) {\n store.commit('checkout/comment', value);\n }\n });\n\n watch(comment, (value) => {\n if (value.length > commentMaxLength) {\n comment.value = comment.value.substring(0, commentMaxLength);\n }\n });\n\n const field = (name) => {\n return computed({\n get() {\n return userCheckout.value[name];\n },\n set(value) {\n let data = JSON.parse(JSON.stringify(userCheckout.value));\n data[name] = value;\n\n store.commit('checkout/user', data);\n }\n });\n };\n\n const user = ref({\n last_name: field('last_name'),\n name: field('name'),\n email: field('email'),\n phone: field('phone')\n });\n\n store.dispatch('auth/me', {\n finally: () => { }\n });\n\n const calculateWithPromoCodeDiscount = () => {\n const sum = total.value + fee.value + shippingPrice.value;\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'percent') {\n return Math.round(sum - sum * promoCodeApplied.value.amount / 100);\n }\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'discount') {\n return Math.max(0, sum - promoCodeApplied.value.amount);\n }\n\n return sum;\n };\n\n const shipping = computed({\n get() {\n return store.getters['checkout/shipping'];\n },\n set(id) {\n store.commit('checkout/shipping', id);\n }\n });\n\n const payment = computed({\n get() {\n return store.getters['checkout/payment'];\n },\n set(id) {\n store.commit('checkout/payment', id);\n }\n });\n\n const shippingSelected = computed(() => {\n return shipping.value ? shippingTypes.value.find((item) => item.id == shipping.value) : {};\n });\n\n const paymentSelected = computed(() => {\n return payment.value ? paymentMethods.value.find((item) => item.id == payment.value) : {};\n });\n\n const shippingPrice = computed(() => {\n return calculatePrice(shippingTypes.value, shipping.value);\n });\n\n const fee = computed(() => {\n return calculatePrice(paymentMethods.value, payment.value);\n });\n\n const shippingTypesRestricted = computed(() => {\n return restrictCheck(shippingTypes.value);\n });\n\n const paymentMethodsRestricted = computed(() => {\n return restrictCheck(paymentMethods.value);\n });\n\n const categoriesInCart = computed(() => {\n let categories = [];\n\n items.value.forEach((item) => {\n if (categories.indexOf(item.category_id) === -1) {\n categories.push(item.category_id);\n }\n });\n\n return categories;\n });\n\n const calculatePrice = (items, value) => {\n let price = 0;\n\n if (value) {\n const item = items.find((item) => item.id == value);\n\n if (item) {\n if (item.type == 'sum') {\n price = item.amount;\n } else {\n price = Math.round((total.value * item.amount) / 100);\n }\n }\n }\n\n return price;\n };\n\n const restrictCheck = (elements) => {\n let items = [];\n\n elements.forEach((item) => {\n if (item.restrictions && Object.keys(item.restrictions).length) {\n let ok = true;\n\n const r = item.restrictions;\n\n if (r.price_min && r.price_max) {\n ok = total.value >= r.price_min && total.value <= r.price_max;\n item.restrictedForce = !ok;\n } else if (r.price_min) {\n ok = total.value >= r.price_min;\n item.restrictedForce = !ok;\n } else if (r.price_max) {\n ok = total.value <= r.price_max;\n item.restrictedForce = !ok;\n }\n\n if (ok && shipping.value) {\n if (r.shipping_type && r.shipping_type.length) {\n ok = r.shipping_type.indexOf(shipping.value) !== -1;\n }\n }\n\n if (ok && payment.value) {\n if (r.payment_method && r.payment_method.length) {\n ok = r.payment_method.indexOf(payment.value) !== -1;\n }\n }\n\n if (ok && r.categories && r.categories.length) {\n ok = !categoriesInCart.value.filter((value) => !r.categories.includes(value)).length;\n item.restrictedForce = !ok;\n }\n\n item.restricted = !ok;\n } else {\n item.restricted = false;\n }\n\n if (!item.restrictedForce) {\n items.push(item);\n }\n });\n\n return items;\n };\n\n const discount = computed(() => {\n let sum = 0;\n\n items.value.forEach((item) => {\n let s = 0;\n\n if (item.attributes.priceOld) {\n s = item.attributes.priceOld - item.attributes.price;\n }\n\n sum += s * item.quantity;\n });\n\n return sum;\n });\n\n const facebook = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'facebook'\n });\n };\n\n const google = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'google'\n });\n };\n\n const loginCallback = () => {\n userType.value = 'new';\n };\n\n $http.post(window.location.href).then((response) => {\n shippingTypes.value = response.data.shipping;\n paymentMethods.value = response.data.payment;\n });\n\n watch(userType, (value) => {\n if (value == 'login') {\n store.commit('auth/modal', 'login');\n }\n });\n\n const userSchema = ref({\n last_name: {\n component: FormText,\n label: __('auth.registration.form.last_name'),\n model: 'last_name'\n },\n name: {\n component: FormText,\n label: __('auth.registration.form.name'),\n model: 'first_name'\n },\n phone: {\n component: FormText,\n label: __('auth.registration.form.phone'),\n model: 'phone',\n mask: '(###) ###-##-##',\n type: 'phone'\n //placeholder: '(050) 123-45-67'\n },\n email: {\n component: FormText,\n label: __('auth.login.form.email'),\n model: 'email'\n }\n });\n\n useSchemaForm(user);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n const userValidation = yup.object().shape({\n last_name: yup.string().trim().required(__('auth.validation.required')),\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().required(__('auth.validation.phone')).matches(phoneRegExp, __('auth.validation.phone')),\n email: yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'))\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('auth/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit('auth/modal', null);\n });\n\n const validate = () => {\n userValidation.isValid(user.value).then(function (isUserValid) {\n ifCheckoutReady.value = isUserValid && payment.value && shipping.value && (!shippingSelected.value.component || (shippingSelected.value.component && shippingComponentData.value[shippingSelected.value.code] && shippingComponentData.value[shippingSelected.value.code].isValid));\n });\n };\n\n const checkout = () => {\n userValidation.isValid(user.value).then(function (valid) {\n if (!valid) {\n userType.value = 'new';\n userSubmitButton.value.click();\n\n toast(__('shop.order.validate_user'), {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast(__('shop.order.validate_shipping'), {\n type: 'error'\n });\n } else if (shippingSelected.value.component && (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid)) {\n toast(__('shop.order.validate_shipping1') + ': «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast(__('shop.order.validate_payment'), {\n type: 'error'\n });\n } else {\n let clientId;\n let data = shippingComponentData.value[shippingSelected.value.code] ? JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code])) : {};\n\n delete data.isValid;\n\n if (document.cookie) {\n const cookies = document.cookie.split(';');\n\n cookies.forEach((cookie) => {\n const parts = cookie.split('=');\n\n if (parts[0].trim() === '_ga') {\n clientId = parts[1].split('.')[2] + '.' + parts[1].split('.')[3];\n }\n });\n }\n\n const model = {\n checkout: true,\n user: {\n last_name: user.value.last_name,\n name: user.value.name,\n phone: user.value.phone,\n email: user.value.email\n },\n shipping: {\n id: shipping.value,\n data: data\n },\n payment: {\n id: payment.value\n },\n comment: comment.value,\n dontcall: dontcall.value,\n promoCode: promoCode.value,\n clientId: clientId\n };\n\n loading.value = true;\n\n $http\n .post(window.location.href, model)\n .then((response) => {\n if (response.data.redirect) {\n redirect.value = {\n url: response.data.redirect.url,\n data: response.data.redirect.data\n };\n } else {\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 ecommerce: {\n purchase: {\n actionField: {\n id: response.data.order.id,\n affiliation: 'mrfix.ua',\n revenue: total.value + fee.value + shippingPrice.value,\n tax: '0',\n shipping: shippingPrice.value\n },\n products: [products]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Purchase',\n 'gtm-ee-event-non-interaction': 'False',\n eventTimeout: 2000,\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n thanks.value = true;\n order.value = response.data.order;\n\n resertStore();\n\n // nextTick(() => {\n // redirectForm.value.submit();\n // });\n })\n .catch((e) => {\n toast(__('shop.order.error'), {\n type: 'error'\n });\n\n console.error(e);\n })\n .finally(() => {\n loading.value = false;\n });\n }\n });\n };\n\n const toggleShippingRadio = (id) => {\n if (shipping.value === id) {\n shipping.value = null;\n }\n };\n\n const togglePaymentRadio = (id) => {\n if (payment.value === id) {\n payment.value = null;\n }\n };\n\n const resertStore = () => {\n store.commit('checkout/reset');\n };\n\n const shippingStoreData = (code, data, isValid) => {\n let d = JSON.parse(JSON.stringify(shippingComponentData.value));\n\n data.isValid = isValid;\n d[code] = data;\n\n store.commit('checkout/shippingData', d);\n };\n\n const home = () => {\n window.location.href = $env.locale.url ? $env.locale.url : '/';\n };\n\n return {\n auth,\n userType,\n facebook,\n google,\n loginCallback,\n quantity,\n items,\n loading,\n pluralize,\n discount,\n total,\n shipping,\n shippingPrice,\n payment,\n fee,\n userValidation,\n userSchema,\n userSubmitButton,\n checkout,\n ifCheckoutReady,\n validate,\n shippingTypesRestricted,\n paymentMethodsRestricted,\n toggleShippingRadio,\n togglePaymentRadio,\n shippingSelected,\n paymentSelected,\n shippingComponentData,\n shippingStoreData,\n resertStore,\n user,\n dontcall,\n comment,\n isCommentToggled,\n commentMaxLength,\n userCheckout,\n thanks,\n order,\n redirect,\n redirectForm,\n home,\n\n isPromoCodeToggled,\n applyPromoCode,\n promoCode,\n isPromoLoading,\n promoCodeApplied,\n resetPromoCode,\n calculateWithPromoCodeDiscount\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","item","Object","setup","options","computed","attributes","length","itemOptions","filter","option","value","indexOf","id","_createElementVNode","_createElementBlock","_ctx","bundle","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","href","image","src","_hoisted_10","_hoisted_11","_hoisted_12","code","_hoisted_13","_hoisted_14","_hoisted_16","_hoisted_17","quantity","parseInt","_hoisted_18","innerHTML","price","_hoisted_20","priceOld","amount","percent","sum","_hoisted_24","_hoisted_25","_hoisted_26","index","key","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_32","_hoisted_33","_hoisted_34","second","_hoisted_40","_hoisted_41","_hoisted_42","third","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_52","_hoisted_53","_hoisted_54","markRaw","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","HtmlMessage","message","template","window","viewedSwiperOptions","slidesPerView","freeMode","slideClass","mousewheel","forceToAxis","navigation","nextEl","prevEl","observer","observeParents","components","CheckoutItem","isLogin","type","Boolean","isPromoCode","toast","useToast","store","useStore","loading","ref","getters","items","total","auth","userCheckout","ifCheckoutReady","redirectForm","thanks","order","redirect","shippingTypes","paymentMethods","userType","userSubmitButton","shippingComponentData","isCommentToggled","isPromoCodeToggled","promoCode","promoCodeApplied","isPromoLoading","app","getCurrentInstance","dontcall","get","set","commit","comment","watch","substring","field","data","JSON","parse","stringify","user","last_name","email","phone","dispatch","shipping","payment","shippingSelected","find","paymentSelected","shippingPrice","calculatePrice","fee","shippingTypesRestricted","restrictCheck","paymentMethodsRestricted","categoriesInCart","categories","forEach","category_id","push","Math","round","elements","restrictions","keys","ok","r","price_min","price_max","restrictedForce","shipping_type","payment_method","includes","restricted","discount","s","$http","post","location","then","response","userSchema","component","label","__","model","mask","useSchemaForm","userValidation","yup","object","shape","string","trim","required","matches","addEventListener","resertStore","facebook","$ziggy","provider","google","loginCallback","pluralize","checkout","isValid","valid","clientId","document","cookie","split","parts","url","products","brand","category","ecommerce","purchase","actionField","affiliation","revenue","tax","event","eventTimeout","dataLayer","e","console","error","click","validate","isUserValid","toggleShippingRadio","togglePaymentRadio","shippingStoreData","d","commentMaxLength","home","$env","locale","applyPromoCode","promoCodeApply","number","appContext","config","globalProperties","$filters","resetPromoCode","calculateWithPromoCodeDiscount","max","action","method","target","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_toDisplayString","_createBlock","_createVNode","onClick","open","_hoisted_15","_createCommentVNode","_hoisted_19","_hoisted_21","schemaRowClasses","schema","afterForm","_hoisted_22","_hoisted_23","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","nextDates","icon","_hoisted_48","description","_hoisted_51","price_label","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_62","_hoisted_63","_hoisted_65","_hoisted_66","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_75","_hoisted_77","_hoisted_78","_hoisted_79","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_85","_hoisted_86","_hoisted_87","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_96","_hoisted_97","_hoisted_98","_hoisted_100","onMouseenter","_hoisted_101","_hoisted_102","_hoisted_103","placeholder","disabled","_hoisted_105","_hoisted_107","_hoisted_108","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","submit","_hoisted_115","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_127","_hoisted_128","_hoisted_129","_hoisted_130","_hoisted_132","_hoisted_133","_hoisted_134","_hoisted_137"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Checkout.js","sources":["../../../../src/components/shop/order/CheckoutItem.vue","../../../../src/components/shop/order/CheckoutItem.vue?vue&type=template&id=4d5a1fac&lang.js","../../../../src/components/shop/order/Checkout.vue","../../../../src/components/shop/order/Checkout.vue?vue&type=template&id=6e503595&lang.js"],"sourcesContent":["<template>\n <div class=\"columns is-multiline shop-cart-item\" v-bind:class=\"{ 'is-bundle': item.attributes.bundle }\">\n <div class=\"column is-12\" v-if=\"item.attributes.bundle\">\n <div class=\"bundle-title\">{{ __('shop.cart.bundle') }}</div>\n </div>\n <div class=\"column name\">\n <div class=\"columns\" v-bind:class=\"{ 'mb-0': item.attributes.bundle }\">\n <div class=\"column is-narrow\">\n <a :href=\"item.attributes.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.image }\">\n <img :src=\"item.attributes.image\" v-if=\"item.attributes.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"columns is-gapless mb-0\">\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.code\">{{ __('shop.cart.code') }} {{ item.attributes.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.href\">{{ item.name }}</a>\n </div>\n </div>\n <div class=\"column is-2 has-text-centered is-relative\">\n <div class=\"quantity\">⨉ {{ item.quantity }}</div>\n <div class=\"quantity-price\" v-if=\"parseInt(item.quantity) > 1\"><span v-html=\"$filters.price(item.attributes.price)\"></span> / {{ __('shop.cart.q') }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">\n <div class=\"price\" v-bind:class=\"{ 'bundle-price': item.attributes.bundle }\">\n <div v-if=\"item.attributes.priceOld\" class=\"price-old\" v-html=\"$filters.price(item.attributes.priceOld * item.quantity)\"></div>\n <div class=\"bundle-amount\" v-if=\"item.attributes.bundle && item.attributes.amount\" v-html=\"__('shop.cart.bundle_amount') + (item.attributes.amount.percent ? item.attributes.amount.percent + '%' : $filters.price(item.attributes.amount.sum * item.quantity))\"></div>\n <div v-html=\"$filters.price(item.attributes.price * item.quantity)\"></div>\n </div>\n </div>\n </div>\n <div class=\"options is-toggled\" v-if=\"itemOptions && itemOptions.length\">\n <div class=\"toggler\">\n <span>{{ __('shop.cart.additional') }} {{ itemOptions.length }}</span>\n </div>\n <div class=\"wrapper\">\n <div v-for=\"(option, index) in itemOptions\" v-bind:key=\"index\" class=\"columns is-checked\">\n <div class=\"column\">\n <div class=\"option-title\">{{ option.name }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">+<span v-html=\"$filters.price(option.price)\"></span></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.second.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.second.image }\">\n <img :src=\"item.attributes.second.image\" v-if=\"item.attributes.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.second.code\">{{ __('shop.cart.code') }} {{ item.attributes.second.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.second.href\">{{ item.attributes.second.name }}</a>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle && item.attributes.third\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.third.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.third.image }\">\n <img :src=\"item.attributes.third.image\" v-if=\"item.attributes.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.third.code\">{{ __('shop.cart.code') }} {{ item.attributes.third.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.third.href\">{{ item.attributes.third.name }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { defineComponent, computed } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'CheckoutItem',\n props: {\n item: Object\n },\n setup(props) {\n const options = computed(() => (props.item.attributes.options && props.item.attributes.options.length ? props.item.attributes.options : []));\n const itemOptions = computed(() => (props.item.options && props.item.options.length ? props.item.options.filter((option) => options.value.indexOf(option.id) !== -1) : []));\n\n return {\n itemOptions\n };\n }\n});\n</script>","<template>\n <div class=\"columns is-multiline shop-cart-item\" v-bind:class=\"{ 'is-bundle': item.attributes.bundle }\">\n <div class=\"column is-12\" v-if=\"item.attributes.bundle\">\n <div class=\"bundle-title\">{{ __('shop.cart.bundle') }}</div>\n </div>\n <div class=\"column name\">\n <div class=\"columns\" v-bind:class=\"{ 'mb-0': item.attributes.bundle }\">\n <div class=\"column is-narrow\">\n <a :href=\"item.attributes.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.image }\">\n <img :src=\"item.attributes.image\" v-if=\"item.attributes.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"columns is-gapless mb-0\">\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.code\">{{ __('shop.cart.code') }} {{ item.attributes.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.href\">{{ item.name }}</a>\n </div>\n </div>\n <div class=\"column is-2 has-text-centered is-relative\">\n <div class=\"quantity\">⨉ {{ item.quantity }}</div>\n <div class=\"quantity-price\" v-if=\"parseInt(item.quantity) > 1\"><span v-html=\"$filters.price(item.attributes.price)\"></span> / {{ __('shop.cart.q') }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">\n <div class=\"price\" v-bind:class=\"{ 'bundle-price': item.attributes.bundle }\">\n <div v-if=\"item.attributes.priceOld\" class=\"price-old\" v-html=\"$filters.price(item.attributes.priceOld * item.quantity)\"></div>\n <div class=\"bundle-amount\" v-if=\"item.attributes.bundle && item.attributes.amount\" v-html=\"__('shop.cart.bundle_amount') + (item.attributes.amount.percent ? item.attributes.amount.percent + '%' : $filters.price(item.attributes.amount.sum * item.quantity))\"></div>\n <div v-html=\"$filters.price(item.attributes.price * item.quantity)\"></div>\n </div>\n </div>\n </div>\n <div class=\"options is-toggled\" v-if=\"itemOptions && itemOptions.length\">\n <div class=\"toggler\">\n <span>{{ __('shop.cart.additional') }} {{ itemOptions.length }}</span>\n </div>\n <div class=\"wrapper\">\n <div v-for=\"(option, index) in itemOptions\" v-bind:key=\"index\" class=\"columns is-checked\">\n <div class=\"column\">\n <div class=\"option-title\">{{ option.name }}</div>\n </div>\n <div class=\"column is-2 has-text-right\">+<span v-html=\"$filters.price(option.price)\"></span></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.second.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.second.image }\">\n <img :src=\"item.attributes.second.image\" v-if=\"item.attributes.second.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.second.code\">{{ __('shop.cart.code') }} {{ item.attributes.second.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.second.href\">{{ item.attributes.second.name }}</a>\n </div>\n </div>\n </div>\n <div class=\"bundle columns\" v-if=\"item.attributes.bundle && item.attributes.third\">\n <div class=\"column is-narrow\">\n <svg class=\"bundle-icon\"><use xlink:href=\"#bundle-plus\" /></svg>\n <a :href=\"item.attributes.third.href\">\n <figure class=\"image is-square\" v-bind:class=\"{ 'no-thumb': !item.attributes.third.image }\">\n <img :src=\"item.attributes.third.image\" v-if=\"item.attributes.third.image\" />\n <svg v-else><use xlink:href=\"#logo\" /></svg>\n </figure>\n </a>\n </div>\n <div class=\"column\">\n <div class=\"code\" v-if=\"item.attributes.third.code\">{{ __('shop.cart.code') }} {{ item.attributes.third.code }}</div>\n <div class=\"title\">\n <a :href=\"item.attributes.third.href\">{{ item.attributes.third.name }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { defineComponent, computed } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'CheckoutItem',\n props: {\n item: Object\n },\n setup(props) {\n const options = computed(() => (props.item.attributes.options && props.item.attributes.options.length ? props.item.attributes.options : []));\n const itemOptions = computed(() => (props.item.options && props.item.options.length ? props.item.options.filter((option) => options.value.indexOf(option.id) !== -1) : []));\n\n return {\n itemOptions\n };\n }\n});\n</script>","<template>\n <div class=\"cart checkout\">\n <form ref=\"redirectForm\" v-if=\"redirect.url\" :action=\"redirect.url\" class=\"is-hidden\" method=\"post\" target=\"_blank\">\n <input type=\"hidden\" :name=\"name\" :value=\"value\" v-for=\"(value, name, index) in redirect.data\" v-bind:key=\"index\" />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"checkout-title\">{{ __('shop.order.checkout_title') }}</div>\n <div class=\"columns\">\n <div class=\"column\">\n <slot name=\"header\"></slot>\n <div class=\"checkout-block items\">\n <div class=\"title-row\">\n <div class=\"items-title\">\n {{ __('shop.order.your_order') }}\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"__('shop.cart.bysum') + ' ' + $filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"cart\" :items=\"items\">\n <checkout-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></checkout-item>\n <cart-trigger class=\"trigger\">\n <template #default=\"props\">\n <button class=\"button\" @click=\"props.open\">\n <svg>\n <use xlink:href=\"#cart-edit\" />\n </svg>\n <span>{{ __('shop.order.edit') }}</span>\n </button>\n </template>\n </cart-trigger>\n </slot>\n </div>\n <!-- <button @click=\"resertStore\" style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\">reset</button> -->\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">{{ __('shop.order.contact_title') }}</div>\n <div class=\"user-tabs\" v-if=\"!auth && isLogin\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" />{{ __('shop.order.auth_new') }}</label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" />{{ __('shop.order.auth_old') }}</label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"userSchema\" :validation-schema=\"userValidation\">\n <template #afterForm>\n <button type=\"submit\" ref=\"userSubmitButton\" class=\"is-hidden\"></button>\n </template>\n </SchemaForm>\n </div>\n <div class=\"column user-login user-form\" v-show=\"userType == 'login'\" v-if=\"isLogin\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\" v-if=\"isLogin\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">{{ __('shop.order.auth_social') }}</div>\n <div class=\"buttons\">\n <a class=\"button\" @click=\"facebook\">\n <svg class=\"icon fb-btn\">\n <use xlink:href=\"#logo-facebook-icon\" />\n </svg>\n <span>Facebook</span>\n </a>\n <a class=\"button\" @click=\"google\">\n <svg class=\"icon google-btn\">\n <use xlink:href=\"#logo-google-icon\" />\n </svg>\n <span>Google</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wrapper shipping-type-block\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.shipping') }}</div>\n </div>\n <div class=\"value\" v-if=\"shippingSelected && shippingSelected.nextDates\">\n <div class=\"next-dates\">на {{ shippingSelected.nextDates }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in shippingTypesRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"shipping\" :value=\"item.id\" @click=\"toggleShippingRadio(item.id)\" />\n <img class=\"icon\" :src=\"item.icon\" v-if=\"item.icon\" />\n <svg v-else class=\"icon\">\n <use xlink:href=\"#shipping\" />\n </svg>\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span class=\"green\" v-if=\"!item.amount && item.price_label\">{{ item.price_label }}</span>\n <span v-else v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n <component :is=\"item.component\" v-show=\"item.component && item.id == shipping\" :commit=\"shippingStoreData\" :data=\"shippingComponentData\" :item=\"item\"></component>\n </div>\n </div>\n </div>\n <div class=\"wrapper payment-method-block\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.payment') }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in paymentMethodsRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row no-icon\" v-bind:class=\"'is-' + item.code\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"payment\" :value=\"item.id\" @click=\"togglePaymentRadio(item.id)\" />\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-4\">\n <div class=\"checkout-block summary\">\n <div class=\"items-title\">{{ __('shop.order.total') }}</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> {{ __('shop.cart.bysum') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">{{ __('shop.order.discount') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(discount)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">{{ __('shop.order.fee') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(fee)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"shipping\">\n <div class=\"info\">{{ __('shop.order.shipping_price') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(shippingPrice)\" v-if=\"shippingPrice > 0\"></span>\n <span class=\"green\" v-else-if=\"shippingSelected && shippingSelected.price_label\">{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\" v-if=\"promoCodeApplied\">\n <div class=\"info\">{{ __('shop.order.promo_code') }}<br><span class=\"green\">{{ promoCode }}</span></div>\n <div class=\"value\">\n <span v-html=\"(promoCodeApplied.type == 'percent' ? promoCodeApplied.amount + '%' : $filters.price(promoCodeApplied.amount))\"></span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">{{ __('shop.order.price') }}</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(calculateWithPromoCodeDiscount())\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper nocall\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" />{{ __('shop.order.nocall') }}</label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">{{ __('shop.order.action') }}</button>\n <slot name=\"submit\"></slot>\n <div class=\"consent\" v-if=\"isConsent\">\n <div class=\"checkbox-wrapper\">\n <label>\n <input type=\"checkbox\" class=\"checkbox\" v-model=\"consent\" />\n <div class=\"label\" v-html=\"__('shop.order.consent')\"></div>\n </label>\n </div>\n </div>\n <div class=\"comment-wrapper is-promo-code\" v-bind:class=\"{ 'is-open': isPromoCodeToggled }\" v-if=\"isPromoCode\">\n <div class=\"toggler\" @click=\"isPromoCodeToggled = !isPromoCodeToggled\">\n <span>{{ __('shop.order.promo_code') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form is-promo-code\">\n <div class=\"control\">\n <input type=\"text\" class=\"input\" placeholder=\" \" v-model=\"promoCode\" :disabled=\"promoCodeApplied\" id=\"promo-code-applied\">\n <label class=\"label\" for=\"promo-code-applied\">{{ __('shop.order.promo.placeholder') }}</label>\n </div>\n <button v-if=\"!promoCodeApplied\" class=\"button\" @click=\"applyPromoCode\" :disabled=\"!promoCode\" v-bind:class=\"{ 'is-loading': isPromoLoading }\">{{ __('shop.order.promo.apply') }}</button>\n <button v-else class=\"button\" @click=\"resetPromoCode\">{{ __('shop.order.promo.reset') }}</button>\n </div>\n </div>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>{{ __('shop.order.comment') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form\">\n <textarea class=\"textarea\" v-model=\"comment\"></textarea>\n <div class=\"chars-count\" v-if=\"comment.length\">{{ commentMaxLength - comment.length }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"checkout-block thanks\" v-else-if=\"thanks && order\">\n <div class=\"title\">\n {{ __('shop.order.order') }}\n <span>№{{ order.id }}</span> {{ __('shop.order.success') }}\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">{{ __('shop.order.pay_online') }}</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">{{ __('shop.order.pay_online_go') }}</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">{{ __('shop.order.shipping') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.shipping[0]\" v-html=\"order.shipping[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.shipping[1]\" v-html=\"order.shipping[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">{{ __('shop.order.payment') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.payment[0]\" v-html=\"order.payment[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.payment[1]\" v-html=\"order.payment[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.promoCode\">\n <div class=\"title\">{{ __('shop.order.promo_code') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\">\n <span v-html=\"order.promoCode\" class=\"green\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.continue') }}</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch, getCurrentInstance } from 'vue';\nimport CheckoutItem from './CheckoutItem.vue';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport { useStore } from 'vuex';\nimport { SchemaFormFactory, useSchemaForm } from 'formvuelate';\nimport VeeValidatePlugin from '@formvuelate/plugin-vee-validate';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport * as yup from 'yup';\nimport { useToast } from 'vue-toastification';\n\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nconst HtmlMessage = {\n props: {\n message: '',\n },\n template: '<div v-html=\"message\"></div>',\n};\n\nwindow.viewedSwiperOptions = {\n slidesPerView: 'auto',\n freeMode: true,\n slideClass: 'product',\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: '.next',\n prevEl: '.prev'\n },\n observer: true,\n observeParents: true\n};\n\nexport default /*#__PURE__*/ defineComponent({\n components: {\n CheckoutItem,\n SchemaForm\n },\n props: {\n isLogin: {\n type: Boolean,\n default: true\n },\n isPromoCode: {\n type: Boolean,\n default: true\n },\n isConsent: {\n type: Boolean,\n default: false\n },\n },\n name: 'order-checkout',\n setup(props) {\n const toast = useToast();\n const store = useStore();\n const loading = ref(false);\n const quantity = computed(() => store.getters['cart/quantity']);\n const items = computed(() => store.getters['cart/items']);\n const total = computed(() => store.getters['cart/total']);\n const auth = computed(() => store.getters['auth/is']);\n const userCheckout = computed(() => store.getters['checkout/user']);\n const ifCheckoutReady = ref(true);\n const redirectForm = ref(null);\n const thanks = ref(false);\n const order = ref(null);\n const consent = ref(false);\n\n const redirect = ref({});\n\n const shippingTypes = ref([]);\n const paymentMethods = ref([]);\n\n const userType = ref('new');\n const userSubmitButton = ref(null);\n\n const shippingComponentData = computed(() => store.getters['checkout/shippingData']);\n const isCommentToggled = ref(false);\n const commentMaxLength = 1000;\n\n const isPromoCodeToggled = ref(false);\n const promoCode = ref('');\n const promoCodeApplied = ref(null);\n const isPromoLoading = ref(false);\n const app = getCurrentInstance();\n\n const resetPromoCode = () => {\n promoCode.value = '';\n promoCodeApplied.value = null;\n };\n\n const isUserConsent = computed(() => {\n return (props.isConsent && consent.value) || !props.isConsent;\n });\n\n const applyPromoCode = () => {\n if (promoCode.value) {\n isPromoLoading.value = true;\n\n $http\n .post(window.location.href, {\n promoCodeApply: promoCode.value,\n email: user.value.email,\n total: total.value\n })\n .then(response => {\n promoCodeApplied.value = response.data;\n }).catch(error => {\n if (error.response && error.response.data.length) {\n error.response.data.forEach(error => {\n const component = {\n component: HtmlMessage,\n props: {\n message: __('shop.order.promo.error_' + error.error, { number: app.appContext.config.globalProperties.$filters.price(error.number) }),\n },\n };\n\n toast(component, {\n type: 'error'\n });\n\n if (error.error == 'not_found') {\n promoCode.value = '';\n }\n });\n\n promoCodeApplied.value = null;\n }\n }).finally(() => {\n isPromoLoading.value = false;\n });\n }\n };\n\n const dontcall = computed({\n get() {\n return store.getters['checkout/dontcall'];\n },\n set(value) {\n store.commit('checkout/dontcall', value);\n }\n });\n\n const comment = computed({\n get() {\n const comment = store.getters['checkout/comment'];\n\n if (!!comment) {\n isCommentToggled.value = true;\n }\n\n return comment;\n },\n set(value) {\n store.commit('checkout/comment', value);\n }\n });\n\n watch(comment, (value) => {\n if (value.length > commentMaxLength) {\n comment.value = comment.value.substring(0, commentMaxLength);\n }\n });\n\n const field = (name) => {\n return computed({\n get() {\n return userCheckout.value[name];\n },\n set(value) {\n let data = JSON.parse(JSON.stringify(userCheckout.value));\n data[name] = value;\n\n store.commit('checkout/user', data);\n }\n });\n };\n\n const user = ref({\n last_name: field('last_name'),\n name: field('name'),\n email: field('email'),\n phone: field('phone')\n });\n\n store.dispatch('auth/me', {\n finally: () => { }\n });\n\n const calculateWithPromoCodeDiscount = () => {\n const sum = total.value + fee.value + shippingPrice.value;\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'percent') {\n return Math.round(sum - sum * promoCodeApplied.value.amount / 100);\n }\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'discount') {\n return Math.max(0, sum - promoCodeApplied.value.amount);\n }\n\n return sum;\n };\n\n const shipping = computed({\n get() {\n return store.getters['checkout/shipping'];\n },\n set(id) {\n store.commit('checkout/shipping', id);\n }\n });\n\n const payment = computed({\n get() {\n return store.getters['checkout/payment'];\n },\n set(id) {\n store.commit('checkout/payment', id);\n }\n });\n\n const shippingSelected = computed(() => {\n return shipping.value ? shippingTypes.value.find((item) => item.id == shipping.value) : {};\n });\n\n const paymentSelected = computed(() => {\n return payment.value ? paymentMethods.value.find((item) => item.id == payment.value) : {};\n });\n\n const shippingPrice = computed(() => {\n return calculatePrice(shippingTypes.value, shipping.value);\n });\n\n const fee = computed(() => {\n return calculatePrice(paymentMethods.value, payment.value);\n });\n\n const shippingTypesRestricted = computed(() => {\n return restrictCheck(shippingTypes.value);\n });\n\n const paymentMethodsRestricted = computed(() => {\n return restrictCheck(paymentMethods.value);\n });\n\n const categoriesInCart = computed(() => {\n let categories = [];\n\n items.value.forEach((item) => {\n if (categories.indexOf(item.category_id) === -1) {\n categories.push(item.category_id);\n }\n });\n\n return categories;\n });\n\n const calculatePrice = (items, value) => {\n let price = 0;\n\n if (value) {\n const item = items.find((item) => item.id == value);\n\n if (item) {\n if (item.type == 'sum') {\n price = item.amount;\n } else {\n price = Math.round((total.value * item.amount) / 100);\n }\n }\n }\n\n return price;\n };\n\n const restrictCheck = (elements) => {\n let items = [];\n\n elements.forEach((item) => {\n if (item.restrictions && Object.keys(item.restrictions).length) {\n let ok = true;\n\n const r = item.restrictions;\n\n if (r.price_min && r.price_max) {\n ok = total.value >= r.price_min && total.value <= r.price_max;\n item.restrictedForce = !ok;\n } else if (r.price_min) {\n ok = total.value >= r.price_min;\n item.restrictedForce = !ok;\n } else if (r.price_max) {\n ok = total.value <= r.price_max;\n item.restrictedForce = !ok;\n }\n\n if (ok && shipping.value) {\n if (r.shipping_type && r.shipping_type.length) {\n ok = r.shipping_type.indexOf(shipping.value) !== -1;\n }\n }\n\n if (ok && payment.value) {\n if (r.payment_method && r.payment_method.length) {\n ok = r.payment_method.indexOf(payment.value) !== -1;\n }\n }\n\n if (ok && r.categories && r.categories.length) {\n ok = !categoriesInCart.value.filter((value) => !r.categories.includes(value)).length;\n item.restrictedForce = !ok;\n }\n\n item.restricted = !ok;\n } else {\n item.restricted = false;\n }\n\n if (!item.restrictedForce) {\n items.push(item);\n }\n });\n\n return items;\n };\n\n const discount = computed(() => {\n let sum = 0;\n\n items.value.forEach((item) => {\n let s = 0;\n\n if (item.attributes.priceOld) {\n s = item.attributes.priceOld - item.attributes.price;\n }\n\n sum += s * item.quantity;\n });\n\n return sum;\n });\n\n const facebook = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'facebook'\n });\n };\n\n const google = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'google'\n });\n };\n\n const loginCallback = () => {\n userType.value = 'new';\n };\n\n $http.post(window.location.href).then((response) => {\n shippingTypes.value = response.data.shipping;\n paymentMethods.value = response.data.payment;\n });\n\n watch(userType, (value) => {\n if (value == 'login') {\n store.commit('auth/modal', 'login');\n }\n });\n\n const userSchema = ref({\n last_name: {\n component: FormText,\n label: __('auth.registration.form.last_name'),\n model: 'last_name'\n },\n name: {\n component: FormText,\n label: __('auth.registration.form.name'),\n model: 'first_name'\n },\n phone: {\n component: FormText,\n label: __('auth.registration.form.phone'),\n model: 'phone',\n mask: '(###) ###-##-##',\n type: 'phone'\n //placeholder: '(050) 123-45-67'\n },\n email: {\n component: FormText,\n label: __('auth.login.form.email'),\n model: 'email'\n }\n });\n\n useSchemaForm(user);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n const userValidation = yup.object().shape({\n last_name: yup.string().trim().required(__('auth.validation.required')),\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().required(__('auth.validation.phone')).matches(phoneRegExp, __('auth.validation.phone')),\n email: yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'))\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('auth/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit('auth/modal', null);\n });\n\n const validate = () => {\n userValidation.isValid(user.value).then(function (isUserValid) {\n ifCheckoutReady.value = isUserValid && payment.value && isUserConsent.value && shipping.value && (!shippingSelected.value.component || (shippingSelected.value.component && shippingComponentData.value[shippingSelected.value.code] && shippingComponentData.value[shippingSelected.value.code].isValid));\n });\n };\n\n const checkout = () => {\n userValidation.isValid(user.value).then(function (valid) {\n if (!valid) {\n userType.value = 'new';\n userSubmitButton.value.click();\n\n toast(__('shop.order.validate_user'), {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast(__('shop.order.validate_shipping'), {\n type: 'error'\n });\n } else if (shippingSelected.value.component && (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid)) {\n toast(__('shop.order.validate_shipping1') + ': «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast(__('shop.order.validate_payment'), {\n type: 'error'\n });\n } else if (!isUserConsent.value) {\n toast(__('shop.order.validate_consent'), {\n type: 'error'\n });\n } else {\n let clientId;\n let data = shippingComponentData.value[shippingSelected.value.code] ? JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code])) : {};\n\n delete data.isValid;\n\n if (document.cookie) {\n const cookies = document.cookie.split(';');\n\n cookies.forEach((cookie) => {\n const parts = cookie.split('=');\n\n if (parts[0].trim() === '_ga') {\n clientId = parts[1].split('.')[2] + '.' + parts[1].split('.')[3];\n }\n });\n }\n\n const model = {\n checkout: true,\n user: {\n last_name: user.value.last_name,\n name: user.value.name,\n phone: user.value.phone,\n email: user.value.email\n },\n shipping: {\n id: shipping.value,\n data: data\n },\n payment: {\n id: payment.value\n },\n comment: comment.value,\n dontcall: dontcall.value,\n promoCode: promoCode.value,\n clientId: clientId\n };\n\n loading.value = true;\n\n $http\n .post(window.location.href, model)\n .then((response) => {\n if (response.data.redirect) {\n redirect.value = {\n url: response.data.redirect.url,\n data: response.data.redirect.data\n };\n } else {\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 ecommerce: {\n purchase: {\n actionField: {\n id: response.data.order.id,\n affiliation: 'mrfix.ua',\n revenue: total.value + fee.value + shippingPrice.value,\n tax: '0',\n shipping: shippingPrice.value\n },\n products: [products]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Purchase',\n 'gtm-ee-event-non-interaction': 'False',\n eventTimeout: 2000,\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n thanks.value = true;\n order.value = response.data.order;\n\n resertStore();\n\n // nextTick(() => {\n // redirectForm.value.submit();\n // });\n })\n .catch((e) => {\n toast(__('shop.order.error'), {\n type: 'error'\n });\n\n console.error(e);\n })\n .finally(() => {\n loading.value = false;\n });\n }\n });\n };\n\n const toggleShippingRadio = (id) => {\n if (shipping.value === id) {\n shipping.value = null;\n }\n };\n\n const togglePaymentRadio = (id) => {\n if (payment.value === id) {\n payment.value = null;\n }\n };\n\n const resertStore = () => {\n store.commit('checkout/reset');\n };\n\n const shippingStoreData = (code, data, isValid) => {\n let d = JSON.parse(JSON.stringify(shippingComponentData.value));\n\n data.isValid = isValid;\n d[code] = data;\n\n store.commit('checkout/shippingData', d);\n };\n\n const home = () => {\n window.location.href = $env.locale.url ? $env.locale.url : '/';\n };\n\n return {\n auth,\n userType,\n facebook,\n google,\n loginCallback,\n quantity,\n items,\n loading,\n pluralize,\n discount,\n total,\n shipping,\n shippingPrice,\n payment,\n fee,\n userValidation,\n userSchema,\n userSubmitButton,\n checkout,\n ifCheckoutReady,\n validate,\n shippingTypesRestricted,\n paymentMethodsRestricted,\n toggleShippingRadio,\n togglePaymentRadio,\n shippingSelected,\n paymentSelected,\n shippingComponentData,\n shippingStoreData,\n resertStore,\n user,\n dontcall,\n comment,\n isCommentToggled,\n commentMaxLength,\n userCheckout,\n thanks,\n order,\n redirect,\n redirectForm,\n home,\n\n isPromoCodeToggled,\n applyPromoCode,\n promoCode,\n isPromoLoading,\n promoCodeApplied,\n resetPromoCode,\n calculateWithPromoCodeDiscount,\n consent,\n };\n }\n});\n</script>","<template>\n <div class=\"cart checkout\">\n <form ref=\"redirectForm\" v-if=\"redirect.url\" :action=\"redirect.url\" class=\"is-hidden\" method=\"post\" target=\"_blank\">\n <input type=\"hidden\" :name=\"name\" :value=\"value\" v-for=\"(value, name, index) in redirect.data\" v-bind:key=\"index\" />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"checkout-title\">{{ __('shop.order.checkout_title') }}</div>\n <div class=\"columns\">\n <div class=\"column\">\n <slot name=\"header\"></slot>\n <div class=\"checkout-block items\">\n <div class=\"title-row\">\n <div class=\"items-title\">\n {{ __('shop.order.your_order') }}\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"__('shop.cart.bysum') + ' ' + $filters.price(total)\"></span>\n </div>\n </div>\n <slot name=\"cart\" :items=\"items\">\n <checkout-item v-for=\"item in items\" v-bind:key=\"item.id\" :item=\"item\"></checkout-item>\n <cart-trigger class=\"trigger\">\n <template #default=\"props\">\n <button class=\"button\" @click=\"props.open\">\n <svg>\n <use xlink:href=\"#cart-edit\" />\n </svg>\n <span>{{ __('shop.order.edit') }}</span>\n </button>\n </template>\n </cart-trigger>\n </slot>\n </div>\n <!-- <button @click=\"resertStore\" style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\">reset</button> -->\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">{{ __('shop.order.contact_title') }}</div>\n <div class=\"user-tabs\" v-if=\"!auth && isLogin\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" />{{ __('shop.order.auth_new') }}</label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" />{{ __('shop.order.auth_old') }}</label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"userSchema\" :validation-schema=\"userValidation\">\n <template #afterForm>\n <button type=\"submit\" ref=\"userSubmitButton\" class=\"is-hidden\"></button>\n </template>\n </SchemaForm>\n </div>\n <div class=\"column user-login user-form\" v-show=\"userType == 'login'\" v-if=\"isLogin\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\" v-if=\"isLogin\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">{{ __('shop.order.auth_social') }}</div>\n <div class=\"buttons\">\n <a class=\"button\" @click=\"facebook\">\n <svg class=\"icon fb-btn\">\n <use xlink:href=\"#logo-facebook-icon\" />\n </svg>\n <span>Facebook</span>\n </a>\n <a class=\"button\" @click=\"google\">\n <svg class=\"icon google-btn\">\n <use xlink:href=\"#logo-google-icon\" />\n </svg>\n <span>Google</span>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wrapper shipping-type-block\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.shipping') }}</div>\n </div>\n <div class=\"value\" v-if=\"shippingSelected && shippingSelected.nextDates\">\n <div class=\"next-dates\">на {{ shippingSelected.nextDates }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in shippingTypesRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"shipping\" :value=\"item.id\" @click=\"toggleShippingRadio(item.id)\" />\n <img class=\"icon\" :src=\"item.icon\" v-if=\"item.icon\" />\n <svg v-else class=\"icon\">\n <use xlink:href=\"#shipping\" />\n </svg>\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span class=\"green\" v-if=\"!item.amount && item.price_label\">{{ item.price_label }}</span>\n <span v-else v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n <component :is=\"item.component\" v-show=\"item.component && item.id == shipping\" :commit=\"shippingStoreData\" :data=\"shippingComponentData\" :item=\"item\"></component>\n </div>\n </div>\n </div>\n <div class=\"wrapper payment-method-block\">\n <div class=\"rows\">\n <div class=\"item\">\n <div class=\"row\">\n <div class=\"info\">\n <div class=\"items-title mb-1\">{{ __('shop.order.payment') }}</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">{{ __('shop.order.reset') }}</a>\n </div>\n </div>\n </div>\n <div class=\"item\" v-for=\"item in paymentMethodsRestricted\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-disabled': item.restricted }\">\n <div class=\"row no-icon\" v-bind:class=\"'is-' + item.code\">\n <div class=\"info\">\n <label>\n <input type=\"radio\" class=\"radio\" v-model=\"payment\" :value=\"item.id\" @click=\"togglePaymentRadio(item.id)\" />\n <span>{{ item.name }}</span>\n </label>\n <div class=\"description\" v-if=\"item.description\">{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-4\">\n <div class=\"checkout-block summary\">\n <div class=\"items-title\">{{ __('shop.order.total') }}</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> {{ __('shop.cart.bysum') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(total)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">{{ __('shop.order.discount') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(discount)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">{{ __('shop.order.fee') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(fee)\"></span>\n </div>\n </div>\n <div class=\"row\" v-if=\"shipping\">\n <div class=\"info\">{{ __('shop.order.shipping_price') }}</div>\n <div class=\"value\">\n <span v-html=\"$filters.price(shippingPrice)\" v-if=\"shippingPrice > 0\"></span>\n <span class=\"green\" v-else-if=\"shippingSelected && shippingSelected.price_label\">{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\" v-if=\"promoCodeApplied\">\n <div class=\"info\">{{ __('shop.order.promo_code') }}<br><span class=\"green\">{{ promoCode }}</span></div>\n <div class=\"value\">\n <span v-html=\"(promoCodeApplied.type == 'percent' ? promoCodeApplied.amount + '%' : $filters.price(promoCodeApplied.amount))\"></span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">{{ __('shop.order.price') }}</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(calculateWithPromoCodeDiscount())\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper nocall\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" />{{ __('shop.order.nocall') }}</label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">{{ __('shop.order.action') }}</button>\n <slot name=\"submit\"></slot>\n <div class=\"consent\" v-if=\"isConsent\">\n <div class=\"checkbox-wrapper\">\n <label>\n <input type=\"checkbox\" class=\"checkbox\" v-model=\"consent\" />\n <div class=\"label\" v-html=\"__('shop.order.consent')\"></div>\n </label>\n </div>\n </div>\n <div class=\"comment-wrapper is-promo-code\" v-bind:class=\"{ 'is-open': isPromoCodeToggled }\" v-if=\"isPromoCode\">\n <div class=\"toggler\" @click=\"isPromoCodeToggled = !isPromoCodeToggled\">\n <span>{{ __('shop.order.promo_code') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form is-promo-code\">\n <div class=\"control\">\n <input type=\"text\" class=\"input\" placeholder=\" \" v-model=\"promoCode\" :disabled=\"promoCodeApplied\" id=\"promo-code-applied\">\n <label class=\"label\" for=\"promo-code-applied\">{{ __('shop.order.promo.placeholder') }}</label>\n </div>\n <button v-if=\"!promoCodeApplied\" class=\"button\" @click=\"applyPromoCode\" :disabled=\"!promoCode\" v-bind:class=\"{ 'is-loading': isPromoLoading }\">{{ __('shop.order.promo.apply') }}</button>\n <button v-else class=\"button\" @click=\"resetPromoCode\">{{ __('shop.order.promo.reset') }}</button>\n </div>\n </div>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>{{ __('shop.order.comment') }}</span>\n <svg>\n <use xlink:href=\"#arrow-down\" />\n </svg>\n </div>\n <div class=\"user-form\">\n <textarea class=\"textarea\" v-model=\"comment\"></textarea>\n <div class=\"chars-count\" v-if=\"comment.length\">{{ commentMaxLength - comment.length }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"checkout-block thanks\" v-else-if=\"thanks && order\">\n <div class=\"title\">\n {{ __('shop.order.order') }}\n <span>№{{ order.id }}</span> {{ __('shop.order.success') }}\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">{{ __('shop.order.pay_online') }}</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">{{ __('shop.order.pay_online_go') }}</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">{{ __('shop.cart.continue') }}</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">{{ __('shop.order.shipping') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.shipping[0]\" v-html=\"order.shipping[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.shipping[1]\" v-html=\"order.shipping[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">{{ __('shop.order.payment') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"order.payment[0]\" v-html=\"order.payment[0]\"></div>\n <div class=\"column is-6\" v-if=\"order.payment[1]\" v-html=\"order.payment[1]\"></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.promoCode\">\n <div class=\"title\">{{ __('shop.order.promo_code') }}</div>\n <div class=\"columns\">\n <div class=\"column is-6\">\n <span v-html=\"order.promoCode\" class=\"green\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">{{ __('shop.cart.no_no') }}</div>\n <div class=\"message\">\n {{ __('shop.cart.no_prop') }}\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.no_home') }}</a>, <br />{{ __('shop.cart.no_search') }}\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">{{ __('shop.cart.continue') }}</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch, getCurrentInstance } from 'vue';\nimport CheckoutItem from './CheckoutItem.vue';\nimport { pluralize } from '@perevorot/shop/dist/helpers';\nimport { useStore } from 'vuex';\nimport { SchemaFormFactory, useSchemaForm } from 'formvuelate';\nimport VeeValidatePlugin from '@formvuelate/plugin-vee-validate';\nimport FormText from '@perevorot/shop/dist/forms/FormText';\nimport * as yup from 'yup';\nimport { useToast } from 'vue-toastification';\n\nmarkRaw(FormText);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nconst HtmlMessage = {\n props: {\n message: '',\n },\n template: '<div v-html=\"message\"></div>',\n};\n\nwindow.viewedSwiperOptions = {\n slidesPerView: 'auto',\n freeMode: true,\n slideClass: 'product',\n mousewheel: {\n forceToAxis: true\n },\n navigation: {\n nextEl: '.next',\n prevEl: '.prev'\n },\n observer: true,\n observeParents: true\n};\n\nexport default /*#__PURE__*/ defineComponent({\n components: {\n CheckoutItem,\n SchemaForm\n },\n props: {\n isLogin: {\n type: Boolean,\n default: true\n },\n isPromoCode: {\n type: Boolean,\n default: true\n },\n isConsent: {\n type: Boolean,\n default: false\n },\n },\n name: 'order-checkout',\n setup(props) {\n const toast = useToast();\n const store = useStore();\n const loading = ref(false);\n const quantity = computed(() => store.getters['cart/quantity']);\n const items = computed(() => store.getters['cart/items']);\n const total = computed(() => store.getters['cart/total']);\n const auth = computed(() => store.getters['auth/is']);\n const userCheckout = computed(() => store.getters['checkout/user']);\n const ifCheckoutReady = ref(true);\n const redirectForm = ref(null);\n const thanks = ref(false);\n const order = ref(null);\n const consent = ref(false);\n\n const redirect = ref({});\n\n const shippingTypes = ref([]);\n const paymentMethods = ref([]);\n\n const userType = ref('new');\n const userSubmitButton = ref(null);\n\n const shippingComponentData = computed(() => store.getters['checkout/shippingData']);\n const isCommentToggled = ref(false);\n const commentMaxLength = 1000;\n\n const isPromoCodeToggled = ref(false);\n const promoCode = ref('');\n const promoCodeApplied = ref(null);\n const isPromoLoading = ref(false);\n const app = getCurrentInstance();\n\n const resetPromoCode = () => {\n promoCode.value = '';\n promoCodeApplied.value = null;\n };\n\n const isUserConsent = computed(() => {\n return (props.isConsent && consent.value) || !props.isConsent;\n });\n\n const applyPromoCode = () => {\n if (promoCode.value) {\n isPromoLoading.value = true;\n\n $http\n .post(window.location.href, {\n promoCodeApply: promoCode.value,\n email: user.value.email,\n total: total.value\n })\n .then(response => {\n promoCodeApplied.value = response.data;\n }).catch(error => {\n if (error.response && error.response.data.length) {\n error.response.data.forEach(error => {\n const component = {\n component: HtmlMessage,\n props: {\n message: __('shop.order.promo.error_' + error.error, { number: app.appContext.config.globalProperties.$filters.price(error.number) }),\n },\n };\n\n toast(component, {\n type: 'error'\n });\n\n if (error.error == 'not_found') {\n promoCode.value = '';\n }\n });\n\n promoCodeApplied.value = null;\n }\n }).finally(() => {\n isPromoLoading.value = false;\n });\n }\n };\n\n const dontcall = computed({\n get() {\n return store.getters['checkout/dontcall'];\n },\n set(value) {\n store.commit('checkout/dontcall', value);\n }\n });\n\n const comment = computed({\n get() {\n const comment = store.getters['checkout/comment'];\n\n if (!!comment) {\n isCommentToggled.value = true;\n }\n\n return comment;\n },\n set(value) {\n store.commit('checkout/comment', value);\n }\n });\n\n watch(comment, (value) => {\n if (value.length > commentMaxLength) {\n comment.value = comment.value.substring(0, commentMaxLength);\n }\n });\n\n const field = (name) => {\n return computed({\n get() {\n return userCheckout.value[name];\n },\n set(value) {\n let data = JSON.parse(JSON.stringify(userCheckout.value));\n data[name] = value;\n\n store.commit('checkout/user', data);\n }\n });\n };\n\n const user = ref({\n last_name: field('last_name'),\n name: field('name'),\n email: field('email'),\n phone: field('phone')\n });\n\n store.dispatch('auth/me', {\n finally: () => { }\n });\n\n const calculateWithPromoCodeDiscount = () => {\n const sum = total.value + fee.value + shippingPrice.value;\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'percent') {\n return Math.round(sum - sum * promoCodeApplied.value.amount / 100);\n }\n\n if (promoCodeApplied.value && promoCodeApplied.value.type == 'discount') {\n return Math.max(0, sum - promoCodeApplied.value.amount);\n }\n\n return sum;\n };\n\n const shipping = computed({\n get() {\n return store.getters['checkout/shipping'];\n },\n set(id) {\n store.commit('checkout/shipping', id);\n }\n });\n\n const payment = computed({\n get() {\n return store.getters['checkout/payment'];\n },\n set(id) {\n store.commit('checkout/payment', id);\n }\n });\n\n const shippingSelected = computed(() => {\n return shipping.value ? shippingTypes.value.find((item) => item.id == shipping.value) : {};\n });\n\n const paymentSelected = computed(() => {\n return payment.value ? paymentMethods.value.find((item) => item.id == payment.value) : {};\n });\n\n const shippingPrice = computed(() => {\n return calculatePrice(shippingTypes.value, shipping.value);\n });\n\n const fee = computed(() => {\n return calculatePrice(paymentMethods.value, payment.value);\n });\n\n const shippingTypesRestricted = computed(() => {\n return restrictCheck(shippingTypes.value);\n });\n\n const paymentMethodsRestricted = computed(() => {\n return restrictCheck(paymentMethods.value);\n });\n\n const categoriesInCart = computed(() => {\n let categories = [];\n\n items.value.forEach((item) => {\n if (categories.indexOf(item.category_id) === -1) {\n categories.push(item.category_id);\n }\n });\n\n return categories;\n });\n\n const calculatePrice = (items, value) => {\n let price = 0;\n\n if (value) {\n const item = items.find((item) => item.id == value);\n\n if (item) {\n if (item.type == 'sum') {\n price = item.amount;\n } else {\n price = Math.round((total.value * item.amount) / 100);\n }\n }\n }\n\n return price;\n };\n\n const restrictCheck = (elements) => {\n let items = [];\n\n elements.forEach((item) => {\n if (item.restrictions && Object.keys(item.restrictions).length) {\n let ok = true;\n\n const r = item.restrictions;\n\n if (r.price_min && r.price_max) {\n ok = total.value >= r.price_min && total.value <= r.price_max;\n item.restrictedForce = !ok;\n } else if (r.price_min) {\n ok = total.value >= r.price_min;\n item.restrictedForce = !ok;\n } else if (r.price_max) {\n ok = total.value <= r.price_max;\n item.restrictedForce = !ok;\n }\n\n if (ok && shipping.value) {\n if (r.shipping_type && r.shipping_type.length) {\n ok = r.shipping_type.indexOf(shipping.value) !== -1;\n }\n }\n\n if (ok && payment.value) {\n if (r.payment_method && r.payment_method.length) {\n ok = r.payment_method.indexOf(payment.value) !== -1;\n }\n }\n\n if (ok && r.categories && r.categories.length) {\n ok = !categoriesInCart.value.filter((value) => !r.categories.includes(value)).length;\n item.restrictedForce = !ok;\n }\n\n item.restricted = !ok;\n } else {\n item.restricted = false;\n }\n\n if (!item.restrictedForce) {\n items.push(item);\n }\n });\n\n return items;\n };\n\n const discount = computed(() => {\n let sum = 0;\n\n items.value.forEach((item) => {\n let s = 0;\n\n if (item.attributes.priceOld) {\n s = item.attributes.priceOld - item.attributes.price;\n }\n\n sum += s * item.quantity;\n });\n\n return sum;\n });\n\n const facebook = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'facebook'\n });\n };\n\n const google = () => {\n window.location.href = $ziggy('auth.login.social', {\n provider: 'google'\n });\n };\n\n const loginCallback = () => {\n userType.value = 'new';\n };\n\n $http.post(window.location.href).then((response) => {\n shippingTypes.value = response.data.shipping;\n paymentMethods.value = response.data.payment;\n });\n\n watch(userType, (value) => {\n if (value == 'login') {\n store.commit('auth/modal', 'login');\n }\n });\n\n const userSchema = ref({\n last_name: {\n component: FormText,\n label: __('auth.registration.form.last_name'),\n model: 'last_name'\n },\n name: {\n component: FormText,\n label: __('auth.registration.form.name'),\n model: 'first_name'\n },\n phone: {\n component: FormText,\n label: __('auth.registration.form.phone'),\n model: 'phone',\n mask: '(###) ###-##-##',\n type: 'phone'\n //placeholder: '(050) 123-45-67'\n },\n email: {\n component: FormText,\n label: __('auth.login.form.email'),\n model: 'email'\n }\n });\n\n useSchemaForm(user);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n const userValidation = yup.object().shape({\n last_name: yup.string().trim().required(__('auth.validation.required')),\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().required(__('auth.validation.phone')).matches(phoneRegExp, __('auth.validation.phone')),\n email: yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'))\n });\n\n window.addEventListener('beforeunload', () => {\n store.commit('auth/modal', null);\n });\n\n window.addEventListener('pagehide', () => {\n store.commit('auth/modal', null);\n });\n\n const validate = () => {\n userValidation.isValid(user.value).then(function (isUserValid) {\n ifCheckoutReady.value = isUserValid && payment.value && isUserConsent.value && shipping.value && (!shippingSelected.value.component || (shippingSelected.value.component && shippingComponentData.value[shippingSelected.value.code] && shippingComponentData.value[shippingSelected.value.code].isValid));\n });\n };\n\n const checkout = () => {\n userValidation.isValid(user.value).then(function (valid) {\n if (!valid) {\n userType.value = 'new';\n userSubmitButton.value.click();\n\n toast(__('shop.order.validate_user'), {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast(__('shop.order.validate_shipping'), {\n type: 'error'\n });\n } else if (shippingSelected.value.component && (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid)) {\n toast(__('shop.order.validate_shipping1') + ': «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast(__('shop.order.validate_payment'), {\n type: 'error'\n });\n } else if (!isUserConsent.value) {\n toast(__('shop.order.validate_consent'), {\n type: 'error'\n });\n } else {\n let clientId;\n let data = shippingComponentData.value[shippingSelected.value.code] ? JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code])) : {};\n\n delete data.isValid;\n\n if (document.cookie) {\n const cookies = document.cookie.split(';');\n\n cookies.forEach((cookie) => {\n const parts = cookie.split('=');\n\n if (parts[0].trim() === '_ga') {\n clientId = parts[1].split('.')[2] + '.' + parts[1].split('.')[3];\n }\n });\n }\n\n const model = {\n checkout: true,\n user: {\n last_name: user.value.last_name,\n name: user.value.name,\n phone: user.value.phone,\n email: user.value.email\n },\n shipping: {\n id: shipping.value,\n data: data\n },\n payment: {\n id: payment.value\n },\n comment: comment.value,\n dontcall: dontcall.value,\n promoCode: promoCode.value,\n clientId: clientId\n };\n\n loading.value = true;\n\n $http\n .post(window.location.href, model)\n .then((response) => {\n if (response.data.redirect) {\n redirect.value = {\n url: response.data.redirect.url,\n data: response.data.redirect.data\n };\n } else {\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 ecommerce: {\n purchase: {\n actionField: {\n id: response.data.order.id,\n affiliation: 'mrfix.ua',\n revenue: total.value + fee.value + shippingPrice.value,\n tax: '0',\n shipping: shippingPrice.value\n },\n products: [products]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Purchase',\n 'gtm-ee-event-non-interaction': 'False',\n eventTimeout: 2000,\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n\n thanks.value = true;\n order.value = response.data.order;\n\n resertStore();\n\n // nextTick(() => {\n // redirectForm.value.submit();\n // });\n })\n .catch((e) => {\n toast(__('shop.order.error'), {\n type: 'error'\n });\n\n console.error(e);\n })\n .finally(() => {\n loading.value = false;\n });\n }\n });\n };\n\n const toggleShippingRadio = (id) => {\n if (shipping.value === id) {\n shipping.value = null;\n }\n };\n\n const togglePaymentRadio = (id) => {\n if (payment.value === id) {\n payment.value = null;\n }\n };\n\n const resertStore = () => {\n store.commit('checkout/reset');\n };\n\n const shippingStoreData = (code, data, isValid) => {\n let d = JSON.parse(JSON.stringify(shippingComponentData.value));\n\n data.isValid = isValid;\n d[code] = data;\n\n store.commit('checkout/shippingData', d);\n };\n\n const home = () => {\n window.location.href = $env.locale.url ? $env.locale.url : '/';\n };\n\n return {\n auth,\n userType,\n facebook,\n google,\n loginCallback,\n quantity,\n items,\n loading,\n pluralize,\n discount,\n total,\n shipping,\n shippingPrice,\n payment,\n fee,\n userValidation,\n userSchema,\n userSubmitButton,\n checkout,\n ifCheckoutReady,\n validate,\n shippingTypesRestricted,\n paymentMethodsRestricted,\n toggleShippingRadio,\n togglePaymentRadio,\n shippingSelected,\n paymentSelected,\n shippingComponentData,\n shippingStoreData,\n resertStore,\n user,\n dontcall,\n comment,\n isCommentToggled,\n commentMaxLength,\n userCheckout,\n thanks,\n order,\n redirect,\n redirectForm,\n home,\n\n isPromoCodeToggled,\n applyPromoCode,\n promoCode,\n isPromoLoading,\n promoCodeApplied,\n resetPromoCode,\n calculateWithPromoCodeDiscount,\n consent,\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","item","Object","setup","options","computed","attributes","length","itemOptions","filter","option","value","indexOf","id","_createElementVNode","_createElementBlock","_ctx","bundle","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","href","image","src","_hoisted_10","_hoisted_11","_hoisted_12","code","_hoisted_13","_hoisted_14","_hoisted_16","_hoisted_17","quantity","parseInt","_hoisted_18","innerHTML","price","_hoisted_20","priceOld","amount","percent","sum","_hoisted_24","_hoisted_25","_hoisted_26","index","key","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_32","_hoisted_33","_hoisted_34","second","_hoisted_40","_hoisted_41","_hoisted_42","third","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_52","_hoisted_53","_hoisted_54","markRaw","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","HtmlMessage","message","template","window","viewedSwiperOptions","slidesPerView","freeMode","slideClass","mousewheel","forceToAxis","navigation","nextEl","prevEl","observer","observeParents","components","CheckoutItem","isLogin","type","Boolean","isPromoCode","isConsent","toast","useToast","store","useStore","loading","ref","getters","items","total","auth","userCheckout","ifCheckoutReady","redirectForm","thanks","order","consent","redirect","shippingTypes","paymentMethods","userType","userSubmitButton","shippingComponentData","isCommentToggled","isPromoCodeToggled","promoCode","promoCodeApplied","isPromoLoading","app","getCurrentInstance","isUserConsent","dontcall","get","set","commit","comment","watch","substring","field","data","JSON","parse","stringify","user","last_name","email","phone","dispatch","shipping","payment","shippingSelected","find","paymentSelected","shippingPrice","calculatePrice","fee","shippingTypesRestricted","restrictCheck","paymentMethodsRestricted","categoriesInCart","categories","forEach","category_id","push","Math","round","elements","restrictions","keys","ok","r","price_min","price_max","restrictedForce","shipping_type","payment_method","includes","restricted","discount","s","$http","post","location","then","response","userSchema","component","label","__","model","mask","useSchemaForm","userValidation","yup","object","shape","string","trim","required","matches","addEventListener","resertStore","facebook","$ziggy","provider","google","loginCallback","pluralize","checkout","isValid","valid","clientId","document","cookie","split","parts","url","products","brand","category","ecommerce","purchase","actionField","affiliation","revenue","tax","event","eventTimeout","dataLayer","e","console","error","click","validate","isUserValid","toggleShippingRadio","togglePaymentRadio","shippingStoreData","d","commentMaxLength","home","$env","locale","applyPromoCode","promoCodeApply","number","appContext","config","globalProperties","$filters","resetPromoCode","calculateWithPromoCodeDiscount","max","action","method","target","_hoisted_5","_hoisted_6","_hoisted_7","_renderSlot","_hoisted_8","_hoisted_9","_toDisplayString","_createBlock","_createVNode","onClick","open","_hoisted_15","_createCommentVNode","_hoisted_19","_hoisted_21","schemaRowClasses","schema","afterForm","_hoisted_22","_hoisted_23","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","nextDates","icon","_hoisted_48","description","_hoisted_51","price_label","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_62","_hoisted_64","_hoisted_65","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_74","_hoisted_76","_hoisted_77","_hoisted_78","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_88","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_95","_hoisted_96","_hoisted_97","_hoisted_99","onMouseenter","_hoisted_100","_hoisted_101","_hoisted_103","_hoisted_104","_hoisted_105","placeholder","disabled","_hoisted_107","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","submit","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_120","_hoisted_121","_hoisted_124","_hoisted_125","_hoisted_126","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_134","_hoisted_135","_hoisted_136","_hoisted_139"],"mappings":"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"}
|