adata-ui 2.1.41-beta.3 → 2.1.41-beta.5
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/empty-box/empty-box-V2.vue +1 -1
- package/components/elements/error-template/index.vue +6 -3
- package/components/features/go-top/GoTop.vue +4 -0
- package/components/forms/feedback-form/FeedbackFormV2.vue +3 -6
- package/components/modals/id/IdModals.vue +14 -10
- package/components/navigation/header/AHeader.vue +5 -1
- package/icons/main-filter.vue +6 -1
- package/illustrations/notes-search.vue +20 -0
- package/illustrations/notes-sticky.vue +20 -0
- package/lang/en.ts +1 -0
- package/lang/kk.ts +1 -0
- package/lang/ru.ts +1 -0
- package/package.json +1 -1
|
@@ -3,8 +3,11 @@ import { AIconArrowLeft, AIconHome } from '#components'
|
|
|
3
3
|
|
|
4
4
|
interface Props {
|
|
5
5
|
statusCode: number
|
|
6
|
+
homePath?: string
|
|
6
7
|
}
|
|
7
|
-
const props = defineProps<Props>()
|
|
8
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
9
|
+
homePath: '/',
|
|
10
|
+
})
|
|
8
11
|
|
|
9
12
|
const { t } = useI18n()
|
|
10
13
|
const localePath = useLocalePath()
|
|
@@ -14,7 +17,7 @@ const errorTitle = computed(() => t(`errorPage.${props.statusCode}.title`))
|
|
|
14
17
|
const errorSubTitle = computed(() => t(`errorPage.${props.statusCode}.subTitle`))
|
|
15
18
|
|
|
16
19
|
function goToMainPage() {
|
|
17
|
-
return navigateTo(`${localePath(
|
|
20
|
+
return navigateTo(`${localePath(props.homePath)}`, { external: true })
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
function goBack() {
|
|
@@ -22,7 +25,7 @@ function goBack() {
|
|
|
22
25
|
router.back()
|
|
23
26
|
}
|
|
24
27
|
else {
|
|
25
|
-
return navigateTo(`${localePath(
|
|
28
|
+
return navigateTo(`${localePath(props.homePath)}`, { external: true })
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
</script>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { AIconChevronUp } from "#components";
|
|
3
3
|
|
|
4
|
+
const { t } = useI18n()
|
|
5
|
+
|
|
4
6
|
const props = defineProps<{
|
|
5
7
|
bottomOffset?: number
|
|
6
8
|
}>()
|
|
@@ -49,9 +51,11 @@ onUnmounted(() => {
|
|
|
49
51
|
:class="[{ 'opacity-0': !isShow }]"
|
|
50
52
|
:style="{ bottom: footerHeight + 'px' }"
|
|
51
53
|
>
|
|
54
|
+
<!-- Кнопка только с иконкой: без aria-label скринридер читает её как "button". -->
|
|
52
55
|
<a-button
|
|
53
56
|
@click="goTop"
|
|
54
57
|
form="icon"
|
|
58
|
+
:aria-label="t('reuse.goTop')"
|
|
55
59
|
:icon="AIconChevronUp"
|
|
56
60
|
icon-class="h-6 w-6"
|
|
57
61
|
size="lg"
|
|
@@ -30,10 +30,10 @@ const comment = ref<string>('')
|
|
|
30
30
|
const submitted = ref(false)
|
|
31
31
|
|
|
32
32
|
const scheme = z.object({
|
|
33
|
-
fullName: z.string()
|
|
33
|
+
fullName: z.string(),
|
|
34
34
|
phone: z.string().nonempty(t('forms.feedback.fieldRequired')).min(17, t('forms.feedback.phoneMinLength', { count: 10 })),
|
|
35
|
-
mail: z.string()
|
|
36
|
-
comment: z.string().
|
|
35
|
+
mail: z.string(),
|
|
36
|
+
comment: z.string().max(250, t('forms.feedback.commentMaxLength', { count: 250 })),
|
|
37
37
|
})
|
|
38
38
|
|
|
39
39
|
const { validation, getError } = useUIValidation(
|
|
@@ -98,7 +98,6 @@ onMounted(() => {
|
|
|
98
98
|
v-model="fullName"
|
|
99
99
|
variant="gray"
|
|
100
100
|
size="md"
|
|
101
|
-
required
|
|
102
101
|
:label="t('forms.demo.n')"
|
|
103
102
|
:error="getError('fullName')"
|
|
104
103
|
:disabled="isLoading"
|
|
@@ -120,7 +119,6 @@ onMounted(() => {
|
|
|
120
119
|
type="email"
|
|
121
120
|
variant="gray"
|
|
122
121
|
size="md"
|
|
123
|
-
required
|
|
124
122
|
:label="t('forms.feedback.email')"
|
|
125
123
|
:error="getError('mail')"
|
|
126
124
|
:disabled="isLoading"
|
|
@@ -135,7 +133,6 @@ onMounted(() => {
|
|
|
135
133
|
:label="t('forms.feedback.comment')"
|
|
136
134
|
:error="getError('comment')"
|
|
137
135
|
:disabled="isLoading"
|
|
138
|
-
required
|
|
139
136
|
/>
|
|
140
137
|
<a-button-v2
|
|
141
138
|
type="submit"
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import IdAutoLogoutModal from '#adata-ui/components/modals/id/IdAutoLogoutModal.vue'
|
|
3
|
-
import IdConfirmAccountOtpModal from '#adata-ui/components/modals/id/IdConfirmAccountOtpModal.vue'
|
|
4
|
-
import IdConfirmSuccessfulModal from '#adata-ui/components/modals/id/IdConfirmSuccessfulModal.vue'
|
|
5
|
-
import IdLoginModal from '#adata-ui/components/modals/id/IdLoginModal.vue'
|
|
6
|
-
import IdNewPasswordModal from '#adata-ui/components/modals/id/IdNewPasswordModal.vue'
|
|
7
|
-
import IdPasswordSuccessfulModal from '#adata-ui/components/modals/id/IdPasswordSuccessfulModal.vue'
|
|
8
|
-
import IdRecoveryModal from '#adata-ui/components/modals/id/IdRecoveryModal.vue'
|
|
9
|
-
import IdRegistrationModal from '#adata-ui/components/modals/id/IdRegistrationModal.vue'
|
|
10
|
-
import IdResetPasswordOtpModal from '#adata-ui/components/modals/id/IdResetPasswordOtpModal.vue'
|
|
11
|
-
import IdTwoFactorModal from '#adata-ui/components/modals/id/IdTwoFactorModal.vue'
|
|
12
2
|
import { removeTrailingSlash } from '#adata-ui/components/utils/removeTrailingSlash'
|
|
13
3
|
import { writeAccessTokenCookie } from '#adata-ui/composables/useAccessTokenCookie'
|
|
4
|
+
// Каждое из этих окон рендерится только под своим v-if, но статический import
|
|
5
|
+
// всё равно тащил все десять (плюс zod, который они используют для валидации)
|
|
6
|
+
// в стартовый чанк каждого приложения-потребителя. defineAsyncComponent грузит
|
|
7
|
+
// чанк в момент открытия окна: поведение то же, стартовый бандл меньше.
|
|
8
|
+
const IdAutoLogoutModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdAutoLogoutModal.vue'))
|
|
9
|
+
const IdConfirmAccountOtpModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdConfirmAccountOtpModal.vue'))
|
|
10
|
+
const IdConfirmSuccessfulModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdConfirmSuccessfulModal.vue'))
|
|
11
|
+
const IdLoginModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdLoginModal.vue'))
|
|
12
|
+
const IdNewPasswordModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdNewPasswordModal.vue'))
|
|
13
|
+
const IdPasswordSuccessfulModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdPasswordSuccessfulModal.vue'))
|
|
14
|
+
const IdRecoveryModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdRecoveryModal.vue'))
|
|
15
|
+
const IdRegistrationModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdRegistrationModal.vue'))
|
|
16
|
+
const IdResetPasswordOtpModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdResetPasswordOtpModal.vue'))
|
|
17
|
+
const IdTwoFactorModal = defineAsyncComponent(() => import('#adata-ui/components/modals/id/IdTwoFactorModal.vue'))
|
|
14
18
|
|
|
15
19
|
const emit = defineEmits<{
|
|
16
20
|
(e: 'closed', value: boolean): void
|
|
@@ -152,11 +152,15 @@ onMounted(() => {
|
|
|
152
152
|
/>
|
|
153
153
|
</div>
|
|
154
154
|
<!-- Mobile hidden -->
|
|
155
|
+
<!--
|
|
156
|
+
role="list" здесь был вреден: у <nav> уже есть неявная роль navigation,
|
|
157
|
+
а list требует, чтобы прямые потомки были listitem — ими логотип и
|
|
158
|
+
header-link не являются. Разметка списка живёт внутри HeaderLink (ul/li).
|
|
159
|
+
-->
|
|
155
160
|
<nav
|
|
156
161
|
class="hidden items-center gap-4 lg:flex"
|
|
157
162
|
itemscope
|
|
158
163
|
itemtype="https://schema.org/SiteNavigationElement"
|
|
159
|
-
role="list"
|
|
160
164
|
>
|
|
161
165
|
<nuxt-link-locale
|
|
162
166
|
aria-label="Adata-logo"
|
package/icons/main-filter.vue
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
-
<path
|
|
3
|
+
<path
|
|
4
|
+
fill-rule="evenodd"
|
|
5
|
+
clip-rule="evenodd"
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
d="M15.1487 5.43944C15.1487 4.71477 15.7361 4.1273 16.4608 4.1273C17.1855 4.1273 17.7729 4.71477 17.7729 5.43944C17.7729 6.16411 17.1855 6.75158 16.4608 6.75158C15.7361 6.75158 15.1487 6.16411 15.1487 5.43944ZM13.683 6.22775H2.29021C1.85541 6.22775 1.50293 5.87527 1.50293 5.44046C1.50293 5.00566 1.85541 4.65318 2.29021 4.65318H13.6825C14.0248 3.44103 15.1391 2.55273 16.4608 2.55273C17.7825 2.55273 18.8968 3.44103 19.2391 4.65318H21.7128C22.1476 4.65318 22.5 5.00566 22.5 5.44046C22.5 5.87527 22.1476 6.22775 21.7128 6.22775H19.2386C18.8955 7.43886 17.7818 8.32615 16.4608 8.32615C15.1398 8.32615 14.0261 7.43886 13.683 6.22775ZM8.59002 9.11292C9.91221 9.11292 11.0268 10.0018 11.3687 11.2146H21.7099C22.1447 11.2146 22.4972 11.5671 22.4972 12.0019C22.4972 12.4367 22.1447 12.7892 21.7099 12.7892H11.3674C11.024 13.9997 9.91053 14.8863 8.59002 14.8863C7.2695 14.8863 6.15608 13.9997 5.81263 12.7892H2.29021C1.85541 12.7892 1.50293 12.4367 1.50293 12.0019C1.50293 11.5671 1.85541 11.2146 2.29021 11.2146H5.81132C6.15325 10.0018 7.26783 9.11292 8.59002 9.11292ZM8.59002 10.6875C7.86534 10.6875 7.27788 11.2749 7.27788 11.9996C7.27788 12.7243 7.86534 13.3118 8.59002 13.3118C9.31469 13.3118 9.90216 12.7243 9.90216 11.9996C9.90216 11.2749 9.31469 10.6875 8.59002 10.6875ZM19.2386 19.349C18.8956 20.5602 17.7818 21.4475 16.4608 21.4475C15.1398 21.4475 14.026 20.5602 13.683 19.349H2.29021C1.85541 19.349 1.50293 18.9965 1.50293 18.5617C1.50293 18.1269 1.85541 17.7744 2.29021 17.7744H13.6825C14.0249 16.5624 15.1391 15.6741 16.4608 15.6741C17.7825 15.6741 18.8967 16.5624 19.2391 17.7744H21.7128C22.1476 17.7744 22.5 18.1269 22.5 18.5617C22.5 18.9965 22.1476 19.349 21.7128 19.349H19.2386ZM15.1487 18.5608C15.1487 17.8362 15.7361 17.2487 16.4608 17.2487C17.1855 17.2487 17.7729 17.8362 17.7729 18.5608C17.7729 19.2855 17.1855 19.873 16.4608 19.873C15.7361 19.873 15.1487 19.2855 15.1487 18.5608Z"
|
|
8
|
+
/>
|
|
4
9
|
</svg>
|
|
5
10
|
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-search-icon lucide-search"
|
|
16
|
+
>
|
|
17
|
+
<path d="m21 21-4.34-4.34" />
|
|
18
|
+
<circle cx="11" cy="11" r="8" />
|
|
19
|
+
</svg>
|
|
20
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<template>
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
width="24"
|
|
8
|
+
height="24"
|
|
9
|
+
viewBox="0 0 24 24"
|
|
10
|
+
fill="none"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
class="lucide lucide-sticky-note-icon lucide-sticky-note"
|
|
16
|
+
>
|
|
17
|
+
<path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z" />
|
|
18
|
+
<path d="M15 3v5a1 1 0 0 0 1 1h5" />
|
|
19
|
+
</svg>
|
|
20
|
+
</template>
|
package/lang/en.ts
CHANGED
package/lang/kk.ts
CHANGED
package/lang/ru.ts
CHANGED