bfg-common 1.5.380 → 1.5.382

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 (138) 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/collapse/CollapseNavItem.vue +226 -226
  9. package/components/atoms/nav/NavBar.vue +147 -147
  10. package/components/atoms/perPage/PerPage.vue +58 -58
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  12. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  13. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  14. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  15. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  16. package/components/common/backup/storage/actions/add/steps/hostAccessibility/HostAccessibility.vue +52 -52
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  18. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  19. package/components/common/browse/blocks/Container.vue +234 -234
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/context/lib/models/interfaces.ts +33 -33
  22. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  23. package/components/common/diagramMain/network/Network.vue +141 -141
  24. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  25. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  26. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  27. package/components/common/pages/home/headline/Headline.vue +45 -45
  28. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  29. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  30. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  31. package/components/common/pages/home/widgets/WidgetsNew.vue +88 -88
  32. package/components/common/pages/home/widgets/WidgetsOld.vue +36 -36
  33. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  34. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  35. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  36. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  37. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  38. package/components/common/pages/packages/Packages.vue +208 -208
  39. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  40. package/components/common/readyToComplete/New.vue +129 -129
  41. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  42. package/components/common/recursionTree/RecursionTree.vue +223 -223
  43. package/components/common/select/button/ButtonDropdown.vue +112 -112
  44. package/components/common/spiceConsole/Drawer.vue +381 -377
  45. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  46. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  47. package/components/common/tools/Actions.vue +207 -207
  48. package/components/common/vm/actions/add/Old.vue +388 -388
  49. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  50. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  51. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  52. package/components/common/vm/actions/clone/Clone.vue +823 -823
  53. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  54. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +321 -321
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +227 -227
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +155 -155
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +385 -385
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +154 -154
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +155 -155
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +130 -130
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +113 -113
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +95 -95
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +155 -155
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  100. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  101. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  102. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  103. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  104. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  105. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +48 -48
  106. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  107. package/components/common/vm/actions/common/select/name/Name.vue +174 -174
  108. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  109. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  110. package/components/common/vm/actions/common/select/storage/Storage.vue +155 -155
  111. package/components/common/vm/actions/common/select/storage/new/New.vue +300 -300
  112. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  113. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  114. package/components/common/vm/actions/editSettings/EditSettings.vue +242 -242
  115. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  116. package/components/common/vmt/actions/add/lib/models/interfaces.ts +23 -23
  117. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +104 -104
  118. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +467 -467
  119. package/components/common/wizards/vm/migrate/Migrate.vue +349 -349
  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/network/Network.vue +103 -103
  124. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  125. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  126. package/composables/productNameLocal.ts +30 -30
  127. package/composables/useAppVersion.ts +21 -21
  128. package/package.json +1 -1
  129. package/plugins/console.ts +22 -0
  130. package/plugins/date.ts +233 -233
  131. package/plugins/panelStates.ts +70 -70
  132. package/plugins/text.ts +59 -59
  133. package/public/spice-console/lib/images/bitmap.js +203 -203
  134. package/public/spice-console/network/spicechannel.js +390 -387
  135. package/public/spice-console-minify/run.min.js +1 -1
  136. package/store/main/mutations.ts +7 -7
  137. package/store/main/state.ts +7 -7
  138. 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>