bfg-common 1.5.237 → 1.5.238

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 (146) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/components/atoms/TheIcon3.vue +50 -50
  3. package/components/atoms/perPage/PerPage.vue +58 -58
  4. package/components/atoms/stack/StackBlock.vue +185 -185
  5. package/components/atoms/table/dataGrid/DataGrid.vue +1717 -1717
  6. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  7. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  8. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  9. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  10. package/components/common/backup/storage/actions/add/Add.vue +247 -247
  11. package/components/common/backup/storage/actions/add/New.vue +281 -281
  12. package/components/common/backup/storage/actions/add/Old.vue +114 -114
  13. package/components/common/backup/storage/actions/add/lib/config/steps.ts +168 -168
  14. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +41 -41
  15. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +294 -294
  16. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +242 -242
  18. package/components/common/backup/storage/actions/delete/Delete.vue +65 -65
  19. package/components/common/browse/BrowseNew.vue +1 -7
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/context/lib/models/interfaces.ts +31 -31
  22. package/components/common/diagramMain/DiagramMain.vue +897 -897
  23. package/components/common/diagramMain/Header.vue +214 -214
  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 +86 -86
  32. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  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/ReadyToComplete.vue +17 -17
  41. package/components/common/recursionTree/RecursionTree.vue +223 -223
  42. package/components/common/select/button/ButtonDropdown.vue +108 -108
  43. package/components/common/spiceConsole/Drawer.vue +377 -377
  44. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  45. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  46. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  47. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  48. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  49. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  50. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +1 -1
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +7 -7
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +0 -1
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -194
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -242
  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/SharesNew.vue +1 -6
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  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/memory/MemoryNew.vue +154 -158
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugNew.vue +2 -8
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -382
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +0 -1
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/FileNew.vue +3 -8
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSizeNew.vue +4 -8
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/ProvisioningNew.vue +1 -6
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +1 -6
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +1 -1
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +0 -1
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -36
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +2 -5
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -85
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -71
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -150
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -146
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +1 -5
  115. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  116. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  117. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  118. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  119. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  120. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  121. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  122. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  123. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  124. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  125. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  126. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  127. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  128. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  129. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  130. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  131. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  132. package/composables/productNameLocal.ts +30 -30
  133. package/composables/useAppVersion.ts +21 -21
  134. package/package.json +2 -2
  135. package/plugins/date.ts +233 -233
  136. package/plugins/helpers.ts +18 -0
  137. package/plugins/number.ts +18 -0
  138. package/plugins/panelStates.ts +70 -0
  139. package/plugins/text.ts +59 -48
  140. package/plugins/time.ts +17 -0
  141. package/public/spice-console/lib/images/bitmap.js +203 -203
  142. package/public/spice-console/network/spicechannel.js +387 -387
  143. package/store/main/mutations.ts +7 -7
  144. package/store/main/state.ts +7 -7
  145. package/store/tasks/mappers/recentTasks.ts +64 -64
  146. /package/{components/common/split/horizontal/lib/models → lib/models/plugins/panelStates}/interfaces.ts +0 -0
@@ -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>