bfg-common 1.5.351 → 1.5.353

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 (139) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/collapse/CollapseNavItem.vue +226 -226
  9. package/components/atoms/nav/NavBar.vue +2 -10
  10. package/components/atoms/perPage/PerPage.vue +58 -58
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  12. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  13. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  14. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  15. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  16. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  18. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/context/lib/models/interfaces.ts +33 -33
  21. package/components/common/diagramMain/DiagramMain.vue +897 -897
  22. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  23. package/components/common/diagramMain/network/Network.vue +141 -141
  24. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  25. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  26. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  27. package/components/common/pages/home/headline/Headline.vue +45 -45
  28. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  29. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  30. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  31. package/components/common/pages/home/widgets/WidgetsNew.vue +88 -88
  32. package/components/common/pages/home/widgets/WidgetsOld.vue +36 -36
  33. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  34. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  35. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  36. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  37. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  38. package/components/common/pages/packages/Packages.vue +208 -208
  39. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  40. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  41. package/components/common/recursionTree/RecursionTree.vue +223 -223
  42. package/components/common/select/button/ButtonDropdown.vue +112 -112
  43. package/components/common/select/radio/RadioGroup.vue +135 -135
  44. package/components/common/spiceConsole/Drawer.vue +377 -377
  45. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  46. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  47. package/components/common/tools/Actions.vue +207 -207
  48. package/components/common/vm/actions/add/Old.vue +388 -388
  49. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  50. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  51. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  52. package/components/common/vm/actions/clone/Clone.vue +823 -823
  53. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  54. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +155 -155
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/{StorageModalNew.vue → storageModal/new/New.vue} +5 -1
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/storageModal/new/lib/config/table.ts +15 -0
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +19 -12
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -94
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -155
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -130
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -113
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -95
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -155
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  103. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  104. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  105. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  106. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  107. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  108. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  109. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  110. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  111. package/components/common/vm/actions/common/select/storage/Storage.vue +155 -152
  112. package/components/common/vm/actions/common/select/storage/new/New.vue +294 -290
  113. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  114. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  115. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -242
  116. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  117. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  118. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  119. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  120. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  121. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  122. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  123. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  124. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  125. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  126. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  127. package/composables/productNameLocal.ts +30 -30
  128. package/composables/useAppVersion.ts +21 -21
  129. package/package.json +1 -1
  130. package/plugins/date.ts +233 -233
  131. package/plugins/panelStates.ts +70 -70
  132. package/plugins/text.ts +59 -59
  133. package/public/spice-console/lib/images/bitmap.js +203 -203
  134. package/public/spice-console/network/spicechannel.js +387 -387
  135. package/store/main/mutations.ts +7 -7
  136. package/store/main/state.ts +7 -7
  137. package/store/tasks/mappers/recentTasks.ts +64 -64
  138. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/{StorageModalOld.vue → storageModal/Old.vue} +0 -0
  139. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/{StorageModal.vue → storageModal/StorageModal.vue} +0 -0
@@ -1,174 +1,174 @@
1
- <template>
2
- <common-vm-actions-common-select-name-new
3
- v-if="isNewView"
4
- v-model:vm-name="vmName"
5
- v-model:is-show-help="isShowHelp"
6
- :project="props.project"
7
- :errors="errors"
8
- :data-center="props.dataCenter"
9
- @remove-validation-errors="onRemoveValidationErrors"
10
- @select-node="onSelectNode"
11
- />
12
- <common-vm-actions-common-select-name-old
13
- v-else
14
- v-model:vm-name="vmName"
15
- v-model:is-show-help="isShowHelp"
16
- :project="props.project"
17
- :errors="errors"
18
- :data-center="props.dataCenter"
19
- @remove-validation-errors="onRemoveValidationErrors"
20
- @select-node="onSelectNode"
21
- />
22
- </template>
23
-
24
- <script setup lang="ts">
25
- // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
26
- import type { UI_I_Localization } from '~/lib/models/interfaces'
27
- import type { UI_T_Project } from '~/lib/models/types'
28
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
29
-
30
- const props = defineProps<{
31
- nameFormSubmit: null | Function
32
- show: boolean
33
- project: UI_T_Project
34
- dataCenter?: UI_I_TreeNode // для сферы
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
- (event: 'loading', value: boolean): void
39
- (
40
- event: 'check-name',
41
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
- ): void
43
- (event: 'has-errors', value: boolean): void
44
- }>()
45
-
46
- const { $store }: any = useNuxtApp()
47
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
48
-
49
- const localization = computed<UI_I_Localization>(() => useLocal())
50
-
51
- const vmName = ref<string>('')
52
-
53
- const selectedNode = ref<UI_I_TreeNode | null>(null)
54
- const onSelectNode = (node: UI_I_TreeNode): void => {
55
- selectedNode.value = node
56
- }
57
-
58
- watch(
59
- () => props.nameFormSubmit,
60
- (newValue) => {
61
- newValue && submit(newValue)
62
- }
63
- )
64
-
65
- const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
66
- if (!node) return false
67
-
68
- if (node.parent?.type === 'datacenter') return true
69
- if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
70
- return false
71
- }
72
- const submit = async (cb: Function): Promise<void> => {
73
- const name = vmName.value
74
-
75
- if (name !== '') {
76
- const isNameValid = await checkNameIsValid(name)
77
- if (!isNameValid) {
78
- cb(false)
79
- return
80
- }
81
- }
82
-
83
- if (props.project === 'sphere') {
84
- // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
85
-
86
- if (
87
- // selectedNode.value?.type !== 'datacenter' &&
88
- // selectedNode.value?.type === 'folder' &&
89
- // !isDatacenterFolder
90
- // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
91
- ![3, 7].includes(selectedNode.value?.kind)
92
- ) {
93
- showValidationErrors([
94
- localization.value.common.enterValidLocationVirtualMachine,
95
- ])
96
- cb(false)
97
- return
98
- }
99
- }
100
-
101
- onRemoveValidationErrors()
102
- emits('submit', [name, selectedNode.value])
103
- cb(true)
104
- }
105
- const checkNameIsValid = async (name: string): Promise<boolean> => {
106
- emits('loading', true)
107
-
108
- return new Promise((resolve) => {
109
- emits('check-name', [
110
- [name, selectedNode.value],
111
- (error) => {
112
- emits('loading', false)
113
-
114
- const status = error?.statusCode || 200
115
- switch (status) {
116
- case 405: // Invalid kind
117
- showValidationErrors([
118
- localization.value.common.kindValidationDescription,
119
- ])
120
- resolve(false)
121
- break
122
- case 406: // Invalid name
123
- showValidationErrors([
124
- localization.value.common.vmNameValidationDescription,
125
- ])
126
- resolve(false)
127
- break
128
- case 409: // Name exist
129
- showValidationErrors([
130
- localization.value.common.vmNameExistInSelectedLocation,
131
- ])
132
- resolve(false)
133
- break
134
- }
135
-
136
- resolve(true)
137
- },
138
- ])
139
- })
140
- }
141
-
142
- const errors = ref<string[]>([])
143
- const showValidationErrors = (data: string[]): void => {
144
- errors.value = data
145
- }
146
- const onRemoveValidationErrors = (): void => {
147
- errors.value = []
148
- }
149
- watch(
150
- errors,
151
- (newValue) => {
152
- emits('has-errors', !newValue.length)
153
- },
154
- { immediate: true, deep: true }
155
- )
156
-
157
- watch(
158
- () => props.show,
159
- (newValue) => {
160
- if (!newValue) return
161
-
162
- const input = document.getElementById('virtual-machine-name')
163
- if (!input) return
164
-
165
- setTimeout(() => {
166
- input.focus()
167
- }, 0)
168
- }
169
- )
170
-
171
- const isShowHelp = ref<boolean>(false)
172
- </script>
173
-
174
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-select-name-new
3
+ v-if="isNewView"
4
+ v-model:vm-name="vmName"
5
+ v-model:is-show-help="isShowHelp"
6
+ :project="props.project"
7
+ :errors="errors"
8
+ :data-center="props.dataCenter"
9
+ @remove-validation-errors="onRemoveValidationErrors"
10
+ @select-node="onSelectNode"
11
+ />
12
+ <common-vm-actions-common-select-name-old
13
+ v-else
14
+ v-model:vm-name="vmName"
15
+ v-model:is-show-help="isShowHelp"
16
+ :project="props.project"
17
+ :errors="errors"
18
+ :data-center="props.dataCenter"
19
+ @remove-validation-errors="onRemoveValidationErrors"
20
+ @select-node="onSelectNode"
21
+ />
22
+ </template>
23
+
24
+ <script setup lang="ts">
25
+ // import { API_UI_I_Error } from '~/lib/models/store/interfaces'
26
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
27
+ import type { UI_T_Project } from '~/lib/models/types'
28
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
29
+
30
+ const props = defineProps<{
31
+ nameFormSubmit: null | Function
32
+ show: boolean
33
+ project: UI_T_Project
34
+ dataCenter?: UI_I_TreeNode // для сферы
35
+ }>()
36
+ const emits = defineEmits<{
37
+ (event: 'submit', value: [string, UI_I_TreeNode | null]): void
38
+ (event: 'loading', value: boolean): void
39
+ (
40
+ event: 'check-name',
41
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
+ ): void
43
+ (event: 'has-errors', value: boolean): void
44
+ }>()
45
+
46
+ const { $store }: any = useNuxtApp()
47
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
48
+
49
+ const localization = computed<UI_I_Localization>(() => useLocal())
50
+
51
+ const vmName = ref<string>('')
52
+
53
+ const selectedNode = ref<UI_I_TreeNode | null>(null)
54
+ const onSelectNode = (node: UI_I_TreeNode): void => {
55
+ selectedNode.value = node
56
+ }
57
+
58
+ watch(
59
+ () => props.nameFormSubmit,
60
+ (newValue) => {
61
+ newValue && submit(newValue)
62
+ }
63
+ )
64
+
65
+ const isParentDatacenter = (node: UI_I_TreeNode | null): boolean => {
66
+ if (!node) return false
67
+
68
+ if (node.parent?.type === 'datacenter') return true
69
+ if (node.parent?.type === 'folder') return isParentDatacenter(node.parent)
70
+ return false
71
+ }
72
+ const submit = async (cb: Function): Promise<void> => {
73
+ const name = vmName.value
74
+
75
+ if (name !== '') {
76
+ const isNameValid = await checkNameIsValid(name)
77
+ if (!isNameValid) {
78
+ cb(false)
79
+ return
80
+ }
81
+ }
82
+
83
+ if (props.project === 'sphere') {
84
+ // const isDatacenterFolder = isParentDatacenter(selectedNode.value)
85
+
86
+ if (
87
+ // selectedNode.value?.type !== 'datacenter' &&
88
+ // selectedNode.value?.type === 'folder' &&
89
+ // !isDatacenterFolder
90
+ // TODO рефакторинг, здесь сейчас проверяем является ли выбранный элемент датацентром или папкой(вм)
91
+ ![3, 7].includes(selectedNode.value?.kind)
92
+ ) {
93
+ showValidationErrors([
94
+ localization.value.common.enterValidLocationVirtualMachine,
95
+ ])
96
+ cb(false)
97
+ return
98
+ }
99
+ }
100
+
101
+ onRemoveValidationErrors()
102
+ emits('submit', [name, selectedNode.value])
103
+ cb(true)
104
+ }
105
+ const checkNameIsValid = async (name: string): Promise<boolean> => {
106
+ emits('loading', true)
107
+
108
+ return new Promise((resolve) => {
109
+ emits('check-name', [
110
+ [name, selectedNode.value],
111
+ (error) => {
112
+ emits('loading', false)
113
+
114
+ const status = error?.statusCode || 200
115
+ switch (status) {
116
+ case 405: // Invalid kind
117
+ showValidationErrors([
118
+ localization.value.common.kindValidationDescription,
119
+ ])
120
+ resolve(false)
121
+ break
122
+ case 406: // Invalid name
123
+ showValidationErrors([
124
+ localization.value.common.vmNameValidationDescription,
125
+ ])
126
+ resolve(false)
127
+ break
128
+ case 409: // Name exist
129
+ showValidationErrors([
130
+ localization.value.common.vmNameExistInSelectedLocation,
131
+ ])
132
+ resolve(false)
133
+ break
134
+ }
135
+
136
+ resolve(true)
137
+ },
138
+ ])
139
+ })
140
+ }
141
+
142
+ const errors = ref<string[]>([])
143
+ const showValidationErrors = (data: string[]): void => {
144
+ errors.value = data
145
+ }
146
+ const onRemoveValidationErrors = (): void => {
147
+ errors.value = []
148
+ }
149
+ watch(
150
+ errors,
151
+ (newValue) => {
152
+ emits('has-errors', !newValue.length)
153
+ },
154
+ { immediate: true, deep: true }
155
+ )
156
+
157
+ watch(
158
+ () => props.show,
159
+ (newValue) => {
160
+ if (!newValue) return
161
+
162
+ const input = document.getElementById('virtual-machine-name')
163
+ if (!input) return
164
+
165
+ setTimeout(() => {
166
+ input.focus()
167
+ }, 0)
168
+ }
169
+ )
170
+
171
+ const isShowHelp = ref<boolean>(false)
172
+ </script>
173
+
174
+ <style scoped lang="scss"></style>
@@ -1,152 +1,152 @@
1
- <template>
2
- <div class="select-os">
3
- <p class="select-os-block">
4
- {{ localization.common.identifyingGuestSystemInstallation }}
5
- </p>
6
- <div class="select-os-block os-select-wrap table-row">
7
- <label for="machine-type-select" class="table-cell"
8
- >{{ localization.common.machineType }}:</label
9
- >
10
-
11
- <atoms-tooltip-error
12
- :has-error="!!props.apiErrorMachineType"
13
- selector="#vm-wizard-machine-type-select"
14
- @remove="emits('remove-error-by-title', 'machine_type')"
15
- >
16
- <template #elem>
17
- <select
18
- id="vm-wizard-machine-type-select"
19
- v-model="machineType"
20
- data-id="vm-wizard-machine-type-select"
21
- class="table-cell"
22
- >
23
- <option
24
- v-for="item in props.machineTypeOptions"
25
- :key="item.value"
26
- :value="item"
27
- >
28
- {{ item.text }}
29
- </option>
30
- </select>
31
- </template>
32
- <template #content>{{ props.apiErrorMachineType }}</template>
33
- </atoms-tooltip-error>
34
- </div>
35
- <div class="select-os-block os-select-wrap table-row">
36
- <label for="os-select" class="table-cell"
37
- >{{ localization.common.guestOsFamily }}:</label
38
- >
39
-
40
- <atoms-tooltip-error
41
- :has-error="!!props.apiErrorGuestOsFamily"
42
- selector="#vm-wizard-os-select"
43
- @remove="emits('remove-error-by-title', 'guest_os_family')"
44
- >
45
- <template #elem>
46
- <select
47
- id="vm-wizard-os-select"
48
- v-model="guestOsFamily"
49
- data-id="vm-wizard-os-select"
50
- class="table-cell"
51
- @change="emits('change-os')"
52
- >
53
- <option
54
- v-for="item in props.osOptions"
55
- :key="item.value"
56
- :value="item"
57
- >
58
- {{ item.text }}
59
- </option>
60
- </select>
61
- </template>
62
- <template #content>{{ props.apiErrorGuestOsFamily }}</template>
63
- </atoms-tooltip-error>
64
- </div>
65
- <div class="select-os-block os-select-wrap table-row">
66
- <label for="os-version-select" class="table-cell"
67
- >{{ localization.common.guestOsVersion }}:</label
68
- >
69
-
70
- <atoms-tooltip-error
71
- :has-error="!!props.apiErrorGuestOsVersion"
72
- selector="#vm-wizard-os-version-select"
73
- @remove="emits('remove-error-by-title', 'guest_os_version')"
74
- >
75
- <template #elem>
76
- <select
77
- id="vm-wizard-os-version-select"
78
- v-model="guestOsVersion"
79
- data-id="vm-wizard-os-version-select"
80
- class="table-cell"
81
- >
82
- <option
83
- v-for="item in props.versionsOptions"
84
- :key="item.value"
85
- :value="item"
86
- >
87
- {{ item.text }}
88
- </option>
89
- </select>
90
- </template>
91
- <template #content>{{ props.apiErrorGuestOsVersion }}</template>
92
- </atoms-tooltip-error>
93
- </div>
94
- </div>
95
- </template>
96
-
97
- <script setup lang="ts">
98
- import type { UI_I_Localization } from '~/lib/models/interfaces'
99
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
100
-
101
- const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
102
- required: true,
103
- })
104
- const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
105
- required: true,
106
- })
107
- const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
108
- required: true,
109
- })
110
-
111
- const props = defineProps<{
112
- apiErrorMachineType: string
113
- machineTypeOptions: UI_I_OptionItem[]
114
- apiErrorGuestOsFamily: string
115
- osOptions: UI_I_OptionItem[]
116
- apiErrorGuestOsVersion: string
117
- versionsOptions: UI_I_OptionItem[]
118
- }>()
119
- const emits = defineEmits<{
120
- (event: 'remove-error-by-title', value: string): void
121
- (event: 'change-os'): void
122
- }>()
123
- const localization = computed<UI_I_Localization>(() => useLocal())
124
- </script>
125
-
126
- <style scoped lang="scss">
127
- .select-os {
128
- .select-os-block {
129
- label:not(.windows-virtualization-label) {
130
- padding: 0 5px 5px 0;
131
- }
132
-
133
- .windows-virtualization-label {
134
- padding: 0 4px;
135
- }
136
- }
137
- }
138
-
139
- #os-select-help-icon {
140
- h3 {
141
- margin-top: 7px;
142
- font-size: 22px;
143
- color: #565656;
144
- }
145
- p {
146
- width: 310px;
147
- margin-top: 24px;
148
- font-size: 14px;
149
- color: #565656;
150
- }
151
- }
152
- </style>
1
+ <template>
2
+ <div class="select-os">
3
+ <p class="select-os-block">
4
+ {{ localization.common.identifyingGuestSystemInstallation }}
5
+ </p>
6
+ <div class="select-os-block os-select-wrap table-row">
7
+ <label for="machine-type-select" class="table-cell"
8
+ >{{ localization.common.machineType }}:</label
9
+ >
10
+
11
+ <atoms-tooltip-error
12
+ :has-error="!!props.apiErrorMachineType"
13
+ selector="#vm-wizard-machine-type-select"
14
+ @remove="emits('remove-error-by-title', 'machine_type')"
15
+ >
16
+ <template #elem>
17
+ <select
18
+ id="vm-wizard-machine-type-select"
19
+ v-model="machineType"
20
+ data-id="vm-wizard-machine-type-select"
21
+ class="table-cell"
22
+ >
23
+ <option
24
+ v-for="item in props.machineTypeOptions"
25
+ :key="item.value"
26
+ :value="item"
27
+ >
28
+ {{ item.text }}
29
+ </option>
30
+ </select>
31
+ </template>
32
+ <template #content>{{ props.apiErrorMachineType }}</template>
33
+ </atoms-tooltip-error>
34
+ </div>
35
+ <div class="select-os-block os-select-wrap table-row">
36
+ <label for="os-select" class="table-cell"
37
+ >{{ localization.common.guestOsFamily }}:</label
38
+ >
39
+
40
+ <atoms-tooltip-error
41
+ :has-error="!!props.apiErrorGuestOsFamily"
42
+ selector="#vm-wizard-os-select"
43
+ @remove="emits('remove-error-by-title', 'guest_os_family')"
44
+ >
45
+ <template #elem>
46
+ <select
47
+ id="vm-wizard-os-select"
48
+ v-model="guestOsFamily"
49
+ data-id="vm-wizard-os-select"
50
+ class="table-cell"
51
+ @change="emits('change-os')"
52
+ >
53
+ <option
54
+ v-for="item in props.osOptions"
55
+ :key="item.value"
56
+ :value="item"
57
+ >
58
+ {{ item.text }}
59
+ </option>
60
+ </select>
61
+ </template>
62
+ <template #content>{{ props.apiErrorGuestOsFamily }}</template>
63
+ </atoms-tooltip-error>
64
+ </div>
65
+ <div class="select-os-block os-select-wrap table-row">
66
+ <label for="os-version-select" class="table-cell"
67
+ >{{ localization.common.guestOsVersion }}:</label
68
+ >
69
+
70
+ <atoms-tooltip-error
71
+ :has-error="!!props.apiErrorGuestOsVersion"
72
+ selector="#vm-wizard-os-version-select"
73
+ @remove="emits('remove-error-by-title', 'guest_os_version')"
74
+ >
75
+ <template #elem>
76
+ <select
77
+ id="vm-wizard-os-version-select"
78
+ v-model="guestOsVersion"
79
+ data-id="vm-wizard-os-version-select"
80
+ class="table-cell"
81
+ >
82
+ <option
83
+ v-for="item in props.versionsOptions"
84
+ :key="item.value"
85
+ :value="item"
86
+ >
87
+ {{ item.text }}
88
+ </option>
89
+ </select>
90
+ </template>
91
+ <template #content>{{ props.apiErrorGuestOsVersion }}</template>
92
+ </atoms-tooltip-error>
93
+ </div>
94
+ </div>
95
+ </template>
96
+
97
+ <script setup lang="ts">
98
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
99
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
100
+
101
+ const machineType = defineModel<UI_I_OptionItem | null>('machine-type', {
102
+ required: true,
103
+ })
104
+ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
105
+ required: true,
106
+ })
107
+ const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
108
+ required: true,
109
+ })
110
+
111
+ const props = defineProps<{
112
+ apiErrorMachineType: string
113
+ machineTypeOptions: UI_I_OptionItem[]
114
+ apiErrorGuestOsFamily: string
115
+ osOptions: UI_I_OptionItem[]
116
+ apiErrorGuestOsVersion: string
117
+ versionsOptions: UI_I_OptionItem[]
118
+ }>()
119
+ const emits = defineEmits<{
120
+ (event: 'remove-error-by-title', value: string): void
121
+ (event: 'change-os'): void
122
+ }>()
123
+ const localization = computed<UI_I_Localization>(() => useLocal())
124
+ </script>
125
+
126
+ <style scoped lang="scss">
127
+ .select-os {
128
+ .select-os-block {
129
+ label:not(.windows-virtualization-label) {
130
+ padding: 0 5px 5px 0;
131
+ }
132
+
133
+ .windows-virtualization-label {
134
+ padding: 0 4px;
135
+ }
136
+ }
137
+ }
138
+
139
+ #os-select-help-icon {
140
+ h3 {
141
+ margin-top: 7px;
142
+ font-size: 22px;
143
+ color: #565656;
144
+ }
145
+ p {
146
+ width: 310px;
147
+ margin-top: 24px;
148
+ font-size: 14px;
149
+ color: #565656;
150
+ }
151
+ }
152
+ </style>