adata-ui 2.1.40-beta.14 → 2.1.40-beta.16
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/status-badge/AStatusBadge.vue +4 -4
- package/components/features/payment/process/PaymentKaspiQrSidePanel.vue +4 -2
- package/components/features/payment/process/PaymentMethodSidePanel.vue +7 -2
- package/components/features/payment/process/PaymentTopUpSidePanel.vue +9 -4
- package/components/modals/ReportBugModal.vue +5 -3
- package/components/navigation/pill-tabs/APillTabsV2.vue +23 -3
- package/components/overlays/side-panel/ASidePanel.vue +4 -1
- package/composables/useHeaderNavigationLinks.ts +6 -0
- package/lang/en.ts +6 -2
- package/lang/kk.ts +6 -2
- package/lang/ru.ts +6 -2
- package/package.json +1 -1
|
@@ -81,11 +81,11 @@ const pointSwitchValues: ViewType = {
|
|
|
81
81
|
|
|
82
82
|
const classes = computed(() =>
|
|
83
83
|
[
|
|
84
|
-
'text-body-md rounded-
|
|
84
|
+
'text-body-md rounded-2xl select-none inline-flex gap-[5.5px] justify-center items-center border',
|
|
85
85
|
typeSwitchValues[props.view][props.type],
|
|
86
|
-
props.size === 'xs' ? 'px-
|
|
87
|
-
props.size === 'sm' ? 'text-body-sm font-semibold
|
|
88
|
-
props.size === 'lg' ? 'px-
|
|
86
|
+
props.size === 'xs' ? 'px-2 py-[2px] text-body-sm font-bold' : '',
|
|
87
|
+
props.size === 'sm' ? 'px-[10px] py-1 text-body-sm font-semibold h-6' : '',
|
|
88
|
+
props.size === 'lg' ? 'px-3 py-[6px] font-semibold' : '',
|
|
89
89
|
])
|
|
90
90
|
|
|
91
91
|
const pointClasses = computed(() =>
|
|
@@ -122,11 +122,12 @@ watch(isOpen, async (value) => {
|
|
|
122
122
|
<button
|
|
123
123
|
type="button"
|
|
124
124
|
class="rounded-md p-1 transition-colors hover:bg-gray-100 dark:hover:bg-white/[0.06]"
|
|
125
|
+
data-test-id="kaspi-qr-back-button"
|
|
125
126
|
@click="onBack"
|
|
126
127
|
>
|
|
127
128
|
<a-icon-chevron-left class="size-6" />
|
|
128
129
|
</button>
|
|
129
|
-
<p class="text-xl font-semibold text-deepblue-900 dark:text-gray-100">
|
|
130
|
+
<p class="text-xl font-semibold text-deepblue-900 dark:text-gray-100" data-test-id="kaspi-qr-title">
|
|
130
131
|
{{ t('payment.kaspi.title') }}
|
|
131
132
|
</p>
|
|
132
133
|
</div>
|
|
@@ -137,7 +138,7 @@ watch(isOpen, async (value) => {
|
|
|
137
138
|
{{ t('payment.kaspi.description') }}
|
|
138
139
|
</p>
|
|
139
140
|
|
|
140
|
-
<div class="flex flex-col items-center gap-5 rounded-xl border border-gray-200 bg-white p-6 dark:border-gray-700 dark:bg-gray-900">
|
|
141
|
+
<div class="flex flex-col items-center gap-5 rounded-xl border border-gray-200 bg-white p-6 dark:border-gray-700 dark:bg-gray-900" data-test-id="kaspi-qr-payment-block">
|
|
141
142
|
<div class="flex items-center gap-3">
|
|
142
143
|
<a-icon-kaspi-qr class="size-14" />
|
|
143
144
|
<span class="text-[40px] font-bold leading-none text-deepblue-900 dark:text-white">
|
|
@@ -165,6 +166,7 @@ watch(isOpen, async (value) => {
|
|
|
165
166
|
view="outline"
|
|
166
167
|
color="gray"
|
|
167
168
|
size="lg"
|
|
169
|
+
data-test-id="kaspi-qr-change-payment-method-button"
|
|
168
170
|
block
|
|
169
171
|
@click="onBack"
|
|
170
172
|
>
|
|
@@ -18,8 +18,8 @@ const { t } = useI18n()
|
|
|
18
18
|
|
|
19
19
|
const selected = ref<IBank>('kaspi')
|
|
20
20
|
const cards = [
|
|
21
|
-
{ id: 'kaspi', name: 'payment.method.kaspi', img: AIconPaymentKaspi },
|
|
22
|
-
{ id: 'other', name: 'payment.method.other', img: AIconPaymentCard },
|
|
21
|
+
{ id: 'kaspi', name: 'payment.method.kaspi', img: AIconPaymentKaspi, dataTestId: 'payment-method-kaspi-button' },
|
|
22
|
+
{ id: 'other', name: 'payment.method.other', img: AIconPaymentCard, dataTestId: 'payment-method-other-bank-button' },
|
|
23
23
|
] as const
|
|
24
24
|
|
|
25
25
|
const formattedSum = computed(() => Math.round(props.sum).toLocaleString('ru-RU'))
|
|
@@ -41,12 +41,14 @@ function onBack() {
|
|
|
41
41
|
<a-side-panel
|
|
42
42
|
v-model="isOpen"
|
|
43
43
|
width="484px"
|
|
44
|
+
data-test-id="payment-method-modal"
|
|
44
45
|
>
|
|
45
46
|
<template #header>
|
|
46
47
|
<div class="flex items-center gap-2">
|
|
47
48
|
<button
|
|
48
49
|
type="button"
|
|
49
50
|
class="rounded-md p-1 transition-colors hover:bg-gray-100 dark:hover:bg-white/[0.06]"
|
|
51
|
+
data-test-id="payment-method-back-button"
|
|
50
52
|
@click="onBack"
|
|
51
53
|
>
|
|
52
54
|
<a-icon-chevron-left class="size-6" />
|
|
@@ -75,6 +77,7 @@ function onBack() {
|
|
|
75
77
|
:key="item.id"
|
|
76
78
|
type="button"
|
|
77
79
|
class="flex items-center gap-3 rounded-xl border p-4 text-left transition-colors"
|
|
80
|
+
:data-test-id="item.dataTestId"
|
|
78
81
|
:class="selected === item.id
|
|
79
82
|
? 'border-blue-500 bg-blue-50/60 dark:border-blue-400 dark:bg-blue-950/30'
|
|
80
83
|
: 'border-gray-200 bg-white hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900 dark:hover:bg-gray-800'"
|
|
@@ -111,6 +114,7 @@ function onBack() {
|
|
|
111
114
|
<div class="flex flex-col gap-2">
|
|
112
115
|
<a-button-v2
|
|
113
116
|
size="lg"
|
|
117
|
+
data-test-id="payment-method-submit-button"
|
|
114
118
|
block
|
|
115
119
|
@click="confirm"
|
|
116
120
|
>
|
|
@@ -120,6 +124,7 @@ function onBack() {
|
|
|
120
124
|
view="outline"
|
|
121
125
|
color="gray"
|
|
122
126
|
size="lg"
|
|
127
|
+
data-test-id="payment-method-close-button"
|
|
123
128
|
block
|
|
124
129
|
@click="cancel"
|
|
125
130
|
>
|
|
@@ -11,10 +11,10 @@ const money = ref<number | string>(0)
|
|
|
11
11
|
const errorAlert = ref(false)
|
|
12
12
|
|
|
13
13
|
const sumArr = [
|
|
14
|
-
{ id: 1, value: 2000, label: '2 000 ₸' },
|
|
15
|
-
{ id: 2, value: 5000, label: '5 000 ₸' },
|
|
16
|
-
{ id: 3, value: 10000, label: '10 000 ₸' },
|
|
17
|
-
{ id: 4, value: 20000, label: '20 000 ₸' },
|
|
14
|
+
{ id: 1, value: 2000, label: '2 000 ₸', dataTestId: 'topup-balance-amount-2000-button' },
|
|
15
|
+
{ id: 2, value: 5000, label: '5 000 ₸', dataTestId: 'topup-balance-amount-5000-button' },
|
|
16
|
+
{ id: 3, value: 10000, label: '10 000 ₸', dataTestId: 'topup-balance-amount-10000-button' },
|
|
17
|
+
{ id: 4, value: 20000, label: '20 000 ₸', dataTestId: 'topup-balance-amount-20000-button' },
|
|
18
18
|
]
|
|
19
19
|
|
|
20
20
|
const amount = computed(() => Number(money.value) || 0)
|
|
@@ -45,6 +45,7 @@ function handlePayment() {
|
|
|
45
45
|
<a-side-panel
|
|
46
46
|
v-model="isOpen"
|
|
47
47
|
width="484px"
|
|
48
|
+
data-test-id="topup-balance-modal"
|
|
48
49
|
>
|
|
49
50
|
<template #header>
|
|
50
51
|
<div class="text-xl font-semibold text-deepblue-900 dark:text-gray-100">
|
|
@@ -67,6 +68,7 @@ function handlePayment() {
|
|
|
67
68
|
type="number"
|
|
68
69
|
size="md"
|
|
69
70
|
clearable
|
|
71
|
+
data-test-id="topup-topup-balance-amount-input"
|
|
70
72
|
:error="errorAlert ? t('modals.replenish_modal.error') : undefined"
|
|
71
73
|
/>
|
|
72
74
|
|
|
@@ -76,6 +78,7 @@ function handlePayment() {
|
|
|
76
78
|
:key="item.id"
|
|
77
79
|
type="button"
|
|
78
80
|
class="rounded-lg border px-3 py-2.5 text-sm font-semibold transition-colors"
|
|
81
|
+
:data-test-id="item.dataTestId"
|
|
79
82
|
:class="amount === item.value
|
|
80
83
|
? 'border-blue-500 bg-blue-50 text-blue-700 dark:border-blue-400 dark:bg-blue-950/40 dark:text-blue-300'
|
|
81
84
|
: 'border-gray-200 bg-white text-deepblue-900 hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:hover:bg-gray-800'"
|
|
@@ -91,6 +94,7 @@ function handlePayment() {
|
|
|
91
94
|
<div class="flex flex-col gap-2">
|
|
92
95
|
<a-button-v2
|
|
93
96
|
size="lg"
|
|
97
|
+
data-test-id="topup-balance-submit-button"
|
|
94
98
|
block
|
|
95
99
|
:disabled="!filterMoney"
|
|
96
100
|
@click="handlePayment"
|
|
@@ -101,6 +105,7 @@ function handlePayment() {
|
|
|
101
105
|
view="outline"
|
|
102
106
|
color="gray"
|
|
103
107
|
size="lg"
|
|
108
|
+
data-test-id="topup-balance-back-button"
|
|
104
109
|
block
|
|
105
110
|
@click="onClose"
|
|
106
111
|
>
|
|
@@ -28,7 +28,6 @@ const form: any = reactive({
|
|
|
28
28
|
const phone = ref(form.phone_number)
|
|
29
29
|
|
|
30
30
|
const scheme = z.object({
|
|
31
|
-
name: z.string().nonempty(t('modals.report_bug.validation.required')),
|
|
32
31
|
email: z.string().nonempty(t('modals.report_bug.validation.required')).email(t('modals.submit_application_modal.rules.email')),
|
|
33
32
|
phone_number: z.string().nonempty(t('modals.report_bug.validation.required')).min(17, t('modals.report_bug.validation.phone', { n: 10 })),
|
|
34
33
|
comment: z.string().nonempty(t('modals.report_bug.validation.required')),
|
|
@@ -88,7 +87,11 @@ async function send() {
|
|
|
88
87
|
</script>
|
|
89
88
|
|
|
90
89
|
<template>
|
|
91
|
-
<a-modal-v2
|
|
90
|
+
<a-modal-v2
|
|
91
|
+
v-model="isOpen"
|
|
92
|
+
width="424px"
|
|
93
|
+
data-test-id="report-form-modal"
|
|
94
|
+
>
|
|
92
95
|
<template #header>
|
|
93
96
|
<h2 class="text-base font-semibold text-gray-900 dark:text-gray-100" data-test-id="report-form-title">
|
|
94
97
|
{{ t('modals.report_bug.title') }}
|
|
@@ -108,7 +111,6 @@ async function send() {
|
|
|
108
111
|
<div class="flex flex-col gap-3">
|
|
109
112
|
<a-input-v2
|
|
110
113
|
v-model="form.name"
|
|
111
|
-
required
|
|
112
114
|
:label="t('modals.report_bug.labels.name')"
|
|
113
115
|
:error="getError('name')"
|
|
114
116
|
data-test-id="report-form-name-input"
|
|
@@ -4,7 +4,7 @@ type CountColor = 'gray' | 'blue' | 'yellow' | 'red' | 'green' | 'neutral'
|
|
|
4
4
|
export interface PillTab {
|
|
5
5
|
key: string
|
|
6
6
|
name: string
|
|
7
|
-
count?: number
|
|
7
|
+
count?: number | string
|
|
8
8
|
countColor?: CountColor
|
|
9
9
|
disabled?: boolean
|
|
10
10
|
hideCount?: boolean
|
|
@@ -14,6 +14,7 @@ const props = withDefaults(defineProps<{
|
|
|
14
14
|
modelValue: string
|
|
15
15
|
options: PillTab[]
|
|
16
16
|
showCount?: boolean
|
|
17
|
+
defaultCountColor?: CountColor
|
|
17
18
|
ariaLabel?: string
|
|
18
19
|
block?: boolean
|
|
19
20
|
disabled?: boolean
|
|
@@ -47,6 +48,25 @@ const COUNT_COLOR_CLASS: Record<CountColor, string> = {
|
|
|
47
48
|
|
|
48
49
|
const { t, te } = useI18n()
|
|
49
50
|
|
|
51
|
+
function hasCount(option: PillTab) {
|
|
52
|
+
if (typeof option.count === 'string') {
|
|
53
|
+
return !!Number(String(option.count).replace(/\s/g, ''))
|
|
54
|
+
}
|
|
55
|
+
return !!option.count
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function formatCount(option: PillTab) {
|
|
59
|
+
if (typeof option.count === 'number') {
|
|
60
|
+
return option.count.toLocaleString('ru-RU')
|
|
61
|
+
}
|
|
62
|
+
return option.count
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function resolveCountColor(option: PillTab): CountColor {
|
|
66
|
+
if (!hasCount(option)) return 'gray'
|
|
67
|
+
return option.countColor ?? props.defaultCountColor ?? 'gray'
|
|
68
|
+
}
|
|
69
|
+
|
|
50
70
|
function localize(label: string) {
|
|
51
71
|
return te(label) ? t(label) : label
|
|
52
72
|
}
|
|
@@ -114,9 +134,9 @@ onMounted(scrollActiveIntoView)
|
|
|
114
134
|
<span
|
|
115
135
|
v-if="showCount && !option.hideCount"
|
|
116
136
|
class="inline-flex min-w-5 shrink-0 items-center justify-center rounded-full px-1.5 text-body-sm font-semibold leading-5"
|
|
117
|
-
:class="COUNT_COLOR_CLASS[option
|
|
137
|
+
:class="COUNT_COLOR_CLASS[resolveCountColor(option)]"
|
|
118
138
|
>
|
|
119
|
-
{{ option
|
|
139
|
+
{{ formatCount(option) }}
|
|
120
140
|
</span>
|
|
121
141
|
</slot>
|
|
122
142
|
</button>
|
|
@@ -24,6 +24,7 @@ const props = withDefaults(defineProps<{
|
|
|
24
24
|
headerClass?: string
|
|
25
25
|
bodyClass?: string
|
|
26
26
|
footerClass?: string
|
|
27
|
+
dataTestId?: string
|
|
27
28
|
}>(), {
|
|
28
29
|
idName: "vsp-container",
|
|
29
30
|
side: "right",
|
|
@@ -36,7 +37,8 @@ const props = withDefaults(defineProps<{
|
|
|
36
37
|
overlayOpacity: 0.5,
|
|
37
38
|
overlayDuration: 500,
|
|
38
39
|
panelColor: "bg-white dark:bg-gray-900",
|
|
39
|
-
panelDuration: 300
|
|
40
|
+
panelDuration: 300,
|
|
41
|
+
dataTestId: undefined,
|
|
40
42
|
})
|
|
41
43
|
|
|
42
44
|
defineEmits<{
|
|
@@ -219,6 +221,7 @@ const touchend = () => {
|
|
|
219
221
|
class="vsp fixed flex flex-col"
|
|
220
222
|
:class="[`vsp--${panelSide}-side`, $attrs.class, roundedClass, panelColor]"
|
|
221
223
|
:style="panelStyles"
|
|
224
|
+
:data-test-id="dataTestId"
|
|
222
225
|
>
|
|
223
226
|
<div
|
|
224
227
|
class="w-full flex justify-center items-center mt-1 lg:hidden"
|
|
@@ -349,6 +349,12 @@ export function useHeaderNavigationLinks() {
|
|
|
349
349
|
icon: CheckSb,
|
|
350
350
|
to: urls.compliancemain + PAGES.compliance.sb,
|
|
351
351
|
},
|
|
352
|
+
{
|
|
353
|
+
title: t('header.products.compliance.items.inspection.t'),
|
|
354
|
+
subtitle: t('header.products.compliance.items.inspection.st'),
|
|
355
|
+
icon: AIconShieldVerified,
|
|
356
|
+
to: urls.compliancemain + PAGES.compliance.inspection,
|
|
357
|
+
},
|
|
352
358
|
],
|
|
353
359
|
},
|
|
354
360
|
{
|
package/lang/en.ts
CHANGED
|
@@ -191,7 +191,7 @@ const EnLocale: RuLocale = {
|
|
|
191
191
|
subtitle: 'Evaluate the volume of competitors\' procurements over a certain period',
|
|
192
192
|
},
|
|
193
193
|
activity: {
|
|
194
|
-
title: '
|
|
194
|
+
title: 'Business activity index',
|
|
195
195
|
subtitle: 'Assessment of market risk of current business activity',
|
|
196
196
|
},
|
|
197
197
|
subjects: {
|
|
@@ -228,7 +228,7 @@ const EnLocale: RuLocale = {
|
|
|
228
228
|
st: 'Calculation of Customs Payments. Customs Duties. Customs Fees',
|
|
229
229
|
},
|
|
230
230
|
tr: {
|
|
231
|
-
t: '
|
|
231
|
+
t: 'International market and tariffs',
|
|
232
232
|
st: 'Customs Tariffs and Quotas. Measures for Protecting the Domestic Market. Regulatory Requirements',
|
|
233
233
|
},
|
|
234
234
|
importerMap: {
|
|
@@ -272,6 +272,10 @@ const EnLocale: RuLocale = {
|
|
|
272
272
|
t: 'Security check',
|
|
273
273
|
st: '',
|
|
274
274
|
},
|
|
275
|
+
inspection: {
|
|
276
|
+
t: 'Inspection registry',
|
|
277
|
+
st: '',
|
|
278
|
+
},
|
|
275
279
|
},
|
|
276
280
|
},
|
|
277
281
|
edo: {
|
package/lang/kk.ts
CHANGED
|
@@ -191,7 +191,7 @@ const KkLocale: RuLocale = {
|
|
|
191
191
|
subtitle: 'Бәсекелестердің белгілі бір кезеңдегі сатып алу көлемін бағалау',
|
|
192
192
|
},
|
|
193
193
|
activity: {
|
|
194
|
-
title: '
|
|
194
|
+
title: 'Іскерлік белсенділік индексі',
|
|
195
195
|
subtitle: 'Қазіргі іскерлік белсенділіктің нарықтық тәуекелін бағалау',
|
|
196
196
|
},
|
|
197
197
|
subjects: {
|
|
@@ -228,7 +228,7 @@ const KkLocale: RuLocale = {
|
|
|
228
228
|
st: 'Кедендік төлемдерді есептеу. Кедендік баждар. Кедендік алымдар',
|
|
229
229
|
},
|
|
230
230
|
tr: {
|
|
231
|
-
t: '
|
|
231
|
+
t: 'Халықаралық нарық және тарифтер',
|
|
232
232
|
st: 'Кедендік тарифтер мен квоталар. Ішкі нарықты қорғау шаралары. Нормативтік талаптар',
|
|
233
233
|
},
|
|
234
234
|
importerMap: {
|
|
@@ -272,6 +272,10 @@ const KkLocale: RuLocale = {
|
|
|
272
272
|
t: 'Қауіпсіздік қызметінің тексеруі',
|
|
273
273
|
st: '',
|
|
274
274
|
},
|
|
275
|
+
inspection: {
|
|
276
|
+
t: 'Тексерулер тізілімі',
|
|
277
|
+
st: '',
|
|
278
|
+
},
|
|
275
279
|
},
|
|
276
280
|
},
|
|
277
281
|
edo: {
|
package/lang/ru.ts
CHANGED
|
@@ -190,7 +190,7 @@ const RuLocale = {
|
|
|
190
190
|
'Оцените объем закупок конкурентов за определенный период',
|
|
191
191
|
},
|
|
192
192
|
activity: {
|
|
193
|
-
title: 'Индекс активности',
|
|
193
|
+
title: 'Индекс деловой активности',
|
|
194
194
|
subtitle:
|
|
195
195
|
'Оценка рыночного риска текущей деловой активности',
|
|
196
196
|
},
|
|
@@ -229,7 +229,7 @@ const RuLocale = {
|
|
|
229
229
|
st: 'Расчет таможенных платежей. Таможенные пошлины. Таможенные сборы',
|
|
230
230
|
},
|
|
231
231
|
tr: {
|
|
232
|
-
t: '
|
|
232
|
+
t: 'Международный рынок и тарифы',
|
|
233
233
|
st: 'Таможенные тарифы и квоты. Меры защиты внутреннего рынка. Нормативные требования',
|
|
234
234
|
},
|
|
235
235
|
importerMap: {
|
|
@@ -273,6 +273,10 @@ const RuLocale = {
|
|
|
273
273
|
t: 'Проверка СБ',
|
|
274
274
|
st: '',
|
|
275
275
|
},
|
|
276
|
+
inspection: {
|
|
277
|
+
t: 'Реестр проверок',
|
|
278
|
+
st: '',
|
|
279
|
+
},
|
|
276
280
|
},
|
|
277
281
|
},
|
|
278
282
|
edo: {
|