bfg-common 1.3.216 → 1.3.217

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 (44) hide show
  1. package/assets/localization/local_en.json +3 -1
  2. package/components/atoms/alert/Alert.vue +95 -95
  3. package/components/atoms/alert/Notification.vue +170 -170
  4. package/components/atoms/switch/Switch.vue +111 -111
  5. package/components/atoms/table/compact/Compact.vue +526 -526
  6. package/components/atoms/tooltip/Signpost.vue +225 -225
  7. package/components/common/diagramMain/lib/models/interfaces.ts +5 -5
  8. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +6 -6
  9. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +2 -9
  10. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +4 -132
  11. package/components/common/diagramMain/modals/lib/config/index.ts +0 -2
  12. package/components/common/diagramMain/modals/lib/config/initial.ts +0 -62
  13. package/components/common/diagramMain/modals/lib/config/networkModal.ts +92 -165
  14. package/components/common/pages/Tasks.vue +120 -120
  15. package/components/common/recursionTree/RecursionTree.vue +203 -203
  16. package/components/common/vm/actions/add/Add.vue +575 -575
  17. package/components/common/vm/actions/clone/Clone.vue +518 -518
  18. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  24. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  25. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  26. package/components/common/weekSelect/WeekSelect.vue +112 -112
  27. package/components/common/weekSelect/lib/config/options.ts +10 -10
  28. package/components/common/wizards/network/add/Add.vue +17 -1
  29. package/components/common/wizards/network/add/validations/physicalAdapter.ts +70 -0
  30. package/composables/productNameLocal.ts +22 -22
  31. package/composables/useAppVersion.ts +21 -21
  32. package/composables/useEnvLanguage.ts +20 -20
  33. package/lib/utils/sendTask.ts +72 -72
  34. package/minify.js +146 -146
  35. package/package.json +1 -1
  36. package/public/spice-console/application/codec.js +257 -257
  37. package/public/spice-console/lib/rasterEngine.js +907 -907
  38. package/public/spice-console/network/spicechannel.js +369 -369
  39. package/store/main/lib/interfaces.ts +9 -9
  40. package/store/tasks/actions.ts +133 -133
  41. package/store/tasks/getters.ts +25 -25
  42. package/store/tasks/lib/models/interfaces.ts +18 -18
  43. package/store/tasks/mutations.ts +58 -58
  44. package/store/tasks/state.ts +16 -16
@@ -1,313 +1,313 @@
1
- <template>
2
- <div class="edit-vm">
3
- <atoms-modal
4
- test-id="edit-vm-wizard"
5
- :show="true"
6
- :title="localization.editSettings"
7
- :second-title="vmNameCash"
8
- :disabled-submit="loading"
9
- @submit="onUpdate"
10
- @hide="onHideModal"
11
- >
12
- <template #modalBody>
13
- <atoms-loader v-show="!vmSettings || loading" id="loader" />
14
- <div v-if="vmSettings" class="vm-context">
15
- <common-vm-actions-common-customize-hardware
16
- v-model:vm-name="vmName"
17
- v-model:guest-machine-type="vmSettings.guestMachineType"
18
- v-model:guest-os-family="vmSettings.guestOsFamily"
19
- v-model:guest-os-version="vmSettings.guestOsVersion"
20
- :storage="vmSettings.storage"
21
- :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"
22
- :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"
23
- :networks-for-boot-options="virtualHardwareNetworksLocal"
24
- :cd-dvd-drives="vmSettings.cdDvdDrives"
25
- :hard-disks="vmSettings.hardDisks"
26
- :networks="vmSettings.networks"
27
- :customize-hardware-submit="0"
28
- :max-cpus="vmSettings.maxCpus"
29
- :max-memory="vmSettings.maxMemory"
30
- :cpu-models="vmSettings.cpuModels"
31
- :cpu="vmSettings.cpu"
32
- :memory="vmSettings.memory"
33
- :video-card="vmSettings.videoCard"
34
- :usb-controller="vmSettings.usbController"
35
- :pci-devices="vmSettings.pciDevices"
36
- :selected-nav-item="selectedNavItem"
37
- :hard-disks-for-edit="vmSettings.hardDisks"
38
- :options="vmSettings.options"
39
- :nodes="props.nodes"
40
- :files="props.files"
41
- :networks-table="props.networksTable"
42
- :error-validation-fields="props.errorValidationFields"
43
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
44
- :passthrough-devices="props.passthroughDevices"
45
- :state="props.state"
46
- :get-datastore-table-func="props.getDatastoreTableFunc"
47
- :datastore="props.datastore"
48
- is-edit
49
- @get-storage="emits('get-storage', $event)"
50
- @get-folders-or-files="emits('get-folders-or-files', $event)"
51
- @get-active-device-child="emits('get-active-device-child', $event)"
52
- @show-datastore-child="emits('show-datastore-child', $event)"
53
- @get-networks-table="emits('get-networks-table', $event)"
54
- @get-pci-devices="emits('get-pci-devices')"
55
- @change-boot-order="onChangeBootOrder"
56
- @send-data="onChangeCustomizeHardware"
57
- />
58
- </div>
59
- </template>
60
- </atoms-modal>
61
- </div>
62
- </template>
63
-
64
- <script setup lang="ts">
65
- import { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
66
- import { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
67
- import {
68
- UI_I_EditVmPayload,
69
- UI_I_PciDevice,
70
- } from '~/lib/models/store/vm/interfaces'
71
- import { UI_I_Localization } from '~/lib/models/interfaces'
72
- import { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
73
- import {
74
- UI_I_SendDataCpu,
75
- UI_I_SendDataMemory,
76
- UI_I_SendDataNewCdDvdDrive,
77
- UI_I_SendDataNewHardDisk,
78
- UI_I_SendDataNewNetwork,
79
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
80
- import { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
81
- import { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
82
- import { UI_I_TablePayload } from '~/lib/models/table/interfaces'
83
- import { UI_I_VmSettings } from '~/lib/models/store/vm/interfaces'
84
- import {
85
- UI_I_DatastoreTableItem,
86
- UI_I_FolderOrFileTreePayload,
87
- } from '~/lib/models/store/storage/interfaces'
88
- import { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
89
- import { UI_T_EditVmFinishFunc } from '~/components/common/vm/actions/editSettings/lib/models/types'
90
-
91
- const props = defineProps<{
92
- loading: boolean
93
- vmSettings: UI_I_VmSettings | null
94
- nodes: UI_I_FileTreeNode[]
95
- files: UI_I_FileTreeNode[]
96
- networksTable: UI_I_NetworkTableItem[]
97
- errorValidationFields: UI_I_ErrorValidationField<string>[]
98
- vmCpuHelpTextSecond: string
99
- vmId: string
100
- datastore: UI_I_DatastoreTableItem[]
101
- validateSendDataFunc: UI_T_EditVmFinishFunc
102
- getDatastoreTableFunc?: (payload: UI_I_TablePayload) => Promise<void>
103
- state?: string | number
104
- passthroughDevices?: UI_I_PciDevice[]
105
- }>()
106
-
107
- const emits = defineEmits<{
108
- (event: 'hide'): void
109
- (event: 'update-vm', value: UI_I_EditVmPayload): void
110
- (event: 'get-storage', value: UI_I_TablePayload): void
111
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
112
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
113
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
114
- (event: 'get-networks-table', value: UI_I_TablePayload): void
115
- (event: 'get-pci-devices'): void
116
- }>()
117
-
118
- const localization = computed<UI_I_Localization>(() => useLocal())
119
-
120
- const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
121
-
122
- const loading = ref<boolean>(false)
123
- watch(
124
- () => props.loading,
125
- (value) => {
126
- loading.value = value
127
- },
128
- { immediate: true }
129
- )
130
-
131
- const vmSettings = computed<UI_I_VmSettings | null>(() => props.vmSettings)
132
-
133
- const vmName = ref<string>(vmSettings.value?.name || '')
134
- const vmNameCash = ref<string>(vmSettings.value?.name || '')
135
- watch(vmSettings, (newValue) => {
136
- vmName.value = newValue?.name || ''
137
- vmNameCash.value = newValue?.name || ''
138
- })
139
-
140
- const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
141
- const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
142
- null
143
- )
144
- const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
145
- const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
146
- virtualHardwareHardDisks.value = data[0]
147
- virtualHardwareCdDvdDrives.value = data[1]
148
- virtualHardwareNetworks.value = data[2]
149
- }
150
-
151
- const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
152
- const onChangeCustomizeHardware = (
153
- data: UI_I_SendDataCustomizeHardware
154
- ): void => {
155
- customizeHardware.value = data
156
- }
157
- const onHideModal = (): void => {
158
- emits('hide')
159
- }
160
- const onUpdate = (): void => {
161
- validateSendData()
162
- }
163
-
164
- const virtualHardwareHardDisksLocal = computed<
165
- UI_I_SendDataNewHardDisk[] | null
166
- >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
167
- const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
168
- () => customizeHardware.value?.virtualHardware?.networks || null
169
- )
170
- const virtualHardwareCdDvdDrivesLocal = computed<
171
- UI_I_SendDataNewCdDvdDrive[] | null
172
- >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
173
-
174
- const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
175
- () => customizeHardware.value?.virtualHardware?.cpu || null
176
- )
177
- const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
178
- () => customizeHardware.value?.virtualHardware?.memory || null
179
- )
180
-
181
- const validateSendData = async (): Promise<void> => {
182
- loading.value = true
183
- props
184
- .validateSendDataFunc(
185
- vmSettings.value,
186
- virtualHardwareCpu.value,
187
- virtualHardwareMemory.value,
188
- customizeHardware.value,
189
- virtualHardwareNetworks.value,
190
- virtualHardwareHardDisks.value,
191
- virtualHardwareCdDvdDrives.value,
192
- vmName.value,
193
- localization.value,
194
- props.vmId
195
- )
196
- .then((data) => {
197
- loading.value = false
198
-
199
- !data && onHideModal()
200
- })
201
- }
202
- </script>
203
-
204
- <style scoped lang="scss">
205
- .vm-context {
206
- padding: 16px 15px 10px 10px;
207
- height: 100%;
208
- display: flex;
209
- flex-direction: column;
210
-
211
- .context-title-wrap {
212
- padding-bottom: 3px;
213
- border-bottom: 1px solid #a6a6a6;
214
-
215
- h4 {
216
- font-weight: 700;
217
- font-size: 13px;
218
- color: var(--vm-context-title);
219
- }
220
- p {
221
- font-weight: 400;
222
- font-size: 13px;
223
- color: var(--vm-context-sub-title);
224
- }
225
- }
226
-
227
- .finish-block {
228
- padding: 18px 24px 24px 24px;
229
-
230
- .add-hosts-ready-to-complete-mt-12 {
231
- margin-top: 12px;
232
-
233
- .add-hosts-ready-to-complete-bold {
234
- line-height: 18px;
235
- font-weight: 700;
236
- }
237
- }
238
- }
239
-
240
- .vm-hardware-version {
241
- align-self: flex-end;
242
- margin-top: auto;
243
- }
244
- }
245
-
246
- :deep(.modal-dialog) {
247
- width: 840px;
248
- }
249
- :deep(.modal .modal-dialog .modal-content .modal-footer) {
250
- flex: unset;
251
- height: unset;
252
- min-height: unset;
253
- }
254
- :deep(.wizard-modal-titlebar h3) {
255
- color: #000;
256
- font-size: 24px;
257
- font-weight: 200;
258
- line-height: 27px;
259
- margin: 0;
260
- padding: 0;
261
- }
262
- :deep(.clr-wizard-stepnav-item) {
263
- padding-left: 0;
264
- }
265
- :deep(.clr-wizard-stepnav
266
- .clr-wizard-stepnav-item
267
- button
268
- .clr-wizard-stepnav-link-title) {
269
- width: 189px;
270
- font-weight: 700;
271
- font-size: 13px;
272
- }
273
-
274
- #vm-wizard-notification {
275
- h3 {
276
- color: var(--global-font-color7);
277
- margin-top: 6px;
278
- }
279
- p {
280
- color: var(--global-font-color6);
281
- line-height: 16px;
282
- }
283
- }
284
-
285
- .power-on-by-default-wrap {
286
- display: flex;
287
- align-items: center;
288
-
289
- input {
290
- margin-right: 6px;
291
- }
292
- }
293
-
294
- .loading {
295
- :deep(.spinner) {
296
- width: 45px;
297
- height: 45px;
298
- min-width: 45px;
299
- min-height: 45px;
300
- }
301
- }
302
- </style>
303
-
304
- <style>
305
- :root {
306
- --vm-context-title: #333;
307
- --vm-context-sub-title: #000;
308
- }
309
- :root.dark-theme {
310
- --vm-context-title: #adbbc4;
311
- --vm-context-sub-title: #adbbc4;
312
- }
313
- </style>
1
+ <template>
2
+ <div class="edit-vm">
3
+ <atoms-modal
4
+ test-id="edit-vm-wizard"
5
+ :show="true"
6
+ :title="localization.editSettings"
7
+ :second-title="vmNameCash"
8
+ :disabled-submit="loading"
9
+ @submit="onUpdate"
10
+ @hide="onHideModal"
11
+ >
12
+ <template #modalBody>
13
+ <atoms-loader v-show="!vmSettings || loading" id="loader" />
14
+ <div v-if="vmSettings" class="vm-context">
15
+ <common-vm-actions-common-customize-hardware
16
+ v-model:vm-name="vmName"
17
+ v-model:guest-machine-type="vmSettings.guestMachineType"
18
+ v-model:guest-os-family="vmSettings.guestOsFamily"
19
+ v-model:guest-os-version="vmSettings.guestOsVersion"
20
+ :storage="vmSettings.storage"
21
+ :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"
22
+ :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"
23
+ :networks-for-boot-options="virtualHardwareNetworksLocal"
24
+ :cd-dvd-drives="vmSettings.cdDvdDrives"
25
+ :hard-disks="vmSettings.hardDisks"
26
+ :networks="vmSettings.networks"
27
+ :customize-hardware-submit="0"
28
+ :max-cpus="vmSettings.maxCpus"
29
+ :max-memory="vmSettings.maxMemory"
30
+ :cpu-models="vmSettings.cpuModels"
31
+ :cpu="vmSettings.cpu"
32
+ :memory="vmSettings.memory"
33
+ :video-card="vmSettings.videoCard"
34
+ :usb-controller="vmSettings.usbController"
35
+ :pci-devices="vmSettings.pciDevices"
36
+ :selected-nav-item="selectedNavItem"
37
+ :hard-disks-for-edit="vmSettings.hardDisks"
38
+ :options="vmSettings.options"
39
+ :nodes="props.nodes"
40
+ :files="props.files"
41
+ :networks-table="props.networksTable"
42
+ :error-validation-fields="props.errorValidationFields"
43
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
44
+ :passthrough-devices="props.passthroughDevices"
45
+ :state="props.state"
46
+ :get-datastore-table-func="props.getDatastoreTableFunc"
47
+ :datastore="props.datastore"
48
+ is-edit
49
+ @get-storage="emits('get-storage', $event)"
50
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
51
+ @get-active-device-child="emits('get-active-device-child', $event)"
52
+ @show-datastore-child="emits('show-datastore-child', $event)"
53
+ @get-networks-table="emits('get-networks-table', $event)"
54
+ @get-pci-devices="emits('get-pci-devices')"
55
+ @change-boot-order="onChangeBootOrder"
56
+ @send-data="onChangeCustomizeHardware"
57
+ />
58
+ </div>
59
+ </template>
60
+ </atoms-modal>
61
+ </div>
62
+ </template>
63
+
64
+ <script setup lang="ts">
65
+ import { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
66
+ import { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
67
+ import {
68
+ UI_I_EditVmPayload,
69
+ UI_I_PciDevice,
70
+ } from '~/lib/models/store/vm/interfaces'
71
+ import { UI_I_Localization } from '~/lib/models/interfaces'
72
+ import { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
73
+ import {
74
+ UI_I_SendDataCpu,
75
+ UI_I_SendDataMemory,
76
+ UI_I_SendDataNewCdDvdDrive,
77
+ UI_I_SendDataNewHardDisk,
78
+ UI_I_SendDataNewNetwork,
79
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
80
+ import { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
81
+ import { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
82
+ import { UI_I_TablePayload } from '~/lib/models/table/interfaces'
83
+ import { UI_I_VmSettings } from '~/lib/models/store/vm/interfaces'
84
+ import {
85
+ UI_I_DatastoreTableItem,
86
+ UI_I_FolderOrFileTreePayload,
87
+ } from '~/lib/models/store/storage/interfaces'
88
+ import { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
89
+ import { UI_T_EditVmFinishFunc } from '~/components/common/vm/actions/editSettings/lib/models/types'
90
+
91
+ const props = defineProps<{
92
+ loading: boolean
93
+ vmSettings: UI_I_VmSettings | null
94
+ nodes: UI_I_FileTreeNode[]
95
+ files: UI_I_FileTreeNode[]
96
+ networksTable: UI_I_NetworkTableItem[]
97
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
98
+ vmCpuHelpTextSecond: string
99
+ vmId: string
100
+ datastore: UI_I_DatastoreTableItem[]
101
+ validateSendDataFunc: UI_T_EditVmFinishFunc
102
+ getDatastoreTableFunc?: (payload: UI_I_TablePayload) => Promise<void>
103
+ state?: string | number
104
+ passthroughDevices?: UI_I_PciDevice[]
105
+ }>()
106
+
107
+ const emits = defineEmits<{
108
+ (event: 'hide'): void
109
+ (event: 'update-vm', value: UI_I_EditVmPayload): void
110
+ (event: 'get-storage', value: UI_I_TablePayload): void
111
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
112
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
113
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
114
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
115
+ (event: 'get-pci-devices'): void
116
+ }>()
117
+
118
+ const localization = computed<UI_I_Localization>(() => useLocal())
119
+
120
+ const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
121
+
122
+ const loading = ref<boolean>(false)
123
+ watch(
124
+ () => props.loading,
125
+ (value) => {
126
+ loading.value = value
127
+ },
128
+ { immediate: true }
129
+ )
130
+
131
+ const vmSettings = computed<UI_I_VmSettings | null>(() => props.vmSettings)
132
+
133
+ const vmName = ref<string>(vmSettings.value?.name || '')
134
+ const vmNameCash = ref<string>(vmSettings.value?.name || '')
135
+ watch(vmSettings, (newValue) => {
136
+ vmName.value = newValue?.name || ''
137
+ vmNameCash.value = newValue?.name || ''
138
+ })
139
+
140
+ const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
141
+ const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
142
+ null
143
+ )
144
+ const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
145
+ const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
146
+ virtualHardwareHardDisks.value = data[0]
147
+ virtualHardwareCdDvdDrives.value = data[1]
148
+ virtualHardwareNetworks.value = data[2]
149
+ }
150
+
151
+ const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
152
+ const onChangeCustomizeHardware = (
153
+ data: UI_I_SendDataCustomizeHardware
154
+ ): void => {
155
+ customizeHardware.value = data
156
+ }
157
+ const onHideModal = (): void => {
158
+ emits('hide')
159
+ }
160
+ const onUpdate = (): void => {
161
+ validateSendData()
162
+ }
163
+
164
+ const virtualHardwareHardDisksLocal = computed<
165
+ UI_I_SendDataNewHardDisk[] | null
166
+ >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
167
+ const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
168
+ () => customizeHardware.value?.virtualHardware?.networks || null
169
+ )
170
+ const virtualHardwareCdDvdDrivesLocal = computed<
171
+ UI_I_SendDataNewCdDvdDrive[] | null
172
+ >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
173
+
174
+ const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
175
+ () => customizeHardware.value?.virtualHardware?.cpu || null
176
+ )
177
+ const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
178
+ () => customizeHardware.value?.virtualHardware?.memory || null
179
+ )
180
+
181
+ const validateSendData = async (): Promise<void> => {
182
+ loading.value = true
183
+ props
184
+ .validateSendDataFunc(
185
+ vmSettings.value,
186
+ virtualHardwareCpu.value,
187
+ virtualHardwareMemory.value,
188
+ customizeHardware.value,
189
+ virtualHardwareNetworks.value,
190
+ virtualHardwareHardDisks.value,
191
+ virtualHardwareCdDvdDrives.value,
192
+ vmName.value,
193
+ localization.value,
194
+ props.vmId
195
+ )
196
+ .then((data) => {
197
+ loading.value = false
198
+
199
+ !data && onHideModal()
200
+ })
201
+ }
202
+ </script>
203
+
204
+ <style scoped lang="scss">
205
+ .vm-context {
206
+ padding: 16px 15px 10px 10px;
207
+ height: 100%;
208
+ display: flex;
209
+ flex-direction: column;
210
+
211
+ .context-title-wrap {
212
+ padding-bottom: 3px;
213
+ border-bottom: 1px solid #a6a6a6;
214
+
215
+ h4 {
216
+ font-weight: 700;
217
+ font-size: 13px;
218
+ color: var(--vm-context-title);
219
+ }
220
+ p {
221
+ font-weight: 400;
222
+ font-size: 13px;
223
+ color: var(--vm-context-sub-title);
224
+ }
225
+ }
226
+
227
+ .finish-block {
228
+ padding: 18px 24px 24px 24px;
229
+
230
+ .add-hosts-ready-to-complete-mt-12 {
231
+ margin-top: 12px;
232
+
233
+ .add-hosts-ready-to-complete-bold {
234
+ line-height: 18px;
235
+ font-weight: 700;
236
+ }
237
+ }
238
+ }
239
+
240
+ .vm-hardware-version {
241
+ align-self: flex-end;
242
+ margin-top: auto;
243
+ }
244
+ }
245
+
246
+ :deep(.modal-dialog) {
247
+ width: 840px;
248
+ }
249
+ :deep(.modal .modal-dialog .modal-content .modal-footer) {
250
+ flex: unset;
251
+ height: unset;
252
+ min-height: unset;
253
+ }
254
+ :deep(.wizard-modal-titlebar h3) {
255
+ color: #000;
256
+ font-size: 24px;
257
+ font-weight: 200;
258
+ line-height: 27px;
259
+ margin: 0;
260
+ padding: 0;
261
+ }
262
+ :deep(.clr-wizard-stepnav-item) {
263
+ padding-left: 0;
264
+ }
265
+ :deep(.clr-wizard-stepnav
266
+ .clr-wizard-stepnav-item
267
+ button
268
+ .clr-wizard-stepnav-link-title) {
269
+ width: 189px;
270
+ font-weight: 700;
271
+ font-size: 13px;
272
+ }
273
+
274
+ #vm-wizard-notification {
275
+ h3 {
276
+ color: var(--global-font-color7);
277
+ margin-top: 6px;
278
+ }
279
+ p {
280
+ color: var(--global-font-color6);
281
+ line-height: 16px;
282
+ }
283
+ }
284
+
285
+ .power-on-by-default-wrap {
286
+ display: flex;
287
+ align-items: center;
288
+
289
+ input {
290
+ margin-right: 6px;
291
+ }
292
+ }
293
+
294
+ .loading {
295
+ :deep(.spinner) {
296
+ width: 45px;
297
+ height: 45px;
298
+ min-width: 45px;
299
+ min-height: 45px;
300
+ }
301
+ }
302
+ </style>
303
+
304
+ <style>
305
+ :root {
306
+ --vm-context-title: #333;
307
+ --vm-context-sub-title: #000;
308
+ }
309
+ :root.dark-theme {
310
+ --vm-context-title: #adbbc4;
311
+ --vm-context-sub-title: #adbbc4;
312
+ }
313
+ </style>