bfg-common 1.3.232 → 1.3.233

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 (76) hide show
  1. package/assets/scss/common/normalize.scss +0 -4
  2. package/components/atoms/alert/Alert.vue +96 -95
  3. package/components/atoms/alert/Notification.vue +171 -170
  4. package/components/atoms/autocomplete/Autocomplete.vue +3 -0
  5. package/components/atoms/collapse/CollapseNav.vue +1 -1
  6. package/components/atoms/collapse/CollapseNavItem.vue +17 -13
  7. package/components/atoms/combobox/Combobox.vue +5 -0
  8. package/components/atoms/datepicker/Datepicker.vue +19 -1
  9. package/components/atoms/datepicker/lib/models/interfaces.ts +1 -0
  10. package/components/atoms/dropdown/Portlet.vue +10 -7
  11. package/components/atoms/dropdown/dropdown/Dropdown.vue +10 -2
  12. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +1 -0
  13. package/components/atoms/dropdown/tree/Tree.vue +2 -0
  14. package/components/atoms/dropdown/tree/lib/models/interfaces.ts +1 -0
  15. package/components/atoms/lib/models/interfaces.ts +2 -0
  16. package/components/atoms/list/SelectList.vue +1 -0
  17. package/components/atoms/modal/Modal.vue +3 -0
  18. package/components/atoms/modal/bySteps/BySteps.vue +56 -51
  19. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +10 -1
  20. package/components/atoms/nav/VerticalNavBar.vue +1 -0
  21. package/components/atoms/nav/lib/models/interfaces.ts +1 -0
  22. package/components/atoms/notificationBar/NotificationBar.vue +9 -1
  23. package/components/atoms/perPage/PerPage.vue +1 -0
  24. package/components/atoms/popover/Popover.vue +5 -1
  25. package/components/atoms/popup/SimplePopup.vue +1 -0
  26. package/components/atoms/select/TheSelect.vue +2 -0
  27. package/components/atoms/select/lib/models/interfaces.ts +1 -0
  28. package/components/atoms/stack/StackBlock.vue +3 -0
  29. package/components/atoms/step/VerticalStep.vue +1 -0
  30. package/components/atoms/switch/Switch.vue +111 -111
  31. package/components/atoms/table/compact/Compact.vue +526 -526
  32. package/components/atoms/table/dataGrid/DataGrid.vue +13 -1
  33. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +10 -2
  34. package/components/atoms/table/dataGrid/DataGridPage.vue +5 -0
  35. package/components/atoms/table/dataGrid/lib/models/interfaces.ts +2 -0
  36. package/components/atoms/table/simpleInfo/SimpleInfo.vue +7 -2
  37. package/components/atoms/table/simpleInfo/lib/models/interfaces.ts +1 -0
  38. package/components/atoms/table/simpleTable/SimpleTable.vue +5 -1
  39. package/components/atoms/table/simpleTable/lib/models/interfaces.ts +2 -0
  40. package/components/atoms/tabs/VerticalTabs.vue +1 -0
  41. package/components/atoms/tabs/lib/models/interfaces.ts +3 -2
  42. package/components/atoms/tooltip/Signpost.vue +226 -225
  43. package/components/atoms/wizard/Wizard.vue +5 -0
  44. package/components/atoms/wizard/step/Step.vue +1 -0
  45. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +4 -1
  46. package/components/common/mainNavigationPanel/lib/models/interfaces.ts +1 -0
  47. package/components/common/pages/Tasks.vue +120 -120
  48. package/components/common/recursionTree/RecursionTree.vue +203 -203
  49. package/components/common/tools/Actions.vue +2 -1
  50. package/components/common/tools/lib/models/interfaces.ts +1 -0
  51. package/components/common/vm/actions/add/Add.vue +575 -575
  52. package/components/common/vm/actions/clone/Clone.vue +518 -518
  53. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  59. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  60. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  61. package/components/common/weekSelect/WeekSelect.vue +112 -112
  62. package/components/common/weekSelect/lib/config/options.ts +10 -10
  63. package/composables/useAppVersion.ts +21 -21
  64. package/composables/useEnvLanguage.ts +20 -20
  65. package/lib/utils/sendTask.ts +72 -72
  66. package/minify.js +146 -146
  67. package/package.json +1 -1
  68. package/public/spice-console/application/codec.js +257 -257
  69. package/public/spice-console/lib/rasterEngine.js +907 -907
  70. package/public/spice-console/network/spicechannel.js +369 -369
  71. package/store/main/lib/interfaces.ts +9 -9
  72. package/store/tasks/actions.ts +133 -133
  73. package/store/tasks/getters.ts +25 -25
  74. package/store/tasks/lib/models/interfaces.ts +18 -18
  75. package/store/tasks/mutations.ts +58 -58
  76. package/store/tasks/state.ts +16 -16
@@ -7,11 +7,13 @@
7
7
  v-show="!isOpen"
8
8
  class="angle-icon clr-icon"
9
9
  name="angle"
10
+ :data-id="`${props.testId}-open-icon`"
10
11
  @click="onFocusInput"
11
12
  />
12
13
  <input
13
14
  :id="id"
14
15
  v-model="modelValueLocal"
16
+ :data-id="`${props.testId}-search-input`"
15
17
  type="text"
16
18
  tabindex="-1"
17
19
  :disabled="props.disabled"
@@ -20,6 +22,7 @@
20
22
  />
21
23
  <atoms-the-icon
22
24
  v-show="isOpen"
25
+ :data-id="`${props.testId}-close-icon`"
23
26
  class="close-icon clr-icon"
24
27
  name="close-circle"
25
28
  @mousedown="clear"
@@ -31,6 +34,7 @@
31
34
  v-for="(item, key) in props.items"
32
35
  :key="key"
33
36
  :id="`${id}-${key}`"
37
+ :data-id="item.testId"
34
38
  class="btn btn-link dropdown-item"
35
39
  @mousedown="select(item.value)"
36
40
  >
@@ -48,6 +52,7 @@ const props = defineProps<{
48
52
  items: UI_I_OptionItem[]
49
53
  modelValue?: string | number
50
54
  disabled?: boolean
55
+ testId?: string
51
56
  }>()
52
57
  const emits = defineEmits<{
53
58
  (event: 'update:model-value', value: string | number): void
@@ -3,6 +3,7 @@
3
3
  <atoms-the-icon
4
4
  name="calendar"
5
5
  :class="[`btn-show-calendar calendar-id-${uniqueId}`]"
6
+ :data-id="`${props.testId}-toggle-icon`"
6
7
  @click.stop="showHideCalendar"
7
8
  />
8
9
  <div
@@ -17,6 +18,7 @@
17
18
  v-for="(item, key) in allMonths"
18
19
  :key="key"
19
20
  :class="['calendar-btn', item.class]"
21
+ :data-id="item.testId"
20
22
  @click="selectMonth(key)"
21
23
  >
22
24
  {{ item.text }}
@@ -29,6 +31,7 @@
29
31
  :id="`${props.testId}-prev-button`"
30
32
  class="calendar-btn"
31
33
  title="Previous decade"
34
+ :data-id="`${props.testId}-select-prev-year`"
32
35
  @click="prevYear"
33
36
  >
34
37
  <atoms-the-icon
@@ -41,6 +44,7 @@
41
44
  :id="`${props.testId}-current-year-button`"
42
45
  class="calendar-btn set-current-data"
43
46
  title="Current decade"
47
+ :data-id="`${props.testId}-select-current-year`"
44
48
  @click="setCurrentYear"
45
49
  >
46
50
  <atoms-the-icon name="calendar-current-date" class="current-btn" />
@@ -49,6 +53,7 @@
49
53
  :id="`${props.testId}-next-button`"
50
54
  class="calendar-btn"
51
55
  title="Next decade"
56
+ :data-id="`${props.testId}-select-next-year`"
52
57
  @click="nextYear"
53
58
  >
54
59
  <atoms-the-icon
@@ -63,6 +68,7 @@
63
68
  v-for="(item, key) in allYears"
64
69
  :key="key"
65
70
  :class="['calendar-btn', item.class]"
71
+ :data-id="item.testId"
66
72
  @click="selectYear(item.text)"
67
73
  >
68
74
  {{ item.text }}
@@ -76,6 +82,7 @@
76
82
  :id="`${props.testId}-current-month-button`"
77
83
  class="calendar-btn show-all-months"
78
84
  title="Select Month"
85
+ :data-id="`${props.testId}-show-all-months`"
79
86
  @click="showAllMonths = true"
80
87
  >
81
88
  {{ currentMonth }}
@@ -84,6 +91,7 @@
84
91
  :id="`${props.testId}-current-year-button`"
85
92
  class="calendar-btn current-year"
86
93
  title="Select Year"
94
+ :data-id="`${props.testId}-select-all-years`"
87
95
  @click="showAllYears = true"
88
96
  >
89
97
  {{ currentYear }}
@@ -94,6 +102,7 @@
94
102
  :id="`${props.testId}-prev-month-button`"
95
103
  class="calendar-btn"
96
104
  title="Previous Month"
105
+ :data-id="`${props.testId}-select-prev-month`"
97
106
  @click="prevMonth"
98
107
  >
99
108
  <atoms-the-icon
@@ -106,6 +115,7 @@
106
115
  :id="`${props.testId}-current-date-button`"
107
116
  class="calendar-btn set-current-data"
108
117
  title="Current Month"
118
+ :data-id="`${props.testId}-set-current-date`"
109
119
  @click="setCurrentDate"
110
120
  >
111
121
  <atoms-the-icon
@@ -117,6 +127,7 @@
117
127
  :id="`${props.testId}-next-month-icon`"
118
128
  class="calendar-btn"
119
129
  title="Next Month"
130
+ :data-id="`${props.testId}-select-next-month`"
120
131
  @click="nextMonth"
121
132
  >
122
133
  <atoms-the-icon
@@ -136,6 +147,7 @@
136
147
  v-for="(item, key) in days"
137
148
  :key="key"
138
149
  :class="['item-day', item.class]"
150
+ :data-id="item.testId"
139
151
  @click="selectDay(item.text, item.class)"
140
152
  >
141
153
  {{ item.text }}
@@ -238,6 +250,7 @@ const renderCalendar = (): void => {
238
250
  days.value.push({
239
251
  text: result,
240
252
  class: 'prev-date',
253
+ testId: `day-${result}`,
241
254
  })
242
255
  }
243
256
  const indexCurrentMonth = shortMonths.findIndex(
@@ -253,6 +266,7 @@ const renderCalendar = (): void => {
253
266
  days.value.push({
254
267
  text: i,
255
268
  class: 'active',
269
+ testId: `day-${i}`,
256
270
  })
257
271
  } else if (
258
272
  i === new Date().getDate() &&
@@ -262,9 +276,10 @@ const renderCalendar = (): void => {
262
276
  days.value.push({
263
277
  text: i,
264
278
  class: 'today',
279
+ testId: `day-${i}`,
265
280
  })
266
281
  } else {
267
- days.value.push({ text: i, class: '' })
282
+ days.value.push({ text: i, class: '', testId: `day-${i}` })
268
283
  }
269
284
  }
270
285
 
@@ -273,6 +288,7 @@ const renderCalendar = (): void => {
273
288
  days.value.push({
274
289
  text: j,
275
290
  class: 'next-date',
291
+ testId: `day-${j}`,
276
292
  })
277
293
  }
278
294
  }
@@ -284,6 +300,7 @@ const allMonths = computed<UI_I_Items[]>(() => {
284
300
  result.push({
285
301
  text: months.value[i],
286
302
  class: active,
303
+ testId: `month-${i}`,
287
304
  })
288
305
  }
289
306
  return result
@@ -299,6 +316,7 @@ const allYears = computed<UI_I_Items[]>(() => {
299
316
  result.push({
300
317
  text: i,
301
318
  class: active,
319
+ testId: `year-${i}`,
302
320
  })
303
321
  }
304
322
  return result
@@ -1,6 +1,7 @@
1
1
  export interface UI_I_Items {
2
2
  text: number | string
3
3
  class: string
4
+ testId: string
4
5
  }
5
6
 
6
7
  export interface UI_I_AllShortMonths {
@@ -3,6 +3,7 @@
3
3
  <div
4
4
  class="portlet-titlebar"
5
5
  :class="{ disabled }"
6
+ :data-id="`${props.testId}-toggle-portlet`"
6
7
  @click="togglePortlet"
7
8
  >
8
9
  <atoms-the-icon
@@ -24,14 +25,17 @@
24
25
 
25
26
  <script setup lang="ts">
26
27
  const props = defineProps<{
27
- title: string,
28
+ title: string
28
29
  disabled?: boolean
30
+ testId?: string
29
31
  }>()
30
32
 
31
33
  const isOpen = ref<boolean>(false)
32
34
 
33
35
  const portletCollapsed = computed<boolean>(() => {
34
- if (props.disabled) { return true }
36
+ if (props.disabled) {
37
+ return true
38
+ }
35
39
  return isOpen.value
36
40
  })
37
41
 
@@ -68,12 +72,12 @@ const togglePortlet = (): boolean => (isOpen.value = !isOpen.value)
68
72
 
69
73
  .titlebar-text {
70
74
  flex: 1 1 100%;
71
- display: inline-flex!important;
75
+ display: inline-flex !important;
72
76
  white-space: nowrap;
73
- overflow: hidden!important;
74
- padding: 0!important;
77
+ overflow: hidden !important;
78
+ padding: 0 !important;
75
79
  box-sizing: border-box;
76
- max-width: none!important;
80
+ max-width: none !important;
77
81
  font-size: 14px;
78
82
  }
79
83
 
@@ -90,7 +94,6 @@ const togglePortlet = (): boolean => (isOpen.value = !isOpen.value)
90
94
  fill: #004a70;
91
95
  }
92
96
  }
93
-
94
97
  }
95
98
 
96
99
  .portlet-content {
@@ -3,6 +3,7 @@
3
3
  <div
4
4
  v-on-click-outside="onClickOutsideHandler"
5
5
  class="dropdown-toggle-container"
6
+ :data-id="`${props.testId}-show-dropdown-menu`"
6
7
  @click="showDropMenu"
7
8
  >
8
9
  <span class="nav-link">
@@ -22,12 +23,19 @@
22
23
  >
23
24
  <div v-for="(item, key) in dropMenu" :key="key">
24
25
  <button
25
- :id="`${props.testId}-item`"
26
+ :id="`${props.testId}-item`"
26
27
  class="dropdown-item"
27
28
  :class="item.disabled && 'disabled'"
29
+ :data-id="item.testId"
28
30
  @click="onSelect(key)"
29
31
  >
30
- <a v-if="item.href" :id="`${props.testId}-link`" :href="item.href">{{ item.text }}</a>
32
+ <a
33
+ v-if="item.href"
34
+ :id="`${props.testId}-link`"
35
+ :href="item.href"
36
+ :data-id="`${item.testId}-link`"
37
+ >{{ item.text }}</a
38
+ >
31
39
  <a v-else>{{ item.text }} </a>
32
40
  </button>
33
41
  <div v-if="item.divider" class="dropdown-divider" />
@@ -5,4 +5,5 @@ export interface UI_I_DropMenu<Action> {
5
5
  disabled?: boolean
6
6
  divider?: boolean
7
7
  closeAfterClick?: boolean
8
+ testId?: string
8
9
  }
@@ -3,6 +3,7 @@
3
3
  <button
4
4
  :id="`${props.testId}`"
5
5
  class="btn btn-outline-primary dropdown-toggle"
6
+ :data-id="`${props.testId}-toggle-tree`"
6
7
  @click.stop="toggle"
7
8
  >
8
9
  <span class="title">{{ props.title }}</span>
@@ -17,6 +18,7 @@
17
18
  :key="key2"
18
19
  :disabled="item2.disabled"
19
20
  class="btn dropdown-item"
21
+ :data-id="item2.testId"
20
22
  @click="select(item2)"
21
23
  >
22
24
  {{ item2.text }}
@@ -2,6 +2,7 @@ export interface UI_I_DropdownTreeItemChild {
2
2
  text: string
3
3
  value: number
4
4
  disabled?: boolean
5
+ testId?: boolean
5
6
  }
6
7
 
7
8
  export interface UI_I_DropdownTreeItem {
@@ -3,10 +3,12 @@ export interface UI_I_VerticalStepItem {
3
3
  disabled: boolean
4
4
  complete: boolean
5
5
  description?: string
6
+ testId?: string
6
7
  }
7
8
 
8
9
  export interface UI_I_OptionItem {
9
10
  text: string
10
11
  value: any
11
12
  disabled?: boolean
13
+ testId?: string
12
14
  }
@@ -2,6 +2,7 @@
2
2
  <select
3
3
  :id="`${props.testId}-select`"
4
4
  v-model="selectedItem"
5
+ :data-id="props.testId"
5
6
  size="15"
6
7
  class="list"
7
8
  >
@@ -27,6 +27,7 @@
27
27
  <button
28
28
  v-if="!props.isHideCloseIcon"
29
29
  :id="`${props.testId}-close-icon`"
30
+ :data-id="`${props.testId}-close-button`"
30
31
  class="close"
31
32
  @click="hide"
32
33
  >
@@ -41,6 +42,7 @@
41
42
  <slot name="modalFooter">
42
43
  <button
43
44
  :id="`${props.testId}-cancel-button`"
45
+ :data-id="`${props.testId}-cancel-button`"
44
46
  class="btn btn-outline"
45
47
  @click="hide"
46
48
  >
@@ -48,6 +50,7 @@
48
50
  </button>
49
51
  <button
50
52
  :id="`${props.testId}-apply-button`"
53
+ :data-id="`${props.testId}-apply-button`"
51
54
  class="btn btn-primary"
52
55
  :class="props.loading && 'modal-dialog__loader'"
53
56
  :disabled="props.disabledSubmit"
@@ -7,10 +7,10 @@
7
7
  {{ props.title }}
8
8
  </h1>
9
9
  <atoms-step-vertical-step
10
- :test-id="props.testId"
11
- :items="props.stepItems"
12
- :step-position="props.stepPosition"
13
- @change="changeStep"
10
+ :test-id="props.testId"
11
+ :items="props.stepItems"
12
+ :step-position="props.stepPosition"
13
+ @change="changeStep"
14
14
  />
15
15
  </nav>
16
16
  <div class="modal-content">
@@ -23,51 +23,56 @@
23
23
  </div>
24
24
  </slot>
25
25
  <button
26
- :id="`${props.testId}-close-icon`"
27
- class="close"
28
- @click="hide"
26
+ :id="`${props.testId}-close-icon`"
27
+ class="close"
28
+ :data-id="`${props.testId}-close-button`"
29
+ @click="hide"
29
30
  >
30
31
  <atoms-the-icon class="close-icon" name="close" />
31
32
  </button>
32
33
  </div>
33
34
  <div class="modal-body">
34
35
  <slot
35
- name="modalBody"
36
- :title="heading"
37
- :description="stepDescription"
36
+ name="modalBody"
37
+ :title="heading"
38
+ :description="stepDescription"
38
39
  />
39
40
  </div>
40
41
  <div class="modal-footer">
41
42
  <slot name="modalFooter">
42
43
  <button
43
- :id="`${props.testId}-cancel-button`"
44
- class="btn btn-link"
45
- @click="hide"
44
+ :id="`${props.testId}-cancel-button`"
45
+ class="btn btn-link"
46
+ :data-id="`${props.testId}-cancel-button`"
47
+ @click="hide"
46
48
  >
47
49
  {{ localization.cancel }}
48
50
  </button>
49
51
  <button
50
- v-show="props.stepPosition > 0"
51
- :id="`${props.testId}-back-button`"
52
- class="btn btn-outline"
53
- @click="back"
52
+ v-show="props.stepPosition > 0"
53
+ :id="`${props.testId}-back-button`"
54
+ class="btn btn-outline"
55
+ :data-id="`${props.testId}-back-button`"
56
+ @click="back"
54
57
  >
55
58
  {{ localization.back }}
56
59
  </button>
57
60
  <button
58
- v-if="props.stepPosition === props.stepItems.length - 1"
59
- :id="`${props.testId}-finish-button`"
60
- class="btn btn-success"
61
- @click="finish"
61
+ v-if="props.stepPosition === props.stepItems.length - 1"
62
+ :id="`${props.testId}-finish-button`"
63
+ class="btn btn-success"
64
+ :data-id="`${props.testId}-finish-button`"
65
+ @click="finish"
62
66
  >
63
67
  {{ localization.finish }}
64
68
  </button>
65
69
  <button
66
- v-else
67
- :id="`${props.testId}-next-button`"
68
- :disabled="props.disabledNext"
69
- class="btn btn-primary"
70
- @click="next"
70
+ v-else
71
+ :id="`${props.testId}-next-button`"
72
+ :disabled="props.disabledNext"
73
+ class="btn btn-primary"
74
+ :data-id="`${props.testId}-next-button`"
75
+ @click="next"
71
76
  >
72
77
  {{ localization.next }}
73
78
  </button>
@@ -88,20 +93,20 @@
88
93
  import type { UI_I_VerticalStepItem } from '~/components/atoms/lib/models/interfaces'
89
94
 
90
95
  const props = withDefaults(
91
- defineProps<{
92
- show: boolean
93
- title: string
94
- stepItems: UI_I_VerticalStepItem[]
95
- stepPosition: number
96
- secondTitle?: string
97
- testId?: string
98
- loading?: boolean
99
- disabledNext?: boolean
100
- }>(),
101
- {
102
- testId: 'ui-modal-by-steps',
103
- disabledNext: false,
104
- }
96
+ defineProps<{
97
+ show: boolean
98
+ title: string
99
+ stepItems: UI_I_VerticalStepItem[]
100
+ stepPosition: number
101
+ secondTitle?: string
102
+ testId?: string
103
+ loading?: boolean
104
+ disabledNext?: boolean
105
+ }>(),
106
+ {
107
+ testId: 'ui-modal-by-steps',
108
+ disabledNext: false,
109
+ }
105
110
  )
106
111
  const emits = defineEmits<{
107
112
  (event: 'finish'): void
@@ -133,18 +138,18 @@ const changeStep = (key: number): void => {
133
138
  }
134
139
 
135
140
  watch(
136
- () => props.stepPosition,
137
- (value) => {
138
- const { stepItems, secondTitle } = props
139
- if (secondTitle) {
140
- heading.value = secondTitle
141
- return
142
- }
141
+ () => props.stepPosition,
142
+ (value) => {
143
+ const { stepItems, secondTitle } = props
144
+ if (secondTitle) {
145
+ heading.value = secondTitle
146
+ return
147
+ }
143
148
 
144
- heading.value = stepItems[value].text
145
- stepDescription.value = stepItems[value]?.description || ''
146
- },
147
- { immediate: true }
149
+ heading.value = stepItems[value].text
150
+ stepDescription.value = stepItems[value]?.description || ''
151
+ },
152
+ { immediate: true }
148
153
  )
149
154
  </script>
150
155
 
@@ -3,7 +3,12 @@
3
3
  <div class="modal-dialog modal-xl">
4
4
  <div class="wizard-modal-titlebar ui-draggable-handle">
5
5
  <h3>{{ props.title }}</h3>
6
- <button :id="`${props.testId}-close-icon`" class="close" @click="hide">
6
+ <button
7
+ :id="`${props.testId}-close-icon`"
8
+ :data-id="`${props.testId}-close-button`"
9
+ class="close"
10
+ @click="hide"
11
+ >
7
12
  <atoms-the-icon class="close-icon" name="close" />
8
13
  </button>
9
14
  </div>
@@ -25,6 +30,7 @@
25
30
  <slot name="modalFooter">
26
31
  <button
27
32
  :id="`${props.testId}-cancel-button`"
33
+ :data-id="`${props.testId}-cancel-button`"
28
34
  class="btn btn-link"
29
35
  @click="hide"
30
36
  >
@@ -33,6 +39,7 @@
33
39
  <button
34
40
  v-show="props.stepPosition > 0"
35
41
  :id="`${props.testId}-back-button`"
42
+ :data-id="`${props.testId}-back-button`"
36
43
  class="btn btn-outline"
37
44
  @click="back"
38
45
  >
@@ -41,6 +48,7 @@
41
48
  <button
42
49
  v-if="props.stepPosition === props.stepItems.length - 1"
43
50
  :id="`${props.testId}-finish-button`"
51
+ :data-id="`${props.testId}-finish-button`"
44
52
  class="btn btn-success"
45
53
  @click="finish"
46
54
  >
@@ -49,6 +57,7 @@
49
57
  <button
50
58
  v-else
51
59
  :id="`${props.testId}-next-button`"
60
+ :data-id="`${props.testId}-next-button`"
52
61
  class="btn btn-primary"
53
62
  @click="next"
54
63
  >
@@ -4,6 +4,7 @@
4
4
  v-for="(item, key) in props.items"
5
5
  :id="`${props.testId}-link-${key}`"
6
6
  :key="key"
7
+ :data-id="item.testId"
7
8
  class="clr-treenode-link"
8
9
  :to="item.path"
9
10
  active-class="active"
@@ -2,4 +2,5 @@ export interface UI_I_NavItem {
2
2
  text: string,
3
3
  path: string
4
4
  iconClassName: string
5
+ testId?: string
5
6
  }
@@ -6,6 +6,7 @@
6
6
  <div class="alerts-page-down">
7
7
  <button
8
8
  :id="`${props.testId}-prev-button`"
9
+ :data-id="`${props.testId}-prev-button`"
9
10
  class="alerts-pager-button"
10
11
  @click="onPrev"
11
12
  >
@@ -20,6 +21,7 @@
20
21
  <div class="alerts-page-up">
21
22
  <button
22
23
  :id="`${props.testId}-next-button`"
24
+ :data-id="`${props.testId}-next-button`"
23
25
  class="alerts-pager-button"
24
26
  @click="onNext"
25
27
  >
@@ -44,7 +46,12 @@
44
46
 
45
47
  <span class="alert-text">{{ message }}</span>
46
48
 
47
- <div v-if="isShowAction" class="alert-actions" @click="onAction">
49
+ <div
50
+ v-if="isShowAction"
51
+ :data-id="`${props.testId}-alert-actions`"
52
+ class="alert-actions"
53
+ @click="onAction"
54
+ >
48
55
  <button
49
56
  :id="`${props.testId}-action-button`"
50
57
  class="btn alert-action"
@@ -57,6 +64,7 @@
57
64
 
58
65
  <button
59
66
  :id="`${props.testId}-remove-button`"
67
+ :data-id="`${props.testId}-remove-button`"
60
68
  class="close"
61
69
  @click="removeCurrentNotification"
62
70
  >
@@ -5,6 +5,7 @@
5
5
  <div class="clr-select-wrapper">
6
6
  <select
7
7
  :id="`${props.testId}-select`"
8
+ :data-id="`${props.testId}-select`"
8
9
  :value="props.pageSize"
9
10
  class="clr-page-size-select"
10
11
  @change="change"
@@ -1,6 +1,10 @@
1
1
  <template>
2
2
  <div class="popover">
3
- <div :id="id" @click="handleClick">
3
+ <div
4
+ :id="id"
5
+ :data-id="`${props.testId}-click-handler`"
6
+ @click="handleClick"
7
+ >
4
8
  <slot name="elem" />
5
9
  </div>
6
10
 
@@ -8,6 +8,7 @@
8
8
  <div class="close-wrapper">
9
9
  <button
10
10
  :id="`${props.testId}-close-icon`"
11
+ :data-id="`${props.testId}-close-button`"
11
12
  class="close clr-smart-close-button"
12
13
  @click="hide"
13
14
  >
@@ -2,6 +2,7 @@
2
2
  <div class="select">
3
3
  <button
4
4
  :id="props.testId"
5
+ :data-id="`${props.testId}-button`"
5
6
  class="btn btn-link nav-link select-toggle text-ellipsis"
6
7
  @mouseenter="hover = true"
7
8
  @mouseleave="hover = false"
@@ -20,6 +21,7 @@
20
21
  v-for="item in props.options"
21
22
  :id="`${props.testId}-item`"
22
23
  :key="item.value"
24
+ :data-id="item.testId"
23
25
  class="select-item"
24
26
  @mousedown.stop
25
27
  @click="select(item.value)"
@@ -1,4 +1,5 @@
1
1
  export interface UI_I_Option {
2
2
  text: string
3
3
  value: number | string
4
+ testId?: string
4
5
  }