bfg-common 1.5.585 → 1.5.587

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 (105) 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/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  16. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  17. package/components/common/diagramMain/port/Port.vue +580 -580
  18. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  19. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  20. package/components/common/pages/backups/DetailView.vue +52 -52
  21. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  22. package/components/common/pages/backups/modals/Modals.vue +243 -243
  23. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  24. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  25. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  26. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  27. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  28. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  29. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  30. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  31. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  32. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  33. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  34. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  35. package/components/common/select/radio/RadioGroup.vue +137 -137
  36. package/components/common/spiceConsole/Drawer.vue +420 -420
  37. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  38. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  39. package/components/common/tools/Actions.vue +207 -207
  40. package/components/common/treeView/TreeView.vue +52 -52
  41. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +325 -324
  42. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +1 -1
  43. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  44. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +158 -158
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryOld.vue +155 -155
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  52. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  53. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  54. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  55. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  56. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  57. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  58. package/components/common/vm/actions/common/select/os/New.vue +1 -1
  59. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  60. package/components/common/vm/actions/common/select/storage/Storage.vue +178 -178
  61. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  62. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  63. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  64. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  65. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  66. package/components/common/vm/actions/register/Register.vue +352 -352
  67. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  68. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  69. package/components/common/wizards/common/compatibility/New.vue +99 -99
  70. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  71. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +86 -86
  72. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  73. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  74. package/components/common/wizards/common/steps/name/New.vue +221 -221
  75. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  76. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  77. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  78. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  79. package/components/common/wizards/datastore/add/Add.vue +228 -228
  80. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  81. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  82. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -205
  83. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  84. package/composables/useAppVersion.ts +21 -21
  85. package/composables/useLocal.ts +6 -6
  86. package/composables/useLocalCommon.ts +39 -39
  87. package/lib/models/store/host/interfaces.ts +32 -0
  88. package/package.json +1 -1
  89. package/plugins/console.ts +21 -21
  90. package/plugins/date.ts +233 -233
  91. package/plugins/mouse.ts +21 -21
  92. package/plugins/panelStates.ts +70 -70
  93. package/plugins/text.ts +59 -59
  94. package/plugins/time.ts +40 -0
  95. package/public/spice-console/application/clientgui.js +854 -854
  96. package/public/spice-console/application/packetfactory.js +211 -211
  97. package/public/spice-console/application/virtualmouse.js +147 -147
  98. package/public/spice-console/lib/images/bitmap.js +203 -203
  99. package/public/spice-console/network/spicechannel.js +440 -440
  100. package/public/spice-console/process/cursorprocess.js +121 -121
  101. package/public/spice-console/process/inputprocess.js +227 -227
  102. package/public/spice-console/process/mainprocess.js +210 -210
  103. package/public/spice-console/run.js +210 -210
  104. package/store/main/mutations.ts +7 -7
  105. package/store/main/state.ts +7 -7
@@ -104,7 +104,7 @@
104
104
  v-model:storage="item.storage"
105
105
  :index="props.hardDisksIndex[key]"
106
106
  :type="props.hardDisksType[key]"
107
- :storage-local="props.storage"
107
+ :main-storage="props.storage"
108
108
  :error-validation-fields="props.errorValidationFields"
109
109
  :get-datastore-table-func="props.getDatastoreTableFunc"
110
110
  :datastore="props.datastore"
@@ -1,140 +1,140 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-shares-new
3
- v-if="isNewView"
4
- v-model:shares-type="sharesTypeLocal"
5
- v-model:shares="sharesLocal"
6
- :disabled="props.disabled"
7
- :shares-type-options="sharesTypeOptions"
8
- :shares-errors-texts="sharesLocalAndApiErrorsTexts"
9
- :shares-options="sharesOptions"
10
- :is-disabled-shares="isDisabledShares"
11
- @change-shares-type="onChangeSharesType"
12
- @remove-error="onRemoveValidationError"
13
- />
14
- <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-shares-old
15
- v-else
16
- v-model:shares-type="sharesTypeLocal"
17
- v-model:shares="sharesLocal"
18
- :disabled="props.disabled"
19
- :shares-type-options="sharesTypeOptions"
20
- :shares-errors-texts="sharesLocalAndApiErrorsTexts"
21
- :shares-options="sharesOptions"
22
- :is-disabled-shares="isDisabledShares"
23
- @change-shares-type="onChangeSharesType"
24
- @remove-error="onRemoveValidationError"
25
- />
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import type {
30
- UI_I_Localization,
31
- UI_I_HTMLSelectElement,
32
- } from '~/lib/models/interfaces'
33
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
34
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
35
- import {
36
- sharesTypeOptionsFunc,
37
- sharesOptionsFunc,
38
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options'
39
-
40
- const props = defineProps<{
41
- shares: string
42
- sharesType: string
43
- disabled: boolean
44
- errorValidationFields: UI_I_ErrorValidationField<string>[]
45
- }>()
46
- const emits = defineEmits<{
47
- (event: 'update:shares', value: string): void
48
- (event: 'update:shares-type', value: string): void
49
- (event: 'invalid', value: boolean): void
50
- (event: 'remove-error-by-title', value: string): void
51
- }>()
52
-
53
- const { $store }: any = useNuxtApp()
54
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
55
-
56
- const localization = computed<UI_I_Localization>(() => useLocal())
57
-
58
- const apiErrorLocal = computed<string>(() => {
59
- return (
60
- props.errorValidationFields?.find(
61
- (message) => message.field === 'cpu.shares'
62
- )?.error_message || ''
63
- )
64
- })
65
-
66
- const maxShares = 262_144
67
- const sharesOptions = computed<UI_I_OptionItem[]>(() => {
68
- return sharesOptionsFunc(localization.value, maxShares)
69
- })
70
-
71
- const sharesTypeOptions = ref<UI_I_OptionItem[]>(
72
- sharesTypeOptionsFunc(localization.value)
73
- )
74
-
75
- const isDisabledShares = computed<boolean>(
76
- () => sharesTypeLocal.value !== '2' || props.disabled
77
- )
78
- const sharesLocal = computed<string>({
79
- get() {
80
- return props.shares
81
- },
82
- set(newValue) {
83
- emits('update:shares', newValue)
84
- },
85
- })
86
- const sharesTypeLocal = computed<string>({
87
- get() {
88
- return props.sharesType
89
- },
90
- set(newValue) {
91
- emits('update:shares-type', newValue)
92
- },
93
- })
94
- const onChangeSharesType = (event: UI_I_HTMLSelectElement): void => {
95
- const value = event.target.value
96
- if (value === '2') return
97
- sharesLocal.value = event.target.value
98
- }
99
-
100
- const sharesErrorLocalText = computed<string>(() => {
101
- if (+sharesLocal.value < 2 || +sharesLocal.value > maxShares) {
102
- return localization.value.common.sharesMustBe
103
- .replace('{0}', '2')
104
- .replace('{1}', maxShares + '')
105
- }
106
-
107
- const validValue = /^\d+(\.\d+)?$/.test(sharesLocal.value + '')
108
- if (!validValue) {
109
- return localization.value.common.inputContainsInvalidCharacters
110
- }
111
-
112
- return ''
113
- })
114
- const sharesInvalid = computed<boolean>(() => !!sharesErrorLocalText.value)
115
- watch(
116
- sharesInvalid,
117
- (newValue) => {
118
- emits('invalid', newValue)
119
- },
120
- { immediate: true }
121
- )
122
-
123
- const sharesLocalAndApiErrorsTexts = computed<string>(() => {
124
- const localError = sharesErrorLocalText.value
125
- const apiError = apiErrorLocal.value
126
-
127
- let result = ''
128
- if (localError && !apiError) result = localError
129
- if (localError && apiError) result = localError + ', ' + apiError
130
- if (!localError) result = apiError
131
-
132
- return result
133
- })
134
-
135
- const onRemoveValidationError = (): void => {
136
- emits('remove-error-by-title', 'cpu.shares')
137
- }
138
- </script>
139
-
140
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-shares-new
3
+ v-if="isNewView"
4
+ v-model:shares-type="sharesTypeLocal"
5
+ v-model:shares="sharesLocal"
6
+ :disabled="props.disabled"
7
+ :shares-type-options="sharesTypeOptions"
8
+ :shares-errors-texts="sharesLocalAndApiErrorsTexts"
9
+ :shares-options="sharesOptions"
10
+ :is-disabled-shares="isDisabledShares"
11
+ @change-shares-type="onChangeSharesType"
12
+ @remove-error="onRemoveValidationError"
13
+ />
14
+ <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-shares-old
15
+ v-else
16
+ v-model:shares-type="sharesTypeLocal"
17
+ v-model:shares="sharesLocal"
18
+ :disabled="props.disabled"
19
+ :shares-type-options="sharesTypeOptions"
20
+ :shares-errors-texts="sharesLocalAndApiErrorsTexts"
21
+ :shares-options="sharesOptions"
22
+ :is-disabled-shares="isDisabledShares"
23
+ @change-shares-type="onChangeSharesType"
24
+ @remove-error="onRemoveValidationError"
25
+ />
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ import type {
30
+ UI_I_Localization,
31
+ UI_I_HTMLSelectElement,
32
+ } from '~/lib/models/interfaces'
33
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
34
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
35
+ import {
36
+ sharesTypeOptionsFunc,
37
+ sharesOptionsFunc,
38
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options'
39
+
40
+ const props = defineProps<{
41
+ shares: string
42
+ sharesType: string
43
+ disabled: boolean
44
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
45
+ }>()
46
+ const emits = defineEmits<{
47
+ (event: 'update:shares', value: string): void
48
+ (event: 'update:shares-type', value: string): void
49
+ (event: 'invalid', value: boolean): void
50
+ (event: 'remove-error-by-title', value: string): void
51
+ }>()
52
+
53
+ const { $store }: any = useNuxtApp()
54
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
55
+
56
+ const localization = computed<UI_I_Localization>(() => useLocal())
57
+
58
+ const apiErrorLocal = computed<string>(() => {
59
+ return (
60
+ props.errorValidationFields?.find(
61
+ (message) => message.field === 'cpu.shares'
62
+ )?.error_message || ''
63
+ )
64
+ })
65
+
66
+ const maxShares = 262_144
67
+ const sharesOptions = computed<UI_I_OptionItem[]>(() => {
68
+ return sharesOptionsFunc(localization.value, maxShares)
69
+ })
70
+
71
+ const sharesTypeOptions = ref<UI_I_OptionItem[]>(
72
+ sharesTypeOptionsFunc(localization.value)
73
+ )
74
+
75
+ const isDisabledShares = computed<boolean>(
76
+ () => sharesTypeLocal.value !== '2' || props.disabled
77
+ )
78
+ const sharesLocal = computed<string>({
79
+ get() {
80
+ return props.shares
81
+ },
82
+ set(newValue) {
83
+ emits('update:shares', newValue)
84
+ },
85
+ })
86
+ const sharesTypeLocal = computed<string>({
87
+ get() {
88
+ return props.sharesType
89
+ },
90
+ set(newValue) {
91
+ emits('update:shares-type', newValue)
92
+ },
93
+ })
94
+ const onChangeSharesType = (event: UI_I_HTMLSelectElement): void => {
95
+ const value = event.target.value
96
+ if (value === '2') return
97
+ sharesLocal.value = event.target.value
98
+ }
99
+
100
+ const sharesErrorLocalText = computed<string>(() => {
101
+ if (+sharesLocal.value < 2 || +sharesLocal.value > maxShares) {
102
+ return localization.value.common.sharesMustBe
103
+ .replace('{0}', '2')
104
+ .replace('{1}', maxShares + '')
105
+ }
106
+
107
+ const validValue = /^\d+(\.\d+)?$/.test(sharesLocal.value + '')
108
+ if (!validValue) {
109
+ return localization.value.common.inputContainsInvalidCharacters
110
+ }
111
+
112
+ return ''
113
+ })
114
+ const sharesInvalid = computed<boolean>(() => !!sharesErrorLocalText.value)
115
+ watch(
116
+ sharesInvalid,
117
+ (newValue) => {
118
+ emits('invalid', newValue)
119
+ },
120
+ { immediate: true }
121
+ )
122
+
123
+ const sharesLocalAndApiErrorsTexts = computed<string>(() => {
124
+ const localError = sharesErrorLocalText.value
125
+ const apiError = apiErrorLocal.value
126
+
127
+ let result = ''
128
+ if (localError && !apiError) result = localError
129
+ if (localError && apiError) result = localError + ', ' + apiError
130
+ if (!localError) result = apiError
131
+
132
+ return result
133
+ })
134
+
135
+ const onRemoveValidationError = (): void => {
136
+ emits('remove-error-by-title', 'cpu.shares')
137
+ }
138
+ </script>
139
+
140
+ <style scoped></style>
@@ -1,28 +1,28 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
3
-
4
- export const sharesOptionsFunc = (
5
- localization: UI_I_Localization,
6
- maxShares: number
7
- ): UI_I_OptionItem[] => {
8
- return [
9
- {
10
- text: `${localization.common.minimum} 2`,
11
- value: 2,
12
- },
13
- {
14
- text: `${localization.common.maximum} ${maxShares}`,
15
- value: maxShares,
16
- },
17
- ]
18
- }
19
- export const sharesTypeOptionsFunc = (
20
- localization: UI_I_Localization
21
- ): UI_I_OptionItem[] => {
22
- return [
23
- { text: localization.common.low, value: '1000' },
24
- { text: localization.common.normal, value: '2000' },
25
- { text: localization.common.high, value: '4000' },
26
- { text: localization.common.custom, value: '2' },
27
- ]
28
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
3
+
4
+ export const sharesOptionsFunc = (
5
+ localization: UI_I_Localization,
6
+ maxShares: number
7
+ ): UI_I_OptionItem[] => {
8
+ return [
9
+ {
10
+ text: `${localization.common.minimum} 2`,
11
+ value: 2,
12
+ },
13
+ {
14
+ text: `${localization.common.maximum} ${maxShares}`,
15
+ value: maxShares,
16
+ },
17
+ ]
18
+ }
19
+ export const sharesTypeOptionsFunc = (
20
+ localization: UI_I_Localization
21
+ ): UI_I_OptionItem[] => {
22
+ return [
23
+ { text: localization.common.low, value: '1000' },
24
+ { text: localization.common.normal, value: '2000' },
25
+ { text: localization.common.high, value: '4000' },
26
+ { text: localization.common.custom, value: '2' },
27
+ ]
28
+ }
@@ -1,158 +1,158 @@
1
- <template>
2
- <ui-stack-block
3
- :has-children="true"
4
- test-id="memory-stack-block"
5
- is-toggle-on-stack-view-key
6
- >
7
- <template #stackBlockKey>
8
- <div
9
- id="vm-wizard-toggle-block-memory"
10
- data-id="vm-wizard-toggle-block-memory"
11
- class="flex-align-center"
12
- >
13
- <span class="title">{{ localization.common.memory }}</span>
14
- <ui-icon
15
- v-show="props.memoryInvalid"
16
- width="18px"
17
- height="18px"
18
- name="error-outline"
19
- class="ml-2"
20
- />
21
- </div>
22
- </template>
23
- <template #stackBlockContent>
24
- <div class="memory-content flex-align-center">
25
- <ui-combobox
26
- v-model="selectedMemory"
27
- :items="props.memoryOptions"
28
- :disabled="props.isMemoryDisabled"
29
- :error-text="props.errorText"
30
- test-id="vm-wizard-memory-field"
31
- size="sm"
32
- width="auto"
33
- @change="emits('select-memory', $event)"
34
- />
35
-
36
- <ui-select
37
- id="vm-wizard-memory-type-select"
38
- v-model="memoryType"
39
- :items="props.memoryTypeOptions"
40
- :disabled="props.isMemoryDisabled"
41
- width="auto"
42
- test-id="vm-wizard-memory-type-select"
43
- class="unit"
44
- size="sm"
45
- />
46
- </div>
47
- </template>
48
- <template #stackChildren>
49
- <common-vm-actions-common-customize-hardware-virtual-hardware-reservation
50
- v-model:reservation="reservation"
51
- v-model:reservation-type="reservationType"
52
- :reserve-guest-memory="reserveGuestMemory"
53
- :error-validation-fields="props.errorValidationFields"
54
- :multiply="2"
55
- :disabled="props.isDisabled"
56
- component-type="memory"
57
- type="mb"
58
- class="memory-reservation"
59
- @remove-error-by-title="emits('remove-error-by-title', $event)"
60
- @invalid="reservationInvalid = $event"
61
- />
62
- <common-vm-actions-common-customize-hardware-virtual-hardware-limit
63
- v-model:limit="limit"
64
- v-model:limit-type="limitType"
65
- :error-validation-fields="props.errorValidationFields"
66
- :limit-options="props.limitOptions"
67
- :multiply="2"
68
- :disabled="isDisabled"
69
- type="mb"
70
- component-type="memory"
71
- class="memory-limit"
72
- @invalid="limitInvalid = $event"
73
- @remove-error-by-title="emits('remove-error-by-title', $event)"
74
- />
75
- <common-vm-actions-common-customize-hardware-virtual-hardware-memory-hot-plug
76
- v-model:memory-hot-plug="memoryHotPlug"
77
- :disabled="props.isDisabledMemoryHotPlug"
78
- />
79
- </template>
80
- </ui-stack-block>
81
- </template>
82
-
83
- <script setup lang="ts">
84
- import type { UI_I_Localization } from '~/lib/models/interfaces'
85
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
86
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
87
-
88
- const selectedMemory = defineModel<number>('selectedMemory', {
89
- required: true,
90
- })
91
- const memoryType = defineModel<string>('memoryType', {
92
- required: true,
93
- })
94
- const reservation = defineModel<string>('reservation', {
95
- required: true,
96
- })
97
- const reservationType = defineModel<string>('reservationType', {
98
- required: true,
99
- })
100
- const reserveGuestMemory = defineModel<boolean>('reserveGuestMemory', {
101
- required: true,
102
- })
103
- const reservationInvalid = defineModel<boolean>('reservationInvalid', {
104
- required: true,
105
- })
106
- const limit = defineModel<string>('limit', {
107
- required: true,
108
- })
109
- const limitType = defineModel<string>('limitType', {
110
- required: true,
111
- })
112
- const limitInvalid = defineModel<boolean>('limitInvalid', {
113
- required: true,
114
- })
115
- const memoryHotPlug = defineModel<boolean>('memoryHotPlug', {
116
- required: true,
117
- })
118
-
119
- const props = defineProps<{
120
- errorValidationFields: UI_I_ErrorValidationField[]
121
- memoryInvalid: boolean
122
- errorText: string
123
- memoryOptions: UI_I_OptionItem[]
124
- isMemoryDisabled: boolean
125
- memoryTypeOptions: UI_I_OptionItem[]
126
- isDisabled: boolean
127
- limitOptions: UI_I_OptionItem[]
128
- isDisabledMemoryHotPlug: boolean
129
- }>()
130
- const emits = defineEmits<{
131
- (event: 'remove-error-by-title', value: string): void
132
- (event: 'select-memory', value: any): void
133
- (event: 'remove-error'): void
134
- }>()
135
-
136
- const localization = computed<UI_I_Localization>(() => useLocal())
137
- </script>
138
-
139
- <style scoped lang="scss">
140
- .memory-content {
141
- gap: 8px;
142
- }
143
-
144
- :deep(.ui-main-select-toggle) {
145
- display: flex;
146
- justify-content: space-between;
147
- width: 108px;
148
- }
149
- .light-theme {
150
- :deep(.ui-main-select-toggle) {
151
- background-color: #ffffff;
152
- }
153
- }
154
-
155
- :deep(.unit .ui-main-select-toggle) {
156
- width: 80px;
157
- }
158
- </style>
1
+ <template>
2
+ <ui-stack-block
3
+ :has-children="true"
4
+ test-id="memory-stack-block"
5
+ is-toggle-on-stack-view-key
6
+ >
7
+ <template #stackBlockKey>
8
+ <div
9
+ id="vm-wizard-toggle-block-memory"
10
+ data-id="vm-wizard-toggle-block-memory"
11
+ class="flex-align-center"
12
+ >
13
+ <span class="title">{{ localization.common.memory }}</span>
14
+ <ui-icon
15
+ v-show="props.memoryInvalid"
16
+ width="18px"
17
+ height="18px"
18
+ name="error-outline"
19
+ class="ml-2"
20
+ />
21
+ </div>
22
+ </template>
23
+ <template #stackBlockContent>
24
+ <div class="memory-content flex-align-center">
25
+ <ui-combobox
26
+ v-model="selectedMemory"
27
+ :items="props.memoryOptions"
28
+ :disabled="props.isMemoryDisabled"
29
+ :error-text="props.errorText"
30
+ test-id="vm-wizard-memory-field"
31
+ size="sm"
32
+ width="auto"
33
+ @change="emits('select-memory', $event)"
34
+ />
35
+
36
+ <ui-select
37
+ id="vm-wizard-memory-type-select"
38
+ v-model="memoryType"
39
+ :items="props.memoryTypeOptions"
40
+ :disabled="props.isMemoryDisabled"
41
+ width="auto"
42
+ test-id="vm-wizard-memory-type-select"
43
+ class="unit"
44
+ size="sm"
45
+ />
46
+ </div>
47
+ </template>
48
+ <template #stackChildren>
49
+ <common-vm-actions-common-customize-hardware-virtual-hardware-reservation
50
+ v-model:reservation="reservation"
51
+ v-model:reservation-type="reservationType"
52
+ :reserve-guest-memory="reserveGuestMemory"
53
+ :error-validation-fields="props.errorValidationFields"
54
+ :multiply="2"
55
+ :disabled="props.isDisabled"
56
+ component-type="memory"
57
+ type="mb"
58
+ class="memory-reservation"
59
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
60
+ @invalid="reservationInvalid = $event"
61
+ />
62
+ <common-vm-actions-common-customize-hardware-virtual-hardware-limit
63
+ v-model:limit="limit"
64
+ v-model:limit-type="limitType"
65
+ :error-validation-fields="props.errorValidationFields"
66
+ :limit-options="props.limitOptions"
67
+ :multiply="2"
68
+ :disabled="isDisabled"
69
+ type="mb"
70
+ component-type="memory"
71
+ class="memory-limit"
72
+ @invalid="limitInvalid = $event"
73
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
74
+ />
75
+ <common-vm-actions-common-customize-hardware-virtual-hardware-memory-hot-plug
76
+ v-model:memory-hot-plug="memoryHotPlug"
77
+ :disabled="props.isDisabledMemoryHotPlug"
78
+ />
79
+ </template>
80
+ </ui-stack-block>
81
+ </template>
82
+
83
+ <script setup lang="ts">
84
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
85
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
86
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
87
+
88
+ const selectedMemory = defineModel<number>('selectedMemory', {
89
+ required: true,
90
+ })
91
+ const memoryType = defineModel<string>('memoryType', {
92
+ required: true,
93
+ })
94
+ const reservation = defineModel<string>('reservation', {
95
+ required: true,
96
+ })
97
+ const reservationType = defineModel<string>('reservationType', {
98
+ required: true,
99
+ })
100
+ const reserveGuestMemory = defineModel<boolean>('reserveGuestMemory', {
101
+ required: true,
102
+ })
103
+ const reservationInvalid = defineModel<boolean>('reservationInvalid', {
104
+ required: true,
105
+ })
106
+ const limit = defineModel<string>('limit', {
107
+ required: true,
108
+ })
109
+ const limitType = defineModel<string>('limitType', {
110
+ required: true,
111
+ })
112
+ const limitInvalid = defineModel<boolean>('limitInvalid', {
113
+ required: true,
114
+ })
115
+ const memoryHotPlug = defineModel<boolean>('memoryHotPlug', {
116
+ required: true,
117
+ })
118
+
119
+ const props = defineProps<{
120
+ errorValidationFields: UI_I_ErrorValidationField[]
121
+ memoryInvalid: boolean
122
+ errorText: string
123
+ memoryOptions: UI_I_OptionItem[]
124
+ isMemoryDisabled: boolean
125
+ memoryTypeOptions: UI_I_OptionItem[]
126
+ isDisabled: boolean
127
+ limitOptions: UI_I_OptionItem[]
128
+ isDisabledMemoryHotPlug: boolean
129
+ }>()
130
+ const emits = defineEmits<{
131
+ (event: 'remove-error-by-title', value: string): void
132
+ (event: 'select-memory', value: any): void
133
+ (event: 'remove-error'): void
134
+ }>()
135
+
136
+ const localization = computed<UI_I_Localization>(() => useLocal())
137
+ </script>
138
+
139
+ <style scoped lang="scss">
140
+ .memory-content {
141
+ gap: 8px;
142
+ }
143
+
144
+ :deep(.ui-main-select-toggle) {
145
+ display: flex;
146
+ justify-content: space-between;
147
+ width: 108px;
148
+ }
149
+ .light-theme {
150
+ :deep(.ui-main-select-toggle) {
151
+ background-color: #ffffff;
152
+ }
153
+ }
154
+
155
+ :deep(.unit .ui-main-select-toggle) {
156
+ width: 80px;
157
+ }
158
+ </style>