bfg-common 1.5.377 → 1.5.378

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