@antify/ui 4.1.4 → 4.1.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.
Files changed (53) hide show
  1. package/dist/components/AntAccordion.vue +3 -1
  2. package/dist/components/AntAccordionItem.vue +1 -0
  3. package/dist/components/AntAlert.vue +1 -0
  4. package/dist/components/AntButton.vue +3 -1
  5. package/dist/components/AntCard.vue +1 -0
  6. package/dist/components/AntContent.vue +1 -0
  7. package/dist/components/AntIcon.vue +3 -1
  8. package/dist/components/AntKeycap.vue +1 -0
  9. package/dist/components/AntListGroup.vue +1 -0
  10. package/dist/components/AntListGroupItem.vue +2 -0
  11. package/dist/components/AntModal.vue +2 -0
  12. package/dist/components/AntPagination.vue +2 -0
  13. package/dist/components/AntPopover.vue +2 -0
  14. package/dist/components/AntProgress.vue +1 -0
  15. package/dist/components/AntSpinner.vue +1 -0
  16. package/dist/components/AntTag.vue +1 -0
  17. package/dist/components/AntToast.vue +2 -2
  18. package/dist/components/AntTooltip.vue +1 -0
  19. package/dist/components/calendar/AntDatePicker.vue +4 -1
  20. package/dist/components/calendar/AntDateSwitcher.vue +7 -1
  21. package/dist/components/calendar/AntMonthPicker.vue +3 -1
  22. package/dist/components/calendar/AntYearPicker.vue +3 -1
  23. package/dist/components/forms/AntField.vue +2 -0
  24. package/dist/components/forms/AntFormGroup.vue +1 -0
  25. package/dist/components/forms/__stories/AntFormGroup.stories.js +1 -1
  26. package/dist/components/forms/__stories/AntFormGroup.stories.mjs +1 -1
  27. package/dist/components/inputs/AntColorInput/AntColorInput.vue +1 -2
  28. package/dist/components/inputs/AntColorInput/ColorSelection.vue +1 -0
  29. package/dist/components/inputs/AntDateInput.vue +3 -0
  30. package/dist/components/inputs/AntImageInput.vue +3 -0
  31. package/dist/components/inputs/AntMultiSelect.vue +1 -1
  32. package/dist/components/inputs/AntNumberInput.vue +3 -0
  33. package/dist/components/inputs/AntPasswordInput.vue +1 -0
  34. package/dist/components/inputs/AntRadio.vue +1 -0
  35. package/dist/components/inputs/AntRadioGroup.vue +1 -0
  36. package/dist/components/inputs/AntRangeSlider.vue +1 -0
  37. package/dist/components/inputs/AntSelect.vue +1 -1
  38. package/dist/components/inputs/AntSwitcher.vue +3 -0
  39. package/dist/components/inputs/AntTagInput.vue +1 -0
  40. package/dist/components/inputs/AntTextInput.vue +1 -0
  41. package/dist/components/inputs/AntTextarea.vue +1 -0
  42. package/dist/components/inputs/AntUnitInput.vue +1 -0
  43. package/dist/components/inputs/Elements/AntBaseInput.vue +2 -0
  44. package/dist/components/inputs/Elements/AntInputDescription.vue +2 -0
  45. package/dist/components/inputs/Elements/AntInputLimiter.vue +4 -1
  46. package/dist/components/inputs/Elements/AntSelectMenu.vue +2 -1
  47. package/dist/components/layouts/AntNavLeftLayout.vue +1 -0
  48. package/dist/components/navbar/AntNavbar.vue +3 -1
  49. package/dist/components/navbar/AntNavbarItem.vue +1 -0
  50. package/dist/components/table/AntTableSortButton.vue +1 -0
  51. package/dist/components/tabs/AntTabItem.vue +2 -0
  52. package/dist/components/tabs/AntTabs.vue +1 -0
  53. package/package.json +1 -1
@@ -50,7 +50,9 @@ function onClose(index: number) {
50
50
  </script>
51
51
 
52
52
  <template>
53
- <div class="w-full h-full flex flex-col bg-base-300 gap-px">
53
+ <div class="w-full h-full flex flex-col bg-base-300 gap-px"
54
+ data-e2e="accordion"
55
+ >
54
56
  <slot>
55
57
  <AntAccordionItem
56
58
  v-for="(item, index) in items"
@@ -63,6 +63,7 @@ const labelClasses = computed(() => ({
63
63
  class="p-2 select-none transition-colors"
64
64
  :class="labelClasses"
65
65
  @click="onClick"
66
+ data-e2e="accordion-item"
66
67
  >
67
68
  <slot
68
69
  name="label"
@@ -96,6 +96,7 @@ onMounted(() => {
96
96
  <div
97
97
  :class="classes"
98
98
  data-e2e="alert"
99
+ :data-e2e-state="state"
99
100
  >
100
101
  <div
101
102
  v-if="icon || hasQuestionMark || dismissBtn || title"
@@ -236,6 +236,8 @@ onMounted(() => {
236
236
  <div
237
237
  class="inline-flex h-fit"
238
238
  :class="{'w-full': props.expanded}"
239
+ data-e2e="button"
240
+ :data-e2e-state="state"
239
241
  >
240
242
  <AntTooltip
241
243
  class="w-full"
@@ -251,7 +253,7 @@ onMounted(() => {
251
253
  :tabindex="noFocus || hasInputState ? '-1' : '0'"
252
254
  v-bind="$attrs"
253
255
  :data-e2e="dataE2e"
254
- :data-e2e-state="props.state"
256
+ :data-e2e-state="state"
255
257
  @click="(e: MouseEvent) => !props.readonly ? $emit('click', e) : null"
256
258
  @blur="(e: FocusEvent) => !props.readonly ? $emit('blur', e) : null"
257
259
  >
@@ -34,6 +34,7 @@ const cardClass = computed(() => ({
34
34
  <div
35
35
  :class="cardClass"
36
36
  class="bg-white outline outline-offset-[-1px] outline-base-300 rounded-md relative"
37
+ data-e2e="card"
37
38
  >
38
39
  <slot />
39
40
 
@@ -10,6 +10,7 @@ withDefaults(defineProps<{
10
10
  <div
11
11
  :class="{ 'p-2.5': padding }"
12
12
  class="bg-white overflow-auto"
13
+ data-e2e="content"
13
14
  >
14
15
  <slot />
15
16
  </div>
@@ -55,7 +55,9 @@ onMounted(() => {
55
55
  </script>
56
56
 
57
57
  <template>
58
- <span :class="containerClasses">
58
+ <span :class="containerClasses"
59
+ data-e2e="icon"
60
+ >
59
61
  <AntSkeleton
60
62
  :visible="skeleton"
61
63
  rounded
@@ -52,6 +52,7 @@ const iconClasses = computed(() => {
52
52
  <div
53
53
  class="inline-flex justify-center items-center bg-base-300 rounded-md text-center text-base-300-font font-medium"
54
54
  :class="classes"
55
+ data-e2e="keycap"
55
56
  >
56
57
  <AntIcon
57
58
  v-if="icon"
@@ -20,6 +20,7 @@ withDefaults(defineProps<{
20
20
  <div
21
21
  class="flex flex-col rounded-md bg-base-300 gap-px relative border border-base-300 overflow-hidden"
22
22
  :class="{'invisible': skeleton, 'shadow-md': shadow}"
23
+ data-e2e="list-group"
23
24
  >
24
25
  <slot />
25
26
  </div>
@@ -69,6 +69,8 @@ onMounted(() => {
69
69
  :is="to !== undefined ? 'router-link' : 'div'"
70
70
  :to="to"
71
71
  :class="classes"
72
+ data-e2e="list-group-item"
73
+ :data-e2e-state="state"
72
74
  >
73
75
  <div :class="contentWrapperClasses">
74
76
  <div class="flex items-center gap-2.5">
@@ -65,6 +65,7 @@ onMounted(() => {
65
65
  class="absolute inset-0 flex items-center justify-center z-[80] cursor-pointer overflow-hidden"
66
66
  :class="{'bg-black/50 backdrop-blur-xs': !fullscreen}"
67
67
  @click.self="closeModal"
68
+ data-e2e="modal"
68
69
  >
69
70
  <Transition :name="!fullscreen ? 'bounce' : 'bounce-slow'">
70
71
  <div
@@ -90,6 +91,7 @@ onMounted(() => {
90
91
  :skeleton="skeleton"
91
92
  :icon-left="faXmark"
92
93
  @click="closeModal"
94
+ data-e2e="modal-close-button"
93
95
  />
94
96
  </div>
95
97
 
@@ -187,6 +187,7 @@ const pagination = computed(() => {
187
187
  :grouped="Grouped.left"
188
188
  :filled="false"
189
189
  @click="() => page = page - 1"
190
+ data-e2e="left-arrow-button"
190
191
  />
191
192
 
192
193
  <AntButton
@@ -209,6 +210,7 @@ const pagination = computed(() => {
209
210
  :disabled="page === pages"
210
211
  :filled="false"
211
212
  @click="() => page = page + 1"
213
+ data-e2e="right-arrow-button"
212
214
  />
213
215
  </div>
214
216
  </div>
@@ -119,6 +119,7 @@ const onClickOutside = [
119
119
  <div
120
120
  ref="reference"
121
121
  v-on-click-outside="onClickOutside"
122
+ data-e2e="popover"
122
123
  >
123
124
  <slot />
124
125
  </div>
@@ -130,6 +131,7 @@ const onClickOutside = [
130
131
  ref="floating"
131
132
  :class="_popoverClasses"
132
133
  :style="floatingStyles"
134
+ data-e2e="popover"
133
135
  >
134
136
  <div class="shadow-lg border-base-300 rounded-md text-sm relative inline-flex flex-col">
135
137
  <div
@@ -39,6 +39,7 @@ const progressWidth = computed(() => {
39
39
  <div
40
40
  class="relative bg-base-100 w-full rounded-md"
41
41
  :style="{ height: height }"
42
+ data-e2e="progress"
42
43
  >
43
44
  <div
44
45
  class="absolute rounded-md"
@@ -96,6 +96,7 @@ const spinningElementClass = computed(() => {
96
96
  fill="none"
97
97
  xmlns="http://www.w3.org/2000/svg"
98
98
  data-e2e="spinner"
99
+ :data-e2e-state="state"
99
100
  >
100
101
  <path
101
102
  :class="circleClass"
@@ -94,6 +94,7 @@ onMounted(() => {
94
94
  <span
95
95
  :class="classes"
96
96
  data-e2e="tag"
97
+ :data-e2e-state="state"
97
98
  >
98
99
  <span
99
100
  v-if="iconLeft"
@@ -77,7 +77,7 @@ onMounted(() => {
77
77
  <div
78
78
  :class="classes"
79
79
  data-e2e="toast"
80
- :data-e2e-state="props.state"
80
+ :data-e2e-state="state"
81
81
  >
82
82
  <div class="inline-flex items-start justify-between min-w-[260px] w-content gap-2.5">
83
83
  <div class="inline-flex items-start gap-2.5">
@@ -116,7 +116,7 @@ onMounted(() => {
116
116
  class="flex justify-end"
117
117
  >
118
118
  <AntButton
119
- :state="props.state as unknown as State"
119
+ :state="state as unknown as State"
120
120
  @click="() => $emit('undo')"
121
121
  >
122
122
  undo
@@ -172,6 +172,7 @@ function onClick() {
172
172
  <div
173
173
  class="relative h-fit"
174
174
  data-e2e="tooltip"
175
+ :data-e2e-state="state"
175
176
  >
176
177
  <div
177
178
  ref="reference"
@@ -151,7 +151,9 @@ onMounted(() => {
151
151
  </script>
152
152
 
153
153
  <template>
154
- <div>
154
+ <div
155
+ data-e2e="date-picker"
156
+ >
155
157
  <AntDateSwitcher
156
158
  v-model:month="currentMonthIndex"
157
159
  v-model:year="currentYear"
@@ -232,6 +234,7 @@ onMounted(() => {
232
234
  <AntButton
233
235
  :skeleton="skeleton"
234
236
  @click="() => $emit('update:modelValue', Date.now())"
237
+ data-e2e="today-button"
235
238
  >
236
239
  Heute
237
240
  </AntButton>
@@ -84,12 +84,15 @@ function onClickNext() {
84
84
  </script>
85
85
 
86
86
  <template>
87
- <div class="flex">
87
+ <div class="flex"
88
+ data-e2e="date-switcher"
89
+ >
88
90
  <AntButton
89
91
  :icon-left="faChevronLeft"
90
92
  :grouped="Grouped.left"
91
93
  :skeleton="skeleton"
92
94
  @click="onClickPrevious"
95
+ data-e2e="left-arrow-button"
93
96
  />
94
97
  <AntDropdown
95
98
  v-model:show-dropdown="showMonthDropdown"
@@ -101,6 +104,7 @@ function onClickNext() {
101
104
  :skeleton="skeleton"
102
105
  expanded
103
106
  @click="showMonthDropdown = !showMonthDropdown"
107
+ data-e2e="month-dropdown-button"
104
108
  >
105
109
  {{ options[month] }}
106
110
  </AntButton>
@@ -125,6 +129,7 @@ function onClickNext() {
125
129
  :skeleton="skeleton"
126
130
  expanded
127
131
  @click="showYearDropdown = !showYearDropdown"
132
+ data-e2e="year-dropdown-button"
128
133
  >
129
134
  {{ year }}
130
135
  </AntButton>
@@ -147,6 +152,7 @@ function onClickNext() {
147
152
  :grouped="Grouped.right"
148
153
  :skeleton="skeleton"
149
154
  @click="onClickNext"
155
+ data-e2e="right-arrow-button"
150
156
  />
151
157
  </div>
152
158
  </div>
@@ -33,7 +33,9 @@ const currentMonthIndex = new Date().getMonth();
33
33
  </script>
34
34
 
35
35
  <template>
36
- <div class="grid grid-cols-3 gap-2">
36
+ <div class="grid grid-cols-3 gap-2"
37
+ data-e2e="month-picker"
38
+ >
37
39
  <div
38
40
  v-for="(month, index) in months"
39
41
  :key="index"
@@ -36,7 +36,9 @@ defineExpose({
36
36
  </script>
37
37
 
38
38
  <template>
39
- <div class="flex flex-col">
39
+ <div class="flex flex-col"
40
+ data-e2e="year-picker"
41
+ >
40
42
  <div
41
43
  ref="yearListRef"
42
44
  class="h-64 overflow-y-auto flex flex-col gap-2 p-2 border-b border-base-300"
@@ -75,6 +75,8 @@ const descriptionClasses = computed(() => ({
75
75
  <div
76
76
  class="flex flex-col items-start"
77
77
  :class="fieldClasses"
78
+ :data-e2e-state="_state"
79
+ :data-e2e-skeleton="skeleton"
78
80
  >
79
81
  <AntInputLabel
80
82
  :label="label"
@@ -34,6 +34,7 @@ const classes = computed(() => {
34
34
  <section
35
35
  class="flex"
36
36
  :class="classes"
37
+ data-e2e="form-group"
37
38
  >
38
39
  <slot />
39
40
  </section>
@@ -45,7 +45,7 @@ const Docs = exports.Docs = {
45
45
  <AntFormGroup v-bind="args">
46
46
  <AntFormGroupLabel>Example label</AntFormGroupLabel>
47
47
  <AntTextInput label="Example"/>
48
- <AntButton state="primary">Submit</AntButton>
48
+ <AntButton state="primary" data-e2e="submit-button">Submit</AntButton>
49
49
  </AntFormGroup>
50
50
  `
51
51
  }),
@@ -40,7 +40,7 @@ export const Docs = {
40
40
  <AntFormGroup v-bind="args">
41
41
  <AntFormGroupLabel>Example label</AntFormGroupLabel>
42
42
  <AntTextInput label="Example"/>
43
- <AntButton state="primary">Submit</AntButton>
43
+ <AntButton state="primary" data-e2e="submit-button">Submit</AntButton>
44
44
  </AntFormGroup>
45
45
  `
46
46
  }),
@@ -187,6 +187,7 @@ onMounted(() => {
187
187
  :state="state"
188
188
  :messages="messages"
189
189
  label-for="noop"
190
+ data-e2e="color-input"
190
191
  >
191
192
  <AntDropdown
192
193
  v-model:show-dropdown="showDropdown"
@@ -202,8 +203,6 @@ onMounted(() => {
202
203
  >
203
204
  <div
204
205
  ref="itemRef"
205
- data-e2e="color-input"
206
- :data-e2e-state="state"
207
206
  :class="itemClasses"
208
207
  :tabindex="disabled || readonly ? -1 : 0"
209
208
  @click="onClick"
@@ -42,6 +42,7 @@ onMounted(() => {
42
42
 
43
43
  <template>
44
44
  <div
45
+ data-e2e="color-selection"
45
46
  class="grid grid-cols-4 gap-1.5"
46
47
  :class="{
47
48
  'p-1': size === Size.xs2,
@@ -105,6 +105,7 @@ function onClickCalendar() {
105
105
  :description="description"
106
106
  :state="state"
107
107
  :messages="messages"
108
+ data-e2e="date-input"
108
109
  >
109
110
  <div class="flex">
110
111
  <AntBaseInput
@@ -140,8 +141,10 @@ function onClickCalendar() {
140
141
  :icon-left="faMultiply"
141
142
  :grouped="Grouped.right"
142
143
  :state="state as unknown as State"
144
+ :skeleton="skeleton"
143
145
  :size="size"
144
146
  @click="_modelValue = null"
147
+ data-e2e="clear-button"
145
148
  />
146
149
  </div>
147
150
  </AntField>
@@ -154,6 +154,7 @@ onBeforeUnmount(() => {
154
154
  :state="state"
155
155
  :messages="messages"
156
156
  :expanded="expanded"
157
+ data-e2e="image-input"
157
158
  >
158
159
  <div
159
160
  class="flex gap-2.5 w-full"
@@ -224,6 +225,7 @@ onBeforeUnmount(() => {
224
225
 
225
226
  <AntButton
226
227
  v-if="src"
228
+ data-e2e="remove-button"
227
229
  :size="Size.lg"
228
230
  :icon-left="faMultiply"
229
231
  :skeleton="skeleton"
@@ -239,6 +241,7 @@ onBeforeUnmount(() => {
239
241
 
240
242
  <AntButton
241
243
  v-else
244
+ data-e2e="upload-button"
242
245
  :size="Size.lg"
243
246
  :icon-left="faUpload"
244
247
  :skeleton="skeleton"
@@ -260,7 +260,7 @@ onMounted(() => {
260
260
  :expanded="expanded"
261
261
  :messages="messages"
262
262
  label-for="noop"
263
- data-e2e="select"
263
+ data-e2e="multi-select"
264
264
  @click-label="() => inputRef?.focus()"
265
265
  >
266
266
  <AntDropdown
@@ -158,6 +158,7 @@ function onButtonBlur() {
158
158
  :limiter-max-value="limiter && max !== undefined ? max : undefined"
159
159
  :limiter-value="limiter && _modelValue !== undefined && _modelValue !== null ? Number(_modelValue) : undefined"
160
160
  :messages="messages"
161
+ data-e2e="number-input"
161
162
  >
162
163
  <div
163
164
  class="flex relative"
@@ -173,6 +174,7 @@ function onButtonBlur() {
173
174
  :readonly="readonly"
174
175
  @click="subtract"
175
176
  @blur="onButtonBlur"
177
+ data-e2e="decrement-button"
176
178
  />
177
179
 
178
180
  <AntBaseInput
@@ -204,6 +206,7 @@ function onButtonBlur() {
204
206
  :readonly="readonly"
205
207
  @click="add"
206
208
  @blur="onButtonBlur"
209
+ data-e2e="increment-button"
207
210
  />
208
211
  </div>
209
212
  </AntField>
@@ -94,6 +94,7 @@ onMounted(() => {
94
94
  :description="description"
95
95
  :state="state"
96
96
  :messages="messages"
97
+ data-e2e="password-input"
97
98
  >
98
99
  <div class="flex relative">
99
100
  <AntBaseInput
@@ -174,6 +174,7 @@ onMounted(() => {
174
174
  :size="size"
175
175
  :expanded="false"
176
176
  :messages="messages"
177
+ data-e2e="radio"
177
178
  >
178
179
  <div
179
180
  class="flex items-center"
@@ -130,6 +130,7 @@ onMounted(() => {
130
130
  :messages="messages"
131
131
  :size="fieldSize"
132
132
  label-for="noop"
133
+ data-e2e="radio-group"
133
134
  >
134
135
  <div
135
136
  ref="containerRef"
@@ -101,6 +101,7 @@ onMounted(() => {
101
101
  :description="description"
102
102
  :state="state"
103
103
  :messages="messages"
104
+ data-e2e="range-slider"
104
105
  >
105
106
  <input
106
107
  v-model.number="_modelValue"
@@ -240,6 +240,7 @@ function onClickRemoveButton() {
240
240
 
241
241
  <template>
242
242
  <AntField
243
+ data-e2e="select"
243
244
  :label="label"
244
245
  :size="size"
245
246
  :skeleton="skeleton"
@@ -249,7 +250,6 @@ function onClickRemoveButton() {
249
250
  :expanded="expanded"
250
251
  :messages="messages"
251
252
  label-for="noop"
252
- data-e2e="select"
253
253
  @click-label="() => inputRef?.focus()"
254
254
  >
255
255
  <div
@@ -161,6 +161,7 @@ onMounted(() => {
161
161
  :state="state"
162
162
  :messages="messages"
163
163
  label-for="noop"
164
+ data-e2e="switcher"
164
165
  >
165
166
  <div
166
167
  :class="containerClasses"
@@ -180,6 +181,7 @@ onMounted(() => {
180
181
  :disabled="disabled"
181
182
  @click="prevOption"
182
183
  @blur="onBlur"
184
+ data-e2e="left-arrow-button"
183
185
  />
184
186
 
185
187
  <AntSkeleton
@@ -206,6 +208,7 @@ onMounted(() => {
206
208
  :disabled="disabled"
207
209
  @click="nextOption"
208
210
  @blur="onBlur"
211
+ data-e2e="right-arrow-button"
209
212
  />
210
213
  </div>
211
214
  </AntField>
@@ -271,6 +271,7 @@ onMounted(() => {
271
271
  :state="state"
272
272
  :expanded="expanded"
273
273
  :messages="messages"
274
+ data-e2e="tag-input"
274
275
  >
275
276
  <AntSkeleton
276
277
  :visible="skeleton"
@@ -80,6 +80,7 @@ onMounted(() => {
80
80
  :limiter-max-value="limiter && max !== undefined ? max : undefined"
81
81
  :limiter-value="limiter ? _value?.length : undefined"
82
82
  :messages="messages"
83
+ data-e2e="text-input"
83
84
  >
84
85
  <AntBaseInput
85
86
  v-model="_value"
@@ -192,6 +192,7 @@ defineExpose({
192
192
  :limiter-value="limiter ? _modelValue?.length : undefined"
193
193
  :messages="messages"
194
194
  :expanded-height="!resize"
195
+ data-e2e="textarea"
195
196
  >
196
197
  <AntSkeleton
197
198
  :visible="skeleton"
@@ -90,6 +90,7 @@ onMounted(() => {
90
90
  :limiter-max-value="limiter && max !== undefined ? max : undefined"
91
91
  :limiter-value="limiter && _modelValue !== undefined && _modelValue !== null ? Number(_modelValue) : undefined"
92
92
  :messages="messages"
93
+ data-e2e="unit-input"
93
94
  >
94
95
  <div
95
96
  class="flex relative"
@@ -231,6 +231,7 @@ function onClickClearIcon() {
231
231
  <div
232
232
  class="block relative w-full h-fit"
233
233
  :class="_wrapperClass"
234
+ data-e2e="base-input"
234
235
  >
235
236
  <AntSkeleton
236
237
  :visible="skeleton"
@@ -271,6 +272,7 @@ function onClickClearIcon() {
271
272
  title=""
272
273
  v-bind="$attrs"
273
274
  @blur="onBlur"
275
+ :data-e2e-state="state"
274
276
  >
275
277
 
276
278
  <div
@@ -52,6 +52,8 @@ onMounted(() => {
52
52
  <template>
53
53
  <div
54
54
  :class="classes"
55
+ data-e2e="input-description"
56
+ :data-e2e-state="state"
55
57
  >
56
58
  <AntSkeleton
57
59
  :visible="skeleton"
@@ -52,7 +52,10 @@ onMounted(() => {
52
52
  </script>
53
53
 
54
54
  <template>
55
- <div :class="classes">
55
+ <div :class="classes"
56
+ data-e2e="input-limiter"
57
+ :data-e2e-state="state"
58
+ >
56
59
  <AntSkeleton
57
60
  :visible="skeleton"
58
61
  rounded
@@ -295,8 +295,9 @@ watch(_modelValue, (val) => {
295
295
  v-if="isOpen"
296
296
  ref="floating"
297
297
  :class="dropdownClasses"
298
- data-e2e="select-menu"
299
298
  :style="{minWidth: `${elementSize.width.value}px!important`, ...floatingStyles}"
299
+ data-e2e="select-menu"
300
+ :data-e2e-state="state"
300
301
  >
301
302
  <div class="flex flex-col gap-px">
302
303
  <div
@@ -26,6 +26,7 @@ const hasLogoImageSlot = computed(() => useSlots()['logo-image'] || false);
26
26
  v-if="hasLogoImageSlot"
27
27
  :to="logoRoute"
28
28
  class="bg-white min-h-[60px] flex justify-center items-center p-2.5"
29
+ data-e2e="nav-left-layout-logo"
29
30
  >
30
31
  <slot name="logo-image" />
31
32
  </component>
@@ -19,7 +19,9 @@ const containerClasses = computed(() => ({
19
19
  </script>
20
20
 
21
21
  <template>
22
- <div :class="containerClasses">
22
+ <div :class="containerClasses"
23
+ data-e2e="navbar"
24
+ >
23
25
  <AntNavbarItem
24
26
  v-for="(navbarItem, index) in navbarItems"
25
27
  :key="`navbar-item-${index}`"
@@ -41,6 +41,7 @@ function itemClick(): void {
41
41
  v-bind="$attrs"
42
42
  :class="itemClasses"
43
43
  @click="itemClick"
44
+ data-e2e="navbar-item"
44
45
  >
45
46
  <AntIcon
46
47
  v-if="navbarItem.icon"
@@ -53,5 +53,6 @@ const buttonIcon = computed(() => {
53
53
  <AntButton
54
54
  :size="buttonSize"
55
55
  :icon-left="buttonIcon"
56
+ data-e2e="table-sort-button"
56
57
  />
57
58
  </template>
@@ -113,6 +113,8 @@ const iconColor = computed(() => {
113
113
  :is="to !== undefined && !disabled ? 'router-link' : 'div'"
114
114
  :to="to"
115
115
  :class="containerClasses"
116
+ data-e2e="tab-item"
117
+ :data-e2e-state="state"
116
118
  >
117
119
  <slot name="iconLeft">
118
120
  <AntIcon
@@ -56,6 +56,7 @@ function clickTab(tabItem: TabItem) {
56
56
  <div
57
57
  class="flex gap-px bg-base-300 border-base-300 overflow-x-auto"
58
58
  :class="scrollContainerClasses"
59
+ data-e2e="tabs"
59
60
  >
60
61
  <slot>
61
62
  <AntTabItem
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antify/ui",
3
- "version": "4.1.4",
3
+ "version": "4.1.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {