@perevorot/shop 2.0.27 → 2.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/shop/cart/CartAdd.js +1 -1
- package/dist/components/shop/cart/CartAdd.js.map +1 -1
- package/dist/components/shop/order/Checkout.js +1 -1
- package/dist/components/shop/order/Checkout.js.map +1 -1
- package/dist/components/shop/viewed/Viewer.js +1 -1
- package/dist/components/shop/viewed/Viewer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("vuex"),a=require("vue-toastification"),n={setup:function(){return{translate:window.__}}},o={class:"shop-cart-success-message"};n.render=function(t,a,n,r,l,i){return e.openBlock(),e.createElementBlock("div",o,e.toDisplayString(r.translate("shop.cart.message")),1)};var r=a.useToast(),l={name:"cart-add",props:{id:Number,isChangeQuantity:{type:Boolean,default:!0},isAlreadyInCart:{type:Boolean,default:!0},isSimple:{type:Boolean,default:!1},isPlusMinus:{type:Boolean,default:!1},after:{type:String,default:"modal"}},setup:function(a){var o=t.useStore(),l=e.ref(!1),i=e.ref(1),
|
|
1
|
+
"use strict";var e=require("vue"),t=require("vuex"),a=require("vue-toastification"),n={setup:function(){return{translate:window.__}}},o={class:"shop-cart-success-message"};n.render=function(t,a,n,r,l,i){return e.openBlock(),e.createElementBlock("div",o,e.toDisplayString(r.translate("shop.cart.message")),1)};var r=a.useToast(),l={name:"cart-add",props:{id:Number,isChangeQuantity:{type:Boolean,default:!0},isAlreadyInCart:{type:Boolean,default:!0},isSimple:{type:Boolean,default:!1},isPlusMinus:{type:Boolean,default:!1},after:{type:String,default:"modal"}},setup:function(a){var o=t.useStore(),l=e.ref(!1),i=e.ref(1),c=e.ref(null),s=e.computed((function(){return o.getters["cart/productQuantity"](a.id)})),d=a.isAlreadyInCart,u=a.isChangeQuantity,p=a.isPlusMinus;a.isSimple&&(d=!1,u=!1,p=!1);return{button:c,loading:l,quantity:i,add:function(){l.value=!0;var e=[];c.value.closest(".product-main")&&document.querySelectorAll("#options input[type=checkbox]:checked").forEach((function(t){e.push(parseInt(t.value))}));var t=Math.max(1,i.value),s=c.value.closest("[shop-product]"),d=s.querySelector("[shop-product-name]").textContent,u=s.querySelector("[shop-product-price]").childNodes[0].nodeValue.replace(/ /g,""),p=s.dataset.code;o.dispatch("cart/add",{product:{id:a.id,quantity:t,options:e},finally:function(){(l.value=!1,i.value=1,"message"==a.after)&&r({component:n},{type:"success-cart"});var e={ecommerce:{currencyCode:"UAH",add:{products:[{name:d,id:p,price:u,quantity:t}]}},event:"gtm-ee-event","gtm-ee-event-category":"Ecommerce","gtm-ee-event-action":"Add to Cart","gtm-ee-event-non-interaction":"False"};window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(e))}})},remove:function(){l.value=!0,o.dispatch("cart/remove",{id:a.id,finally:function(){l.value=!1}})},cart:s,increase:function(){i.value++},decrease:function(){i.value>1&&i.value--},isAlreadyInCart:d,isChangeQuantity:u,isPlusMinus:p}}},i={class:"cart-add",ref:"button"},c={class:"columns"},s={key:0,class:"column"},d={class:"cart-change-quantity"},u=["disabled"],p=["disabled"],m=["disabled"],y={class:"column is-narrow"},v=["disabled"],f=e.createElementVNode("svg",{class:"icon cart"},[e.createElementVNode("use",{"xlink:href":"#cart-add"})],-1),h={class:"cart-add-button-label"},g={key:0},b=e.createElementVNode("br",null,null,-1),k=["disabled","textContent"];l.render=function(t,a,n,o,r,l){return e.openBlock(),e.createElementBlock("div",i,[e.createElementVNode("div",c,[t.$env.shop.isCustomQuantity&&o.isChangeQuantity?(e.openBlock(),e.createElementBlock("div",s,[e.createElementVNode("div",d,[o.isPlusMinus?(e.openBlock(),e.createElementBlock("button",{key:0,class:"button is-small decrease",onClick:a[0]||(a[0]=function(){return o.decrease&&o.decrease.apply(o,arguments)}),disabled:o.loading||1==o.quantity},"-",8,u)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("input",{class:"input is-small",type:"number",min:"1","onUpdate:modelValue":a[1]||(a[1]=function(e){return o.quantity=e}),disabled:o.loading},null,8,p),[[e.vModelText,o.quantity]]),o.isPlusMinus?(e.openBlock(),e.createElementBlock("button",{key:1,class:"button is-small increase",onClick:a[2]||(a[2]=function(){return o.increase&&o.increase.apply(o,arguments)}),disabled:o.loading},"+",8,m)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",y,[e.createElementVNode("button",{class:"button is-link is-small",onClick:a[3]||(a[3]=function(){return o.add&&o.add.apply(o,arguments)}),disabled:o.loading},[e.renderSlot(t.$slots,"default",{label:t.__("shop.cart.add")},(function(){return[f,e.createElementVNode("span",h,e.toDisplayString(t.__("shop.cart.add")),1)]}))],8,v)])]),t.$env.shop.isAlreadyInCart&&o.isAlreadyInCart&&o.cart>0?(e.openBlock(),e.createElementBlock("div",g,[e.createTextVNode(e.toDisplayString(t.__("shop.cart.already",{quantity:o.cart}))+" ",1),b,e.createElementVNode("a",{onClick:a[4]||(a[4]=e.withModifiers((function(){return o.remove&&o.remove.apply(o,arguments)}),["prevent"])),disabled:o.loading,textContent:e.toDisplayString(t.__("shop.cart.remove"))},null,8,k)])):e.createCommentVNode("v-if",!0)],512)},module.exports=l;
|
|
2
2
|
//# sourceMappingURL=CartAdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CartAdd.js","sources":["../../../../src/components/shop/cart/SuccessMessage.vue","../../../../src/components/shop/cart/SuccessMessage.vue?vue&type=template&id=75a41ddb&lang.js","../../../../src/components/shop/cart/CartAdd.vue","../../../../src/components/shop/cart/CartAdd.vue?vue&type=template&id=3f7690d4&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button\n class=\"button is-small decrease\"\n @click=\"decrease\"\n :disabled=\"loading || quantity == 1\"\n v-if=\"isPlusMinus\"\n >-</button>\n <input\n class=\"input is-small\"\n type=\"number\"\n min=\"1\"\n v-model=\"quantity\"\n :disabled=\"loading\"\n />\n <button\n class=\"button is-small increase\"\n @click=\"increase\"\n :disabled=\"loading\"\n v-if=\"isPlusMinus\"\n >+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{\n __(\"shop.cart.add\")\n }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true,\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true,\n },\n isSimple: {\n type: Boolean,\n default: false,\n },\n isPlusMinus: {\n type: Boolean,\n default: false,\n },\n after: {\n type: String,\n default: \"modal\",\n },\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](props.id)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll(\n \"#options input[type=checkbox]:checked\"\n );\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '');\n const code = product.dataset.code;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: props.id,\n quantity: q,\n options: options,\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == \"message\") {\n const component = {\n component: SuccessMessage,\n };\n\n toast(component, {\n type: \"success-cart\",\n });\n }\n\n const object = {\n 'event': 'addToCart',\n 'ecommerce': {\n 'currencyCode': 'UAH',\n 'add': {\n 'products': [{\n 'name': name,\n 'id': code,\n 'price': price,\n 'quantity': q\n }]\n }\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: props.id,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus,\n };\n },\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button\n class=\"button is-small decrease\"\n @click=\"decrease\"\n :disabled=\"loading || quantity == 1\"\n v-if=\"isPlusMinus\"\n >-</button>\n <input\n class=\"input is-small\"\n type=\"number\"\n min=\"1\"\n v-model=\"quantity\"\n :disabled=\"loading\"\n />\n <button\n class=\"button is-small increase\"\n @click=\"increase\"\n :disabled=\"loading\"\n v-if=\"isPlusMinus\"\n >+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{\n __(\"shop.cart.add\")\n }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __(\"shop.cart.already\", { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { useToast } from \"vue-toastification\";\nimport SuccessMessage from \"./SuccessMessage.vue\";\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true,\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true,\n },\n isSimple: {\n type: Boolean,\n default: false,\n },\n isPlusMinus: {\n type: Boolean,\n default: false,\n },\n after: {\n type: String,\n default: \"modal\",\n },\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n\n const cart = computed(() =>\n store.getters[\"cart/productQuantity\"](props.id)\n );\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll(\n \"#options input[type=checkbox]:checked\"\n );\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '');\n const code = product.dataset.code;\n\n store.dispatch(\"cart/add\", {\n product: {\n id: props.id,\n quantity: q,\n options: options,\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == \"message\") {\n const component = {\n component: SuccessMessage,\n };\n\n toast(component, {\n type: \"success-cart\",\n });\n }\n\n const object = {\n 'event': 'addToCart',\n 'ecommerce': {\n 'currencyCode': 'UAH',\n 'add': {\n 'products': [{\n 'name': name,\n 'id': code,\n 'price': price,\n 'quantity': q\n }]\n }\n }\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n },\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch(\"cart/remove\", {\n id: props.id,\n finally: () => {\n loading.value = false;\n },\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus,\n };\n },\n};\n</script>"],"names":["setup","translate","window","__","_createElementBlock","_hoisted_1","$setup","toast","useToast","name","props","id","Number","isChangeQuantity","type","Boolean","isAlreadyInCart","isSimple","isPlusMinus","after","String","store","useStore","loading","ref","quantity","button","cart","computed","getters","add","value","options","closest","document","querySelectorAll","forEach","element","push","parseInt","q","Math","max","product","querySelector","textContent","price","childNodes","nodeValue","replace","code","dataset","dispatch","component","SuccessMessage","object","dataLayer","ecommerce","remove","increase","decrease","_createElementVNode","_hoisted_2","_ctx","shop","isCustomQuantity","_hoisted_3","_hoisted_4","onClick","disabled","min","_hoisted_8","_renderSlot","label","_hoisted_10","_hoisted_11","_hoisted_13","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CartAdd.js","sources":["../../../../src/components/shop/cart/SuccessMessage.vue","../../../../src/components/shop/cart/SuccessMessage.vue?vue&type=template&id=75a41ddb&lang.js","../../../../src/components/shop/cart/CartAdd.vue","../../../../src/components/shop/cart/CartAdd.vue?vue&type=template&id=cd5783a4&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"shop-cart-success-message\">\n {{ translate(\"shop.cart.message\") }}\n </div>\n</template>\n<script>\nexport default {\n setup() {\n const translate = window.__;\n\n return {\n translate,\n };\n },\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n\n const cart = computed(() => store.getters['cart/productQuantity'](props.id));\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '');\n const code = product.dataset.code;\n\n store.dispatch('cart/add', {\n product: {\n id: props.id,\n quantity: q,\n options: options\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n\n const object = {\n ecommerce: {\n currencyCode: 'UAH',\n add: {\n products: [\n {\n name: name,\n id: code,\n price: price,\n quantity: q\n }\n ]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Add to Cart',\n 'gtm-ee-event-non-interaction': 'False'\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch('cart/remove', {\n id: props.id,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus\n };\n }\n};\n</script>","<template>\n <div class=\"cart-add\" ref=\"button\">\n <div class=\"columns\">\n <div class=\"column\" v-if=\"$env.shop.isCustomQuantity && isChangeQuantity\">\n <div class=\"cart-change-quantity\">\n <button class=\"button is-small decrease\" @click=\"decrease\" :disabled=\"loading || quantity == 1\" v-if=\"isPlusMinus\">-</button>\n <input class=\"input is-small\" type=\"number\" min=\"1\" v-model=\"quantity\" :disabled=\"loading\" />\n <button class=\"button is-small increase\" @click=\"increase\" :disabled=\"loading\" v-if=\"isPlusMinus\">+</button>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <button class=\"button is-link is-small\" v-on:click=\"add\" :disabled=\"loading\">\n <slot :label=\"__('shop.cart.add')\">\n <svg class=\"icon cart\">\n <use xlink:href=\"#cart-add\" />\n </svg>\n <span class=\"cart-add-button-label\">\n {{ __('shop.cart.add') }}\n </span>\n </slot>\n </button>\n </div>\n </div>\n <div v-if=\"$env.shop.isAlreadyInCart && isAlreadyInCart && cart > 0\">\n {{ __('shop.cart.already', { quantity: cart }) }}\n <br />\n <a v-on:click.prevent=\"remove\" :disabled=\"loading\" v-text=\"__('shop.cart.remove')\"></a>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed } from 'vue';\nimport { useStore } from 'vuex';\nimport { useToast } from 'vue-toastification';\nimport SuccessMessage from './SuccessMessage.vue';\n\nconst toast = useToast();\n\nexport default {\n name: 'cart-add',\n props: {\n id: Number,\n isChangeQuantity: {\n type: Boolean,\n default: true\n },\n isAlreadyInCart: {\n type: Boolean,\n default: true\n },\n isSimple: {\n type: Boolean,\n default: false\n },\n isPlusMinus: {\n type: Boolean,\n default: false\n },\n after: {\n type: String,\n default: 'modal'\n }\n },\n setup(props) {\n const store = useStore();\n const loading = ref(false);\n const quantity = ref(1);\n const button = ref(null);\n\n const cart = computed(() => store.getters['cart/productQuantity'](props.id));\n\n let isAlreadyInCart = props.isAlreadyInCart;\n let isChangeQuantity = props.isChangeQuantity;\n let isPlusMinus = props.isPlusMinus;\n\n if (props.isSimple) {\n isAlreadyInCart = false;\n isChangeQuantity = false;\n isPlusMinus = false;\n }\n\n const add = () => {\n loading.value = true;\n\n let options = [];\n\n if (button.value.closest('.product-main')) {\n const checkedOptions = document.querySelectorAll('#options input[type=checkbox]:checked');\n\n checkedOptions.forEach((element) => {\n options.push(parseInt(element.value));\n });\n }\n\n const q = Math.max(1, quantity.value);\n const product = button.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '');\n const code = product.dataset.code;\n\n store.dispatch('cart/add', {\n product: {\n id: props.id,\n quantity: q,\n options: options\n },\n finally: () => {\n loading.value = false;\n quantity.value = 1;\n\n if (props.after == 'message') {\n const component = {\n component: SuccessMessage\n };\n\n toast(component, {\n type: 'success-cart'\n });\n }\n\n const object = {\n ecommerce: {\n currencyCode: 'UAH',\n add: {\n products: [\n {\n name: name,\n id: code,\n price: price,\n quantity: q\n }\n ]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Add to Cart',\n 'gtm-ee-event-non-interaction': 'False'\n };\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n }\n });\n };\n\n const remove = () => {\n loading.value = true;\n\n store.dispatch('cart/remove', {\n id: props.id,\n finally: () => {\n loading.value = false;\n }\n });\n };\n\n const increase = () => {\n quantity.value++;\n };\n\n const decrease = () => {\n if (quantity.value > 1) {\n quantity.value--;\n }\n };\n\n return {\n button,\n loading,\n quantity,\n add,\n remove,\n cart,\n increase,\n decrease,\n isAlreadyInCart,\n isChangeQuantity,\n isPlusMinus\n };\n }\n};\n</script>"],"names":["setup","translate","window","__","_createElementBlock","_hoisted_1","$setup","toast","useToast","name","props","id","Number","isChangeQuantity","type","Boolean","isAlreadyInCart","isSimple","isPlusMinus","after","String","store","useStore","loading","ref","quantity","button","cart","computed","getters","add","value","options","closest","document","querySelectorAll","forEach","element","push","parseInt","q","Math","max","product","querySelector","textContent","price","childNodes","nodeValue","replace","code","dataset","dispatch","component","SuccessMessage","object","ecommerce","currencyCode","products","event","dataLayer","remove","increase","decrease","_createElementVNode","_hoisted_2","_ctx","shop","isCustomQuantity","_hoisted_3","_hoisted_4","onClick","disabled","min","_hoisted_8","_renderSlot","label","_hoisted_10","_hoisted_11","_hoisted_13","_toDisplayString"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),n=require("vuex"),o=require("formvuelate"),l=require("@formvuelate/plugin-vee-validate"),a=require("@perevorot/shop/dist/forms/FormText"),i=require("yup"),r=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(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var u=c(l),m=c(a),d=s(i),p=e.defineComponent({name:"CheckoutItem",props:{item:Object},setup:function(t){var n=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!==n.value.indexOf(e.id)})):[]}))}}}),v={key:0,class:"column is-12"},f=[e.createElementVNode("div",{class:"bundle-title"},"Вместе дешевле",-1)],h={class:"column name"},k={class:"column is-narrow"},g=["href"],E=["src"],V={key:1},N=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],y={class:"column"},b={class:"columns is-gapless mb-0"},B={class:"column"},C={key:0,class:"code"},w={class:"title"},T=["href"],x={class:"column is-2 has-text-centered is-relative"},_={class:"quantity"},S={key:0,class:"quantity-price"},M=["innerHTML"],L=e.createTextVNode(" / шт"),D={class:"column is-2 has-text-right"},H=["innerHTML"],q=["innerHTML"],O=["innerHTML"],$={key:0,class:"options is-toggled"},F={class:"toggler"},z={class:"wrapper"},R={class:"column"},P={class:"option-title"},j={class:"column is-2 has-text-right"},J=e.createTextVNode("+"),U=["innerHTML"],I={key:0,class:"bundle columns"},A={class:"column is-narrow"},G=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),K=["href"],Q=["src"],W={key:1},X=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Y={class:"column"},Z={key:0,class:"code"},ee={class:"title"},te=["href"],ne={key:1,class:"bundle columns"},oe={class:"column is-narrow"},le=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),ae=["href"],ie=["src"],re={key:1},ce=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],se={class:"column"},ue={key:0,class:"code"},me={class:"title"},de=["href"];p.render=function(t,n,o,l,a,i){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,f)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",h,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",k,[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",V,N))],2)],8,g)]),e.createElementVNode("div",y,[e.createElementVNode("div",b,[e.createElementVNode("div",B,[t.item.attributes.code?(e.openBlock(),e.createElementBlock("div",C,"Код продукта: "+e.toDisplayString(t.item.attributes.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",w,[e.createElementVNode("a",{href:t.item.attributes.href},e.toDisplayString(t.item.name),9,T)])]),e.createElementVNode("div",x,[e.createElementVNode("div",_,"⨉ "+e.toDisplayString(t.item.quantity),1),parseInt(t.item.quantity)>1?(e.openBlock(),e.createElementBlock("div",S,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.item.attributes.price)},null,8,M),L])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",D,[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,H)):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.item.attributes.amount.percent?t.item.attributes.amount.percent+"%":t.$filters.price(t.item.attributes.amount.sum*t.item.quantity))},null,8,q)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{innerHTML:t.$filters.price(t.item.attributes.price*t.item.quantity)},null,8,O)],2)])]),t.itemOptions&&t.itemOptions.length?(e.openBlock(),e.createElementBlock("div",$,[e.createElementVNode("div",F,[e.createElementVNode("span",null,"Дополнительные услуги, "+e.toDisplayString(t.itemOptions.length),1)]),e.createElementVNode("div",z,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.itemOptions,(function(n,o){return e.openBlock(),e.createElementBlock("div",{key:o,class:"columns is-checked"},[e.createElementVNode("div",R,[e.createElementVNode("div",P,e.toDisplayString(n.name),1)]),e.createElementVNode("div",j,[J,e.createElementVNode("span",{innerHTML:t.$filters.price(n.price)},null,8,U)])])})),128))])])):e.createCommentVNode("v-if",!0)])],2),t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",A,[G,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,Q)):(e.openBlock(),e.createElementBlock("svg",W,X))],2)],8,K)]),e.createElementVNode("div",Y,[t.item.attributes.second.code?(e.openBlock(),e.createElementBlock("div",Z,"Код продукта: "+e.toDisplayString(t.item.attributes.second.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",ee,[e.createElementVNode("a",{href:t.item.attributes.second.href},e.toDisplayString(t.item.attributes.second.name),9,te)])])])):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.third?(e.openBlock(),e.createElementBlock("div",ne,[e.createElementVNode("div",oe,[le,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,ie)):(e.openBlock(),e.createElementBlock("svg",re,ce))],2)],8,ae)]),e.createElementVNode("div",se,[t.item.attributes.third.code?(e.openBlock(),e.createElementBlock("div",ue,"Код продукта: "+e.toDisplayString(t.item.attributes.third.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",me,[e.createElementVNode("a",{href:t.item.attributes.third.href},e.toDisplayString(t.item.attributes.third.name),9,de)])])])):e.createCommentVNode("v-if",!0)])],2)},e.markRaw(m.default);var pe=o.SchemaFormFactory([u.default({})]);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:pe},name:"order-checkout",setup:function(){var l=r.useToast(),a=n.useStore(),i=e.ref(!1),c=e.computed((function(){return a.getters["cart/quantity"]})),s=e.computed((function(){return a.getters["cart/items"]})),u=e.computed((function(){return a.getters["cart/total"]})),p=e.computed((function(){return a.getters["auth/is"]})),v=e.computed((function(){return a.getters["checkout/user"]})),f=e.ref(!0),h=e.ref(null),k=e.ref(!1),g=e.ref(null),E=e.ref({}),V=e.ref([]),N=e.ref([]),y=e.ref("new"),b=e.ref(null),B=e.computed((function(){return a.getters["checkout/shippingData"]})),C=e.ref(!1),w=e.computed({get:function(){return a.getters["checkout/dontcall"]},set:function(e){a.commit("checkout/dontcall",e)}}),T=e.computed({get:function(){var e=a.getters["checkout/comment"];return e&&(C.value=!0),e},set:function(e){a.commit("checkout/comment",e)}});e.watch(T,(function(e){e.length>1e3&&(T.value=T.value.substring(0,1e3))}));var x=function(t){return e.computed({get:function(){return v.value[t]},set:function(e){var n=JSON.parse(JSON.stringify(v.value));n[t]=e,a.commit("checkout/user",n)}})},_=e.ref({last_name:x("last_name"),name:x("name"),email:x("email"),phone:x("phone")});a.dispatch("auth/me",{finally:function(){}});var S=e.computed({get:function(){return a.getters["checkout/shipping"]},set:function(e){a.commit("checkout/shipping",e)}}),M=e.computed({get:function(){return a.getters["checkout/payment"]},set:function(e){a.commit("checkout/payment",e)}}),L=e.computed((function(){return S.value?V.value.find((function(e){return e.id==S.value})):{}})),D=e.computed((function(){return M.value?N.value.find((function(e){return e.id==M.value})):{}})),H=e.computed((function(){return z(V.value,S.value)})),q=e.computed((function(){return z(N.value,M.value)})),O=e.computed((function(){return R(V.value)})),$=e.computed((function(){return R(N.value)})),F=e.computed((function(){var e=[];return s.value.forEach((function(t){-1===e.indexOf(t.category_id)&&e.push(t.category_id)})),e})),z=function(e,t){var n=0;if(t){var o=e.find((function(e){return e.id==t}));o&&(n="sum"==o.type?o.amount:Math.round(u.value*o.amount/100))}return n},R=function(e){var t=[];return e.forEach((function(e){if(e.restrictions&&Object.keys(e.restrictions).length){var n=!0,o=e.restrictions;o.price_min&&o.price_max?(n=u.value>=o.price_min&&u.value<=o.price_max,e.restrictedForce=!n):o.price_min?(n=u.value>=o.price_min,e.restrictedForce=!n):o.price_max&&(n=u.value<=o.price_max,e.restrictedForce=!n),n&&S.value&&o.shipping_type&&o.shipping_type.length&&(n=-1!==o.shipping_type.indexOf(S.value)),n&&M.value&&o.payment_method&&o.payment_method.length&&(n=-1!==o.payment_method.indexOf(M.value)),n&&o.categories&&o.categories.length&&(n=!F.value.filter((function(e){return!o.categories.includes(e)})).length,e.restrictedForce=!n),e.restricted=!n}else e.restricted=!1;e.restrictedForce||t.push(e)})),t},P=e.computed((function(){var e=0;return s.value.forEach((function(t){var n=0;t.attributes.priceOld&&(n=t.attributes.priceOld-t.attributes.price),e+=n*t.quantity})),e}));$http.post(window.location.href).then((function(e){V.value=e.data.shipping,N.value=e.data.payment})),e.watch(y,(function(e){"login"==e&&a.commit("auth/modal","login")}));var j=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"}});o.useSchemaForm(_);var J=d.object().shape({last_name:d.string().trim().required(__("auth.validation.required")),name:d.string().trim().required(__("auth.validation.required")),phone:d.string().required(__("auth.validation.phone")).matches(/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")),email:d.string().trim().email(__("auth.validation.email")).required(__("auth.validation.required"))});window.addEventListener("beforeunload",(function(){a.commit("auth/modal",null)}));var U=function(){a.commit("checkout/reset")};return{auth:p,userType:y,facebook:function(){window.location.href=$ziggy("auth.login.social",{provider:"facebook"})},google:function(){window.location.href=$ziggy("auth.login.social",{provider:"google"})},loginCallback:function(){y.value="new"},quantity:c,items:s,loading:i,pluralize:t.pluralize,discount:P,total:u,shipping:S,shippingPrice:H,payment:M,fee:q,userValidation:J,userSchema:j,userSubmitButton:b,checkout:function(){J.isValid(_.value).then((function(e){if(e)if(S.value)if(B.value[L.value.code]&&B.value[L.value.code].isValid)if(M.value){var t=JSON.parse(JSON.stringify(B.value[L.value.code]));delete t.isValid;var n={checkout:!0,user:{last_name:_.value.last_name,name:_.value.name,phone:_.value.phone,email:_.value.email},shipping:{id:S.value,data:t},payment:{id:M.value},comment:T.value,dontcall:w.value};i.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 n={ecommerce:{purchase:{actionField:{id:e.data.order.id,affiliation:"mrfix.ua",revenue:u.value+q.value+H.value,tax:"0",shipping:H.value},products:[t]}}};window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(n))}k.value=!0,g.value=e.data.order,U()})).catch((function(e){l("Ошибка сохранения заказа",{type:"error"}),console.error(e)})).finally((function(){i.value=!1}))}else l("Выберите вид оплаты",{type:"error"});else l("Заполните все поля для доставки: «"+L.value.name+"»",{type:"error"});else l("Выберите способ доставки",{type:"error"});else y.value="new",b.value.click(),l("Заполните данные получателя заказа",{type:"error"})}))},ifCheckoutReady:f,validate:function(){J.isValid(_.value).then((function(e){f.value=e&&M.value&&S.value&&(!L.value.component||L.value.component&&B.value[L.value.code]&&B.value[L.value.code].isValid)}))},shippingTypesRestricted:O,paymentMethodsRestricted:$,toggleShippingRadio:function(e){S.value===e&&(S.value=null)},togglePaymentRadio:function(e){M.value===e&&(M.value=null)},shippingSelected:L,paymentSelected:D,shippingComponentData:B,shippingStoreData:function(e,t,n){var o=JSON.parse(JSON.stringify(B.value));t.isValid=n,o[e]=t,a.commit("checkout/shippingData",o)},resertStore:U,user:_,dontcall:w,comment:T,isCommentToggled:C,commentMaxLength:1e3,userCheckout:v,thanks:k,order:g,redirect:E,redirectForm:h,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"}}}}),fe={class:"cart checkout"},he=["action"],ke=["name","value"],ge={key:1,class:"items-wrapper"},Ee=e.createElementVNode("div",{class:"checkout-title"},"Оформление заказа",-1),Ve={class:"columns"},Ne={class:"column"},ye={class:"checkout-block items"},be={class:"title-row"},Be={class:"items-title"},Ce=e.createTextVNode(" Ваш заказ "),we=["textContent"],Te=["innerHTML"],xe=["onClick"],_e=[e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-edit"})],-1),e.createElementVNode("span",null,"Редактировать заказ",-1)],Se={class:"checkout-block"},Me={class:"wrapper"},Le=e.createElementVNode("div",{class:"items-title"},"Контактные даные получателя заказа",-1),De={key:0,class:"user-tabs"},He=e.createTextVNode(" Я новый клиент "),qe=e.createTextVNode(" Я постоянный клиент "),Oe={class:"columns"},$e={class:"column user-form"},Fe={type:"submit",ref:"userSubmitButton",class:"is-hidden"},ze={class:"column user-login user-form"},Re={class:"column"},Pe={key:0,class:"social-auth"},je={class:"socials"},Je=e.createElementVNode("div",{class:"description"},"Или авторизируйтесь через социальные сети:",-1),Ue={class:"buttons"},Ie=[e.createElementVNode("svg",{class:"icon fb-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-facebook-icon"})],-1),e.createElementVNode("span",null,"Facebook",-1)],Ae=[e.createElementVNode("svg",{class:"icon google-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-google-icon"})],-1),e.createElementVNode("span",null,"Google",-1)],Ge={class:"wrapper"},Ke={class:"rows"},Qe={class:"item"},We={class:"row"},Xe=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Доставка")],-1),Ye={class:"row"},Ze={class:"info"},et=["value","onClick"],tt=["src"],nt={key:1,class:"icon"},ot=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],lt={key:0,class:"description"},at={class:"value"},it={key:0,class:"green"},rt=["innerHTML"],ct={class:"wrapper"},st={class:"rows"},ut={class:"item"},mt={class:"row"},dt=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Оплата")],-1),pt={class:"row no-icon"},vt={class:"info"},ft=["value","onClick"],ht={key:0,class:"description"},kt={key:0,class:"value"},gt=["innerHTML"],Et={class:"column is-4"},Vt={class:"checkout-block summary"},Nt=e.createElementVNode("div",{class:"items-title"},"Итого",-1),yt={class:"rows"},bt={class:"row"},Bt={class:"info"},Ct=["textContent"],wt=e.createTextVNode(" на сумму "),Tt={class:"value"},xt=["innerHTML"],_t={key:0,class:"row"},St=e.createElementVNode("div",{class:"info"},"Скидка",-1),Mt={class:"value"},Lt=["innerHTML"],Dt={key:1,class:"row"},Ht=e.createElementVNode("div",{class:"info"},"Сервисный сбор",-1),qt={class:"value"},Ot=["innerHTML"],$t={key:2,class:"row"},Ft=e.createElementVNode("div",{class:"info"},"Стоимость доставки",-1),zt={class:"value"},Rt=["innerHTML"],Pt={key:1,class:"green"},jt={class:"row"},Jt=e.createElementVNode("div",{class:"info"},"К оплате",-1),Ut={class:"value orange"},It=["innerHTML"],At={class:"checkbox-wrapper"},Gt=e.createTextVNode(" Мне можно не перезванивать для оформления заказа "),Kt=[e.createElementVNode("span",null,"Добавить комментарий к заказу",-1),e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1)],Qt={class:"user-form"},Wt={key:0,class:"chars-count"},Xt={key:2,class:"checkout-block thanks"},Yt={class:"title"},Zt=e.createTextVNode(" Заказ "),en=e.createTextVNode(" успешно создан! "),tn={class:"columns"},nn={key:0,class:"column is-6"},on=e.createElementVNode("div",{class:"subtitle"},"Перейдите к оплате для завершения покупки",-1),ln={key:1,class:"column is-6"},an={class:"column is-6"},rn={key:0,class:"info-wrapper"},cn=e.createElementVNode("div",{class:"title"},"Доставка",-1),sn={class:"columns"},un=["innerHTML"],mn=["innerHTML"],dn={key:1,class:"info-wrapper"},pn=e.createElementVNode("div",{class:"title"},"Оплата",-1),vn={class:"columns"},fn=["innerHTML"],hn=["innerHTML"],kn={key:3,class:"checkout-block empty"},gn=e.createElementVNode("div",{class:"title"},"В корзине пока что нет товаров",-1),En={class:"message"},Vn=e.createTextVNode(" Посмотрите предложения на "),Nn=["href"],yn=e.createTextVNode(", "),bn=e.createElementVNode("br",null,null,-1),Bn=e.createTextVNode("воспользуйтесь каталогом или поиском "),Cn=["href"];ve.render=function(t,n,o,l,a,i){var r=e.resolveComponent("checkout-item"),c=e.resolveComponent("cart-trigger"),s=e.resolveComponent("SchemaForm"),u=e.resolveComponent("login");return e.openBlock(),e.createElementBlock("div",fe,[t.redirect.url?(e.openBlock(),e.createElementBlock("form",{key:0,ref:"redirectForm",action:t.redirect.url,class:"is-hidden",method:"post"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.redirect.data,(function(t,n,o){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:n,value:t,key:o},null,8,ke)})),128))],8,he)):e.createCommentVNode("v-if",!0),t.items.length&&!t.thanks?(e.openBlock(),e.createElementBlock("div",ge,[Ee,e.createElementVNode("div",Ve,[e.createElementVNode("div",Ne,[e.createElementVNode("div",ye,[e.createElementVNode("div",be,[e.createElementVNode("div",Be,[Ce,e.createElementVNode("span",{class:"ml-3",textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,we),e.createElementVNode("span",{innerHTML:"на сумму "+t.$filters.price(t.total)},null,8,Te)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(r,{key:t.id,item:t},null,8,["item"])})),128)),e.createVNode(c,{class:"trigger"},{default:e.withCtx((function(t){return[e.createElementVNode("button",{class:"button",onClick:t.open},_e,8,xe)]})),_:1})]),e.createElementVNode("button",{onClick:n[0]||(n[0]=function(){return t.resertStore&&t.resertStore.apply(t,arguments)}),style:{position:"fixed",bottom:"1px",right:"1px","z-index":"1000"}},"reset"),e.createElementVNode("div",Se,[e.createElementVNode("div",Me,[Le,t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",De,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[1]||(n[1]=function(e){return t.userType=e}),value:"new"},null,512),[[e.vModelRadio,t.userType]]),He]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[2]||(n[2]=function(e){return t.userType=e}),value:"login"},null,512),[[e.vModelRadio,t.userType]]),qe])])),e.createElementVNode("div",Oe,[e.withDirectives(e.createElementVNode("div",$e,[e.createVNode(s,{schemaRowClasses:"field",schema:t.userSchema,"validation-schema":t.userValidation},{afterForm:e.withCtx((function(){return[e.createElementVNode("button",Fe,null,512)]})),_:1},8,["schema","validation-schema"])],512),[[e.vShow,"new"==t.userType]]),e.withDirectives(e.createElementVNode("div",ze,[e.createVNode(u,{"login-callback":t.loginCallback},null,8,["login-callback"])],512),[[e.vShow,"login"==t.userType]]),e.createElementVNode("div",Re,[t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("div",je,[Je,e.createElementVNode("div",Ue,[e.createElementVNode("a",{class:"button",onClick:n[3]||(n[3]=function(){return t.facebook&&t.facebook.apply(t,arguments)})},Ie),e.createElementVNode("a",{class:"button",onClick:n[4]||(n[4]=function(){return t.google&&t.google.apply(t,arguments)})},Ae)])])]))])])]),e.createElementVNode("div",Ge,[e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,[e.createElementVNode("div",We,[Xe,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.shippingTypesRestricted,(function(o){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":o.restricted}]),key:o.id},[e.createElementVNode("div",Ye,[e.createElementVNode("div",Ze,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[6]||(n[6]=function(e){return t.shipping=e}),value:o.id,onClick:function(e){return t.toggleShippingRadio(o.id)}},null,8,et),[[e.vModelRadio,t.shipping]]),o.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:o.icon},null,8,tt)):(e.openBlock(),e.createElementBlock("svg",nt,ot)),e.createElementVNode("span",null,e.toDisplayString(o.name),1)]),o.description?(e.openBlock(),e.createElementBlock("div",lt,e.toDisplayString(o.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",at,[!o.amount&&o.price_label?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(o.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==o.type?o.amount+"%":t.$filters.price(o.amount)},null,8,rt))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:o},null,8,["commit","data","item"])),[[e.vShow,o.component&&o.id==t.shipping]])],2)})),128))])]),e.createElementVNode("div",ct,[e.createElementVNode("div",st,[e.createElementVNode("div",ut,[e.createElementVNode("div",mt,[dt,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.paymentMethodsRestricted,(function(o){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":o.restricted}]),key:o.id},[e.createElementVNode("div",pt,[e.createElementVNode("div",vt,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[8]||(n[8]=function(e){return t.payment=e}),value:o.id,onClick:function(e){return t.togglePaymentRadio(o.id)}},null,8,ft),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(o.name),1)]),o.description?(e.openBlock(),e.createElementBlock("div",ht,e.toDisplayString(o.description),1)):e.createCommentVNode("v-if",!0)]),o.amount?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("span",{innerHTML:"percent"==o.type?o.amount+"%":t.$filters.price(o.amount)},null,8,gt)])):e.createCommentVNode("v-if",!0)])],2)})),128))])])])]),e.createElementVNode("div",Et,[e.createElementVNode("div",Vt,[Nt,e.createElementVNode("div",yt,[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),wt]),e.createElementVNode("div",Tt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,xt)])]),t.discount?(e.openBlock(),e.createElementBlock("div",_t,[St,e.createElementVNode("div",Mt,[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",Dt,[Ht,e.createElementVNode("div",qt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.fee)},null,8,Ot)])])):e.createCommentVNode("v-if",!0),t.shipping?(e.openBlock(),e.createElementBlock("div",$t,[Ft,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",Pt,e.toDisplayString(t.shippingSelected.price_label),1)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",jt,[Jt,e.createElementVNode("div",Ut,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total+t.fee+t.shippingPrice)},null,8,It)])])]),e.createElementVNode("div",At,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"checkbox","onUpdate:modelValue":n[9]||(n[9]=function(e){return t.dontcall=e})},null,512),[[e.vModelCheckbox,t.dontcall]]),Gt])]),e.createElementVNode("button",{class:e.normalizeClass(["button submit",{red:!t.ifCheckoutReady,"is-loading":t.loading}]),onClick:n[10]||(n[10]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),onMouseenter:n[11]||(n[11]=function(){return t.validate&&t.validate.apply(t,arguments)})},"Подтвердить заказ",34),e.createElementVNode("div",{class:e.normalizeClass(["comment-wrapper",{"is-open":t.isCommentToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:n[12]||(n[12]=function(e){return t.isCommentToggled=!t.isCommentToggled})},Kt),e.createElementVNode("div",Qt,[e.withDirectives(e.createElementVNode("textarea",{class:"textarea","onUpdate:modelValue":n[13]||(n[13]=function(e){return t.comment=e})},null,512),[[e.vModelText,t.comment]]),t.comment.length?(e.openBlock(),e.createElementBlock("div",Wt,e.toDisplayString(t.commentMaxLength-t.comment.length),1)):e.createCommentVNode("v-if",!0)])],2)])])])])):t.thanks&&t.order?(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("div",Yt,[Zt,e.createElementVNode("span",null,"№"+e.toDisplayString(t.order.id),1),en]),e.createElementVNode("div",tn,[t.redirect.url?(e.openBlock(),e.createElementBlock("div",nn,[on,e.createElementVNode("button",{class:"button is-payment",onClick:n[14]||(n[14]=function(e){return t.redirectForm.submit()})},"Перейти к оплате")])):(e.openBlock(),e.createElementBlock("div",ln,[e.createElementVNode("button",{class:"button is-orange",onClick:n[15]||(n[15]=function(){return t.home&&t.home.apply(t,arguments)})},"Продолжить покупки")])),e.createElementVNode("div",an,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",rn,[cn,e.createElementVNode("div",sn,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.shipping[0]},null,8,un)):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,mn)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",dn,[pn,e.createElementVNode("div",vn,[t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.payment[0]},null,8,fn)):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,hn)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0)])])])):(e.openBlock(),e.createElementBlock("div",kn,[gn,e.createElementVNode("div",En,[Vn,e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},"главной странице",8,Nn),yn,bn,Bn]),e.createElementVNode("a",{class:"button continue",href:t.$env.locale.url?t.$env.locale.url:"/"},"Продолжить покупки",8,Cn)]))])},module.exports=ve;
|
|
1
|
+
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),n=require("vuex"),o=require("formvuelate"),l=require("@formvuelate/plugin-vee-validate"),a=require("@perevorot/shop/dist/forms/FormText"),i=require("yup"),r=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(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var m=c(l),u=c(a),d=s(i),p=e.defineComponent({name:"CheckoutItem",props:{item:Object},setup:function(t){var n=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!==n.value.indexOf(e.id)})):[]}))}}}),v={key:0,class:"column is-12"},f=[e.createElementVNode("div",{class:"bundle-title"},"Вместе дешевле",-1)],h={class:"column name"},k={class:"column is-narrow"},g=["href"],E=["src"],V={key:1},N=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],y={class:"column"},b={class:"columns is-gapless mb-0"},B={class:"column"},C={key:0,class:"code"},w={class:"title"},T=["href"],x={class:"column is-2 has-text-centered is-relative"},_={class:"quantity"},S={key:0,class:"quantity-price"},M=["innerHTML"],L=e.createTextVNode(" / шт"),D={class:"column is-2 has-text-right"},H=["innerHTML"],q=["innerHTML"],O=["innerHTML"],$={key:0,class:"options is-toggled"},F={class:"toggler"},z={class:"wrapper"},R={class:"column"},P={class:"option-title"},j={class:"column is-2 has-text-right"},J=e.createTextVNode("+"),U=["innerHTML"],I={key:0,class:"bundle columns"},A={class:"column is-narrow"},G=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),K=["href"],Q=["src"],W={key:1},X=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Y={class:"column"},Z={key:0,class:"code"},ee={class:"title"},te=["href"],ne={key:1,class:"bundle columns"},oe={class:"column is-narrow"},le=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),ae=["href"],ie=["src"],re={key:1},ce=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],se={class:"column"},me={key:0,class:"code"},ue={class:"title"},de=["href"];p.render=function(t,n,o,l,a,i){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,f)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",h,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",k,[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",V,N))],2)],8,g)]),e.createElementVNode("div",y,[e.createElementVNode("div",b,[e.createElementVNode("div",B,[t.item.attributes.code?(e.openBlock(),e.createElementBlock("div",C,"Код продукта: "+e.toDisplayString(t.item.attributes.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",w,[e.createElementVNode("a",{href:t.item.attributes.href},e.toDisplayString(t.item.name),9,T)])]),e.createElementVNode("div",x,[e.createElementVNode("div",_,"⨉ "+e.toDisplayString(t.item.quantity),1),parseInt(t.item.quantity)>1?(e.openBlock(),e.createElementBlock("div",S,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.item.attributes.price)},null,8,M),L])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",D,[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,H)):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.item.attributes.amount.percent?t.item.attributes.amount.percent+"%":t.$filters.price(t.item.attributes.amount.sum*t.item.quantity))},null,8,q)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{innerHTML:t.$filters.price(t.item.attributes.price*t.item.quantity)},null,8,O)],2)])]),t.itemOptions&&t.itemOptions.length?(e.openBlock(),e.createElementBlock("div",$,[e.createElementVNode("div",F,[e.createElementVNode("span",null,"Дополнительные услуги, "+e.toDisplayString(t.itemOptions.length),1)]),e.createElementVNode("div",z,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.itemOptions,(function(n,o){return e.openBlock(),e.createElementBlock("div",{key:o,class:"columns is-checked"},[e.createElementVNode("div",R,[e.createElementVNode("div",P,e.toDisplayString(n.name),1)]),e.createElementVNode("div",j,[J,e.createElementVNode("span",{innerHTML:t.$filters.price(n.price)},null,8,U)])])})),128))])])):e.createCommentVNode("v-if",!0)])],2),t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",I,[e.createElementVNode("div",A,[G,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,Q)):(e.openBlock(),e.createElementBlock("svg",W,X))],2)],8,K)]),e.createElementVNode("div",Y,[t.item.attributes.second.code?(e.openBlock(),e.createElementBlock("div",Z,"Код продукта: "+e.toDisplayString(t.item.attributes.second.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",ee,[e.createElementVNode("a",{href:t.item.attributes.second.href},e.toDisplayString(t.item.attributes.second.name),9,te)])])])):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.third?(e.openBlock(),e.createElementBlock("div",ne,[e.createElementVNode("div",oe,[le,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,ie)):(e.openBlock(),e.createElementBlock("svg",re,ce))],2)],8,ae)]),e.createElementVNode("div",se,[t.item.attributes.third.code?(e.openBlock(),e.createElementBlock("div",me,"Код продукта: "+e.toDisplayString(t.item.attributes.third.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",ue,[e.createElementVNode("a",{href:t.item.attributes.third.href},e.toDisplayString(t.item.attributes.third.name),9,de)])])])):e.createCommentVNode("v-if",!0)])],2)},e.markRaw(u.default);var pe=o.SchemaFormFactory([m.default({})]);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:pe},name:"order-checkout",setup:function(){var l=r.useToast(),a=n.useStore(),i=e.ref(!1),c=e.computed((function(){return a.getters["cart/quantity"]})),s=e.computed((function(){return a.getters["cart/items"]})),m=e.computed((function(){return a.getters["cart/total"]})),p=e.computed((function(){return a.getters["auth/is"]})),v=e.computed((function(){return a.getters["checkout/user"]})),f=e.ref(!0),h=e.ref(null),k=e.ref(!1),g=e.ref(null),E=e.ref({}),V=e.ref([]),N=e.ref([]),y=e.ref("new"),b=e.ref(null),B=e.computed((function(){return a.getters["checkout/shippingData"]})),C=e.ref(!1),w=e.computed({get:function(){return a.getters["checkout/dontcall"]},set:function(e){a.commit("checkout/dontcall",e)}}),T=e.computed({get:function(){var e=a.getters["checkout/comment"];return e&&(C.value=!0),e},set:function(e){a.commit("checkout/comment",e)}});e.watch(T,(function(e){e.length>1e3&&(T.value=T.value.substring(0,1e3))}));var x=function(t){return e.computed({get:function(){return v.value[t]},set:function(e){var n=JSON.parse(JSON.stringify(v.value));n[t]=e,a.commit("checkout/user",n)}})},_=e.ref({last_name:x("last_name"),name:x("name"),email:x("email"),phone:x("phone")});a.dispatch("auth/me",{finally:function(){}});var S=e.computed({get:function(){return a.getters["checkout/shipping"]},set:function(e){a.commit("checkout/shipping",e)}}),M=e.computed({get:function(){return a.getters["checkout/payment"]},set:function(e){a.commit("checkout/payment",e)}}),L=e.computed((function(){return S.value?V.value.find((function(e){return e.id==S.value})):{}})),D=e.computed((function(){return M.value?N.value.find((function(e){return e.id==M.value})):{}})),H=e.computed((function(){return z(V.value,S.value)})),q=e.computed((function(){return z(N.value,M.value)})),O=e.computed((function(){return R(V.value)})),$=e.computed((function(){return R(N.value)})),F=e.computed((function(){var e=[];return s.value.forEach((function(t){-1===e.indexOf(t.category_id)&&e.push(t.category_id)})),e})),z=function(e,t){var n=0;if(t){var o=e.find((function(e){return e.id==t}));o&&(n="sum"==o.type?o.amount:Math.round(m.value*o.amount/100))}return n},R=function(e){var t=[];return e.forEach((function(e){if(e.restrictions&&Object.keys(e.restrictions).length){var n=!0,o=e.restrictions;o.price_min&&o.price_max?(n=m.value>=o.price_min&&m.value<=o.price_max,e.restrictedForce=!n):o.price_min?(n=m.value>=o.price_min,e.restrictedForce=!n):o.price_max&&(n=m.value<=o.price_max,e.restrictedForce=!n),n&&S.value&&o.shipping_type&&o.shipping_type.length&&(n=-1!==o.shipping_type.indexOf(S.value)),n&&M.value&&o.payment_method&&o.payment_method.length&&(n=-1!==o.payment_method.indexOf(M.value)),n&&o.categories&&o.categories.length&&(n=!F.value.filter((function(e){return!o.categories.includes(e)})).length,e.restrictedForce=!n),e.restricted=!n}else e.restricted=!1;e.restrictedForce||t.push(e)})),t},P=e.computed((function(){var e=0;return s.value.forEach((function(t){var n=0;t.attributes.priceOld&&(n=t.attributes.priceOld-t.attributes.price),e+=n*t.quantity})),e}));$http.post(window.location.href).then((function(e){V.value=e.data.shipping,N.value=e.data.payment})),e.watch(y,(function(e){"login"==e&&a.commit("auth/modal","login")}));var j=e.ref({last_name:{component:u.default,label:__("auth.registration.form.last_name"),model:"last_name"},name:{component:u.default,label:__("auth.registration.form.name"),model:"first_name"},phone:{component:u.default,label:__("auth.registration.form.phone"),model:"phone",mask:"(###) ###-##-##",type:"phone"},email:{component:u.default,label:__("auth.login.form.email"),model:"email"}});o.useSchemaForm(_);var J=d.object().shape({last_name:d.string().trim().required(__("auth.validation.required")),name:d.string().trim().required(__("auth.validation.required")),phone:d.string().required(__("auth.validation.phone")).matches(/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone")),email:d.string().trim().email(__("auth.validation.email")).required(__("auth.validation.required"))});window.addEventListener("beforeunload",(function(){a.commit("auth/modal",null)}));var U=function(){a.commit("checkout/reset")};return{auth:p,userType:y,facebook:function(){window.location.href=$ziggy("auth.login.social",{provider:"facebook"})},google:function(){window.location.href=$ziggy("auth.login.social",{provider:"google"})},loginCallback:function(){y.value="new"},quantity:c,items:s,loading:i,pluralize:t.pluralize,discount:P,total:m,shipping:S,shippingPrice:H,payment:M,fee:q,userValidation:J,userSchema:j,userSubmitButton:b,checkout:function(){J.isValid(_.value).then((function(e){if(e)if(S.value)if(B.value[L.value.code]&&B.value[L.value.code].isValid)if(M.value){var t=JSON.parse(JSON.stringify(B.value[L.value.code]));delete t.isValid;var n={checkout:!0,user:{last_name:_.value.last_name,name:_.value.name,phone:_.value.phone,email:_.value.email},shipping:{id:S.value,data:t},payment:{id:M.value},comment:T.value,dontcall:w.value};i.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 n={ecommerce:{purchase:{actionField:{id:e.data.order.id,affiliation:"mrfix.ua",revenue:m.value+q.value+H.value,tax:"0",shipping:H.value},products:[t]}},event:"gtm-ee-event","gtm-ee-event-category":"Ecommerce","gtm-ee-event-action":"Checkout","gtm-ee-event-non-interaction":"False"};window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(n))}k.value=!0,g.value=e.data.order,U()})).catch((function(e){l("Ошибка сохранения заказа",{type:"error"}),console.error(e)})).finally((function(){i.value=!1}))}else l("Выберите вид оплаты",{type:"error"});else l("Заполните все поля для доставки: «"+L.value.name+"»",{type:"error"});else l("Выберите способ доставки",{type:"error"});else y.value="new",b.value.click(),l("Заполните данные получателя заказа",{type:"error"})}))},ifCheckoutReady:f,validate:function(){J.isValid(_.value).then((function(e){f.value=e&&M.value&&S.value&&(!L.value.component||L.value.component&&B.value[L.value.code]&&B.value[L.value.code].isValid)}))},shippingTypesRestricted:O,paymentMethodsRestricted:$,toggleShippingRadio:function(e){S.value===e&&(S.value=null)},togglePaymentRadio:function(e){M.value===e&&(M.value=null)},shippingSelected:L,paymentSelected:D,shippingComponentData:B,shippingStoreData:function(e,t,n){var o=JSON.parse(JSON.stringify(B.value));t.isValid=n,o[e]=t,a.commit("checkout/shippingData",o)},resertStore:U,user:_,dontcall:w,comment:T,isCommentToggled:C,commentMaxLength:1e3,userCheckout:v,thanks:k,order:g,redirect:E,redirectForm:h,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"}}}}),fe={class:"cart checkout"},he=["action"],ke=["name","value"],ge={key:1,class:"items-wrapper"},Ee=e.createElementVNode("div",{class:"checkout-title"},"Оформление заказа",-1),Ve={class:"columns"},Ne={class:"column"},ye={class:"checkout-block items"},be={class:"title-row"},Be={class:"items-title"},Ce=e.createTextVNode(" Ваш заказ "),we=["textContent"],Te=["innerHTML"],xe=["onClick"],_e=[e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-edit"})],-1),e.createElementVNode("span",null,"Редактировать заказ",-1)],Se={class:"checkout-block"},Me={class:"wrapper"},Le=e.createElementVNode("div",{class:"items-title"},"Контактные даные получателя заказа",-1),De={key:0,class:"user-tabs"},He=e.createTextVNode(" Я новый клиент "),qe=e.createTextVNode(" Я постоянный клиент "),Oe={class:"columns"},$e={class:"column user-form"},Fe={type:"submit",ref:"userSubmitButton",class:"is-hidden"},ze={class:"column user-login user-form"},Re={class:"column"},Pe={key:0,class:"social-auth"},je={class:"socials"},Je=e.createElementVNode("div",{class:"description"},"Или авторизируйтесь через социальные сети:",-1),Ue={class:"buttons"},Ie=[e.createElementVNode("svg",{class:"icon fb-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-facebook-icon"})],-1),e.createElementVNode("span",null,"Facebook",-1)],Ae=[e.createElementVNode("svg",{class:"icon google-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-google-icon"})],-1),e.createElementVNode("span",null,"Google",-1)],Ge={class:"wrapper"},Ke={class:"rows"},Qe={class:"item"},We={class:"row"},Xe=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Доставка")],-1),Ye={class:"row"},Ze={class:"info"},et=["value","onClick"],tt=["src"],nt={key:1,class:"icon"},ot=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],lt={key:0,class:"description"},at={class:"value"},it={key:0,class:"green"},rt=["innerHTML"],ct={class:"wrapper"},st={class:"rows"},mt={class:"item"},ut={class:"row"},dt=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Оплата")],-1),pt={class:"row no-icon"},vt={class:"info"},ft=["value","onClick"],ht={key:0,class:"description"},kt={key:0,class:"value"},gt=["innerHTML"],Et={class:"column is-4"},Vt={class:"checkout-block summary"},Nt=e.createElementVNode("div",{class:"items-title"},"Итого",-1),yt={class:"rows"},bt={class:"row"},Bt={class:"info"},Ct=["textContent"],wt=e.createTextVNode(" на сумму"),Tt={class:"value"},xt=["innerHTML"],_t={key:0,class:"row"},St=e.createElementVNode("div",{class:"info"},"Скидка",-1),Mt={class:"value"},Lt=["innerHTML"],Dt={key:1,class:"row"},Ht=e.createElementVNode("div",{class:"info"},"Сервисный сбор",-1),qt={class:"value"},Ot=["innerHTML"],$t={key:2,class:"row"},Ft=e.createElementVNode("div",{class:"info"},"Стоимость доставки",-1),zt={class:"value"},Rt=["innerHTML"],Pt={key:1,class:"green"},jt={class:"row"},Jt=e.createElementVNode("div",{class:"info"},"К оплате",-1),Ut={class:"value orange"},It=["innerHTML"],At={class:"checkbox-wrapper"},Gt=e.createTextVNode(" Мне можно не перезванивать для оформления заказа "),Kt=[e.createElementVNode("span",null,"Добавить комментарий к заказу",-1),e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1)],Qt={class:"user-form"},Wt={key:0,class:"chars-count"},Xt={key:2,class:"checkout-block thanks"},Yt={class:"title"},Zt=e.createTextVNode(" Заказ "),en=e.createTextVNode(" успешно создан! "),tn={class:"columns"},nn={key:0,class:"column is-6"},on=e.createElementVNode("div",{class:"subtitle"},"Перейдите к оплате для завершения покупки",-1),ln={key:1,class:"column is-6"},an={class:"column is-6"},rn={key:0,class:"info-wrapper"},cn=e.createElementVNode("div",{class:"title"},"Доставка",-1),sn={class:"columns"},mn=["innerHTML"],un=["innerHTML"],dn={key:1,class:"info-wrapper"},pn=e.createElementVNode("div",{class:"title"},"Оплата",-1),vn={class:"columns"},fn=["innerHTML"],hn=["innerHTML"],kn={key:3,class:"checkout-block empty"},gn=e.createElementVNode("div",{class:"title"},"В корзине пока что нет товаров",-1),En={class:"message"},Vn=e.createTextVNode(" Посмотрите предложения на "),Nn=["href"],yn=e.createTextVNode(", "),bn=e.createElementVNode("br",null,null,-1),Bn=e.createTextVNode("воспользуйтесь каталогом или поиском "),Cn=["href"];ve.render=function(t,n,o,l,a,i){var r=e.resolveComponent("checkout-item"),c=e.resolveComponent("cart-trigger"),s=e.resolveComponent("SchemaForm"),m=e.resolveComponent("login");return e.openBlock(),e.createElementBlock("div",fe,[t.redirect.url?(e.openBlock(),e.createElementBlock("form",{key:0,ref:"redirectForm",action:t.redirect.url,class:"is-hidden",method:"post"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.redirect.data,(function(t,n,o){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:n,value:t,key:o},null,8,ke)})),128))],8,he)):e.createCommentVNode("v-if",!0),t.items.length&&!t.thanks?(e.openBlock(),e.createElementBlock("div",ge,[Ee,e.createElementVNode("div",Ve,[e.createElementVNode("div",Ne,[e.createElementVNode("div",ye,[e.createElementVNode("div",be,[e.createElementVNode("div",Be,[Ce,e.createElementVNode("span",{class:"ml-3",textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,we),e.createElementVNode("span",{innerHTML:"на сумму "+t.$filters.price(t.total)},null,8,Te)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(function(t){return e.openBlock(),e.createBlock(r,{key:t.id,item:t},null,8,["item"])})),128)),e.createVNode(c,{class:"trigger"},{default:e.withCtx((function(t){return[e.createElementVNode("button",{class:"button",onClick:t.open},_e,8,xe)]})),_:1})]),e.createElementVNode("button",{onClick:n[0]||(n[0]=function(){return t.resertStore&&t.resertStore.apply(t,arguments)}),style:{position:"fixed",bottom:"1px",right:"1px","z-index":"1000"}},"reset"),e.createElementVNode("div",Se,[e.createElementVNode("div",Me,[Le,t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",De,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[1]||(n[1]=function(e){return t.userType=e}),value:"new"},null,512),[[e.vModelRadio,t.userType]]),He]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[2]||(n[2]=function(e){return t.userType=e}),value:"login"},null,512),[[e.vModelRadio,t.userType]]),qe])])),e.createElementVNode("div",Oe,[e.withDirectives(e.createElementVNode("div",$e,[e.createVNode(s,{schemaRowClasses:"field",schema:t.userSchema,"validation-schema":t.userValidation},{afterForm:e.withCtx((function(){return[e.createElementVNode("button",Fe,null,512)]})),_:1},8,["schema","validation-schema"])],512),[[e.vShow,"new"==t.userType]]),e.withDirectives(e.createElementVNode("div",ze,[e.createVNode(m,{"login-callback":t.loginCallback},null,8,["login-callback"])],512),[[e.vShow,"login"==t.userType]]),e.createElementVNode("div",Re,[t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",Pe,[e.createElementVNode("div",je,[Je,e.createElementVNode("div",Ue,[e.createElementVNode("a",{class:"button",onClick:n[3]||(n[3]=function(){return t.facebook&&t.facebook.apply(t,arguments)})},Ie),e.createElementVNode("a",{class:"button",onClick:n[4]||(n[4]=function(){return t.google&&t.google.apply(t,arguments)})},Ae)])])]))])])]),e.createElementVNode("div",Ge,[e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,[e.createElementVNode("div",We,[Xe,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.shippingTypesRestricted,(function(o){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":o.restricted}]),key:o.id},[e.createElementVNode("div",Ye,[e.createElementVNode("div",Ze,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[6]||(n[6]=function(e){return t.shipping=e}),value:o.id,onClick:function(e){return t.toggleShippingRadio(o.id)}},null,8,et),[[e.vModelRadio,t.shipping]]),o.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:o.icon},null,8,tt)):(e.openBlock(),e.createElementBlock("svg",nt,ot)),e.createElementVNode("span",null,e.toDisplayString(o.name),1)]),o.description?(e.openBlock(),e.createElementBlock("div",lt,e.toDisplayString(o.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",at,[!o.amount&&o.price_label?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(o.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==o.type?o.amount+"%":t.$filters.price(o.amount)},null,8,rt))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:o},null,8,["commit","data","item"])),[[e.vShow,o.component&&o.id==t.shipping]])],2)})),128))])]),e.createElementVNode("div",ct,[e.createElementVNode("div",st,[e.createElementVNode("div",mt,[e.createElementVNode("div",ut,[dt,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.paymentMethodsRestricted,(function(o){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":o.restricted}]),key:o.id},[e.createElementVNode("div",pt,[e.createElementVNode("div",vt,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"radio",class:"radio","onUpdate:modelValue":n[8]||(n[8]=function(e){return t.payment=e}),value:o.id,onClick:function(e){return t.togglePaymentRadio(o.id)}},null,8,ft),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(o.name),1)]),o.description?(e.openBlock(),e.createElementBlock("div",ht,e.toDisplayString(o.description),1)):e.createCommentVNode("v-if",!0)]),o.amount?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("span",{innerHTML:"percent"==o.type?o.amount+"%":t.$filters.price(o.amount)},null,8,gt)])):e.createCommentVNode("v-if",!0)])],2)})),128))])])])]),e.createElementVNode("div",Et,[e.createElementVNode("div",Vt,[Nt,e.createElementVNode("div",yt,[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),wt]),e.createElementVNode("div",Tt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,xt)])]),t.discount?(e.openBlock(),e.createElementBlock("div",_t,[St,e.createElementVNode("div",Mt,[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",Dt,[Ht,e.createElementVNode("div",qt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.fee)},null,8,Ot)])])):e.createCommentVNode("v-if",!0),t.shipping?(e.openBlock(),e.createElementBlock("div",$t,[Ft,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",Pt,e.toDisplayString(t.shippingSelected.price_label),1)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",jt,[Jt,e.createElementVNode("div",Ut,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total+t.fee+t.shippingPrice)},null,8,It)])])]),e.createElementVNode("div",At,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"checkbox","onUpdate:modelValue":n[9]||(n[9]=function(e){return t.dontcall=e})},null,512),[[e.vModelCheckbox,t.dontcall]]),Gt])]),e.createElementVNode("button",{class:e.normalizeClass(["button submit",{red:!t.ifCheckoutReady,"is-loading":t.loading}]),onClick:n[10]||(n[10]=function(){return t.checkout&&t.checkout.apply(t,arguments)}),onMouseenter:n[11]||(n[11]=function(){return t.validate&&t.validate.apply(t,arguments)})},"Подтвердить заказ",34),e.createElementVNode("div",{class:e.normalizeClass(["comment-wrapper",{"is-open":t.isCommentToggled}])},[e.createElementVNode("div",{class:"toggler",onClick:n[12]||(n[12]=function(e){return t.isCommentToggled=!t.isCommentToggled})},Kt),e.createElementVNode("div",Qt,[e.withDirectives(e.createElementVNode("textarea",{class:"textarea","onUpdate:modelValue":n[13]||(n[13]=function(e){return t.comment=e})},null,512),[[e.vModelText,t.comment]]),t.comment.length?(e.openBlock(),e.createElementBlock("div",Wt,e.toDisplayString(t.commentMaxLength-t.comment.length),1)):e.createCommentVNode("v-if",!0)])],2)])])])])):t.thanks&&t.order?(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("div",Yt,[Zt,e.createElementVNode("span",null,"№"+e.toDisplayString(t.order.id),1),en]),e.createElementVNode("div",tn,[t.redirect.url?(e.openBlock(),e.createElementBlock("div",nn,[on,e.createElementVNode("button",{class:"button is-payment",onClick:n[14]||(n[14]=function(e){return t.redirectForm.submit()})},"Перейти к оплате")])):(e.openBlock(),e.createElementBlock("div",ln,[e.createElementVNode("button",{class:"button is-orange",onClick:n[15]||(n[15]=function(){return t.home&&t.home.apply(t,arguments)})},"Продолжить покупки")])),e.createElementVNode("div",an,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",rn,[cn,e.createElementVNode("div",sn,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.shipping[0]},null,8,mn)):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,un)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",dn,[pn,e.createElementVNode("div",vn,[t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.payment[0]},null,8,fn)):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,hn)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0)])])])):(e.openBlock(),e.createElementBlock("div",kn,[gn,e.createElementVNode("div",En,[Vn,e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},"главной странице",8,Nn),yn,bn,Bn]),e.createElementVNode("a",{class:"button continue",href:t.$env.locale.url?t.$env.locale.url:"/"},"Продолжить покупки",8,Cn)]))])},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=497060f6&lang.js","../../../../src/components/shop/order/Checkout.vue","../../../../src/components/shop/order/Checkout.vue?vue&type=template&id=c94c5a88&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\">Вместе дешевле</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\">Код продукта: {{ 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> / шт</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=\"'Выгода ' + (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>Дополнительные услуги, {{ 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\">Код продукта: {{ 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\">Код продукта: {{ 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\">Вместе дешевле</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\">Код продукта: {{ 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> / шт</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=\"'Выгода ' + (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>Дополнительные услуги, {{ 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\">Код продукта: {{ 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\">Код продукта: {{ 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\n ref=\"redirectForm\"\n v-if=\"redirect.url\"\n :action=\"redirect.url\"\n class=\"is-hidden\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n v-for=\"(value, name, index) in redirect.data\"\n v-bind:key=\"index\"\n />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"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 Ваш заказ\n <span\n class=\"ml-3\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n <span v-html=\"'на сумму ' + $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>Редактировать заказ</span>\n </button>\n </template>\n </cart-trigger>\n </div>\n <button\n @click=\"resertStore\"\n style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\"\n >reset</button>\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">Контактные даные получателя заказа</div>\n <div class=\"user-tabs\" v-if=\"!auth\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"userType\"\n value=\"new\"\n /> Я новый клиент\n </label>\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"userType\"\n value=\"login\"\n /> Я постоянный клиент\n </label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"userSchema\"\n :validation-schema=\"userValidation\"\n >\n <template #afterForm>\n <button\n type=\"submit\"\n ref=\"userSubmitButton\"\n class=\"is-hidden\"\n ></button>\n </template>\n </SchemaForm>\n </div>\n <div\n class=\"column user-login user-form\"\n v-show=\"userType == 'login'\"\n >\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div\n class=\"description\"\n >Или авторизируйтесь через социальные сети:</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\">Доставка</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a\n @click=\"shipping = null\"\n class=\"reset\"\n v-bind:class=\"{ 'is-active': shipping }\"\n >Очистить</a>\n </div>\n </div>\n </div>\n <div\n class=\"item\"\n v-for=\"item in shippingTypesRestricted\"\n v-bind:key=\"item.id\"\n v-bind:class=\"{ 'is-disabled': item.restricted }\"\n >\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"shipping\"\n :value=\"item.id\"\n @click=\"toggleShippingRadio(item.id)\"\n />\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\n class=\"description\"\n v-if=\"item.description\"\n >{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span\n class=\"green\"\n v-if=\"!item.amount && item.price_label\"\n >{{ item.price_label }}</span>\n <span\n v-else\n v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"\n ></span>\n </div>\n </div>\n <component\n :is=\"item.component\"\n v-show=\"item.component && item.id == shipping\"\n :commit=\"shippingStoreData\"\n :data=\"shippingComponentData\"\n :item=\"item\"\n ></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\">Оплата</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a\n @click=\"payment = null\"\n class=\"reset\"\n v-bind:class=\"{ 'is-active': payment }\"\n >Очистить</a>\n </div>\n </div>\n </div>\n <div\n class=\"item\"\n v-for=\"item in paymentMethodsRestricted\"\n v-bind:key=\"item.id\"\n v-bind:class=\"{ 'is-disabled': item.restricted }\"\n >\n <div class=\"row no-icon\">\n <div class=\"info\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"payment\"\n :value=\"item.id\"\n @click=\"togglePaymentRadio(item.id)\"\n />\n <span>{{ item.name }}</span>\n </label>\n <div\n class=\"description\"\n v-if=\"item.description\"\n >{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span\n v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"\n ></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\">Итого</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\">\n <span\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span> на сумму\n </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\">Скидка</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\">Сервисный сбор</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\">Стоимость доставки</div>\n <div class=\"value\">\n <span\n v-html=\"$filters.price(shippingPrice)\"\n v-if=\"shippingPrice > 0\"\n ></span>\n <span\n class=\"green\"\n v-else-if=\"shippingSelected && shippingSelected.price_label\"\n >{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">К оплате</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(total + fee + shippingPrice)\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label>\n <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" /> Мне можно не перезванивать для оформления заказа\n </label>\n </div>\n <button\n class=\"button submit\"\n @click=\"checkout\"\n @mouseenter=\"validate\"\n v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\"\n >Подтвердить заказ</button>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>Добавить комментарий к заказу</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\n class=\"chars-count\"\n v-if=\"comment.length\"\n >{{ 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 Заказ\n <span>№{{ order.id }}</span> успешно создан!\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">Перейдите к оплате для завершения покупки</div>\n <button\n class=\"button is-payment\"\n @click=\"redirectForm.submit()\"\n >Перейти к оплате</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">Продолжить покупки</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">Доставка</div>\n <div class=\"columns\">\n <div\n class=\"column is-6\"\n v-if=\"order.shipping[0]\"\n v-html=\"order.shipping[0]\"\n ></div>\n <div\n class=\"column is-6\"\n v-if=\"order.shipping[1]\"\n v-html=\"order.shipping[1]\"\n ></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">Оплата</div>\n <div class=\"columns\">\n <div\n class=\"column is-6\"\n v-if=\"order.payment[0]\"\n v-html=\"order.payment[0]\"\n ></div>\n <div\n class=\"column is-6\"\n v-if=\"order.payment[1]\"\n v-html=\"order.payment[1]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n :href=\"$env.locale.url ? $env.locale.url : '/'\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <a\n class=\"button continue\"\n :href=\"$env.locale.url ? $env.locale.url : '/'\"\n >Продолжить покупки</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch } 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\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 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 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 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 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('Заполните данные получателя заказа', {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast('Выберите способ доставки', {\n type: 'error'\n });\n } else if (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid) {\n toast('Заполните все поля для доставки: «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast('Выберите вид оплаты', {\n type: 'error'\n });\n } else {\n let data = JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code]));\n delete data.isValid;\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 };\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 };\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('Ошибка сохранения заказа', {\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 }\n});\n</script>","<template>\n <div class=\"cart checkout\">\n <form\n ref=\"redirectForm\"\n v-if=\"redirect.url\"\n :action=\"redirect.url\"\n class=\"is-hidden\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n v-for=\"(value, name, index) in redirect.data\"\n v-bind:key=\"index\"\n />\n </form>\n\n <div class=\"items-wrapper\" v-if=\"items.length && !thanks\">\n <div class=\"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 Ваш заказ\n <span\n class=\"ml-3\"\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span>\n <span v-html=\"'на сумму ' + $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>Редактировать заказ</span>\n </button>\n </template>\n </cart-trigger>\n </div>\n <button\n @click=\"resertStore\"\n style=\"position: fixed; bottom: 1px; right: 1px; z-index: 1000\"\n >reset</button>\n <div class=\"checkout-block\">\n <div class=\"wrapper\">\n <div class=\"items-title\">Контактные даные получателя заказа</div>\n <div class=\"user-tabs\" v-if=\"!auth\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"userType\"\n value=\"new\"\n /> Я новый клиент\n </label>\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"userType\"\n value=\"login\"\n /> Я постоянный клиент\n </label>\n </div>\n <div class=\"columns\">\n <div class=\"column user-form\" v-show=\"userType == 'new'\">\n <SchemaForm\n schemaRowClasses=\"field\"\n :schema=\"userSchema\"\n :validation-schema=\"userValidation\"\n >\n <template #afterForm>\n <button\n type=\"submit\"\n ref=\"userSubmitButton\"\n class=\"is-hidden\"\n ></button>\n </template>\n </SchemaForm>\n </div>\n <div\n class=\"column user-login user-form\"\n v-show=\"userType == 'login'\"\n >\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div\n class=\"description\"\n >Или авторизируйтесь через социальные сети:</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\">Доставка</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a\n @click=\"shipping = null\"\n class=\"reset\"\n v-bind:class=\"{ 'is-active': shipping }\"\n >Очистить</a>\n </div>\n </div>\n </div>\n <div\n class=\"item\"\n v-for=\"item in shippingTypesRestricted\"\n v-bind:key=\"item.id\"\n v-bind:class=\"{ 'is-disabled': item.restricted }\"\n >\n <div class=\"row\">\n <div class=\"info\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"shipping\"\n :value=\"item.id\"\n @click=\"toggleShippingRadio(item.id)\"\n />\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\n class=\"description\"\n v-if=\"item.description\"\n >{{ item.description }}</div>\n </div>\n <div class=\"value\">\n <span\n class=\"green\"\n v-if=\"!item.amount && item.price_label\"\n >{{ item.price_label }}</span>\n <span\n v-else\n v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"\n ></span>\n </div>\n </div>\n <component\n :is=\"item.component\"\n v-show=\"item.component && item.id == shipping\"\n :commit=\"shippingStoreData\"\n :data=\"shippingComponentData\"\n :item=\"item\"\n ></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\">Оплата</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a\n @click=\"payment = null\"\n class=\"reset\"\n v-bind:class=\"{ 'is-active': payment }\"\n >Очистить</a>\n </div>\n </div>\n </div>\n <div\n class=\"item\"\n v-for=\"item in paymentMethodsRestricted\"\n v-bind:key=\"item.id\"\n v-bind:class=\"{ 'is-disabled': item.restricted }\"\n >\n <div class=\"row no-icon\">\n <div class=\"info\">\n <label>\n <input\n type=\"radio\"\n class=\"radio\"\n v-model=\"payment\"\n :value=\"item.id\"\n @click=\"togglePaymentRadio(item.id)\"\n />\n <span>{{ item.name }}</span>\n </label>\n <div\n class=\"description\"\n v-if=\"item.description\"\n >{{ item.description }}</div>\n </div>\n <div class=\"value\" v-if=\"item.amount\">\n <span\n v-html=\"item.type == 'percent' ? item.amount + '%' : $filters.price(item.amount)\"\n ></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\">Итого</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\">\n <span\n v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"\n ></span> на сумму\n </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\">Скидка</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\">Сервисный сбор</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\">Стоимость доставки</div>\n <div class=\"value\">\n <span\n v-html=\"$filters.price(shippingPrice)\"\n v-if=\"shippingPrice > 0\"\n ></span>\n <span\n class=\"green\"\n v-else-if=\"shippingSelected && shippingSelected.price_label\"\n >{{ shippingSelected.price_label }}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"info\">К оплате</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(total + fee + shippingPrice)\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label>\n <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" /> Мне можно не перезванивать для оформления заказа\n </label>\n </div>\n <button\n class=\"button submit\"\n @click=\"checkout\"\n @mouseenter=\"validate\"\n v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\"\n >Подтвердить заказ</button>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>Добавить комментарий к заказу</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\n class=\"chars-count\"\n v-if=\"comment.length\"\n >{{ 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 Заказ\n <span>№{{ order.id }}</span> успешно создан!\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">Перейдите к оплате для завершения покупки</div>\n <button\n class=\"button is-payment\"\n @click=\"redirectForm.submit()\"\n >Перейти к оплате</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">Продолжить покупки</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">Доставка</div>\n <div class=\"columns\">\n <div\n class=\"column is-6\"\n v-if=\"order.shipping[0]\"\n v-html=\"order.shipping[0]\"\n ></div>\n <div\n class=\"column is-6\"\n v-if=\"order.shipping[1]\"\n v-html=\"order.shipping[1]\"\n ></div>\n </div>\n </div>\n <div class=\"info-wrapper\" v-if=\"order.payment[0]\">\n <div class=\"title\">Оплата</div>\n <div class=\"columns\">\n <div\n class=\"column is-6\"\n v-if=\"order.payment[0]\"\n v-html=\"order.payment[0]\"\n ></div>\n <div\n class=\"column is-6\"\n v-if=\"order.payment[1]\"\n v-html=\"order.payment[1]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a\n :href=\"$env.locale.url ? $env.locale.url : '/'\"\n >главной странице</a>,\n <br />воспользуйтесь каталогом или поиском\n </div>\n <a\n class=\"button continue\"\n :href=\"$env.locale.url ? $env.locale.url : '/'\"\n >Продолжить покупки</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch } 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\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 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 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 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 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('Заполните данные получателя заказа', {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast('Выберите способ доставки', {\n type: 'error'\n });\n } else if (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid) {\n toast('Заполните все поля для доставки: «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast('Выберите вид оплаты', {\n type: 'error'\n });\n } else {\n let data = JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code]));\n delete data.isValid;\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 };\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 };\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('Ошибка сохранения заказа', {\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 }\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_4","_hoisted_5","href","image","src","_hoisted_11","_hoisted_12","_hoisted_13","code","_hoisted_14","_hoisted_15","_hoisted_17","_hoisted_18","quantity","parseInt","_hoisted_19","innerHTML","price","_hoisted_22","priceOld","amount","percent","sum","_hoisted_26","_hoisted_27","_hoisted_28","index","key","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_34","_hoisted_35","_hoisted_36","second","_hoisted_42","_hoisted_43","_hoisted_44","third","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_54","_hoisted_55","_hoisted_56","markRaw","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","window","viewedSwiperOptions","slidesPerView","freeMode","slideClass","mousewheel","forceToAxis","navigation","nextEl","prevEl","observer","observeParents","components","CheckoutItem","toast","useToast","store","useStore","loading","ref","getters","items","total","auth","userCheckout","ifCheckoutReady","redirectForm","thanks","order","redirect","shippingTypes","paymentMethods","userType","userSubmitButton","shippingComponentData","isCommentToggled","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","type","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","url","products","brand","category","dataLayer","ecommerce","e","console","error","click","validate","isUserValid","toggleShippingRadio","togglePaymentRadio","shippingStoreData","d","commentMaxLength","home","$env","locale","action","method","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_toDisplayString","_createBlock","_createVNode","onClick","open","style","_hoisted_20","_hoisted_21","_hoisted_24","_hoisted_25","schemaRowClasses","schema","afterForm","_hoisted_32","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_45","icon","_hoisted_49","description","_hoisted_52","_hoisted_53","price_label","_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_76","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_95","onMouseenter","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_106","_hoisted_107","_hoisted_108","submit","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_127"],"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=497060f6&lang.js","../../../../src/components/shop/order/Checkout.vue","../../../../src/components/shop/order/Checkout.vue?vue&type=template&id=f8a79d38&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\">Вместе дешевле</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\">Код продукта: {{ 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> / шт</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=\"'Выгода ' + (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>Дополнительные услуги, {{ 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\">Код продукта: {{ 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\">Код продукта: {{ 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\">Вместе дешевле</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\">Код продукта: {{ 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> / шт</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=\"'Выгода ' + (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>Дополнительные услуги, {{ 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\">Код продукта: {{ 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\">Код продукта: {{ 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\">\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\">Оформление заказа</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 Ваш заказ\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n <span v-html=\"'на сумму ' + $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>Редактировать заказ</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\">Контактные даные получателя заказа</div>\n <div class=\"user-tabs\" v-if=\"!auth\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" /> Я новый клиент </label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" /> Я постоянный клиент </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'\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">Или авторизируйтесь через социальные сети:</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\">Доставка</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">Очистить</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\">Оплата</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">Очистить</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\">Итого</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> на сумму</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\">Скидка</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\">Сервисный сбор</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\">Стоимость доставки</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\">\n <div class=\"info\">К оплате</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(total + fee + shippingPrice)\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" /> Мне можно не перезванивать для оформления заказа </label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">Подтвердить заказ</button>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>Добавить комментарий к заказу</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 Заказ\n <span>№{{ order.id }}</span> успешно создан!\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">Перейдите к оплате для завершения покупки</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">Перейти к оплате</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">Продолжить покупки</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">Доставка</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\">Оплата</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>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</a>, <br />воспользуйтесь каталогом или поиском\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">Продолжить покупки</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch } 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\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 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 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 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 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('Заполните данные получателя заказа', {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast('Выберите способ доставки', {\n type: 'error'\n });\n } else if (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid) {\n toast('Заполните все поля для доставки: «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast('Выберите вид оплаты', {\n type: 'error'\n });\n } else {\n let data = JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code]));\n delete data.isValid;\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 };\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': 'Checkout',\n 'gtm-ee-event-non-interaction': 'False'\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('Ошибка сохранения заказа', {\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 }\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\">\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\">Оформление заказа</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 Ваш заказ\n <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span>\n <span v-html=\"'на сумму ' + $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>Редактировать заказ</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\">Контактные даные получателя заказа</div>\n <div class=\"user-tabs\" v-if=\"!auth\">\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"new\" /> Я новый клиент </label>\n <label> <input type=\"radio\" class=\"radio\" v-model=\"userType\" value=\"login\" /> Я постоянный клиент </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'\">\n <login :login-callback=\"loginCallback\"></login>\n </div>\n <div class=\"column\">\n <div class=\"social-auth\" v-if=\"!auth\">\n <div class=\"socials\">\n <div class=\"description\">Или авторизируйтесь через социальные сети:</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\">Доставка</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"shipping = null\" class=\"reset\" v-bind:class=\"{ 'is-active': shipping }\">Очистить</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\">Оплата</div>\n </div>\n <div class=\"value\" v-if=\"1 != 1\">\n <a @click=\"payment = null\" class=\"reset\" v-bind:class=\"{ 'is-active': payment }\">Очистить</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\">Итого</div>\n <div class=\"rows\">\n <div class=\"row\">\n <div class=\"info\"><span v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> на сумму</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\">Скидка</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\">Сервисный сбор</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\">Стоимость доставки</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\">\n <div class=\"info\">К оплате</div>\n <div class=\"value orange\">\n <span v-html=\"$filters.price(total + fee + shippingPrice)\"></span>\n </div>\n </div>\n </div>\n <div class=\"checkbox-wrapper\">\n <label> <input type=\"checkbox\" class=\"checkbox\" v-model=\"dontcall\" /> Мне можно не перезванивать для оформления заказа </label>\n </div>\n <button class=\"button submit\" @click=\"checkout\" @mouseenter=\"validate\" v-bind:class=\"{ red: !ifCheckoutReady, 'is-loading': loading }\">Подтвердить заказ</button>\n <div class=\"comment-wrapper\" v-bind:class=\"{ 'is-open': isCommentToggled }\">\n <div class=\"toggler\" @click=\"isCommentToggled = !isCommentToggled\">\n <span>Добавить комментарий к заказу</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 Заказ\n <span>№{{ order.id }}</span> успешно создан!\n </div>\n <div class=\"columns\">\n <div class=\"column is-6\" v-if=\"redirect.url\">\n <div class=\"subtitle\">Перейдите к оплате для завершения покупки</div>\n <button class=\"button is-payment\" @click=\"redirectForm.submit()\">Перейти к оплате</button>\n </div>\n <div class=\"column is-6\" v-else>\n <button class=\"button is-orange\" @click=\"home\">Продолжить покупки</button>\n </div>\n <div class=\"column is-6\">\n <div class=\"info-wrapper\" v-if=\"order.shipping[0]\">\n <div class=\"title\">Доставка</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\">Оплата</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>\n </div>\n </div>\n <div v-else class=\"checkout-block empty\">\n <div class=\"title\">В корзине пока что нет товаров</div>\n <div class=\"message\">\n Посмотрите предложения на\n <a :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</a>, <br />воспользуйтесь каталогом или поиском\n </div>\n <a class=\"button continue\" :href=\"$env.locale.url ? $env.locale.url : '/'\">Продолжить покупки</a>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, markRaw, defineComponent, watch } 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\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 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 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 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 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('Заполните данные получателя заказа', {\n type: 'error'\n });\n } else if (!shipping.value) {\n toast('Выберите способ доставки', {\n type: 'error'\n });\n } else if (!shippingComponentData.value[shippingSelected.value.code] || !shippingComponentData.value[shippingSelected.value.code].isValid) {\n toast('Заполните все поля для доставки: «' + shippingSelected.value.name + '»', {\n type: 'error'\n });\n } else if (!payment.value) {\n toast('Выберите вид оплаты', {\n type: 'error'\n });\n } else {\n let data = JSON.parse(JSON.stringify(shippingComponentData.value[shippingSelected.value.code]));\n delete data.isValid;\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 };\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': 'Checkout',\n 'gtm-ee-event-non-interaction': 'False'\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('Ошибка сохранения заказа', {\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 }\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_4","_hoisted_5","href","image","src","_hoisted_11","_hoisted_12","_hoisted_13","code","_hoisted_14","_hoisted_15","_hoisted_17","_hoisted_18","quantity","parseInt","_hoisted_19","innerHTML","price","_hoisted_22","priceOld","amount","percent","sum","_hoisted_26","_hoisted_27","_hoisted_28","index","key","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_34","_hoisted_35","_hoisted_36","second","_hoisted_42","_hoisted_43","_hoisted_44","third","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_54","_hoisted_55","_hoisted_56","markRaw","FormText","SchemaForm","SchemaFormFactory","VeeValidatePlugin","window","viewedSwiperOptions","slidesPerView","freeMode","slideClass","mousewheel","forceToAxis","navigation","nextEl","prevEl","observer","observeParents","components","CheckoutItem","toast","useToast","store","useStore","loading","ref","getters","items","total","auth","userCheckout","ifCheckoutReady","redirectForm","thanks","order","redirect","shippingTypes","paymentMethods","userType","userSubmitButton","shippingComponentData","isCommentToggled","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","type","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","url","products","brand","category","ecommerce","purchase","actionField","affiliation","revenue","tax","event","dataLayer","e","console","error","click","validate","isUserValid","toggleShippingRadio","togglePaymentRadio","shippingStoreData","d","commentMaxLength","home","$env","locale","action","method","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_toDisplayString","_createBlock","_createVNode","onClick","open","style","_hoisted_20","_hoisted_21","_hoisted_24","_hoisted_25","schemaRowClasses","schema","afterForm","_hoisted_32","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_45","icon","_hoisted_49","description","_hoisted_52","_hoisted_53","price_label","_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_76","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_86","_hoisted_87","_hoisted_88","_hoisted_90","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_95","onMouseenter","_hoisted_100","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_106","_hoisted_107","_hoisted_108","submit","_hoisted_109","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_116","_hoisted_117","_hoisted_118","_hoisted_121","_hoisted_122","_hoisted_123","_hoisted_127"],"mappings":"yoBA0F6BA,kBAAgB,CACzCC,KAAM,eACNC,MAAO,CACHC,KAAMC,QAEVC,eAAMH,OACII,EAAUC,YAAS,kBAAML,EAAMC,KAAKK,WAAWF,SAAWJ,EAAMC,KAAKK,WAAWF,QAAQG,OAASP,EAAMC,KAAKK,WAAWF,QAAU,YAGhI,CACHI,YAHgBH,YAAS,kBAAML,EAAMC,KAAKG,SAAWJ,EAAMC,KAAKG,QAAQG,OAASP,EAAMC,KAAKG,QAAQK,QAAO,SAAAC,UAA+C,IAArCN,EAAQO,MAAMC,QAAQF,EAAOG,OAAa,yBC/FxJ,mBACPC,kCAAW,gBAAe,+BAEnB,wBAEQ,sDAIaA,qBAA0B,oBAAV,4BAI7B,mBACI,oCACI,yBACI,iBACA,6BAIJ,sDACI,2BACA,wEAEJ,6FAQJ,+BACI,oBAGA,oBAEQ,mBACI,yBAEJ,kDAA6B,oCAMjD,2BACI,sBACPA,kCAAW,gBAAcA,qBAAiC,oBAAjB,wDAIrBA,qBAA0B,oBAAV,4BAI7B,yBACI,kBACA,qCAKR,4BACI,uBACPA,kCAAW,gBAAcA,qBAAiC,oBAAjB,4DAIrBA,qBAA0B,oBAAV,6BAI7B,0BACI,kBACA,yEA9E3BC,oDAAW,mDAAmEC,OAAKV,WAAWW,YAC1DD,OAAKV,WAAWW,sBAAhDF,2BAAAG,sCAGAJ,2BAAAK,GACIL,oDAAW,kBAAkCE,OAAKV,WAAWW,YACzDH,2BAAAM,GACIN,0BAAIO,KAAML,OAAKV,WAAWe,OACtBP,uDAAc,+BAA+CE,OAAKV,WAAWgB,WACjCN,OAAKV,WAAWgB,qBAAxDP,kCAAMQ,IAAKP,OAAKV,WAAWgB,iCAC3BP,6CAIZD,2BAAAU,GACIV,2BAAAW,GACIX,2BAAAY,GAC4BV,OAAKV,WAAWqB,oBAAxCZ,2BAAAa,EAA8C,mCAAiBZ,OAAKV,WAAWqB,0CAC/Eb,2BAAAe,GACIf,0BAAIO,KAAML,OAAKV,WAAWe,wBAASL,OAAKjB,eAGhDe,2BAAAgB,GACIhB,2BAAAiB,EAAsB,uBAAKf,OAAKgB,aACEC,SAASjB,OAAKgB,2BAAhDjB,2BAAAmB,GAA+DpB,6BAAMqB,UAAQnB,WAASoB,MAAMpB,OAAKV,WAAW8B,yDAEhHtB,2BAAAuB,GACIvB,oDAAW,wBAAwCE,OAAKV,WAAWW,YACpDD,OAAKV,WAAWgC,wBAA3BvB,wCAA2C,YAAYoB,UAAQnB,WAASoB,MAAMpB,OAAKV,WAAWgC,SAAWtB,OAAKgB,sDAC7EhB,OAAKV,WAAWW,QAAUD,OAAKV,WAAWiC,sBAA3ExB,wCAAW,gBAAwEoB,qBAAqBnB,OAAKV,WAAWiC,OAAOC,QAAUxB,OAAKV,WAAWiC,OAAOC,YAAgBxB,WAASoB,MAAMpB,OAAKV,WAAWiC,OAAOE,IAAMzB,OAAKgB,uDACjOlB,4BAAKqB,UAAQnB,WAASoB,MAAMpB,OAAKV,WAAW8B,MAAQpB,OAAKgB,6BAI/BhB,eAAeA,cAAYT,sBAAjEQ,2BAAA2B,GACI5B,2BAAA6B,GACI7B,iCAAM,4CAA0BE,cAAYT,aAEhDO,2BAAA8B,oBACI7B,kDAA+BC,wBAAlBN,EAAQmC,wBAArB9B,4BAAmD+B,IAAKD,QAAa,uBACjE/B,2BAAAiC,GACIjC,2BAAAkC,oBAA6BtC,EAAOX,WAExCe,2BAAAmC,KAAyCnC,qBAAmD,QAA7CqB,UAAQnB,WAASoB,MAAM1B,EAAO0B,0EAM/DpB,OAAKV,WAAWW,sBAAlDF,2BAAAmC,GACIpC,2BAAAqC,GACIC,EACAtC,0BAAIO,KAAML,OAAKV,WAAW+C,OAAOhC,OAC7BP,uDAAc,+BAA+CE,OAAKV,WAAW+C,OAAO/B,WACjCN,OAAKV,WAAW+C,OAAO/B,qBAAtEP,kCAAMQ,IAAKP,OAAKV,WAAW+C,OAAO/B,iCAClCP,6CAIZD,2BAAAwC,GAC4BtC,OAAKV,WAAW+C,OAAO1B,oBAA/CZ,2BAAAwC,EAAqD,mCAAiBvC,OAAKV,WAAW+C,OAAO1B,0CAC7Fb,2BAAA0C,IACI1C,0BAAIO,KAAML,OAAKV,WAAW+C,OAAOhC,wBAASL,OAAKV,WAAW+C,OAAOtD,mDAI3CiB,OAAKV,WAAWW,QAAUD,OAAKV,WAAWmD,qBAA5E1C,2BAAA2C,IACI5C,2BAAA6C,IACIC,GACA9C,0BAAIO,KAAML,OAAKV,WAAWmD,MAAMpC,OAC5BP,uDAAc,+BAA+CE,OAAKV,WAAWmD,MAAMnC,WACjCN,OAAKV,WAAWmD,MAAMnC,qBAApEP,kCAAMQ,IAAKP,OAAKV,WAAWmD,MAAMnC,kCACjCP,gDAIZD,2BAAA+C,IAC4B7C,OAAKV,WAAWmD,MAAM9B,oBAA9CZ,2BAAA+C,GAAoD,mCAAiB9C,OAAKV,WAAWmD,MAAM9B,0CAC3Fb,2BAAAiD,IACIjD,0BAAIO,KAAML,OAAKV,WAAWmD,MAAMpC,wBAASL,OAAKV,WAAWmD,MAAM1D,0DCqKvFiE,UAAQC,WAER,IAAMC,GAAaC,oBAAkB,CAACC,UAAkB,MAExDC,OAAOC,oBAAsB,CACzBC,cAAe,OACfC,UAAU,EACVC,WAAY,UACZC,WAAY,CACRC,aAAa,GAEjBC,WAAY,CACRC,OAAQ,QACRC,OAAQ,SAEZC,UAAU,EACVC,gBAAgB,GAGpB,OAA6BlF,kBAAgB,CACzCmF,WAAY,CACRC,aAAAA,EACAhB,WAAAA,IAEJnE,KAAM,iBACNI,qBACUgF,EAAQC,aACRC,EAAQC,aACRC,EAAUC,OAAI,GACdxD,EAAW3B,YAAS,kBAAMgF,EAAMI,QAAQ,oBACxCC,EAAQrF,YAAS,kBAAMgF,EAAMI,QAAQ,iBACrCE,EAAQtF,YAAS,kBAAMgF,EAAMI,QAAQ,iBACrCG,EAAOvF,YAAS,kBAAMgF,EAAMI,QAAQ,cACpCI,EAAexF,YAAS,kBAAMgF,EAAMI,QAAQ,oBAC5CK,EAAkBN,OAAI,GACtBO,EAAeP,MAAI,MACnBQ,EAASR,OAAI,GACbS,EAAQT,MAAI,MAEZU,EAAWV,MAAI,IAEfW,EAAgBX,MAAI,IACpBY,EAAiBZ,MAAI,IAErBa,EAAWb,MAAI,OACfc,EAAmBd,MAAI,MAEvBe,EAAwBlG,YAAS,kBAAMgF,EAAMI,QAAQ,4BACrDe,EAAmBhB,OAAI,GAGvBiB,EAAWpG,WAAS,CACtBqG,sBACWrB,EAAMI,QAAQ,sBAEzBkB,aAAIhG,GACA0E,EAAMuB,OAAO,oBAAqBjG,MAIpCkG,EAAUxG,WAAS,CACrBqG,mBACUG,EAAUxB,EAAMI,QAAQ,2BAExBoB,IACFL,EAAiB7F,OAAQ,GAGtBkG,GAEXF,aAAIhG,GACA0E,EAAMuB,OAAO,mBAAoBjG,MAIzCmG,QAAMD,GAAS,SAAClG,GACRA,EAAMJ,OA3BW,MA4BjBsG,EAAQlG,MAAQkG,EAAQlG,MAAMoG,UAAU,EA5BvB,aAgCnBC,EAAQ,SAACjH,UACJM,WAAS,CACZqG,sBACWb,EAAalF,MAAMZ,IAE9B4G,aAAIhG,OACIsG,EAAOC,KAAKC,MAAMD,KAAKE,UAAUvB,EAAalF,QAClDsG,EAAKlH,GAAQY,EAEb0E,EAAMuB,OAAO,gBAAiBK,OAKpCI,EAAO7B,MAAI,CACb8B,UAAWN,EAAM,aACjBjH,KAAMiH,EAAM,QACZO,MAAOP,EAAM,SACbQ,MAAOR,EAAM,WAGjB3B,EAAMoC,SAAS,UAAW,SACb,mBAGPC,EAAWrH,WAAS,CACtBqG,sBACWrB,EAAMI,QAAQ,sBAEzBkB,aAAI9F,GACAwE,EAAMuB,OAAO,oBAAqB/F,MAIpC8G,EAAUtH,WAAS,CACrBqG,sBACWrB,EAAMI,QAAQ,qBAEzBkB,aAAI9F,GACAwE,EAAMuB,OAAO,mBAAoB/F,MAInC+G,EAAmBvH,YAAS,kBACvBqH,EAAS/G,MAAQwF,EAAcxF,MAAMkH,MAAK,SAAC5H,UAASA,EAAKY,IAAM6G,EAAS/G,SAAS,MAGtFmH,EAAkBzH,YAAS,kBACtBsH,EAAQhH,MAAQyF,EAAezF,MAAMkH,MAAK,SAAC5H,UAASA,EAAKY,IAAM8G,EAAQhH,SAAS,MAGrFoH,EAAgB1H,YAAS,kBACpB2H,EAAe7B,EAAcxF,MAAO+G,EAAS/G,UAGlDsH,EAAM5H,YAAS,kBACV2H,EAAe5B,EAAezF,MAAOgH,EAAQhH,UAGlDuH,EAA0B7H,YAAS,kBAC9B8H,EAAchC,EAAcxF,UAGjCyH,EAA2B/H,YAAS,kBAC/B8H,EAAc/B,EAAezF,UAGlC0H,EAAmBhI,YAAS,eAC1BiI,EAAa,UAEjB5C,EAAM/E,MAAM4H,SAAQ,SAACtI,IAC6B,IAA1CqI,EAAW1H,QAAQX,EAAKuI,cACxBF,EAAWG,KAAKxI,EAAKuI,gBAItBF,KAGLN,EAAiB,SAACtC,EAAO/E,OACvByB,EAAQ,KAERzB,EAAO,KACDV,EAAOyF,EAAMmC,MAAK,SAAC5H,UAASA,EAAKY,IAAMF,KAEzCV,IAEImC,EADa,OAAbnC,EAAKyI,KACGzI,EAAKsC,OAELoG,KAAKC,MAAOjD,EAAMhF,MAAQV,EAAKsC,OAAU,aAKtDH,GAGL+F,EAAgB,SAACU,OACfnD,EAAQ,UAEZmD,EAASN,SAAQ,SAACtI,MACVA,EAAK6I,cAAgB5I,OAAO6I,KAAK9I,EAAK6I,cAAcvI,OAAQ,KACxDyI,GAAK,EAEHC,EAAIhJ,EAAK6I,aAEXG,EAAEC,WAAaD,EAAEE,WACjBH,EAAKrD,EAAMhF,OAASsI,EAAEC,WAAavD,EAAMhF,OAASsI,EAAEE,UACpDlJ,EAAKmJ,iBAAmBJ,GACjBC,EAAEC,WACTF,EAAKrD,EAAMhF,OAASsI,EAAEC,UACtBjJ,EAAKmJ,iBAAmBJ,GACjBC,EAAEE,YACTH,EAAKrD,EAAMhF,OAASsI,EAAEE,UACtBlJ,EAAKmJ,iBAAmBJ,GAGxBA,GAAMtB,EAAS/G,OACXsI,EAAEI,eAAiBJ,EAAEI,cAAc9I,SACnCyI,GAAkD,IAA7CC,EAAEI,cAAczI,QAAQ8G,EAAS/G,QAI1CqI,GAAMrB,EAAQhH,OACVsI,EAAEK,gBAAkBL,EAAEK,eAAe/I,SACrCyI,GAAkD,IAA7CC,EAAEK,eAAe1I,QAAQ+G,EAAQhH,QAI1CqI,GAAMC,EAAEX,YAAcW,EAAEX,WAAW/H,SACnCyI,GAAMX,EAAiB1H,MAAMF,QAAO,SAACE,UAAWsI,EAAEX,WAAWiB,SAAS5I,MAAQJ,OAC9EN,EAAKmJ,iBAAmBJ,GAG5B/I,EAAKuJ,YAAcR,OAEnB/I,EAAKuJ,YAAa,EAGjBvJ,EAAKmJ,iBACN1D,EAAM+C,KAAKxI,MAIZyF,GAGL+D,EAAWpJ,YAAS,eAClBoC,EAAM,SAEViD,EAAM/E,MAAM4H,SAAQ,SAACtI,OACbyJ,EAAI,EAEJzJ,EAAKK,WAAWgC,WAChBoH,EAAIzJ,EAAKK,WAAWgC,SAAWrC,EAAKK,WAAW8B,OAGnDK,GAAOiH,EAAIzJ,EAAK+B,YAGbS,KAmBXkH,MAAMC,KAAKvF,OAAOwF,SAASxI,MAAMyI,MAAK,SAACC,GACnC5D,EAAcxF,MAAQoJ,EAAS9C,KAAKS,SACpCtB,EAAezF,MAAQoJ,EAAS9C,KAAKU,WAGzCb,QAAMT,GAAU,SAAC1F,GACA,SAATA,GACA0E,EAAMuB,OAAO,aAAc,gBAI7BoD,EAAaxE,MAAI,CACnB8B,UAAW,CACP2C,UAAWhG,UACXiG,MAAOC,GAAG,oCACVC,MAAO,aAEXrK,KAAM,CACFkK,UAAWhG,UACXiG,MAAOC,GAAG,+BACVC,MAAO,cAEX5C,MAAO,CACHyC,UAAWhG,UACXiG,MAAOC,GAAG,gCACVC,MAAO,QACPC,KAAM,kBACN3B,KAAM,SAGVnB,MAAO,CACH0C,UAAWhG,UACXiG,MAAOC,GAAG,yBACVC,MAAO,WAIfE,gBAAcjD,OAIRkD,EAAiBC,EAAIC,SAASC,MAAM,CACtCpD,UAAWkD,EAAIG,SAASC,OAAOC,SAASV,GAAG,6BAC3CpK,KAAMyK,EAAIG,SAASC,OAAOC,SAASV,GAAG,6BACtC3C,MAAOgD,EAAIG,SAASE,SAASV,GAAG,0BAA0BW,QAL1C,kCAK+DX,GAAG,0BAClF5C,MAAOiD,EAAIG,SAASC,OAAOrD,MAAM4C,GAAG,0BAA0BU,SAASV,GAAG,+BAG9E9F,OAAO0G,iBAAiB,gBAAgB,WACpC1F,EAAMuB,OAAO,aAAc,aA4IzBoE,EAAc,WAChB3F,EAAMuB,OAAO,yBAgBV,CACHhB,KAAAA,EACAS,SAAAA,EACA4E,SAjOa,WACb5G,OAAOwF,SAASxI,KAAO6J,OAAO,oBAAqB,CAC/CC,SAAU,cAgOdC,OA5NW,WACX/G,OAAOwF,SAASxI,KAAO6J,OAAO,oBAAqB,CAC/CC,SAAU,YA2NdE,cAvNkB,WAClBhF,EAAS1F,MAAQ,OAuNjBqB,SAAAA,EACA0D,MAAAA,EACAH,QAAAA,EACA+F,UAAAA,YACA7B,SAAAA,EACA9D,MAAAA,EACA+B,SAAAA,EACAK,cAAAA,EACAJ,QAAAA,EACAM,IAAAA,EACAsC,eAAAA,EACAP,WAAAA,EACA1D,iBAAAA,EACAiF,SAvKa,WACbhB,EAAeiB,QAAQnE,EAAK1G,OAAOmJ,MAAK,SAAU2B,MACzCA,EAOE,GAAK/D,EAAS/G,MAId,GAAK4F,EAAsB5F,MAAMiH,EAAiBjH,MAAMgB,OAAU4E,EAAsB5F,MAAMiH,EAAiBjH,MAAMgB,MAAM6J,QAI3H,GAAK7D,EAAQhH,MAIb,KACCsG,EAAOC,KAAKC,MAAMD,KAAKE,UAAUb,EAAsB5F,MAAMiH,EAAiBjH,MAAMgB,eACjFsF,EAAKuE,YAENpB,EAAQ,CACVmB,UAAU,EACVlE,KAAM,CACFC,UAAWD,EAAK1G,MAAM2G,UACtBvH,KAAMsH,EAAK1G,MAAMZ,KACjByH,MAAOH,EAAK1G,MAAM6G,MAClBD,MAAOF,EAAK1G,MAAM4G,OAEtBG,SAAU,CACN7G,GAAI6G,EAAS/G,MACbsG,KAAMA,GAEVU,QAAS,CACL9G,GAAI8G,EAAQhH,OAEhBkG,QAASA,EAAQlG,MACjB8F,SAAUA,EAAS9F,OAGvB4E,EAAQ5E,OAAQ,EAEhBgJ,MACKC,KAAKvF,OAAOwF,SAASxI,KAAM+I,GAC3BN,MAAK,SAACC,MACCA,EAAS9C,KAAKf,SACdA,EAASvF,MAAQ,CACb+K,IAAK3B,EAAS9C,KAAKf,SAASwF,IAC5BzE,KAAM8C,EAAS9C,KAAKf,SAASe,UAE9B,KACC0E,EAAW,GAEfjG,EAAM/E,MAAM4H,SAAQ,SAACtI,GACjB0L,EAASlD,KAAK,CACV1I,KAAME,EAAKF,KACXc,GAAIZ,EAAKK,WAAWqB,KACpBS,MAAOnC,EAAKK,WAAW8B,MACvBwJ,MAAO3L,EAAKK,WAAWsL,MACvBC,SAAU5L,EAAKK,WAAWuL,SAC1B7J,SAAU/B,EAAK+B,kBAIjByI,EAAS,CACXqB,UAAW,CACPC,SAAU,CACNC,YAAa,CACTnL,GAAIkJ,EAAS9C,KAAKhB,MAAMpF,GACxBoL,YAAa,WACbC,QAASvG,EAAMhF,MAAQsH,EAAItH,MAAQoH,EAAcpH,MACjDwL,IAAK,IACLzE,SAAUK,EAAcpH,OAE5BgL,SAAU,CAACA,KAGnBS,MAAO,uCACkB,kCACF,0CACS,SAGhC/H,OAAOgI,YACPhI,OAAOgI,UAAU5D,KAAK,CAClBqD,UAAW,OAGfzH,OAAOgI,UAAU5D,KAAKgC,IAI9BzE,EAAOrF,OAAQ,EACfsF,EAAMtF,MAAQoJ,EAAS9C,KAAKhB,MAE5B+E,cAMG,SAACsB,GACJnH,EAAM,2BAA4B,CAC9BuD,KAAM,UAGV6D,QAAQC,MAAMF,eAET,WACL/G,EAAQ5E,OAAQ,UA/FxBwE,EAAM,sBAAuB,CACzBuD,KAAM,eALVvD,EAAM,qCAAuCyC,EAAiBjH,MAAMZ,KAAO,IAAK,CAC5E2I,KAAM,eALVvD,EAAM,2BAA4B,CAC9BuD,KAAM,eARVrC,EAAS1F,MAAQ,MACjB2F,EAAiB3F,MAAM8L,QAEvBtH,EAAM,qCAAsC,CACxCuD,KAAM,cAiKlB5C,gBAAAA,EACA4G,SA/Ka,WACbnC,EAAeiB,QAAQnE,EAAK1G,OAAOmJ,MAAK,SAAU6C,GAC9C7G,EAAgBnF,MAAQgM,GAAehF,EAAQhH,OAAS+G,EAAS/G,SAAWiH,EAAiBjH,MAAMsJ,WAAcrC,EAAiBjH,MAAMsJ,WAAa1D,EAAsB5F,MAAMiH,EAAiBjH,MAAMgB,OAAS4E,EAAsB5F,MAAMiH,EAAiBjH,MAAMgB,MAAM6J,aA8K9QtD,wBAAAA,EACAE,yBAAAA,EACAwE,oBArDwB,SAAC/L,GACrB6G,EAAS/G,QAAUE,IACnB6G,EAAS/G,MAAQ,OAoDrBkM,mBAhDuB,SAAChM,GACpB8G,EAAQhH,QAAUE,IAClB8G,EAAQhH,MAAQ,OA+CpBiH,iBAAAA,EACAE,gBAAAA,EACAvB,sBAAAA,EACAuG,kBA1CsB,SAACnL,EAAMsF,EAAMuE,OAC/BuB,EAAI7F,KAAKC,MAAMD,KAAKE,UAAUb,EAAsB5F,QAExDsG,EAAKuE,QAAUA,EACfuB,EAAEpL,GAAQsF,EAEV5B,EAAMuB,OAAO,wBAAyBmG,IAqCtC/B,YAAAA,EACA3D,KAAAA,EACAZ,SAAAA,EACAI,QAAAA,EACAL,iBAAAA,EACAwG,iBApcqB,IAqcrBnH,aAAAA,EACAG,OAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAH,aAAAA,EACAkH,KA7CS,WACT5I,OAAOwF,SAASxI,KAAO6L,KAAKC,OAAOzB,IAAMwB,KAAKC,OAAOzB,IAAM,mBCnsBxD,mEAKI,oBACP5K,kCAAW,kBAAiB,kCACjB,qBACI,oBACI,kCACI,uBACI,0GAUHA,iCACIA,yCAAgB,oBAEpBA,iCAAM,qCAMX,4BACI,cACPA,kCAAW,eAAc,yDACd,8GAIA,qBACI,wBAGS4H,KAAK,SAASlD,IAAI,yBAAyB,uBAIpD,yCAGA,0BACI,yBACI,cACP1E,kCAAW,eAAc,2DACd,eAEHA,kCAAW,gBACPA,yCAAgB,6BAEpBA,iCAAM,oBAGNA,kCAAW,oBACPA,yCAAgB,2BAEpBA,iCAAM,wBAQvB,qBACI,kBACI,kBACI,UACPA,kCAAW,SACPA,kCAAW,oBAAmB,2BAQ3B,iBACI,0DAIe,YACdA,yCAAgB,uCAIb,yBAEJ,yBACK,oCAQrB,qBACI,kBACI,kBACI,UACPA,kCAAW,SACPA,kCAAW,oBAAmB,yBAQ3B,yBACI,+CAKI,+BAEJ,oCASxB,yBACI,6BACPA,kCAAW,eAAc,sBACd,kBACI,iBACI,uEACA,0CAIJ,UACPA,kCAAW,QAAO,uBACP,0CAIJ,UACPA,kCAAW,QAAO,+BACP,0CAIJ,UACPA,kCAAW,QAAO,mCACP,0CAEK,mBAGT,UACPA,kCAAW,QAAO,yBACP,2CAKR,mGAMHA,iCAAM,oCACNA,iCACIA,yCAAgB,gCAGb,6BAEI,+BAOxB,mCACI,6FAIA,2BACI,kBACPA,kCAAW,YAAW,gEAGf,yBAGA,+BACI,mBACPA,kCAAW,SAAQ,yBACR,6DAKJ,mBACPA,kCAAW,SAAQ,uBACR,6DAQT,2BACdA,kCAAW,SAAQ,+CACR,gGAEgE,SAAEA,qBAAM,wCAAA,0PAlO3FC,2BAAAG,IACmCF,WAAS0K,mBAAxC3K,mCAAMyE,IAAI,eAAoC4H,OAAQpM,WAAS0K,UAAW,YAAY2B,OAAO,0BACzFtM,kDAAgFC,WAASiG,eAAhCtG,EAAOZ,EAAM8C,wBAAtE9B,8BAAO2H,KAAK,SAAU3I,KAAMA,EAAOY,MAAOA,EAA4DmC,IAAKD,+DAG9E7B,QAAMT,SAAWS,wBAAlDD,2BAAAI,IACIC,GACAN,2BAAAwM,IACIxM,2BAAAyM,IACIzM,2BAAA0M,IACI1M,2BAAA2M,IACI3M,2BAAA4M,OAEI5M,mCAAY,mBAAO6M,kBAAQ3M,YAAUA,WAAUA,8CAC/CF,6BAAMqB,sBAAsBnB,WAASoB,MAAMpB,0CAGnDD,kDAA8BC,kBAARf,wBAAtB2N,iBAA4C9K,IAAK7C,EAAKY,GAAKZ,KAAMA,6BACjE4N,uBAAoB,+BAEZ,mBAAA/M,qCAAc,SAAUgN,QAAO9N,EAAM+N,2BASjDjN,+BAASgN,sCAAO9M,kDAAagN,MAAA,8DAAgE,SAC7FlN,2BAAAiB,IACIjB,2BAAAoB,IACI+L,GAC8BjN,sDAA9BD,2BAAAmN,IACIpN,oDAAQA,8BAAO4H,KAAK,cAAc,6DAAiB1H,eAAUL,MAAM,iCAAhBK,mBACnDF,oDAAQA,8BAAO4H,KAAK,cAAc,6DAAiB1H,eAAUL,MAAM,mCAAhBK,sBAEvDF,2BAAAqN,qBACIrN,2BAAAsN,IACIP,iBAAYQ,iBAAiB,QAASC,OAAQtN,iCAAgCA,mBAC/DuN,qBACP,kBAAAzN,8BAAA4B,+EAH0B1B,+BAOtCF,2BAAA6B,IACIkL,kCAAwB7M,qEADqBA,cAGjDF,2BAAA8B,IACoC5B,sDAAhCD,2BAAAgC,IACIjC,2BAAAkC,IACIC,GACAnC,2BAAA0N,IACI1N,gCAAS,SAAUgN,sCAAO9M,iDAM1BF,gCAAS,SAAUgN,sCAAO9M,0DAYlDF,2BAAA2N,IACI3N,2BAAA4N,IACI5N,2BAAA6N,IACI7N,2BAAAwC,IACIC,wDAQRxC,kDAAiCC,oCAARf,wBAAzBc,oDAAW,sBAAmGd,EAAKuJ,cAAlD1G,IAAK7C,EAAKY,KACvEC,2BAAA8N,IACI9N,2BAAA4C,IACI5C,oDACIA,8BAAO4H,KAAK,cAAc,6DAAiB1H,eAAWL,MAAOV,EAAKY,GAAKiN,2BAAO9M,sBAAoBf,EAAKY,iCAA5DG,cACFf,EAAK4O,oBAA9C9N,wCAAW,OAAQQ,IAAKtB,EAAK4O,iCAC7B9N,2BAAA+N,QAGAhO,mDAASb,EAAKF,WAEaE,EAAK8O,2BAApChO,2BAAAiO,qBAAoD/O,EAAK8O,mDAE7DjO,2BAAAmO,KAC+BhP,EAAKsC,QAAUtC,EAAKiP,2BAA/CnO,4BAAA8C,qBAA+D5D,EAAKiP,gCACpEnO,mCAAaoB,qBAAQlC,EAAKyI,KAAoBzI,EAAKsC,WAAevB,WAASoB,MAAMnC,EAAKsC,yDAG9FqL,wCAAgB3N,EAAKgK,YAA2DrD,OAAQ5F,oBAAoBiG,KAAMjG,wBAAwBf,KAAMA,+CAAxGA,EAAKgK,WAAahK,EAAKY,IAAMG,+BAIjFF,2BAAAiD,IACIjD,2BAAAqO,IACIrO,2BAAAsO,IACItO,2BAAAuO,IACIC,wDAQRvO,kDAAiCC,qCAARf,wBAAzBc,oDAAW,sBAAoGd,EAAKuJ,cAAlD1G,IAAK7C,EAAKY,KACxEC,2BAAAyO,IACIzO,2BAAA0O,IACI1O,oDACIA,8BAAO4H,KAAK,cAAc,6DAAiB1H,cAAUL,MAAOV,EAAKY,GAAKiN,2BAAO9M,qBAAmBf,EAAKY,iCAA1DG,aAC3CF,mDAASb,EAAKF,WAEaE,EAAK8O,2BAApChO,2BAAA0O,qBAAoDxP,EAAK8O,mDAEpC9O,EAAKsC,sBAA9BxB,2BAAA2O,IACI5O,6BAAMqB,qBAAQlC,EAAKyI,KAAoBzI,EAAKsC,WAAevB,WAASoB,MAAMnC,EAAKsC,8EAQ3GzB,2BAAA6O,IACI7O,2BAAA8O,IACIC,GACA/O,2BAAAgP,IACIhP,2BAAAiP,IACIjP,2BAAAkP,IAAkBlP,yCAAM6M,kBAAQ3M,YAAUA,WAAUA,mDACpDF,2BAAAmP,IACInP,6BAAMqB,UAAQnB,WAASoB,MAAMpB,yBAGdA,0BAAvBD,2BAAAmP,IACIC,GACArP,2BAAAsP,IACItP,6BAAMqB,UAAQnB,WAASoB,MAAMpB,6DAGdA,uBAAvBD,2BAAAsP,IACIC,GACAxP,2BAAAyP,IACIzP,6BAAMqB,UAAQnB,WAASoB,MAAMpB,wDAGdA,0BAAvBD,2BAAAyP,IACIC,GACA3P,2BAAA4P,IACuD1P,iCAAnDD,mCAAMoB,UAAQnB,WAASoB,MAAMpB,8BACEA,oBAAoBA,mBAAiBkO,2BAApEnO,4BAAA4P,qBAAoF3P,mBAAiBkO,sFAG7GpO,2BAAA8P,IACIC,GACA/P,2BAAAgQ,IACIhQ,6BAAMqB,UAAQnB,WAASoB,MAAMpB,QAAQA,MAAMA,mCAIvDF,2BAAAiQ,IACIjQ,oDAAQA,8BAAO4H,KAAK,iBAAiB,gEAAoB1H,6CAAAA,qBAE7DF,uDAAc,sBAA+EE,+BAA+BA,aAA7F8M,wCAAO9M,4CAAWgQ,6CAAYhQ,6CAA0E,wBACvIF,oDAAW,6BAA6CE,wBACpDF,kCAAW,UAAWgN,yCAAO9M,oBAAoBA,0BAMjDF,2BAAAmQ,qBACInQ,uCAAgB,kEAAoBE,wCAAAA,aACLA,UAAQT,sBAAvCQ,2BAAAmQ,qBAAkDlQ,mBAAmBA,UAAQT,2DAOvDS,UAAUA,uBAAxDD,2BAAAoQ,IACIrQ,2BAAAsQ,OAEItQ,iCAAM,sBAAIE,QAAMH,YAEpBC,2BAAAuQ,IACmCrQ,WAAS0K,mBAAxC3K,2BAAAuQ,IACIC,GACAzQ,qCAAc,oBAAqBgN,yCAAO9M,eAAawQ,YAAU,sCAErEzQ,2BAAA0Q,IACI3Q,qCAAc,mBAAoBgN,wCAAO9M,qCAAM,yBAEnDF,2BAAA4Q,IACoC1Q,QAAM0G,2BAAtC3G,2BAAA4Q,IACIC,GACA9Q,2BAAA+Q,IACmC7Q,QAAM0G,2BAArC3G,wCAAW,cAAuCoB,UAAQnB,QAAM0G,yDACjC1G,QAAM0G,2BAArC3G,wCAAW,cAAuCoB,UAAQnB,QAAM0G,8FAGxC1G,QAAM2G,0BAAtC5G,2BAAA+Q,IACIC,GACAjR,2BAAAkR,IACmChR,QAAM2G,0BAArC5G,wCAAW,cAAsCoB,UAAQnB,QAAM2G,wDAChC3G,QAAM2G,0BAArC5G,wCAAW,cAAsCoB,UAAQnB,QAAM2G,mHAMnF5G,2BAAAkR,IACIC,GACApR,2BAAAqR,OAEIrR,qBAAuE,KAAnEO,KAAML,OAAKmM,OAAOzB,IAAM1K,OAAKmM,OAAOzB,SAAW,4BAAsB0G,QAE7EtR,gCAAS,kBAAmBO,KAAML,OAAKmM,OAAOzB,IAAM1K,OAAKmM,OAAOzB,SAAW"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),r=e.defineComponent({name:"viewer",props:{slug:String,code:String,brand:String,category:String},setup:function(r){var
|
|
1
|
+
"use strict";var e=require("vue"),r=e.defineComponent({name:"viewer",props:{slug:String,code:String,brand:String,category:String},setup:function(r){var t=e.ref(null);return $http.post($ziggy("api.viewed"),{action:"view",slug:r.slug}),e.onMounted((function(){var e=t.value.closest("[shop-product]"),o=e.querySelector("[shop-product-name]").textContent,n=e.querySelector("[shop-product-price]")?e.querySelector("[shop-product-price]").childNodes[0].nodeValue.replace(/ /g,""):null,c={ecommerce:{detail:{products:[{name:o,id:r.code}]}},event:"gtm-ee-event","gtm-ee-event-category":"Ecommerce","gtm-ee-event-action":"Product Details","gtm-ee-event-non-interaction":"True"};n&&(c.ecommerce.detail.products[0].price=n),r.brand&&(c.ecommerce.detail.products[0].brand=r.brand),r.category&&(c.ecommerce.detail.products[0].category=r.category),window.dataLayer&&(window.dataLayer.push({ecommerce:null}),window.dataLayer.push(c))})),{viewer:t}}}),t={class:"is-hidden",ref:"viewer"};r.render=function(r,o,n,c,a,d){return e.openBlock(),e.createElementBlock("span",t,null,512)},module.exports=r;
|
|
2
2
|
//# sourceMappingURL=Viewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Viewer.js","sources":["../../../../src/components/shop/viewed/Viewer.vue","../../../../src/components/shop/viewed/Viewer.vue?vue&type=template&id=
|
|
1
|
+
{"version":3,"file":"Viewer.js","sources":["../../../../src/components/shop/viewed/Viewer.vue","../../../../src/components/shop/viewed/Viewer.vue?vue&type=template&id=6d236350&lang.js"],"sourcesContent":["<template>\n <span class=\"is-hidden\" ref=\"viewer\"></span>\n</template>\n<script>\nimport { ref, onMounted, defineComponent } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'viewer',\n props: {\n slug: String,\n code: String,\n brand: String,\n category: String\n },\n setup(props) {\n const viewer = ref(null);\n\n $http.post($ziggy('api.viewed'), {\n action: 'view',\n slug: props.slug\n });\n\n onMounted(() => {\n const product = viewer.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]') ? product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '') : null;\n const code = props.code;\n\n let object = {\n ecommerce: {\n detail: {\n products: [\n {\n name: name,\n id: code\n }\n ]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Product Details',\n 'gtm-ee-event-non-interaction': 'True'\n };\n\n if (price) {\n object.ecommerce.detail.products[0].price = price;\n }\n\n if (props.brand) {\n object.ecommerce.detail.products[0].brand = props.brand;\n }\n\n if (props.category) {\n object.ecommerce.detail.products[0].category = props.category;\n }\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n });\n\n return {\n viewer\n };\n }\n});\n</script>","<template>\n <span class=\"is-hidden\" ref=\"viewer\"></span>\n</template>\n<script>\nimport { ref, onMounted, defineComponent } from 'vue';\n\nexport default /*#__PURE__*/ defineComponent({\n name: 'viewer',\n props: {\n slug: String,\n code: String,\n brand: String,\n category: String\n },\n setup(props) {\n const viewer = ref(null);\n\n $http.post($ziggy('api.viewed'), {\n action: 'view',\n slug: props.slug\n });\n\n onMounted(() => {\n const product = viewer.value.closest('[shop-product]');\n const name = product.querySelector('[shop-product-name]').textContent;\n const price = product.querySelector('[shop-product-price]') ? product.querySelector('[shop-product-price]').childNodes[0].nodeValue.replace(/ /g, '') : null;\n const code = props.code;\n\n let object = {\n ecommerce: {\n detail: {\n products: [\n {\n name: name,\n id: code\n }\n ]\n }\n },\n event: 'gtm-ee-event',\n 'gtm-ee-event-category': 'Ecommerce',\n 'gtm-ee-event-action': 'Product Details',\n 'gtm-ee-event-non-interaction': 'True'\n };\n\n if (price) {\n object.ecommerce.detail.products[0].price = price;\n }\n\n if (props.brand) {\n object.ecommerce.detail.products[0].brand = props.brand;\n }\n\n if (props.category) {\n object.ecommerce.detail.products[0].category = props.category;\n }\n\n if (window.dataLayer) {\n window.dataLayer.push({\n ecommerce: null\n });\n\n window.dataLayer.push(object);\n }\n });\n\n return {\n viewer\n };\n }\n});\n</script>"],"names":["defineComponent","name","props","slug","String","code","brand","category","setup","viewer","ref","$http","post","$ziggy","action","onMounted","product","value","closest","querySelector","textContent","price","childNodes","nodeValue","replace","object","ecommerce","detail","products","id","event","window","dataLayer","push","_createElementBlock","_hoisted_1"],"mappings":"oCAM6BA,kBAAgB,CACzCC,KAAM,SACNC,MAAO,CACHC,KAAMC,OACNC,KAAMD,OACNE,MAAOF,OACPG,SAAUH,QAEdI,eAAMN,OACIO,EAASC,MAAI,aAEnBC,MAAMC,KAAKC,OAAO,cAAe,CAC7BC,OAAQ,OACRX,KAAMD,EAAMC,OAGhBY,aAAU,eACAC,EAAUP,EAAOQ,MAAMC,QAAQ,kBAC/BjB,EAAOe,EAAQG,cAAc,uBAAuBC,YACpDC,EAAQL,EAAQG,cAAc,wBAA0BH,EAAQG,cAAc,wBAAwBG,WAAW,GAAGC,UAAUC,QAAQ,KAAM,IAAM,KAGpJC,EAAS,CACTC,UAAW,CACPC,OAAQ,CACJC,SAAU,CACN,CACI3B,KAAMA,EACN4B,GARP3B,EAAMG,SAafyB,MAAO,uCACkB,kCACF,iDACS,QAGhCT,IACAI,EAAOC,UAAUC,OAAOC,SAAS,GAAGP,MAAQA,GAG5CnB,EAAMI,QACNmB,EAAOC,UAAUC,OAAOC,SAAS,GAAGtB,MAAQJ,EAAMI,OAGlDJ,EAAMK,WACNkB,EAAOC,UAAUC,OAAOC,SAAS,GAAGrB,SAAWL,EAAMK,UAGrDwB,OAAOC,YACPD,OAAOC,UAAUC,KAAK,CAClBP,UAAW,OAGfK,OAAOC,UAAUC,KAAKR,OAIvB,CACHhB,OAAAA,eClEI,YAAYC,IAAI,8DAA5BwB,4BAAAC"}
|