bfg-common 1.3.232 → 1.3.233

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/assets/scss/common/normalize.scss +0 -4
  2. package/components/atoms/alert/Alert.vue +96 -95
  3. package/components/atoms/alert/Notification.vue +171 -170
  4. package/components/atoms/autocomplete/Autocomplete.vue +3 -0
  5. package/components/atoms/collapse/CollapseNav.vue +1 -1
  6. package/components/atoms/collapse/CollapseNavItem.vue +17 -13
  7. package/components/atoms/combobox/Combobox.vue +5 -0
  8. package/components/atoms/datepicker/Datepicker.vue +19 -1
  9. package/components/atoms/datepicker/lib/models/interfaces.ts +1 -0
  10. package/components/atoms/dropdown/Portlet.vue +10 -7
  11. package/components/atoms/dropdown/dropdown/Dropdown.vue +10 -2
  12. package/components/atoms/dropdown/dropdown/lib/models/interfaces.ts +1 -0
  13. package/components/atoms/dropdown/tree/Tree.vue +2 -0
  14. package/components/atoms/dropdown/tree/lib/models/interfaces.ts +1 -0
  15. package/components/atoms/lib/models/interfaces.ts +2 -0
  16. package/components/atoms/list/SelectList.vue +1 -0
  17. package/components/atoms/modal/Modal.vue +3 -0
  18. package/components/atoms/modal/bySteps/BySteps.vue +56 -51
  19. package/components/atoms/modal/byStepsSecond/ByStepsSecond.vue +10 -1
  20. package/components/atoms/nav/VerticalNavBar.vue +1 -0
  21. package/components/atoms/nav/lib/models/interfaces.ts +1 -0
  22. package/components/atoms/notificationBar/NotificationBar.vue +9 -1
  23. package/components/atoms/perPage/PerPage.vue +1 -0
  24. package/components/atoms/popover/Popover.vue +5 -1
  25. package/components/atoms/popup/SimplePopup.vue +1 -0
  26. package/components/atoms/select/TheSelect.vue +2 -0
  27. package/components/atoms/select/lib/models/interfaces.ts +1 -0
  28. package/components/atoms/stack/StackBlock.vue +3 -0
  29. package/components/atoms/step/VerticalStep.vue +1 -0
  30. package/components/atoms/switch/Switch.vue +111 -111
  31. package/components/atoms/table/compact/Compact.vue +526 -526
  32. package/components/atoms/table/dataGrid/DataGrid.vue +13 -1
  33. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +10 -2
  34. package/components/atoms/table/dataGrid/DataGridPage.vue +5 -0
  35. package/components/atoms/table/dataGrid/lib/models/interfaces.ts +2 -0
  36. package/components/atoms/table/simpleInfo/SimpleInfo.vue +7 -2
  37. package/components/atoms/table/simpleInfo/lib/models/interfaces.ts +1 -0
  38. package/components/atoms/table/simpleTable/SimpleTable.vue +5 -1
  39. package/components/atoms/table/simpleTable/lib/models/interfaces.ts +2 -0
  40. package/components/atoms/tabs/VerticalTabs.vue +1 -0
  41. package/components/atoms/tabs/lib/models/interfaces.ts +3 -2
  42. package/components/atoms/tooltip/Signpost.vue +226 -225
  43. package/components/atoms/wizard/Wizard.vue +5 -0
  44. package/components/atoms/wizard/step/Step.vue +1 -0
  45. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +4 -1
  46. package/components/common/mainNavigationPanel/lib/models/interfaces.ts +1 -0
  47. package/components/common/pages/Tasks.vue +120 -120
  48. package/components/common/recursionTree/RecursionTree.vue +203 -203
  49. package/components/common/tools/Actions.vue +2 -1
  50. package/components/common/tools/lib/models/interfaces.ts +1 -0
  51. package/components/common/vm/actions/add/Add.vue +575 -575
  52. package/components/common/vm/actions/clone/Clone.vue +518 -518
  53. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +269 -269
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +693 -693
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuModel.vue +220 -220
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +59 -59
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +294 -294
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +165 -165
  59. package/components/common/vm/actions/common/select/storage/lib/config/config.ts +166 -166
  60. package/components/common/vm/actions/editSettings/EditSettings.vue +313 -313
  61. package/components/common/weekSelect/WeekSelect.vue +112 -112
  62. package/components/common/weekSelect/lib/config/options.ts +10 -10
  63. package/composables/useAppVersion.ts +21 -21
  64. package/composables/useEnvLanguage.ts +20 -20
  65. package/lib/utils/sendTask.ts +72 -72
  66. package/minify.js +146 -146
  67. package/package.json +1 -1
  68. package/public/spice-console/application/codec.js +257 -257
  69. package/public/spice-console/lib/rasterEngine.js +907 -907
  70. package/public/spice-console/network/spicechannel.js +369 -369
  71. package/store/main/lib/interfaces.ts +9 -9
  72. package/store/tasks/actions.ts +133 -133
  73. package/store/tasks/getters.ts +25 -25
  74. package/store/tasks/lib/models/interfaces.ts +18 -18
  75. package/store/tasks/mutations.ts +58 -58
  76. package/store/tasks/state.ts +16 -16
@@ -1,220 +1,220 @@
1
- <template>
2
- <div class="">
3
- <atoms-stack-block :has-children="false">
4
- <template #stackBlockKey>
5
- {{ localization.cpuModel }}
6
- </template>
7
- <template #stackBlockContent>
8
- <div class="flex-align-center">
9
- <atoms-tooltip-error
10
- :has-error="!!apiError"
11
- selector="#vm-wizard-cpu-model-field"
12
- @remove="onRemoveValidationError"
13
- >
14
- <template #elem>
15
- <div class="select">
16
- <select
17
- id="vm-wizard-cpu-model-field"
18
- :value="props.cpuModel"
19
- :disabled="props.disabled"
20
- @change="changeCpuModel"
21
- >
22
- <option
23
- v-for="(item, key) in cpuModelOptions"
24
- :key="key"
25
- :value="item.value"
26
- >
27
- {{ item.text }}
28
- </option>
29
- </select>
30
- </div>
31
- </template>
32
- <template #content>{{ apiError }}</template>
33
- </atoms-tooltip-error>
34
-
35
- <div class="passthrough-host-cpu-wrap flex-align-center">
36
- <input
37
- id="passthrough-host-cpu"
38
- v-model="passthroughHostCpuLocal"
39
- :disabled="props.disabled"
40
- type="checkbox"
41
- @change="changePassthroughHostCpu"
42
- />
43
- <label for="passthrough-host-cpu" class="label-text-normal">{{
44
- localization.passthroughHostCpu
45
- }}</label>
46
- <div id="passthrough-help-icon" class="flex-align-center relative">
47
- <atoms-the-icon
48
- fill="#0072a3"
49
- width="24px"
50
- height="24px"
51
- name="info-circle"
52
- class="pointer"
53
- @click.stop="isShowPassthroughHost = !isShowPassthroughHost"
54
- />
55
- <Teleport to="body">
56
- <atoms-tooltip-signpost
57
- v-if="isShowPassthroughHost"
58
- elem-id="passthrough-help-icon"
59
- @hide="isShowPassthroughHost = false"
60
- >
61
- <h3 class="passthrough-help-title">
62
- {{ localization.help }}
63
- </h3>
64
-
65
- <p class="passthrough-help-text">
66
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. A
67
- cum eius expedita, fuga mollitia perferendis quod soluta
68
- vel? Dolor, illo, nam? A consequatur, consequuntur eos
69
- impedit iusto labore sunt tempora!
70
- </p>
71
- </atoms-tooltip-signpost>
72
- </Teleport>
73
- </div>
74
- </div>
75
- <div class="divider"></div>
76
- <div class="flex-align-center">
77
- <input
78
- id="host-model-cpu"
79
- v-model="hostModelCpuLocal"
80
- type="checkbox"
81
- :disabled="props.disabled"
82
- @change="changeHostModelCpu"
83
- />
84
- <label for="host-model-cpu" class="label-text-normal">{{
85
- localization.hostModelCpu
86
- }}</label>
87
- <div id="host-model-help-icon" class="flex-align-center relative">
88
- <atoms-the-icon
89
- fill="#0072a3"
90
- width="24px"
91
- height="24px"
92
- name="info-circle"
93
- class="pointer"
94
- @click.stop="isShowHostModel = !isShowHostModel"
95
- />
96
- <Teleport to="body">
97
- <atoms-tooltip-signpost
98
- v-if="isShowHostModel"
99
- elem-id="host-model-help-icon"
100
- @hide="isShowHostModel = false"
101
- >
102
- <h3 class="host-model-help-title">
103
- {{ localization.help }}
104
- </h3>
105
-
106
- <p class="host-model-help-text">
107
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. A
108
- cum eius expedita, fuga mollitia perferendis quod soluta
109
- vel? Dolor, illo, nam? A consequatur, consequuntur eos
110
- impedit iusto labore sunt tempora!
111
- </p>
112
- </atoms-tooltip-signpost>
113
- </Teleport>
114
- </div>
115
- </div>
116
- </div>
117
- </template>
118
- </atoms-stack-block>
119
- </div>
120
- </template>
121
-
122
- <script setup lang="ts">
123
- import {
124
- UI_I_Localization,
125
- UI_I_HTMLSelectElement,
126
- } from '~/lib/models/interfaces'
127
- import { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
128
- import { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
129
- const localization = computed<UI_I_Localization>(() => useLocal())
130
-
131
- const props = defineProps<{
132
- cpuModel: string
133
- passthroughHostCpu: boolean
134
- hostModelCpu: boolean
135
- cpuModels: UI_I_OptionItem[]
136
- isEdit: boolean
137
- disabled: boolean
138
- errorValidationFields: UI_I_ErrorValidationField<string>[]
139
- }>()
140
- const emits = defineEmits<{
141
- (event: 'update:cpu-model', value: string): boolean
142
- (event: 'update:passthrough-host-cpu', value: boolean): boolean
143
- (event: 'update:host-model-cpu', value: boolean): boolean
144
- (event: 'remove-error-by-title', value: string): void
145
- }>()
146
-
147
- const cpuModelOptions = ref<UI_I_OptionItem[]>(props.cpuModels)
148
- watch(
149
- () => props.cpuModels,
150
- (newValue) => {
151
- cpuModelOptions.value = [...newValue]
152
- }
153
- )
154
-
155
- const passthroughHostCpuLocal = computed<boolean>({
156
- get() {
157
- return props.passthroughHostCpu
158
- },
159
- set(newValue) {
160
- emits('update:passthrough-host-cpu', newValue)
161
- },
162
- })
163
- const hostModelCpuLocal = computed<boolean>({
164
- get() {
165
- return props.hostModelCpu
166
- },
167
- set(newValue) {
168
- emits('update:host-model-cpu', newValue)
169
- },
170
- })
171
-
172
- const changeCpuModel = (event: UI_I_HTMLSelectElement): void => {
173
- emits('update:cpu-model', event.target.value)
174
- emits('update:passthrough-host-cpu', false)
175
- emits('update:host-model-cpu', false)
176
- }
177
- const changePassthroughHostCpu = (event: Event): void => {
178
- const target = event.target as HTMLInputElement
179
- emits('update:cpu-model', target.checked ? '' : props.cpuModels?.[0].value)
180
- emits('update:host-model-cpu', false)
181
- }
182
- const changeHostModelCpu = (event: Event): void => {
183
- const target = event.target as HTMLInputElement
184
- emits('update:cpu-model', target.checked ? '' : props.cpuModels?.[0].value)
185
- emits('update:passthrough-host-cpu', false)
186
- }
187
-
188
- const isShowPassthroughHost = ref<false>(false)
189
- const isShowHostModel = ref<false>(false)
190
-
191
- const typeError = 'cpu.model'
192
-
193
- const apiError = computed<string>(() => {
194
- return (
195
- props.errorValidationFields?.find((message) => message.field === typeError)
196
- ?.error_message || ''
197
- )
198
- })
199
-
200
- const onRemoveValidationError = (): void => {
201
- emits('remove-error-by-title', typeError)
202
- }
203
- </script>
204
-
205
- <style scoped lang="scss">
206
- .passthrough-host-cpu-wrap {
207
- margin-right: 8px;
208
- }
209
- #passthrough-host-cpu,
210
- #host-model-cpu {
211
- margin: 0 4px 0 0;
212
- }
213
-
214
- .divider {
215
- height: 16px;
216
- width: 1px;
217
- background-color: var(--global-border-color);
218
- margin: 0 6px 0 0;
219
- }
220
- </style>
1
+ <template>
2
+ <div class="">
3
+ <atoms-stack-block :has-children="false">
4
+ <template #stackBlockKey>
5
+ {{ localization.cpuModel }}
6
+ </template>
7
+ <template #stackBlockContent>
8
+ <div class="flex-align-center">
9
+ <atoms-tooltip-error
10
+ :has-error="!!apiError"
11
+ selector="#vm-wizard-cpu-model-field"
12
+ @remove="onRemoveValidationError"
13
+ >
14
+ <template #elem>
15
+ <div class="select">
16
+ <select
17
+ id="vm-wizard-cpu-model-field"
18
+ :value="props.cpuModel"
19
+ :disabled="props.disabled"
20
+ @change="changeCpuModel"
21
+ >
22
+ <option
23
+ v-for="(item, key) in cpuModelOptions"
24
+ :key="key"
25
+ :value="item.value"
26
+ >
27
+ {{ item.text }}
28
+ </option>
29
+ </select>
30
+ </div>
31
+ </template>
32
+ <template #content>{{ apiError }}</template>
33
+ </atoms-tooltip-error>
34
+
35
+ <div class="passthrough-host-cpu-wrap flex-align-center">
36
+ <input
37
+ id="passthrough-host-cpu"
38
+ v-model="passthroughHostCpuLocal"
39
+ :disabled="props.disabled"
40
+ type="checkbox"
41
+ @change="changePassthroughHostCpu"
42
+ />
43
+ <label for="passthrough-host-cpu" class="label-text-normal">{{
44
+ localization.passthroughHostCpu
45
+ }}</label>
46
+ <div id="passthrough-help-icon" class="flex-align-center relative">
47
+ <atoms-the-icon
48
+ fill="#0072a3"
49
+ width="24px"
50
+ height="24px"
51
+ name="info-circle"
52
+ class="pointer"
53
+ @click.stop="isShowPassthroughHost = !isShowPassthroughHost"
54
+ />
55
+ <Teleport to="body">
56
+ <atoms-tooltip-signpost
57
+ v-if="isShowPassthroughHost"
58
+ elem-id="passthrough-help-icon"
59
+ @hide="isShowPassthroughHost = false"
60
+ >
61
+ <h3 class="passthrough-help-title">
62
+ {{ localization.help }}
63
+ </h3>
64
+
65
+ <p class="passthrough-help-text">
66
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. A
67
+ cum eius expedita, fuga mollitia perferendis quod soluta
68
+ vel? Dolor, illo, nam? A consequatur, consequuntur eos
69
+ impedit iusto labore sunt tempora!
70
+ </p>
71
+ </atoms-tooltip-signpost>
72
+ </Teleport>
73
+ </div>
74
+ </div>
75
+ <div class="divider"></div>
76
+ <div class="flex-align-center">
77
+ <input
78
+ id="host-model-cpu"
79
+ v-model="hostModelCpuLocal"
80
+ type="checkbox"
81
+ :disabled="props.disabled"
82
+ @change="changeHostModelCpu"
83
+ />
84
+ <label for="host-model-cpu" class="label-text-normal">{{
85
+ localization.hostModelCpu
86
+ }}</label>
87
+ <div id="host-model-help-icon" class="flex-align-center relative">
88
+ <atoms-the-icon
89
+ fill="#0072a3"
90
+ width="24px"
91
+ height="24px"
92
+ name="info-circle"
93
+ class="pointer"
94
+ @click.stop="isShowHostModel = !isShowHostModel"
95
+ />
96
+ <Teleport to="body">
97
+ <atoms-tooltip-signpost
98
+ v-if="isShowHostModel"
99
+ elem-id="host-model-help-icon"
100
+ @hide="isShowHostModel = false"
101
+ >
102
+ <h3 class="host-model-help-title">
103
+ {{ localization.help }}
104
+ </h3>
105
+
106
+ <p class="host-model-help-text">
107
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. A
108
+ cum eius expedita, fuga mollitia perferendis quod soluta
109
+ vel? Dolor, illo, nam? A consequatur, consequuntur eos
110
+ impedit iusto labore sunt tempora!
111
+ </p>
112
+ </atoms-tooltip-signpost>
113
+ </Teleport>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </template>
118
+ </atoms-stack-block>
119
+ </div>
120
+ </template>
121
+
122
+ <script setup lang="ts">
123
+ import {
124
+ UI_I_Localization,
125
+ UI_I_HTMLSelectElement,
126
+ } from '~/lib/models/interfaces'
127
+ import { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
128
+ import { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
129
+ const localization = computed<UI_I_Localization>(() => useLocal())
130
+
131
+ const props = defineProps<{
132
+ cpuModel: string
133
+ passthroughHostCpu: boolean
134
+ hostModelCpu: boolean
135
+ cpuModels: UI_I_OptionItem[]
136
+ isEdit: boolean
137
+ disabled: boolean
138
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
139
+ }>()
140
+ const emits = defineEmits<{
141
+ (event: 'update:cpu-model', value: string): boolean
142
+ (event: 'update:passthrough-host-cpu', value: boolean): boolean
143
+ (event: 'update:host-model-cpu', value: boolean): boolean
144
+ (event: 'remove-error-by-title', value: string): void
145
+ }>()
146
+
147
+ const cpuModelOptions = ref<UI_I_OptionItem[]>(props.cpuModels)
148
+ watch(
149
+ () => props.cpuModels,
150
+ (newValue) => {
151
+ cpuModelOptions.value = [...newValue]
152
+ }
153
+ )
154
+
155
+ const passthroughHostCpuLocal = computed<boolean>({
156
+ get() {
157
+ return props.passthroughHostCpu
158
+ },
159
+ set(newValue) {
160
+ emits('update:passthrough-host-cpu', newValue)
161
+ },
162
+ })
163
+ const hostModelCpuLocal = computed<boolean>({
164
+ get() {
165
+ return props.hostModelCpu
166
+ },
167
+ set(newValue) {
168
+ emits('update:host-model-cpu', newValue)
169
+ },
170
+ })
171
+
172
+ const changeCpuModel = (event: UI_I_HTMLSelectElement): void => {
173
+ emits('update:cpu-model', event.target.value)
174
+ emits('update:passthrough-host-cpu', false)
175
+ emits('update:host-model-cpu', false)
176
+ }
177
+ const changePassthroughHostCpu = (event: Event): void => {
178
+ const target = event.target as HTMLInputElement
179
+ emits('update:cpu-model', target.checked ? '' : props.cpuModels?.[0].value)
180
+ emits('update:host-model-cpu', false)
181
+ }
182
+ const changeHostModelCpu = (event: Event): void => {
183
+ const target = event.target as HTMLInputElement
184
+ emits('update:cpu-model', target.checked ? '' : props.cpuModels?.[0].value)
185
+ emits('update:passthrough-host-cpu', false)
186
+ }
187
+
188
+ const isShowPassthroughHost = ref<false>(false)
189
+ const isShowHostModel = ref<false>(false)
190
+
191
+ const typeError = 'cpu.model'
192
+
193
+ const apiError = computed<string>(() => {
194
+ return (
195
+ props.errorValidationFields?.find((message) => message.field === typeError)
196
+ ?.error_message || ''
197
+ )
198
+ })
199
+
200
+ const onRemoveValidationError = (): void => {
201
+ emits('remove-error-by-title', typeError)
202
+ }
203
+ </script>
204
+
205
+ <style scoped lang="scss">
206
+ .passthrough-host-cpu-wrap {
207
+ margin-right: 8px;
208
+ }
209
+ #passthrough-host-cpu,
210
+ #host-model-cpu {
211
+ margin: 0 4px 0 0;
212
+ }
213
+
214
+ .divider {
215
+ height: 16px;
216
+ width: 1px;
217
+ background-color: var(--global-border-color);
218
+ margin: 0 6px 0 0;
219
+ }
220
+ </style>
@@ -1,59 +1,59 @@
1
- import { UI_I_Localization } from '~/lib/models/interfaces'
2
- import { UI_I_DropdownTreeItem } from '~/components/atoms/dropdown/tree/lib/models/interfaces'
3
- import { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
4
-
5
- export const dropdownItemsFunc = (
6
- localization: UI_I_Localization,
7
- state: string | number | undefined,
8
- passthroughDevices?: UI_I_PciDevice[]
9
- ): UI_I_DropdownTreeItem[] => {
10
- const { $text } = useNuxtApp()
11
-
12
- return [
13
- {
14
- text: localization.disksDrivesStorage,
15
- children: [
16
- { text: $text.toCapitalizeEveryWord(localization.hardDisk), value: 1 },
17
- {
18
- text: $text.toCapitalizeEveryWord(localization.existingHardDisk),
19
- value: 2,
20
- },
21
- // { text: 'RDM Disk', value: 2 },
22
- // { text: 'Host USB Device', value: 3 },
23
- // { text: 'NVDIMM', value: 4 },
24
- { text: localization.cdDvdDrive, value: 5 },
25
- ],
26
- },
27
- // {
28
- // text: 'Controllers',
29
- // children: [
30
- // { text: 'NVMe Controller', value: 6 },
31
- // { text: 'SATA Controller', value: 7 },
32
- // { text: 'SCSI Controller', value: 8 },
33
- // { text: 'USB Controller', value: 9 },
34
- // ],
35
- // },
36
- {
37
- text: 'Other Devices',
38
- children: [
39
- {
40
- text: 'PCI Device',
41
- value: 10,
42
- disabled: state === 2 || !passthroughDevices?.length,
43
- },
44
- // { text: 'Watchdog Timer', value: 11 },
45
- // { text: 'Precision Clock', value: 12 },
46
- // { text: 'Serial Port', value: 13 },
47
- ],
48
- },
49
- {
50
- text: localization.network,
51
- children: [
52
- {
53
- text: $text.toCapitalizeEveryWord(localization.networkAdapter),
54
- value: 14,
55
- },
56
- ],
57
- },
58
- ]
59
- }
1
+ import { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import { UI_I_DropdownTreeItem } from '~/components/atoms/dropdown/tree/lib/models/interfaces'
3
+ import { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
4
+
5
+ export const dropdownItemsFunc = (
6
+ localization: UI_I_Localization,
7
+ state: string | number | undefined,
8
+ passthroughDevices?: UI_I_PciDevice[]
9
+ ): UI_I_DropdownTreeItem[] => {
10
+ const { $text } = useNuxtApp()
11
+
12
+ return [
13
+ {
14
+ text: localization.disksDrivesStorage,
15
+ children: [
16
+ { text: $text.toCapitalizeEveryWord(localization.hardDisk), value: 1 },
17
+ {
18
+ text: $text.toCapitalizeEveryWord(localization.existingHardDisk),
19
+ value: 2,
20
+ },
21
+ // { text: 'RDM Disk', value: 2 },
22
+ // { text: 'Host USB Device', value: 3 },
23
+ // { text: 'NVDIMM', value: 4 },
24
+ { text: localization.cdDvdDrive, value: 5 },
25
+ ],
26
+ },
27
+ // {
28
+ // text: 'Controllers',
29
+ // children: [
30
+ // { text: 'NVMe Controller', value: 6 },
31
+ // { text: 'SATA Controller', value: 7 },
32
+ // { text: 'SCSI Controller', value: 8 },
33
+ // { text: 'USB Controller', value: 9 },
34
+ // ],
35
+ // },
36
+ {
37
+ text: 'Other Devices',
38
+ children: [
39
+ {
40
+ text: 'PCI Device',
41
+ value: 10,
42
+ disabled: state === 2 || !passthroughDevices?.length,
43
+ },
44
+ // { text: 'Watchdog Timer', value: 11 },
45
+ // { text: 'Precision Clock', value: 12 },
46
+ // { text: 'Serial Port', value: 13 },
47
+ ],
48
+ },
49
+ {
50
+ text: localization.network,
51
+ children: [
52
+ {
53
+ text: $text.toCapitalizeEveryWord(localization.networkAdapter),
54
+ value: 14,
55
+ },
56
+ ],
57
+ },
58
+ ]
59
+ }