vueless 0.0.674 → 0.0.676

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 (88) hide show
  1. package/bin/commands/create.js +77 -0
  2. package/bin/commands/index.js +2 -0
  3. package/bin/commands/init.js +4 -8
  4. package/bin/constants.js +2 -5
  5. package/bin/index.js +1 -1
  6. package/bin/utils/dataUtils.js +53 -0
  7. package/bin/utils/formatUtil.js +48 -0
  8. package/composables/useUI.ts +12 -1
  9. package/constants.js +6 -0
  10. package/package.json +2 -2
  11. package/plugin-vite.js +3 -1
  12. package/types.ts +1 -1
  13. package/ui.boilerplate/storybook/stories.ts +1 -1
  14. package/ui.boilerplate/types.ts +1 -1
  15. package/ui.button/UButton.vue +9 -6
  16. package/ui.button/types.ts +1 -1
  17. package/ui.button-link/ULink.vue +37 -62
  18. package/ui.button-link/config.ts +8 -35
  19. package/ui.button-link/storybook/stories.ts +0 -22
  20. package/ui.button-link/types.ts +1 -11
  21. package/ui.button-toggle/types.ts +1 -1
  22. package/ui.button-toggle-item/types.ts +1 -1
  23. package/ui.container-accordion/types.ts +1 -1
  24. package/ui.container-card/types.ts +1 -1
  25. package/ui.container-col/types.ts +1 -1
  26. package/ui.container-divider/types.ts +1 -1
  27. package/ui.container-group/types.ts +1 -1
  28. package/ui.container-groups/types.ts +1 -1
  29. package/ui.container-modal/UModal.vue +21 -20
  30. package/ui.container-modal/config.ts +3 -2
  31. package/ui.container-modal/types.ts +1 -1
  32. package/ui.container-modal-confirm/types.ts +1 -1
  33. package/ui.container-page/UPage.vue +31 -19
  34. package/ui.container-page/config.ts +1 -0
  35. package/ui.container-page/types.ts +1 -1
  36. package/ui.container-row/types.ts +1 -1
  37. package/ui.data-list/types.ts +1 -1
  38. package/ui.data-table/types.ts +1 -1
  39. package/ui.dropdown-badge/types.ts +1 -1
  40. package/ui.dropdown-button/types.ts +1 -1
  41. package/ui.dropdown-link/UDropdownLink.vue +29 -33
  42. package/ui.dropdown-link/config.ts +3 -3
  43. package/ui.dropdown-link/types.ts +1 -1
  44. package/ui.dropdown-list/types.ts +1 -1
  45. package/ui.form-calendar/types.ts +1 -1
  46. package/ui.form-checkbox/types.ts +1 -1
  47. package/ui.form-checkbox-group/types.ts +1 -1
  48. package/ui.form-checkbox-multi-state/types.ts +1 -1
  49. package/ui.form-date-picker/types.ts +1 -1
  50. package/ui.form-date-picker-range/types.ts +1 -1
  51. package/ui.form-input/types.ts +1 -1
  52. package/ui.form-input-file/types.ts +1 -1
  53. package/ui.form-input-money/types.ts +1 -1
  54. package/ui.form-input-number/types.ts +1 -1
  55. package/ui.form-input-rating/types.ts +1 -1
  56. package/ui.form-input-search/types.ts +1 -1
  57. package/ui.form-label/types.ts +1 -1
  58. package/ui.form-radio/types.ts +1 -1
  59. package/ui.form-radio-group/types.ts +1 -1
  60. package/ui.form-select/USelect.vue +8 -6
  61. package/ui.form-select/types.ts +1 -1
  62. package/ui.form-switch/types.ts +1 -1
  63. package/ui.form-textarea/types.ts +1 -1
  64. package/ui.image-avatar/types.ts +1 -1
  65. package/ui.image-icon/UIcon.vue +2 -18
  66. package/ui.image-icon/storybook/stories.ts +0 -3
  67. package/ui.image-icon/types.ts +1 -13
  68. package/ui.loader/types.ts +1 -1
  69. package/ui.loader-overlay/types.ts +1 -1
  70. package/ui.loader-progress/types.ts +1 -1
  71. package/ui.navigation-pagination/types.ts +1 -1
  72. package/ui.navigation-progress/types.ts +2 -2
  73. package/ui.navigation-tab/types.ts +1 -1
  74. package/ui.navigation-tabs/types.ts +1 -1
  75. package/ui.other-dot/types.ts +1 -1
  76. package/ui.other-theme-color-toggle/storybook/stories.ts +1 -1
  77. package/ui.other-theme-color-toggle/types.ts +1 -1
  78. package/ui.text-alert/types.ts +1 -1
  79. package/ui.text-badge/types.ts +1 -1
  80. package/ui.text-block/types.ts +1 -1
  81. package/ui.text-empty/types.ts +1 -1
  82. package/ui.text-file/types.ts +1 -1
  83. package/ui.text-files/types.ts +1 -1
  84. package/ui.text-header/types.ts +1 -1
  85. package/ui.text-money/types.ts +1 -1
  86. package/ui.text-notify/types.ts +1 -1
  87. package/ui.text-number/types.ts +1 -1
  88. package/utils/theme.ts +5 -1
@@ -53,5 +53,5 @@ export interface Props {
53
53
  /**
54
54
  * Data-test attribute for automated testing.
55
55
  */
56
- dataTest?: string;
56
+ dataTest?: string | null;
57
57
  }
@@ -28,5 +28,5 @@ export interface Props {
28
28
  /**
29
29
  * Data-test attribute for automated testing.
30
30
  */
31
- dataTest?: string;
31
+ dataTest?: string | null;
32
32
  }
@@ -18,5 +18,5 @@ export interface Props {
18
18
  /**
19
19
  * Data-test attribute for automated testing.
20
20
  */
21
- dataTest?: string;
21
+ dataTest?: string | null;
22
22
  }
@@ -32,7 +32,7 @@ const emit = defineEmits([
32
32
  "update:modelValue",
33
33
 
34
34
  /**
35
- * Triggers when back link in modal is clicked.
35
+ * Triggers when a back link is clicked.
36
36
  */
37
37
  "back",
38
38
  ]);
@@ -113,6 +113,7 @@ const {
113
113
  config,
114
114
  modalAttrs,
115
115
  titleAttrs,
116
+ backLinkWrapperAttrs,
116
117
  backLinkAttrs,
117
118
  backLinkIconAttrs,
118
119
  closeIconAttrs,
@@ -157,25 +158,25 @@ const {
157
158
  <slot name="before-title" />
158
159
 
159
160
  <div v-bind="headerLeftFallbackAttrs">
160
- <ULink
161
- v-if="isShownArrowButton"
162
- size="sm"
163
- color="gray"
164
- :to="backTo"
165
- :label="backLabel"
166
- v-bind="backLinkAttrs"
167
- @click="onClickBackLink"
168
- >
169
- <template #left>
170
- <UIcon
171
- internal
172
- size="xs"
173
- color="gray"
174
- :name="config.defaults.backIcon"
175
- v-bind="backLinkIconAttrs"
176
- />
177
- </template>
178
- </ULink>
161
+ <div v-if="isShownArrowButton" v-bind="backLinkWrapperAttrs">
162
+ <UIcon
163
+ internal
164
+ size="2xs"
165
+ color="gray"
166
+ :name="config.defaults.backIcon"
167
+ v-bind="backLinkIconAttrs"
168
+ />
169
+
170
+ <ULink
171
+ size="sm"
172
+ color="gray"
173
+ :to="backTo"
174
+ :ring="false"
175
+ :label="backLabel"
176
+ v-bind="backLinkAttrs"
177
+ @click="onClickBackLink"
178
+ />
179
+ </div>
179
180
 
180
181
  <UHeader :label="title" size="sm" v-bind="titleAttrs" />
181
182
  <div v-if="description" v-bind="descriptionAttrs" v-text="description" />
@@ -18,9 +18,10 @@ export default /*tw*/ {
18
18
  leaveToClass: "opacity-0",
19
19
  },
20
20
  innerWrapper: "py-12 w-full h-full overflow-auto",
21
- header: "flex items-center justify-between px-4 md:px-8 pb-6 pt-8",
22
- headerLeft: "flex items-center space-x-4",
21
+ header: "flex justify-between px-4 md:px-8 pb-6 pt-8",
22
+ headerLeft: "flex items-center gap-4",
23
23
  headerLeftFallback: "flex flex-col",
24
+ backLinkWrapper: "flex items-center gap-0.5 mb-0.5",
24
25
  backLink: "{ULink} flex items-center gap-0.5",
25
26
  backLinkIcon: "{UIcon}",
26
27
  title: "{UHeader}",
@@ -80,5 +80,5 @@ export interface Props {
80
80
  /**
81
81
  * Data-test attribute for automated testing.
82
82
  */
83
- dataTest?: string;
83
+ dataTest?: string | null;
84
84
  }
@@ -104,5 +104,5 @@ export interface Props {
104
104
  /**
105
105
  * Data-test attribute for automated testing.
106
106
  */
107
- dataTest?: string;
107
+ dataTest?: string | null;
108
108
  }
@@ -25,6 +25,13 @@ const props = withDefaults(defineProps<Props>(), {
25
25
  backLabel: "",
26
26
  });
27
27
 
28
+ const emit = defineEmits([
29
+ /**
30
+ * Triggers when a back link is clicked.
31
+ */
32
+ "back",
33
+ ]);
34
+
28
35
  const { isMobileBreakpoint } = useBreakpoint();
29
36
 
30
37
  const isExistHeader = computed(() => {
@@ -56,6 +63,10 @@ onMounted(() => {
56
63
  }
57
64
  });
58
65
 
66
+ function onClickBackLink() {
67
+ emit("back");
68
+ }
69
+
59
70
  /**
60
71
  * Get element / nested component attributes for each config token ✨
61
72
  * Applies: `class`, `config`, redefined default `props` and dev `vl-...` attributes.
@@ -66,6 +77,7 @@ const {
66
77
  pageAttrs,
67
78
  rightRoundingAttrs,
68
79
  titleAttrs,
80
+ backLinkWrapperAttrs,
69
81
  backLinkAttrs,
70
82
  backLinkIconAttrs,
71
83
  headerAttrs,
@@ -95,25 +107,25 @@ const {
95
107
  <slot name="before-title" />
96
108
 
97
109
  <div v-bind="headerLeftFallbackAttrs">
98
- <ULink
99
- v-if="isShownArrowButton"
100
- :ring="false"
101
- size="sm"
102
- color="gray"
103
- :to="backTo"
104
- :label="backLabel"
105
- v-bind="backLinkAttrs"
106
- >
107
- <template #left>
108
- <UIcon
109
- internal
110
- size="2xs"
111
- color="gray"
112
- :name="config.defaults.backIcon"
113
- v-bind="backLinkIconAttrs"
114
- />
115
- </template>
116
- </ULink>
110
+ <div v-if="isShownArrowButton" v-bind="backLinkWrapperAttrs">
111
+ <UIcon
112
+ internal
113
+ size="2xs"
114
+ color="gray"
115
+ :name="config.defaults.backIcon"
116
+ v-bind="backLinkIconAttrs"
117
+ />
118
+
119
+ <ULink
120
+ :ring="false"
121
+ size="sm"
122
+ color="gray"
123
+ :to="backTo"
124
+ :label="backLabel"
125
+ v-bind="backLinkAttrs"
126
+ @click="onClickBackLink"
127
+ />
128
+ </div>
117
129
 
118
130
  <UHeader :label="title" :size="titleSize" v-bind="titleAttrs" />
119
131
  <div v-if="description" v-bind="descriptionAttrs" v-text="description" />
@@ -32,6 +32,7 @@ export default /*tw*/ {
32
32
  header: "flex items-start justify-between mb-4 md:mb-6",
33
33
  headerLeft: "flex items-center gap-4",
34
34
  headerLeftFallback: "flex flex-col gap-0.5",
35
+ backLinkWrapper: "flex items-center gap-0.5",
35
36
  backLink: "{ULink}",
36
37
  backLinkIcon: "{UIcon}",
37
38
  title: "{UHeader}",
@@ -54,5 +54,5 @@ export interface Props {
54
54
  /**
55
55
  * Data-test attribute for automated testing.
56
56
  */
57
- dataTest?: string;
57
+ dataTest?: string | null;
58
58
  }
@@ -57,5 +57,5 @@ export interface Props {
57
57
  /**
58
58
  * Data-test attribute for automated testing.
59
59
  */
60
- dataTest?: string;
60
+ dataTest?: string | null;
61
61
  }
@@ -82,5 +82,5 @@ export interface Props {
82
82
  /**
83
83
  * Data-test attribute for automated testing.
84
84
  */
85
- dataTest?: string;
85
+ dataTest?: string | null;
86
86
  }
@@ -111,7 +111,7 @@ export interface UTableProps {
111
111
  /**
112
112
  * Data-test attribute for automated testing.
113
113
  */
114
- dataTest?: string;
114
+ dataTest?: string | null;
115
115
  }
116
116
 
117
117
  export interface UTableRowAttrs {
@@ -90,5 +90,5 @@ export interface Props {
90
90
  /**
91
91
  * Data-test attribute for automated testing.
92
92
  */
93
- dataTest?: string;
93
+ dataTest?: string | null;
94
94
  }
@@ -105,5 +105,5 @@ export interface Props {
105
105
  /**
106
106
  * Data-test attribute for automated testing.
107
107
  */
108
- dataTest?: string;
108
+ dataTest?: string | null;
109
109
  }
@@ -68,12 +68,18 @@ const mutatedProps = computed(() => ({
68
68
  opened: isShownOptions.value,
69
69
  }));
70
70
 
71
- const { config, wrapperAttrs, dropdownLinkAttrs, dropdownListAttrs, dropdownIconAttrs } =
71
+ const { config, getDataTest, wrapperAttrs, dropdownLinkAttrs, dropdownListAttrs, toggleIconAttrs } =
72
72
  useUI<Config>(defaultConfig, mutatedProps);
73
73
  </script>
74
74
 
75
75
  <template>
76
76
  <div v-click-outside="hideOptions" v-bind="wrapperAttrs">
77
+ <!--
78
+ @slot Use it to add something before the label.
79
+ @binding {boolean} opened
80
+ -->
81
+ <slot name="left" :opened="isShownOptions" />
82
+
77
83
  <ULink
78
84
  :id="elementId"
79
85
  :ring="ring"
@@ -84,48 +90,38 @@ const { config, wrapperAttrs, dropdownLinkAttrs, dropdownListAttrs, dropdownIcon
84
90
  :disabled="disabled"
85
91
  :underlined="underlined"
86
92
  v-bind="dropdownLinkAttrs"
87
- :data-test="dataTest"
93
+ :data-test="getDataTest()"
88
94
  @click="onClickLink"
89
95
  @keydown.enter="onClickLink"
90
96
  @keydown.space.prevent="onClickLink"
91
97
  >
92
- <template #left>
98
+ <template #default>
93
99
  <!--
94
- @slot Use it to add something before the label.
100
+ @slot Use it to add something instead of the default label.
101
+ @binding {string} label
95
102
  @binding {boolean} opened
96
103
  -->
97
- <slot name="left" :opened="isShownOptions" />
98
- </template>
99
-
100
- <template #default>
101
- <!--
102
- @slot Use it to add something instead of the default label.
103
- @binding {string} label
104
- @binding {boolean} opened
105
- -->
106
104
  <slot :label="label" :opened="isShownOptions" />
107
105
  </template>
108
-
109
- <template #right>
110
- <!--
111
- @slot Use it to add something after the label.
112
- @binding {boolean} opened
113
- -->
114
- <slot name="right" :opened="isShownOptions">
115
- <UIcon
116
- v-if="!noIcon"
117
- internal
118
- interactive
119
- :color="color"
120
- :name="config.defaults.dropdownIcon"
121
- v-bind="dropdownIconAttrs"
122
- :data-test="`${dataTest}-dropdown`"
123
- @click="onClickLink"
124
- />
125
- </slot>
126
- </template>
127
106
  </ULink>
128
107
 
108
+ <!--
109
+ @slot Use it to add something after the label.
110
+ @binding {boolean} opened
111
+ -->
112
+ <slot name="right" :opened="isShownOptions">
113
+ <UIcon
114
+ v-if="!noIcon"
115
+ internal
116
+ interactive
117
+ :color="color"
118
+ :name="config.defaults.toggleIcon"
119
+ v-bind="toggleIconAttrs"
120
+ :data-test="getDataTest('toggle')"
121
+ @click="onClickLink"
122
+ />
123
+ </slot>
124
+
129
125
  <UDropdownList
130
126
  v-if="isShownOptions"
131
127
  ref="dropdown-list"
@@ -133,7 +129,7 @@ const { config, wrapperAttrs, dropdownLinkAttrs, dropdownListAttrs, dropdownIcon
133
129
  :options="options"
134
130
  :label-key="labelKey"
135
131
  v-bind="dropdownListAttrs"
136
- :data-test="`${dataTest}-list`"
132
+ :data-test="getDataTest('list')"
137
133
  @click-option="onClickOption"
138
134
  />
139
135
  </div>
@@ -1,6 +1,6 @@
1
1
  export default /*tw*/ {
2
2
  wrapper: {
3
- base: "relative inline-block",
3
+ base: "relative inline-flex",
4
4
  variants: {
5
5
  opened: {
6
6
  true: "group",
@@ -8,7 +8,7 @@ export default /*tw*/ {
8
8
  },
9
9
  },
10
10
  dropdownLink: "{ULink}",
11
- dropdownIcon: {
11
+ toggleIcon: {
12
12
  base: "{UIcon} block transition duration-300 group-[]:rotate-180",
13
13
  defaults: {
14
14
  size: {
@@ -43,6 +43,6 @@ export default /*tw*/ {
43
43
  noIcon: false,
44
44
  disabled: false,
45
45
  /* icons */
46
- dropdownIcon: "keyboard_arrow_down",
46
+ toggleIcon: "keyboard_arrow_down",
47
47
  },
48
48
  };
@@ -100,5 +100,5 @@ export interface Props {
100
100
  /**
101
101
  * Data-test attribute for automated testing.
102
102
  */
103
- dataTest?: string;
103
+ dataTest?: string | null;
104
104
  }
@@ -70,5 +70,5 @@ export interface Props {
70
70
  /**
71
71
  * Data-test attribute for automated testing.
72
72
  */
73
- dataTest?: string;
73
+ dataTest?: string | null;
74
74
  }
@@ -80,7 +80,7 @@ export interface UCalendarProps<TModelValue extends DateValue> {
80
80
  /**
81
81
  * Data-test attribute for automated testing.
82
82
  */
83
- dataTest?: string;
83
+ dataTest?: string | null;
84
84
  }
85
85
 
86
86
  export interface UCalendarViewProps {
@@ -113,5 +113,5 @@ export interface Props {
113
113
  /**
114
114
  * Data-test attribute for automated testing.
115
115
  */
116
- dataTest?: string;
116
+ dataTest?: string | null;
117
117
  }
@@ -79,5 +79,5 @@ export interface Props {
79
79
  /**
80
80
  * Data-test attribute for automated testing.
81
81
  */
82
- dataTest?: string;
82
+ dataTest?: string | null;
83
83
  }
@@ -69,5 +69,5 @@ export interface Props {
69
69
  /**
70
70
  * Data-test attribute for automated testing.
71
71
  */
72
- dataTest?: string;
72
+ dataTest?: string | null;
73
73
  }
@@ -116,5 +116,5 @@ export interface Props<TModelValue> {
116
116
  /**
117
117
  * Data-test attribute for automated testing.
118
118
  */
119
- dataTest?: string;
119
+ dataTest?: string | null;
120
120
  }
@@ -189,5 +189,5 @@ export interface UDatePickerRangeProps<TModelValue> {
189
189
  /**
190
190
  * Data-test attribute for automated testing.
191
191
  */
192
- dataTest?: string;
192
+ dataTest?: string | null;
193
193
  }
@@ -99,5 +99,5 @@ export interface Props {
99
99
  /**
100
100
  * Data-test attribute for automated testing.
101
101
  */
102
- dataTest?: string;
102
+ dataTest?: string | null;
103
103
  }
@@ -68,5 +68,5 @@ export interface Props {
68
68
  /**
69
69
  * Data-test attribute for automated testing.
70
70
  */
71
- dataTest?: string;
71
+ dataTest?: string | null;
72
72
  }
@@ -116,5 +116,5 @@ export interface Props {
116
116
  /**
117
117
  * Data-test attribute for automated testing.
118
118
  */
119
- dataTest?: string;
119
+ dataTest?: string | null;
120
120
  }
@@ -63,5 +63,5 @@ export interface UInputNumberProps {
63
63
  /**
64
64
  * Data-test attribute for automated testing.
65
65
  */
66
- dataTest?: string;
66
+ dataTest?: string | null;
67
67
  }
@@ -63,5 +63,5 @@ export interface Props {
63
63
  /**
64
64
  * Data-test attribute for automated testing.
65
65
  */
66
- dataTest?: string;
66
+ dataTest?: string | null;
67
67
  }
@@ -88,5 +88,5 @@ export interface Props {
88
88
  /**
89
89
  * Data-test attribute for automated testing.
90
90
  */
91
- dataTest?: string;
91
+ dataTest?: string | null;
92
92
  }
@@ -58,5 +58,5 @@ export interface Props {
58
58
  /**
59
59
  * Data-test attribute for automated testing.
60
60
  */
61
- dataTest?: string;
61
+ dataTest?: string | null;
62
62
  }
@@ -95,5 +95,5 @@ export interface Props {
95
95
  /**
96
96
  * Data-test attribute for automated testing.
97
97
  */
98
- dataTest?: string;
98
+ dataTest?: string | null;
99
99
  }
@@ -88,5 +88,5 @@ export interface Props {
88
88
  /**
89
89
  * Data-test attribute for automated testing.
90
90
  */
91
- dataTest?: string;
91
+ dataTest?: string | null;
92
92
  }
@@ -416,6 +416,7 @@ const mutatedProps = computed(() => ({
416
416
 
417
417
  const {
418
418
  config,
419
+ getDataTest,
419
420
  selectLabelAttrs,
420
421
  wrapperAttrs,
421
422
  innerWrapperAttrs,
@@ -453,7 +454,7 @@ const {
453
454
  centred
454
455
  interactive
455
456
  v-bind="selectLabelAttrs"
456
- :data-test="dataTest"
457
+ :data-test="getDataTest()"
457
458
  :tabindex="-1"
458
459
  >
459
460
  <template #label>
@@ -503,6 +504,7 @@ const {
503
504
  v-show="!multiple || (!isLocalValue && multiple)"
504
505
  v-bind="toggleWrapperAttrs"
505
506
  :tabindex="-1"
507
+ :data-test="getDataTest('toggle')"
506
508
  @mousedown.prevent.stop="toggle"
507
509
  >
508
510
  <!--
@@ -517,7 +519,6 @@ const {
517
519
  color="gray"
518
520
  :name="config.defaults.dropdownIcon"
519
521
  v-bind="toggleIconAttrs"
520
- :data-test="`${dataTest}-toggle`"
521
522
  :tabindex="-1"
522
523
  />
523
524
  </slot>
@@ -526,6 +527,7 @@ const {
526
527
  <div
527
528
  v-if="isLocalValue && clearable && !disabled && !multiple"
528
529
  v-bind="clearAttrs"
530
+ :data-test="getDataTest('clear')"
529
531
  @mousedown="onMouseDownClear"
530
532
  >
531
533
  <!--
@@ -539,7 +541,6 @@ const {
539
541
  color="gray"
540
542
  :name="config.defaults.clearIcon"
541
543
  v-bind="clearIconAttrs"
542
- :data-test="`${dataTest}-clear`"
543
544
  />
544
545
  </slot>
545
546
  </div>
@@ -599,6 +600,7 @@ const {
599
600
  <div
600
601
  v-if="!disabled"
601
602
  v-bind="clearMultipleAttrs"
603
+ :data-test="getDataTest('clear-item')"
602
604
  @mousedown.prevent.capture
603
605
  @click.prevent.capture
604
606
  @mousedown="onMouseDownClearItem($event, item)"
@@ -614,7 +616,6 @@ const {
614
616
  color="gray"
615
617
  :name="config.defaults.clearMultipleIcon"
616
618
  v-bind="clearMultipleIconAttrs"
617
- :data-test="`${dataTest}-clear-all`"
618
619
  />
619
620
  </slot>
620
621
  </div>
@@ -634,7 +635,7 @@ const {
634
635
  :disabled="disabled"
635
636
  :aria-controls="'listbox-' + elementId"
636
637
  v-bind="searchInputAttrs"
637
- :data-test="`${dataTest}-search`"
638
+ :data-test="getDataTest('search')"
638
639
  @focus="activate"
639
640
  @blur.prevent="deactivate"
640
641
  @keyup.esc="deactivate"
@@ -674,6 +675,7 @@ const {
674
675
  <div
675
676
  v-if="isLocalValue && clearable && !disabled && multiple"
676
677
  v-bind="clearMultipleTextAttrs"
678
+ :data-test="getDataTest('clear-all')"
677
679
  @mousedown.prevent.capture="onMouseDownClear"
678
680
  @click.prevent.capture
679
681
  v-text="currentLocale.clear"
@@ -693,7 +695,7 @@ const {
693
695
  :add-option="addOption"
694
696
  tabindex="-1"
695
697
  v-bind="dropdownListAttrs as KeyAttrsWithConfig<UDropdownListConfig>"
696
- :data-test="dataTest"
698
+ :data-test="getDataTest()"
697
699
  @add="onAddOption"
698
700
  @focus="activate"
699
701
  @mousedown.prevent.capture
@@ -130,5 +130,5 @@ export interface Props {
130
130
  /**
131
131
  * Data-test attribute for automated testing.
132
132
  */
133
- dataTest?: string;
133
+ dataTest?: string | null;
134
134
  }
@@ -84,5 +84,5 @@ export interface Props {
84
84
  /**
85
85
  * Data-test attribute for automated testing.
86
86
  */
87
- dataTest?: string;
87
+ dataTest?: string | null;
88
88
  }
@@ -83,5 +83,5 @@ export interface Props {
83
83
  /**
84
84
  * Data-test attribute for automated testing.
85
85
  */
86
- dataTest?: string;
86
+ dataTest?: string | null;
87
87
  }
@@ -69,5 +69,5 @@ export interface UAvatarProps {
69
69
  /**
70
70
  * Data-test attribute for automated testing.
71
71
  */
72
- dataTest?: string;
72
+ dataTest?: string | null;
73
73
  }