form data

This commit is contained in:
Kseninia Mikhaylova 2024-06-05 14:02:45 +03:00
parent f038d22ab5
commit 7cd6eda391
3 changed files with 28 additions and 6 deletions

18
app.vue
View File

@ -62,7 +62,8 @@ const { data: footerData } = await useFetch<ApiFooterType[]>(`${apiBase}/footer/
const isModalOpen = ref<boolean>(false) const isModalOpen = ref<boolean>(false)
const toggleModal = () => { const toggleModal = () => {
isModalOpen.value = !!isModalOpen modal_phone.value = ''
isModalOpen.value = !isModalOpen.value
} }
const modal_phone = ref() const modal_phone = ref()
const model_form = reactive({ const model_form = reactive({
@ -77,7 +78,7 @@ const validateInput = (evt: KeyboardEvent) => {
return return
} }
} }
const validate = (evt: KeyboardEvent) => { const validate = () => {
const phone_regexp = /\(?\+[0-9]{1,3}\)? ?-?[0-9]{1,3} ?-?[0-9]{3,5} ?-?[0-9]{4}( ?-?[0-9]{3})? ?(\w{1,10}\s?\d{1,6})?/ const phone_regexp = /\(?\+[0-9]{1,3}\)? ?-?[0-9]{1,3} ?-?[0-9]{3,5} ?-?[0-9]{4}( ?-?[0-9]{3})? ?(\w{1,10}\s?\d{1,6})?/
const email_regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ const email_regex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/
@ -90,7 +91,11 @@ const validate = (evt: KeyboardEvent) => {
return return
} }
} }
const submit = (e: any) => {
console.log(e)
modal_phone.value = ''
isModalOpen.value = false
}
</script> </script>
<template> <template>
<div> <div>
@ -162,8 +167,13 @@ const validate = (evt: KeyboardEvent) => {
<div v-if="isModalOpen" class="modal-backdrop"> <div v-if="isModalOpen" class="modal-backdrop">
<div class="modal"> <div class="modal">
<h2>Оставьте номер телефона для связи</h2> <h2>Оставьте номер телефона для связи</h2>
<form @submit.prevent="submit">
<input type="phone" v-model="modal_phone" @keypress="validateInput" @keyup="validate" /> <input type="phone" v-model="modal_phone" @keypress="validateInput" @keyup="validate" />
<button class="button not-prose" :disabled="model_form.disabled">Отправить</button> <div class="flex gap-4">
<button class="not-prose" :disabled="model_form.disabled" type="submit">Отправить</button>
<button class="not-prose" type="reset" @click="toggleModal">Отмена</button>
</div>
</form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -94,11 +94,15 @@ a[href^="/#"]:not([class*="btn"]) {
} }
.modal { .modal {
@apply bg-white p-10 border rounded shadow prose flex flex-col gap-4 items-center; @apply bg-white p-10 border rounded shadow prose;
&-backdrop { &-backdrop {
@apply fixed top-0 left-0 right-0 bottom-0 bg-white bg-opacity-70 flex items-center justify-center; @apply fixed top-0 left-0 right-0 bottom-0 bg-white bg-opacity-70 flex items-center justify-center;
} }
form {
@apply flex flex-col gap-4 items-center;
}
} }
label { label {
@ -111,4 +115,8 @@ input {
button { button {
@apply rounded-full bg-primary hover:bg-primary-400 transition-colors px-10 py-3 inline-block text-lg font-bold shadow-lg cursor-pointer disabled:opacity-50 disabled:hover:bg-primary; @apply rounded-full bg-primary hover:bg-primary-400 transition-colors px-10 py-3 inline-block text-lg font-bold shadow-lg cursor-pointer disabled:opacity-50 disabled:hover:bg-primary;
&[type="reset"] {
@apply bg-neutral hover:bg-neutral-400
}
} }

View File

@ -9,6 +9,10 @@ export default <Partial<Config>>{
primary: { primary: {
...colors.blue, ...colors.blue,
DEFAULT: colors.blue[300] DEFAULT: colors.blue[300]
},
neutral: {
...colors.gray,
DEFAULT: colors.gray[300]
} }
} }
} }