bfg-common 1.5.245 → 1.5.246

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/perPage/PerPage.vue +58 -58
  8. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  9. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  10. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  11. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  12. package/components/common/backup/storage/actions/add/Add.vue +250 -250
  13. package/components/common/backup/storage/actions/add/New.vue +288 -283
  14. package/components/common/backup/storage/actions/add/Old.vue +116 -116
  15. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  16. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  17. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +304 -294
  18. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  19. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  20. package/components/common/backup/storage/actions/add/steps/typeMode/TypeModeNew.vue +12 -3
  21. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  22. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  23. package/components/common/context/lib/models/interfaces.ts +31 -31
  24. package/components/common/diagramMain/DiagramMain.vue +897 -897
  25. package/components/common/diagramMain/Header.vue +214 -214
  26. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +8 -67
  27. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +8 -72
  28. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  30. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  31. package/components/common/pages/home/headline/Headline.vue +45 -45
  32. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  33. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  34. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  35. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  36. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  37. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  38. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  39. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  40. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  41. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  42. package/components/common/pages/packages/Packages.vue +208 -208
  43. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  44. package/components/common/pages/tasks/table/Table.vue +15 -7
  45. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +15 -9
  46. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  47. package/components/common/recursionTree/RecursionTree.vue +223 -223
  48. package/components/common/select/button/ButtonDropdown.vue +108 -108
  49. package/components/common/spiceConsole/Drawer.vue +377 -377
  50. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  51. package/components/common/tooltip/Help.vue +132 -0
  52. package/components/common/tooltip/lib/models/types.ts +1 -0
  53. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  54. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  55. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  56. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  57. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +10 -99
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +52 -3
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +32 -151
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +75 -75
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  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/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  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/password/Password.vue +103 -103
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  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/UsbRedirectionNew.vue +39 -39
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  104. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  105. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  106. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  107. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  108. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  109. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  110. package/components/common/vm/actions/common/select/name/New.vue +10 -70
  111. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  112. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  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/new/Skeleton.vue +88 -88
  116. package/components/common/wizards/datastore/add/New.vue +8 -3
  117. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureNew.vue +17 -6
  118. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +9 -3
  119. package/components/common/wizards/datastore/add/steps/typeMode/TypeModeNew.vue +8 -3
  120. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  121. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  122. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  123. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +135 -135
  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/composables/productNameLocal.ts +30 -30
  127. package/composables/useAppVersion.ts +21 -21
  128. package/package.json +1 -1
  129. package/plugins/date.ts +233 -233
  130. package/plugins/panelStates.ts +70 -70
  131. package/plugins/text.ts +59 -59
  132. package/public/spice-console/lib/images/bitmap.js +203 -203
  133. package/public/spice-console/network/spicechannel.js +387 -387
  134. package/store/main/mutations.ts +7 -7
  135. package/store/main/state.ts +7 -7
  136. package/store/tasks/mappers/recentTasks.ts +64 -64
  137. package/components/common/backup/storage/actions/add/steps/common/tooltipInfo/TooltipInfo.vue +0 -94
  138. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +0 -128
  139. package/components/common/wizards/datastore/add/steps/common/tooltipInfo/TooltipInfo.vue +0 -93
@@ -34,9 +34,38 @@
34
34
  width="auto"
35
35
  />
36
36
 
37
- <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-tooltip
38
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
39
- />
37
+ <common-tooltip-help
38
+ test-id="cpu-help-tooltip"
39
+ help-id="cpu-help-tooltip-icon"
40
+ icon-width="20"
41
+ icon-height="20"
42
+ :title="localization.common.cpu"
43
+ :dropdown-left="true"
44
+ dropdown-width="480px"
45
+ >
46
+ <div class="cpu-info-block">
47
+ <p class="help-text">
48
+ {{ localization.common.vmCpuHelpText1 }}
49
+ </p>
50
+ <p class="help-text">
51
+ {{ props.vmCpuHelpTextSecond }}
52
+ </p>
53
+ <p class="help-text">
54
+ {{ localization.common.vmCpuHelpText3 }}
55
+ </p>
56
+ <p class="help-text">
57
+ {{ localization.common.vmCpuHelpText4 }}
58
+ </p>
59
+ <div>
60
+ <a
61
+ id="cpu-more-info-link"
62
+ href="javascript:void(0)"
63
+ class="cpu-more-info"
64
+ >{{ localization.common.moreInformation }}</a
65
+ >
66
+ </div>
67
+ </div>
68
+ </common-tooltip-help>
40
69
  </div>
41
70
  </template>
42
71
  <template #stackChildren>
@@ -173,6 +202,14 @@ const emits = defineEmits<{
173
202
  const localization = computed<UI_I_Localization>(() => useLocal())
174
203
  </script>
175
204
 
205
+ <style>
206
+ :root {
207
+ --cpu-help-more-info-color: #008fd6;
208
+ }
209
+ :root.dark-theme {
210
+ --cpu-help-more-info-color: #2ba2de;
211
+ }
212
+ </style>
176
213
  <style scoped lang="scss">
177
214
  :deep(.ui-main-select-toggle) {
178
215
  display: flex;
@@ -191,4 +228,16 @@ const localization = computed<UI_I_Localization>(() => useLocal())
191
228
  :deep(.unit .ui-main-select-toggle) {
192
229
  width: 80px;
193
230
  }
231
+ .cpu-info-block {
232
+ :deep(.help-text) {
233
+ margin-bottom: 12px;
234
+ }
235
+ :deep(.cpu-more-info) {
236
+ font-size: 13px;
237
+ font-weight: 500;
238
+ line-height: 15.73px;
239
+ color: var(--cpu-help-more-info-color);
240
+ text-decoration: none;
241
+ }
242
+ }
194
243
  </style>
@@ -25,55 +25,23 @@
25
25
  test-id="passthrough-host-cpu"
26
26
  @change="emits('change-passthrough-host-cpu', $event)"
27
27
  />
28
- <div id="passthrough-help-icon" class="flex-align-center relative">
29
- <ui-icon
30
- width="16"
31
- height="16"
32
- name="info"
33
- data-id="show-passthrough-help-icon"
34
- :class="[
35
- 'passthrough-help-icon cursor-pointer disabled',
36
- { active: isShowPassthroughHost },
37
- ]"
38
- @click.stop="isShowPassthroughHost = !isShowPassthroughHost"
39
- />
40
- <Teleport to="body">
41
- <ui-dropdown
42
- :show="isShowPassthroughHost"
43
- :items="[]"
44
- elem-id="passthrough-help-icon"
45
- test-id=""
46
- width="480px"
47
- left
48
- @hide="isShowPassthroughHost = false"
49
- >
50
- <template #content>
51
- <div class="help-content">
52
- <div class="headline">
53
- <ui-icon name="info-2" width="16" height="16" />
54
- <h3 class="help-title">
55
- {{ localization.mainNavigation.help }}
56
- </h3>
57
- <ui-icon
58
- name="close"
59
- width="16"
60
- height="16"
61
- class="cursor-pointer"
62
- @click="isShowPassthroughHost = false"
63
- />
64
- </div>
65
28
 
66
- <p class="help-text">
67
- Lorem ipsum dolor sit amet, consectetur adipisicing elit.
68
- A cum eius expedita, fuga mollitia perferendis quod soluta
69
- vel? Dolor, illo, nam? A consequatur, consequuntur eos
70
- impedit iusto labore sunt tempora!
71
- </p>
72
- </div>
73
- </template>
74
- </ui-dropdown>
75
- </Teleport>
76
- </div>
29
+ <common-tooltip-help
30
+ class="ml-2"
31
+ test-id="passthrough-help"
32
+ help-id="passthrough-help-icon"
33
+ :dropdown-left="true"
34
+ :is-disabled="true"
35
+ dropdown-width="480px"
36
+ >
37
+ <p class="help-text">
38
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit.
39
+ A cum eius expedita, fuga mollitia perferendis quod soluta
40
+ vel? Dolor, illo, nam? A consequatur, consequuntur eos
41
+ impedit iusto labore sunt tempora!
42
+ </p>
43
+ </common-tooltip-help>
44
+
77
45
  </div>
78
46
  <div class="host-model-cpu-wrap flex-align-center">
79
47
  <ui-checkbox
@@ -83,55 +51,22 @@
83
51
  test-id="host-model-cpu"
84
52
  @change="emits('change-host-model-cpu', $event)"
85
53
  />
86
- <div id="host-model-help-icon" class="flex-align-center relative">
87
- <ui-icon
88
- width="16"
89
- height="16"
90
- name="info"
91
- data-id="show-host-model-help-icon"
92
- :class="[
93
- 'host-model-help-icon cursor-pointer disabled',
94
- { active: isShowHostModel },
95
- ]"
96
- @click.stop="isShowHostModel = !isShowHostModel"
97
- />
98
- <Teleport to="body">
99
- <ui-dropdown
100
- :show="isShowHostModel"
101
- :items="[]"
102
- elem-id="host-model-help-icon"
103
- test-id=""
104
- width="480px"
105
- left
106
- @hide="isShowHostModel = false"
107
- >
108
- <template #content>
109
- <div class="help-content">
110
- <div class="headline">
111
- <ui-icon name="info-2" width="16" height="16" />
112
- <h3 class="help-title">
113
- {{ localization.mainNavigation.help }}
114
- </h3>
115
- <ui-icon
116
- name="close"
117
- width="16"
118
- height="16"
119
- class="cursor-pointer"
120
- @click="isShowHostModel = false"
121
- />
122
- </div>
123
54
 
124
- <p class="help-text">
125
- Lorem ipsum dolor sit amet, consectetur adipisicing elit.
126
- A cum eius expedita, fuga mollitia perferendis quod soluta
127
- vel? Dolor, illo, nam? A consequatur, consequuntur eos
128
- impedit iusto labore sunt tempora!
129
- </p>
130
- </div>
131
- </template>
132
- </ui-dropdown>
133
- </Teleport>
134
- </div>
55
+ <common-tooltip-help
56
+ test-id="host-model-help"
57
+ help-id="host-model-help-icon"
58
+ :dropdown-left="true"
59
+ :is-disabled="true"
60
+ dropdown-width="480px"
61
+ >
62
+ <p class="help-text">
63
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit.
64
+ A cum eius expedita, fuga mollitia perferendis quod soluta
65
+ vel? Dolor, illo, nam? A consequatur, consequuntur eos
66
+ impedit iusto labore sunt tempora!
67
+ </p>
68
+ </common-tooltip-help>
69
+
135
70
  </div>
136
71
  </div>
137
72
  </template>
@@ -164,22 +99,12 @@ const emits = defineEmits<{
164
99
 
165
100
  const localization = computed<UI_I_Localization>(() => useLocal())
166
101
 
167
- const isShowPassthroughHost = ref<boolean>(false)
168
- const isShowHostModel = ref<boolean>(false)
169
-
170
102
  const onChangeCpuModel = (data: UI_T_SelectedValue): void => {
171
103
  emits('change-cpu-model', { target: { value: data } })
172
104
  }
173
105
  </script>
174
106
 
175
- <style>
176
- :root {
177
- --cpu-model-help-icon-color: #4d5d69;
178
- }
179
- :root.dark-theme {
180
- --cpu-model-help-icon-color: #e9eaec;
181
- }
182
- </style>
107
+
183
108
  <style scoped lang="scss">
184
109
  .limit-title {
185
110
  margin-right: 12px;
@@ -199,48 +124,4 @@ const onChangeCpuModel = (data: UI_T_SelectedValue): void => {
199
124
  }
200
125
  }
201
126
 
202
- #passthrough-help-icon,
203
- #host-model-help-icon {
204
- margin-left: 8px;
205
- }
206
-
207
- .passthrough-help-icon,
208
- .host-model-help-icon {
209
- color: #9da6ad; // for light and dark
210
-
211
- &:hover {
212
- color: var(--cpu-model-help-icon-color);
213
- }
214
- &.active {
215
- color: #008fd6;
216
- }
217
- &.disabled {
218
- color: #bdc3c7;
219
- pointer-events: none;
220
- }
221
- }
222
- .help-content {
223
- padding: 16px;
224
-
225
- .headline {
226
- display: flex;
227
- align-items: center;
228
- gap: 8px;
229
- margin-bottom: 12px;
230
-
231
- .help-title {
232
- flex: 1;
233
- font-size: 14px;
234
- font-weight: 500;
235
- line-height: 16.94px;
236
- color: #4d5d69;
237
- }
238
- }
239
-
240
- .help-text {
241
- font-size: 13px;
242
- line-height: 15.73px;
243
- color: #4d5d69;
244
- }
245
- }
246
127
  </style>
@@ -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
+ }