adata-ui 2.1.40-beta.4 → 2.1.40-beta.6
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/components/elements/a-select-row/ASelectRowV2.vue +5 -4
- package/components/elements/button/AButtonV2.vue +29 -6
- package/components/elements/select/ASelectV2.vue +17 -9
- package/components/elements/status-badge-v2/StatusBadgeV2.vue +78 -0
- package/components/forms/feedback-form/FeedbackForm.vue +8 -8
- package/components/forms/input/AInputV2.vue +1 -1
- package/components/forms/input/textarea/ATextareaV2.vue +248 -0
- package/components/modals/AnotherDeviceModal.vue +16 -17
- package/components/modals/ApplicationAcceptedModal.vue +12 -15
- package/components/modals/ConnectingTariffModal.vue +13 -20
- package/components/modals/Insufficient-funds-modal.vue +18 -33
- package/components/modals/LimitReachedModal.vue +4 -3
- package/components/modals/NoAccessModal.vue +9 -11
- package/components/modals/PaymentMethodModal.vue +1 -1
- package/components/modals/ReportBugConfirmModal.vue +12 -10
- package/components/modals/ReportBugModal.vue +42 -36
- package/components/modals/Resend.vue +9 -10
- package/components/modals/SubmitApplicationModal.vue +27 -24
- package/components/navigation/header/HeaderLink.vue +15 -21
- package/components/navigation/header/NavList.vue +8 -32
- package/components/navigation/header/ProductMenu.vue +52 -50
- package/components/overlays/modal/AModalV2.vue +10 -9
- package/composables/useChipOverflow.ts +17 -7
- package/composables/useHeaderNavigationLinks.ts +53 -23
- package/icons/arrow/arrow-right.vue +14 -0
- package/icons/briefcase.vue +14 -0
- package/icons/car-side.vue +16 -0
- package/icons/cart.vue +15 -0
- package/icons/download-rounded.vue +15 -0
- package/icons/shield-verified.vue +14 -0
- package/lang/en.ts +34 -4
- package/lang/kk.ts +34 -4
- package/lang/ru.ts +36 -6
- package/package.json +1 -1
- package/shared/constans/pages.ts +8 -2
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { handleElementPosition } from '#adata-ui/utils/getMaxZindex'
|
|
3
|
-
|
|
4
2
|
const props = withDefaults(
|
|
5
3
|
defineProps<{
|
|
6
|
-
tariff
|
|
4
|
+
tariff?: string
|
|
7
5
|
deleteFromDom?: boolean
|
|
8
6
|
|
|
9
7
|
}>(),
|
|
@@ -24,42 +22,37 @@ function confirm() {
|
|
|
24
22
|
function cancel() {
|
|
25
23
|
isOpen.value = false
|
|
26
24
|
}
|
|
27
|
-
|
|
28
|
-
if (props.deleteFromDom) {
|
|
29
|
-
handleElementPosition('connecting-tariff')
|
|
30
|
-
}
|
|
25
|
+
// `deleteFromDom` сохранён для совместимости API; ручной z-index в AModalV2 не нужен.
|
|
31
26
|
</script>
|
|
32
27
|
|
|
33
28
|
<template>
|
|
34
|
-
<a-modal
|
|
29
|
+
<a-modal-v2
|
|
35
30
|
v-model="isOpen"
|
|
36
|
-
|
|
31
|
+
width="424px"
|
|
37
32
|
>
|
|
38
|
-
<div class="flex flex-col gap-
|
|
39
|
-
<
|
|
40
|
-
{{ t('modals.connecting.title') }}
|
|
41
|
-
</p>
|
|
42
|
-
<a-ill-turn-on-tariff class="w-full"/>
|
|
33
|
+
<div class="flex flex-col items-center justify-center gap-4 px-6 py-4">
|
|
34
|
+
<a-ill-turn-on-tariff />
|
|
43
35
|
<p class="body-400 whitespace-pre-wrap text-center">
|
|
44
36
|
{{ t('modals.connecting.questions') }}
|
|
45
37
|
</p>
|
|
46
38
|
</div>
|
|
47
39
|
|
|
48
40
|
<template #footer>
|
|
49
|
-
<div class="flex gap-2
|
|
50
|
-
<a-button
|
|
41
|
+
<div class="flex w-full gap-2">
|
|
42
|
+
<a-button-v2
|
|
51
43
|
view="outline"
|
|
44
|
+
color="blue"
|
|
52
45
|
block
|
|
53
46
|
@click="cancel"
|
|
54
47
|
>
|
|
55
48
|
{{ t('modals.buttons.close') }}
|
|
56
|
-
</a-button>
|
|
57
|
-
<a-button block @click="confirm">
|
|
49
|
+
</a-button-v2>
|
|
50
|
+
<a-button-v2 block @click="confirm">
|
|
58
51
|
{{ t('reuse.yes') }}
|
|
59
|
-
</a-button>
|
|
52
|
+
</a-button-v2>
|
|
60
53
|
</div>
|
|
61
54
|
</template>
|
|
62
|
-
</a-modal>
|
|
55
|
+
</a-modal-v2>
|
|
63
56
|
</template>
|
|
64
57
|
|
|
65
58
|
<style scoped>
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { UserInfo } from '~/api/modules/user/types'
|
|
3
|
-
import { handleElementPosition } from '#adata-ui/utils/getMaxZindex'
|
|
4
|
-
|
|
5
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
6
|
-
deleteFromDom: false,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
const emit = defineEmits<{
|
|
10
|
-
(e: 'next'): void
|
|
11
|
-
}>()
|
|
12
3
|
|
|
13
4
|
const { t } = useI18n()
|
|
14
5
|
|
|
15
|
-
interface Props {
|
|
16
|
-
deleteFromDom?: boolean
|
|
17
|
-
}
|
|
18
6
|
const { topUpSidePanel } = usePayment()
|
|
19
7
|
|
|
20
8
|
const isOpen = defineModel<boolean>({ default: false })
|
|
@@ -27,49 +15,46 @@ function confirm() {
|
|
|
27
15
|
function cancel() {
|
|
28
16
|
isOpen.value = false
|
|
29
17
|
}
|
|
30
|
-
|
|
31
|
-
if (props.deleteFromDom) {
|
|
32
|
-
handleElementPosition('insufficient-funds')
|
|
33
|
-
}
|
|
34
18
|
</script>
|
|
35
19
|
|
|
36
20
|
<template>
|
|
37
|
-
<a-modal
|
|
21
|
+
<a-modal-v2
|
|
38
22
|
v-model="isOpen"
|
|
39
|
-
|
|
23
|
+
width="424px"
|
|
40
24
|
>
|
|
41
|
-
<div class="flex flex-col gap-
|
|
42
|
-
<
|
|
25
|
+
<div class="flex flex-col gap-4 px-6 py-4">
|
|
26
|
+
<a-ill-empty-wallet class="self-center" />
|
|
27
|
+
<p class="text-center text-[18px] font-semibold">
|
|
43
28
|
{{ t('modals.low_balance.title') }}
|
|
44
29
|
</p>
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
<p class="text-center">
|
|
31
|
+
{{ t('modals.low_balance.questions') }}
|
|
32
|
+
</p>
|
|
33
|
+
<div class="flex flex-col rounded-xl border border-blue-500 bg-blue-50 px-4 py-2 dark:border-blue-500 dark:bg-blue-950/40">
|
|
34
|
+
<p class="body-600 text-center text-blue-700 dark:text-blue-300">
|
|
48
35
|
{{ t('modals.low_balance.current_balance') }}
|
|
49
36
|
</p>
|
|
50
|
-
<p class="body-600 text-center text-xl text-
|
|
37
|
+
<p class="body-600 text-center text-xl text-blue-700 dark:text-blue-300">
|
|
51
38
|
{{ userInfo?.balance ? userInfo?.balance.toLocaleString('ru-RU') : 0 }}₸
|
|
52
39
|
</p>
|
|
53
40
|
</div>
|
|
54
|
-
<p class="text-center">
|
|
55
|
-
{{ t('modals.low_balance.questions') }}
|
|
56
|
-
</p>
|
|
57
41
|
</div>
|
|
58
42
|
<template #footer>
|
|
59
|
-
<div class="flex gap-2
|
|
60
|
-
<a-button
|
|
43
|
+
<div class="flex gap-2">
|
|
44
|
+
<a-button-v2
|
|
61
45
|
view="outline"
|
|
46
|
+
color="blue"
|
|
62
47
|
block
|
|
63
48
|
@click="cancel"
|
|
64
49
|
>
|
|
65
50
|
{{ t('modals.buttons.close') }}
|
|
66
|
-
</a-button>
|
|
67
|
-
<a-button block @click="confirm">
|
|
51
|
+
</a-button-v2>
|
|
52
|
+
<a-button-v2 block @click="confirm">
|
|
68
53
|
{{ t('modals.buttons.topUp') }}
|
|
69
|
-
</a-button>
|
|
54
|
+
</a-button-v2>
|
|
70
55
|
</div>
|
|
71
56
|
</template>
|
|
72
|
-
</a-modal>
|
|
57
|
+
</a-modal-v2>
|
|
73
58
|
</template>
|
|
74
59
|
|
|
75
60
|
<style scoped>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
|
|
3
2
|
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
4
3
|
|
|
5
4
|
const { t } = useI18n()
|
|
@@ -16,11 +15,13 @@ function goTariffs() {
|
|
|
16
15
|
<template>
|
|
17
16
|
<a-modal v-model="isOpen" :title="t('modals.limit.title')">
|
|
18
17
|
<div class="flex flex-col items-center gap-5 text-center text-sm">
|
|
19
|
-
<a-ill-empty-wallet
|
|
18
|
+
<a-ill-empty-wallet />
|
|
20
19
|
<div>{{ t('modals.limit.content') }}</div>
|
|
21
20
|
</div>
|
|
22
21
|
<template #footer>
|
|
23
|
-
<a-button @click="goTariffs"
|
|
22
|
+
<a-button block @click="goTariffs">
|
|
23
|
+
{{ t('modals.buttons.goTariffs') }}
|
|
24
|
+
</a-button>
|
|
24
25
|
</template>
|
|
25
26
|
</a-modal>
|
|
26
27
|
</template>
|
|
@@ -5,33 +5,31 @@ const { t } = useI18n()
|
|
|
5
5
|
|
|
6
6
|
const isOpen = useNoAccessModal()
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
function onClose() {
|
|
9
9
|
isOpen.value = false
|
|
10
10
|
}
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<template>
|
|
14
|
-
<a-modal
|
|
14
|
+
<a-modal-v2
|
|
15
15
|
v-model="isOpen"
|
|
16
|
-
|
|
16
|
+
width="424px"
|
|
17
17
|
>
|
|
18
|
-
<div class="flex flex-col gap-
|
|
19
|
-
<
|
|
20
|
-
{{ t('modals.no_access.title') }}
|
|
21
|
-
</p>
|
|
22
|
-
<a-ill-door class="w-full" />
|
|
18
|
+
<div class="flex flex-col items-center justify-center gap-4 px-6 py-4">
|
|
19
|
+
<a-ill-door />
|
|
23
20
|
<p class="body-400 whitespace-pre-wrap text-center">
|
|
24
21
|
{{ t('modals.no_access.info') }}
|
|
25
22
|
</p>
|
|
26
23
|
</div>
|
|
27
24
|
<template #footer>
|
|
28
|
-
<a-button
|
|
25
|
+
<a-button-v2
|
|
29
26
|
view="outline"
|
|
27
|
+
color="blue"
|
|
30
28
|
block
|
|
31
29
|
@click="onClose"
|
|
32
30
|
>
|
|
33
31
|
{{ t('modals.buttons.close') }}
|
|
34
|
-
</a-button>
|
|
32
|
+
</a-button-v2>
|
|
35
33
|
</template>
|
|
36
|
-
</a-modal>
|
|
34
|
+
</a-modal-v2>
|
|
37
35
|
</template>
|
|
@@ -66,7 +66,7 @@ if (props.deleteFromDom) {
|
|
|
66
66
|
:name="`${item.name}`"
|
|
67
67
|
side="right"
|
|
68
68
|
:value="item.id"
|
|
69
|
-
class="flex items-center justify-between gap-2 bg-gray-50 p-[10px_16px]
|
|
69
|
+
class="flex items-center justify-between gap-2 rounded-md bg-gray-50 p-[10px_16px] dark:bg-[#393D40]"
|
|
70
70
|
>
|
|
71
71
|
<div class="flex w-full items-center gap-2">
|
|
72
72
|
<component :is="item.img" />
|
|
@@ -3,28 +3,30 @@ const { t } = useI18n()
|
|
|
3
3
|
|
|
4
4
|
const isOpen = defineModel<boolean>({ required: true })
|
|
5
5
|
</script>
|
|
6
|
+
|
|
6
7
|
<template>
|
|
7
|
-
<a-modal
|
|
8
|
+
<a-modal-v2
|
|
8
9
|
v-model="isOpen"
|
|
9
10
|
width="424px"
|
|
10
11
|
>
|
|
11
|
-
<
|
|
12
|
+
<div class="flex flex-col items-center justify-center gap-4 px-6 py-4">
|
|
13
|
+
<a-ill-ok />
|
|
12
14
|
<p class="heading-02 text-center font-bold">
|
|
13
15
|
{{ t('modals.report_bug.confirmed') }}
|
|
14
16
|
</p>
|
|
15
|
-
|
|
16
|
-
<div class="flex flex-col gap-5 items-center">
|
|
17
|
-
<a-ill-ok />
|
|
18
|
-
<p class="text-sm text-center">
|
|
17
|
+
<p class="body-400 text-center">
|
|
19
18
|
{{ t('modals.report_bug.gratitude') }}
|
|
20
19
|
</p>
|
|
21
|
-
|
|
20
|
+
</div>
|
|
21
|
+
<template #footer>
|
|
22
|
+
<a-button-v2
|
|
22
23
|
view="outline"
|
|
24
|
+
color="blue"
|
|
23
25
|
block
|
|
24
26
|
@click="isOpen = false"
|
|
25
27
|
>
|
|
26
28
|
{{ t('actions.close') }}
|
|
27
|
-
</a-button>
|
|
28
|
-
</
|
|
29
|
-
</a-modal>
|
|
29
|
+
</a-button-v2>
|
|
30
|
+
</template>
|
|
31
|
+
</a-modal-v2>
|
|
30
32
|
</template>
|
|
@@ -18,7 +18,7 @@ const env = myLayer.mode
|
|
|
18
18
|
|
|
19
19
|
const mask = new Mask({ mask: '# (###) ### ## ##' })
|
|
20
20
|
|
|
21
|
-
const isOpen = defineModel<boolean>()
|
|
21
|
+
const isOpen = defineModel<boolean>({ default: false })
|
|
22
22
|
const form: any = reactive({
|
|
23
23
|
name: '',
|
|
24
24
|
email: '',
|
|
@@ -35,6 +35,7 @@ const scheme = z.object({
|
|
|
35
35
|
})
|
|
36
36
|
|
|
37
37
|
const submitted = ref(false)
|
|
38
|
+
const sending = ref(false)
|
|
38
39
|
|
|
39
40
|
const { validation, getError } = useUIValidation(
|
|
40
41
|
scheme,
|
|
@@ -58,6 +59,7 @@ watch(phone, () => {
|
|
|
58
59
|
async function send() {
|
|
59
60
|
submitted.value = true
|
|
60
61
|
if (validation.value) return
|
|
62
|
+
sending.value = true
|
|
61
63
|
try {
|
|
62
64
|
await $fetch<any>(`https://users.${env}.kz/api/v1/message/error`, {
|
|
63
65
|
method: 'POST',
|
|
@@ -79,86 +81,90 @@ async function send() {
|
|
|
79
81
|
form.comment = ''
|
|
80
82
|
phone.value = ''
|
|
81
83
|
submitted.value = false
|
|
84
|
+
sending.value = false
|
|
82
85
|
emit('close')
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
88
|
</script>
|
|
86
89
|
|
|
87
90
|
<template>
|
|
88
|
-
<a-modal v-model="isOpen"
|
|
91
|
+
<a-modal-v2 v-model="isOpen" width="424px">
|
|
89
92
|
<template #header>
|
|
90
|
-
<
|
|
93
|
+
<h2 class="text-base font-semibold text-gray-900 dark:text-gray-100" data-test-id="report-form-title">
|
|
91
94
|
{{ t('modals.report_bug.title') }}
|
|
92
|
-
</
|
|
95
|
+
</h2>
|
|
93
96
|
</template>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
|
|
98
|
+
<div class="flex flex-col gap-5 px-6 py-4">
|
|
99
|
+
<div class="flex flex-col items-center justify-center gap-4">
|
|
100
|
+
<a-ill-stop-sign class="size-[140px]" />
|
|
97
101
|
<slot name="title">
|
|
98
102
|
<p class="label-400 text-center">
|
|
99
103
|
{{ name }}
|
|
100
104
|
</p>
|
|
101
105
|
</slot>
|
|
102
106
|
</div>
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
|
|
108
|
+
<div class="flex flex-col gap-3">
|
|
109
|
+
<a-input-v2
|
|
105
110
|
v-model="form.name"
|
|
106
111
|
required
|
|
107
|
-
:data-test-id="'report-form-name-input'"
|
|
108
112
|
:label="t('modals.report_bug.labels.name')"
|
|
109
113
|
:error="getError('name')"
|
|
114
|
+
data-test-id="report-form-name-input"
|
|
110
115
|
/>
|
|
111
|
-
<a-input-
|
|
116
|
+
<a-input-v2
|
|
112
117
|
v-model="form.email"
|
|
113
118
|
required
|
|
114
|
-
|
|
119
|
+
type="email"
|
|
115
120
|
:label="t('modals.report_bug.labels.email')"
|
|
116
121
|
:error="getError('email')"
|
|
122
|
+
data-test-id="report-form-email-input"
|
|
117
123
|
/>
|
|
118
|
-
<a-input-
|
|
124
|
+
<a-input-v2
|
|
119
125
|
v-model="phone"
|
|
120
|
-
v-maska
|
|
121
126
|
required
|
|
122
|
-
|
|
127
|
+
type="tel"
|
|
123
128
|
clearable
|
|
124
|
-
|
|
129
|
+
mask="8 (###) ### ## ##"
|
|
125
130
|
:label="t('modals.report_bug.labels.phone')"
|
|
126
131
|
:error="getError('phone_number')"
|
|
132
|
+
data-test-id="report-form-phone-input"
|
|
133
|
+
/>
|
|
134
|
+
<a-textarea-v2
|
|
135
|
+
v-model="form.comment"
|
|
136
|
+
required
|
|
137
|
+
:rows="4"
|
|
138
|
+
resize="none"
|
|
139
|
+
:label="t('modals.report_bug.labels.comment')"
|
|
140
|
+
:error="getError('comment')"
|
|
141
|
+
data-test-id="report-form-comment-textarea"
|
|
127
142
|
/>
|
|
128
|
-
<div>
|
|
129
|
-
<a-textarea
|
|
130
|
-
v-model="form.comment"
|
|
131
|
-
required
|
|
132
|
-
:data-test-id="'report-form-comment-textarea'"
|
|
133
|
-
:label="t('modals.report_bug.labels.comment')"
|
|
134
|
-
size="md"
|
|
135
|
-
:error="getError('comment')"
|
|
136
|
-
class="min-h-[120px]"
|
|
137
|
-
:resizeable="false"
|
|
138
|
-
/>
|
|
139
|
-
</div>
|
|
140
143
|
</div>
|
|
141
144
|
</div>
|
|
145
|
+
|
|
142
146
|
<template #footer>
|
|
143
|
-
<div class="flex
|
|
144
|
-
<a-button
|
|
147
|
+
<div class="flex gap-2">
|
|
148
|
+
<a-button-v2
|
|
145
149
|
view="outline"
|
|
146
|
-
|
|
150
|
+
color="blue"
|
|
151
|
+
block
|
|
147
152
|
data-test-id="report-form-close-button"
|
|
148
153
|
@click="emit('close')"
|
|
149
154
|
>
|
|
150
155
|
{{ t('actions.close') }}
|
|
151
|
-
</a-button>
|
|
152
|
-
<a-button
|
|
153
|
-
|
|
156
|
+
</a-button-v2>
|
|
157
|
+
<a-button-v2
|
|
158
|
+
block
|
|
159
|
+
:loading="sending"
|
|
154
160
|
data-test-id="report-form-submit-button"
|
|
155
161
|
@click="send"
|
|
156
162
|
>
|
|
157
163
|
{{ t('actions.send') }}
|
|
158
|
-
</a-button>
|
|
164
|
+
</a-button-v2>
|
|
159
165
|
</div>
|
|
160
166
|
</template>
|
|
161
|
-
</a-modal>
|
|
167
|
+
</a-modal-v2>
|
|
162
168
|
</template>
|
|
163
169
|
|
|
164
170
|
<style scoped></style>
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
|
|
3
2
|
import { useUrls } from '#adata-ui/composables/useUrls'
|
|
4
3
|
|
|
5
4
|
const emit = defineEmits<{
|
|
@@ -17,33 +16,33 @@ function runTimer() {
|
|
|
17
16
|
const intervalId = setInterval(() => {
|
|
18
17
|
if (timer.value <= 0) {
|
|
19
18
|
isResend.value = true
|
|
20
|
-
clearInterval(intervalId)
|
|
21
|
-
return
|
|
19
|
+
clearInterval(intervalId)
|
|
20
|
+
return
|
|
22
21
|
}
|
|
23
|
-
timer.value
|
|
24
|
-
}, 1000)
|
|
22
|
+
timer.value--
|
|
23
|
+
}, 1000)
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
onMounted(() => resend())
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
function resend() {
|
|
30
29
|
isResend.value = false
|
|
31
30
|
runTimer()
|
|
32
31
|
emit('resend')
|
|
33
32
|
}
|
|
34
|
-
|
|
33
|
+
function goToMain() {
|
|
35
34
|
if (route.query.url) {
|
|
36
35
|
document.location.replace(route.query.url)
|
|
37
|
-
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
38
|
document.location.replace(landing)
|
|
39
39
|
}
|
|
40
40
|
emit('close')
|
|
41
|
-
|
|
42
41
|
}
|
|
43
42
|
</script>
|
|
44
43
|
|
|
45
44
|
<template>
|
|
46
|
-
<div class="flex flex-col
|
|
45
|
+
<div class="flex flex-col items-center justify-center gap-5">
|
|
47
46
|
<p class="heading-02">
|
|
48
47
|
{{ $t('login.modal.title') }}
|
|
49
48
|
</p>
|
|
@@ -57,65 +57,68 @@ onMounted(() => {
|
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
59
|
<template>
|
|
60
|
-
<a-modal
|
|
60
|
+
<a-modal-v2
|
|
61
61
|
v-model="isOpen"
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
width="424px"
|
|
63
|
+
persistent
|
|
64
64
|
>
|
|
65
|
-
<div class="flex flex-col gap-5">
|
|
66
|
-
<p class="text-center
|
|
65
|
+
<div class="flex flex-col gap-5 px-6 py-4">
|
|
66
|
+
<p class="heading-02 text-center">
|
|
67
67
|
{{ t('modals.submit_application_modal.title') }}
|
|
68
68
|
</p>
|
|
69
69
|
<a-ill-mail class="w-full" />
|
|
70
|
-
<div class="flex flex-col gap-
|
|
71
|
-
<a-input-
|
|
70
|
+
<div class="flex flex-col gap-3">
|
|
71
|
+
<a-input-v2
|
|
72
72
|
v-model="form.name"
|
|
73
|
+
required
|
|
73
74
|
:label="t('modals.submit_application_modal.labels.name')"
|
|
74
75
|
:error="getError('name')"
|
|
75
|
-
required
|
|
76
76
|
/>
|
|
77
|
-
<a-input-
|
|
77
|
+
<a-input-v2
|
|
78
78
|
v-model="form.email"
|
|
79
|
+
required
|
|
80
|
+
type="email"
|
|
79
81
|
:label="t('modals.submit_application_modal.labels.email')"
|
|
80
82
|
:error="getError('email')"
|
|
81
|
-
required
|
|
82
83
|
/>
|
|
83
|
-
<a-input-
|
|
84
|
+
<a-input-v2
|
|
84
85
|
v-model="form.phone"
|
|
85
|
-
|
|
86
|
+
required
|
|
87
|
+
type="tel"
|
|
88
|
+
clearable
|
|
89
|
+
mask="8 (###) ###-##-##"
|
|
86
90
|
:label="t('modals.submit_application_modal.labels.phone')"
|
|
87
|
-
data-maska="8 (###) ###-##-##"
|
|
88
91
|
:error="getError('phone')"
|
|
89
|
-
clearable
|
|
90
|
-
required
|
|
91
92
|
/>
|
|
92
|
-
<a-textarea
|
|
93
|
+
<a-textarea-v2
|
|
93
94
|
v-model="form.comment"
|
|
95
|
+
required
|
|
96
|
+
:rows="4"
|
|
97
|
+
resize="none"
|
|
94
98
|
:label="t('modals.submit_application_modal.labels.comment')"
|
|
95
99
|
:error="getError('comment')"
|
|
96
|
-
resizeable="none"
|
|
97
|
-
required
|
|
98
100
|
/>
|
|
99
101
|
</div>
|
|
100
102
|
</div>
|
|
101
103
|
<template #footer>
|
|
102
|
-
<div class="flex gap-2
|
|
103
|
-
<a-button
|
|
104
|
+
<div class="flex gap-2">
|
|
105
|
+
<a-button-v2
|
|
104
106
|
view="outline"
|
|
107
|
+
color="blue"
|
|
105
108
|
block
|
|
106
109
|
@click="cancel"
|
|
107
110
|
>
|
|
108
111
|
{{ t('reuse.close') }}
|
|
109
|
-
</a-button>
|
|
110
|
-
<a-button
|
|
112
|
+
</a-button-v2>
|
|
113
|
+
<a-button-v2
|
|
111
114
|
block
|
|
112
115
|
@click="send"
|
|
113
116
|
>
|
|
114
117
|
{{ t('reuse.send') }}
|
|
115
|
-
</a-button>
|
|
118
|
+
</a-button-v2>
|
|
116
119
|
</div>
|
|
117
120
|
</template>
|
|
118
|
-
</a-modal>
|
|
121
|
+
</a-modal-v2>
|
|
119
122
|
</template>
|
|
120
123
|
|
|
121
124
|
<style scoped>
|