bfg-common 1.5.227 → 1.5.229

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 (159) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/perPage/PerPage.vue +58 -58
  8. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  9. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  10. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  11. package/components/common/backup/storage/actions/add/Add.vue +247 -247
  12. package/components/common/backup/storage/actions/add/New.vue +281 -281
  13. package/components/common/backup/storage/actions/add/Old.vue +114 -114
  14. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  15. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  16. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +294 -294
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  18. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  19. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  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 +31 -31
  24. package/components/common/diagramMain/DiagramMain.vue +897 -897
  25. package/components/common/diagramMain/Header.vue +214 -214
  26. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  27. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  28. package/components/common/diagramMain/lib/models/types.ts +21 -21
  29. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  30. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  31. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  32. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  33. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  34. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  35. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  36. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  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/port/Ports.vue +47 -47
  48. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  50. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  51. package/components/common/pages/home/headline/Headline.vue +45 -45
  52. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  53. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  54. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  55. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  56. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  57. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  58. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  59. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  60. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  61. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  62. package/components/common/pages/packages/Packages.vue +208 -208
  63. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  64. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  65. package/components/common/recursionTree/RecursionTree.vue +223 -223
  66. package/components/common/select/button/ButtonDropdown.vue +108 -108
  67. package/components/common/spiceConsole/Drawer.vue +377 -377
  68. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  69. package/components/common/split/horizontal/HorizontalNew.vue +9 -1
  70. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  71. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  72. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  73. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  74. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  75. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  76. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +337 -337
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  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/limit/Limit.vue +220 -220
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +307 -307
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  128. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  129. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  130. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  131. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  132. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  133. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  134. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  135. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  136. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  137. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  138. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  139. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  140. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  141. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  142. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  143. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  144. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  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/computeResource/tableView/TableView.vue +137 -137
  149. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  150. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  151. package/composables/productNameLocal.ts +30 -30
  152. package/composables/useAppVersion.ts +21 -21
  153. package/package.json +2 -2
  154. package/plugins/date.ts +233 -233
  155. package/public/spice-console/lib/images/bitmap.js +203 -203
  156. package/public/spice-console/network/spicechannel.js +387 -387
  157. package/store/main/mutations.ts +7 -7
  158. package/store/main/state.ts +7 -7
  159. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,294 +1,294 @@
1
- <template>
2
- <div class="basics-step">
3
- <ui-alert
4
- v-show="isShowAlertInfo"
5
- test-id="configure-information-alert"
6
- :messages="[localization.common.nameAndConfigurationAlertInfo]"
7
- type="info"
8
- class="mb-4"
9
- @remove="isShowAlertInfo = false"
10
- />
11
-
12
- <div class="basics-step-row">
13
- <div class="basics-step-row-title">
14
- <span class="basics-step-row-title-text">
15
- {{ localization.common.name }}
16
- </span>
17
- </div>
18
- <div class="basics-step-row-content">
19
- <ui-input
20
- id="configuration-name-input"
21
- v-model="formModelLocal.name"
22
- test-id="configuration-name-input"
23
- is-focused
24
- :placeholder="localization.common.name"
25
- :error="nameErrorText"
26
- @blur="initValidation(true, ['name'])"
27
- @input="initValidation(false, ['name'])"
28
- />
29
- </div>
30
- </div>
31
-
32
- <div class="basics-step-line"></div>
33
-
34
- <div class="basics-step-row">
35
- <div class="basics-step-row-title">
36
- <span class="basics-step-row-title-text">
37
- {{ localization.common.folder }}
38
- </span>
39
- <common-backup-storage-actions-add-steps-common-tooltip-info
40
- :id="'option.testId'"
41
- :description="'Specify the folder path - for example, /vols/vol0/datastore-001'"
42
- />
43
- </div>
44
- <div class="basics-step-row-content">
45
- <ui-input
46
- id="configuration-folder-input"
47
- v-model="formModelLocal.folder"
48
- test-id="configuration-folder-input"
49
- placeholder="E.g: /vols/vol0/datastore-001"
50
- :error="folderErrorText"
51
- @blur="initValidation(true, ['folder'])"
52
- @input="initValidation(false, ['folder'])"
53
- />
54
- </div>
55
- </div>
56
-
57
- <div class="basics-step-line"></div>
58
-
59
- <div class="basics-step-row">
60
- <div class="basics-step-row-title">
61
- <span class="basics-step-row-title-text">
62
- {{ localization.common.server }}
63
- </span>
64
- <common-backup-storage-actions-add-steps-common-tooltip-info
65
- :id="'option.testIdserver'"
66
- :description="'Specify the server address - for example, nas, nas.it.com or 192.168.0.1.'"
67
- />
68
- </div>
69
- <div class="basics-step-row-content">
70
- <ui-input
71
- id="configuration-server-input"
72
- v-model="formModelLocal.server"
73
- test-id="configuration-server-input"
74
- placeholder="E.g: nas, nas.it.com or 192.168.0.1"
75
- :error="serverErrorText"
76
- @blur="initValidation(true, ['server'])"
77
- @input="initValidation(false, ['server'])"
78
- />
79
- </div>
80
- </div>
81
-
82
- <div class="basics-step-line"></div>
83
-
84
- <div class="basics-step-row">
85
- <div class="basics-step-row-title">
86
- <span class="basics-step-row-title-text">
87
- {{ localization.auth.username }}
88
- </span>
89
- </div>
90
- <div class="basics-step-row-content">
91
- <ui-input
92
- id="configuration-username-input"
93
- v-model="formModelLocal.user"
94
- test-id="configuration-username-input"
95
- :placeholder="localization.auth.username"
96
- :error="usernameErrorText"
97
- @blur="initValidation(true, ['user'])"
98
- @input="initValidation(false, ['user'])"
99
- />
100
- </div>
101
- </div>
102
-
103
- <div class="basics-step-line"></div>
104
-
105
- <div class="basics-step-row">
106
- <div class="basics-step-row-title">
107
- <span class="basics-step-row-title-text">
108
- {{ localization.auth.password }}
109
- </span>
110
- </div>
111
- <div class="basics-step-row-content">
112
- <ui-input
113
- id="configuration-password-input"
114
- v-model="formModelLocal.password"
115
- type="password"
116
- test-id="configuration-password-input"
117
- :placeholder="localization.auth.password"
118
- :error="passwordErrorText"
119
- @blur="initValidation(true, ['password'])"
120
- @input="initValidation(false, ['password'])"
121
- />
122
- </div>
123
- </div>
124
- </div>
125
- </template>
126
-
127
- <script setup lang="ts">
128
- import type { UI_I_Localization } from '~/lib/models/interfaces'
129
- import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
130
- import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
131
- import type { UI_I_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/interfaces'
132
- import type { UI_T_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/types'
133
-
134
- const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
135
- const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
136
-
137
- const props = defineProps<{
138
- messagesFields: UI_I_WizardStep['fields']
139
- }>()
140
- const emits = defineEmits<{
141
- (event: 'remove-errors'): void
142
- }>()
143
-
144
- const localization = computed<UI_I_Localization>(() => useLocal())
145
-
146
- const initValidationFields = ref<UI_I_InitialValidationFields>({
147
- name: false,
148
- folder: false,
149
- server: false,
150
- user: false,
151
- password: false,
152
- })
153
- const initValidation = (
154
- onlyBlur = false,
155
- types: UI_T_InitialValidationFields[]
156
- ): void => {
157
- onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
158
- }
159
-
160
- /* Validation error text for Name input field */
161
- const nameErrorText = computed<string>(() => {
162
- if (props.messagesFields?.name?.field && !formModelLocal.value.name) {
163
- return props.messagesFields.name.field
164
- }
165
-
166
- if (!initValidationFields.value.name) return ''
167
- return !formModelLocal.value.name
168
- ? localization.value.common.fieldRequired
169
- : ''
170
- })
171
-
172
- /* Validation error text for Folder input field */
173
- const folderErrorText = computed<string>(() => {
174
- if (props.messagesFields.folder?.field && !formModelLocal.value.folder) {
175
- return props.messagesFields.folder.field
176
- }
177
-
178
- if (!initValidationFields.value.folder) return ''
179
- return !formModelLocal.value.folder
180
- ? localization.value.common.fieldRequired
181
- : ''
182
- })
183
-
184
- /* Validation error text for Server input field */
185
- const serverErrorText = computed<string>(() => {
186
- if (props.messagesFields.server?.field && !formModelLocal.value.server) {
187
- return props.messagesFields.server.field
188
- }
189
-
190
- if (!initValidationFields.value.server) return ''
191
- return !formModelLocal.value.server
192
- ? localization.value.common.fieldRequired
193
- : ''
194
- })
195
-
196
- /* Validation error text for Username input field */
197
- const usernameErrorText = computed<string>(() => {
198
- if (props.messagesFields.user?.field && !formModelLocal.value.user) {
199
- return props.messagesFields.user.field
200
- }
201
-
202
- if (!initValidationFields.value.user) return ''
203
- return !formModelLocal.value.user
204
- ? localization.value.common.fieldRequired
205
- : ''
206
- })
207
-
208
- /* Validation error text for Password input field */
209
- const passwordErrorText = computed<string>(() => {
210
- if (props.messagesFields.password?.field && !formModelLocal.value.password) {
211
- return props.messagesFields.password.field
212
- }
213
-
214
- if (!initValidationFields.value.password) return ''
215
- return !formModelLocal.value.password
216
- ? localization.value.common.fieldRequired
217
- : ''
218
- })
219
- </script>
220
-
221
- <style scoped lang="scss">
222
- .basics-step {
223
- padding: 16px 0 16px;
224
-
225
- &-row {
226
- min-height: 36px;
227
- width: 100%;
228
- display: flex;
229
- column-gap: 16px;
230
- align-items: center;
231
-
232
- &-title {
233
- padding-top: 8px;
234
- max-width: 240px;
235
- width: 100%;
236
- display: flex;
237
- align-items: center;
238
- column-gap: 8px;
239
- font-weight: 400;
240
- font-size: 13px;
241
- line-height: 20px;
242
- letter-spacing: 0;
243
- vertical-align: middle;
244
- align-self: flex-start;
245
- color: var(--wizard-content-title);
246
- white-space: nowrap;
247
- text-overflow: ellipsis;
248
- overflow: hidden;
249
-
250
- &-text {
251
- display: block;
252
- white-space: nowrap;
253
- text-overflow: ellipsis;
254
- overflow: hidden;
255
- }
256
- }
257
-
258
- &-content {
259
- max-width: 480px;
260
- width: 100%;
261
- font-weight: 400;
262
- font-size: 13px;
263
- line-height: 20px;
264
- letter-spacing: 0;
265
- vertical-align: middle;
266
- color: var(--wizard-content-value);
267
-
268
- &-text {
269
- display: flex;
270
- column-gap: 8px;
271
- align-items: center;
272
-
273
- &-icon {
274
- width: 20px;
275
- min-width: 20px;
276
- height: 20px;
277
- min-height: 20px;
278
- }
279
- }
280
-
281
- &-switch-container {
282
- width: fit-content;
283
- }
284
- }
285
- }
286
-
287
- &-line {
288
- height: 0;
289
- width: 100%;
290
- border-bottom: 1px solid var(--wizard-content-line);
291
- margin: 16px 0;
292
- }
293
- }
294
- </style>
1
+ <template>
2
+ <div class="basics-step">
3
+ <ui-alert
4
+ v-show="isShowAlertInfo"
5
+ test-id="configure-information-alert"
6
+ :messages="[localization.common.nameAndConfigurationAlertInfo]"
7
+ type="info"
8
+ class="mb-4"
9
+ @remove="isShowAlertInfo = false"
10
+ />
11
+
12
+ <div class="basics-step-row">
13
+ <div class="basics-step-row-title">
14
+ <span class="basics-step-row-title-text">
15
+ {{ localization.common.name }}
16
+ </span>
17
+ </div>
18
+ <div class="basics-step-row-content">
19
+ <ui-input
20
+ id="configuration-name-input"
21
+ v-model="formModelLocal.name"
22
+ test-id="configuration-name-input"
23
+ is-focused
24
+ :placeholder="localization.common.name"
25
+ :error="nameErrorText"
26
+ @blur="initValidation(true, ['name'])"
27
+ @input="initValidation(false, ['name'])"
28
+ />
29
+ </div>
30
+ </div>
31
+
32
+ <div class="basics-step-line"></div>
33
+
34
+ <div class="basics-step-row">
35
+ <div class="basics-step-row-title">
36
+ <span class="basics-step-row-title-text">
37
+ {{ localization.common.folder }}
38
+ </span>
39
+ <common-backup-storage-actions-add-steps-common-tooltip-info
40
+ :id="'option.testId'"
41
+ :description="'Specify the folder path - for example, /vols/vol0/datastore-001'"
42
+ />
43
+ </div>
44
+ <div class="basics-step-row-content">
45
+ <ui-input
46
+ id="configuration-folder-input"
47
+ v-model="formModelLocal.folder"
48
+ test-id="configuration-folder-input"
49
+ placeholder="E.g: /vols/vol0/datastore-001"
50
+ :error="folderErrorText"
51
+ @blur="initValidation(true, ['folder'])"
52
+ @input="initValidation(false, ['folder'])"
53
+ />
54
+ </div>
55
+ </div>
56
+
57
+ <div class="basics-step-line"></div>
58
+
59
+ <div class="basics-step-row">
60
+ <div class="basics-step-row-title">
61
+ <span class="basics-step-row-title-text">
62
+ {{ localization.common.server }}
63
+ </span>
64
+ <common-backup-storage-actions-add-steps-common-tooltip-info
65
+ :id="'option.testIdserver'"
66
+ :description="'Specify the server address - for example, nas, nas.it.com or 192.168.0.1.'"
67
+ />
68
+ </div>
69
+ <div class="basics-step-row-content">
70
+ <ui-input
71
+ id="configuration-server-input"
72
+ v-model="formModelLocal.server"
73
+ test-id="configuration-server-input"
74
+ placeholder="E.g: nas, nas.it.com or 192.168.0.1"
75
+ :error="serverErrorText"
76
+ @blur="initValidation(true, ['server'])"
77
+ @input="initValidation(false, ['server'])"
78
+ />
79
+ </div>
80
+ </div>
81
+
82
+ <div class="basics-step-line"></div>
83
+
84
+ <div class="basics-step-row">
85
+ <div class="basics-step-row-title">
86
+ <span class="basics-step-row-title-text">
87
+ {{ localization.auth.username }}
88
+ </span>
89
+ </div>
90
+ <div class="basics-step-row-content">
91
+ <ui-input
92
+ id="configuration-username-input"
93
+ v-model="formModelLocal.user"
94
+ test-id="configuration-username-input"
95
+ :placeholder="localization.auth.username"
96
+ :error="usernameErrorText"
97
+ @blur="initValidation(true, ['user'])"
98
+ @input="initValidation(false, ['user'])"
99
+ />
100
+ </div>
101
+ </div>
102
+
103
+ <div class="basics-step-line"></div>
104
+
105
+ <div class="basics-step-row">
106
+ <div class="basics-step-row-title">
107
+ <span class="basics-step-row-title-text">
108
+ {{ localization.auth.password }}
109
+ </span>
110
+ </div>
111
+ <div class="basics-step-row-content">
112
+ <ui-input
113
+ id="configuration-password-input"
114
+ v-model="formModelLocal.password"
115
+ type="password"
116
+ test-id="configuration-password-input"
117
+ :placeholder="localization.auth.password"
118
+ :error="passwordErrorText"
119
+ @blur="initValidation(true, ['password'])"
120
+ @input="initValidation(false, ['password'])"
121
+ />
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </template>
126
+
127
+ <script setup lang="ts">
128
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
129
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
130
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/backup/storage/actions/add/lib/models/interfaces'
131
+ import type { UI_I_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/interfaces'
132
+ import type { UI_T_InitialValidationFields } from '~/components/common/backup/storage/actions/add/steps/nameAndConfigure/lib/models/types'
133
+
134
+ const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
135
+ const isShowAlertInfo = defineModel<boolean>('alertInfo', { required: true })
136
+
137
+ const props = defineProps<{
138
+ messagesFields: UI_I_WizardStep['fields']
139
+ }>()
140
+ const emits = defineEmits<{
141
+ (event: 'remove-errors'): void
142
+ }>()
143
+
144
+ const localization = computed<UI_I_Localization>(() => useLocal())
145
+
146
+ const initValidationFields = ref<UI_I_InitialValidationFields>({
147
+ name: false,
148
+ folder: false,
149
+ server: false,
150
+ user: false,
151
+ password: false,
152
+ })
153
+ const initValidation = (
154
+ onlyBlur = false,
155
+ types: UI_T_InitialValidationFields[]
156
+ ): void => {
157
+ onlyBlur && types.forEach((type) => (initValidationFields.value[type] = true))
158
+ }
159
+
160
+ /* Validation error text for Name input field */
161
+ const nameErrorText = computed<string>(() => {
162
+ if (props.messagesFields?.name?.field && !formModelLocal.value.name) {
163
+ return props.messagesFields.name.field
164
+ }
165
+
166
+ if (!initValidationFields.value.name) return ''
167
+ return !formModelLocal.value.name
168
+ ? localization.value.common.fieldRequired
169
+ : ''
170
+ })
171
+
172
+ /* Validation error text for Folder input field */
173
+ const folderErrorText = computed<string>(() => {
174
+ if (props.messagesFields.folder?.field && !formModelLocal.value.folder) {
175
+ return props.messagesFields.folder.field
176
+ }
177
+
178
+ if (!initValidationFields.value.folder) return ''
179
+ return !formModelLocal.value.folder
180
+ ? localization.value.common.fieldRequired
181
+ : ''
182
+ })
183
+
184
+ /* Validation error text for Server input field */
185
+ const serverErrorText = computed<string>(() => {
186
+ if (props.messagesFields.server?.field && !formModelLocal.value.server) {
187
+ return props.messagesFields.server.field
188
+ }
189
+
190
+ if (!initValidationFields.value.server) return ''
191
+ return !formModelLocal.value.server
192
+ ? localization.value.common.fieldRequired
193
+ : ''
194
+ })
195
+
196
+ /* Validation error text for Username input field */
197
+ const usernameErrorText = computed<string>(() => {
198
+ if (props.messagesFields.user?.field && !formModelLocal.value.user) {
199
+ return props.messagesFields.user.field
200
+ }
201
+
202
+ if (!initValidationFields.value.user) return ''
203
+ return !formModelLocal.value.user
204
+ ? localization.value.common.fieldRequired
205
+ : ''
206
+ })
207
+
208
+ /* Validation error text for Password input field */
209
+ const passwordErrorText = computed<string>(() => {
210
+ if (props.messagesFields.password?.field && !formModelLocal.value.password) {
211
+ return props.messagesFields.password.field
212
+ }
213
+
214
+ if (!initValidationFields.value.password) return ''
215
+ return !formModelLocal.value.password
216
+ ? localization.value.common.fieldRequired
217
+ : ''
218
+ })
219
+ </script>
220
+
221
+ <style scoped lang="scss">
222
+ .basics-step {
223
+ padding: 16px 0 16px;
224
+
225
+ &-row {
226
+ min-height: 36px;
227
+ width: 100%;
228
+ display: flex;
229
+ column-gap: 16px;
230
+ align-items: center;
231
+
232
+ &-title {
233
+ padding-top: 8px;
234
+ max-width: 240px;
235
+ width: 100%;
236
+ display: flex;
237
+ align-items: center;
238
+ column-gap: 8px;
239
+ font-weight: 400;
240
+ font-size: 13px;
241
+ line-height: 20px;
242
+ letter-spacing: 0;
243
+ vertical-align: middle;
244
+ align-self: flex-start;
245
+ color: var(--wizard-content-title);
246
+ white-space: nowrap;
247
+ text-overflow: ellipsis;
248
+ overflow: hidden;
249
+
250
+ &-text {
251
+ display: block;
252
+ white-space: nowrap;
253
+ text-overflow: ellipsis;
254
+ overflow: hidden;
255
+ }
256
+ }
257
+
258
+ &-content {
259
+ max-width: 480px;
260
+ width: 100%;
261
+ font-weight: 400;
262
+ font-size: 13px;
263
+ line-height: 20px;
264
+ letter-spacing: 0;
265
+ vertical-align: middle;
266
+ color: var(--wizard-content-value);
267
+
268
+ &-text {
269
+ display: flex;
270
+ column-gap: 8px;
271
+ align-items: center;
272
+
273
+ &-icon {
274
+ width: 20px;
275
+ min-width: 20px;
276
+ height: 20px;
277
+ min-height: 20px;
278
+ }
279
+ }
280
+
281
+ &-switch-container {
282
+ width: fit-content;
283
+ }
284
+ }
285
+ }
286
+
287
+ &-line {
288
+ height: 0;
289
+ width: 100%;
290
+ border-bottom: 1px solid var(--wizard-content-line);
291
+ margin: 16px 0;
292
+ }
293
+ }
294
+ </style>