bfg-common 1.5.689 → 1.5.690

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 (126) 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/localization/local_be.json +4 -0
  7. package/assets/localization/local_en.json +4 -0
  8. package/assets/localization/local_hy.json +4 -0
  9. package/assets/localization/local_kk.json +4 -0
  10. package/assets/localization/local_ru.json +4 -0
  11. package/assets/localization/local_zh.json +4 -0
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/switch/Switch.vue +103 -103
  16. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  17. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  18. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  19. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  20. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  23. package/components/common/diagramMain/port/Port.vue +580 -580
  24. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  25. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  26. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  27. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  28. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +13 -0
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +8 -15
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageNew.vue → New.vue} +1 -2
  32. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageOld.vue → Old.vue} +0 -2
  33. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +8 -7
  34. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleNew.vue → New.vue} +3 -3
  35. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleOld.vue → Old.vue} +2 -2
  36. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +7 -8
  37. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryNew.vue → New.vue} +3 -2
  38. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryOld.vue → Old.vue} +2 -2
  39. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  40. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +277 -12
  41. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +184 -216
  42. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +90 -31
  43. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatNew.vue → New.vue} +3 -3
  44. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatOld.vue → Old.vue} +2 -2
  45. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +8 -8
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewNew.vue → New.vue} +12 -3
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewOld.vue → Old.vue} +2 -2
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +8 -7
  49. package/components/common/pages/backups/DetailView.vue +52 -52
  50. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  51. package/components/common/pages/backups/modals/Modals.vue +243 -243
  52. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  53. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  54. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  55. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  56. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  57. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  58. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  59. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  60. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  61. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  62. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  63. package/components/common/qr/Qr.vue +69 -57
  64. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  65. package/components/common/select/radio/RadioGroup.vue +137 -137
  66. package/components/common/spiceConsole/Drawer.vue +420 -420
  67. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  68. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  69. package/components/common/tools/Actions.vue +207 -207
  70. package/components/common/treeView/TreeView.vue +52 -52
  71. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  72. package/components/common/vm/actions/clone/new/New.vue +438 -438
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +706 -706
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +253 -253
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  79. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  80. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  81. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  82. package/components/common/vm/actions/common/select/options/Old.vue +109 -109
  83. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  84. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  85. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  86. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  87. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  88. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  89. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  90. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  91. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  92. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  93. package/components/common/wizards/common/steps/name/New.vue +221 -221
  94. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  95. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  96. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  97. package/components/common/wizards/datastore/add/Add.vue +228 -228
  98. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  99. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +232 -232
  100. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +231 -231
  101. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -43
  102. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +101 -101
  103. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +101 -101
  104. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  105. package/composables/useAppVersion.ts +21 -21
  106. package/composables/useEnvLanguage.ts +22 -22
  107. package/composables/useLocal.ts +6 -6
  108. package/composables/useLocalCommon.ts +39 -39
  109. package/package.json +2 -2
  110. package/plugins/console.ts +21 -21
  111. package/plugins/mouse.ts +21 -21
  112. package/plugins/panelStates.ts +70 -70
  113. package/plugins/text.ts +59 -59
  114. package/public/spice-console/application/clientgui.js +854 -854
  115. package/public/spice-console/application/packetfactory.js +211 -211
  116. package/public/spice-console/application/virtualmouse.js +147 -147
  117. package/public/spice-console/lib/images/bitmap.js +203 -203
  118. package/public/spice-console/network/spicechannel.js +440 -440
  119. package/public/spice-console/process/cursorprocess.js +128 -128
  120. package/public/spice-console/process/inputprocess.js +227 -227
  121. package/public/spice-console/process/mainprocess.js +212 -212
  122. package/public/spice-console/run.js +210 -210
  123. package/store/main/mutations.ts +7 -7
  124. package/store/main/state.ts +7 -7
  125. package/store/tasks/mappers/recentTasks.ts +123 -123
  126. package/store/tasks/mutations.ts +82 -82
@@ -1,231 +1,231 @@
1
- <template>
2
- <div class="device-selection-step">
3
- <atoms-alert
4
- v-show="props.alertMessages?.length"
5
- :test-id="errorAlertDataId"
6
- :items="props.alertMessages"
7
- status="alert-danger"
8
- class="device-selection-step__alert-error"
9
- @remove="onHideAlert"
10
- />
11
-
12
- <div class="clr-form-control clr-row">
13
- <label for="" class="clr-control-label clr-col-md-2">
14
- {{ localization.common.name }}
15
- </label>
16
-
17
- <div :class="['clr-control-container', nameErrorText && 'clr-error']">
18
- <div class="flex-align-center">
19
- <input
20
- id="device-selection-input"
21
- v-model="formModelLocal.name"
22
- data-id="device-selection-input"
23
- type="text"
24
- class="clr-input"
25
- @blur="initValidation(true)"
26
- @input="initValidation(false)"
27
- />
28
- <atoms-the-icon class="error-icon" name="info-circle" />
29
- </div>
30
-
31
- <div class="clr-subtext" data-id="storm-datastore-name-field-require">
32
- {{ nameErrorText }}
33
- </div>
34
- </div>
35
- </div>
36
-
37
- <atoms-alert
38
- v-if="isShowInfoAlert && !props.hostId"
39
- :items="[localization.common.nameAndDeviceSelectionAlertInfo]"
40
- test-id="device-selection-information-alert"
41
- class="device-selection-step__alert-info"
42
- status="alert-info mb-1"
43
- @remove="isShowInfoAlert = false"
44
- />
45
-
46
- <div
47
- v-if="props.isShowSelectHost"
48
- class="clr-form-control clr-row mb-1 mt-0"
49
- >
50
- <label class="clr-control-label clr-col-12 clr-col-md-2">
51
- {{ localization.common.selectHost }}
52
- </label>
53
-
54
- <div>
55
- <div class="clr-select-wrapper">
56
- <select
57
- id="device-host-select"
58
- v-model="formModelLocal.hosts"
59
- data-id="device-host-select"
60
- class="dropdown-toggle"
61
- @change="emits('select-host')"
62
- >
63
- <option :value="[]" disabled>
64
- {{ localization.common.selectHost }}
65
- </option>
66
- <option
67
- v-for="(item, index) in hostOptions"
68
- :key="index"
69
- :value="[item.value]"
70
- :disabled="item.disabled"
71
- >
72
- {{ item.text }}
73
- </option>
74
- </select>
75
- </div>
76
- <div class="clr-subtext">
77
- {{ localization.common.selectHostToViewAccessible }}
78
- </div>
79
- </div>
80
- </div>
81
-
82
- <div class="device-selection-step__disk-list">
83
- <common-wizards-datastore-add-steps-name-and-device-table
84
- v-model="formModelLocal.dev_names"
85
- :lun-disks-data="props.lunDisksData"
86
- :pagination="props.pagination"
87
- :loading="props.loading"
88
- :is-main-filter="props.isMainFilter"
89
- @sort="emits('sort', $event)"
90
- @main-filter="emits('main-filter', $event)"
91
- />
92
- </div>
93
-
94
- <common-wizards-datastore-add-steps-name-and-device-advanced-options
95
- v-model="formModelLocal.level"
96
- :dev-names-count="formModelLocal.dev_names.length"
97
- />
98
- </div>
99
- </template>
100
-
101
- <script lang="ts" setup>
102
- import type { UI_I_ErrorFields } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
103
- import type {
104
- UI_I_Localization,
105
- UI_I_ArbitraryObject,
106
- } from '~/lib/models/interfaces'
107
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
108
- import type { UI_I_SelectHostOptions } from '~/components/common/wizards/datastore/add/steps/nameAndDevice/lib/models/interfaces'
109
- import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
110
- import type { UI_I_CreateStorageLunDisks } from '~/components/common/wizards/datastore/add/steps/nameAndDevice/table/lib/models/interfaces'
111
- import { validateNameAndGenerateDataId } from '~/components/common/wizards/datastore/add/lib/utils'
112
- import { dynamicSteps } from '~/components/common/wizards/datastore/add/lib/config/steps'
113
-
114
- const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
115
- const isShowInfoAlert = defineModel<boolean>('isShowInfoAlert', {
116
- required: true,
117
- })
118
- const props = withDefaults(
119
- defineProps<{
120
- lunDisksData: UI_I_CreateStorageLunDisks | null
121
- hostOptions: UI_I_SelectHostOptions[]
122
- alertMessages: string[]
123
- messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
124
- pagination: UI_I_Pagination
125
- loading: boolean
126
- isShowSelectHost: boolean
127
- hostId?: string
128
- isMainFilter?: boolean
129
- }>(),
130
- {
131
- hostId: undefined,
132
- isMainFilter: undefined,
133
- }
134
- )
135
- const emits = defineEmits<{
136
- (event: 'select-host'): void
137
- (event: 'hide-alert', value: number): void
138
- (event: 'main-filter', value: string): void
139
- (event: 'sort', value: string): void
140
- }>()
141
-
142
- const localization = computed<UI_I_Localization>(() => useLocal())
143
-
144
- const isInitDatastoreNameValidation = ref<boolean>(false)
145
- const initValidation = (onlyBlur: boolean): void => {
146
- onlyBlur && (isInitDatastoreNameValidation.value = true)
147
- }
148
-
149
- const nameErrorText = computed<string>(() => {
150
- if (
151
- props.messagesFields?.datastoreName?.field &&
152
- !formModelLocal.value.name
153
- ) {
154
- return props.messagesFields.datastoreName.field
155
- }
156
-
157
- if (!isInitDatastoreNameValidation.value) return ''
158
- return !formModelLocal.value.name
159
- ? localization.value.common.specifyDatastoreName
160
- : ''
161
- })
162
-
163
- const defaultDataId = ref<string>('device-selection-alert-error')
164
- const errorAlertDataId = computed<string>(() => {
165
- if (!props.alertMessages?.length) return
166
-
167
- return !formModelLocal.value.dev_names.length
168
- ? `${defaultDataId.value}-not-selected-lundisk`
169
- : validateNameAndGenerateDataId(
170
- formModelLocal.value.name,
171
- props.alertMessages[0],
172
- defaultDataId.value
173
- )
174
- })
175
-
176
- const onHideAlert = (): void => {
177
- emits('hide-alert', dynamicSteps.nameAndDevice)
178
- }
179
- </script>
180
-
181
- <style lang="scss" scoped>
182
- .device-selection-step {
183
- display: flex;
184
- flex-direction: column;
185
- height: inherit;
186
- overflow-y: auto;
187
- overflow-x: hidden;
188
- &__alert-info {
189
- :deep(.alert-text) {
190
- font-size: 11px;
191
- letter-spacing: normal;
192
- }
193
- }
194
- &__alert-error {
195
- :deep(.alert-text) {
196
- word-break: break-word;
197
- }
198
- }
199
- .dropdown-toggle {
200
- min-width: 160px;
201
- }
202
- .clr-form-control {
203
- display: flex;
204
- flex-direction: row;
205
-
206
- .clr-control-container {
207
- min-height: 48px;
208
- &.clr-error {
209
- .clr-subtext,
210
- .error-icon {
211
- display: block;
212
- }
213
- }
214
- .clr-subtext,
215
- .error-icon {
216
- display: none;
217
- }
218
- .error-icon {
219
- fill: #db2100;
220
- width: 24px;
221
- height: 24px;
222
- }
223
- }
224
- }
225
- &__disk-list {
226
- display: flex;
227
- flex-direction: column;
228
- height: 100%;
229
- }
230
- }
231
- </style>
1
+ <template>
2
+ <div class="device-selection-step">
3
+ <atoms-alert
4
+ v-show="props.alertMessages?.length"
5
+ :test-id="errorAlertDataId"
6
+ :items="props.alertMessages"
7
+ status="alert-danger"
8
+ class="device-selection-step__alert-error"
9
+ @remove="onHideAlert"
10
+ />
11
+
12
+ <div class="clr-form-control clr-row">
13
+ <label for="" class="clr-control-label clr-col-md-2">
14
+ {{ localization.common.name }}
15
+ </label>
16
+
17
+ <div :class="['clr-control-container', nameErrorText && 'clr-error']">
18
+ <div class="flex-align-center">
19
+ <input
20
+ id="device-selection-input"
21
+ v-model="formModelLocal.name"
22
+ data-id="device-selection-input"
23
+ type="text"
24
+ class="clr-input"
25
+ @blur="initValidation(true)"
26
+ @input="initValidation(false)"
27
+ />
28
+ <atoms-the-icon class="error-icon" name="info-circle" />
29
+ </div>
30
+
31
+ <div class="clr-subtext" data-id="storm-datastore-name-field-require">
32
+ {{ nameErrorText }}
33
+ </div>
34
+ </div>
35
+ </div>
36
+
37
+ <atoms-alert
38
+ v-if="isShowInfoAlert && !props.hostId"
39
+ :items="[localization.common.nameAndDeviceSelectionAlertInfo]"
40
+ test-id="device-selection-information-alert"
41
+ class="device-selection-step__alert-info"
42
+ status="alert-info mb-1"
43
+ @remove="isShowInfoAlert = false"
44
+ />
45
+
46
+ <div
47
+ v-if="props.isShowSelectHost"
48
+ class="clr-form-control clr-row mb-1 mt-0"
49
+ >
50
+ <label class="clr-control-label clr-col-12 clr-col-md-2">
51
+ {{ localization.common.selectHost }}
52
+ </label>
53
+
54
+ <div>
55
+ <div class="clr-select-wrapper">
56
+ <select
57
+ id="device-host-select"
58
+ v-model="formModelLocal.hosts"
59
+ data-id="device-host-select"
60
+ class="dropdown-toggle"
61
+ @change="emits('select-host')"
62
+ >
63
+ <option :value="[]" disabled>
64
+ {{ localization.common.selectHost }}
65
+ </option>
66
+ <option
67
+ v-for="(item, index) in hostOptions"
68
+ :key="index"
69
+ :value="[item.value]"
70
+ :disabled="item.disabled"
71
+ >
72
+ {{ item.text }}
73
+ </option>
74
+ </select>
75
+ </div>
76
+ <div class="clr-subtext">
77
+ {{ localization.common.selectHostToViewAccessible }}
78
+ </div>
79
+ </div>
80
+ </div>
81
+
82
+ <div class="device-selection-step__disk-list">
83
+ <common-wizards-datastore-add-steps-name-and-device-table
84
+ v-model="formModelLocal.dev_names"
85
+ :lun-disks-data="props.lunDisksData"
86
+ :pagination="props.pagination"
87
+ :loading="props.loading"
88
+ :is-main-filter="props.isMainFilter"
89
+ @sort="emits('sort', $event)"
90
+ @main-filter="emits('main-filter', $event)"
91
+ />
92
+ </div>
93
+
94
+ <common-wizards-datastore-add-steps-name-and-device-advanced-options
95
+ v-model="formModelLocal.level"
96
+ :dev-names-count="formModelLocal.dev_names.length"
97
+ />
98
+ </div>
99
+ </template>
100
+
101
+ <script lang="ts" setup>
102
+ import type { UI_I_ErrorFields } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
103
+ import type {
104
+ UI_I_Localization,
105
+ UI_I_ArbitraryObject,
106
+ } from '~/lib/models/interfaces'
107
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
108
+ import type { UI_I_SelectHostOptions } from '~/components/common/wizards/datastore/add/steps/nameAndDevice/lib/models/interfaces'
109
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
110
+ import type { UI_I_CreateStorageLunDisks } from '~/components/common/wizards/datastore/add/steps/nameAndDevice/table/lib/models/interfaces'
111
+ import { validateNameAndGenerateDataId } from '~/components/common/wizards/datastore/add/lib/utils'
112
+ import { dynamicSteps } from '~/components/common/wizards/datastore/add/lib/config/steps'
113
+
114
+ const formModelLocal = defineModel<UI_I_CreateDatastoreForm>({ required: true })
115
+ const isShowInfoAlert = defineModel<boolean>('isShowInfoAlert', {
116
+ required: true,
117
+ })
118
+ const props = withDefaults(
119
+ defineProps<{
120
+ lunDisksData: UI_I_CreateStorageLunDisks | null
121
+ hostOptions: UI_I_SelectHostOptions[]
122
+ alertMessages: string[]
123
+ messagesFields: UI_I_ArbitraryObject<UI_I_ErrorFields>
124
+ pagination: UI_I_Pagination
125
+ loading: boolean
126
+ isShowSelectHost: boolean
127
+ hostId?: string
128
+ isMainFilter?: boolean
129
+ }>(),
130
+ {
131
+ hostId: undefined,
132
+ isMainFilter: undefined,
133
+ }
134
+ )
135
+ const emits = defineEmits<{
136
+ (event: 'select-host'): void
137
+ (event: 'hide-alert', value: number): void
138
+ (event: 'main-filter', value: string): void
139
+ (event: 'sort', value: string): void
140
+ }>()
141
+
142
+ const localization = computed<UI_I_Localization>(() => useLocal())
143
+
144
+ const isInitDatastoreNameValidation = ref<boolean>(false)
145
+ const initValidation = (onlyBlur: boolean): void => {
146
+ onlyBlur && (isInitDatastoreNameValidation.value = true)
147
+ }
148
+
149
+ const nameErrorText = computed<string>(() => {
150
+ if (
151
+ props.messagesFields?.datastoreName?.field &&
152
+ !formModelLocal.value.name
153
+ ) {
154
+ return props.messagesFields.datastoreName.field
155
+ }
156
+
157
+ if (!isInitDatastoreNameValidation.value) return ''
158
+ return !formModelLocal.value.name
159
+ ? localization.value.common.specifyDatastoreName
160
+ : ''
161
+ })
162
+
163
+ const defaultDataId = ref<string>('device-selection-alert-error')
164
+ const errorAlertDataId = computed<string>(() => {
165
+ if (!props.alertMessages?.length) return
166
+
167
+ return !formModelLocal.value.dev_names.length
168
+ ? `${defaultDataId.value}-not-selected-lundisk`
169
+ : validateNameAndGenerateDataId(
170
+ formModelLocal.value.name,
171
+ props.alertMessages[0],
172
+ defaultDataId.value
173
+ )
174
+ })
175
+
176
+ const onHideAlert = (): void => {
177
+ emits('hide-alert', dynamicSteps.nameAndDevice)
178
+ }
179
+ </script>
180
+
181
+ <style lang="scss" scoped>
182
+ .device-selection-step {
183
+ display: flex;
184
+ flex-direction: column;
185
+ height: inherit;
186
+ overflow-y: auto;
187
+ overflow-x: hidden;
188
+ &__alert-info {
189
+ :deep(.alert-text) {
190
+ font-size: 11px;
191
+ letter-spacing: normal;
192
+ }
193
+ }
194
+ &__alert-error {
195
+ :deep(.alert-text) {
196
+ word-break: break-word;
197
+ }
198
+ }
199
+ .dropdown-toggle {
200
+ min-width: 160px;
201
+ }
202
+ .clr-form-control {
203
+ display: flex;
204
+ flex-direction: row;
205
+
206
+ .clr-control-container {
207
+ min-height: 48px;
208
+ &.clr-error {
209
+ .clr-subtext,
210
+ .error-icon {
211
+ display: block;
212
+ }
213
+ }
214
+ .clr-subtext,
215
+ .error-icon {
216
+ display: none;
217
+ }
218
+ .error-icon {
219
+ fill: #db2100;
220
+ width: 24px;
221
+ height: 24px;
222
+ }
223
+ }
224
+ }
225
+ &__disk-list {
226
+ display: flex;
227
+ flex-direction: column;
228
+ height: 100%;
229
+ }
230
+ }
231
+ </style>
@@ -1,43 +1,43 @@
1
- <template>
2
- <component
3
- :is="currentComponent"
4
- v-model="model"
5
- :dev-names-count="props.devNamesCount"
6
- />
7
- </template>
8
-
9
- <script setup lang="ts">
10
- import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
11
-
12
- const { $store }: any = useNuxtApp()
13
-
14
- const model = defineModel<UI_I_CreateDatastoreForm['level']>({ required: true })
15
-
16
- const props = defineProps<{
17
- devNamesCount: number
18
- }>()
19
-
20
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
21
- const currentComponent = computed(() =>
22
- isNewView.value
23
- ? defineAsyncComponent(() => import('./New.vue'))
24
- : defineAsyncComponent(() => import('./Old.vue'))
25
- )
26
-
27
- watch(
28
- () => props.devNamesCount,
29
- (newValue) => {
30
- if (newValue < 2) {
31
- if (model.value !== 'linear') model.value = 'linear'
32
- } else if (newValue < 3) {
33
- if (!['linear', 'raid0', 'raid1'].includes(model.value))
34
- model.value = 'linear'
35
- } else if (newValue < 4) {
36
- if (!['linear', 'raid0', 'raid1', 'raid5'].includes(model.value))
37
- model.value = 'linear'
38
- }
39
- }
40
- )
41
- </script>
42
-
43
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ v-model="model"
5
+ :dev-names-count="props.devNamesCount"
6
+ />
7
+ </template>
8
+
9
+ <script setup lang="ts">
10
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
11
+
12
+ const { $store }: any = useNuxtApp()
13
+
14
+ const model = defineModel<UI_I_CreateDatastoreForm['level']>({ required: true })
15
+
16
+ const props = defineProps<{
17
+ devNamesCount: number
18
+ }>()
19
+
20
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
21
+ const currentComponent = computed(() =>
22
+ isNewView.value
23
+ ? defineAsyncComponent(() => import('./New.vue'))
24
+ : defineAsyncComponent(() => import('./Old.vue'))
25
+ )
26
+
27
+ watch(
28
+ () => props.devNamesCount,
29
+ (newValue) => {
30
+ if (newValue < 2) {
31
+ if (model.value !== 'linear') model.value = 'linear'
32
+ } else if (newValue < 3) {
33
+ if (!['linear', 'raid0', 'raid1'].includes(model.value))
34
+ model.value = 'linear'
35
+ } else if (newValue < 4) {
36
+ if (!['linear', 'raid0', 'raid1', 'raid5'].includes(model.value))
37
+ model.value = 'linear'
38
+ }
39
+ }
40
+ )
41
+ </script>
42
+
43
+ <style scoped lang="scss"></style>