bfg-common 1.5.381 → 1.5.383

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 (144) 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 +17 -4
  7. package/assets/localization/local_en.json +17 -4
  8. package/assets/localization/local_hy.json +17 -4
  9. package/assets/localization/local_kk.json +17 -4
  10. package/assets/localization/local_ru.json +17 -4
  11. package/assets/localization/local_zh.json +17 -4
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/collapse/CollapseNavItem.vue +226 -226
  15. package/components/atoms/nav/NavBar.vue +147 -147
  16. package/components/atoms/perPage/PerPage.vue +58 -58
  17. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  18. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  19. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  20. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  21. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  22. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  23. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  24. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  25. package/components/common/browse/blocks/Container.vue +234 -234
  26. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  27. package/components/common/context/lib/models/interfaces.ts +33 -33
  28. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  29. package/components/common/diagramMain/network/Network.vue +141 -141
  30. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  32. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  33. package/components/common/pages/home/headline/Headline.vue +45 -45
  34. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  35. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  36. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  37. package/components/common/pages/home/widgets/WidgetsNew.vue +88 -88
  38. package/components/common/pages/home/widgets/WidgetsOld.vue +36 -36
  39. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  40. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  41. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  42. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  43. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  44. package/components/common/pages/packages/Packages.vue +208 -208
  45. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  46. package/components/common/readyToComplete/New.vue +129 -129
  47. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  48. package/components/common/recursionTree/RecursionTree.vue +223 -223
  49. package/components/common/select/button/ButtonDropdown.vue +112 -112
  50. package/components/common/spiceConsole/Drawer.vue +381 -381
  51. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  52. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  53. package/components/common/tools/Actions.vue +207 -207
  54. package/components/common/vm/actions/add/Old.vue +388 -388
  55. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  56. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  57. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  58. package/components/common/vm/actions/clone/Clone.vue +823 -823
  59. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  60. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  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/lib/config/dropdownItems.ts +155 -155
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  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/videoCard/VideoCard.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -155
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -130
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -113
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -95
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -155
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  106. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  107. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  108. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  109. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  110. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  111. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  112. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  113. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  114. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  115. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  116. package/components/common/vm/actions/common/select/storage/Storage.vue +155 -155
  117. package/components/common/vm/actions/common/select/storage/new/New.vue +300 -300
  118. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  119. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  120. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -242
  121. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  122. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  123. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  124. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  125. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  126. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  127. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  128. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  129. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  130. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  131. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  132. package/composables/productNameLocal.ts +30 -30
  133. package/composables/useAppVersion.ts +21 -21
  134. package/lib/models/interfaces.ts +1 -0
  135. package/lib/models/types.ts +1 -0
  136. package/package.json +1 -1
  137. package/plugins/date.ts +233 -233
  138. package/plugins/panelStates.ts +70 -70
  139. package/plugins/text.ts +59 -59
  140. package/public/spice-console/lib/images/bitmap.js +203 -203
  141. package/public/spice-console/network/spicechannel.js +390 -390
  142. package/store/main/mutations.ts +7 -7
  143. package/store/main/state.ts +7 -7
  144. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,467 +1,467 @@
1
- <template>
2
- <div class="wizard-content-container add-networking-step">
3
- <div class="wizard-content">
4
- <atoms-alert
5
- v-if="props.alertMessages.length"
6
- :items="props.alertMessages"
7
- status="alert-danger"
8
- test-id="add-networking-selected-target-device"
9
- @remove="onHideAlert"
10
- />
11
- <form>
12
- <div v-show="props.connectionType === '0'">
13
- <div class="radio">
14
- <input
15
- id="existing-network"
16
- v-model="fields.selected"
17
- data-id="existing-network-radio"
18
- type="radio"
19
- value="0"
20
- name="target-device"
21
- />
22
- <label for="existing-network">
23
- {{ localization.common.selectExistingNetwork }}
24
- </label>
25
- </div>
26
- <fieldset
27
- :class="{
28
- disabled: fields.selected !== '0',
29
- }"
30
- >
31
- <div>
32
- <atoms-tooltip-error
33
- :has-error="
34
- fields.selected === '0' &&
35
- !!props.messagesFields.network.field
36
- "
37
- >
38
- <template #elem>
39
- <fieldset class="fieldset-block">
40
- <div>
41
- <input
42
- v-model="fields.network"
43
- :class="[
44
- 'tooltip-field show-arrow',
45
- {
46
- 'danger-not-valid':
47
- fields.selected === '0' &&
48
- props.messagesFields.network.field,
49
- },
50
- ]"
51
- data-id="network-input"
52
- type="text"
53
- disabled
54
- />
55
- <button
56
- type="button"
57
- class="btn btn-link"
58
- data-id="show-select-network-modal-button"
59
- @click="onShowModal('select-network')"
60
- >
61
- {{ localization.common.browseDoted }}
62
- </button>
63
- </div>
64
- </fieldset>
65
- </template>
66
- <template #content>
67
- {{ props.messagesFields.network.field }}
68
- </template>
69
- </atoms-tooltip-error>
70
- </div>
71
- </fieldset>
72
- </div>
73
-
74
- <div v-show="isConnectionTypeFirstTwo">
75
- <div class="radio">
76
- <input
77
- id="existing-standard-switch"
78
- v-model="fields.selected"
79
- data-id="existing-standard-switch-radio"
80
- type="radio"
81
- value="1"
82
- name="target-device"
83
- />
84
-
85
- <!-- :checked="isConnectionTypeFirstTwo"-->
86
- <label for="existing-standard-switch">
87
- {{ localization.common.selectExistingStandardSwitch }}
88
- </label>
89
- </div>
90
- <fieldset
91
- :class="{
92
- disabled: fields.selected !== '1',
93
- }"
94
- >
95
- <div>
96
- <atoms-tooltip-error
97
- :has-error="
98
- fields.selected === '1' && !!props.messagesFields.switch.field
99
- "
100
- >
101
- <template #elem>
102
- <fieldset class="fieldset-block">
103
- <div>
104
- <input
105
- v-model="fields.standardSwitch"
106
- :class="[
107
- 'tooltip-field show-arrow',
108
- {
109
- 'danger-not-valid':
110
- fields.selected === '1' &&
111
- props.messagesFields.switch.field,
112
- },
113
- ]"
114
- data-id="standard-switch-input"
115
- type="text"
116
- disabled
117
- />
118
- <button
119
- type="button"
120
- class="btn btn-link"
121
- data-id="show-select-standard-switch-button"
122
- @click="onShowModal('select-standard-switch')"
123
- >
124
- {{ localization.common.browseDoted }}
125
- </button>
126
- </div>
127
- </fieldset>
128
- </template>
129
- <template #content>
130
- {{ props.messagesFields.switch.field }}
131
- </template>
132
- </atoms-tooltip-error>
133
- </div>
134
- </fieldset>
135
- </div>
136
-
137
- <div v-show="props.connectionType === '2'">
138
- <div class="radio">
139
- <input
140
- id="existing-switch"
141
- v-model="fields.selected"
142
- data-id="existing-switch-radio"
143
- type="radio"
144
- value="2"
145
- name="target-device"
146
- />
147
- <!-- :checked="props.connectionType === '2'"-->
148
- <label for="existing-switch">
149
- {{ localization.common.selectExistingSwitch }}
150
- </label>
151
- </div>
152
- <fieldset
153
- :class="{
154
- disabled: fields.selected !== '2',
155
- }"
156
- >
157
- <div>
158
- <atoms-tooltip-error
159
- :has-error="
160
- fields.selected === '2' &&
161
- !!props.messagesFields.switch2.field
162
- "
163
- >
164
- <template #elem>
165
- <fieldset class="fieldset-block">
166
- <div>
167
- <input
168
- v-model="fields.switch"
169
- :class="[
170
- 'tooltip-field show-arrow',
171
- {
172
- 'danger-not-valid':
173
- fields.selected === '2' &&
174
- props.messagesFields.switch2.field,
175
- },
176
- ]"
177
- data-id="switch-input"
178
- type="text"
179
- disabled
180
- />
181
- <button
182
- type="button"
183
- data-id="show-select-switch-modal-button"
184
- class="btn btn-link"
185
- @click="onShowModal('select-switch')"
186
- >
187
- {{ localization.common.browseDoted }}
188
- </button>
189
- </div>
190
- </fieldset>
191
- </template>
192
- <template #content>
193
- {{ props.messagesFields.switch2.field }}
194
- </template>
195
- </atoms-tooltip-error>
196
- </div>
197
- </fieldset>
198
- </div>
199
-
200
- <div v-permission="'Networks.CreateSwitch'">
201
- <div class="radio">
202
- <input
203
- id="standard-switch"
204
- v-model="fields.selected"
205
- data-id="standard-switch-radio"
206
- type="radio"
207
- value="3"
208
- name="target-device"
209
- />
210
-
211
- <label for="standard-switch">
212
- {{ localization.common.newStandardSwitch }}
213
- </label>
214
- </div>
215
- <fieldset
216
- :class="{
217
- disabled: fields.selected !== '3',
218
- }"
219
- >
220
- <div class="horizontal-flex-container">
221
- <label class="property-label-group">
222
- {{ localization.common.mtuBytes }}
223
- </label>
224
- <div class="margin-left-property-value-group">
225
- <div class="property-value-group tooltip-field-container">
226
- <fieldset>
227
- <atoms-tooltip-error
228
- :has-error="
229
- !!props.messagesFields['new_switch.mtu'].field
230
- "
231
- >
232
- <template #elem>
233
- <input
234
- id="mtu"
235
- v-model="fields.mtu"
236
- :class="[
237
- 'tooltip-field show-arrow',
238
- {
239
- 'danger-not-valid':
240
- props.messagesFields['new_switch.mtu'].field,
241
- },
242
- ]"
243
- data-id="mtu-input"
244
- type="number"
245
- name="mtu"
246
- @click.stop
247
- />
248
- </template>
249
- <template #content>
250
- {{ props.messagesFields['new_switch.mtu'].field }}
251
- </template>
252
- </atoms-tooltip-error>
253
- </fieldset>
254
- </div>
255
- </div>
256
- </div>
257
- </fieldset>
258
- </div>
259
- </form>
260
- </div>
261
- </div>
262
- <teleport to="body">
263
- <common-wizards-network-add-modals-select-standard-switch
264
- modal-name="select-standard-switch-modal"
265
- view-name="select-standard-switch"
266
- width="576px"
267
- height="468px"
268
- :title="localization.common.selectSwitch"
269
- :standard-switches-initial="props.standardSwitchesInitial"
270
- :show="isShowStandardSwitchModal"
271
- @select-standard-switch="onSelectStandardSwitch"
272
- @hide="onHideStandardSwitchModal"
273
- />
274
- <common-wizards-network-add-modals-select-switch
275
- modal-name="select-switch-modal"
276
- view-name="select-switch"
277
- width="576px"
278
- height="468px"
279
- :title="localization.common.selectSwitch"
280
- :data="props.standardSwitchesInitial"
281
- :show="isShowSwitchModal"
282
- @select-switch="onSelectSwitch"
283
- @hide="onHideSwitchModal"
284
- />
285
- <common-wizards-network-add-modals-select-network
286
- modal-name="select-network-modal"
287
- view-name="select-network"
288
- width="576px"
289
- height="468px"
290
- :title="localization.common.selectNetwork"
291
- :data="[]"
292
- :show="isShowNetworkModal"
293
- @select-network="onSelectNetwork"
294
- @hide="onHideNetworkModal"
295
- />
296
- </teleport>
297
- </template>
298
-
299
- <script setup lang="ts">
300
- import type {
301
- UI_I_ArbitraryObject,
302
- UI_I_Localization,
303
- } from '~/lib/models/interfaces'
304
- import type {
305
- UI_I_TargetDevice,
306
- UI_I_Switch,
307
- } from '~/components/common/wizards/network/add/lib/models/interfaces'
308
- import type { UI_I_ErrorFields } from '~/components/atoms/wizard/lib/models/interfaces'
309
- import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
310
- import { validateMtuTargetDeviceLocal } from '~/components/common/wizards/network/add/validations/validations'
311
-
312
- const props = withDefaults(
313
- defineProps<{
314
- targetDevice: UI_I_TargetDevice
315
- connectionType: string
316
- standardSwitchesInitial: UI_I_Switch[]
317
- alertMessages: string[]
318
- messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
319
- wizard: Wizard
320
- selectedStandardSwitchId?: string
321
- selectedSwitchId?: string
322
- }>(),
323
- {
324
- selectedStandardSwitchId: '',
325
- selectedSwitchId: '',
326
- }
327
- )
328
-
329
- const localization = computed<UI_I_Localization>(() => useLocal())
330
-
331
- const emits = defineEmits<{
332
- (event: 'change-target-device', targetDevice: UI_I_TargetDevice): void
333
- (event: 'hide-alert', stepId: 1): void
334
- }>()
335
-
336
- const isConnectionTypeFirstTwo = computed<boolean>(() =>
337
- ['0', '1'].includes(props.connectionType)
338
- )
339
-
340
- const fields = ref<UI_I_TargetDevice>(useDeepCopy(props.targetDevice))
341
-
342
- let prevMtu = fields.value.mtu
343
-
344
- watch(
345
- fields,
346
- (newFields: UI_I_TargetDevice) => {
347
- newFields.mtu !== prevMtu &&
348
- validateMtuTargetDeviceLocal(localization.value, newFields, props.wizard)
349
-
350
- prevMtu = newFields.mtu
351
-
352
- emits('change-target-device', newFields)
353
- },
354
- { deep: true }
355
- )
356
-
357
- // The switches selection modal hide and show functionality
358
- const isShowStandardSwitchModal = ref<boolean>(false)
359
- const onHideStandardSwitchModal = (): void => {
360
- isShowStandardSwitchModal.value = false
361
- }
362
- const isShowSwitchModal = ref<boolean>(false)
363
- const onHideSwitchModal = (): void => {
364
- isShowSwitchModal.value = false
365
- }
366
- const isShowNetworkModal = ref<boolean>(false)
367
- const onHideNetworkModal = (): void => {
368
- isShowNetworkModal.value = false
369
- }
370
-
371
- const onShowModal = (value: string): void => {
372
- switch (value) {
373
- case 'select-standard-switch':
374
- isShowStandardSwitchModal.value = true
375
- break
376
- case 'select-switch':
377
- isShowSwitchModal.value = true
378
- break
379
- case 'select-network':
380
- isShowNetworkModal.value = true
381
- break
382
- }
383
- }
384
-
385
- // Switches selection functionality
386
- const onSelectSwitch = (selectedSwitchId: string): void => {
387
- fields.value.switch = selectedSwitchId
388
- }
389
- const onSelectStandardSwitch = (selectedStandardSwitchId: string): void => {
390
- fields.value.standardSwitch = selectedStandardSwitchId
391
- }
392
- const onSelectNetwork = (_selectedNetworkId: string): void => {
393
- fields.value.network = ''
394
- }
395
-
396
- onMounted(() => {
397
- !fields.value.standardSwitch &&
398
- (fields.value.standardSwitch = props.selectedStandardSwitchId)
399
-
400
- !fields.value.switch && (fields.value.switch = props.selectedSwitchId)
401
- })
402
-
403
- const onHideAlert = (): void => {
404
- emits('hide-alert', 1)
405
- }
406
- </script>
407
-
408
- <style scoped lang="scss">
409
- .wizard-content-container {
410
- display: flex;
411
- flex-direction: column;
412
- align-items: stretch;
413
- flex: 1 1 100%;
414
- box-sizing: border-box;
415
- padding: 16px 15px 10px 10px;
416
- overflow-y: auto;
417
- color: #333;
418
- order: 2;
419
- width: 100%;
420
-
421
- .wizard-content {
422
- height: auto;
423
- width: inherit;
424
- margin: 0;
425
-
426
- fieldset {
427
- display: flex;
428
- flex-flow: column;
429
- padding-left: 23px;
430
-
431
- .fieldset-block {
432
- padding-left: 0;
433
- margin-right: 5px;
434
- }
435
-
436
- input[type='text'] {
437
- width: 390px;
438
-
439
- &:disabled {
440
- opacity: 0.5;
441
- cursor: not-allowed;
442
- }
443
- }
444
-
445
- button {
446
- text-transform: uppercase;
447
- }
448
- }
449
-
450
- .radio {
451
- min-height: 20px;
452
- margin: 10px 0;
453
-
454
- label {
455
- font-weight: 700;
456
- margin: 6px 12px 6px 0;
457
- }
458
- }
459
- }
460
- }
461
-
462
- :deep(.select-table-modal) {
463
- .table-top-margin-container {
464
- margin-top: 10px;
465
- }
466
- }
467
- </style>
1
+ <template>
2
+ <div class="wizard-content-container add-networking-step">
3
+ <div class="wizard-content">
4
+ <atoms-alert
5
+ v-if="props.alertMessages.length"
6
+ :items="props.alertMessages"
7
+ status="alert-danger"
8
+ test-id="add-networking-selected-target-device"
9
+ @remove="onHideAlert"
10
+ />
11
+ <form>
12
+ <div v-show="props.connectionType === '0'">
13
+ <div class="radio">
14
+ <input
15
+ id="existing-network"
16
+ v-model="fields.selected"
17
+ data-id="existing-network-radio"
18
+ type="radio"
19
+ value="0"
20
+ name="target-device"
21
+ />
22
+ <label for="existing-network">
23
+ {{ localization.common.selectExistingNetwork }}
24
+ </label>
25
+ </div>
26
+ <fieldset
27
+ :class="{
28
+ disabled: fields.selected !== '0',
29
+ }"
30
+ >
31
+ <div>
32
+ <atoms-tooltip-error
33
+ :has-error="
34
+ fields.selected === '0' &&
35
+ !!props.messagesFields.network.field
36
+ "
37
+ >
38
+ <template #elem>
39
+ <fieldset class="fieldset-block">
40
+ <div>
41
+ <input
42
+ v-model="fields.network"
43
+ :class="[
44
+ 'tooltip-field show-arrow',
45
+ {
46
+ 'danger-not-valid':
47
+ fields.selected === '0' &&
48
+ props.messagesFields.network.field,
49
+ },
50
+ ]"
51
+ data-id="network-input"
52
+ type="text"
53
+ disabled
54
+ />
55
+ <button
56
+ type="button"
57
+ class="btn btn-link"
58
+ data-id="show-select-network-modal-button"
59
+ @click="onShowModal('select-network')"
60
+ >
61
+ {{ localization.common.browseDoted }}
62
+ </button>
63
+ </div>
64
+ </fieldset>
65
+ </template>
66
+ <template #content>
67
+ {{ props.messagesFields.network.field }}
68
+ </template>
69
+ </atoms-tooltip-error>
70
+ </div>
71
+ </fieldset>
72
+ </div>
73
+
74
+ <div v-show="isConnectionTypeFirstTwo">
75
+ <div class="radio">
76
+ <input
77
+ id="existing-standard-switch"
78
+ v-model="fields.selected"
79
+ data-id="existing-standard-switch-radio"
80
+ type="radio"
81
+ value="1"
82
+ name="target-device"
83
+ />
84
+
85
+ <!-- :checked="isConnectionTypeFirstTwo"-->
86
+ <label for="existing-standard-switch">
87
+ {{ localization.common.selectExistingStandardSwitch }}
88
+ </label>
89
+ </div>
90
+ <fieldset
91
+ :class="{
92
+ disabled: fields.selected !== '1',
93
+ }"
94
+ >
95
+ <div>
96
+ <atoms-tooltip-error
97
+ :has-error="
98
+ fields.selected === '1' && !!props.messagesFields.switch.field
99
+ "
100
+ >
101
+ <template #elem>
102
+ <fieldset class="fieldset-block">
103
+ <div>
104
+ <input
105
+ v-model="fields.standardSwitch"
106
+ :class="[
107
+ 'tooltip-field show-arrow',
108
+ {
109
+ 'danger-not-valid':
110
+ fields.selected === '1' &&
111
+ props.messagesFields.switch.field,
112
+ },
113
+ ]"
114
+ data-id="standard-switch-input"
115
+ type="text"
116
+ disabled
117
+ />
118
+ <button
119
+ type="button"
120
+ class="btn btn-link"
121
+ data-id="show-select-standard-switch-button"
122
+ @click="onShowModal('select-standard-switch')"
123
+ >
124
+ {{ localization.common.browseDoted }}
125
+ </button>
126
+ </div>
127
+ </fieldset>
128
+ </template>
129
+ <template #content>
130
+ {{ props.messagesFields.switch.field }}
131
+ </template>
132
+ </atoms-tooltip-error>
133
+ </div>
134
+ </fieldset>
135
+ </div>
136
+
137
+ <div v-show="props.connectionType === '2'">
138
+ <div class="radio">
139
+ <input
140
+ id="existing-switch"
141
+ v-model="fields.selected"
142
+ data-id="existing-switch-radio"
143
+ type="radio"
144
+ value="2"
145
+ name="target-device"
146
+ />
147
+ <!-- :checked="props.connectionType === '2'"-->
148
+ <label for="existing-switch">
149
+ {{ localization.common.selectExistingSwitch }}
150
+ </label>
151
+ </div>
152
+ <fieldset
153
+ :class="{
154
+ disabled: fields.selected !== '2',
155
+ }"
156
+ >
157
+ <div>
158
+ <atoms-tooltip-error
159
+ :has-error="
160
+ fields.selected === '2' &&
161
+ !!props.messagesFields.switch2.field
162
+ "
163
+ >
164
+ <template #elem>
165
+ <fieldset class="fieldset-block">
166
+ <div>
167
+ <input
168
+ v-model="fields.switch"
169
+ :class="[
170
+ 'tooltip-field show-arrow',
171
+ {
172
+ 'danger-not-valid':
173
+ fields.selected === '2' &&
174
+ props.messagesFields.switch2.field,
175
+ },
176
+ ]"
177
+ data-id="switch-input"
178
+ type="text"
179
+ disabled
180
+ />
181
+ <button
182
+ type="button"
183
+ data-id="show-select-switch-modal-button"
184
+ class="btn btn-link"
185
+ @click="onShowModal('select-switch')"
186
+ >
187
+ {{ localization.common.browseDoted }}
188
+ </button>
189
+ </div>
190
+ </fieldset>
191
+ </template>
192
+ <template #content>
193
+ {{ props.messagesFields.switch2.field }}
194
+ </template>
195
+ </atoms-tooltip-error>
196
+ </div>
197
+ </fieldset>
198
+ </div>
199
+
200
+ <div v-permission="'Networks.CreateSwitch'">
201
+ <div class="radio">
202
+ <input
203
+ id="standard-switch"
204
+ v-model="fields.selected"
205
+ data-id="standard-switch-radio"
206
+ type="radio"
207
+ value="3"
208
+ name="target-device"
209
+ />
210
+
211
+ <label for="standard-switch">
212
+ {{ localization.common.newStandardSwitch }}
213
+ </label>
214
+ </div>
215
+ <fieldset
216
+ :class="{
217
+ disabled: fields.selected !== '3',
218
+ }"
219
+ >
220
+ <div class="horizontal-flex-container">
221
+ <label class="property-label-group">
222
+ {{ localization.common.mtuBytes }}
223
+ </label>
224
+ <div class="margin-left-property-value-group">
225
+ <div class="property-value-group tooltip-field-container">
226
+ <fieldset>
227
+ <atoms-tooltip-error
228
+ :has-error="
229
+ !!props.messagesFields['new_switch.mtu'].field
230
+ "
231
+ >
232
+ <template #elem>
233
+ <input
234
+ id="mtu"
235
+ v-model="fields.mtu"
236
+ :class="[
237
+ 'tooltip-field show-arrow',
238
+ {
239
+ 'danger-not-valid':
240
+ props.messagesFields['new_switch.mtu'].field,
241
+ },
242
+ ]"
243
+ data-id="mtu-input"
244
+ type="number"
245
+ name="mtu"
246
+ @click.stop
247
+ />
248
+ </template>
249
+ <template #content>
250
+ {{ props.messagesFields['new_switch.mtu'].field }}
251
+ </template>
252
+ </atoms-tooltip-error>
253
+ </fieldset>
254
+ </div>
255
+ </div>
256
+ </div>
257
+ </fieldset>
258
+ </div>
259
+ </form>
260
+ </div>
261
+ </div>
262
+ <teleport to="body">
263
+ <common-wizards-network-add-modals-select-standard-switch
264
+ modal-name="select-standard-switch-modal"
265
+ view-name="select-standard-switch"
266
+ width="576px"
267
+ height="468px"
268
+ :title="localization.common.selectSwitch"
269
+ :standard-switches-initial="props.standardSwitchesInitial"
270
+ :show="isShowStandardSwitchModal"
271
+ @select-standard-switch="onSelectStandardSwitch"
272
+ @hide="onHideStandardSwitchModal"
273
+ />
274
+ <common-wizards-network-add-modals-select-switch
275
+ modal-name="select-switch-modal"
276
+ view-name="select-switch"
277
+ width="576px"
278
+ height="468px"
279
+ :title="localization.common.selectSwitch"
280
+ :data="props.standardSwitchesInitial"
281
+ :show="isShowSwitchModal"
282
+ @select-switch="onSelectSwitch"
283
+ @hide="onHideSwitchModal"
284
+ />
285
+ <common-wizards-network-add-modals-select-network
286
+ modal-name="select-network-modal"
287
+ view-name="select-network"
288
+ width="576px"
289
+ height="468px"
290
+ :title="localization.common.selectNetwork"
291
+ :data="[]"
292
+ :show="isShowNetworkModal"
293
+ @select-network="onSelectNetwork"
294
+ @hide="onHideNetworkModal"
295
+ />
296
+ </teleport>
297
+ </template>
298
+
299
+ <script setup lang="ts">
300
+ import type {
301
+ UI_I_ArbitraryObject,
302
+ UI_I_Localization,
303
+ } from '~/lib/models/interfaces'
304
+ import type {
305
+ UI_I_TargetDevice,
306
+ UI_I_Switch,
307
+ } from '~/components/common/wizards/network/add/lib/models/interfaces'
308
+ import type { UI_I_ErrorFields } from '~/components/atoms/wizard/lib/models/interfaces'
309
+ import type Wizard from '~/components/atoms/wizard/lib/utils/utils'
310
+ import { validateMtuTargetDeviceLocal } from '~/components/common/wizards/network/add/validations/validations'
311
+
312
+ const props = withDefaults(
313
+ defineProps<{
314
+ targetDevice: UI_I_TargetDevice
315
+ connectionType: string
316
+ standardSwitchesInitial: UI_I_Switch[]
317
+ alertMessages: string[]
318
+ messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
319
+ wizard: Wizard
320
+ selectedStandardSwitchId?: string
321
+ selectedSwitchId?: string
322
+ }>(),
323
+ {
324
+ selectedStandardSwitchId: '',
325
+ selectedSwitchId: '',
326
+ }
327
+ )
328
+
329
+ const localization = computed<UI_I_Localization>(() => useLocal())
330
+
331
+ const emits = defineEmits<{
332
+ (event: 'change-target-device', targetDevice: UI_I_TargetDevice): void
333
+ (event: 'hide-alert', stepId: 1): void
334
+ }>()
335
+
336
+ const isConnectionTypeFirstTwo = computed<boolean>(() =>
337
+ ['0', '1'].includes(props.connectionType)
338
+ )
339
+
340
+ const fields = ref<UI_I_TargetDevice>(useDeepCopy(props.targetDevice))
341
+
342
+ let prevMtu = fields.value.mtu
343
+
344
+ watch(
345
+ fields,
346
+ (newFields: UI_I_TargetDevice) => {
347
+ newFields.mtu !== prevMtu &&
348
+ validateMtuTargetDeviceLocal(localization.value, newFields, props.wizard)
349
+
350
+ prevMtu = newFields.mtu
351
+
352
+ emits('change-target-device', newFields)
353
+ },
354
+ { deep: true }
355
+ )
356
+
357
+ // The switches selection modal hide and show functionality
358
+ const isShowStandardSwitchModal = ref<boolean>(false)
359
+ const onHideStandardSwitchModal = (): void => {
360
+ isShowStandardSwitchModal.value = false
361
+ }
362
+ const isShowSwitchModal = ref<boolean>(false)
363
+ const onHideSwitchModal = (): void => {
364
+ isShowSwitchModal.value = false
365
+ }
366
+ const isShowNetworkModal = ref<boolean>(false)
367
+ const onHideNetworkModal = (): void => {
368
+ isShowNetworkModal.value = false
369
+ }
370
+
371
+ const onShowModal = (value: string): void => {
372
+ switch (value) {
373
+ case 'select-standard-switch':
374
+ isShowStandardSwitchModal.value = true
375
+ break
376
+ case 'select-switch':
377
+ isShowSwitchModal.value = true
378
+ break
379
+ case 'select-network':
380
+ isShowNetworkModal.value = true
381
+ break
382
+ }
383
+ }
384
+
385
+ // Switches selection functionality
386
+ const onSelectSwitch = (selectedSwitchId: string): void => {
387
+ fields.value.switch = selectedSwitchId
388
+ }
389
+ const onSelectStandardSwitch = (selectedStandardSwitchId: string): void => {
390
+ fields.value.standardSwitch = selectedStandardSwitchId
391
+ }
392
+ const onSelectNetwork = (_selectedNetworkId: string): void => {
393
+ fields.value.network = ''
394
+ }
395
+
396
+ onMounted(() => {
397
+ !fields.value.standardSwitch &&
398
+ (fields.value.standardSwitch = props.selectedStandardSwitchId)
399
+
400
+ !fields.value.switch && (fields.value.switch = props.selectedSwitchId)
401
+ })
402
+
403
+ const onHideAlert = (): void => {
404
+ emits('hide-alert', 1)
405
+ }
406
+ </script>
407
+
408
+ <style scoped lang="scss">
409
+ .wizard-content-container {
410
+ display: flex;
411
+ flex-direction: column;
412
+ align-items: stretch;
413
+ flex: 1 1 100%;
414
+ box-sizing: border-box;
415
+ padding: 16px 15px 10px 10px;
416
+ overflow-y: auto;
417
+ color: #333;
418
+ order: 2;
419
+ width: 100%;
420
+
421
+ .wizard-content {
422
+ height: auto;
423
+ width: inherit;
424
+ margin: 0;
425
+
426
+ fieldset {
427
+ display: flex;
428
+ flex-flow: column;
429
+ padding-left: 23px;
430
+
431
+ .fieldset-block {
432
+ padding-left: 0;
433
+ margin-right: 5px;
434
+ }
435
+
436
+ input[type='text'] {
437
+ width: 390px;
438
+
439
+ &:disabled {
440
+ opacity: 0.5;
441
+ cursor: not-allowed;
442
+ }
443
+ }
444
+
445
+ button {
446
+ text-transform: uppercase;
447
+ }
448
+ }
449
+
450
+ .radio {
451
+ min-height: 20px;
452
+ margin: 10px 0;
453
+
454
+ label {
455
+ font-weight: 700;
456
+ margin: 6px 12px 6px 0;
457
+ }
458
+ }
459
+ }
460
+ }
461
+
462
+ :deep(.select-table-modal) {
463
+ .table-top-margin-container {
464
+ margin-top: 10px;
465
+ }
466
+ }
467
+ </style>