bfg-common 1.5.241 → 1.5.243

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