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.
@@ -81,11 +81,11 @@ const pointSwitchValues: ViewType = {
81
81
 
82
82
  const classes = computed(() =>
83
83
  [
84
- 'text-body-md rounded-sm select-none inline-flex gap-[5.5px] justify-center items-center border',
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-4 py-[2px] text-body-sm font-bold' : '',
87
- props.size === 'sm' ? 'text-body-sm font-semibold px-4 py-[2px] h-6' : '',
88
- props.size === 'lg' ? 'px-4 py-[7.5px] font-semibold' : '',
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 v-model="isOpen" width="424px">
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.countColor ?? 'gray']"
137
+ :class="COUNT_COLOR_CLASS[resolveCountColor(option)]"
118
138
  >
119
- {{ option.count }}
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: 'Activity index',
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: 'Market and tariffs',
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: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adata-ui",
3
3
  "type": "module",
4
- "version": "2.1.40-beta.14",
4
+ "version": "2.1.40-beta.16",
5
5
  "main": "./nuxt.config.ts",
6
6
  "scripts": {
7
7
  "dev": "nuxi dev .playground",