bfg-common 1.5.512 → 1.5.513

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 (128) 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/assets/localization/local_be.json +1 -1
  7. package/assets/localization/local_en.json +1 -1
  8. package/assets/localization/local_hy.json +1 -1
  9. package/assets/localization/local_kk.json +1 -1
  10. package/assets/localization/local_ru.json +1 -1
  11. package/assets/localization/local_zh.json +1 -1
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  16. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  17. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  18. package/components/atoms/table/info/lib/models/interfaces.ts +1 -0
  19. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  20. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  23. package/components/common/browse/lib/models/interfaces.ts +5 -5
  24. package/components/common/countdownTimer/CountdownTimer.vue +11 -4
  25. package/components/common/countdownTimer/CountdownTimerNew.vue +13 -5
  26. package/components/common/diagramMain/network/Contents.vue +497 -497
  27. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  28. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  29. package/components/common/layout/theHeader/modals/reconnect/ReconnectNew.vue +1 -0
  30. package/components/common/pages/backups/DetailView.vue +52 -52
  31. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  32. package/components/common/pages/backups/modals/Modals.vue +243 -243
  33. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  34. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  35. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  36. package/components/common/pages/backups/modals/createBackup/general/General.vue +141 -141
  37. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  38. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  39. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  40. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  41. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  42. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  43. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  44. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  45. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  46. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  47. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  48. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  49. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  50. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  51. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  52. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  53. package/components/common/readyToComplete/New.vue +9 -0
  54. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  55. package/components/common/select/radio/RadioGroup.vue +137 -137
  56. package/components/common/spiceConsole/Drawer.vue +420 -392
  57. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  58. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  59. package/components/common/spiceConsole/lib/models/types.ts +1 -0
  60. package/components/common/tools/Actions.vue +207 -207
  61. package/components/common/treeView/TreeView.vue +52 -52
  62. package/components/common/vm/actions/add/Add.vue +895 -895
  63. package/components/common/vm/actions/add/New.vue +695 -695
  64. package/components/common/vm/actions/add/Old.vue +414 -414
  65. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  66. package/components/common/vm/actions/clone/Clone.vue +863 -863
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  82. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  83. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  84. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  85. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  86. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  87. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  88. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  89. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  90. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  91. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  92. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  93. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  94. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  95. package/components/common/vm/actions/register/Register.vue +285 -285
  96. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  97. package/components/common/wizards/common/steps/name/Name.vue +179 -179
  98. package/components/common/wizards/common/steps/name/New.vue +221 -221
  99. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  100. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  101. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  102. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  103. package/components/common/wizards/datastore/add/Add.vue +228 -228
  104. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  105. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  106. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  107. package/composables/useAppVersion.ts +21 -21
  108. package/composables/useLocal.ts +6 -6
  109. package/composables/useLocalCommon.ts +39 -39
  110. package/package.json +1 -1
  111. package/plugins/console.ts +21 -22
  112. package/plugins/date.ts +233 -233
  113. package/plugins/mouse.ts +21 -0
  114. package/plugins/panelStates.ts +70 -70
  115. package/plugins/text.ts +59 -59
  116. package/public/spice-console/application/clientgui.js +854 -849
  117. package/public/spice-console/application/packetfactory.js +211 -206
  118. package/public/spice-console/application/virtualmouse.js +146 -109
  119. package/public/spice-console/lib/images/bitmap.js +203 -203
  120. package/public/spice-console/network/spicechannel.js +440 -440
  121. package/public/spice-console/process/cursorprocess.js +121 -111
  122. package/public/spice-console/process/inputprocess.js +227 -203
  123. package/public/spice-console/process/mainprocess.js +210 -78
  124. package/public/spice-console/run.js +210 -210
  125. package/public/spice-console/spiceobjects/spiceobjects.js +49 -28
  126. package/public/spice-console-minify/run.min.js +1 -1
  127. package/store/main/mutations.ts +7 -7
  128. package/store/main/state.ts +7 -7
@@ -1,99 +1,99 @@
1
- <template>
2
- <div class="table-wrap">
3
- <ui-data-table
4
- :data="data"
5
- :options="options"
6
- :texts="tableTexts"
7
- :default-layout="false"
8
- size="sm"
9
- test-id="data-table-main"
10
- class="network-table"
11
- server-off
12
- @select-row="onSelect"
13
- >
14
- <template #icon="{ item }">
15
- <span class="flex-align-center">
16
- <span :class="['icon', item.data.icon]" />
17
-
18
- <span class="network-name" :data-id="item.data.testId">
19
- {{ item.text }}
20
- </span>
21
- </span>
22
- </template>
23
- </ui-data-table>
24
- </div>
25
- </template>
26
-
27
- <script setup lang="ts">
28
- import type {
29
- UI_I_DataTable,
30
- UI_I_DataTableHeader,
31
- UI_I_DataTableBody,
32
- UI_I_TableTexts,
33
- } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
34
- import type { UI_I_Localization } from '~/lib/models/interfaces'
35
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
36
- import {
37
- options,
38
- getHeaderDataFunc,
39
- getBodyDataFunc,
40
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config'
41
- import { tableTextsFunc } from '~/lib/config/uiTable'
42
-
43
- const props = defineProps<{
44
- networksTable: UI_I_NetworkTableItem[]
45
- }>()
46
- const emits = defineEmits<{
47
- (event: 'select', value: string): void
48
- }>()
49
-
50
- const localization = computed<UI_I_Localization>(() => useLocal())
51
-
52
- const tableTexts = computed<UI_I_TableTexts>(() =>
53
- tableTextsFunc(localization.value)
54
- )
55
-
56
- const data = computed<UI_I_DataTable>(() => ({
57
- id: 'new-network-location',
58
- header: headItems.value,
59
- body: bodyItems.value,
60
- }))
61
-
62
- const headItems = computed<UI_I_DataTableHeader[]>(() =>
63
- getHeaderDataFunc(localization.value)
64
- )
65
-
66
- const bodyItems = ref<UI_I_DataTableBody[]>([])
67
- watch(
68
- () => props.networksTable,
69
- (newValue: UI_I_NetworkTableItem[]) => {
70
- if (!newValue?.length) return
71
-
72
- bodyItems.value = getBodyDataFunc(newValue)
73
- },
74
- { deep: true, immediate: true }
75
- )
76
- const onSelect = (value: UI_I_DataTableBody[]): void => {
77
- emits('select', value[0].data[0].text.toString())
78
- }
79
- </script>
80
-
81
- <style scoped lang="scss">
82
- .table-wrap {
83
- .icon {
84
- margin-right: 4px;
85
- }
86
- .network-name {
87
- font-size: 12px;
88
- }
89
- :deep(.column-manager-button) span {
90
- font-weight: 500;
91
- }
92
- }
93
- </style>
94
- <style lang="scss">
95
- .ui-main-no-items-found svg {
96
- width: 24px;
97
- height: 24px;
98
- }
99
- </style>
1
+ <template>
2
+ <div class="table-wrap">
3
+ <ui-data-table
4
+ :data="data"
5
+ :options="options"
6
+ :texts="tableTexts"
7
+ :default-layout="false"
8
+ size="sm"
9
+ test-id="data-table-main"
10
+ class="network-table"
11
+ server-off
12
+ @select-row="onSelect"
13
+ >
14
+ <template #icon="{ item }">
15
+ <span class="flex-align-center">
16
+ <span :class="['icon', item.data.icon]" />
17
+
18
+ <span class="network-name" :data-id="item.data.testId">
19
+ {{ item.text }}
20
+ </span>
21
+ </span>
22
+ </template>
23
+ </ui-data-table>
24
+ </div>
25
+ </template>
26
+
27
+ <script setup lang="ts">
28
+ import type {
29
+ UI_I_DataTable,
30
+ UI_I_DataTableHeader,
31
+ UI_I_DataTableBody,
32
+ UI_I_TableTexts,
33
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
34
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
35
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
36
+ import {
37
+ options,
38
+ getHeaderDataFunc,
39
+ getBodyDataFunc,
40
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config'
41
+ import { tableTextsFunc } from '~/lib/config/uiTable'
42
+
43
+ const props = defineProps<{
44
+ networksTable: UI_I_NetworkTableItem[]
45
+ }>()
46
+ const emits = defineEmits<{
47
+ (event: 'select', value: string): void
48
+ }>()
49
+
50
+ const localization = computed<UI_I_Localization>(() => useLocal())
51
+
52
+ const tableTexts = computed<UI_I_TableTexts>(() =>
53
+ tableTextsFunc(localization.value)
54
+ )
55
+
56
+ const data = computed<UI_I_DataTable>(() => ({
57
+ id: 'new-network-location',
58
+ header: headItems.value,
59
+ body: bodyItems.value,
60
+ }))
61
+
62
+ const headItems = computed<UI_I_DataTableHeader[]>(() =>
63
+ getHeaderDataFunc(localization.value)
64
+ )
65
+
66
+ const bodyItems = ref<UI_I_DataTableBody[]>([])
67
+ watch(
68
+ () => props.networksTable,
69
+ (newValue: UI_I_NetworkTableItem[]) => {
70
+ if (!newValue?.length) return
71
+
72
+ bodyItems.value = getBodyDataFunc(newValue)
73
+ },
74
+ { deep: true, immediate: true }
75
+ )
76
+ const onSelect = (value: UI_I_DataTableBody[]): void => {
77
+ emits('select', value[0].data[0].text.toString())
78
+ }
79
+ </script>
80
+
81
+ <style scoped lang="scss">
82
+ .table-wrap {
83
+ .icon {
84
+ margin-right: 4px;
85
+ }
86
+ .network-name {
87
+ font-size: 12px;
88
+ }
89
+ :deep(.column-manager-button) span {
90
+ font-weight: 500;
91
+ }
92
+ }
93
+ </style>
94
+ <style lang="scss">
95
+ .ui-main-no-items-found svg {
96
+ width: 24px;
97
+ height: 24px;
98
+ }
99
+ </style>
@@ -1,119 +1,119 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-mac-address-new
3
- v-if="isNewView"
4
- v-model:mac-address="macAddress"
5
- v-model:mac-address-type="macAddressType"
6
- :index="index"
7
- :disabled="disabled"
8
- :error-text="macAddressLocalAndApiErrorsTexts"
9
- :mac-address-local-error-text="macAddressLocalErrorText"
10
- :mac-address-options="macAddressOptions"
11
- @remove-error="onRemoveValidationError"
12
- />
13
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-mac-address-old
14
- v-else
15
- v-model:mac-address="macAddress"
16
- v-model:mac-address-type="macAddressType"
17
- :index="index"
18
- :disabled="disabled"
19
- :error-text="macAddressLocalAndApiErrorsTexts"
20
- :mac-address-local-error-text="macAddressLocalErrorText"
21
- :mac-address-options="macAddressOptions"
22
- @remove-error="onRemoveValidationError"
23
- />
24
- </template>
25
-
26
- <script setup lang="ts">
27
- import type {
28
- UI_I_Localization,
29
- } from '~/lib/models/interfaces'
30
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
31
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
32
- import { macAddressOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/lib/config/options'
33
-
34
- const macAddress = defineModel<string>('macAddress', { required: true })
35
- const macAddressType = defineModel<string>('macAddressType', {
36
- required: true,
37
- })
38
-
39
- const props = defineProps<{
40
- index: number
41
- disabled: boolean
42
- errorValidationFields: UI_I_ErrorValidationField[]
43
- }>()
44
- const emits = defineEmits<{
45
- (event: 'invalid', value: boolean): void
46
- (event: 'remove-error-by-title', value: string): void
47
- }>()
48
-
49
- const { $store }: any = useNuxtApp()
50
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
51
-
52
- const localization = computed<UI_I_Localization>(() => useLocal())
53
-
54
- const macAddressOptions = ref<UI_I_OptionItem[]>(
55
- macAddressOptionsFunc(localization.value)
56
- )
57
-
58
- watch(macAddressType, (newValue) => {
59
- macAddress.value = newValue === 'manual' ? '00:50:56:' : ''
60
- })
61
- // const onChangeMacAddressType = (): void => {
62
- // // emits('update:mac-address-type', event.target.value)
63
- //
64
- // // emits(
65
- // // 'update:mac-address',
66
- // // event.target.value === 'manual' ? '00:50:56:' : ''
67
- // // )
68
- // }
69
- // const onChangeMacAddress = (event: Event): void => {
70
- // const target = event.target as HTMLInputElement
71
- // emits('update:mac-address', target.value)
72
- // }
73
-
74
- const macAddressLocalErrorText = computed<string>(() => {
75
- /* eslint-disable no-useless-escape */
76
- const isValidMacAddress =
77
- /^[0-9a-f]{1,2}([\.:-])(?:[0-9a-f]{1,2}\1){4}[0-9a-f]{1,2}$/.test(
78
- macAddress.value
79
- )
80
-
81
- return macAddressType.value === 'manual' && !isValidMacAddress
82
- ? localization.value.common.invalidMacAddress
83
- : ''
84
- })
85
- watch(macAddressLocalErrorText, (newValue) => {
86
- emits('invalid', !!newValue.length)
87
- })
88
-
89
- const typeError = computed<string>(
90
- () => `network_devices[${props.index}].mac_address`
91
- )
92
-
93
- const apiErrorLocal = computed<string>(() => {
94
- return (
95
- props.errorValidationFields?.find(
96
- (message) => message.field === typeError.value
97
- )?.error_message || ''
98
- )
99
- })
100
-
101
- const macAddressLocalAndApiErrorsTexts = computed<string>(() => {
102
- const localError = macAddressLocalErrorText.value
103
- const apiError = apiErrorLocal.value
104
-
105
- let result = ''
106
- if (localError && !apiError) result = localError
107
- if (!localError && apiError) result = apiError
108
- if (localError && apiError) result = localError + ', ' + apiError
109
- if (!localError && apiError) result = apiError
110
-
111
- return result
112
- })
113
-
114
- const onRemoveValidationError = (): void => {
115
- emits('remove-error-by-title', typeError.value)
116
- }
117
- </script>
118
-
119
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-mac-address-new
3
+ v-if="isNewView"
4
+ v-model:mac-address="macAddress"
5
+ v-model:mac-address-type="macAddressType"
6
+ :index="index"
7
+ :disabled="disabled"
8
+ :error-text="macAddressLocalAndApiErrorsTexts"
9
+ :mac-address-local-error-text="macAddressLocalErrorText"
10
+ :mac-address-options="macAddressOptions"
11
+ @remove-error="onRemoveValidationError"
12
+ />
13
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-mac-address-old
14
+ v-else
15
+ v-model:mac-address="macAddress"
16
+ v-model:mac-address-type="macAddressType"
17
+ :index="index"
18
+ :disabled="disabled"
19
+ :error-text="macAddressLocalAndApiErrorsTexts"
20
+ :mac-address-local-error-text="macAddressLocalErrorText"
21
+ :mac-address-options="macAddressOptions"
22
+ @remove-error="onRemoveValidationError"
23
+ />
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ import type {
28
+ UI_I_Localization,
29
+ } from '~/lib/models/interfaces'
30
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
31
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
32
+ import { macAddressOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/lib/config/options'
33
+
34
+ const macAddress = defineModel<string>('macAddress', { required: true })
35
+ const macAddressType = defineModel<string>('macAddressType', {
36
+ required: true,
37
+ })
38
+
39
+ const props = defineProps<{
40
+ index: number
41
+ disabled: boolean
42
+ errorValidationFields: UI_I_ErrorValidationField[]
43
+ }>()
44
+ const emits = defineEmits<{
45
+ (event: 'invalid', value: boolean): void
46
+ (event: 'remove-error-by-title', value: string): void
47
+ }>()
48
+
49
+ const { $store }: any = useNuxtApp()
50
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
51
+
52
+ const localization = computed<UI_I_Localization>(() => useLocal())
53
+
54
+ const macAddressOptions = ref<UI_I_OptionItem[]>(
55
+ macAddressOptionsFunc(localization.value)
56
+ )
57
+
58
+ watch(macAddressType, (newValue) => {
59
+ macAddress.value = newValue === 'manual' ? '00:50:56:' : ''
60
+ })
61
+ // const onChangeMacAddressType = (): void => {
62
+ // // emits('update:mac-address-type', event.target.value)
63
+ //
64
+ // // emits(
65
+ // // 'update:mac-address',
66
+ // // event.target.value === 'manual' ? '00:50:56:' : ''
67
+ // // )
68
+ // }
69
+ // const onChangeMacAddress = (event: Event): void => {
70
+ // const target = event.target as HTMLInputElement
71
+ // emits('update:mac-address', target.value)
72
+ // }
73
+
74
+ const macAddressLocalErrorText = computed<string>(() => {
75
+ /* eslint-disable no-useless-escape */
76
+ const isValidMacAddress =
77
+ /^[0-9a-f]{1,2}([\.:-])(?:[0-9a-f]{1,2}\1){4}[0-9a-f]{1,2}$/.test(
78
+ macAddress.value
79
+ )
80
+
81
+ return macAddressType.value === 'manual' && !isValidMacAddress
82
+ ? localization.value.common.invalidMacAddress
83
+ : ''
84
+ })
85
+ watch(macAddressLocalErrorText, (newValue) => {
86
+ emits('invalid', !!newValue.length)
87
+ })
88
+
89
+ const typeError = computed<string>(
90
+ () => `network_devices[${props.index}].mac_address`
91
+ )
92
+
93
+ const apiErrorLocal = computed<string>(() => {
94
+ return (
95
+ props.errorValidationFields?.find(
96
+ (message) => message.field === typeError.value
97
+ )?.error_message || ''
98
+ )
99
+ })
100
+
101
+ const macAddressLocalAndApiErrorsTexts = computed<string>(() => {
102
+ const localError = macAddressLocalErrorText.value
103
+ const apiError = apiErrorLocal.value
104
+
105
+ let result = ''
106
+ if (localError && !apiError) result = localError
107
+ if (!localError && apiError) result = apiError
108
+ if (localError && apiError) result = localError + ', ' + apiError
109
+ if (!localError && apiError) result = apiError
110
+
111
+ return result
112
+ })
113
+
114
+ const onRemoveValidationError = (): void => {
115
+ emits('remove-error-by-title', typeError.value)
116
+ }
117
+ </script>
118
+
119
+ <style scoped lang="scss"></style>
@@ -1,31 +1,31 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-new
3
- v-if="isNewView"
4
- v-model="model"
5
- :passthrough-devices="props.passthroughDevices"
6
- :pci-device-index="props.pciDeviceIndex"
7
- />
8
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-old
9
- v-else
10
- v-model="model"
11
- :passthrough-devices="props.passthroughDevices"
12
- :pci-device-index="props.pciDeviceIndex"
13
- />
14
- </template>
15
-
16
- <script lang="ts" setup>
17
- import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
18
-
19
- const model = defineModel<string>({ required: true })
20
-
21
- const props = defineProps<{
22
- pciDeviceIndex: number
23
- passthroughDevices: UI_I_PciDevice[]
24
- }>()
25
-
26
- const { $store }: any = useNuxtApp()
27
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
28
-
29
- </script>
30
-
31
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-new
3
+ v-if="isNewView"
4
+ v-model="model"
5
+ :passthrough-devices="props.passthroughDevices"
6
+ :pci-device-index="props.pciDeviceIndex"
7
+ />
8
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-old
9
+ v-else
10
+ v-model="model"
11
+ :passthrough-devices="props.passthroughDevices"
12
+ :pci-device-index="props.pciDeviceIndex"
13
+ />
14
+ </template>
15
+
16
+ <script lang="ts" setup>
17
+ import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
18
+
19
+ const model = defineModel<string>({ required: true })
20
+
21
+ const props = defineProps<{
22
+ pciDeviceIndex: number
23
+ passthroughDevices: UI_I_PciDevice[]
24
+ }>()
25
+
26
+ const { $store }: any = useNuxtApp()
27
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
28
+
29
+ </script>
30
+
31
+ <style lang="scss" scoped></style>
@@ -1,16 +1,16 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-other-new
3
- v-if="isNewView"
4
- />
5
- <common-vm-actions-common-customize-hardware-virtual-hardware-other-old
6
- v-else
7
- />
8
- </template>
9
-
10
- <script setup lang="ts">
11
- const { $store }: any = useNuxtApp()
12
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
13
- </script>
14
-
15
- <style scoped lang="scss">
16
- </style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-other-new
3
+ v-if="isNewView"
4
+ />
5
+ <common-vm-actions-common-customize-hardware-virtual-hardware-other-old
6
+ v-else
7
+ />
8
+ </template>
9
+
10
+ <script setup lang="ts">
11
+ const { $store }: any = useNuxtApp()
12
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
13
+ </script>
14
+
15
+ <style scoped lang="scss">
16
+ </style>
@@ -1,53 +1,53 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-video-card-number-displays-new
3
- v-if="isNewView"
4
- v-model:number-displays="numberDisplays"
5
- :disabled="props.disabled"
6
- :error-text="apiError"
7
- :number-displays-options="props.numberDisplaysOptions"
8
- @remove-error="onRemoveValidationError"
9
- />
10
- <common-vm-actions-common-customize-hardware-virtual-hardware-video-card-number-displays-old
11
- v-else
12
- v-model:number-displays="numberDisplays"
13
- :disabled="props.disabled"
14
- :error-text="apiError"
15
- :number-displays-options="props.numberDisplaysOptions"
16
- @remove-error="onRemoveValidationError"
17
- />
18
- </template>
19
-
20
- <script setup lang="ts">
21
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
22
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
23
-
24
- const numberDisplays = defineModel<string>('numberDisplays', { required: true })
25
-
26
- const props = defineProps<{
27
- numberDisplaysOptions: UI_I_OptionItem[]
28
- disabled: boolean
29
- errorValidationFields: UI_I_ErrorValidationField[]
30
- }>()
31
-
32
- const emits = defineEmits<{
33
- (event: 'remove-error-by-title', value: string): void
34
- }>()
35
-
36
- const { $store }: any = useNuxtApp()
37
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
38
-
39
- const typeError = 'video_card.displays'
40
-
41
- const apiError = computed<string>(() => {
42
- return (
43
- props.errorValidationFields?.find((message) => message.field === typeError)
44
- ?.error_message || ''
45
- )
46
- })
47
-
48
- const onRemoveValidationError = (): void => {
49
- emits('remove-error-by-title', typeError)
50
- }
51
- </script>
52
-
53
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-video-card-number-displays-new
3
+ v-if="isNewView"
4
+ v-model:number-displays="numberDisplays"
5
+ :disabled="props.disabled"
6
+ :error-text="apiError"
7
+ :number-displays-options="props.numberDisplaysOptions"
8
+ @remove-error="onRemoveValidationError"
9
+ />
10
+ <common-vm-actions-common-customize-hardware-virtual-hardware-video-card-number-displays-old
11
+ v-else
12
+ v-model:number-displays="numberDisplays"
13
+ :disabled="props.disabled"
14
+ :error-text="apiError"
15
+ :number-displays-options="props.numberDisplaysOptions"
16
+ @remove-error="onRemoveValidationError"
17
+ />
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
22
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
23
+
24
+ const numberDisplays = defineModel<string>('numberDisplays', { required: true })
25
+
26
+ const props = defineProps<{
27
+ numberDisplaysOptions: UI_I_OptionItem[]
28
+ disabled: boolean
29
+ errorValidationFields: UI_I_ErrorValidationField[]
30
+ }>()
31
+
32
+ const emits = defineEmits<{
33
+ (event: 'remove-error-by-title', value: string): void
34
+ }>()
35
+
36
+ const { $store }: any = useNuxtApp()
37
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
38
+
39
+ const typeError = 'video_card.displays'
40
+
41
+ const apiError = computed<string>(() => {
42
+ return (
43
+ props.errorValidationFields?.find((message) => message.field === typeError)
44
+ ?.error_message || ''
45
+ )
46
+ })
47
+
48
+ const onRemoveValidationError = (): void => {
49
+ emits('remove-error-by-title', typeError)
50
+ }
51
+ </script>
52
+
53
+ <style scoped></style>