bfg-common 1.5.227 → 1.5.228

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 (148) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/localization/local_be.json +4 -3
  3. package/assets/localization/local_en.json +11 -10
  4. package/assets/localization/local_hy.json +4 -3
  5. package/assets/localization/local_kk.json +4 -3
  6. package/assets/localization/local_ru.json +6 -5
  7. package/assets/localization/local_zh.json +4 -3
  8. package/assets/scss/common/normalize.scss +1 -0
  9. package/components/atoms/TheIcon3.vue +50 -50
  10. package/components/atoms/perPage/PerPage.vue +58 -58
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  14. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  15. package/components/common/backup/storage/actions/add/Add.vue +247 -247
  16. package/components/common/backup/storage/actions/add/New.vue +281 -281
  17. package/components/common/backup/storage/actions/add/Old.vue +114 -114
  18. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  19. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  20. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +294 -294
  21. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  22. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  23. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  24. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  25. package/components/common/context/lib/models/interfaces.ts +31 -31
  26. package/components/common/diagramMain/DiagramMain.vue +897 -897
  27. package/components/common/diagramMain/Header.vue +214 -214
  28. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  30. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  31. package/components/common/pages/home/headline/Headline.vue +45 -45
  32. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  33. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  34. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  35. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  36. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  37. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  38. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  39. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  40. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  41. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  42. package/components/common/pages/packages/Packages.vue +208 -208
  43. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  44. package/components/common/readyToComplete/New.vue +16 -1
  45. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  46. package/components/common/recursionTree/RecursionTree.vue +223 -223
  47. package/components/common/select/button/ButtonDropdown.vue +108 -108
  48. package/components/common/spiceConsole/Drawer.vue +377 -377
  49. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  50. package/components/common/vm/actions/add/New.vue +98 -36
  51. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  52. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  53. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  54. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  55. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  56. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  57. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +348 -337
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  111. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  112. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +8 -0
  113. package/components/common/vm/actions/common/select/compatibility/New.vue +14 -7
  114. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  115. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +142 -134
  116. package/components/common/vm/actions/common/select/computeResource/New.vue +29 -7
  117. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  118. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  119. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  120. package/components/common/vm/actions/common/select/createType/New.vue +92 -84
  121. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  122. package/components/common/vm/actions/common/select/name/Name.vue +174 -167
  123. package/components/common/vm/actions/common/select/name/New.vue +36 -8
  124. package/components/common/vm/actions/common/select/os/New.vue +128 -122
  125. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  126. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  127. package/components/common/vm/actions/common/select/storage/Storage.vue +8 -0
  128. package/components/common/vm/actions/common/select/storage/new/New.vue +27 -8
  129. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +9 -9
  130. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  131. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  132. package/components/common/vm/actions/editSettings/new/New.vue +1 -1
  133. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  134. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  135. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  136. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  137. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  138. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  139. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  140. package/composables/productNameLocal.ts +30 -30
  141. package/composables/useAppVersion.ts +21 -21
  142. package/package.json +2 -2
  143. package/plugins/date.ts +233 -233
  144. package/public/spice-console/lib/images/bitmap.js +203 -203
  145. package/public/spice-console/network/spicechannel.js +387 -387
  146. package/store/main/mutations.ts +7 -7
  147. package/store/main/state.ts +7 -7
  148. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,139 +1,139 @@
1
- <template>
2
- <common-vm-actions-common-select-os-new
3
- v-if="isNewView"
4
- v-model:machine-type="machineType"
5
- v-model:guest-os-family="guestOsFamily"
6
- v-model:guest-os-version="guestOsVersion"
7
- :api-error-machine-type="apiErrorMachineType"
8
- :machine-type-options="machineTypeOptions"
9
- :api-error-guest-os-family="apiErrorGuestOsFamily"
10
- :os-options="osOptions"
11
- :api-error-guest-os-version="apiErrorGuestOsVersion"
12
- :versions-options="versionsOptions"
13
- @change-os="onChangeOs"
14
- @remove-error-by-title="onRemoveValidationError"
15
- />
16
- <common-vm-actions-common-select-os-old
17
- v-else
18
- v-model:machine-type="machineType"
19
- v-model:guest-os-family="guestOsFamily"
20
- v-model:guest-os-version="guestOsVersion"
21
- :api-error-machine-type="apiErrorMachineType"
22
- :machine-type-options="machineTypeOptions"
23
- :api-error-guest-os-family="apiErrorGuestOsFamily"
24
- :os-options="osOptions"
25
- :api-error-guest-os-version="apiErrorGuestOsVersion"
26
- :versions-options="versionsOptions"
27
- @change-os="onChangeOs"
28
- @remove-error-by-title="onRemoveValidationError"
29
- />
30
- </template>
31
-
32
- <script setup lang="ts">
33
- import type {
34
- UI_I_ArbitraryObject,
35
- } from '~/lib/models/interfaces'
36
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
37
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
38
-
39
- const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
40
- required: true,
41
- })
42
- const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
43
- required: true,
44
- })
45
- const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
46
- required: true,
47
- })
48
-
49
- const props = defineProps<{
50
- familiesOptions: UI_I_OptionItem[]
51
- machineTypesOptions: UI_I_OptionItem[]
52
- versionsOptions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
53
- errorValidationFields: UI_I_ErrorValidationField[]
54
- }>()
55
- const emits = defineEmits<{
56
- (event: 'remove-error-by-title', value: string): void
57
- }>()
58
-
59
- const { $store }: any = useNuxtApp()
60
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
61
-
62
- const machineTypeOptions = ref<UI_I_OptionItem[]>(props.machineTypesOptions)
63
- watch(
64
- () => props.machineTypesOptions,
65
- (newValue) => {
66
- machineTypeOptions.value = [...newValue]
67
- if (machineType.value) return
68
-
69
- const q35MachineIndex = newValue.findIndex((item) =>
70
- item.value.toLowerCase().includes('q35')
71
- )
72
- if (q35MachineIndex === -1) {
73
- machineType.value = newValue[0]
74
- } else {
75
- machineType.value = newValue[q35MachineIndex]
76
- }
77
- },
78
- { immediate: true }
79
- )
80
-
81
- const osOptions = ref<UI_I_OptionItem[]>(props.familiesOptions)
82
- watch(
83
- () => props.familiesOptions,
84
- (newValue) => {
85
- osOptions.value = [...newValue]
86
- if (guestOsFamily.value) return
87
- guestOsFamily.value = newValue[0]
88
- },
89
- { immediate: true }
90
- )
91
- const onChangeOs = (): void => {
92
- guestOsVersion.value = versionsOptions.value[0]
93
- }
94
-
95
- const versionsOptions = computed<UI_I_OptionItem[]>(() => {
96
- if (!guestOsFamily.value) return []
97
-
98
- return props.versionsOptions[guestOsFamily.value.value] || []
99
- })
100
- watch(
101
- versionsOptions,
102
- () => {
103
- if (guestOsVersion.value) return
104
-
105
- guestOsVersion.value = versionsOptions.value[0]
106
- },
107
- { immediate: true }
108
- )
109
-
110
- const apiErrorMachineType = computed<string>(() => {
111
- return (
112
- props.errorValidationFields?.find(
113
- (message) => message.field === 'machine_type'
114
- )?.error_message || ''
115
- )
116
- })
117
-
118
- const apiErrorGuestOsFamily = computed<string>(() => {
119
- return (
120
- props.errorValidationFields?.find(
121
- (message) => message.field === 'guest_os_family'
122
- )?.error_message || ''
123
- )
124
- })
125
-
126
- const apiErrorGuestOsVersion = computed<string>(() => {
127
- return (
128
- props.errorValidationFields?.find(
129
- (message) => message.field === 'guest_os_version'
130
- )?.error_message || ''
131
- )
132
- })
133
-
134
- const onRemoveValidationError = (type: string): void => {
135
- emits('remove-error-by-title', type)
136
- }
137
- </script>
138
-
139
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-os-new
3
+ v-if="isNewView"
4
+ v-model:machine-type="machineType"
5
+ v-model:guest-os-family="guestOsFamily"
6
+ v-model:guest-os-version="guestOsVersion"
7
+ :api-error-machine-type="apiErrorMachineType"
8
+ :machine-type-options="machineTypeOptions"
9
+ :api-error-guest-os-family="apiErrorGuestOsFamily"
10
+ :os-options="osOptions"
11
+ :api-error-guest-os-version="apiErrorGuestOsVersion"
12
+ :versions-options="versionsOptions"
13
+ @change-os="onChangeOs"
14
+ @remove-error-by-title="onRemoveValidationError"
15
+ />
16
+ <common-vm-actions-common-select-os-old
17
+ v-else
18
+ v-model:machine-type="machineType"
19
+ v-model:guest-os-family="guestOsFamily"
20
+ v-model:guest-os-version="guestOsVersion"
21
+ :api-error-machine-type="apiErrorMachineType"
22
+ :machine-type-options="machineTypeOptions"
23
+ :api-error-guest-os-family="apiErrorGuestOsFamily"
24
+ :os-options="osOptions"
25
+ :api-error-guest-os-version="apiErrorGuestOsVersion"
26
+ :versions-options="versionsOptions"
27
+ @change-os="onChangeOs"
28
+ @remove-error-by-title="onRemoveValidationError"
29
+ />
30
+ </template>
31
+
32
+ <script setup lang="ts">
33
+ import type {
34
+ UI_I_ArbitraryObject,
35
+ } from '~/lib/models/interfaces'
36
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
37
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
38
+
39
+ const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
40
+ required: true,
41
+ })
42
+ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
43
+ required: true,
44
+ })
45
+ const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
46
+ required: true,
47
+ })
48
+
49
+ const props = defineProps<{
50
+ familiesOptions: UI_I_OptionItem[]
51
+ machineTypesOptions: UI_I_OptionItem[]
52
+ versionsOptions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
53
+ errorValidationFields: UI_I_ErrorValidationField[]
54
+ }>()
55
+ const emits = defineEmits<{
56
+ (event: 'remove-error-by-title', value: string): void
57
+ }>()
58
+
59
+ const { $store }: any = useNuxtApp()
60
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
61
+
62
+ const machineTypeOptions = ref<UI_I_OptionItem[]>(props.machineTypesOptions)
63
+ watch(
64
+ () => props.machineTypesOptions,
65
+ (newValue) => {
66
+ machineTypeOptions.value = [...newValue]
67
+ if (machineType.value) return
68
+
69
+ const q35MachineIndex = newValue.findIndex((item) =>
70
+ item.value.toLowerCase().includes('q35')
71
+ )
72
+ if (q35MachineIndex === -1) {
73
+ machineType.value = newValue[0]
74
+ } else {
75
+ machineType.value = newValue[q35MachineIndex]
76
+ }
77
+ },
78
+ { immediate: true }
79
+ )
80
+
81
+ const osOptions = ref<UI_I_OptionItem[]>(props.familiesOptions)
82
+ watch(
83
+ () => props.familiesOptions,
84
+ (newValue) => {
85
+ osOptions.value = [...newValue]
86
+ if (guestOsFamily.value) return
87
+ guestOsFamily.value = newValue[0]
88
+ },
89
+ { immediate: true }
90
+ )
91
+ const onChangeOs = (): void => {
92
+ guestOsVersion.value = versionsOptions.value[0]
93
+ }
94
+
95
+ const versionsOptions = computed<UI_I_OptionItem[]>(() => {
96
+ if (!guestOsFamily.value) return []
97
+
98
+ return props.versionsOptions[guestOsFamily.value.value] || []
99
+ })
100
+ watch(
101
+ versionsOptions,
102
+ () => {
103
+ if (guestOsVersion.value) return
104
+
105
+ guestOsVersion.value = versionsOptions.value[0]
106
+ },
107
+ { immediate: true }
108
+ )
109
+
110
+ const apiErrorMachineType = computed<string>(() => {
111
+ return (
112
+ props.errorValidationFields?.find(
113
+ (message) => message.field === 'machine_type'
114
+ )?.error_message || ''
115
+ )
116
+ })
117
+
118
+ const apiErrorGuestOsFamily = computed<string>(() => {
119
+ return (
120
+ props.errorValidationFields?.find(
121
+ (message) => message.field === 'guest_os_family'
122
+ )?.error_message || ''
123
+ )
124
+ })
125
+
126
+ const apiErrorGuestOsVersion = computed<string>(() => {
127
+ return (
128
+ props.errorValidationFields?.find(
129
+ (message) => message.field === 'guest_os_version'
130
+ )?.error_message || ''
131
+ )
132
+ })
133
+
134
+ const onRemoveValidationError = (type: string): void => {
135
+ emits('remove-error-by-title', type)
136
+ }
137
+ </script>
138
+
139
+ <style scoped lang="scss"></style>
@@ -44,6 +44,7 @@ const emits = defineEmits<{
44
44
  (event: 'submit', value: UI_I_DatastoreTableItem): void
45
45
  (event: 'change-storage', value: UI_I_DatastoreTableItem): void
46
46
  (event: 'is-selected-row', value: boolean): void
47
+ (event: 'has-errors', value: boolean): void
47
48
  }>()
48
49
 
49
50
  const { $store }: any = useNuxtApp()
@@ -134,6 +135,13 @@ const showValidationErrors = (arr: string[]): void => {
134
135
  const onRemoveValidationErrors = (): void => {
135
136
  errors.value = []
136
137
  }
138
+ watch(
139
+ errors,
140
+ (newValue) => {
141
+ emits('has-errors', !newValue.length)
142
+ },
143
+ { immediate: true, deep: true }
144
+ )
137
145
  </script>
138
146
 
139
147
  <style scoped lang="scss"></style>
@@ -7,7 +7,8 @@
7
7
  :items="props.errors"
8
8
  status="alert-danger"
9
9
  test-id="storage-alert"
10
- @remove="emits('remove-error')"
10
+ size="md"
11
+ @hide="emits('remove-error')"
11
12
  />
12
13
  </Teleport>
13
14
 
@@ -41,18 +42,23 @@
41
42
  <p class="compatibility">
42
43
  {{ localization.inventorySummary.compatibility }}
43
44
  </p>
44
- <div class="compatibility-message flex-align-center">
45
+ <div class="compatibility-message flex-align-start">
45
46
  <ui-skeleton-item v-if="loading" width="160px" height="16px" />
46
47
  <template v-else>
47
48
  <template v-if="props.selectedStorage">
48
- <ui-icon name="success-fill" width="16" height="16" />
49
+ <ui-icon
50
+ name="success-fill"
51
+ width="16"
52
+ height="16"
53
+ class="icon-compatibility-alert"
54
+ />
49
55
  <span class="compatibility-message-description">{{
50
56
  localization.common.compatibilityChecksSucceeded
51
57
  }}</span>
52
58
  </template>
53
59
  <template v-else>
54
60
  <!-- <ui-icon name="error" width="16" height="16" />-->
55
- <span class="compatibility-message-description">{{
61
+ <span class="compatibility-message-description empty">{{
56
62
  localization.vmWizard.noStorageSelected
57
63
  }}</span>
58
64
  </template>
@@ -139,18 +145,23 @@ const onSelectRow = (selectedData: UI_I_DataTable): void => {
139
145
  --select-storage-border-color: #e9ebed;
140
146
  --select-storage-bg-color: #ffffff;
141
147
  --select-storage-title-color: #4d5d69;
148
+ --select-storage-compatibility-bg-color: #ffffff;
142
149
  --select-storage-compatibility-description-color: #4d5d69;
150
+ --select-storage-compatibility-empty-description-color: #9da6ad;
143
151
  }
144
152
  :root.dark-theme {
145
153
  --select-storage-border-color: #e9ebed1f;
146
154
  --select-storage-bg-color: var(--wizard-right-bg);
147
155
  --select-storage-title-color: #e9eaec;
148
- --select-storage-compatibility-description-color: #9da6ad;
156
+ --select-storage-compatibility-bg-color: #1b2a371f;
157
+ --select-storage-compatibility-description-color: #e9eaec;
158
+ --select-storage-compatibility-empty-description-color: #9da6ad;
149
159
  }
150
160
  </style>
151
161
  <style scoped lang="scss">
152
162
  .select-storage {
153
- padding-top: 16px;
163
+ padding-top: 12px;
164
+ padding-bottom: 16px;
154
165
 
155
166
  .storage-count {
156
167
  font-size: 16px;
@@ -187,12 +198,20 @@ const onSelectRow = (selectedData: UI_I_DataTable): void => {
187
198
  border-radius: 8px;
188
199
  border: 1px solid var(--select-storage-border-color);
189
200
  padding: 12px;
190
- background-color: var(--select-storage-bg-color);
191
- gap: 12px;
201
+ background-color: var(--select-storage-compatibility-bg-color);
202
+ gap: 10px;
192
203
 
204
+ .icon-compatibility-alert {
205
+ min-width: 16px;
206
+ min-height: 16px;
207
+ }
193
208
  .compatibility-message-description {
194
209
  font-size: 13px;
195
210
  color: var(--select-storage-compatibility-description-color);
211
+
212
+ &.empty {
213
+ color: var(--select-storage-compatibility-empty-description-color);
214
+ }
196
215
  }
197
216
  }
198
217
  }
@@ -98,7 +98,7 @@ export const tableDataFunc = (
98
98
  isSortable: false,
99
99
  sort: 'asc',
100
100
  sortColumn: true,
101
- width: '150px',
101
+ width: '190px',
102
102
  show: true,
103
103
  filter: true,
104
104
  },
@@ -120,7 +120,7 @@ export const tableDataFunc = (
120
120
  isSortable: false,
121
121
  sort: 'asc',
122
122
  sortColumn: true,
123
- width: '150px',
123
+ width: '190px',
124
124
  show: true,
125
125
  filter: true,
126
126
  },
@@ -153,16 +153,16 @@ export const tableDataFunc = (
153
153
  isSortable: false,
154
154
  sort: 'asc',
155
155
  sortColumn: true,
156
- width: '150px',
156
+ width: '190px',
157
157
  show: true,
158
158
  filter: true,
159
159
  },
160
- {
161
- col: 13,
162
- colName: 'default-actions',
163
- text: '',
164
- show: true,
165
- },
160
+ // {
161
+ // col: 13,
162
+ // colName: 'default-actions',
163
+ // text: '',
164
+ // show: true,
165
+ // },
166
166
  ],
167
167
 
168
168
  body: [],
@@ -1,6 +1,6 @@
1
- export interface UI_I_StatusData {
2
- iconClassName: string
3
- color: string
4
- isState: boolean
5
- text: string
1
+ export interface UI_I_StatusData {
2
+ iconClassName: string
3
+ color: string
4
+ isState: boolean
5
+ text: string
6
6
  }
@@ -1,21 +1,21 @@
1
- import type { UI_I_StatusData } from '~/components/common/vm/actions/common/select/storage/new/lib/models/interfaces'
2
-
3
- export const getStatus = (
4
- status: boolean,
5
- text1?: string,
6
- text2?: string
7
- ): UI_I_StatusData => {
8
- return status
9
- ? {
10
- iconClassName: 'status-check',
11
- color: 'green',
12
- isState: true,
13
- text: text1 || 'True',
14
- }
15
- : {
16
- iconClassName: 'close',
17
- color: 'red',
18
- isState: true,
19
- text: text2 || 'False',
20
- }
21
- }
1
+ import type { UI_I_StatusData } from '~/components/common/vm/actions/common/select/storage/new/lib/models/interfaces'
2
+
3
+ export const getStatus = (
4
+ status: boolean,
5
+ text1?: string,
6
+ text2?: string
7
+ ): UI_I_StatusData => {
8
+ return status
9
+ ? {
10
+ iconClassName: 'status-check',
11
+ color: 'green',
12
+ isState: true,
13
+ text: text1 || 'True',
14
+ }
15
+ : {
16
+ iconClassName: 'close',
17
+ color: 'red',
18
+ isState: true,
19
+ text: text2 || 'False',
20
+ }
21
+ }
@@ -18,7 +18,7 @@
18
18
  v-if="!vmSettings || props.loading"
19
19
  />
20
20
 
21
- <div v-else class="vm-context">
21
+ <div v-else class="vm-context px-8">
22
22
  <common-vm-actions-common-customize-hardware
23
23
  v-model:vm-name="vmName"
24
24
  v-model:guest-machine-type="vmSettings.guestMachineType"
@@ -1,88 +1,88 @@
1
- <template>
2
- <div class="skeleton-wrap">
3
- <div class="tabs">
4
- <ui-skeleton-item width="64px" height="16px" />
5
- <ui-skeleton-item width="64px" height="16px" />
6
- </div>
7
- <div class="actions">
8
- <ui-skeleton-item width="80px" height="16px" />
9
- <ui-skeleton-item width="152px" height="32px" border-radius="6px" />
10
- </div>
11
- <div class="stack-block-wrap">
12
- <div class="stack-block">
13
- <div class="stack-label flex-1">
14
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
15
- <ui-skeleton-item height="16px" />
16
- </div>
17
- <div class="stack-value flex-1">
18
- <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
19
- </div>
20
- </div>
21
-
22
- <div v-for="item in 2" :key="item" class="stack-block">
23
- <div class="stack-label flex-1">
24
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
25
- <ui-skeleton-item height="16px" />
26
- </div>
27
- <div class="stack-value flex-1">
28
- <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
29
- <ui-skeleton-item width="80px" height="32px" border-radius="8px" />
30
- </div>
31
- </div>
32
-
33
- <div v-for="item in 5" :key="item" class="stack-block">
34
- <div class="stack-label flex-1">
35
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
36
- <ui-skeleton-item height="16px" />
37
- </div>
38
- <div class="stack-value flex-1">
39
- <ui-skeleton-item width="196px" height="32px" border-radius="8px" />
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- </template>
45
-
46
- <script setup lang="ts"></script>
47
-
48
- <style scoped lang="scss">
49
- .skeleton-wrap {
50
- padding: 0 32px;
51
-
52
- .tabs {
53
- display: flex;
54
- align-items: center;
55
- gap: 32px;
56
- padding: 8px 0 12px;
57
- border-bottom: 1px solid var(--divider-color);
58
- }
59
-
60
- .actions {
61
- display: flex;
62
- align-items: center;
63
- justify-content: space-between;
64
- margin: 12px 0;
65
- }
66
-
67
- .stack-block-wrap {
68
- display: grid;
69
- grid-gap: 12px;
70
-
71
- .stack-block {
72
- display: flex;
73
- align-items: center;
74
- gap: 12px;
75
- padding: 8px 12px;
76
- background: var(--stack-block-bg-color);
77
- border-radius: 6px;
78
-
79
- .stack-label,
80
- .stack-value {
81
- display: flex;
82
- align-items: center;
83
- gap: 8px;
84
- }
85
- }
86
- }
87
- }
88
- </style>
1
+ <template>
2
+ <div class="skeleton-wrap">
3
+ <div class="tabs">
4
+ <ui-skeleton-item width="64px" height="16px" />
5
+ <ui-skeleton-item width="64px" height="16px" />
6
+ </div>
7
+ <div class="actions">
8
+ <ui-skeleton-item width="80px" height="16px" />
9
+ <ui-skeleton-item width="152px" height="32px" border-radius="6px" />
10
+ </div>
11
+ <div class="stack-block-wrap">
12
+ <div class="stack-block">
13
+ <div class="stack-label flex-1">
14
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
15
+ <ui-skeleton-item height="16px" />
16
+ </div>
17
+ <div class="stack-value flex-1">
18
+ <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
19
+ </div>
20
+ </div>
21
+
22
+ <div v-for="item in 2" :key="item" class="stack-block">
23
+ <div class="stack-label flex-1">
24
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
25
+ <ui-skeleton-item height="16px" />
26
+ </div>
27
+ <div class="stack-value flex-1">
28
+ <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
29
+ <ui-skeleton-item width="80px" height="32px" border-radius="8px" />
30
+ </div>
31
+ </div>
32
+
33
+ <div v-for="item in 5" :key="item" class="stack-block">
34
+ <div class="stack-label flex-1">
35
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
36
+ <ui-skeleton-item height="16px" />
37
+ </div>
38
+ <div class="stack-value flex-1">
39
+ <ui-skeleton-item width="196px" height="32px" border-radius="8px" />
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </template>
45
+
46
+ <script setup lang="ts"></script>
47
+
48
+ <style scoped lang="scss">
49
+ .skeleton-wrap {
50
+ padding: 0 32px;
51
+
52
+ .tabs {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 32px;
56
+ padding: 8px 0 12px;
57
+ border-bottom: 1px solid var(--divider-color);
58
+ }
59
+
60
+ .actions {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ margin: 12px 0;
65
+ }
66
+
67
+ .stack-block-wrap {
68
+ display: grid;
69
+ grid-gap: 12px;
70
+
71
+ .stack-block {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 12px;
75
+ padding: 8px 12px;
76
+ background: var(--stack-block-bg-color);
77
+ border-radius: 6px;
78
+
79
+ .stack-label,
80
+ .stack-value {
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 8px;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ </style>