@perevorot/shop 2.0.41 → 2.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"OneClick.js","sources":["../../../../src/components/shop/order/OneClick.vue","../../../../src/components/shop/order/OneClick.vue?vue&type=template&id=2d90000d&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.' + nameSpace + '.add') }}\n </button>\n\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.' + nameSpace + '.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.' + nameSpace + '.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.' + nameSpace + '.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.' + nameSpace + '.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 nameSpace: {\n type: String,\n default: 'oneclick'\n }\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 = ref(false);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n modal.value = true;\n };\n\n const close = (e, fromButton) => {\n modal.value = false;\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: props.nameSpace,\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.email'),\n store: props.nameSpace,\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.' + props.nameSpace + '.comment'),\n store: props.nameSpace,\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 namespace: props.nameSpace\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.' + nameSpace + '.add') }}\n </button>\n\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.' + nameSpace + '.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.' + nameSpace + '.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.' + nameSpace + '.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.' + nameSpace + '.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 nameSpace: {\n type: String,\n default: 'oneclick'\n }\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 = ref(false);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n modal.value = true;\n };\n\n const close = (e, fromButton) => {\n modal.value = false;\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: props.nameSpace,\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.email'),\n store: props.nameSpace,\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.' + props.nameSpace + '.comment'),\n store: props.nameSpace,\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 namespace: props.nameSpace\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","nameSpace","type","setup","loading","ref","key","errors","store","useStore","modal","user","computed","getters","thanks","close","e","fromButton","value","schemaObject","component","label","__","phone","placeholder","mask","indexOf","email","comment","schema","validationObject","yup","string","trim","required","matches","validation","object","shape","onMounted","last_name","phone_formatted","namespace","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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"}
1
+ {"version":3,"file":"OneClick.js","sources":["../../../../src/components/shop/order/OneClick.vue","../../../../src/components/shop/order/OneClick.vue?vue&type=template&id=2cf8ac6a&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 <span>{{ __('shop.order.' + nameSpace + '.add') }}</span>\n </button>\n\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.' + nameSpace + '.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 class=\"button is-link\" type=\"submit\" v-bind:class=\"{\n 'is-loading': loading\n }\">\n {{ __('shop.order.' + nameSpace + '.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.' + nameSpace + '.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.' + nameSpace + '.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 nameSpace: {\n type: String,\n default: 'oneclick'\n }\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 = ref(false);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n modal.value = true;\n };\n\n const close = (e, fromButton) => {\n modal.value = false;\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: props.nameSpace,\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.email'),\n store: props.nameSpace,\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.' + props.nameSpace + '.comment'),\n store: props.nameSpace,\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 namespace: props.nameSpace\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 <span>{{ __('shop.order.' + nameSpace + '.add') }}</span>\n </button>\n\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.' + nameSpace + '.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 class=\"button is-link\" type=\"submit\" v-bind:class=\"{\n 'is-loading': loading\n }\">\n {{ __('shop.order.' + nameSpace + '.submit') }}\n </button>\n </div>\n </template>\n </SchemaForm>\n </div>\n <div v-show=\"thanks\">\n <div v-html=\"__('shop.order.' + nameSpace + '.thanks')\"></div>\n <div class=\"mt-3\">\n <button class=\"button\" @click=\"close($event, true)\">\n {{ __('shop.order.' + nameSpace + '.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 nameSpace: {\n type: String,\n default: 'oneclick'\n }\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 = ref(false);\n const user = computed(() => store.getters['auth/me']);\n const thanks = ref(false);\n\n const open = () => {\n thanks.value = false;\n modal.value = true;\n };\n\n const close = (e, fromButton) => {\n modal.value = false;\n\n if (fromButton && props.closeAction) {\n props.closeAction();\n }\n };\n\n let schemaObject = {\n name: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.name'),\n store: 'oneclick',\n model: 'name'\n },\n phone: {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.phone'),\n type: 'phone',\n placeholder: '(050) 123-45-67',\n mask: '(###) ###-##-##',\n store: props.nameSpace,\n model: 'phone'\n }\n };\n\n if (props.model.indexOf('email') !== -1) {\n schemaObject.email = {\n component: FormText,\n label: __('shop.order.' + props.nameSpace + '.email'),\n store: props.nameSpace,\n model: 'email'\n };\n }\n\n if (props.model.indexOf('comment') !== -1) {\n schemaObject.comment = {\n component: FormTextarea,\n label: __('shop.order.' + props.nameSpace + '.comment'),\n store: props.nameSpace,\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 namespace: props.nameSpace\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","nameSpace","type","setup","loading","ref","key","errors","store","useStore","modal","user","computed","getters","thanks","close","e","fromButton","value","schemaObject","component","label","__","phone","placeholder","mask","indexOf","email","comment","schema","validationObject","yup","string","trim","required","matches","validation","object","shape","onMounted","last_name","phone_formatted","namespace","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perevorot/shop",
3
- "version": "2.0.41",
3
+ "version": "2.0.44",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"