bfg-common 1.6.49 → 1.6.50

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 (134) hide show
  1. package/assets/localization/local_be.json +255 -9
  2. package/assets/localization/local_en.json +264 -17
  3. package/assets/localization/local_hy.json +257 -11
  4. package/assets/localization/local_kk.json +255 -9
  5. package/assets/localization/local_ru.json +264 -18
  6. package/assets/localization/local_zh.json +255 -9
  7. package/assets/scss/common/global.scss +11 -0
  8. package/assets/scss/common/theme.scss +2 -2
  9. package/components/atoms/stack/StackBlock.vue +1 -1
  10. package/components/atoms/tooltip/TooltipError.vue +3 -0
  11. package/components/common/adapterManager/addAdapterModal/AddAdapterModalNew.vue +1 -1
  12. package/components/common/adapterManager/addAdapterWarningModal/AddAdapterWarningModalNew.vue +0 -1
  13. package/components/common/adapterManager/ui/table/adapters/AdaptersNew.vue +1 -0
  14. package/components/common/certificate/CertificateInfo.vue +7 -1
  15. package/components/common/configure/physicalAdapters/PhysicalAdapters.vue +6 -0
  16. package/components/common/configure/physicalAdapters/PhysicalAdaptersNew.vue +219 -192
  17. package/components/common/configure/physicalAdapters/PhysicalAdaptersOld.vue +6 -4
  18. package/components/common/configure/physicalAdapters/buttons/Buttons.vue +1 -0
  19. package/components/common/configure/physicalAdapters/modals/edit/Edit.vue +26 -1
  20. package/components/common/configure/physicalAdapters/modals/edit/EditNew.vue +30 -1
  21. package/components/common/configure/physicalAdapters/modals/edit/lib/models/interfaces.ts +5 -0
  22. package/components/common/configure/physicalAdapters/modals/edit/lib/validations/validations.ts +19 -0
  23. package/components/common/configure/physicalAdapters/tableView/TableViewNew.vue +12 -1
  24. package/components/common/configure/physicalAdapters/tableView/lib/config/physicalAdaptersTableConfigNew.ts +21 -21
  25. package/components/common/configure/physicalAdapters/tableView/lib/config/settings.ts +12 -5
  26. package/components/common/configure/physicalAdapters/tableView/lib/models/interfaces.ts +4 -1
  27. package/components/common/diagramMain/Diagram.vue +167 -85
  28. package/components/common/diagramMain/DiagramMain.vue +34 -10
  29. package/components/common/diagramMain/header/Header.vue +49 -0
  30. package/components/common/diagramMain/header/HeaderNew.vue +155 -0
  31. package/components/common/diagramMain/{Header.vue → header/HeaderOld.vue} +78 -67
  32. package/components/common/diagramMain/modals/Modals.vue +4 -0
  33. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +2 -2
  34. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +43 -2
  35. package/components/common/diagramMain/modals/lib/config/index.ts +2 -1
  36. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +1 -1
  37. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +2 -2
  38. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +1 -1
  39. package/components/common/diagramMain/skeleton/Header.vue +31 -0
  40. package/components/common/diagramMain/skeleton/Switch.vue +75 -0
  41. package/components/common/layout/theHeader/ThemeSwitch.vue +1 -1
  42. package/components/common/layout/theHeader/modals/reconnect/New.vue +38 -30
  43. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +8 -9
  44. package/components/common/layout/theHeader/userMenu/modals/preferences/New.vue +4 -0
  45. package/components/common/layout/theHeader/userMenu/modals/preferences/Old.vue +9 -2
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +11 -7
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +7 -1
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/lib/config/consoleOptions.ts +8 -5
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +9 -5
  50. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/lib/config/formatOptions.ts +1 -1
  51. package/components/common/layout/theHeader/userMenu/modals/preferences/view/Old.vue +5 -9
  52. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +9 -6
  53. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +3 -1
  54. package/components/common/monitor/advanced/tools/Tools.vue +10 -9
  55. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +16 -19
  56. package/components/common/monitor/advanced/tools/lib/config/advancedToolbar.ts +62 -9
  57. package/components/common/noDataProvided/NoDataProvidedNew.vue +1 -1
  58. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +4 -4
  59. package/components/common/pages/backups/modals/createBackup/datastores/tableView/old/lib/config/table.ts +4 -4
  60. package/components/common/pages/hardwareHealth/HardwareHealth.vue +4 -0
  61. package/components/common/pages/hardwareHealth/HardwareHealthNew.vue +12 -3
  62. package/components/common/pages/hardwareHealth/HardwareHealthOld.vue +3 -0
  63. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +4 -4
  64. package/components/common/pages/hardwareHealth/historyTestimony/GraphNew.vue +4 -3
  65. package/components/common/pages/hardwareHealth/historyTestimony/GraphOld.vue +3 -2
  66. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +32 -8
  67. package/components/common/pages/hardwareHealth/historyTestimony/tools/ToolsNew.vue +11 -18
  68. package/components/common/pages/hardwareHealth/historyTestimony/tools/ToolsOld.vue +10 -19
  69. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +19 -7
  70. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/ActionsNew.vue +1 -1
  71. package/components/common/pages/hardwareHealth/historyTestimony/tools/lib/config/toolbar.ts +68 -5
  72. package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +9 -0
  73. package/components/common/pages/scheduledTasks/table/new/New.vue +12 -10
  74. package/components/common/pages/tasks/Tasks.vue +4 -1
  75. package/components/common/pages/tasks/table/Table.vue +25 -23
  76. package/components/common/readyToComplete/New.vue +1 -0
  77. package/components/common/split/vertical/New.vue +42 -8
  78. package/components/common/split/vertical/Old.vue +31 -2
  79. package/components/common/split/vertical/Vertical.vue +4 -0
  80. package/components/common/vm/actions/add/New.vue +21 -6
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +14 -1
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/New.vue +5 -0
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Old.vue +1 -0
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +1 -0
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/New.vue +2 -0
  86. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +13 -15
  87. package/components/common/vm/actions/confirm/Confirm.vue +3 -0
  88. package/components/common/vm/snapshots/DetailView.vue +6 -6
  89. package/components/common/wizards/datastore/add/New.vue +6 -0
  90. package/components/common/wizards/datastore/add/lib/config/steps.ts +1 -1
  91. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  92. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +1 -1
  93. package/components/common/wizards/network/add/Add.vue +13 -2
  94. package/components/common/wizards/network/add/AddNew.vue +22 -26
  95. package/components/common/wizards/network/add/lib/config/initialData.ts +6 -4
  96. package/components/common/wizards/network/add/lib/config/steps.ts +1 -1
  97. package/components/common/wizards/network/add/lib/models/interfaces.ts +1 -0
  98. package/components/common/wizards/network/add/lib/utils/utils.ts +1 -1
  99. package/components/common/wizards/network/add/steps/connectionSettings/ConnectionSettingsOld.vue +5 -1
  100. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsNew.vue +2 -8
  101. package/components/common/wizards/network/add/steps/ipFourSettings/IpFourSettingsOld.vue +3 -0
  102. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +2 -8
  103. package/components/common/wizards/network/add/steps/portProperties/PortPropertiesOld.vue +6 -2
  104. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +10 -3
  105. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +4 -0
  106. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +5 -1
  107. package/components/common/wizards/network/add/validations/common.ts +1 -1
  108. package/components/common/wizards/vm/migrate/New.vue +13 -3
  109. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +5 -0
  110. package/components/common/wizards/vm/migrate/lib/config/steps.ts +3 -2
  111. package/components/common/wizards/vm/migrate/steps/computeResource/New.vue +2 -1
  112. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/New.vue +40 -21
  113. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/clusterTable.ts +340 -0
  114. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/config/hostTable.ts +44 -14
  115. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/new/lib/models/enums.ts +4 -0
  116. package/components/common/wizards/vm/migrate/steps/priority/New.vue +7 -2
  117. package/components/common/wizards/vm/migrate/steps/selectStorage/New.vue +22 -7
  118. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/New.vue +6 -0
  119. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/New.vue +4 -1
  120. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/batch/table/new/lib/config/datastoreTable.ts +12 -16
  121. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/New.vue +10 -5
  122. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +16 -11
  123. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +7 -1
  124. package/components/common/wizards/vm/migrate/steps/selectStorage/selectedPerDisk/New.vue +17 -10
  125. package/components/common/wizards/vm/migrate/steps/type/TypeNew.vue +1 -0
  126. package/components/common/wizards/vm/migrate/vmOrigin/New.vue +35 -15
  127. package/lib/models/store/tasks/enums.ts +3 -0
  128. package/lib/models/store/tasks/types.ts +7 -6
  129. package/package.json +2 -2
  130. package/plugins/directives.ts +3 -5
  131. package/public/spice-console/application/agent.js +18 -17
  132. package/store/tasks/actions.ts +26 -8
  133. package/store/tasks/mappers/recentTasks.ts +1 -0
  134. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/actions/SaveOptionsModal.vue +0 -81
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <component
3
3
  :is="currentComponent"
4
- v-model:cd-dvd-media="cdDvdMedia"
4
+ v-model:cd-dvd-media="localCdDvdMedia"
5
5
  :index="props.index"
6
6
  @browse="emits('browse')"
7
7
  />
@@ -24,6 +24,19 @@ const currentComponent = computed(() =>
24
24
  ? defineAsyncComponent(() => import('./New.vue'))
25
25
  : defineAsyncComponent(() => import('./Old.vue'))
26
26
  )
27
+
28
+ const localCdDvdMedia = ref<string>('')
29
+
30
+ watch(cdDvdMedia, (newValue) => {
31
+ localCdDvdMedia.value = newValue.replace(/^([^:]+):\//, '[$1]:/')
32
+ }, { immediate: true })
33
+
34
+ watch(localCdDvdMedia, (newValue) => {
35
+ const cleaned = newValue.replace(/^\[([^\]]+)\]:\//, '$1:/')
36
+ if (cleaned !== cdDvdMedia.value) {
37
+ cdDvdMedia.value = cleaned
38
+ }
39
+ })
27
40
  </script>
28
41
 
29
42
  <style scoped></style>
@@ -56,6 +56,11 @@ const emits = defineEmits<{
56
56
  }>()
57
57
 
58
58
  const localization = computed<UI_I_Localization>(() => useLocal())
59
+
60
+ onMounted(() => {
61
+ const cdDvdMediaInputElement = document.getElementById('vm-wizard-dvd-media-input')
62
+ cdDvdMediaInputElement?.classList.remove('text-ellipsis')
63
+ })
59
64
  </script>
60
65
 
61
66
  <style>
@@ -12,6 +12,7 @@
12
12
  <input
13
13
  id="vm-wizard-dvd-media-input"
14
14
  v-model="cdDvdMedia"
15
+ :title="cdDvdMedia"
15
16
  data-id="vm-wizard-dvd-media-input"
16
17
  type="text"
17
18
  disabled
@@ -242,6 +242,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
242
242
  .cpu-info-block {
243
243
  :deep(.help-text) {
244
244
  margin-bottom: 12px;
245
+ color: var(--stack-block-text-color);
245
246
  }
246
247
  :deep(.cpu-more-info) {
247
248
  font-size: 13px;
@@ -106,6 +106,8 @@ const onSelectReservation = (value: number): void => {
106
106
 
107
107
  .ui-checkbox-label {
108
108
  min-height: unset !important;
109
+ height: max-content;
110
+ word-break: break-word;
109
111
  }
110
112
  }
111
113
  </style>
@@ -9,9 +9,7 @@ import type { UI_I_StatusData } from '~/components/common/vm/actions/common/sele
9
9
  import { datastoreLocalizationByState } from '~/components/common/lib/config/states'
10
10
  import { getStatus } from '~/components/common/vm/actions/common/select/storage/new/lib/utils/utils'
11
11
 
12
- export const tableDataFunc = (
13
- localization: UI_I_Localization
14
- ): UI_I_DataTable => ({
12
+ export const tableDataFunc = (localization: UI_I_Localization): UI_I_DataTable => ({
15
13
  id: 'select-storage',
16
14
  header: [
17
15
  {
@@ -31,7 +29,7 @@ export const tableDataFunc = (
31
29
  text: localization.inventorySummary.state,
32
30
  isSortable: false,
33
31
  sort: 'asc',
34
- sortColumn: true,
32
+ sortColumn: false,
35
33
  width: '160px',
36
34
  show: true,
37
35
  filter: true,
@@ -42,7 +40,7 @@ export const tableDataFunc = (
42
40
  text: localization.common.capacity,
43
41
  isSortable: false,
44
42
  sort: 'asc',
45
- sortColumn: true,
43
+ sortColumn: false,
46
44
  width: '150px',
47
45
  show: true,
48
46
  filter: true,
@@ -53,7 +51,7 @@ export const tableDataFunc = (
53
51
  text: localization.common.provisioned,
54
52
  isSortable: false,
55
53
  sort: 'asc',
56
- sortColumn: true,
54
+ sortColumn: false,
57
55
  width: '150px',
58
56
  show: true,
59
57
  filter: true,
@@ -64,7 +62,7 @@ export const tableDataFunc = (
64
62
  text: localization.common.free,
65
63
  isSortable: false,
66
64
  sort: 'asc',
67
- sortColumn: true,
65
+ sortColumn: false,
68
66
  width: '150px',
69
67
  show: true,
70
68
  filter: true,
@@ -75,7 +73,7 @@ export const tableDataFunc = (
75
73
  text: localization.common.used,
76
74
  isSortable: false,
77
75
  sort: 'asc',
78
- sortColumn: true,
76
+ sortColumn: false,
79
77
  width: '150px',
80
78
  show: true,
81
79
  filter: true,
@@ -86,7 +84,7 @@ export const tableDataFunc = (
86
84
  text: localization.common.type,
87
85
  isSortable: false,
88
86
  sort: 'asc',
89
- sortColumn: true,
87
+ sortColumn: false,
90
88
  width: '120px',
91
89
  show: true,
92
90
  filter: true,
@@ -97,7 +95,7 @@ export const tableDataFunc = (
97
95
  text: localization.common.thinProvisioning,
98
96
  isSortable: false,
99
97
  sort: 'asc',
100
- sortColumn: true,
98
+ sortColumn: false,
101
99
  width: '160px',
102
100
  show: true,
103
101
  filter: true,
@@ -108,7 +106,7 @@ export const tableDataFunc = (
108
106
  text: localization.common.access,
109
107
  isSortable: false,
110
108
  sort: 'asc',
111
- sortColumn: true,
109
+ sortColumn: false,
112
110
  width: '120px',
113
111
  show: true,
114
112
  filter: true,
@@ -119,7 +117,7 @@ export const tableDataFunc = (
119
117
  text: localization.common.hardwareAcceleration,
120
118
  isSortable: false,
121
119
  sort: 'asc',
122
- sortColumn: true,
120
+ sortColumn: false,
123
121
  width: '200px',
124
122
  show: true,
125
123
  filter: true,
@@ -130,7 +128,7 @@ export const tableDataFunc = (
130
128
  text: localization.common.driverType,
131
129
  isSortable: false,
132
130
  sort: 'asc',
133
- sortColumn: true,
131
+ sortColumn: false,
134
132
  width: '150px',
135
133
  show: true,
136
134
  filter: true,
@@ -141,7 +139,7 @@ export const tableDataFunc = (
141
139
  text: localization.common.device,
142
140
  isSortable: false,
143
141
  sort: 'asc',
144
- sortColumn: true,
142
+ sortColumn: false,
145
143
  width: '150px',
146
144
  show: true,
147
145
  filter: true,
@@ -152,7 +150,7 @@ export const tableDataFunc = (
152
150
  text: localization.common.storageIoControl,
153
151
  isSortable: false,
154
152
  sort: 'asc',
155
- sortColumn: true,
153
+ sortColumn: false,
156
154
  width: '180px',
157
155
  show: true,
158
156
  filter: true,
@@ -4,6 +4,7 @@
4
4
  :sub-title="props.subTitle"
5
5
  :description="props.description"
6
6
  :modal-texts="props.modalTexts"
7
+ :loading="props.isLoading"
7
8
  @hide-modal="emits('hide')"
8
9
  @confirm="emits('confirm')"
9
10
  >
@@ -22,9 +23,11 @@ const props = withDefaults(
22
23
  subTitle: string
23
24
  description: string
24
25
  modalTexts?: UI_I_ModalTexts
26
+ isLoading?: boolean
25
27
  }>(),
26
28
  {
27
29
  modalTexts: undefined,
30
+ isLoading: false
28
31
  }
29
32
  )
30
33
 
@@ -7,13 +7,13 @@
7
7
  >
8
8
  <tbody>
9
9
  <tr>
10
- <td class="left">{{ localization.common.name }}</td>
10
+ <td class="left" data-id="vm-snapshot-name-label">{{ localization.common.name }}</td>
11
11
  <td class="left snapshot-name-label" data-id="vm-snapshot-name">
12
12
  {{ detailData.name }}
13
13
  </td>
14
14
  </tr>
15
15
  <tr>
16
- <td class="left">{{ localization.common.description }}</td>
16
+ <td class="left" data-id="vm-snapshot-description-label">{{ localization.common.description }}</td>
17
17
  <td
18
18
  class="left snapshot-name-label"
19
19
  data-id="vm-snapshot-description"
@@ -22,17 +22,17 @@
22
22
  </td>
23
23
  </tr>
24
24
  <tr>
25
- <td class="left">{{ localization.snapshots.timestamp }}</td>
25
+ <td class="left" data-id="vm-snapshot-timestamp-label">{{ localization.snapshots.timestamp }}</td>
26
26
  <td class="left snapshot-name-label" data-id="vm-snapshot-timestamp">
27
27
  {{ detailData.timestamp }}
28
28
  </td>
29
29
  </tr>
30
30
  <tr>
31
- <td class="left">{{ localization.common.size }}</td>
31
+ <td class="left" data-id="vm-snapshot-size-label">{{ localization.common.size }}</td>
32
32
  <td class="left snapshot-name-label">{{ detailData.size }}</td>
33
33
  </tr>
34
34
  <tr>
35
- <td class="left">
35
+ <td class="left" data-id="vm-snapshot-of-memory-label">
36
36
  {{ localization.common.snapshotTheVirtualMachinesMemory }}
37
37
  </td>
38
38
  <td class="left snapshot-name-label" data-id="vm-snapshot-of-memory">
@@ -40,7 +40,7 @@
40
40
  </td>
41
41
  </tr>
42
42
  <tr>
43
- <td class="left">
43
+ <td class="left" data-id="vm-snapshot-file-system-label">
44
44
  {{ localization.common.quiesceGuestFileSystem }}
45
45
  </td>
46
46
  <td
@@ -256,4 +256,10 @@ const onCreateDatastore = (): void => emits('submit')
256
256
  padding: 10px 12px;
257
257
  }
258
258
  }
259
+ :deep(.ui-wizard-content-right-container) {
260
+ padding: 0 30px;
261
+ }
262
+ :deep(.ui-wizard-subtitle-container) + *, :deep(.ui-wizard-subtitle-container) {
263
+ padding-left: 2px;
264
+ }
259
265
  </style>
@@ -130,7 +130,7 @@ export const stepsFunc = (
130
130
  // },
131
131
  {
132
132
  id: dynamicSteps.readyComplete,
133
- title: localization.common.readyComplete,
133
+ title: localization.vmWizard.readyComplete,
134
134
  subTitle: localization.common.readyCompleteDatastoreDesc,
135
135
  status: UI_E_WIZARD_STATUS.INACTIVE,
136
136
  fields: {},
@@ -179,7 +179,7 @@ const onSelectHost = (event: string): void => {
179
179
  display: flex;
180
180
  flex-direction: column;
181
181
  row-gap: 16px;
182
- margin: 16px 0 16px 2px;
182
+ margin: 16px 0;
183
183
 
184
184
  &__alert {
185
185
  align-items: flex-start;
@@ -3,7 +3,7 @@
3
3
  <ui-button
4
4
  variant="text"
5
5
  test-id="advanced-options-button"
6
- class="advanced-options-btn btn btn-link"
6
+ class="advanced-options-btn"
7
7
  @click="isShowAdvancedOptions = !isShowAdvancedOptions"
8
8
  >
9
9
  <template #icon>
@@ -618,9 +618,20 @@ const finalValidationFunc = async (
618
618
  const stepId = wizard.getStepIdByFieldName(fieldName)
619
619
 
620
620
  if (stepId !== -1) {
621
+ let message = ''
622
+
623
+ if (validationFields[fieldName]) {
624
+ message = `${validationFields[
625
+ fieldName
626
+ ][0].toUpperCase()}${validationFields[fieldName].substring(1)}`
627
+
628
+ message =
629
+ message.charAt(message.length - 1) !== '.' ? message + '.' : message
630
+ }
631
+
621
632
  stepHasError = wizard.setValidation(stepId, fieldName, {
622
- fieldMessage: validationFields[fieldName],
623
- alertMessage: validationFields[fieldName],
633
+ fieldMessage: message,
634
+ alertMessage: message,
624
635
  })
625
636
  }
626
637
  }
@@ -44,22 +44,21 @@
44
44
  >
45
45
  <template #subTitle>
46
46
  <div ref="selectTargetDeviceBlock">
47
- <div class="subtitle-block flex flex-col">
47
+ <div class="alert-block flex flex-col">
48
48
  <template
49
49
  v-for="(message, field, key) in selectedStep.fields"
50
50
  :key="key"
51
51
  >
52
52
  <ui-alert
53
+ v-if="!!message.alert"
53
54
  :messages="[message.alert]"
54
55
  test-id="select-target-device-alert"
55
- :class="{
56
- 'mb-4':
57
- props.alertMessages[selectedStep.id].length - 1 === key,
58
- }"
59
56
  size="md"
60
57
  @hide="emits('hide-alert', selectedStep.id, field)"
61
58
  />
62
59
  </template>
60
+ </div>
61
+ <div class="subtitle-block flex flex-col">
63
62
  <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
64
63
  <ui-line margin="12px 0 0" />
65
64
  </div>
@@ -89,22 +88,21 @@
89
88
  >
90
89
  <template #subTitle>
91
90
  <div ref="createStandardSwitchBlock">
92
- <div class="subtitle-block flex flex-col">
91
+ <div class="alert-block flex flex-col">
93
92
  <template
94
93
  v-for="(message, field, key) in selectedStep.fields"
95
94
  :key="key"
96
95
  >
97
96
  <ui-alert
97
+ v-if="!!message.alert"
98
98
  :messages="[message.alert]"
99
99
  test-id="create-standard-switch-alert"
100
- :class="{
101
- 'mb-4':
102
- props.alertMessages[selectedStep.id].length - 1 === key,
103
- }"
104
100
  size="md"
105
101
  @hide="emits('hide-alert', selectedStep.id, field)"
106
102
  />
107
103
  </template>
104
+ </div>
105
+ <div class="subtitle-block flex flex-col">
108
106
  <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
109
107
  <ui-line margin="12px 0 0" />
110
108
  </div>
@@ -146,22 +144,21 @@
146
144
  >
147
145
  <template #subTitle>
148
146
  <div ref="portPropertiesBlock">
149
- <div class="subtitle-block flex flex-col">
147
+ <div class="alert-block flex flex-col">
150
148
  <template
151
149
  v-for="(message, field, key) in selectedStep.fields"
152
150
  :key="key"
153
151
  >
154
152
  <ui-alert
153
+ v-if="!!message.alert"
155
154
  :messages="[message.alert]"
156
155
  test-id="port-properties-alert"
157
- :class="{
158
- 'mb-4':
159
- props.alertMessages[selectedStep.id].length - 1 === key,
160
- }"
161
156
  size="md"
162
157
  @hide="emits('hide-alert', selectedStep.id, field)"
163
158
  />
164
159
  </template>
160
+ </div>
161
+ <div class="subtitle-block flex flex-col">
165
162
  <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
166
163
  <ui-line margin="12px 0 0" />
167
164
  </div>
@@ -190,22 +187,21 @@
190
187
  >
191
188
  <template #subTitle>
192
189
  <div ref="ipFourSettingsBlock">
193
- <div class="subtitle-block flex flex-col">
190
+ <div class="alert-block flex flex-col">
194
191
  <template
195
192
  v-for="(message, field, key) in selectedStep.fields"
196
193
  :key="key"
197
194
  >
198
195
  <ui-alert
196
+ v-if="!!message.alert"
199
197
  :messages="[message.alert]"
200
198
  test-id="ip-four-settings-alert"
201
- :class="{
202
- 'mb-4':
203
- props.alertMessages[selectedStep.id].length - 1 === key,
204
- }"
205
199
  size="md"
206
200
  @hide="emits('hide-alert', selectedStep.id, field)"
207
201
  />
208
202
  </template>
203
+ </div>
204
+ <div class="subtitle-block flex flex-col">
209
205
  <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
210
206
  <ui-line margin="12px 0 0" />
211
207
  </div>
@@ -233,22 +229,21 @@
233
229
  >
234
230
  <template #subTitle>
235
231
  <div ref="connectionSettingsBlock">
236
- <div class="subtitle-block flex flex-col">
232
+ <div class="alert-block flex flex-col">
237
233
  <template
238
234
  v-for="(message, field, key) in selectedStep.fields"
239
235
  :key="key"
240
236
  >
241
237
  <ui-alert
238
+ v-if="!!message.alert"
242
239
  :messages="[message.alert]"
243
240
  test-id="connection-settings-alert"
244
- :class="{
245
- 'mb-4':
246
- props.alertMessages[selectedStep.id].length - 1 === key,
247
- }"
248
241
  size="md"
249
242
  @hide="emits('hide-alert', selectedStep.id, field)"
250
243
  />
251
244
  </template>
245
+ </div>
246
+ <div class="subtitle-block flex flex-col">
252
247
  <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
253
248
  <ui-line margin="12px 0 0" />
254
249
  </div>
@@ -463,6 +458,7 @@ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
463
458
  }
464
459
  :deep(.ui-wizard-content-with-subtitle) {
465
460
  padding-right: 0;
461
+ scrollbar-gutter: unset;
466
462
  }
467
463
  }
468
464
 
@@ -477,7 +473,7 @@ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
477
473
  :deep(.ui-alert-item) {
478
474
  margin-bottom: 12px;
479
475
 
480
- &.mb-4 {
476
+ &:last-of-type {
481
477
  margin-bottom: 16px;
482
478
  }
483
479
  }
@@ -37,7 +37,7 @@ export const portPropertiesInitial = (
37
37
  localization: UI_I_Localization
38
38
  ): UI_I_PortProperties => ({
39
39
  networkLabel: '',
40
- vlanId: `${localization.common.none} (0)`,
40
+ vlanId: `${localization.common.none2} (0)`,
41
41
  mtu: {
42
42
  option: '0',
43
43
  size: 1500,
@@ -62,19 +62,21 @@ export const connectionSettingsInitial = (
62
62
  localization: UI_I_Localization
63
63
  ): UI_I_ConnectionSettings => ({
64
64
  networkLabel: 'VM Network',
65
- vlanId: `${localization.common.none} (0)`,
65
+ vlanId: `${localization.common.none2} (0)`,
66
66
  })
67
67
 
68
68
  export const vlanIdSelectDataFunc = (
69
69
  localization: UI_I_Localization
70
70
  ): UI_I_VlanIdData[] => [
71
71
  {
72
- text: `${localization.common.none} (0)`,
73
- value: `${localization.common.none} (0)`,
72
+ text: `${localization.common.none2} (0)`,
73
+ value: `${localization.common.none2} (0)`,
74
+ testId: 'vlan-id-start'
74
75
  },
75
76
  {
76
77
  text: `${localization.common.all} (4095)`,
77
78
  value: `${localization.common.all} (4095)`,
79
+ testId: 'vlan-id-end'
78
80
  },
79
81
  ]
80
82
 
@@ -145,7 +145,7 @@ export const stepsFunc = (
145
145
  },
146
146
  {
147
147
  id: 7,
148
- title: localization.common.readyComplete,
148
+ title: localization.vmWizard.readyComplete,
149
149
  subTitle: localization.common.addNetworkingReadyCompleteSubtitle,
150
150
  status: UI_E_WIZARD_STATUS.INACTIVE,
151
151
  fields: {},
@@ -177,6 +177,7 @@ export interface UI_I_AddNetworkingFourthOrFifthSchemeDataSend {
177
177
  export interface UI_I_VlanIdData {
178
178
  text: string
179
179
  value: string
180
+ testId?: string
180
181
  }
181
182
 
182
183
  export interface UI_I_NetworkValidation {
@@ -5,5 +5,5 @@ export const getVlanId = (
5
5
  localization: UI_I_Localization
6
6
  ): string =>
7
7
  (vlanId === `${localization.common.all} (4095)` && '4095') ||
8
- (vlanId === `${localization.common.none} (0)` && '0') ||
8
+ (vlanId === `${localization.common.none2} (0)` && '0') ||
9
9
  vlanId
@@ -18,6 +18,7 @@
18
18
  <fieldset>
19
19
  <atoms-tooltip-error
20
20
  :has-error="!!props.messagesFields.name.field"
21
+ test-id="network-label-error"
21
22
  >
22
23
  <template #elem>
23
24
  <input
@@ -72,7 +73,10 @@
72
73
  class="is-error tooltip-trigger"
73
74
  name="info"
74
75
  />
75
- <div class="tooltip-top-left tooltip-content error">
76
+ <div
77
+ class="tooltip-top-left tooltip-content error"
78
+ data-id="vlan-id-error"
79
+ >
76
80
  {{ props.messagesFields.vlan.field }}
77
81
  </div>
78
82
  </div>
@@ -281,14 +281,8 @@ const fields = computed({
281
281
  }
282
282
  }
283
283
  :deep(.ui-checkbox-label) {
284
- text-overflow: ellipsis;
285
- white-space: nowrap;
286
- overflow: hidden;
287
-
288
- .ui-checkbox-label-text {
289
- text-overflow: ellipsis;
290
- white-space: nowrap;
291
- overflow: hidden;
284
+ &.md {
285
+ height: unset;
292
286
  }
293
287
  }
294
288
  .tooltip-text {
@@ -53,6 +53,7 @@
53
53
  :has-error="
54
54
  !!props.messagesFields['ipv4_settings.ipv4'].field
55
55
  "
56
+ test-id="address-error"
56
57
  >
57
58
  <template #elem>
58
59
  <input
@@ -88,6 +89,7 @@
88
89
  :has-error="
89
90
  !!props.messagesFields['ipv4_settings.mask'].field
90
91
  "
92
+ test-id="mask-error"
91
93
  >
92
94
  <template #elem>
93
95
  <input
@@ -142,6 +144,7 @@
142
144
  :has-error="
143
145
  !!props.messagesFields['ipv4_settings.gateway'].field
144
146
  "
147
+ test-id="gateway-error"
145
148
  >
146
149
  <template #elem>
147
150
  <input
@@ -299,14 +299,8 @@ const portPropertiesEnabledServices = computed<
299
299
  padding: 0 8px 0 12px;
300
300
  }
301
301
  :deep(.ui-checkbox-label) {
302
- text-overflow: ellipsis;
303
- white-space: nowrap;
304
- overflow: hidden;
305
-
306
- .ui-checkbox-label-text {
307
- text-overflow: ellipsis;
308
- white-space: nowrap;
309
- overflow: hidden;
302
+ &.md {
303
+ height: unset;
310
304
  }
311
305
  }
312
306
  </style>
@@ -22,6 +22,7 @@
22
22
  <fieldset>
23
23
  <atoms-tooltip-error
24
24
  :has-error="!!props.messagesFields.network_name.field"
25
+ test-id="network-label-error"
25
26
  >
26
27
  <template #elem>
27
28
  <input
@@ -77,7 +78,7 @@
77
78
  class="is-error tooltip-trigger"
78
79
  name="info"
79
80
  />
80
- <div class="tooltip-top-left tooltip-content error">
81
+ <div class="tooltip-top-left tooltip-content error" data-id="vlan-id-error">
81
82
  {{ props.messagesFields['new_network.vlan'].field }}
82
83
  </div>
83
84
  </div>
@@ -111,6 +112,7 @@
111
112
  </div>
112
113
  <atoms-tooltip-error
113
114
  :has-error="!!props.messagesFields.mtu.field"
115
+ test-id="invalid-mtu-error"
114
116
  >
115
117
  <template #elem>
116
118
  <input
@@ -239,7 +241,9 @@ const emits = defineEmits<{
239
241
  }>()
240
242
 
241
243
  const localization = computed<UI_I_Localization>(() => useLocal())
242
- const vlanIdSelectDataLocal = computed<UI_I_Localization>(() => vlanIdSelectDataFunc(localization.value))
244
+ const vlanIdSelectDataLocal = computed<UI_I_Localization>(() =>
245
+ vlanIdSelectDataFunc(localization.value)
246
+ )
243
247
 
244
248
  const fields = computed({
245
249
  get(): UI_I_PortProperties {