@perevorot/shop 1.0.271 → 2.0.2
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/api.js +2 -0
- package/dist/api.js.map +1 -0
- package/dist/app.js +2 -108
- package/dist/app.js.map +1 -0
- package/dist/components/account/Account.js +2 -0
- package/dist/components/account/Account.js.map +1 -0
- package/dist/components/account/OrderItem.js +2 -0
- package/dist/components/account/OrderItem.js.map +1 -0
- package/dist/components/account/Orders.js +2 -0
- package/dist/components/account/Orders.js.map +1 -0
- package/dist/components/account/User.js +2 -0
- package/dist/components/account/User.js.map +1 -0
- package/dist/components/account/Viewed.js +2 -0
- package/dist/components/account/Viewed.js.map +1 -0
- package/dist/components/account/Wish.js +2 -0
- package/dist/components/account/Wish.js.map +1 -0
- package/dist/components/auth/Forget.js +2 -0
- package/dist/components/auth/Forget.js.map +1 -0
- package/dist/components/auth/Login.js +2 -0
- package/dist/components/auth/Login.js.map +1 -0
- package/dist/components/auth/Registration.js +2 -0
- package/dist/components/auth/Registration.js.map +1 -0
- package/dist/components/auth/Reset.js +2 -0
- package/dist/components/auth/Reset.js.map +1 -0
- package/dist/components/auth/User.js +2 -0
- package/dist/components/auth/User.js.map +1 -0
- package/dist/components/shop/Catalog.js +2 -0
- package/dist/components/shop/Catalog.js.map +1 -0
- package/dist/components/shop/CodeCopy.js +2 -0
- package/dist/components/shop/CodeCopy.js.map +1 -0
- package/dist/components/shop/Cross.js +2 -0
- package/dist/components/shop/Cross.js.map +1 -0
- package/dist/components/shop/FilterToggle.js +2 -0
- package/dist/components/shop/FilterToggle.js.map +1 -0
- package/dist/components/shop/Gallery.js +2 -0
- package/dist/components/shop/Gallery.js.map +1 -0
- package/dist/components/shop/Pagination.js +2 -0
- package/dist/components/shop/Pagination.js.map +1 -0
- package/dist/components/shop/PromoProducts.js +2 -0
- package/dist/components/shop/PromoProducts.js.map +1 -0
- package/dist/components/shop/Search.js +2 -0
- package/dist/components/shop/Search.js.map +1 -0
- package/dist/components/shop/bundle/Bundle.js +2 -0
- package/dist/components/shop/bundle/Bundle.js.map +1 -0
- package/dist/components/shop/bundle/BundleAdd.js +2 -0
- package/dist/components/shop/bundle/BundleAdd.js.map +1 -0
- package/dist/components/shop/cart/Cart.js +2 -0
- package/dist/components/shop/cart/Cart.js.map +1 -0
- package/dist/components/shop/cart/CartAdd.js +2 -0
- package/dist/components/shop/cart/CartAdd.js.map +1 -0
- package/dist/components/shop/cart/CartItem.js +2 -0
- package/dist/components/shop/cart/CartItem.js.map +1 -0
- package/dist/components/shop/cart/CartTrigger.js +2 -0
- package/dist/components/shop/cart/CartTrigger.js.map +1 -0
- package/dist/components/shop/cart/SuccessMessage.js +2 -0
- package/dist/components/shop/cart/SuccessMessage.js.map +1 -0
- package/dist/components/shop/compare/Compare.js +2 -0
- package/dist/components/shop/compare/Compare.js.map +1 -0
- package/dist/components/shop/compare/CompareAdd.js +2 -0
- package/dist/components/shop/compare/CompareAdd.js.map +1 -0
- package/dist/components/shop/compare/CompareDelete.js +2 -0
- package/dist/components/shop/compare/CompareDelete.js.map +1 -0
- package/dist/components/shop/compare/Comparsion.js +2 -0
- package/dist/components/shop/compare/Comparsion.js.map +1 -0
- package/dist/components/shop/compare/SuccessMessage.js +2 -0
- package/dist/components/shop/compare/SuccessMessage.js.map +1 -0
- package/dist/components/shop/filters/FilterSearch.js +2 -0
- package/dist/components/shop/filters/FilterSearch.js.map +1 -0
- package/dist/components/shop/filters/Price.js +2 -0
- package/dist/components/shop/filters/Price.js.map +1 -0
- package/dist/components/shop/order/Checkout.js +2 -0
- package/dist/components/shop/order/Checkout.js.map +1 -0
- package/dist/components/shop/order/CheckoutItem.js +2 -0
- package/dist/components/shop/order/CheckoutItem.js.map +1 -0
- package/dist/components/shop/order/OneClick.js +2 -0
- package/dist/components/shop/order/OneClick.js.map +1 -0
- package/dist/components/shop/order/shipping/CheckoutShippingCourier.js +2 -0
- package/dist/components/shop/order/shipping/CheckoutShippingCourier.js.map +1 -0
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.js +2 -0
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.js.map +1 -0
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaWarehouse.js +2 -0
- package/dist/components/shop/order/shipping/CheckoutShippingNovaposhtaWarehouse.js.map +1 -0
- package/dist/components/shop/order/shipping/CheckoutShippingPickup.js +2 -0
- package/dist/components/shop/order/shipping/CheckoutShippingPickup.js.map +1 -0
- package/dist/components/shop/reviews/Review.js +2 -0
- package/dist/components/shop/reviews/Review.js.map +1 -0
- package/dist/components/shop/viewed/Viewed.js +2 -0
- package/dist/components/shop/viewed/Viewed.js.map +1 -0
- package/dist/components/shop/viewed/ViewedDelete.js +2 -0
- package/dist/components/shop/viewed/ViewedDelete.js.map +1 -0
- package/dist/components/shop/viewed/Viewer.js +2 -0
- package/dist/components/shop/viewed/Viewer.js.map +1 -0
- package/dist/components/shop/wishlist/SuccessMessage.js +2 -0
- package/dist/components/shop/wishlist/SuccessMessage.js.map +1 -0
- package/dist/components/shop/wishlist/Wishlist.js +2 -0
- package/dist/components/shop/wishlist/Wishlist.js.map +1 -0
- package/dist/components/shop/wishlist/WishlistAdd.js +2 -0
- package/dist/components/shop/wishlist/WishlistAdd.js.map +1 -0
- package/dist/components/shop/wishlist/WishlistDelete.js +2 -0
- package/dist/components/shop/wishlist/WishlistDelete.js.map +1 -0
- package/dist/forms/FormCheckbox.js +2 -0
- package/dist/forms/FormCheckbox.js.map +1 -0
- package/dist/forms/FormCheckboxes.js +2 -0
- package/dist/forms/FormCheckboxes.js.map +1 -0
- package/dist/forms/FormPassword.js +2 -0
- package/dist/forms/FormPassword.js.map +1 -0
- package/dist/forms/FormRadio.js +2 -0
- package/dist/forms/FormRadio.js.map +1 -0
- package/dist/forms/FormRating.js +2 -0
- package/dist/forms/FormRating.js.map +1 -0
- package/dist/forms/FormSection.js +2 -0
- package/dist/forms/FormSection.js.map +1 -0
- package/dist/forms/FormSelect.js +2 -0
- package/dist/forms/FormSelect.js.map +1 -0
- package/dist/forms/FormSwitch.js +2 -0
- package/dist/forms/FormSwitch.js.map +1 -0
- package/dist/forms/FormText.js +2 -0
- package/dist/forms/FormText.js.map +1 -0
- package/dist/forms/FormTextarea.js +2 -0
- package/dist/forms/FormTextarea.js.map +1 -0
- package/dist/global.js +2 -0
- package/dist/global.js.map +1 -0
- package/dist/helpers.js +2 -0
- package/dist/helpers.js.map +1 -0
- package/dist/store.js +2 -0
- package/dist/store.js.map +1 -0
- package/dist/vuex.js +2 -0
- package/dist/vuex.js.map +1 -0
- package/package.json +16 -41
- package/dist/index.js +0 -110
|
@@ -0,0 +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;
|
|
2
|
+
//# sourceMappingURL=Checkout.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue"),t=e.defineComponent({name:"CheckoutItem",props:{item:Object},setup:function(t){var i=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!==i.value.indexOf(e.id)})):[]}))}}}),i={key:0,class:"column is-12"},n=[e.createElementVNode("div",{class:"bundle-title"},"Вместе дешевле",-1)],l={class:"column name"},r={class:"column is-narrow"},a=["href"],o=["src"],s={key:1},c=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],m={class:"column"},d={class:"columns is-gapless mb-0"},u={class:"column"},p={key:0,class:"code"},b={class:"title"},k=["href"],E={class:"column is-2 has-text-centered is-relative"},v={class:"quantity"},N={key:0,class:"quantity-price"},V=["innerHTML"],f=e.createTextVNode(" / шт"),g={class:"column is-2 has-text-right"},h=["innerHTML"],B=["innerHTML"],y=["innerHTML"],C={key:0,class:"options is-toggled"},x={class:"toggler"},T={class:"wrapper"},q={class:"column"},L={class:"option-title"},H={class:"column is-2 has-text-right"},M=e.createTextVNode("+"),D=["innerHTML"],O={key:0,class:"bundle columns"},S={class:"column is-narrow"},z=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),$=["href"],w=["src"],I={key:1},j=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],F={class:"column"},A={key:0,class:"code"},G={class:"title"},J=["href"],K={key:1,class:"bundle columns"},P={class:"column is-narrow"},Q=e.createElementVNode("svg",{class:"bundle-icon"},[e.createElementVNode("use",{"xlink:href":"#bundle-plus"})],-1),R=["href"],U=["src"],W={key:1},X=[e.createElementVNode("use",{"xlink:href":"#logo"},null,-1)],Y={class:"column"},Z={key:0,class:"code"},_={class:"title"},ee=["href"];t.render=function(t,te,ie,ne,le,re){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",i,n)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",l,[e.createElementVNode("div",{class:e.normalizeClass(["columns",{"mb-0":t.item.attributes.bundle}])},[e.createElementVNode("div",r,[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,o)):(e.openBlock(),e.createElementBlock("svg",s,c))],2)],8,a)]),e.createElementVNode("div",m,[e.createElementVNode("div",d,[e.createElementVNode("div",u,[t.item.attributes.code?(e.openBlock(),e.createElementBlock("div",p,"Код продукта: "+e.toDisplayString(t.item.attributes.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",b,[e.createElementVNode("a",{href:t.item.attributes.href},e.toDisplayString(t.item.name),9,k)])]),e.createElementVNode("div",E,[e.createElementVNode("div",v,"⨉ "+e.toDisplayString(t.item.quantity),1),parseInt(t.item.quantity)>1?(e.openBlock(),e.createElementBlock("div",N,[e.createElementVNode("span",{innerHTML:t.$filters.price(t.item.attributes.price)},null,8,V),f])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",g,[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,B)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{innerHTML:t.$filters.price(t.item.attributes.price*t.item.quantity)},null,8,y)],2)])]),t.itemOptions&&t.itemOptions.length?(e.openBlock(),e.createElementBlock("div",C,[e.createElementVNode("div",x,[e.createElementVNode("span",null,"Дополнительные услуги, "+e.toDisplayString(t.itemOptions.length),1)]),e.createElementVNode("div",T,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.itemOptions,(function(i,n){return e.openBlock(),e.createElementBlock("div",{key:n,class:"columns is-checked"},[e.createElementVNode("div",q,[e.createElementVNode("div",L,e.toDisplayString(i.name),1)]),e.createElementVNode("div",H,[M,e.createElementVNode("span",{innerHTML:t.$filters.price(i.price)},null,8,D)])])})),128))])])):e.createCommentVNode("v-if",!0)])],2),t.item.attributes.bundle?(e.openBlock(),e.createElementBlock("div",O,[e.createElementVNode("div",S,[z,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,w)):(e.openBlock(),e.createElementBlock("svg",I,j))],2)],8,$)]),e.createElementVNode("div",F,[t.item.attributes.second.code?(e.openBlock(),e.createElementBlock("div",A,"Код продукта: "+e.toDisplayString(t.item.attributes.second.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",G,[e.createElementVNode("a",{href:t.item.attributes.second.href},e.toDisplayString(t.item.attributes.second.name),9,J)])])])):e.createCommentVNode("v-if",!0),t.item.attributes.bundle&&t.item.attributes.third?(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("div",P,[Q,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,U)):(e.openBlock(),e.createElementBlock("svg",W,X))],2)],8,R)]),e.createElementVNode("div",Y,[t.item.attributes.third.code?(e.openBlock(),e.createElementBlock("div",Z,"Код продукта: "+e.toDisplayString(t.item.attributes.third.code),1)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",_,[e.createElementVNode("a",{href:t.item.attributes.third.href},e.toDisplayString(t.item.attributes.third.name),9,ee)])])])):e.createCommentVNode("v-if",!0)])],2)},module.exports=t;
|
|
2
|
+
//# sourceMappingURL=CheckoutItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckoutItem.js","sources":["../../../../src/components/shop/order/CheckoutItem.vue","../../../../src/components/shop/order/CheckoutItem.vue?vue&type=template&id=497060f6&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>"],"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"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue"),t=require("vuex"),r=require("formvuelate"),o=require("@formvuelate/plugin-vee-validate"),n=require("@perevorot/shop/dist/forms/FormText"),a=require("@perevorot/shop/dist/forms/FormTextarea"),l=require("yup"),i=require("vue-toastification");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=c(o),m=c(n),d=c(a),p=s(l);function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var o,n,a=[],l=!0,i=!1;try{for(r=r.call(e);!(l=(o=r.next()).done)&&(a.push(o.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==r.return||r.return()}finally{if(i)throw n}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return v(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r<t;r++)o[r]=e[r];return o}var h=i.useToast();e.markRaw(m.default),e.markRaw(d.default);var k={components:{SchemaForm:r.SchemaFormFactory([u.default({})])},name:"order-one-click",props:{id:Number,className:String,callback:Function,closeAction:Function,model:Array},setup:function(o){var n=e.ref(!1),a=e.ref(0),l=e.ref({}),i=t.useStore(),c=e.computed((function(){return i.getters["order/modal"]})),s=e.computed((function(){return i.getters["auth/me"]})),u=e.ref(!1),v=function(e,t){i.commit("order/modal",null),t&&o.closeAction&&o.closeAction()},k={name:{component:m.default,label:__("shop.order.oneclick.name"),store:"oneclick",model:"name"},phone:{component:m.default,label:__("shop.order.oneclick.phone"),type:"phone",placeholder:"(050) 123-45-67",mask:"(###) ###-##-##",store:"oneclick",model:"phone"}};-1!==o.model.indexOf("email")&&(k.email={component:m.default,label:__("shop.order.oneclick.email"),store:"oneclick",model:"email"}),-1!==o.model.indexOf("comment")&&(k.comment={component:d.default,label:__("shop.order.oneclick.comment"),store:"oneclick",model:"email"});var y=e.ref(k),b={name:p.string().trim().required(__("auth.validation.required")),phone:p.string().trim().required(__("auth.validation.required")).matches(/^\(\d{3}\) \d{3}\-\d{2}\-\d{2}$/,__("auth.validation.phone"))};-1!==o.model.indexOf("email")&&(b.email=p.string().trim().email(__("auth.validation.email")).required(__("auth.validation.required")));var _=p.object().shape(b),g=e.ref({});e.onMounted((function(){g.value={name:(s.value.last_name?s.value.last_name:"")+(s.value.name?" "+s.value.name:""),email:s.value.email?s.value.email:"",phone:s.value.phone_formatted?s.value.phone_formatted:"",id:o.id?o.id:null}})),r.useSchemaForm(g);return{open:function(){u.value=!1,i.commit("order/modal","oneclick")},close:v,modal:c,loading:n,key:a,errors:l,schema:y,validation:_,model:g,onSubmit:function(){n.value=!0;var e=document.querySelector(".shop-product .product-info .cart-change-quantity input");e&&(g.value.quantity=e.value),$http.post($ziggy("api.order.oneclick"),g.value).then((function(e){o.callback?(v(),o.callback(e)):(u.value=!0,a.value++)})).finally((function(){n.value=!1})).catch((function(e){if(e.response.data&&e.response.data.error&&e.response.data.message&&h(e.response.data.message,{type:"error"}),e.response.data&&e.response.data.errors){for(var t=0,r=Object.entries(e.response.data.errors);t<r.length;t++){var o=f(r[t],2),n=o[0],i=o[1];i[0]&&(l.value[n]=i[0])}a.value++}}))},thanks:u}}},y={class:"shop-order-one-click"},b={class:"modal-content"},_=[e.createElementVNode("svg",{class:"icon close"},[e.createElementVNode("use",{"xlink:href":"#close"})],-1)],g={class:"box"},S={class:"title"},N={class:"field"},E=["innerHTML"],q={class:"mt-3"};k.render=function(t,r,o,n,a,l){var i=e.resolveComponent("SchemaForm");return e.openBlock(),e.createElementBlock("div",y,[e.createElementVNode("button",{class:e.normalizeClass(o.className?o.className:"button is-link is-small"),onClick:r[0]||(r[0]=function(){return n.open&&n.open.apply(n,arguments)})},e.toDisplayString(t.__("shop.order.oneclick.add")),3),e.createElementVNode("div",{class:e.normalizeClass(["modal",{"is-active":n.modal}])},[e.createElementVNode("div",{class:"modal-background",onClick:r[1]||(r[1]=function(){return n.close&&n.close.apply(n,arguments)})}),e.createElementVNode("div",b,[e.createElementVNode("button",{class:"modal-close is-large",onClick:r[2]||(r[2]=function(){return n.close&&n.close.apply(n,arguments)})},_),e.createElementVNode("div",g,[e.createElementVNode("div",S,e.toDisplayString(t.__("shop.order.oneclick.title")),1),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(),e.createBlock(i,{schemaRowClasses:"field",schema:n.schema,"validation-schema":n.validation,"initial-errors":n.errors,key:n.key,onSubmit:n.onSubmit},{afterForm:e.withCtx((function(){return[e.createElementVNode("div",N,[e.createElementVNode("button",{class:e.normalizeClass(["button is-link",{"is-loading":n.loading}]),type:"submit"},e.toDisplayString(t.__("shop.order.oneclick.submit")),3)])]})),_:1},8,["schema","validation-schema","initial-errors","onSubmit"]))],512),[[e.vShow,!n.thanks]]),e.withDirectives(e.createElementVNode("div",null,[e.createElementVNode("div",{innerHTML:t.__("shop.order.oneclick.thanks")},null,8,E),e.createElementVNode("div",q,[e.createElementVNode("button",{class:"button",onClick:r[3]||(r[3]=function(e){return n.close(e,!0)})},e.toDisplayString(t.__("shop.order.oneclick.continue")),1)])],512),[[e.vShow,n.thanks]])])])],2)])},module.exports=k;
|
|
2
|
+
//# sourceMappingURL=OneClick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OneClick.js","sources":["../../../../src/components/shop/order/OneClick.vue","../../../../src/components/shop/order/OneClick.vue?vue&type=template&id=6a487f44&lang.js"],"sourcesContent":["<template>\n <div class=\"shop-order-one-click\">\n <button v-bind:class=\"className ? className : 'button is-link is-small'\" @click=\"open\">\n {{ __('shop.order.oneclick.add') }}\n </button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">\n {{ __('shop.order.oneclick.title') }}\n </div>\n <div v-show=\"!thanks\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"schema\" :validation-schema=\"validation\" :initial-errors=\"errors\" :key=\"key\" @submit=\"onSubmit\">\n <template #afterForm>\n <div class=\"field\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading\n }\"\n >\n {{ __('shop.order.oneclick.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.oneclick.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.oneclick.continue') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed, markRaw, onMounted } from 'vue';\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 FormTextarea from '@perevorot/shop/dist/forms/FormTextarea';\nimport * as yup from 'yup';\nimport { useToast } from \"vue-toastification\";\n\nconst toast = useToast();\n\nmarkRaw(FormText);\nmarkRaw(FormTextarea);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default {\n components: {\n SchemaForm\n },\n name: 'order-one-click',\n props: {\n id: Number,\n className: String,\n callback: Function,\n closeAction: Function,\n model: Array\n },\n setup(props) {\n const loading = ref(false);\n const key = ref(0);\n const errors = ref({});\n const store = useStore();\n const modal = computed(() => store.getters['order/modal']);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n store.commit('order/modal', 'oneclick');\n };\n\n const close = (e, fromButton) => {\n store.commit('order/modal', null);\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.oneclick.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.oneclick.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: 'oneclick',\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.oneclick.email'),\n store: 'oneclick',\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.oneclick.comment'),\n store: 'oneclick',\n model: 'email'\n };\n }\n\n const schema = ref(schemaObject);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n let validationObject = {\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().trim().required(__('auth.validation.required')).matches(phoneRegExp, __('auth.validation.phone'))\n };\n\n if (props.model.indexOf('email') !== -1) {\n validationObject.email = yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'));\n }\n\n const validation = yup.object().shape(validationObject);\n\n const model = ref({});\n\n onMounted(() => {\n model.value = {\n name: (user.value.last_name ? user.value.last_name : '') + (user.value.name ? ' ' + user.value.name : ''),\n email: user.value.email ? user.value.email : '',\n phone: user.value.phone_formatted ? user.value.phone_formatted : '',\n id: props.id ? props.id : null\n };\n });\n\n useSchemaForm(model);\n\n const onSubmit = () => {\n loading.value = true;\n\n const quantityInput = document.querySelector('.shop-product .product-info .cart-change-quantity input');\n\n if (quantityInput) {\n model.value.quantity = quantityInput.value;\n }\n\n $http\n .post($ziggy('api.order.oneclick'), model.value)\n .then((response) => {\n if (props.callback) {\n close();\n props.callback(response);\n } else {\n thanks.value = true;\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n })\n .catch((error) => {\n if (error.response.data && error.response.data.error && error.response.data.message) {\n toast(error.response.data.message, {\n type: 'error'\n });\n }\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(error.response.data.errors)) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n });\n };\n\n return {\n open,\n close,\n modal,\n loading,\n key,\n errors,\n schema,\n validation,\n model,\n onSubmit,\n thanks\n };\n }\n};\n</script>","<template>\n <div class=\"shop-order-one-click\">\n <button v-bind:class=\"className ? className : 'button is-link is-small'\" @click=\"open\">\n {{ __('shop.order.oneclick.add') }}\n </button>\n <div class=\"modal\" v-bind:class=\"{ 'is-active': modal }\">\n <div class=\"modal-background\" @click=\"close\"></div>\n <div class=\"modal-content\">\n <button class=\"modal-close is-large\" @click=\"close\">\n <svg class=\"icon close\">\n <use xlink:href=\"#close\" />\n </svg>\n </button>\n <div class=\"box\">\n <div class=\"title\">\n {{ __('shop.order.oneclick.title') }}\n </div>\n <div v-show=\"!thanks\">\n <SchemaForm schemaRowClasses=\"field\" :schema=\"schema\" :validation-schema=\"validation\" :initial-errors=\"errors\" :key=\"key\" @submit=\"onSubmit\">\n <template #afterForm>\n <div class=\"field\">\n <button\n class=\"button is-link\"\n type=\"submit\"\n v-bind:class=\"{\n 'is-loading': loading\n }\"\n >\n {{ __('shop.order.oneclick.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.oneclick.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.oneclick.continue') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { ref, computed, markRaw, onMounted } from 'vue';\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 FormTextarea from '@perevorot/shop/dist/forms/FormTextarea';\nimport * as yup from 'yup';\nimport { useToast } from \"vue-toastification\";\n\nconst toast = useToast();\n\nmarkRaw(FormText);\nmarkRaw(FormTextarea);\n\nconst SchemaForm = SchemaFormFactory([VeeValidatePlugin({})]);\n\nexport default {\n components: {\n SchemaForm\n },\n name: 'order-one-click',\n props: {\n id: Number,\n className: String,\n callback: Function,\n closeAction: Function,\n model: Array\n },\n setup(props) {\n const loading = ref(false);\n const key = ref(0);\n const errors = ref({});\n const store = useStore();\n const modal = computed(() => store.getters['order/modal']);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n store.commit('order/modal', 'oneclick');\n };\n\n const close = (e, fromButton) => {\n store.commit('order/modal', null);\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.oneclick.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.oneclick.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: 'oneclick',\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.oneclick.email'),\n store: 'oneclick',\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.oneclick.comment'),\n store: 'oneclick',\n model: 'email'\n };\n }\n\n const schema = ref(schemaObject);\n\n const phoneRegExp = /^\\(\\d{3}\\) \\d{3}\\-\\d{2}\\-\\d{2}$/;\n\n let validationObject = {\n name: yup.string().trim().required(__('auth.validation.required')),\n phone: yup.string().trim().required(__('auth.validation.required')).matches(phoneRegExp, __('auth.validation.phone'))\n };\n\n if (props.model.indexOf('email') !== -1) {\n validationObject.email = yup.string().trim().email(__('auth.validation.email')).required(__('auth.validation.required'));\n }\n\n const validation = yup.object().shape(validationObject);\n\n const model = ref({});\n\n onMounted(() => {\n model.value = {\n name: (user.value.last_name ? user.value.last_name : '') + (user.value.name ? ' ' + user.value.name : ''),\n email: user.value.email ? user.value.email : '',\n phone: user.value.phone_formatted ? user.value.phone_formatted : '',\n id: props.id ? props.id : null\n };\n });\n\n useSchemaForm(model);\n\n const onSubmit = () => {\n loading.value = true;\n\n const quantityInput = document.querySelector('.shop-product .product-info .cart-change-quantity input');\n\n if (quantityInput) {\n model.value.quantity = quantityInput.value;\n }\n\n $http\n .post($ziggy('api.order.oneclick'), model.value)\n .then((response) => {\n if (props.callback) {\n close();\n props.callback(response);\n } else {\n thanks.value = true;\n\n key.value++;\n }\n })\n .finally(() => {\n loading.value = false;\n })\n .catch((error) => {\n if (error.response.data && error.response.data.error && error.response.data.message) {\n toast(error.response.data.message, {\n type: 'error'\n });\n }\n\n if (error.response.data && error.response.data.errors) {\n for (const [field, messages] of Object.entries(error.response.data.errors)) {\n if (messages[0]) {\n errors.value[field] = messages[0];\n }\n }\n\n key.value++;\n }\n });\n };\n\n return {\n open,\n close,\n modal,\n loading,\n key,\n errors,\n schema,\n validation,\n model,\n onSubmit,\n thanks\n };\n }\n};\n</script>"],"names":["toast","useToast","markRaw","FormText","FormTextarea","components","SchemaForm","SchemaFormFactory","VeeValidatePlugin","name","props","id","Number","className","String","callback","Function","closeAction","model","Array","setup","loading","ref","key","errors","store","useStore","modal","computed","getters","user","thanks","close","e","fromButton","commit","schemaObject","component","label","__","phone","type","placeholder","mask","indexOf","email","comment","schema","validationObject","yup","string","trim","required","matches","validation","object","shape","onMounted","value","last_name","phone_formatted","useSchemaForm","open","onSubmit","quantityInput","document","querySelector","quantity","$http","post","$ziggy","then","response","error","data","message","Object","entries","field","messages","_createElementVNode","_createElementBlock","_hoisted_1","$props","onClick","$setup","_ctx","_hoisted_2","_hoisted_5","_hoisted_6","_createBlock","schemaRowClasses","afterForm","_hoisted_7","innerHTML","_hoisted_9","$event"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue"),t=e.defineComponent({props:{data:Object,item:Object,commit:Function},setup:function(t){var n=e.computed({get:function(){return t.data[t.item.code]?t.data[t.item.code].address:""},set:function(e){var n={address:e,time:i.value};return t.commit(t.item.code,n,r(n)),e}}),i=e.computed({get:function(){return t.data[t.item.code]?t.data[t.item.code].time:""},set:function(e){var i={address:n.value,time:e};return t.commit(t.item.code,i,r(i)),e}}),r=function(e){return""!=e.address.trim()&&(!t.item.data.length||t.item.data.length&&""!==e.time.trim())};return{address:n,time:i}}}),n={class:"component"},i={class:"user-form"},r={class:"control"},o=["id"],a=["for"],c={class:"time"},d=["onClick"];t.render=function(t,m,l,s,u,p){return e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",i,[e.createElementVNode("div",r,[e.withDirectives(e.createElementVNode("input",{type:"input",class:"input","onUpdate:modelValue":m[0]||(m[0]=function(e){return t.address=e}),id:"shipping-courier-"+t.item.id,placeholder:" ",autocomplete:"chrome-off"},null,8,o),[[e.vModelText,t.address]]),e.createElementVNode("label",{class:"label",for:"shipping-courier-"+t.item.id},"Адрес доставки",8,a)])]),e.createElementVNode("div",c,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.item.data,(function(n){return e.openBlock(),e.createElementBlock("div",{key:n.id,class:e.normalizeClass({"is-selected":t.time==n.name}),onClick:function(e){return t.time=n.name}},e.toDisplayString(n.name),11,d)})),128))])])},module.exports=t;
|
|
2
|
+
//# sourceMappingURL=CheckoutShippingCourier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckoutShippingCourier.js","sources":["../../../../../src/components/shop/order/shipping/CheckoutShippingCourier.vue","../../../../../src/components/shop/order/shipping/CheckoutShippingCourier.vue?vue&type=template&id=616e0c7e&lang.js"],"sourcesContent":["<template>\n <div class=\"component\">\n <div class=\"user-form\">\n <div class=\"control\">\n <input type=\"input\" class=\"input\" v-model=\"address\" :id=\"'shipping-courier-' + item.id\" placeholder=\" \" autocomplete=\"chrome-off\" />\n <label class=\"label\" :for=\"'shipping-courier-' + item.id\">Адрес доставки</label>\n </div>\n </div>\n <div class=\"time\">\n <div v-for=\"item in item.data\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-selected': time == item.name }\" @click=\"time = item.name\">{{ item.name }}</div>\n </div>\n </div>\n</template>\n<script>\nimport { computed, defineComponent } from 'vue';\n\nexport default defineComponent({\n props: {\n data: Object,\n item: Object,\n commit: Function\n },\n setup(props) {\n const address = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].address : '';\n },\n set(address) {\n const data = {\n address: address,\n time: time.value\n };\n\n props.commit(props.item.code, data, isValid(data));\n\n return address;\n }\n });\n\n const time = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].time : '';\n },\n set(time) {\n const data = {\n address: address.value,\n time: time\n };\n\n props.commit(props.item.code, data, isValid(data));\n\n return time;\n }\n });\n\n const isValid = (data) => {\n return data.address.trim() != '' && (!props.item.data.length || (props.item.data.length && data.time.trim() !== ''));\n };\n\n return {\n address,\n time\n };\n }\n});\n</script>\n","<template>\n <div class=\"component\">\n <div class=\"user-form\">\n <div class=\"control\">\n <input type=\"input\" class=\"input\" v-model=\"address\" :id=\"'shipping-courier-' + item.id\" placeholder=\" \" autocomplete=\"chrome-off\" />\n <label class=\"label\" :for=\"'shipping-courier-' + item.id\">Адрес доставки</label>\n </div>\n </div>\n <div class=\"time\">\n <div v-for=\"item in item.data\" v-bind:key=\"item.id\" v-bind:class=\"{ 'is-selected': time == item.name }\" @click=\"time = item.name\">{{ item.name }}</div>\n </div>\n </div>\n</template>\n<script>\nimport { computed, defineComponent } from 'vue';\n\nexport default defineComponent({\n props: {\n data: Object,\n item: Object,\n commit: Function\n },\n setup(props) {\n const address = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].address : '';\n },\n set(address) {\n const data = {\n address: address,\n time: time.value\n };\n\n props.commit(props.item.code, data, isValid(data));\n\n return address;\n }\n });\n\n const time = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].time : '';\n },\n set(time) {\n const data = {\n address: address.value,\n time: time\n };\n\n props.commit(props.item.code, data, isValid(data));\n\n return time;\n }\n });\n\n const isValid = (data) => {\n return data.address.trim() != '' && (!props.item.data.length || (props.item.data.length && data.time.trim() !== ''));\n };\n\n return {\n address,\n time\n };\n }\n});\n</script>\n"],"names":["defineComponent","props","data","Object","item","commit","Function","setup","address","computed","get","code","set","time","value","isValid","trim","length","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","type","_ctx","id","placeholder","autocomplete","_hoisted_6","key","name","onClick"],"mappings":"oCAgBeA,kBAAgB,CAC3BC,MAAO,CACHC,KAAMC,OACNC,KAAMD,OACNE,OAAQC,UAEZC,eAAMN,OACIO,EAAUC,WAAS,CACrBC,sBACWT,EAAMC,KAAKD,EAAMG,KAAKO,MAAQV,EAAMC,KAAKD,EAAMG,KAAKO,MAAMH,QAAU,IAE/EI,aAAIJ,OACMN,EAAO,CACTM,QAASA,EACTK,KAAMA,EAAKC,cAGfb,EAAMI,OAAOJ,EAAMG,KAAKO,KAAMT,EAAMa,EAAQb,IAErCM,KAITK,EAAOJ,WAAS,CAClBC,sBACWT,EAAMC,KAAKD,EAAMG,KAAKO,MAAQV,EAAMC,KAAKD,EAAMG,KAAKO,MAAME,KAAO,IAE5ED,aAAIC,OACMX,EAAO,CACTM,QAASA,EAAQM,MACjBD,KAAMA,UAGVZ,EAAMI,OAAOJ,EAAMG,KAAKO,KAAMT,EAAMa,EAAQb,IAErCW,KAITE,EAAU,SAACb,SACiB,IAAvBA,EAAKM,QAAQQ,UAAkBf,EAAMG,KAAKF,KAAKe,QAAWhB,EAAMG,KAAKF,KAAKe,QAA+B,KAArBf,EAAKW,KAAKG,eAGlG,CACHR,QAAAA,EACAK,KAAAA,eC5DG,sBACI,sBACI,uCAKJ,0EAPfK,2BAAAC,GACIC,2BAAAC,GACID,2BAAAE,oBACIF,8BAAOG,KAAK,cAAc,6DAAiBC,cAAUC,uBAA0BD,OAAKC,GAAIC,YAAY,IAAIC,aAAa,uCAA1EH,aAC3CJ,oCAAa,gCAAoCI,OAAKC,IAAI,0BAGlEL,2BAAAQ,oBACIV,kDAAoBM,OAAKtB,eAAbE,wBAAZc,4BAAsCW,IAAKzB,EAAKqB,yCAAmCD,QAAQpB,EAAK0B,OAASC,2BAAOP,OAAOpB,EAAK0B,yBAAS1B,EAAK0B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue"),t=e.defineComponent({props:{data:Object,item:Object,commit:Function},setup:function(t){return{address:e.computed({get:function(){return t.data[t.item.code]?t.data[t.item.code].address:""},set:function(e){var r={address:e};return t.commit(t.item.code,r,""!==e.trim()),e}})}}}),r={class:"component"},o={class:"user-form"},i={class:"control"},n=["id"],c=["for"];t.render=function(t,d,s,a,l,u){return e.openBlock(),e.createElementBlock("div",r,[e.createElementVNode("div",o,[e.createElementVNode("div",i,[e.withDirectives(e.createElementVNode("input",{type:"input",class:"input","onUpdate:modelValue":d[0]||(d[0]=function(e){return t.address=e}),id:"shipping-courier-"+t.item.id,placeholder:" ",autocomplete:"chrome-off"},null,8,n),[[e.vModelText,t.address]]),e.createElementVNode("label",{class:"label",for:"shipping-courier-"+t.item.id},"Адрес доставки",8,c)])])])},module.exports=t;
|
|
2
|
+
//# sourceMappingURL=CheckoutShippingNovaposhtaAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckoutShippingNovaposhtaAddress.js","sources":["../../../../../src/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.vue","../../../../../src/components/shop/order/shipping/CheckoutShippingNovaposhtaAddress.vue?vue&type=template&id=27846477&lang.js"],"sourcesContent":["<template>\n <div class=\"component\">\n <div class=\"user-form\">\n <div class=\"control\">\n <input type=\"input\" class=\"input\" v-model=\"address\" :id=\"'shipping-courier-' + item.id\" placeholder=\" \" autocomplete=\"chrome-off\" />\n <label class=\"label\" :for=\"'shipping-courier-' + item.id\">Адрес доставки</label>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { computed, defineComponent } from 'vue';\n\nexport default defineComponent({\n props: {\n data: Object,\n item: Object,\n commit: Function\n },\n setup(props) {\n const address = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].address : '';\n },\n set(address) {\n const data = {\n address: address\n };\n\n props.commit(props.item.code, data, address.trim() !== '');\n\n return address;\n }\n });\n\n return {\n address\n };\n }\n});\n</script>\n","<template>\n <div class=\"component\">\n <div class=\"user-form\">\n <div class=\"control\">\n <input type=\"input\" class=\"input\" v-model=\"address\" :id=\"'shipping-courier-' + item.id\" placeholder=\" \" autocomplete=\"chrome-off\" />\n <label class=\"label\" :for=\"'shipping-courier-' + item.id\">Адрес доставки</label>\n </div>\n </div>\n </div>\n</template>\n<script>\nimport { computed, defineComponent } from 'vue';\n\nexport default defineComponent({\n props: {\n data: Object,\n item: Object,\n commit: Function\n },\n setup(props) {\n const address = computed({\n get() {\n return props.data[props.item.code] ? props.data[props.item.code].address : '';\n },\n set(address) {\n const data = {\n address: address\n };\n\n props.commit(props.item.code, data, address.trim() !== '');\n\n return address;\n }\n });\n\n return {\n address\n };\n }\n});\n</script>\n"],"names":["defineComponent","props","data","Object","item","commit","Function","setup","address","computed","get","code","set","trim","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","type","_ctx","id","placeholder","autocomplete"],"mappings":"oCAaeA,kBAAgB,CAC3BC,MAAO,CACHC,KAAMC,OACNC,KAAMD,OACNE,OAAQC,UAEZC,eAAMN,SAgBK,CACHO,QAhBYC,WAAS,CACrBC,sBACWT,EAAMC,KAAKD,EAAMG,KAAKO,MAAQV,EAAMC,KAAKD,EAAMG,KAAKO,MAAMH,QAAU,IAE/EI,aAAIJ,OACMN,EAAO,CACTM,QAASA,UAGbP,EAAMI,OAAOJ,EAAMG,KAAKO,KAAMT,EAAyB,KAAnBM,EAAQK,QAErCL,kBC9BR,sBACI,sBACI,kFAFnBM,2BAAAC,GACIC,2BAAAC,GACID,2BAAAE,oBACIF,8BAAOG,KAAK,cAAc,6DAAiBC,cAAUC,uBAA0BD,OAAKC,GAAIC,YAAY,IAAIC,aAAa,uCAA1EH,aAC3CJ,oCAAa,gCAAoCI,OAAKC,IAAI"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue");function t(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}var o=e.defineComponent({props:{data:Object,item:Object,commit:Function},setup:function(o){var n,a,u=e.computed({get:function(){return o.data[o.item.code]?o.data[o.item.code].city:null},set:function(e){var t={city:e};o.commit(o.item.code,t,l(t))}}),r=e.computed({get:function(){return o.data[o.item.code]?o.data[o.item.code].warehouse:null},set:function(e){var t={city:u.value,warehouse:e};o.commit(o.item.code,t,l(t))}}),l=function(e){return!(!e.city||!e.warehouse)},i=e.ref(!1),c=e.ref(!1),s=e.ref(""),d=e.ref(""),p=e.ref([]),y=e.ref([]),v=e.ref([]),h=e.ref(null),m=e.ref(null),f=e.ref(!1),w=e.ref(!1),k=e.ref(!1),C=e.ref(!1);e.onMounted((function(){o.item.data&&o.item.data.length&&(y.value=o.item.data)}));var g=function(){i.value=!1,c.value=!1,k.value=!1,C.value=!1};window.addEventListener("keyup",(function(e){(i.value||c.value)&&"Escape"===e.key&&g()})),window.addEventListener("click",(function(e){e.target.closest(".novaposhta-wrapper")||g()})),e.watch(s,(function(e){clearTimeout(a),u.value=null,e&&(f.value=!0,a=setTimeout((function(){$http.post($ziggy("api.delivery-nova-poshta"),{q:e,action:"cities"}).then((function(e){p.value=e.data.cities})).finally((function(){f.value=!1}))}),400))})),e.watch(d,(function(e){clearTimeout(a),e?(w.value=!0,a=setTimeout((function(){$http.post($ziggy("api.delivery-nova-poshta"),{q:e,city:u.value.id,action:"warehouses"}).then((function(e){v.value=e.data.warehouses})).finally((function(){w.value=!1}))}),400)):(r.value=null,v.value=[])}));return t(n={isCityOpened:i,isWarehouseOpened:c,openCity:function(){i.value=!0},openWarehouse:function(){c.value=!0},cities:p,citiesPopular:y,warehouses:v,chooseCity:function(e,t){e.stopPropagation(),u.value=t,v.value=[],d.value="",k.value=!1,$http.post($ziggy("api.delivery-nova-poshta"),{city:t.id,action:"warehouses"}).then((function(e){v.value=e.data.warehouses})).finally((function(){w.value=!1})),g()},chooseWarehouse:function(e,t){e.stopPropagation(),r.value=t,C.value=!1,r.value=t,g()},queryCity:s,queryWarehouse:d,city:u,warehouse:r,loadingCity:f,loadingWarehouse:w,focusWarehouse:function(){i.value=!1,k.value=!1,C.value||(C.value=!0,e.nextTick((function(){m.value.value=" ",m.value.focus()})))},focusCity:function(){c.value=!1,C.value=!1,k.value||(k.value=!0,e.nextTick((function(){h.value.value=" ",h.value.focus()})))}},"city",u),t(n,"warehouse",r),t(n,"cityQueryInput",h),t(n,"warehouseQueryInput",m),t(n,"cityQueryInputInQueryMode",k),t(n,"warehouseQueryInputInQueryMode",C),n}}),n={class:"component novaposhta-wrapper"},a={class:"user-form"},u=["value"],r={class:"label"},l=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),i={class:"dropdown-menu"},c={class:"dropdown-content"},s=["onClick"],d={key:0,class:"dropdown-item"},p={class:"user-form"},y=["value"],v={class:"label"},h=e.createElementVNode("svg",null,[e.createElementVNode("use",{"xlink:href":"#arrow-down"})],-1),m={class:"dropdown-menu"},f={class:"dropdown-content"},w=["onClick"],k={key:0,class:"dropdown-item"};o.render=function(t,o,C,g,E,I){return e.openBlock(),e.createElementBlock("div",n,[e.createElementVNode("div",{class:e.normalizeClass(["dropdown",{"is-active":t.isCityOpened,"is-top":t.cityQueryInputInQueryMode}]),onMouseleave:o[4]||(o[4]=function(){return t.close&&t.close.apply(t,arguments)})},[e.createElementVNode("div",{class:"dropdown-trigger",onClick:o[3]||(o[3]=function(){return t.openCity&&t.openCity.apply(t,arguments)})},[e.createElementVNode("div",a,[e.createElementVNode("div",{class:e.normalizeClass(["control",{"is-loading":t.loadingCity}])},[e.withDirectives(e.createElementVNode("input",{type:"text",class:"input is-nolabel","onUpdate:modelValue":o[0]||(o[0]=function(e){return t.queryCity=e}),onFocus:o[1]||(o[1]=function(){return t.focusCity&&t.focusCity.apply(t,arguments)}),placeholder:"Введите название города",autocomplete:"chrome-off",ref:"cityQueryInput"},null,544),[[e.vModelText,t.queryCity],[e.vShow,t.cityQueryInputInQueryMode]]),e.createCommentVNode(' <label class="label" v-show="cityQueryInputInQueryMode">Город</label> '),e.withDirectives(e.createElementVNode("input",{type:"text",class:"input",value:t.city?t.city.name:"",onFocus:o[2]||(o[2]=function(){return t.focusCity&&t.focusCity.apply(t,arguments)}),placeholder:" "},null,40,u),[[e.vShow,!t.cityQueryInputInQueryMode]]),e.withDirectives(e.createElementVNode("label",r,"Город",512),[[e.vShow,!t.cityQueryInputInQueryMode]]),l],2)])]),e.createElementVNode("div",i,[e.createElementVNode("div",c,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.queryCity?t.cities:t.citiesPopular,(function(o){return e.openBlock(),e.createElementBlock("a",{class:"dropdown-item",key:o.id,onClick:function(e){return t.chooseCity(e,o)}},e.toDisplayString(o.name),9,s)})),128)),!t.queryCity||t.cities.length||t.loadingCity?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",d,e.toDisplayString(t.__("shop.checkout.shipment.warehouse.not_found")),1))])])],34),t.city?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["dropdown",{"is-active":t.isWarehouseOpened,"is-top":t.warehouseQueryInputInQueryMode}]),onMouseleave:o[9]||(o[9]=function(){return t.close&&t.close.apply(t,arguments)})},[e.createElementVNode("div",{class:"dropdown-trigger",onClick:o[8]||(o[8]=function(){return t.openWarehouse&&t.openWarehouse.apply(t,arguments)})},[e.createElementVNode("div",p,[e.createElementVNode("div",{class:e.normalizeClass(["control",{"is-loading":t.loadingWarehouse}])},[e.withDirectives(e.createElementVNode("input",{type:"text",class:"input is-nolabel","onUpdate:modelValue":o[5]||(o[5]=function(e){return t.queryWarehouse=e}),onFocus:o[6]||(o[6]=function(){return t.focusWarehouse&&t.focusWarehouse.apply(t,arguments)}),placeholder:"Введите номер отделения или адрес",autocomplete:"chrome-off",ref:"warehouseQueryInput"},null,544),[[e.vModelText,t.queryWarehouse],[e.vShow,t.warehouseQueryInputInQueryMode]]),e.createCommentVNode(' <label class="label" v-show="warehouseQueryInputInQueryMode">Отделение</label> '),e.withDirectives(e.createElementVNode("input",{type:"text",class:"input",value:t.warehouse?t.warehouse.name:"",onFocus:o[7]||(o[7]=function(){return t.focusWarehouse&&t.focusWarehouse.apply(t,arguments)}),placeholder:" "},null,40,y),[[e.vShow,!t.warehouseQueryInputInQueryMode]]),e.withDirectives(e.createElementVNode("label",v,"Отделение",512),[[e.vShow,!t.warehouseQueryInputInQueryMode]]),h],2)])]),e.createElementVNode("div",m,[e.createElementVNode("div",f,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.warehouses,(function(o){return e.openBlock(),e.createElementBlock("a",{class:"dropdown-item",key:o.id,onClick:function(e){return t.chooseWarehouse(e,o)}},e.toDisplayString(o.name),9,w)})),128)),!t.queryWarehouse||t.warehouses.length||t.loadingWarehouse?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",k,e.toDisplayString(t.__("shop.checkout.shipment.warehouse.not_found")),1))])])],34)):e.createCommentVNode("v-if",!0)])},module.exports=o;
|
|
2
|
+
//# sourceMappingURL=CheckoutShippingNovaposhtaWarehouse.js.map
|