@perevorot/shop 2.0.10 → 2.0.14
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/PromoProducts.js +1 -1
- package/dist/components/shop/PromoProducts.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/forms/FormText.js +1 -1
- package/dist/forms/FormText.js.map +1 -1
- package/dist/forms/FormTextarea.js +1 -1
- package/dist/forms/FormTextarea.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),i=require("swiper");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=t(i),
|
|
1
|
+
"use strict";var e=require("vue"),i=require("swiper");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=t(i),r=e.defineComponent({props:{id:Number,type:{type:String,default:"promo-products"}},setup:function(t){var r=!1,d=e.ref(!1),n=e.ref(null),o=e.ref(null),a=function(e){e.forEach((function(e){e.isIntersecting&&(r||(r=!0,l()))}))},l=function(){$http.post($ziggy("api.piece",{slug:t.type}),{id:t.id}).then((function(r){var a="piece-promo-products-"+t.id;window.app.component(a,{template:r.data?r.data:"<i></i>"}),o.value=a,d.value=!0,e.nextTick((function(){var e=n.value.querySelectorAll(".is-faded-tabs");e.length&&e.forEach((function(e){new s.default(e.querySelector(".swiper"),{slidesPerView:"auto",freeMode:{enabled:!0},mousewheel:{forceToAxis:!0},modules:[i.Navigation,i.Mousewheel,i.FreeMode]})}));var t=n.value.querySelectorAll(".is-faded-tabs .swiper-slide"),r=n.value.querySelectorAll("[products-slider]");t.forEach((function(e,i){e.addEventListener("click",(function(){t.forEach((function(e){e.classList.remove("is-active")})),r.forEach((function(e){e.classList.add("is-hidden")})),r[i].classList.remove("is-hidden"),e.classList.add("is-active")}))})),r.length&&r.forEach((function(e){new s.default(e,window.viewedSwiperOptions)})),window.lazyImages&&window.lazyImages.update()}))}))};return window.addEventListener("DOMContentLoaded",(function(){new IntersectionObserver(a,{threshold:.1}).observe(n.value)})),{container:n,component:o,loaded:d}}}),d={ref:"container"},n={key:0,class:"product-promo-block container is-fluid is-skeleton"},o=e.createStaticVNode('<div class="gradient"></div><div class="title slider-title"> </div><div class="is-faded-tabs"><div class="is-flex"><div class="swiper-slide"> </div><div class="swiper-slide"> </div></div></div>',3),a={class:"swiper"},l={class:"swiper-wrapper products is-slider"},c=[e.createStaticVNode('<div class="border"><div class="wrapper"><picture class="is-lazy-loaded"><img class="lazy entered loaded" src="/images/blank.png"></picture><div class="availability"> </div><div class="title"> </div><div class="prices"><div class="price"></div></div></div></div>',1)];r.render=function(i,t,s,r,u,p){return e.openBlock(),e.createElementBlock("div",d,[i.loaded?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),{key:1})):(e.openBlock(),e.createElementBlock("section",n,[o,e.createElementVNode("div",a,[e.createElementVNode("div",l,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(5,(function(i){return e.createElementVNode("div",{class:"product",key:i},c)})),64))])])]))],512)},module.exports=r;
|
|
2
2
|
//# sourceMappingURL=PromoProducts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromoProducts.js","sources":["../../../src/components/shop/PromoProducts.vue","../../../src/components/shop/PromoProducts.vue?vue&type=template&id=014d4b4c&lang.js"],"sourcesContent":["<template>\n <div ref=\"container\">\n <section class=\"product-promo-block container is-fluid is-skeleton\" v-if=\"!loaded\">\n <div class=\"gradient\"></div>\n <div class=\"title slider-title\"> </div>\n <div class=\"is-faded-tabs\">\n <div class=\"is-flex\">\n <div class=\"swiper-slide\"> </div>\n <div class=\"swiper-slide\"> </div>\n </div>\n </div>\n <div class=\"swiper\">\n <div class=\"swiper-wrapper products is-slider\">\n <div class=\"product\" v-for=\"index in 5\" :key=\"index\">\n <div class=\"border\">\n <div class=\"wrapper\">\n <picture class=\"is-lazy-loaded\">\n <img class=\"lazy entered loaded\" src=\"/images/blank.png\" />\n </picture>\n <div class=\"availability\"> </div>\n <div class=\"title\"> </div>\n <div class=\"prices\">\n <div class=\"price\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n <component :is=\"component\" v-else></component>\n </div>\n</template>\n<script>\nimport { ref, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel, FreeMode } from 'swiper';\n\nexport default defineComponent({\n props: {\n id: Number,\n type: {\n type: String,\n default: 'promo-products'\n }\n },\n setup(props) {\n let inited = false;\n\n const loaded = ref(false);\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.piece', { slug: props.type }), {\n id: props.id\n })\n .then((response) => {\n const componentName = 'piece-promo-products-' + props.id;\n\n window.app.component(componentName, {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = componentName;\n loaded.value = true;\n\n nextTick(() => {\n const fadedTabs = container.value.querySelectorAll('.is-faded-tabs');\n\n if (fadedTabs.length) {\n fadedTabs.forEach((tab) => {\n new Swiper(tab.querySelector('.swiper'), {\n slidesPerView: 'auto',\n freeMode: {\n enabled: true\n },\n modules: [Navigation, Mousewheel, FreeMode]\n });\n });\n }\n\n const tabs = container.value.querySelectorAll('.is-faded-tabs .swiper-slide');\n const sliders = container.value.querySelectorAll('[products-slider]');\n\n tabs.forEach((tab, index) => {\n tab.addEventListener('click', () => {\n tabs.forEach((tab) => {\n tab.classList.remove('is-active');\n });\n\n sliders.forEach((slider) => {\n slider.classList.add('is-hidden');\n });\n\n sliders[index].classList.remove('is-hidden');\n tab.classList.add('is-active');\n });\n });\n\n if (sliders.length) {\n sliders.forEach((slider) => {\n new Swiper(slider, window.viewedSwiperOptions);\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n new IntersectionObserver(callback, {\n threshold: 0.1\n }).observe(container.value);\n });\n\n return {\n container,\n component,\n loaded\n };\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <section class=\"product-promo-block container is-fluid is-skeleton\" v-if=\"!loaded\">\n <div class=\"gradient\"></div>\n <div class=\"title slider-title\"> </div>\n <div class=\"is-faded-tabs\">\n <div class=\"is-flex\">\n <div class=\"swiper-slide\"> </div>\n <div class=\"swiper-slide\"> </div>\n </div>\n </div>\n <div class=\"swiper\">\n <div class=\"swiper-wrapper products is-slider\">\n <div class=\"product\" v-for=\"index in 5\" :key=\"index\">\n <div class=\"border\">\n <div class=\"wrapper\">\n <picture class=\"is-lazy-loaded\">\n <img class=\"lazy entered loaded\" src=\"/images/blank.png\" />\n </picture>\n <div class=\"availability\"> </div>\n <div class=\"title\"> </div>\n <div class=\"prices\">\n <div class=\"price\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n <component :is=\"component\" v-else></component>\n </div>\n</template>\n<script>\nimport { ref, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel, FreeMode } from 'swiper';\n\nexport default defineComponent({\n props: {\n id: Number,\n type: {\n type: String,\n default: 'promo-products'\n }\n },\n setup(props) {\n let inited = false;\n\n const loaded = ref(false);\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.piece', { slug: props.type }), {\n id: props.id\n })\n .then((response) => {\n const componentName = 'piece-promo-products-' + props.id;\n\n window.app.component(componentName, {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = componentName;\n loaded.value = true;\n\n nextTick(() => {\n const fadedTabs = container.value.querySelectorAll('.is-faded-tabs');\n\n if (fadedTabs.length) {\n fadedTabs.forEach((tab) => {\n new Swiper(tab.querySelector('.swiper'), {\n slidesPerView: 'auto',\n freeMode: {\n enabled: true\n },\n modules: [Navigation, Mousewheel, FreeMode]\n });\n });\n }\n\n const tabs = container.value.querySelectorAll('.is-faded-tabs .swiper-slide');\n const sliders = container.value.querySelectorAll('[products-slider]');\n\n tabs.forEach((tab, index) => {\n tab.addEventListener('click', () => {\n tabs.forEach((tab) => {\n tab.classList.remove('is-active');\n });\n\n sliders.forEach((slider) => {\n slider.classList.add('is-hidden');\n });\n\n sliders[index].classList.remove('is-hidden');\n tab.classList.add('is-active');\n });\n });\n\n if (sliders.length) {\n sliders.forEach((slider) => {\n new Swiper(slider, window.viewedSwiperOptions);\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n new IntersectionObserver(callback, {\n threshold: 0.1\n }).observe(container.value);\n });\n\n return {\n container,\n component,\n loaded\n };\n }\n});\n</script>\n"],"names":["defineComponent","props","id","Number","type","String","setup","inited","loaded","ref","container","component","callback","entries","forEach","entry","isIntersecting","load","$http","post","$ziggy","slug","then","response","componentName","window","app","template","data","value","nextTick","fadedTabs","querySelectorAll","length","tab","Swiper","querySelector","slidesPerView","freeMode","enabled","modules","Navigation","Mousewheel","FreeMode","tabs","sliders","index","addEventListener","classList","remove","slider","add","viewedSwiperOptions","lazyImages","update","IntersectionObserver","threshold","observe","_createElementBlock","_hoisted_1","_ctx","_createBlock","_hoisted_2","_hoisted_3","_createElementVNode","_hoisted_6","_hoisted_7","key"],"mappings":"2IAqCeA,kBAAgB,CAC3BC,MAAO,CACHC,GAAIC,OACJC,KAAM,CACFA,KAAMC,eACG,mBAGjBC,eAAML,OACEM,GAAS,EAEPC,EAASC,OAAI,GACbC,EAAYD,MAAI,MAChBE,EAAYF,MAAI,MAEhBG,EAAW,SAACC,GACdA,EAAQC,SAAQ,SAACC,GACTA,EAAMC,iBACDT,IACDA,GAAS,EAETU,UAMVA,EAAO,WACTC,MACKC,KAAKC,OAAO,YAAa,CAAEC,KAAMpB,EAAMG,OAAS,CAC7CF,GAAID,EAAMC,KAEboB,MAAK,SAACC,OACGC,EAAgB,wBAA0BvB,EAAMC,GAEtDuB,OAAOC,IAAIf,UAAUa,EAAe,CAChCG,SAAUJ,EAASK,KAAOL,EAASK,KAAO,YAG9CjB,EAAUkB,MAAQL,EAClBhB,EAAOqB,OAAQ,EAEfC,YAAS,eACCC,EAAYrB,EAAUmB,MAAMG,iBAAiB,kBAE/CD,EAAUE,QACVF,EAAUjB,SAAQ,SAACoB,OACXC,UAAOD,EAAIE,cAAc,WAAY,CACrCC,cAAe,OACfC,SAAU,CACNC,SAAS,GAEbC,QAAS,CAACC,aAAYC,aAAYC,qBAKxCC,EAAOlC,EAAUmB,MAAMG,iBAAiB,gCACxCa,EAAUnC,EAAUmB,MAAMG,iBAAiB,qBAEjDY,EAAK9B,SAAQ,SAACoB,EAAKY,GACfZ,EAAIa,iBAAiB,SAAS,WAC1BH,EAAK9B,SAAQ,SAACoB,GACVA,EAAIc,UAAUC,OAAO,gBAGzBJ,EAAQ/B,SAAQ,SAACoC,GACbA,EAAOF,UAAUG,IAAI,gBAGzBN,EAAQC,GAAOE,UAAUC,OAAO,aAChCf,EAAIc,UAAUG,IAAI,mBAItBN,EAAQZ,QACRY,EAAQ/B,SAAQ,SAACoC,OACTf,UAAOe,EAAQzB,OAAO2B,wBAI9B3B,OAAO4B,YACP5B,OAAO4B,WAAWC,uBAMtC7B,OAAOsB,iBAAiB,oBAAoB,eACpCQ,qBAAqB3C,EAAU,CAC/B4C,UAAW,KACZC,QAAQ/C,EAAUmB,UAGlB,CACHnB,UAAAA,EACAC,UAAAA,EACAH,OAAAA,SCrIHC,IAAI,4BACU,4RASA,mBACI,6XAXvBiD,2BAAAC,GAC+EC,wBA4B3EC,wCAAgBD,sCA5BhBF,+BAAAI,GACIC,EAQAC,2BAAAC,GACID,2BAAAE,kBACIR,kDAAqC,YAATZ,UAA5BkB,kCAAW,UAA8BG,IAAKrB"}
|
|
1
|
+
{"version":3,"file":"PromoProducts.js","sources":["../../../src/components/shop/PromoProducts.vue","../../../src/components/shop/PromoProducts.vue?vue&type=template&id=5b048c5f&lang.js"],"sourcesContent":["<template>\n <div ref=\"container\">\n <section class=\"product-promo-block container is-fluid is-skeleton\" v-if=\"!loaded\">\n <div class=\"gradient\"></div>\n <div class=\"title slider-title\"> </div>\n <div class=\"is-faded-tabs\">\n <div class=\"is-flex\">\n <div class=\"swiper-slide\"> </div>\n <div class=\"swiper-slide\"> </div>\n </div>\n </div>\n <div class=\"swiper\">\n <div class=\"swiper-wrapper products is-slider\">\n <div class=\"product\" v-for=\"index in 5\" :key=\"index\">\n <div class=\"border\">\n <div class=\"wrapper\">\n <picture class=\"is-lazy-loaded\">\n <img class=\"lazy entered loaded\" src=\"/images/blank.png\" />\n </picture>\n <div class=\"availability\"> </div>\n <div class=\"title\"> </div>\n <div class=\"prices\">\n <div class=\"price\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n <component :is=\"component\" v-else></component>\n </div>\n</template>\n<script>\nimport { ref, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel, FreeMode } from 'swiper';\n\nexport default defineComponent({\n props: {\n id: Number,\n type: {\n type: String,\n default: 'promo-products'\n }\n },\n setup(props) {\n let inited = false;\n\n const loaded = ref(false);\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.piece', { slug: props.type }), {\n id: props.id\n })\n .then((response) => {\n const componentName = 'piece-promo-products-' + props.id;\n\n window.app.component(componentName, {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = componentName;\n loaded.value = true;\n\n nextTick(() => {\n const fadedTabs = container.value.querySelectorAll('.is-faded-tabs');\n\n if (fadedTabs.length) {\n fadedTabs.forEach((tab) => {\n new Swiper(tab.querySelector('.swiper'), {\n slidesPerView: 'auto',\n freeMode: {\n enabled: true\n },\n mousewheel: {\n forceToAxis: true,\n },\n modules: [Navigation, Mousewheel, FreeMode]\n });\n });\n }\n\n const tabs = container.value.querySelectorAll('.is-faded-tabs .swiper-slide');\n const sliders = container.value.querySelectorAll('[products-slider]');\n\n tabs.forEach((tab, index) => {\n tab.addEventListener('click', () => {\n tabs.forEach((tab) => {\n tab.classList.remove('is-active');\n });\n\n sliders.forEach((slider) => {\n slider.classList.add('is-hidden');\n });\n\n sliders[index].classList.remove('is-hidden');\n tab.classList.add('is-active');\n });\n });\n\n if (sliders.length) {\n sliders.forEach((slider) => {\n new Swiper(slider, window.viewedSwiperOptions);\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n new IntersectionObserver(callback, {\n threshold: 0.1\n }).observe(container.value);\n });\n\n return {\n container,\n component,\n loaded\n };\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <section class=\"product-promo-block container is-fluid is-skeleton\" v-if=\"!loaded\">\n <div class=\"gradient\"></div>\n <div class=\"title slider-title\"> </div>\n <div class=\"is-faded-tabs\">\n <div class=\"is-flex\">\n <div class=\"swiper-slide\"> </div>\n <div class=\"swiper-slide\"> </div>\n </div>\n </div>\n <div class=\"swiper\">\n <div class=\"swiper-wrapper products is-slider\">\n <div class=\"product\" v-for=\"index in 5\" :key=\"index\">\n <div class=\"border\">\n <div class=\"wrapper\">\n <picture class=\"is-lazy-loaded\">\n <img class=\"lazy entered loaded\" src=\"/images/blank.png\" />\n </picture>\n <div class=\"availability\"> </div>\n <div class=\"title\"> </div>\n <div class=\"prices\">\n <div class=\"price\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n <component :is=\"component\" v-else></component>\n </div>\n</template>\n<script>\nimport { ref, nextTick, defineComponent } from 'vue';\nimport Swiper, { Navigation, Mousewheel, FreeMode } from 'swiper';\n\nexport default defineComponent({\n props: {\n id: Number,\n type: {\n type: String,\n default: 'promo-products'\n }\n },\n setup(props) {\n let inited = false;\n\n const loaded = ref(false);\n const container = ref(null);\n const component = ref(null);\n\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (!inited) {\n inited = true;\n\n load();\n }\n }\n });\n };\n\n const load = () => {\n $http\n .post($ziggy('api.piece', { slug: props.type }), {\n id: props.id\n })\n .then((response) => {\n const componentName = 'piece-promo-products-' + props.id;\n\n window.app.component(componentName, {\n template: response.data ? response.data : '<i></i>'\n });\n\n component.value = componentName;\n loaded.value = true;\n\n nextTick(() => {\n const fadedTabs = container.value.querySelectorAll('.is-faded-tabs');\n\n if (fadedTabs.length) {\n fadedTabs.forEach((tab) => {\n new Swiper(tab.querySelector('.swiper'), {\n slidesPerView: 'auto',\n freeMode: {\n enabled: true\n },\n mousewheel: {\n forceToAxis: true,\n },\n modules: [Navigation, Mousewheel, FreeMode]\n });\n });\n }\n\n const tabs = container.value.querySelectorAll('.is-faded-tabs .swiper-slide');\n const sliders = container.value.querySelectorAll('[products-slider]');\n\n tabs.forEach((tab, index) => {\n tab.addEventListener('click', () => {\n tabs.forEach((tab) => {\n tab.classList.remove('is-active');\n });\n\n sliders.forEach((slider) => {\n slider.classList.add('is-hidden');\n });\n\n sliders[index].classList.remove('is-hidden');\n tab.classList.add('is-active');\n });\n });\n\n if (sliders.length) {\n sliders.forEach((slider) => {\n new Swiper(slider, window.viewedSwiperOptions);\n });\n }\n\n if (window.lazyImages) {\n window.lazyImages.update();\n }\n });\n });\n };\n\n window.addEventListener('DOMContentLoaded', () => {\n new IntersectionObserver(callback, {\n threshold: 0.1\n }).observe(container.value);\n });\n\n return {\n container,\n component,\n loaded\n };\n }\n});\n</script>\n"],"names":["defineComponent","props","id","Number","type","String","setup","inited","loaded","ref","container","component","callback","entries","forEach","entry","isIntersecting","load","$http","post","$ziggy","slug","then","response","componentName","window","app","template","data","value","nextTick","fadedTabs","querySelectorAll","length","tab","Swiper","querySelector","slidesPerView","freeMode","enabled","mousewheel","forceToAxis","modules","Navigation","Mousewheel","FreeMode","tabs","sliders","index","addEventListener","classList","remove","slider","add","viewedSwiperOptions","lazyImages","update","IntersectionObserver","threshold","observe","_createElementBlock","_hoisted_1","_ctx","_createBlock","_hoisted_2","_hoisted_3","_createElementVNode","_hoisted_6","_hoisted_7","key"],"mappings":"2IAqCeA,kBAAgB,CAC3BC,MAAO,CACHC,GAAIC,OACJC,KAAM,CACFA,KAAMC,eACG,mBAGjBC,eAAML,OACEM,GAAS,EAEPC,EAASC,OAAI,GACbC,EAAYD,MAAI,MAChBE,EAAYF,MAAI,MAEhBG,EAAW,SAACC,GACdA,EAAQC,SAAQ,SAACC,GACTA,EAAMC,iBACDT,IACDA,GAAS,EAETU,UAMVA,EAAO,WACTC,MACKC,KAAKC,OAAO,YAAa,CAAEC,KAAMpB,EAAMG,OAAS,CAC7CF,GAAID,EAAMC,KAEboB,MAAK,SAACC,OACGC,EAAgB,wBAA0BvB,EAAMC,GAEtDuB,OAAOC,IAAIf,UAAUa,EAAe,CAChCG,SAAUJ,EAASK,KAAOL,EAASK,KAAO,YAG9CjB,EAAUkB,MAAQL,EAClBhB,EAAOqB,OAAQ,EAEfC,YAAS,eACCC,EAAYrB,EAAUmB,MAAMG,iBAAiB,kBAE/CD,EAAUE,QACVF,EAAUjB,SAAQ,SAACoB,OACXC,UAAOD,EAAIE,cAAc,WAAY,CACrCC,cAAe,OACfC,SAAU,CACNC,SAAS,GAEbC,WAAY,CACRC,aAAa,GAEjBC,QAAS,CAACC,aAAYC,aAAYC,qBAKxCC,EAAOpC,EAAUmB,MAAMG,iBAAiB,gCACxCe,EAAUrC,EAAUmB,MAAMG,iBAAiB,qBAEjDc,EAAKhC,SAAQ,SAACoB,EAAKc,GACfd,EAAIe,iBAAiB,SAAS,WAC1BH,EAAKhC,SAAQ,SAACoB,GACVA,EAAIgB,UAAUC,OAAO,gBAGzBJ,EAAQjC,SAAQ,SAACsC,GACbA,EAAOF,UAAUG,IAAI,gBAGzBN,EAAQC,GAAOE,UAAUC,OAAO,aAChCjB,EAAIgB,UAAUG,IAAI,mBAItBN,EAAQd,QACRc,EAAQjC,SAAQ,SAACsC,OACTjB,UAAOiB,EAAQ3B,OAAO6B,wBAI9B7B,OAAO8B,YACP9B,OAAO8B,WAAWC,uBAMtC/B,OAAOwB,iBAAiB,oBAAoB,eACpCQ,qBAAqB7C,EAAU,CAC/B8C,UAAW,KACZC,QAAQjD,EAAUmB,UAGlB,CACHnB,UAAAA,EACAC,UAAAA,EACAH,OAAAA,SCxIHC,IAAI,4BACU,4RASA,mBACI,6XAXvBmD,2BAAAC,GAC+EC,wBA4B3EC,wCAAgBD,sCA5BhBF,+BAAAI,GACIC,EAQAC,2BAAAC,GACID,2BAAAE,kBACIR,kDAAqC,YAATZ,UAA5BkB,kCAAW,UAA8BG,IAAKrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),n=require("vuex"),l=require("formvuelate"),o=require("@formvuelate/plugin-vee-validate"),i=require("@perevorot/shop/dist/forms/FormText"),a=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 l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,l.get?l:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var m=c(o),u=c(i),d=s(a),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)],k={class:"column name"},h={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"},le={class:"column is-narrow"},oe=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),ie=["href"],ae=["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,l,o,i,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["columns is-multiline shop-cart-item",{"is-bundle":t.item.attributes.bundle}])},[t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",v,f)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",k,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",h,[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,l){return e.openBlock(),e.createElementBlock("div",{key:l,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",le,[oe,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,ae)):(e.openBlock(),e.createElementBlock("svg",re,ce))],2)],8,ie)]),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=l.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 o=r.useToast(),i=n.useStore(),a=e.ref(!1),c=e.computed((function(){return i.getters["cart/quantity"]})),s=e.computed((function(){return i.getters["cart/items"]})),m=e.computed((function(){return i.getters["cart/total"]})),p=e.computed((function(){return i.getters["auth/is"]})),v=e.computed((function(){return i.getters["checkout/user"]})),f=e.ref(!0),k=e.ref(null),h=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 i.getters["checkout/shippingData"]})),C=e.ref(!1),w=e.computed({get:function(){return i.getters["checkout/dontcall"]},set:function(e){i.commit("checkout/dontcall",e)}}),T=e.computed({get:function(){var e=i.getters["checkout/comment"];return e&&(C.value=!0),e},set:function(e){i.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,i.commit("checkout/user",n)}})},_=e.ref({last_name:x("last_name"),name:x("name"),email:x("email"),phone:x("phone")});i.dispatch("auth/me",{finally:function(){}});var S=e.computed({get:function(){return i.getters["checkout/shipping"]},set:function(e){i.commit("checkout/shipping",e)}}),M=e.computed({get:function(){return i.getters["checkout/payment"]},set:function(e){i.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 l=e.find((function(e){return e.id==t}));l&&(n="sum"==l.type?l.amount:Math.round(m.value*l.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,l=e.restrictions;l.price_min&&l.price_max?(n=m.value>=l.price_min&&m.value<=l.price_max,e.restrictedForce=!n):l.price_min?(n=m.value>=l.price_min,e.restrictedForce=!n):l.price_max&&(n=m.value<=l.price_max,e.restrictedForce=!n),n&&S.value&&l.shipping_type&&l.shipping_type.length&&(n=-1!==l.shipping_type.indexOf(S.value)),n&&M.value&&l.payment_method&&l.payment_method.length&&(n=-1!==l.payment_method.indexOf(M.value)),n&&l.categories&&l.categories.length&&(n=!F.value.filter((function(e){return!l.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&&i.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",placeholder:"(050) 123-45-67"},email:{component:u.default,label:__("auth.login.form.email"),model:"email"}});l.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(){i.commit("auth/modal",null)}));var U=function(){i.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:a,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};a.value=!0,$http.post(window.location.href,n).then((function(e){e.data.redirect&&(E.value={url:e.data.redirect.url,data:e.data.redirect.data}),h.value=!0,g.value=e.data.order,U()})).catch((function(e){o("Ошибка сохранения заказа",{type:"error"}),console.error(e)})).finally((function(){a.value=!1}))}else o("Выберите вид оплаты",{type:"error"});else o("Заполните все поля для доставки: «"+L.value.name+"»",{type:"error"});else o("Выберите способ доставки",{type:"error"});else y.value="new",b.value.click(),o("Заполните данные получателя заказа",{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 l=JSON.parse(JSON.stringify(B.value));t.isValid=n,l[e]=t,i.commit("checkout/shippingData",l)},resertStore:U,user:_,dontcall:w,comment:T,isCommentToggled:C,commentMaxLength:1e3,userCheckout:v,thanks:h,order:g,redirect:E,redirectForm:k,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"}}}}),fe={class:"cart checkout"},ke=["action"],he=["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=e.createTextVNode(),xe=["innerHTML"],_e=["onClick"],Se=[e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#cart-edit"})],-1),e.createElementVNode("span",null,"Редактировать заказ",-1)],Me={class:"checkout-block"},Le={class:"wrapper"},De=e.createElementVNode("div",{class:"items-title"},"Контактные даные получателя заказа",-1),He={key:0,class:"user-tabs"},qe=e.createTextVNode(" Я новый клиент"),Oe=e.createTextVNode(" Я постоянный клиент"),$e={class:"columns"},Fe={class:"column user-form"},ze={type:"submit",ref:"userSubmitButton",class:"is-hidden"},Re={class:"column user-login user-form"},Pe={class:"column"},je={key:0,class:"social-auth"},Je={class:"socials"},Ue=e.createElementVNode("div",{class:"description"},"Или авторизируйтесь через социальные сети:",-1),Ie={class:"buttons"},Ae=[e.createElementVNode("svg",{class:"icon fb-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-facebook-icon"})],-1),e.createElementVNode("span",null,"Facebook",-1)],Ge=[e.createElementVNode("svg",{class:"icon google-btn"},[e.createElementVNode("use",{"xlink:href":"#logo-google-icon"})],-1),e.createElementVNode("span",null,"Google",-1)],Ke={class:"wrapper"},Qe={class:"rows"},We={class:"item"},Xe={class:"row"},Ye=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Доставка")],-1),Ze={class:"row"},et={class:"info"},tt=["value","onClick"],nt=["src"],lt={key:1,class:"icon"},ot=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],it={key:0,class:"description"},at={class:"value"},rt={key:0,class:"green"},ct=["innerHTML"],st={class:"wrapper"},mt={class:"rows"},ut={class:"item"},dt={class:"row"},pt=e.createElementVNode("div",{class:"info"},[e.createElementVNode("div",{class:"items-title mb-1"},"Оплата")],-1),vt={class:"row no-icon"},ft={class:"info"},kt=["value","onClick"],ht={key:0,class:"description"},gt={key:0,class:"value"},Et=["innerHTML"],Vt={class:"column is-4"},Nt={class:"checkout-block summary"},yt=e.createElementVNode("div",{class:"items-title"},"Итого",-1),bt={class:"rows"},Bt={class:"row"},Ct={class:"info"},wt=["textContent"],Tt=e.createTextVNode(" на сумму"),xt={class:"value"},_t=["innerHTML"],St={key:0,class:"row"},Mt=e.createElementVNode("div",{class:"info"},"Скидка",-1),Lt={class:"value"},Dt=["innerHTML"],Ht={key:1,class:"row"},qt=e.createElementVNode("div",{class:"info"},"Сервисный сбор",-1),Ot={class:"value"},$t=["innerHTML"],Ft={key:2,class:"row"},zt=e.createElementVNode("div",{class:"info"},"Стоимость доставки",-1),Rt={class:"value"},Pt=["innerHTML"],jt={key:1,class:"green"},Jt={class:"row"},Ut=e.createElementVNode("div",{class:"info"},"К оплате",-1),It={class:"value orange"},At=["innerHTML"],Gt={class:"checkbox-wrapper"},Kt=e.createTextVNode(" Мне можно не перезванивать для оформления заказа"),Qt=[e.createElementVNode("span",null,"Добавить комментарий к заказу",-1),e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1)],Wt={class:"user-form"},Xt={key:0,class:"chars-count"},Yt={key:2,class:"checkout-block thanks"},Zt={class:"title"},en=e.createTextVNode(" Заказ "),tn=e.createTextVNode(" успешно создан! "),nn={class:"columns"},ln={key:0,class:"column is-6"},on=e.createElementVNode("div",{class:"subtitle"},"Перейдите к оплате для завершения покупки",-1),an={key:1,class:"column is-6"},rn={class:"column is-6"},cn={key:0,class:"info-wrapper"},sn=e.createElementVNode("div",{class:"title"},"Доставка",-1),mn={class:"columns"},un=["innerHTML"],dn=["innerHTML"],pn={key:1,class:"info-wrapper"},vn=e.createElementVNode("div",{class:"title"},"Оплата",-1),fn={class:"columns"},kn=["innerHTML"],hn=["innerHTML"],gn={key:3,class:"checkout-block empty"},En=e.createElementVNode("div",{class:"title"},"В корзине пока что нет товаров",-1),Vn={class:"message"},Nn=e.createTextVNode("Посмотрите предложения на "),yn=["href"],bn=e.createTextVNode(","),Bn=e.createElementVNode("br",null,null,-1),Cn=e.createTextVNode("воспользуйтесь каталогом или поиском"),wn=["href"];ve.render=function(t,n,l,o,i,a){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,l){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:n,value:t,key:l},null,8,he)})),128))],8,ke)):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),Te,e.createElementVNode("span",{innerHTML:"на сумму "+t.$filters.price(t.total)},null,8,xe)])]),(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},Se,8,_e)]})),_: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",Me,[e.createElementVNode("div",Le,[De,t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",He,[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]]),qe]),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]]),Oe])])),e.createElementVNode("div",$e,[e.withDirectives(e.createElementVNode("div",Fe,[e.createVNode(s,{schemaRowClasses:"field",schema:t.userSchema,"validation-schema":t.userValidation},{afterForm:e.withCtx((function(){return[e.createElementVNode("button",ze,null,512)]})),_:1},8,["schema","validation-schema"])],512),[[e.vShow,"new"==t.userType]]),e.withDirectives(e.createElementVNode("div",Re,[e.createVNode(m,{"login-callback":t.loginCallback},null,8,["login-callback"])],512),[[e.vShow,"login"==t.userType]]),e.createElementVNode("div",Pe,[t.auth?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",je,[e.createElementVNode("div",Je,[Ue,e.createElementVNode("div",Ie,[e.createElementVNode("a",{class:"button",onClick:n[3]||(n[3]=function(){return t.facebook&&t.facebook.apply(t,arguments)})},Ae),e.createElementVNode("a",{class:"button",onClick:n[4]||(n[4]=function(){return t.google&&t.google.apply(t,arguments)})},Ge)])])]))])])]),e.createElementVNode("div",Ke,[e.createElementVNode("div",Qe,[e.createElementVNode("div",We,[e.createElementVNode("div",Xe,[Ye,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.shippingTypesRestricted,(function(l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":l.restricted}]),key:l.id},[e.createElementVNode("div",Ze,[e.createElementVNode("div",et,[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:l.id,onClick:function(e){return t.toggleShippingRadio(l.id)}},null,8,tt),[[e.vModelRadio,t.shipping]]),l.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:l.icon},null,8,nt)):(e.openBlock(),e.createElementBlock("svg",lt,ot)),e.createElementVNode("span",null,e.toDisplayString(l.name),1)]),l.description?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(l.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",at,[!l.amount&&l.price_label?(e.openBlock(),e.createElementBlock("span",rt,e.toDisplayString(l.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==l.type?l.amount+"%":t.$filters.price(l.amount)},null,8,ct))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:l},null,8,["commit","data","item"])),[[e.vShow,l.component&&l.id==t.shipping]])],2)})),128))])]),e.createElementVNode("div",st,[e.createElementVNode("div",mt,[e.createElementVNode("div",ut,[e.createElementVNode("div",dt,[pt,e.createCommentVNode("v-if",!0)])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.paymentMethodsRestricted,(function(l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":l.restricted}]),key:l.id},[e.createElementVNode("div",vt,[e.createElementVNode("div",ft,[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:l.id,onClick:function(e){return t.togglePaymentRadio(l.id)}},null,8,kt),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(l.name),1)]),l.description?(e.openBlock(),e.createElementBlock("div",ht,e.toDisplayString(l.description),1)):e.createCommentVNode("v-if",!0)]),l.amount?(e.openBlock(),e.createElementBlock("div",gt,[e.createElementVNode("span",{innerHTML:"percent"==l.type?l.amount+"%":t.$filters.price(l.amount)},null,8,Et)])):e.createCommentVNode("v-if",!0)])],2)})),128))])])])]),e.createElementVNode("div",Vt,[e.createElementVNode("div",Nt,[yt,e.createElementVNode("div",bt,[e.createElementVNode("div",Bt,[e.createElementVNode("div",Ct,[e.createElementVNode("span",{textContent:e.toDisplayString(t.pluralize(t.quantity,t.__("shop.pluralize.products")))},null,8,wt),Tt]),e.createElementVNode("div",xt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total)},null,8,_t)])]),t.discount?(e.openBlock(),e.createElementBlock("div",St,[Mt,e.createElementVNode("div",Lt,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.discount)},null,8,Dt)])])):e.createCommentVNode("v-if",!0),t.fee>0?(e.openBlock(),e.createElementBlock("div",Ht,[qt,e.createElementVNode("div",Ot,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.fee)},null,8,$t)])])):e.createCommentVNode("v-if",!0),t.shipping?(e.openBlock(),e.createElementBlock("div",Ft,[zt,e.createElementVNode("div",Rt,[t.shippingPrice>0?(e.openBlock(),e.createElementBlock("span",{key:0,innerHTML:t.$filters.price(t.shippingPrice)},null,8,Pt)):t.shippingSelected&&t.shippingSelected.price_label?(e.openBlock(),e.createElementBlock("span",jt,e.toDisplayString(t.shippingSelected.price_label),1)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",Jt,[Ut,e.createElementVNode("div",It,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.total+t.fee+t.shippingPrice)},null,8,At)])])]),e.createElementVNode("div",Gt,[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]]),Kt])]),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})},Qt),e.createElementVNode("div",Wt,[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",Xt,e.toDisplayString(t.commentMaxLength-t.comment.length),1)):e.createCommentVNode("v-if",!0)])],2)])])])])):t.thanks&&t.order?(e.openBlock(),e.createElementBlock("div",Yt,[e.createElementVNode("div",Zt,[en,e.createElementVNode("span",null,"№"+e.toDisplayString(t.order.id),1),tn]),e.createElementVNode("div",nn,[t.redirect.url?(e.openBlock(),e.createElementBlock("div",ln,[on,e.createElementVNode("button",{class:"button is-payment",onClick:n[14]||(n[14]=function(e){return t.redirectForm.submit()})},"Перейти к оплате")])):(e.openBlock(),e.createElementBlock("div",an,[e.createElementVNode("button",{class:"button is-orange",onClick:n[15]||(n[15]=function(){return t.home&&t.home.apply(t,arguments)})},"Продолжить покупки")])),e.createElementVNode("div",rn,[t.order.shipping[0]?(e.openBlock(),e.createElementBlock("div",cn,[sn,e.createElementVNode("div",mn,[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,dn)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0),t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",pn,[vn,e.createElementVNode("div",fn,[t.order.payment[0]?(e.openBlock(),e.createElementBlock("div",{key:0,class:"column is-6",innerHTML:t.order.payment[0]},null,8,kn)):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",gn,[En,e.createElementVNode("div",Vn,[Nn,e.createElementVNode("a",{href:t.$env.locale.url?t.$env.locale.url:"/"},"главной странице",8,yn),bn,Bn,Cn]),e.createElementVNode("a",{class:"button continue",href:t.$env.locale.url?t.$env.locale.url:"/"},"Продолжить покупки",8,wn)]))])},module.exports=ve;
|
|
1
|
+
"use strict";var e=require("vue"),t=require("@perevorot/shop/dist/helpers"),n=require("vuex"),l=require("formvuelate"),o=require("@formvuelate/plugin-vee-validate"),i=require("@perevorot/shop/dist/forms/FormText"),a=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 l=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,l.get?l:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var m=c(o),u=c(i),d=s(a),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)],k={class:"column name"},h={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"},le={class:"column is-narrow"},oe=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),ie=["href"],ae=["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,l,o,i,a){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["columns is-multiline shop-cart-item",{"is-bundle":t.item.attributes.bundle}])},[t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",v,f)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",k,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",h,[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,l){return e.openBlock(),e.createElementBlock("div",{key:l,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",le,[oe,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,ae)):(e.openBlock(),e.createElementBlock("svg",re,ce))],2)],8,ie)]),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=l.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 o=r.useToast(),i=n.useStore(),a=e.ref(!1),c=e.computed((function(){return i.getters["cart/quantity"]})),s=e.computed((function(){return i.getters["cart/items"]})),m=e.computed((function(){return i.getters["cart/total"]})),p=e.computed((function(){return i.getters["auth/is"]})),v=e.computed((function(){return i.getters["checkout/user"]})),f=e.ref(!0),k=e.ref(null),h=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 i.getters["checkout/shippingData"]})),C=e.ref(!1),w=e.computed({get:function(){return i.getters["checkout/dontcall"]},set:function(e){i.commit("checkout/dontcall",e)}}),T=e.computed({get:function(){var e=i.getters["checkout/comment"];return e&&(C.value=!0),e},set:function(e){i.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,i.commit("checkout/user",n)}})},_=e.ref({last_name:x("last_name"),name:x("name"),email:x("email"),phone:x("phone")});i.dispatch("auth/me",{finally:function(){}});var S=e.computed({get:function(){return i.getters["checkout/shipping"]},set:function(e){i.commit("checkout/shipping",e)}}),M=e.computed({get:function(){return i.getters["checkout/payment"]},set:function(e){i.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 l=e.find((function(e){return e.id==t}));l&&(n="sum"==l.type?l.amount:Math.round(m.value*l.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,l=e.restrictions;l.price_min&&l.price_max?(n=m.value>=l.price_min&&m.value<=l.price_max,e.restrictedForce=!n):l.price_min?(n=m.value>=l.price_min,e.restrictedForce=!n):l.price_max&&(n=m.value<=l.price_max,e.restrictedForce=!n),n&&S.value&&l.shipping_type&&l.shipping_type.length&&(n=-1!==l.shipping_type.indexOf(S.value)),n&&M.value&&l.payment_method&&l.payment_method.length&&(n=-1!==l.payment_method.indexOf(M.value)),n&&l.categories&&l.categories.length&&(n=!F.value.filter((function(e){return!l.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&&i.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"}});l.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(){i.commit("auth/modal",null)}));var U=function(){i.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:a,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};a.value=!0,$http.post(window.location.href,n).then((function(e){e.data.redirect&&(E.value={url:e.data.redirect.url,data:e.data.redirect.data}),h.value=!0,g.value=e.data.order,U()})).catch((function(e){o("Ошибка сохранения заказа",{type:"error"}),console.error(e)})).finally((function(){a.value=!1}))}else o("Выберите вид оплаты",{type:"error"});else o("Заполните все поля для доставки: «"+L.value.name+"»",{type:"error"});else o("Выберите способ доставки",{type:"error"});else y.value="new",b.value.click(),o("Заполните данные получателя заказа",{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 l=JSON.parse(JSON.stringify(B.value));t.isValid=n,l[e]=t,i.commit("checkout/shippingData",l)},resertStore:U,user:_,dontcall:w,comment:T,isCommentToggled:C,commentMaxLength:1e3,userCheckout:v,thanks:h,order:g,redirect:E,redirectForm:k,home:function(){window.location.href=$env.locale.url?$env.locale.url:"/"}}}}),fe={class:"cart checkout"},ke=["action"],he=["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"},lt=[e.createElementVNode("use",{"xlink:href":"#shipping"},null,-1)],ot={key:0,class:"description"},it={class:"value"},at={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"],kt={key:0,class:"description"},ht={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"},ln=e.createElementVNode("div",{class:"subtitle"},"Перейдите к оплате для завершения покупки",-1),on={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"],kn=["innerHTML"],hn={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,l,o,i,a){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,l){return e.openBlock(),e.createElementBlock("input",{type:"hidden",name:n,value:t,key:l},null,8,he)})),128))],8,ke)):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(l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":l.restricted}]),key:l.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:l.id,onClick:function(e){return t.toggleShippingRadio(l.id)}},null,8,et),[[e.vModelRadio,t.shipping]]),l.icon?(e.openBlock(),e.createElementBlock("img",{key:0,class:"icon",src:l.icon},null,8,tt)):(e.openBlock(),e.createElementBlock("svg",nt,lt)),e.createElementVNode("span",null,e.toDisplayString(l.name),1)]),l.description?(e.openBlock(),e.createElementBlock("div",ot,e.toDisplayString(l.description),1)):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",it,[!l.amount&&l.price_label?(e.openBlock(),e.createElementBlock("span",at,e.toDisplayString(l.price_label),1)):(e.openBlock(),e.createElementBlock("span",{key:1,innerHTML:"percent"==l.type?l.amount+"%":t.$filters.price(l.amount)},null,8,rt))])]),e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.component),{commit:t.shippingStoreData,data:t.shippingComponentData,item:l},null,8,["commit","data","item"])),[[e.vShow,l.component&&l.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(l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["item",{"is-disabled":l.restricted}]),key:l.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:l.id,onClick:function(e){return t.togglePaymentRadio(l.id)}},null,8,ft),[[e.vModelRadio,t.payment]]),e.createElementVNode("span",null,e.toDisplayString(l.name),1)]),l.description?(e.openBlock(),e.createElementBlock("div",kt,e.toDisplayString(l.description),1)):e.createCommentVNode("v-if",!0)]),l.amount?(e.openBlock(),e.createElementBlock("div",ht,[e.createElementVNode("span",{innerHTML:"percent"==l.type?l.amount+"%":t.$filters.price(l.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,[ln,e.createElementVNode("button",{class:"button is-payment",onClick:n[14]||(n[14]=function(e){return t.redirectForm.submit()})},"Перейти к оплате")])):(e.openBlock(),e.createElementBlock("div",on,[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,kn)):e.createCommentVNode("v-if",!0)])])):e.createCommentVNode("v-if",!0)])])])):(e.openBlock(),e.createElementBlock("div",hn,[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=28a2ab9a&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\">Ваш заказ <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"'на сумму ' + $filters.price(total)\"></span></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\"></use>\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\"></use>\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\"></use>\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\"><use xlink:href=\"#shipping\" /></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\"><span v-html=\"$filters.price(total)\"></span></div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">Скидка</div>\n <div class=\"value\"><span v-html=\"$filters.price(discount)\"></span></div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">Сервисный сбор</div>\n <div class=\"value\"><span v-html=\"$filters.price(fee)\"></span></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\"><span v-html=\"$filters.price(total + fee + shippingPrice)\"></span></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><svg><use xlink:href=\"#arrow-down\" /></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 Заказ <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\">Посмотрите предложения на <a :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</a>,<br />воспользуйтесь каталогом или поиском</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 }\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\">Ваш заказ <span class=\"ml-3\" v-text=\"pluralize(quantity, __('shop.pluralize.products'))\"></span> <span v-html=\"'на сумму ' + $filters.price(total)\"></span></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\"></use>\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\"></use>\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\"></use>\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\"><use xlink:href=\"#shipping\" /></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\"><span v-html=\"$filters.price(total)\"></span></div>\n </div>\n <div class=\"row\" v-if=\"discount\">\n <div class=\"info\">Скидка</div>\n <div class=\"value\"><span v-html=\"$filters.price(discount)\"></span></div>\n </div>\n <div class=\"row\" v-if=\"fee > 0\">\n <div class=\"info\">Сервисный сбор</div>\n <div class=\"value\"><span v-html=\"$filters.price(fee)\"></span></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\"><span v-html=\"$filters.price(total + fee + shippingPrice)\"></span></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><svg><use xlink:href=\"#arrow-down\" /></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 Заказ <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\">Посмотрите предложения на <a :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</a>,<br />воспользуйтесь каталогом или поиском</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 }\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","placeholder","useSchemaForm","userValidation","yup","object","shape","string","trim","required","matches","addEventListener","resertStore","facebook","$ziggy","provider","google","loginCallback","pluralize","checkout","isValid","valid","url","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_25","schemaRowClasses","schema","afterForm","_hoisted_32","_hoisted_33","_hoisted_40","_hoisted_41","icon","_hoisted_50","description","_hoisted_53","price_label","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_hoisted_63","_hoisted_64","_hoisted_66","_hoisted_67","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_74","_hoisted_77","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_87","_hoisted_88","_hoisted_89","_hoisted_91","_hoisted_92","_hoisted_93","_hoisted_94","_hoisted_96","onMouseenter","_hoisted_101","_hoisted_102","_hoisted_103","_hoisted_104","_hoisted_107","_hoisted_108","_hoisted_109","submit","_hoisted_110","_hoisted_111","_hoisted_112","_hoisted_113","_hoisted_114","_hoisted_117","_hoisted_118","_hoisted_119","_hoisted_122","_hoisted_123","_hoisted_124","_hoisted_128"],"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=51f9e304&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 :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</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 }\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 :href=\"$env.locale.url ? $env.locale.url : '/'\">главной странице</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 }\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","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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"}
|
package/dist/forms/FormText.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=r(e),
|
|
1
|
+
"use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=r(e),l={props:{modelValue:{required:!0},required:{type:Boolean,default:!1},label:{type:String,required:!0},config:{type:Object,default:function(){return{type:"text"}}},readOnly:{type:Boolean,default:!1},uuid:{type:Number,default:0},validation:{type:Object,default:function(){return{}}},type:{type:String,default:"text"},mask:{type:String,default:""},model:{type:String,default:""},placeholder:{type:String,default:""},store:{type:String,default:""},description:{type:String,default:""},validations:{type:Object,default:function(){return{}}}},data:function(){return{ls:null}},computed:{labelHtml:function(){var e=this.validations&&this.validations.required?' <span class="asterisk">*</span>':"";return this.label+e}},mounted:function(){var e=this;if(this.ls=new i.default({isCompression:!1}),this.store&&this.model&&!this.modelValue){var t=this.ls.get("forms");t||(t={}),t[this.store]||(t[this.store]={}),t[this.store][this.model]&&this.update(t[this.store][this.model])}"phone"==this.type&&this.$refs.input.addEventListener("paste",(function(t){var r=t.clipboardData.getData("text");"+38"!=(r=r.replace(/[^0-9]/g,"")).substr(0,3)&&"380"!=r.substr(0,3)||(t.preventDefault(),t.stopPropagation(),r=r.substr("380"==r.substr(0,3)?2:3),e.$refs.input.value="("+r.slice(0,3)+") "+r.slice(3,6)+"-"+r.slice(6,8)+"-"+r.slice(8,10))}))},methods:{update:function(e){if(this.store&&this.model){var t=this.ls.get("forms");t?t[this.store]||(t[this.store]={}):(t={})[this.store]={},t[this.store][this.model]=e,this.ls.set("forms",t)}this.$emit("update:modelValue",e)}}},s={class:"control"},a=["type","value","required","id","disabled","placeholder"],n=["for","innerHTML"],o=["innerHTML"],u=["innerHTML"];l.render=function(e,r,i,l,d,p){var c=t.resolveDirective("maska");return t.openBlock(),t.createElementBlock("div",null,[t.createElementVNode("div",s,[t.withDirectives(t.createElementVNode("input",{class:t.normalizeClass(["input",{"is-danger":i.validation.errorMessage}]),type:i.type,value:i.modelValue,required:i.required,id:i.uuid,disabled:i.readOnly,autocomplete:"chrome-off",onInput:r[0]||(r[0]=function(e){return p.update(e.target.value)}),placeholder:i.placeholder?i.placeholder:" ",ref:"input"},null,42,a),[[c,i.mask]]),t.createElementVNode("label",{class:"label",for:i.uuid,innerHTML:p.labelHtml},null,8,n)]),i.description?(t.openBlock(),t.createElementBlock("p",{key:0,class:"description",innerHTML:i.description},null,8,o)):t.createCommentVNode("v-if",!0),i.validation.errorMessage?(t.openBlock(),t.createElementBlock("p",{key:1,class:"help is-danger",innerHTML:i.validation.errorMessage},null,8,u)):t.createCommentVNode("v-if",!0)])},module.exports=l;
|
|
2
2
|
//# sourceMappingURL=FormText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormText.js","sources":["../../src/forms/FormText.vue","../../src/forms/FormText.vue?vue&type=template&id=de157bf0&lang.js"],"sourcesContent":["<template>\n <div>\n <div class=\"control\">\n <input\n class=\"input\"\n :type=\"type\"\n :value=\"modelValue\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage,\n }\"\n v-maska=\"mask\"\n placeholder=\" \"\n ref=\"input\"\n />\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p\n class=\"help is-danger\"\n v-if=\"validation.errorMessage\"\n v-html=\"validation.errorMessage\"\n ></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from \"secure-ls\";\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false,\n },\n label: {\n type: String,\n required: true,\n },\n config: {\n type: Object,\n default: () => ({ type: \"text\" }),\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n uuid: {\n type: Number,\n default: 0,\n },\n validation: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: \"text\",\n },\n mask: {\n type: String,\n default: \"\",\n },\n model: {\n type: String,\n default: \"\",\n },\n placeholder: {\n type: String,\n default: \"\",\n },\n store: {\n type: String,\n default: \"\",\n },\n description: {\n type: String,\n default: \"\",\n },\n validations: {\n type: Object,\n default: () => ({}),\n },\n },\n data() {\n return {\n ls: null,\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml =\n this.validations && this.validations.required\n ? ' <span class=\"asterisk\">*</span>'\n : \"\";\n return this.label + requiredHtml;\n },\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false,\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n\n if (this.type == \"phone\") {\n this.$refs.input.addEventListener(\"paste\", (event) => {\n let pastedText = event.clipboardData.getData(\"text\");\n pastedText = pastedText.replace(/[^0-9]/g, '');\n\n if (\n pastedText.substr(0, 3) == \"+38\" ||\n pastedText.substr(0, 3) == \"380\"\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n pastedText = pastedText.substr(\n pastedText.substr(0, 3) == \"380\" ? 2 : 3\n );\n\n this.$refs.input.value =\n \"(\" +\n pastedText.slice(0, 3) +\n \") \" +\n pastedText.slice(3, 6) +\n \"-\" +\n pastedText.slice(6, 8) +\n \"-\" +\n pastedText.slice(8, 10);\n }\n });\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set(\"forms\", forms);\n }\n\n this.$emit(\"update:modelValue\", value);\n },\n },\n};\n</script>\n","<template>\n <div>\n <div class=\"control\">\n <input\n class=\"input\"\n :type=\"type\"\n :value=\"modelValue\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage,\n }\"\n v-maska=\"mask\"\n placeholder=\" \"\n ref=\"input\"\n />\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p\n class=\"help is-danger\"\n v-if=\"validation.errorMessage\"\n v-html=\"validation.errorMessage\"\n ></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from \"secure-ls\";\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false,\n },\n label: {\n type: String,\n required: true,\n },\n config: {\n type: Object,\n default: () => ({ type: \"text\" }),\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n uuid: {\n type: Number,\n default: 0,\n },\n validation: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: \"text\",\n },\n mask: {\n type: String,\n default: \"\",\n },\n model: {\n type: String,\n default: \"\",\n },\n placeholder: {\n type: String,\n default: \"\",\n },\n store: {\n type: String,\n default: \"\",\n },\n description: {\n type: String,\n default: \"\",\n },\n validations: {\n type: Object,\n default: () => ({}),\n },\n },\n data() {\n return {\n ls: null,\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml =\n this.validations && this.validations.required\n ? ' <span class=\"asterisk\">*</span>'\n : \"\";\n return this.label + requiredHtml;\n },\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false,\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n\n if (this.type == \"phone\") {\n this.$refs.input.addEventListener(\"paste\", (event) => {\n let pastedText = event.clipboardData.getData(\"text\");\n pastedText = pastedText.replace(/[^0-9]/g, '');\n\n if (\n pastedText.substr(0, 3) == \"+38\" ||\n pastedText.substr(0, 3) == \"380\"\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n pastedText = pastedText.substr(\n pastedText.substr(0, 3) == \"380\" ? 2 : 3\n );\n\n this.$refs.input.value =\n \"(\" +\n pastedText.slice(0, 3) +\n \") \" +\n pastedText.slice(3, 6) +\n \"-\" +\n pastedText.slice(6, 8) +\n \"-\" +\n pastedText.slice(8, 10);\n }\n });\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set(\"forms\", forms);\n }\n\n this.$emit(\"update:modelValue\", value);\n },\n },\n};\n</script>\n"],"names":["props","modelValue","required","type","Boolean","label","String","config","Object","readOnly","uuid","Number","validation","mask","model","placeholder","store","description","validations","data","ls","computed","labelHtml","requiredHtml","this","mounted","SecureLS","isCompression","forms","get","update","$refs","input","addEventListener","event","pastedText","clipboardData","getData","replace","substr","preventDefault","stopPropagation","_this","value","slice","methods","set","$emit","_createElementBlock","_createElementVNode","_hoisted_1","$props","id","disabled","autocomplete","onInput","$options","$event","target","ref","innerHTML","errorMessage"],"mappings":"8IAiCe,CACXA,MAAO,CACHC,WAAY,CAAEC,UAAU,GACxBA,SAAU,CACNC,KAAMC,iBACG,GAEbC,MAAO,CACHF,KAAMG,OACNJ,UAAU,GAEdK,OAAQ,CACJJ,KAAMK,eACG,iBAAO,CAAEL,KAAM,UAE5BM,SAAU,CACNN,KAAMC,iBACG,GAEbM,KAAM,CACFP,KAAMQ,eACG,GAEbC,WAAY,CACRT,KAAMK,eACG,iBAAO,KAEpBL,KAAM,CACFA,KAAMG,eACG,QAEbO,KAAM,CACFV,KAAMG,eACG,IAEbQ,MAAO,CACHX,KAAMG,eACG,IAEbS,YAAa,CACTZ,KAAMG,eACG,IAEbU,MAAO,CACHb,KAAMG,eACG,IAEbW,YAAa,CACTd,KAAMG,eACG,IAEbY,YAAa,CACTf,KAAMK,eACG,iBAAO,MAGxBW,sBACW,CACHC,GAAI,OAGZC,SAAU,CACNC,yBACUC,EACFC,KAAKN,aAAeM,KAAKN,YAAYhB,SAC/B,mCACA,UACHsB,KAAKnB,MAAQkB,IAG5BE,sCACSL,GAAK,IAAIM,UAAS,CACnBC,eAAe,IAGfH,KAAKR,OAASQ,KAAKV,QAAUU,KAAKvB,WAAY,KAC1C2B,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,IACDA,EAAQ,IAGPA,EAAMJ,KAAKR,SACZY,EAAMJ,KAAKR,OAAS,IAGpBY,EAAMJ,KAAKR,OAAOQ,KAAKV,aAClBgB,OAAOF,EAAMJ,KAAKR,OAAOQ,KAAKV,QAI1B,SAAbU,KAAKrB,WACA4B,MAAMC,MAAMC,iBAAiB,SAAS,SAACC,OACpCC,EAAaD,EAAME,cAAcC,QAAQ,QAId,QAH/BF,EAAaA,EAAWG,QAAQ,UAAW,KAG5BC,OAAO,EAAG,IACM,OAA3BJ,EAAWI,OAAO,EAAG,KAErBL,EAAMM,iBACNN,EAAMO,kBAENN,EAAaA,EAAWI,OACO,OAA3BJ,EAAWI,OAAO,EAAG,GAAc,EAAI,GAG3CG,EAAKX,MAAMC,MAAMW,MACb,IACAR,EAAWS,MAAM,EAAG,GACpB,KACAT,EAAWS,MAAM,EAAG,GACpB,IACAT,EAAWS,MAAM,EAAG,GACpB,IACAT,EAAWS,MAAM,EAAG,SAKxCC,QAAS,CACLf,gBAAOa,MACCnB,KAAKR,OAASQ,KAAKV,MAAO,KACtBc,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,EAGOA,EAAMJ,KAAKR,SACnBY,EAAMJ,KAAKR,OAAS,KAHpBY,EAAQ,IACFJ,KAAKR,OAAS,GAKxBY,EAAMJ,KAAKR,OAAOQ,KAAKV,OAAS6B,OAE3BvB,GAAG0B,IAAI,QAASlB,QAGpBmB,MAAM,oBAAqBJ,eCxKzB,qMADfK,iCACIC,2BAAAC,oBACID,sDACU,kDACL9C,KAAMgD,OACNR,MAAOQ,aACPjD,SAAUiD,WACVC,GAAID,OACJE,SAAUF,WACXG,aAAa,aACZC,uCAAOC,SAAOC,EAAOC,OAAOf,SAK7B5B,YAAY,IACZ4C,IAAI,wBAFKR,UAIbF,oCAAa,YAAcE,OAAMS,UAAQJ,yBAEhBL,6BAA7BH,sCAAS,cAAiCY,UAAQT,0DAGxCA,aAAWU,4BAFrBb,sCACU,iBAENY,UAAQT,aAAWU"}
|
|
1
|
+
{"version":3,"file":"FormText.js","sources":["../../src/forms/FormText.vue","../../src/forms/FormText.vue?vue&type=template&id=f9136ba2&lang.js"],"sourcesContent":["<template>\n <div>\n <div class=\"control\">\n <input\n class=\"input\"\n :type=\"type\"\n :value=\"modelValue\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage,\n }\"\n v-maska=\"mask\"\n :placeholder=\"placeholder ? placeholder : ' '\"\n ref=\"input\"\n />\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p class=\"help is-danger\" v-if=\"validation.errorMessage\" v-html=\"validation.errorMessage\"></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from \"secure-ls\";\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false,\n },\n label: {\n type: String,\n required: true,\n },\n config: {\n type: Object,\n default: () => ({ type: \"text\" }),\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n uuid: {\n type: Number,\n default: 0,\n },\n validation: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: \"text\",\n },\n mask: {\n type: String,\n default: \"\",\n },\n model: {\n type: String,\n default: \"\",\n },\n placeholder: {\n type: String,\n default: \"\",\n },\n store: {\n type: String,\n default: \"\",\n },\n description: {\n type: String,\n default: \"\",\n },\n validations: {\n type: Object,\n default: () => ({}),\n },\n },\n data() {\n return {\n ls: null,\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml =\n this.validations && this.validations.required\n ? ' <span class=\"asterisk\">*</span>'\n : \"\";\n return this.label + requiredHtml;\n },\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false,\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n\n if (this.type == \"phone\") {\n this.$refs.input.addEventListener(\"paste\", (event) => {\n let pastedText = event.clipboardData.getData(\"text\");\n pastedText = pastedText.replace(/[^0-9]/g, '');\n\n if (\n pastedText.substr(0, 3) == \"+38\" ||\n pastedText.substr(0, 3) == \"380\"\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n pastedText = pastedText.substr(\n pastedText.substr(0, 3) == \"380\" ? 2 : 3\n );\n\n this.$refs.input.value =\n \"(\" +\n pastedText.slice(0, 3) +\n \") \" +\n pastedText.slice(3, 6) +\n \"-\" +\n pastedText.slice(6, 8) +\n \"-\" +\n pastedText.slice(8, 10);\n }\n });\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set(\"forms\", forms);\n }\n\n this.$emit(\"update:modelValue\", value);\n },\n },\n};\n</script>\n","<template>\n <div>\n <div class=\"control\">\n <input\n class=\"input\"\n :type=\"type\"\n :value=\"modelValue\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage,\n }\"\n v-maska=\"mask\"\n :placeholder=\"placeholder ? placeholder : ' '\"\n ref=\"input\"\n />\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p class=\"help is-danger\" v-if=\"validation.errorMessage\" v-html=\"validation.errorMessage\"></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from \"secure-ls\";\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false,\n },\n label: {\n type: String,\n required: true,\n },\n config: {\n type: Object,\n default: () => ({ type: \"text\" }),\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n uuid: {\n type: Number,\n default: 0,\n },\n validation: {\n type: Object,\n default: () => ({}),\n },\n type: {\n type: String,\n default: \"text\",\n },\n mask: {\n type: String,\n default: \"\",\n },\n model: {\n type: String,\n default: \"\",\n },\n placeholder: {\n type: String,\n default: \"\",\n },\n store: {\n type: String,\n default: \"\",\n },\n description: {\n type: String,\n default: \"\",\n },\n validations: {\n type: Object,\n default: () => ({}),\n },\n },\n data() {\n return {\n ls: null,\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml =\n this.validations && this.validations.required\n ? ' <span class=\"asterisk\">*</span>'\n : \"\";\n return this.label + requiredHtml;\n },\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false,\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n\n if (this.type == \"phone\") {\n this.$refs.input.addEventListener(\"paste\", (event) => {\n let pastedText = event.clipboardData.getData(\"text\");\n pastedText = pastedText.replace(/[^0-9]/g, '');\n\n if (\n pastedText.substr(0, 3) == \"+38\" ||\n pastedText.substr(0, 3) == \"380\"\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n pastedText = pastedText.substr(\n pastedText.substr(0, 3) == \"380\" ? 2 : 3\n );\n\n this.$refs.input.value =\n \"(\" +\n pastedText.slice(0, 3) +\n \") \" +\n pastedText.slice(3, 6) +\n \"-\" +\n pastedText.slice(6, 8) +\n \"-\" +\n pastedText.slice(8, 10);\n }\n });\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get(\"forms\");\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set(\"forms\", forms);\n }\n\n this.$emit(\"update:modelValue\", value);\n },\n },\n};\n</script>\n"],"names":["props","modelValue","required","type","Boolean","label","String","config","Object","readOnly","uuid","Number","validation","mask","model","placeholder","store","description","validations","data","ls","computed","labelHtml","requiredHtml","this","mounted","SecureLS","isCompression","forms","get","update","$refs","input","addEventListener","event","pastedText","clipboardData","getData","replace","substr","preventDefault","stopPropagation","_this","value","slice","methods","set","$emit","_createElementBlock","_createElementVNode","_hoisted_1","$props","id","disabled","autocomplete","onInput","$options","$event","target","ref","innerHTML","errorMessage"],"mappings":"8IA6Be,CACXA,MAAO,CACHC,WAAY,CAAEC,UAAU,GACxBA,SAAU,CACNC,KAAMC,iBACG,GAEbC,MAAO,CACHF,KAAMG,OACNJ,UAAU,GAEdK,OAAQ,CACJJ,KAAMK,eACG,iBAAO,CAAEL,KAAM,UAE5BM,SAAU,CACNN,KAAMC,iBACG,GAEbM,KAAM,CACFP,KAAMQ,eACG,GAEbC,WAAY,CACRT,KAAMK,eACG,iBAAO,KAEpBL,KAAM,CACFA,KAAMG,eACG,QAEbO,KAAM,CACFV,KAAMG,eACG,IAEbQ,MAAO,CACHX,KAAMG,eACG,IAEbS,YAAa,CACTZ,KAAMG,eACG,IAEbU,MAAO,CACHb,KAAMG,eACG,IAEbW,YAAa,CACTd,KAAMG,eACG,IAEbY,YAAa,CACTf,KAAMK,eACG,iBAAO,MAGxBW,sBACW,CACHC,GAAI,OAGZC,SAAU,CACNC,yBACUC,EACFC,KAAKN,aAAeM,KAAKN,YAAYhB,SAC/B,mCACA,UACHsB,KAAKnB,MAAQkB,IAG5BE,sCACSL,GAAK,IAAIM,UAAS,CACnBC,eAAe,IAGfH,KAAKR,OAASQ,KAAKV,QAAUU,KAAKvB,WAAY,KAC1C2B,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,IACDA,EAAQ,IAGPA,EAAMJ,KAAKR,SACZY,EAAMJ,KAAKR,OAAS,IAGpBY,EAAMJ,KAAKR,OAAOQ,KAAKV,aAClBgB,OAAOF,EAAMJ,KAAKR,OAAOQ,KAAKV,QAI1B,SAAbU,KAAKrB,WACA4B,MAAMC,MAAMC,iBAAiB,SAAS,SAACC,OACpCC,EAAaD,EAAME,cAAcC,QAAQ,QAId,QAH/BF,EAAaA,EAAWG,QAAQ,UAAW,KAG5BC,OAAO,EAAG,IACM,OAA3BJ,EAAWI,OAAO,EAAG,KAErBL,EAAMM,iBACNN,EAAMO,kBAENN,EAAaA,EAAWI,OACO,OAA3BJ,EAAWI,OAAO,EAAG,GAAc,EAAI,GAG3CG,EAAKX,MAAMC,MAAMW,MACb,IACAR,EAAWS,MAAM,EAAG,GACpB,KACAT,EAAWS,MAAM,EAAG,GACpB,IACAT,EAAWS,MAAM,EAAG,GACpB,IACAT,EAAWS,MAAM,EAAG,SAKxCC,QAAS,CACLf,gBAAOa,MACCnB,KAAKR,OAASQ,KAAKV,MAAO,KACtBc,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,EAGOA,EAAMJ,KAAKR,SACnBY,EAAMJ,KAAKR,OAAS,KAHpBY,EAAQ,IACFJ,KAAKR,OAAS,GAKxBY,EAAMJ,KAAKR,OAAOQ,KAAKV,OAAS6B,OAE3BvB,GAAG0B,IAAI,QAASlB,QAGpBmB,MAAM,oBAAqBJ,eCpKzB,mNADfK,iCACIC,2BAAAC,oBACID,sDACU,kDACL9C,KAAMgD,OACNR,MAAOQ,aACPjD,SAAUiD,WACVC,GAAID,OACJE,SAAUF,WACXG,aAAa,aACZC,uCAAOC,SAAOC,EAAOC,OAAOf,SAK5B5B,YAAaoC,cAAcA,kBAC5BQ,IAAI,wBAFKR,UAIbF,oCAAa,YAAcE,OAAMS,UAAQJ,yBAEhBL,6BAA7BH,sCAAS,cAAiCY,UAAQT,0DAClBA,aAAWU,4BAA3Cb,sCAAS,iBAAgDY,UAAQT,aAAWU"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=r(e),i={props:{modelValue:{required:!0},required:{type:Boolean,default:!1},label:{type:String,required:!0},config:{type:Object,default:function(){return{type:"text"}}},readOnly:{type:Boolean,default:!1},uuid:{type:Number,default:0},validation:{type:Object,default:function(){return{}}},model:{type:String,default:""},placeholder:{type:String,default:""},store:{type:String,default:""},description:{type:String,default:""},validations:{type:Object,default:function(){return{}}}},data:function(){return{ls:null}},computed:{labelHtml:function(){var e=this.validations&&this.validations.required?' <span class="asterisk">*</span>':"";return this.label+e}},mounted:function(){if(this.ls=new l.default({isCompression:!1}),this.store&&this.model&&!this.modelValue){var e=this.ls.get("forms");e||(e={}),e[this.store]||(e[this.store]={}),e[this.store][this.model]&&this.update(e[this.store][this.model])}},methods:{update:function(e){if(this.store&&this.model){var t=this.ls.get("forms");t?t[this.store]||(t[this.store]={}):(t={})[this.store]={},t[this.store][this.model]=e,this.ls.set("forms",t)}this.$emit("update:modelValue",e)}}},o={class:"control"},n=["required","id","disabled","placeholder"],a=["for","innerHTML"],s=["innerHTML"],d=["innerHTML"];i.render=function(e,r,l,i,u,c){return t.openBlock(),t.createElementBlock("div",null,[t.createElementVNode("div",o,[t.withDirectives(t.createElementVNode("textarea",{class:t.normalizeClass(["textarea",{"is-danger":l.validation.errorMessage}]),required:l.required,id:l.uuid,disabled:l.readOnly,autocomplete:"chrome-off",onInput:r[0]||(r[0]=function(e){return c.update(e.target.value)}),placeholder:l.placeholder,ref:"input","onUpdate:modelValue":r[1]||(r[1]=function(e){return l.modelValue=e})},null,42,n),[[t.vModelText,l.modelValue]]),t.createElementVNode("label",{class:"label",for:l.uuid,innerHTML:c.labelHtml},null,8,a)]),l.description?(t.openBlock(),t.createElementBlock("p",{key:0,class:"description",innerHTML:l.description},null,8,s)):t.createCommentVNode("v-if",!0),l.validation.errorMessage?(t.openBlock(),t.createElementBlock("p",{key:1,class:"help is-danger",innerHTML:l.validation.errorMessage},null,8,d)):t.createCommentVNode("v-if",!0)])},module.exports=i;
|
|
1
|
+
"use strict";var e=require("secure-ls"),t=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=r(e),i={props:{modelValue:{required:!0},required:{type:Boolean,default:!1},label:{type:String,required:!0},config:{type:Object,default:function(){return{type:"text"}}},readOnly:{type:Boolean,default:!1},uuid:{type:Number,default:0},validation:{type:Object,default:function(){return{}}},model:{type:String,default:""},placeholder:{type:String,default:""},store:{type:String,default:""},description:{type:String,default:""},validations:{type:Object,default:function(){return{}}}},data:function(){return{ls:null}},computed:{labelHtml:function(){var e=this.validations&&this.validations.required?' <span class="asterisk">*</span>':"";return this.label+e}},mounted:function(){if(this.ls=new l.default({isCompression:!1}),this.store&&this.model&&!this.modelValue){var e=this.ls.get("forms");e||(e={}),e[this.store]||(e[this.store]={}),e[this.store][this.model]&&this.update(e[this.store][this.model])}},methods:{update:function(e){if(this.store&&this.model){var t=this.ls.get("forms");t?t[this.store]||(t[this.store]={}):(t={})[this.store]={},t[this.store][this.model]=e,this.ls.set("forms",t)}this.$emit("update:modelValue",e)}}},o={class:"control"},n=["required","id","disabled","placeholder"],a=["for","innerHTML"],s=["innerHTML"],d=["innerHTML"];i.render=function(e,r,l,i,u,c){return t.openBlock(),t.createElementBlock("div",null,[t.createElementVNode("div",o,[t.withDirectives(t.createElementVNode("textarea",{class:t.normalizeClass(["textarea",{"is-danger":l.validation.errorMessage}]),required:l.required,id:l.uuid,disabled:l.readOnly,autocomplete:"chrome-off",onInput:r[0]||(r[0]=function(e){return c.update(e.target.value)}),placeholder:l.placeholder?l.placeholder:" ",ref:"input","onUpdate:modelValue":r[1]||(r[1]=function(e){return l.modelValue=e})},null,42,n),[[t.vModelText,l.modelValue]]),t.createElementVNode("label",{class:"label",for:l.uuid,innerHTML:c.labelHtml},null,8,a)]),l.description?(t.openBlock(),t.createElementBlock("p",{key:0,class:"description",innerHTML:l.description},null,8,s)):t.createCommentVNode("v-if",!0),l.validation.errorMessage?(t.openBlock(),t.createElementBlock("p",{key:1,class:"help is-danger",innerHTML:l.validation.errorMessage},null,8,d)):t.createCommentVNode("v-if",!0)])},module.exports=i;
|
|
2
2
|
//# sourceMappingURL=FormTextarea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormTextarea.js","sources":["../../src/forms/FormTextarea.vue","../../src/forms/FormTextarea.vue?vue&type=template&id=
|
|
1
|
+
{"version":3,"file":"FormTextarea.js","sources":["../../src/forms/FormTextarea.vue","../../src/forms/FormTextarea.vue?vue&type=template&id=7f2032d2&lang.js"],"sourcesContent":["<template>\n <div>\n <div class=\"control\">\n <textarea\n class=\"textarea\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage\n }\"\n :placeholder=\"placeholder ? placeholder : ' '\"\n ref=\"input\"\n v-model=\"modelValue\"\n ></textarea>\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p class=\"help is-danger\" v-if=\"validation.errorMessage\" v-html=\"validation.errorMessage\"></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from 'secure-ls';\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false\n },\n label: {\n type: String,\n required: true\n },\n config: {\n type: Object,\n default: () => ({ type: 'text' })\n },\n readOnly: {\n type: Boolean,\n default: false\n },\n uuid: {\n type: Number,\n default: 0\n },\n validation: {\n type: Object,\n default: () => ({})\n },\n model: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n store: {\n type: String,\n default: ''\n },\n description: {\n type: String,\n default: ''\n },\n validations: {\n type: Object,\n default: () => ({})\n }\n },\n data() {\n return {\n ls: null\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml = this.validations && this.validations.required ? ' <span class=\"asterisk\">*</span>' : '';\n return this.label + requiredHtml;\n }\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get('forms');\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get('forms');\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set('forms', forms);\n }\n\n this.$emit('update:modelValue', value);\n }\n }\n};\n</script>\n","<template>\n <div>\n <div class=\"control\">\n <textarea\n class=\"textarea\"\n :required=\"required\"\n :id=\"uuid\"\n :disabled=\"readOnly\"\n autocomplete=\"chrome-off\"\n @input=\"update($event.target.value)\"\n v-bind:class=\"{\n 'is-danger': validation.errorMessage\n }\"\n :placeholder=\"placeholder ? placeholder : ' '\"\n ref=\"input\"\n v-model=\"modelValue\"\n ></textarea>\n <label class=\"label\" :for=\"uuid\" v-html=\"labelHtml\"></label>\n </div>\n <p class=\"description\" v-if=\"description\" v-html=\"description\"></p>\n <p class=\"help is-danger\" v-if=\"validation.errorMessage\" v-html=\"validation.errorMessage\"></p>\n </div>\n</template>\n\n<script>\nimport SecureLS from 'secure-ls';\n\nexport default {\n props: {\n modelValue: { required: true },\n required: {\n type: Boolean,\n default: false\n },\n label: {\n type: String,\n required: true\n },\n config: {\n type: Object,\n default: () => ({ type: 'text' })\n },\n readOnly: {\n type: Boolean,\n default: false\n },\n uuid: {\n type: Number,\n default: 0\n },\n validation: {\n type: Object,\n default: () => ({})\n },\n model: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n },\n store: {\n type: String,\n default: ''\n },\n description: {\n type: String,\n default: ''\n },\n validations: {\n type: Object,\n default: () => ({})\n }\n },\n data() {\n return {\n ls: null\n };\n },\n computed: {\n labelHtml() {\n const requiredHtml = this.validations && this.validations.required ? ' <span class=\"asterisk\">*</span>' : '';\n return this.label + requiredHtml;\n }\n },\n mounted() {\n this.ls = new SecureLS({\n isCompression: false\n });\n\n if (this.store && this.model && !this.modelValue) {\n let forms = this.ls.get('forms');\n\n if (!forms) {\n forms = {};\n }\n\n if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n if (forms[this.store][this.model]) {\n this.update(forms[this.store][this.model]);\n }\n }\n },\n methods: {\n update(value) {\n if (this.store && this.model) {\n let forms = this.ls.get('forms');\n\n if (!forms) {\n forms = {};\n forms[this.store] = {};\n } else if (!forms[this.store]) {\n forms[this.store] = {};\n }\n\n forms[this.store][this.model] = value;\n\n this.ls.set('forms', forms);\n }\n\n this.$emit('update:modelValue', value);\n }\n }\n};\n</script>\n"],"names":["props","modelValue","required","type","Boolean","label","String","config","Object","readOnly","uuid","Number","validation","model","placeholder","store","description","validations","data","ls","computed","labelHtml","requiredHtml","this","mounted","SecureLS","isCompression","forms","get","update","methods","value","set","$emit","_createElementBlock","_createElementVNode","_hoisted_1","$props","id","disabled","autocomplete","onInput","$options","$event","target","ref","innerHTML","errorMessage"],"mappings":"8IA2Be,CACXA,MAAO,CACHC,WAAY,CAAEC,UAAU,GACxBA,SAAU,CACNC,KAAMC,iBACG,GAEbC,MAAO,CACHF,KAAMG,OACNJ,UAAU,GAEdK,OAAQ,CACJJ,KAAMK,eACG,iBAAO,CAAEL,KAAM,UAE5BM,SAAU,CACNN,KAAMC,iBACG,GAEbM,KAAM,CACFP,KAAMQ,eACG,GAEbC,WAAY,CACRT,KAAMK,eACG,iBAAO,KAEpBK,MAAO,CACHV,KAAMG,eACG,IAEbQ,YAAa,CACTX,KAAMG,eACG,IAEbS,MAAO,CACHZ,KAAMG,eACG,IAEbU,YAAa,CACTb,KAAMG,eACG,IAEbW,YAAa,CACTd,KAAMK,eACG,iBAAO,MAGxBU,sBACW,CACHC,GAAI,OAGZC,SAAU,CACNC,yBACUC,EAAeC,KAAKN,aAAeM,KAAKN,YAAYf,SAAW,mCAAqC,UACnGqB,KAAKlB,MAAQiB,IAG5BE,2BACSL,GAAK,IAAIM,UAAS,CACnBC,eAAe,IAGfH,KAAKR,OAASQ,KAAKV,QAAUU,KAAKtB,WAAY,KAC1C0B,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,IACDA,EAAQ,IAGPA,EAAMJ,KAAKR,SACZY,EAAMJ,KAAKR,OAAS,IAGpBY,EAAMJ,KAAKR,OAAOQ,KAAKV,aAClBgB,OAAOF,EAAMJ,KAAKR,OAAOQ,KAAKV,UAI/CiB,QAAS,CACLD,gBAAOE,MACCR,KAAKR,OAASQ,KAAKV,MAAO,KACtBc,EAAQJ,KAAKJ,GAAGS,IAAI,SAEnBD,EAGOA,EAAMJ,KAAKR,SACnBY,EAAMJ,KAAKR,OAAS,KAHpBY,EAAQ,IACFJ,KAAKR,OAAS,GAKxBY,EAAMJ,KAAKR,OAAOQ,KAAKV,OAASkB,OAE3BZ,GAAGa,IAAI,QAASL,QAGpBM,MAAM,oBAAqBF,eC1HzB,kKADfG,iCACIC,2BAAAC,oBACID,yDACU,qDACLjC,SAAUmC,WACVC,GAAID,OACJE,SAAUF,WACXG,aAAa,aACZC,uCAAOC,SAAOC,EAAOC,OAAOb,SAI5BjB,YAAauB,cAAcA,kBAC5BQ,IAAI,6DACKR,4CAAAA,gBAEbF,oCAAa,YAAcE,OAAMS,UAAQJ,yBAEhBL,6BAA7BH,sCAAS,cAAiCY,UAAQT,0DAClBA,aAAWU,4BAA3Cb,sCAAS,iBAAgDY,UAAQT,aAAWU"}
|